From 5f3f3c8b2df41b22270f1b85373ac9c03dae6425 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sat, 4 Jun 2016 02:00:39 +0200 Subject: [PATCH] Fixed storage blocks not being dismantable --- CHANGELOG.md | 2 ++ .../refinedstorage/item/ItemBlockStorage.java | 34 ++++++++++++++++++- .../refinedstorage/proxy/CommonProxy.java | 4 +-- .../tile/grid/WirelessGrid.java | 2 +- 4 files changed, 38 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 828fd1635..a09911417 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,9 @@ - Fixed recipes not supporting ore dictionary - Fixed destructor not being able to destroy some blocks - Fixed not being able to place or destroy sugar cane +- Fixed storage blocks not being dismantable - New items now go to the first available storage that has items in it already +- Tweak some recipes - Performance improvements **Features** diff --git a/src/main/java/refinedstorage/item/ItemBlockStorage.java b/src/main/java/refinedstorage/item/ItemBlockStorage.java index b8c54c428..3e66013ad 100755 --- a/src/main/java/refinedstorage/item/ItemBlockStorage.java +++ b/src/main/java/refinedstorage/item/ItemBlockStorage.java @@ -2,10 +2,15 @@ package refinedstorage.item; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.InventoryHelper; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ActionResult; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumHand; import net.minecraft.world.World; import refinedstorage.RefinedStorageBlocks; +import refinedstorage.RefinedStorageItems; import refinedstorage.block.EnumStorageType; import refinedstorage.storage.NBTStorage; import refinedstorage.tile.TileStorage; @@ -21,7 +26,7 @@ public class ItemBlockStorage extends ItemBlockBase { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean b) { EnumStorageType type = EnumStorageType.getById(stack.getMetadata()); - if (type != null && stack.getTagCompound() != null && stack.getTagCompound().hasKey(TileStorage.NBT_STORAGE)) { + if (type != null && isValid(stack)) { NBTTagCompound tag = stack.getTagCompound().getCompoundTag(TileStorage.NBT_STORAGE); if (type == EnumStorageType.TYPE_CREATIVE) { @@ -32,6 +37,33 @@ public class ItemBlockStorage extends ItemBlockBase { } } + @Override + public ActionResult onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand) { + EnumStorageType type = EnumStorageType.getById(stack.getMetadata()); + + if (type != null && isValid(stack) && NBTStorage.getStoredFromNBT(stack.getTagCompound().getCompoundTag(TileStorage.NBT_STORAGE)) == 0 && stack.getMetadata() != ItemStorageDisk.TYPE_CREATIVE && !world.isRemote && player.isSneaking()) { + ItemStack storagePart = new ItemStack(RefinedStorageItems.STORAGE_PART, 1, stack.getMetadata()); + + if (!player.inventory.addItemStackToInventory(storagePart.copy())) { + InventoryHelper.spawnItemStack(world, player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ(), storagePart); + } + + ItemStack processor = new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_BASIC); + + if (!player.inventory.addItemStackToInventory(processor.copy())) { + InventoryHelper.spawnItemStack(world, player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ(), processor); + } + + return new ActionResult(EnumActionResult.SUCCESS, new ItemStack(RefinedStorageBlocks.MACHINE_CASING)); + } + + return new ActionResult(EnumActionResult.PASS, stack); + } + + private static boolean isValid(ItemStack stack) { + return stack.getTagCompound() != null && stack.getTagCompound().hasKey(TileStorage.NBT_STORAGE); + } + @Override public void onCreated(ItemStack stack, World world, EntityPlayer player) { super.onCreated(stack, world, player); diff --git a/src/main/java/refinedstorage/proxy/CommonProxy.java b/src/main/java/refinedstorage/proxy/CommonProxy.java index 469dd039f..fceac4be2 100755 --- a/src/main/java/refinedstorage/proxy/CommonProxy.java +++ b/src/main/java/refinedstorage/proxy/CommonProxy.java @@ -325,8 +325,8 @@ public class CommonProxy { // Storage Parts GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RefinedStorageItems.STORAGE_PART, 1, ItemStoragePart.TYPE_1K), - "EPE", - "GSG", + "ESE", + "GRG", "EGE", 'R', new ItemStack(Items.REDSTONE), 'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON), diff --git a/src/main/java/refinedstorage/tile/grid/WirelessGrid.java b/src/main/java/refinedstorage/tile/grid/WirelessGrid.java index 49d576ccf..16974cab3 100755 --- a/src/main/java/refinedstorage/tile/grid/WirelessGrid.java +++ b/src/main/java/refinedstorage/tile/grid/WirelessGrid.java @@ -26,7 +26,7 @@ public class WirelessGrid implements IGrid { private int sortingType; private int sortingDirection; private int searchBoxMode; - private static List items = new ArrayList(); + private List items = new ArrayList(); private long lastUpdate; public WirelessGrid(ItemStack stack, EnumHand hand) {