From dcee2c82797ef230ea6e637a5af990d4837bf7c9 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sun, 22 May 2016 14:30:40 +0200 Subject: [PATCH] Initial port to IItemHandler --- .../refinedstorage/RefinedStorageUtils.java | 79 +++++--- .../java/refinedstorage/block/BlockBase.java | 11 +- .../container/ContainerBase.java | 9 + .../container/ContainerConstructor.java | 8 +- .../container/ContainerCrafter.java | 16 +- .../container/ContainerDestructor.java | 6 +- .../container/ContainerDiskDrive.java | 10 +- .../container/ContainerExporter.java | 8 +- .../container/ContainerGrid.java | 19 +- .../container/ContainerImporter.java | 8 +- .../container/ContainerInterface.java | 12 +- .../ContainerProcessingPatternEncoder.java | 12 +- .../container/ContainerSolderer.java | 10 +- .../container/ContainerStorage.java | 10 +- .../ContainerWirelessTransmitter.java | 6 +- .../container/slot/BasicItemValidator.java | 17 -- .../container/slot/IItemValidator.java | 7 - .../container/slot/SlotFiltered.java | 20 -- .../slot/SlotGridCraftingResult.java | 10 +- .../container/slot/SlotOutput.java | 8 +- .../container/slot/SlotSpecimen.java | 10 +- .../container/slot/SlotSpecimenItemBlock.java | 7 +- .../container/slot/SlotSpecimenLegacy.java | 32 ++++ .../container/slot/UpgradeItemValidator.java | 25 --- .../java/refinedstorage/gui/GuiCrafter.java | 4 +- .../java/refinedstorage/gui/GuiHandler.java | 2 +- .../inventory/IItemValidator.java | 7 + .../inventory/SimpleItemHandler.java | 48 +++++ .../inventory/SimpleItemValidator.java | 31 ++++ .../network/MessageGridCraftingClear.java | 10 +- .../network/MessageGridCraftingPush.java | 6 +- .../refinedstorage/storage/DiskStorage.java | 2 +- .../refinedstorage/storage/IStorageGui.java | 4 +- .../storage/StorageBlockStorage.java | 2 +- .../java/refinedstorage/tile/TileBase.java | 4 +- .../refinedstorage/tile/TileConstructor.java | 51 +++--- .../refinedstorage/tile/TileController.java | 4 +- .../refinedstorage/tile/TileDestructor.java | 41 +++-- .../refinedstorage/tile/TileDetector.java | 16 +- .../refinedstorage/tile/TileDiskDrive.java | 136 +++----------- .../refinedstorage/tile/TileExporter.java | 52 +++--- .../tile/TileExternalStorage.java | 17 +- .../refinedstorage/tile/TileImporter.java | 44 ++--- .../refinedstorage/tile/TileInterface.java | 173 ++++-------------- .../java/refinedstorage/tile/TileStorage.java | 14 +- .../tile/TileWirelessTransmitter.java | 22 ++- .../tile/autocrafting/TileCrafter.java | 129 ++++--------- .../TileProcessingPatternEncoder.java | 169 ++++------------- .../tile/config/ModeFilter.java | 8 +- .../refinedstorage/tile/grid/TileGrid.java | 77 ++++---- .../tile/solderer/SoldererRegistry.java | 4 +- .../tile/solderer/TileSolderer.java | 171 +++-------------- 52 files changed, 619 insertions(+), 989 deletions(-) delete mode 100755 src/main/java/refinedstorage/container/slot/BasicItemValidator.java delete mode 100755 src/main/java/refinedstorage/container/slot/IItemValidator.java delete mode 100755 src/main/java/refinedstorage/container/slot/SlotFiltered.java create mode 100755 src/main/java/refinedstorage/container/slot/SlotSpecimenLegacy.java delete mode 100755 src/main/java/refinedstorage/container/slot/UpgradeItemValidator.java create mode 100755 src/main/java/refinedstorage/inventory/IItemValidator.java create mode 100755 src/main/java/refinedstorage/inventory/SimpleItemHandler.java create mode 100755 src/main/java/refinedstorage/inventory/SimpleItemValidator.java diff --git a/src/main/java/refinedstorage/RefinedStorageUtils.java b/src/main/java/refinedstorage/RefinedStorageUtils.java index b87af38a4..7fbdd1673 100755 --- a/src/main/java/refinedstorage/RefinedStorageUtils.java +++ b/src/main/java/refinedstorage/RefinedStorageUtils.java @@ -16,7 +16,6 @@ import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.InvWrapper; import net.minecraftforge.items.wrapper.SidedInvWrapper; -import refinedstorage.inventory.InventorySimple; import refinedstorage.item.ItemUpgrade; public class RefinedStorageUtils { @@ -27,7 +26,41 @@ public class RefinedStorageUtils { public static final int COMPARE_NBT = 2; public static final int COMPARE_QUANTITY = 4; - public static void saveInventory(IInventory inventory, int id, NBTTagCompound nbt) { + public static void saveItems(IItemHandler handler, int id, NBTTagCompound nbt) { + NBTTagList tagList = new NBTTagList(); + + for (int i = 0; i < handler.getSlots(); i++) { + if (handler.getStackInSlot(i) != null) { + NBTTagCompound compoundTag = new NBTTagCompound(); + + compoundTag.setInteger(NBT_SLOT, i); + + handler.getStackInSlot(i).writeToNBT(compoundTag); + + tagList.appendTag(compoundTag); + } + } + + nbt.setTag(String.format(NBT_INVENTORY, id), tagList); + } + + public static void restoreItems(IItemHandler handler, int id, NBTTagCompound nbt) { + String name = String.format(NBT_INVENTORY, id); + + if (nbt.hasKey(name)) { + NBTTagList tagList = nbt.getTagList(name, Constants.NBT.TAG_COMPOUND); + + for (int i = 0; i < tagList.tagCount(); i++) { + int slot = tagList.getCompoundTagAt(i).getInteger(NBT_SLOT); + + ItemStack stack = ItemStack.loadItemStackFromNBT(tagList.getCompoundTagAt(i)); + + handler.insertItem(slot, stack, false); + } + } + } + + public static void saveItemsLegacy(IInventory inventory, int id, NBTTagCompound nbt) { NBTTagList tagList = new NBTTagList(); for (int i = 0; i < inventory.getSizeInventory(); i++) { @@ -45,7 +78,7 @@ public class RefinedStorageUtils { nbt.setTag(String.format(NBT_INVENTORY, id), tagList); } - public static void restoreInventory(IInventory inventory, int id, NBTTagCompound nbt) { + public static void restoreItemsLegacy(IInventory inventory, int id, NBTTagCompound nbt) { String name = String.format(NBT_INVENTORY, id); if (nbt.hasKey(name)) { @@ -99,17 +132,17 @@ public class RefinedStorageUtils { return compareStack(first, second, COMPARE_NBT | COMPARE_DAMAGE); } - public static int getSpeed(InventorySimple inventory) { - return getSpeed(inventory, 9, 2, 0); + public static int getSpeed(IItemHandler handler) { + return getSpeed(handler, 9, 2, 0); } - public static int getSpeed(InventorySimple inventory, int speed, int speedIncrease) { - return getSpeed(inventory, speed, speedIncrease, 0); + public static int getSpeed(IItemHandler handler, int speed, int speedIncrease) { + return getSpeed(handler, speed, speedIncrease, 0); } - public static int getSpeed(InventorySimple inventory, int speed, int speedIncrease, int start) { - for (int i = start; i < inventory.getSizeInventory(); ++i) { - if (inventory.getStackInSlot(i) != null && inventory.getStackInSlot(i).getMetadata() == ItemUpgrade.TYPE_SPEED) { + public static int getSpeed(IItemHandler handler, int speed, int speedIncrease, int start) { + for (int i = start; i < handler.getSlots(); ++i) { + if (handler.getStackInSlot(i) != null && handler.getStackInSlot(i).getMetadata() == ItemUpgrade.TYPE_SPEED) { speed -= speedIncrease; } } @@ -117,19 +150,19 @@ public class RefinedStorageUtils { return speed; } - public static boolean hasUpgrade(InventorySimple inventory, int type) { - return getUpgradeCount(inventory, type) > 0; + public static boolean hasUpgrade(IItemHandler handler, int type) { + return getUpgradeCount(handler, type) > 0; } - public static int getUpgradeCount(InventorySimple inventory, int type) { - return getUpgradeCount(inventory, type, 0); + public static int getUpgradeCount(IItemHandler handler, int type) { + return getUpgradeCount(handler, type, 0); } - public static int getUpgradeCount(InventorySimple inventory, int type, int start) { + public static int getUpgradeCount(IItemHandler handler, int type, int start) { int upgrades = 0; - for (int i = start; i < inventory.getSizeInventory(); ++i) { - if (inventory.getStackInSlot(i) != null && inventory.getStackInSlot(i).getMetadata() == type) { + for (int i = start; i < handler.getSlots(); ++i) { + if (handler.getStackInSlot(i) != null && handler.getStackInSlot(i).getMetadata() == type) { upgrades++; } } @@ -137,16 +170,16 @@ public class RefinedStorageUtils { return upgrades; } - public static int getUpgradeEnergyUsage(InventorySimple inventory) { - return getUpgradeEnergyUsage(inventory, 0); + public static int getUpgradeEnergyUsage(IItemHandler handler) { + return getUpgradeEnergyUsage(handler, 0); } - public static int getUpgradeEnergyUsage(InventorySimple inventory, int start) { + public static int getUpgradeEnergyUsage(IItemHandler handler, int start) { int usage = 0; - for (int i = start; i < inventory.getSizeInventory(); ++i) { - if (inventory.getStackInSlot(i) != null) { - usage += ItemUpgrade.getEnergyUsage(inventory.getStackInSlot(i).getMetadata()); + for (int i = start; i < handler.getSlots(); ++i) { + if (handler.getStackInSlot(i) != null) { + usage += ItemUpgrade.getEnergyUsage(handler.getStackInSlot(i).getMetadata()); } } diff --git a/src/main/java/refinedstorage/block/BlockBase.java b/src/main/java/refinedstorage/block/BlockBase.java index 6711b3eaa..1a6565a3a 100755 --- a/src/main/java/refinedstorage/block/BlockBase.java +++ b/src/main/java/refinedstorage/block/BlockBase.java @@ -17,6 +17,7 @@ import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.items.IItemHandler; import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageBlocks; import refinedstorage.RefinedStorageUtils; @@ -127,8 +128,14 @@ public abstract class BlockBase extends Block { public void breakBlock(World world, BlockPos pos, IBlockState state) { TileEntity tile = world.getTileEntity(pos); - if (tile instanceof TileBase && ((TileBase) tile).getDroppedInventory() != null) { - InventoryHelper.dropInventoryItems(world, pos, ((TileBase) tile).getDroppedInventory()); + if (tile instanceof TileBase && ((TileBase) tile).getDroppedItems() != null) { + IItemHandler handler = ((TileBase) tile).getDroppedItems(); + + for (int i = 0; i < handler.getSlots(); ++i) { + if (handler.getStackInSlot(i) != null) { + InventoryHelper.spawnItemStack(world, pos.getX(), pos.getY(), pos.getZ(), handler.getStackInSlot(i)); + } + } } super.breakBlock(world, pos, state); diff --git a/src/main/java/refinedstorage/container/ContainerBase.java b/src/main/java/refinedstorage/container/ContainerBase.java index 2a876fd14..10b76b5a3 100755 --- a/src/main/java/refinedstorage/container/ContainerBase.java +++ b/src/main/java/refinedstorage/container/ContainerBase.java @@ -8,6 +8,7 @@ import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import refinedstorage.container.slot.SlotDisabled; import refinedstorage.container.slot.SlotSpecimen; +import refinedstorage.container.slot.SlotSpecimenLegacy; import java.util.ArrayList; import java.util.List; @@ -97,6 +98,14 @@ public abstract class ContainerBase extends Container { slot.putStack(player.inventory.getItemStack().copy()); } + return player.inventory.getItemStack(); + } else if (slot instanceof SlotSpecimenLegacy) { + if (player.inventory.getItemStack() == null) { + slot.putStack(null); + } else if (slot.isItemValid(player.inventory.getItemStack())) { + slot.putStack(player.inventory.getItemStack().copy()); + } + return player.inventory.getItemStack(); } else if (slot instanceof SlotDisabled) { return null; diff --git a/src/main/java/refinedstorage/container/ContainerConstructor.java b/src/main/java/refinedstorage/container/ContainerConstructor.java index aabef3ce6..3dcef08c6 100755 --- a/src/main/java/refinedstorage/container/ContainerConstructor.java +++ b/src/main/java/refinedstorage/container/ContainerConstructor.java @@ -1,10 +1,8 @@ package refinedstorage.container; import net.minecraft.entity.player.EntityPlayer; -import refinedstorage.container.slot.SlotFiltered; +import net.minecraftforge.items.SlotItemHandler; import refinedstorage.container.slot.SlotSpecimenItemBlock; -import refinedstorage.container.slot.UpgradeItemValidator; -import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.TileConstructor; public class ContainerConstructor extends ContainerBase { @@ -12,10 +10,10 @@ public class ContainerConstructor extends ContainerBase { public ContainerConstructor(EntityPlayer player, TileConstructor constructor) { super(player); - addSlotToContainer(new SlotSpecimenItemBlock(constructor.getInventory(), 0, 80, 20)); + addSlotToContainer(new SlotSpecimenItemBlock(constructor.getFilter(), 0, 80, 20)); for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotFiltered(constructor.getUpgradesInventory(), i, 187, 6 + (i * 18), new UpgradeItemValidator(ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_CRAFTING))); + addSlotToContainer(new SlotItemHandler(constructor.getUpgrades(), i, 187, 6 + (i * 18))); } addPlayerInventory(8, 55); diff --git a/src/main/java/refinedstorage/container/ContainerCrafter.java b/src/main/java/refinedstorage/container/ContainerCrafter.java index c7d387b3f..f16e30b82 100755 --- a/src/main/java/refinedstorage/container/ContainerCrafter.java +++ b/src/main/java/refinedstorage/container/ContainerCrafter.java @@ -3,12 +3,7 @@ package refinedstorage.container; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import refinedstorage.RefinedStorageItems; -import refinedstorage.container.slot.IItemValidator; -import refinedstorage.container.slot.SlotFiltered; -import refinedstorage.container.slot.UpgradeItemValidator; -import refinedstorage.item.ItemPattern; -import refinedstorage.item.ItemUpgrade; +import net.minecraftforge.items.SlotItemHandler; import refinedstorage.tile.autocrafting.TileCrafter; public class ContainerCrafter extends ContainerStorage { @@ -16,16 +11,11 @@ public class ContainerCrafter extends ContainerStorage { super(player); for (int i = 0; i < 6; ++i) { - addSlotToContainer(new SlotFiltered(crafter, i, 8, 19 + (i * 18), new IItemValidator() { - @Override - public boolean isValid(ItemStack stack) { - return stack.getItem() == RefinedStorageItems.PATTERN && ItemPattern.isValid(stack); - } - })); + addSlotToContainer(new SlotItemHandler(crafter.getPatterns(), i, 8, 19 + (i * 18))); } for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotFiltered(crafter, 6 + i, 187, 6 + (i * 18), new UpgradeItemValidator(ItemUpgrade.TYPE_SPEED))); + addSlotToContainer(new SlotItemHandler(crafter.getUpgrades(), 6 + i, 187, 6 + (i * 18))); } addPlayerInventory(8, 144); diff --git a/src/main/java/refinedstorage/container/ContainerDestructor.java b/src/main/java/refinedstorage/container/ContainerDestructor.java index cd57b7abd..60306a094 100755 --- a/src/main/java/refinedstorage/container/ContainerDestructor.java +++ b/src/main/java/refinedstorage/container/ContainerDestructor.java @@ -1,10 +1,8 @@ package refinedstorage.container; import net.minecraft.entity.player.EntityPlayer; -import refinedstorage.container.slot.SlotFiltered; +import net.minecraftforge.items.SlotItemHandler; import refinedstorage.container.slot.SlotSpecimenItemBlock; -import refinedstorage.container.slot.UpgradeItemValidator; -import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.TileDestructor; public class ContainerDestructor extends ContainerBase { @@ -16,7 +14,7 @@ public class ContainerDestructor extends ContainerBase { } for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotFiltered(destructor.getUpgradesInventory(), i, 187, 6 + (i * 18), new UpgradeItemValidator(ItemUpgrade.TYPE_SPEED))); + addSlotToContainer(new SlotItemHandler(destructor.getUpgrades(), i, 187, 6 + (i * 18))); } addPlayerInventory(8, 55); diff --git a/src/main/java/refinedstorage/container/ContainerDiskDrive.java b/src/main/java/refinedstorage/container/ContainerDiskDrive.java index 0eb2c636f..8aca78410 100755 --- a/src/main/java/refinedstorage/container/ContainerDiskDrive.java +++ b/src/main/java/refinedstorage/container/ContainerDiskDrive.java @@ -3,9 +3,7 @@ package refinedstorage.container; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import refinedstorage.RefinedStorageItems; -import refinedstorage.container.slot.BasicItemValidator; -import refinedstorage.container.slot.SlotFiltered; +import net.minecraftforge.items.SlotItemHandler; import refinedstorage.tile.TileDiskDrive; public class ContainerDiskDrive extends ContainerStorage { @@ -13,14 +11,14 @@ public class ContainerDiskDrive extends ContainerStorage { super(player); for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotFiltered(drive, i, 98 + (i * 18), 78, new BasicItemValidator(RefinedStorageItems.STORAGE_DISK))); + addSlotToContainer(new SlotItemHandler(drive.getDisks(), i, 98 + (i * 18), 78)); } for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotFiltered(drive, 4 + i, 98 + (i * 18), 96, new BasicItemValidator(RefinedStorageItems.STORAGE_DISK))); + addSlotToContainer(new SlotItemHandler(drive.getDisks(), 4 + i, 98 + (i * 18), 96)); } - addSpecimenAndPlayerInventorySlots(drive.getInventory()); + addSpecimenAndPlayerInventorySlots(drive.getFilters()); } @Override diff --git a/src/main/java/refinedstorage/container/ContainerExporter.java b/src/main/java/refinedstorage/container/ContainerExporter.java index b306778d6..d946fe925 100755 --- a/src/main/java/refinedstorage/container/ContainerExporter.java +++ b/src/main/java/refinedstorage/container/ContainerExporter.java @@ -1,10 +1,8 @@ package refinedstorage.container; import net.minecraft.entity.player.EntityPlayer; -import refinedstorage.container.slot.SlotFiltered; +import net.minecraftforge.items.SlotItemHandler; import refinedstorage.container.slot.SlotSpecimen; -import refinedstorage.container.slot.UpgradeItemValidator; -import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.TileExporter; public class ContainerExporter extends ContainerBase { @@ -12,11 +10,11 @@ public class ContainerExporter extends ContainerBase { super(player); for (int i = 0; i < 9; ++i) { - addSlotToContainer(new SlotSpecimen(exporter.getInventory(), i, 8 + (18 * i), 20, false)); + addSlotToContainer(new SlotSpecimen(exporter.getFilters(), i, 8 + (18 * i), 20, false)); } for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotFiltered(exporter.getUpgradesInventory(), i, 187, 6 + (i * 18), new UpgradeItemValidator(ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_CRAFTING))); + addSlotToContainer(new SlotItemHandler(exporter.getUpgrades(), i, 187, 6 + (i * 18))); } addPlayerInventory(8, 55); diff --git a/src/main/java/refinedstorage/container/ContainerGrid.java b/src/main/java/refinedstorage/container/ContainerGrid.java index e04bc11f4..664a1c2a7 100755 --- a/src/main/java/refinedstorage/container/ContainerGrid.java +++ b/src/main/java/refinedstorage/container/ContainerGrid.java @@ -6,10 +6,13 @@ import net.minecraft.inventory.ClickType; import net.minecraft.inventory.ICrafting; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; +import net.minecraftforge.items.SlotItemHandler; import refinedstorage.RefinedStorage; -import refinedstorage.RefinedStorageItems; import refinedstorage.block.EnumGridType; -import refinedstorage.container.slot.*; +import refinedstorage.container.slot.SlotDisabled; +import refinedstorage.container.slot.SlotGridCraftingResult; +import refinedstorage.container.slot.SlotOutput; +import refinedstorage.container.slot.SlotSpecimenLegacy; import refinedstorage.network.MessageGridCraftingShift; import refinedstorage.tile.grid.IGrid; import refinedstorage.tile.grid.TileGrid; @@ -36,7 +39,7 @@ public class ContainerGrid extends ContainerBase { int y = 106; for (int i = 0; i < 9; ++i) { - Slot slot = new Slot(((TileGrid) grid).getCraftingInventory(), i, x, y); + Slot slot = new Slot(((TileGrid) grid).getMatrix(), i, x, y); craftingSlots.add(slot); @@ -50,13 +53,13 @@ public class ContainerGrid extends ContainerBase { } } - addSlotToContainer(craftingResultSlot = new SlotGridCraftingResult(this, player, ((TileGrid) grid).getCraftingInventory(), ((TileGrid) grid).getCraftingResultInventory(), (TileGrid) grid, 0, 133 + 4, 120 + 4)); + addSlotToContainer(craftingResultSlot = new SlotGridCraftingResult(this, player, ((TileGrid) grid).getMatrix(), ((TileGrid) grid).getResult(), (TileGrid) grid, 0, 133 + 4, 120 + 4)); } else if (grid.getType() == EnumGridType.PATTERN) { int x = 8; int y = 106; for (int i = 0; i < 9; ++i) { - addSlotToContainer(new SlotSpecimen(((TileGrid) grid).getCraftingInventory(), i, x, y, false)); + addSlotToContainer(new SlotSpecimenLegacy(((TileGrid) grid).getMatrix(), i, x, y, false)); x += 18; @@ -66,10 +69,10 @@ public class ContainerGrid extends ContainerBase { } } - addSlotToContainer(patternResultSlot = new SlotDisabled(((TileGrid) grid).getCraftingResultInventory(), 0, 116 + 4, 120 + 4)); + addSlotToContainer(patternResultSlot = new SlotDisabled(((TileGrid) grid).getResult(), 0, 116 + 4, 120 + 4)); - addSlotToContainer(new SlotFiltered(((TileGrid) grid).getPatternsInventory(), 0, 152, 104, new BasicItemValidator(RefinedStorageItems.PATTERN))); - addSlotToContainer(new SlotOutput(((TileGrid) grid).getPatternsInventory(), 1, 152, 144)); + addSlotToContainer(new SlotItemHandler(((TileGrid) grid).getPatterns(), 0, 152, 104)); + addSlotToContainer(new SlotOutput(((TileGrid) grid).getPatterns(), 1, 152, 144)); } } diff --git a/src/main/java/refinedstorage/container/ContainerImporter.java b/src/main/java/refinedstorage/container/ContainerImporter.java index eaee8a9c5..d08bbe362 100755 --- a/src/main/java/refinedstorage/container/ContainerImporter.java +++ b/src/main/java/refinedstorage/container/ContainerImporter.java @@ -1,10 +1,8 @@ package refinedstorage.container; import net.minecraft.entity.player.EntityPlayer; -import refinedstorage.container.slot.SlotFiltered; +import net.minecraftforge.items.SlotItemHandler; import refinedstorage.container.slot.SlotSpecimen; -import refinedstorage.container.slot.UpgradeItemValidator; -import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.TileImporter; public class ContainerImporter extends ContainerBase { @@ -12,11 +10,11 @@ public class ContainerImporter extends ContainerBase { super(player); for (int i = 0; i < 9; ++i) { - addSlotToContainer(new SlotSpecimen(importer.getInventory(), i, 8 + (18 * i), 20, false)); + addSlotToContainer(new SlotSpecimen(importer.getFilters(), i, 8 + (18 * i), 20, false)); } for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotFiltered(importer.getUpgradesInventory(), i, 187, 6 + (i * 18), new UpgradeItemValidator(ItemUpgrade.TYPE_SPEED))); + addSlotToContainer(new SlotItemHandler(importer.getUpgrades(), i, 187, 6 + (i * 18))); } addPlayerInventory(8, 55); diff --git a/src/main/java/refinedstorage/container/ContainerInterface.java b/src/main/java/refinedstorage/container/ContainerInterface.java index 7e65420a1..fdfac069f 100755 --- a/src/main/java/refinedstorage/container/ContainerInterface.java +++ b/src/main/java/refinedstorage/container/ContainerInterface.java @@ -3,11 +3,9 @@ package refinedstorage.container; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import refinedstorage.container.slot.SlotFiltered; +import net.minecraftforge.items.SlotItemHandler; import refinedstorage.container.slot.SlotOutput; import refinedstorage.container.slot.SlotSpecimen; -import refinedstorage.container.slot.UpgradeItemValidator; -import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.TileInterface; public class ContainerInterface extends ContainerBase { @@ -15,19 +13,19 @@ public class ContainerInterface extends ContainerBase { super(player); for (int i = 0; i < 9; ++i) { - addSlotToContainer(new Slot(tile, i, 8 + (18 * i), 20)); + addSlotToContainer(new SlotItemHandler(tile.getItems(), i, 8 + (18 * i), 20)); } for (int i = 9; i < 18; ++i) { - addSlotToContainer(new SlotSpecimen(tile, i, 8 + (18 * (i - 9)), 54, true)); + addSlotToContainer(new SlotSpecimen(tile.getItems(), i, 8 + (18 * (i - 9)), 54, true)); } for (int i = 18; i < 27; ++i) { - addSlotToContainer(new SlotOutput(tile, i, 8 + (18 * (i - 18)), 100)); + addSlotToContainer(new SlotOutput(tile.getItems(), i, 8 + (18 * (i - 18)), 100)); } for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotFiltered(tile.getUpgradesInventory(), i, 187, 6 + (i * 18), new UpgradeItemValidator(ItemUpgrade.TYPE_SPEED))); + addSlotToContainer(new SlotItemHandler(tile.getUpgrades(), i, 187, 6 + (i * 18))); } addPlayerInventory(8, 134); diff --git a/src/main/java/refinedstorage/container/ContainerProcessingPatternEncoder.java b/src/main/java/refinedstorage/container/ContainerProcessingPatternEncoder.java index 6b384b7cb..fba34a384 100755 --- a/src/main/java/refinedstorage/container/ContainerProcessingPatternEncoder.java +++ b/src/main/java/refinedstorage/container/ContainerProcessingPatternEncoder.java @@ -1,15 +1,13 @@ package refinedstorage.container; import net.minecraft.entity.player.EntityPlayer; -import refinedstorage.RefinedStorageItems; -import refinedstorage.container.slot.BasicItemValidator; -import refinedstorage.container.slot.SlotFiltered; +import net.minecraftforge.items.SlotItemHandler; import refinedstorage.container.slot.SlotOutput; import refinedstorage.container.slot.SlotSpecimen; import refinedstorage.tile.autocrafting.TileProcessingPatternEncoder; public class ContainerProcessingPatternEncoder extends ContainerBase { - public ContainerProcessingPatternEncoder(EntityPlayer player, TileProcessingPatternEncoder ppEncoder) { + public ContainerProcessingPatternEncoder(EntityPlayer player, TileProcessingPatternEncoder processingPatternEncoder) { super(player); int ox = 8; @@ -17,7 +15,7 @@ public class ContainerProcessingPatternEncoder extends ContainerBase { int y = 20; for (int i = 0; i < 9 * 2; ++i) { - addSlotToContainer(new SlotSpecimen(ppEncoder.getInputsOutputsInventory(), i, x, y, false)); + addSlotToContainer(new SlotSpecimen(processingPatternEncoder.getConfiguration(), i, x, y, false)); x += 18; @@ -33,8 +31,8 @@ public class ContainerProcessingPatternEncoder extends ContainerBase { } } - addSlotToContainer(new SlotFiltered(ppEncoder, 0, 152, 18, new BasicItemValidator(RefinedStorageItems.PATTERN))); - addSlotToContainer(new SlotOutput(ppEncoder, 1, 152, 58)); + addSlotToContainer(new SlotItemHandler(processingPatternEncoder.getPatterns(), 0, 152, 18)); + addSlotToContainer(new SlotOutput(processingPatternEncoder.getPatterns(), 1, 152, 58)); addPlayerInventory(8, 90); } diff --git a/src/main/java/refinedstorage/container/ContainerSolderer.java b/src/main/java/refinedstorage/container/ContainerSolderer.java index 5ca2e212b..2b550fa9a 100755 --- a/src/main/java/refinedstorage/container/ContainerSolderer.java +++ b/src/main/java/refinedstorage/container/ContainerSolderer.java @@ -3,10 +3,8 @@ package refinedstorage.container; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import refinedstorage.container.slot.SlotFiltered; +import net.minecraftforge.items.SlotItemHandler; import refinedstorage.container.slot.SlotOutput; -import refinedstorage.container.slot.UpgradeItemValidator; -import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.solderer.TileSolderer; public class ContainerSolderer extends ContainerBase { @@ -17,15 +15,15 @@ public class ContainerSolderer extends ContainerBase { int y = 20; for (int i = 0; i < 3; ++i) { - addSlotToContainer(new Slot(solderer, i, x, y)); + addSlotToContainer(new SlotItemHandler(solderer.getItems(), i, x, y)); y += 18; } - addSlotToContainer(new SlotOutput(solderer, 3, 134, 38)); + addSlotToContainer(new SlotOutput(solderer.getItems(), 3, 134, 38)); for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotFiltered(solderer, 4 + i, 187, 6 + (i * 18), new UpgradeItemValidator(ItemUpgrade.TYPE_SPEED))); + addSlotToContainer(new SlotItemHandler(solderer.getUpgrades(), 4 + i, 187, 6 + (i * 18))); } addPlayerInventory(8, 95); diff --git a/src/main/java/refinedstorage/container/ContainerStorage.java b/src/main/java/refinedstorage/container/ContainerStorage.java index f8133a7fc..a35527c25 100755 --- a/src/main/java/refinedstorage/container/ContainerStorage.java +++ b/src/main/java/refinedstorage/container/ContainerStorage.java @@ -1,7 +1,7 @@ package refinedstorage.container; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; +import net.minecraftforge.items.IItemHandler; import refinedstorage.container.slot.SlotSpecimen; public class ContainerStorage extends ContainerBase { @@ -9,15 +9,15 @@ public class ContainerStorage extends ContainerBase { super(player); } - public ContainerStorage(EntityPlayer player, IInventory inventory) { + public ContainerStorage(EntityPlayer player, IItemHandler filters) { this(player); - addSpecimenAndPlayerInventorySlots(inventory); + addSpecimenAndPlayerInventorySlots(filters); } - protected void addSpecimenAndPlayerInventorySlots(IInventory inventory) { + protected void addSpecimenAndPlayerInventorySlots(IItemHandler filters) { for (int i = 0; i < 9; ++i) { - addSlotToContainer(new SlotSpecimen(inventory, i, 8 + (18 * i), 20, false)); + addSlotToContainer(new SlotSpecimen(filters, i, 8 + (18 * i), 20, false)); } addPlayerInventory(8, 129); diff --git a/src/main/java/refinedstorage/container/ContainerWirelessTransmitter.java b/src/main/java/refinedstorage/container/ContainerWirelessTransmitter.java index 05fcfeca6..f124d8c32 100755 --- a/src/main/java/refinedstorage/container/ContainerWirelessTransmitter.java +++ b/src/main/java/refinedstorage/container/ContainerWirelessTransmitter.java @@ -3,9 +3,7 @@ package refinedstorage.container; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import refinedstorage.container.slot.SlotFiltered; -import refinedstorage.container.slot.UpgradeItemValidator; -import refinedstorage.item.ItemUpgrade; +import net.minecraftforge.items.SlotItemHandler; import refinedstorage.tile.TileWirelessTransmitter; public class ContainerWirelessTransmitter extends ContainerBase { @@ -13,7 +11,7 @@ public class ContainerWirelessTransmitter extends ContainerBase { super(player); for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotFiltered(wirelessTransmitter.getDroppedInventory(), i, 187, 6 + (i * 18), new UpgradeItemValidator(ItemUpgrade.TYPE_RANGE))); + addSlotToContainer(new SlotItemHandler(wirelessTransmitter.getUpgrades(), i, 187, 6 + (i * 18))); } addPlayerInventory(8, 55); diff --git a/src/main/java/refinedstorage/container/slot/BasicItemValidator.java b/src/main/java/refinedstorage/container/slot/BasicItemValidator.java deleted file mode 100755 index eb6c5702c..000000000 --- a/src/main/java/refinedstorage/container/slot/BasicItemValidator.java +++ /dev/null @@ -1,17 +0,0 @@ -package refinedstorage.container.slot; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -public class BasicItemValidator implements IItemValidator { - private Item item; - - public BasicItemValidator(Item item) { - this.item = item; - } - - @Override - public boolean isValid(ItemStack stack) { - return item == stack.getItem(); - } -} diff --git a/src/main/java/refinedstorage/container/slot/IItemValidator.java b/src/main/java/refinedstorage/container/slot/IItemValidator.java deleted file mode 100755 index 39f368278..000000000 --- a/src/main/java/refinedstorage/container/slot/IItemValidator.java +++ /dev/null @@ -1,7 +0,0 @@ -package refinedstorage.container.slot; - -import net.minecraft.item.ItemStack; - -public interface IItemValidator { - boolean isValid(ItemStack stack); -} diff --git a/src/main/java/refinedstorage/container/slot/SlotFiltered.java b/src/main/java/refinedstorage/container/slot/SlotFiltered.java deleted file mode 100755 index 33ba8e404..000000000 --- a/src/main/java/refinedstorage/container/slot/SlotFiltered.java +++ /dev/null @@ -1,20 +0,0 @@ -package refinedstorage.container.slot; - -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; - -public class SlotFiltered extends Slot { - private IItemValidator validator; - - public SlotFiltered(IInventory inventory, int id, int x, int y, IItemValidator validator) { - super(inventory, id, x, y); - - this.validator = validator; - } - - @Override - public boolean isItemValid(ItemStack item) { - return validator.isValid(item); - } -} diff --git a/src/main/java/refinedstorage/container/slot/SlotGridCraftingResult.java b/src/main/java/refinedstorage/container/slot/SlotGridCraftingResult.java index 264d99e9e..1b4f8e34e 100755 --- a/src/main/java/refinedstorage/container/slot/SlotGridCraftingResult.java +++ b/src/main/java/refinedstorage/container/slot/SlotGridCraftingResult.java @@ -11,20 +11,20 @@ import refinedstorage.tile.grid.TileGrid; public class SlotGridCraftingResult extends SlotCrafting { private ContainerGrid container; - private IInventory craftingMatrix; + private IInventory matrix; private TileGrid grid; - public SlotGridCraftingResult(ContainerGrid container, EntityPlayer player, InventoryCrafting craftingMatrix, IInventory craftingResult, TileGrid grid, int id, int x, int y) { - super(player, craftingMatrix, craftingResult, id, x, y); + public SlotGridCraftingResult(ContainerGrid container, EntityPlayer player, InventoryCrafting matrix, IInventory craftingResult, TileGrid grid, int id, int x, int y) { + super(player, matrix, craftingResult, id, x, y); this.container = container; - this.craftingMatrix = craftingMatrix; + this.matrix = matrix; this.grid = grid; } @Override public void onPickupFromSlot(EntityPlayer player, ItemStack stack) { - FMLCommonHandler.instance().firePlayerCraftingEvent(player, stack, craftingMatrix); + FMLCommonHandler.instance().firePlayerCraftingEvent(player, stack, matrix); onCrafting(stack); diff --git a/src/main/java/refinedstorage/container/slot/SlotOutput.java b/src/main/java/refinedstorage/container/slot/SlotOutput.java index de622aba5..f129a1f46 100755 --- a/src/main/java/refinedstorage/container/slot/SlotOutput.java +++ b/src/main/java/refinedstorage/container/slot/SlotOutput.java @@ -1,11 +1,11 @@ package refinedstorage.container.slot; -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.SlotItemHandler; -public class SlotOutput extends Slot { - public SlotOutput(IInventory inventory, int id, int x, int y) { +public class SlotOutput extends SlotItemHandler { + public SlotOutput(IItemHandler inventory, int id, int x, int y) { super(inventory, id, x, y); } diff --git a/src/main/java/refinedstorage/container/slot/SlotSpecimen.java b/src/main/java/refinedstorage/container/slot/SlotSpecimen.java index e56a98962..a4133fac3 100755 --- a/src/main/java/refinedstorage/container/slot/SlotSpecimen.java +++ b/src/main/java/refinedstorage/container/slot/SlotSpecimen.java @@ -1,15 +1,15 @@ package refinedstorage.container.slot; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.SlotItemHandler; -public class SlotSpecimen extends Slot { +public class SlotSpecimen extends SlotItemHandler { private boolean sizeAllowed; - public SlotSpecimen(IInventory inventory, int id, int x, int y, boolean allowSize) { - super(inventory, id, x, y); + public SlotSpecimen(IItemHandler handler, int id, int x, int y, boolean allowSize) { + super(handler, id, x, y); this.sizeAllowed = allowSize; } diff --git a/src/main/java/refinedstorage/container/slot/SlotSpecimenItemBlock.java b/src/main/java/refinedstorage/container/slot/SlotSpecimenItemBlock.java index 104875755..2efeb6c29 100755 --- a/src/main/java/refinedstorage/container/slot/SlotSpecimenItemBlock.java +++ b/src/main/java/refinedstorage/container/slot/SlotSpecimenItemBlock.java @@ -1,12 +1,13 @@ package refinedstorage.container.slot; -import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraftforge.items.IItemHandler; +// @TODO: This can probably be removed? public class SlotSpecimenItemBlock extends SlotSpecimen { - public SlotSpecimenItemBlock(IInventory inventory, int id, int x, int y) { - super(inventory, id, x, y, false); + public SlotSpecimenItemBlock(IItemHandler handler, int id, int x, int y) { + super(handler, id, x, y, false); } @Override diff --git a/src/main/java/refinedstorage/container/slot/SlotSpecimenLegacy.java b/src/main/java/refinedstorage/container/slot/SlotSpecimenLegacy.java new file mode 100755 index 000000000..5ebace57a --- /dev/null +++ b/src/main/java/refinedstorage/container/slot/SlotSpecimenLegacy.java @@ -0,0 +1,32 @@ +package refinedstorage.container.slot; + + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class SlotSpecimenLegacy extends Slot { + public SlotSpecimenLegacy(IInventory inventory, int id, int x, int y, boolean allowSize) { + super(inventory, id, x, y); + } + + @Override + public boolean canTakeStack(EntityPlayer player) { + return false; + } + + @Override + public boolean isItemValid(ItemStack stack) { + return true; + } + + @Override + public void putStack(ItemStack stack) { + if (stack != null) { + stack.stackSize = 1; + } + + super.putStack(stack); + } +} diff --git a/src/main/java/refinedstorage/container/slot/UpgradeItemValidator.java b/src/main/java/refinedstorage/container/slot/UpgradeItemValidator.java deleted file mode 100755 index 34ab0bfda..000000000 --- a/src/main/java/refinedstorage/container/slot/UpgradeItemValidator.java +++ /dev/null @@ -1,25 +0,0 @@ -package refinedstorage.container.slot; - -import net.minecraft.item.ItemStack; -import refinedstorage.RefinedStorageItems; - -public class UpgradeItemValidator implements IItemValidator { - private int[] allowedUpgrades; - - public UpgradeItemValidator(int... allowedUpgrades) { - this.allowedUpgrades = allowedUpgrades; - } - - @Override - public boolean isValid(ItemStack stack) { - if (stack.getItem() == RefinedStorageItems.UPGRADE) { - for (int upgrade : allowedUpgrades) { - if (upgrade == stack.getMetadata()) { - return true; - } - } - } - - return false; - } -} diff --git a/src/main/java/refinedstorage/gui/GuiCrafter.java b/src/main/java/refinedstorage/gui/GuiCrafter.java index c31c58803..2fe07fdb5 100755 --- a/src/main/java/refinedstorage/gui/GuiCrafter.java +++ b/src/main/java/refinedstorage/gui/GuiCrafter.java @@ -49,9 +49,9 @@ public class GuiCrafter extends GuiBase { int x = 27; int y = 19 + (i * 18); - if (crafter.getStackInSlot(i) != null && ItemPattern.isValid(crafter.getStackInSlot(i))) { - ItemStack pattern = crafter.getStackInSlot(i); + ItemStack pattern = crafter.getPatterns().getStackInSlot(i); + if (pattern != null && ItemPattern.isValid(pattern)) { String text = t("gui.refinedstorage:crafter.processing"); if (!ItemPattern.isProcessing(pattern)) { diff --git a/src/main/java/refinedstorage/gui/GuiHandler.java b/src/main/java/refinedstorage/gui/GuiHandler.java index adfbf43c9..16a136d7b 100755 --- a/src/main/java/refinedstorage/gui/GuiHandler.java +++ b/src/main/java/refinedstorage/gui/GuiHandler.java @@ -40,7 +40,7 @@ public class GuiHandler implements IGuiHandler { case RefinedStorageGui.CONSTRUCTOR: return new ContainerConstructor(player, (TileConstructor) tile); case RefinedStorageGui.STORAGE: - return new ContainerStorage(player, ((IStorageGui) tile).getInventory()); + return new ContainerStorage(player, ((IStorageGui) tile).getFilters()); case RefinedStorageGui.RELAY: return new ContainerRelay(player); case RefinedStorageGui.INTERFACE: diff --git a/src/main/java/refinedstorage/inventory/IItemValidator.java b/src/main/java/refinedstorage/inventory/IItemValidator.java new file mode 100755 index 000000000..a3b2a59cc --- /dev/null +++ b/src/main/java/refinedstorage/inventory/IItemValidator.java @@ -0,0 +1,7 @@ +package refinedstorage.inventory; + +import net.minecraft.item.ItemStack; + +public interface IItemValidator { + boolean valid(ItemStack stack); +} diff --git a/src/main/java/refinedstorage/inventory/SimpleItemHandler.java b/src/main/java/refinedstorage/inventory/SimpleItemHandler.java new file mode 100755 index 000000000..d3ffb5cd0 --- /dev/null +++ b/src/main/java/refinedstorage/inventory/SimpleItemHandler.java @@ -0,0 +1,48 @@ +package refinedstorage.inventory; + +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.items.ItemStackHandler; + +public class SimpleItemHandler extends ItemStackHandler { + private TileEntity tile; + private IItemValidator[] validators; + + public SimpleItemHandler(int size, TileEntity tile, IItemValidator... validators) { + super(size); + + this.tile = tile; + this.validators = validators; + } + + public SimpleItemHandler(int size, IItemValidator... validators) { + this(size, null, validators); + } + + @Override + public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { + boolean mayInsert = validators.length > 0 ? false : true; + + for (IItemValidator validator : validators) { + if (validator.valid(stack)) { + mayInsert = true; + break; + } + } + + if (mayInsert) { + return super.insertItem(slot, stack, simulate); + } else { + return stack; + } + } + + @Override + protected void onContentsChanged(int slot) { + super.onContentsChanged(slot); + + if (tile != null) { + tile.markDirty(); + } + } +} diff --git a/src/main/java/refinedstorage/inventory/SimpleItemValidator.java b/src/main/java/refinedstorage/inventory/SimpleItemValidator.java new file mode 100755 index 000000000..e1ddcdf0d --- /dev/null +++ b/src/main/java/refinedstorage/inventory/SimpleItemValidator.java @@ -0,0 +1,31 @@ +package refinedstorage.inventory; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public class SimpleItemValidator implements IItemValidator { + private Item item; + private int damage = -1; + + public SimpleItemValidator(Item item) { + this.item = item; + } + + public SimpleItemValidator(Item item, int damage) { + this.item = item; + this.damage = damage; + } + + @Override + public boolean valid(ItemStack stack) { + if (stack.getItem() == item) { + if (damage != -1 && stack.getItemDamage() != damage) { + return false; + } + + return true; + } + + return false; + } +} diff --git a/src/main/java/refinedstorage/network/MessageGridCraftingClear.java b/src/main/java/refinedstorage/network/MessageGridCraftingClear.java index 534513c5d..c6d87870d 100755 --- a/src/main/java/refinedstorage/network/MessageGridCraftingClear.java +++ b/src/main/java/refinedstorage/network/MessageGridCraftingClear.java @@ -46,18 +46,18 @@ public class MessageGridCraftingClear extends MessageHandlerPlayerToServer drops = frontBlock.getDrops(worldObj, front, frontBlockState, 0); worldObj.playAuxSFXAtEntity(null, 2001, front, Block.getStateId(frontBlockState)); @@ -101,8 +104,8 @@ public class TileDestructor extends TileMachine implements ICompareConfig, IMode mode = nbt.getInteger(NBT_MODE); } - RefinedStorageUtils.restoreInventory(inventory, 0, nbt); - RefinedStorageUtils.restoreInventory(upgradesInventory, 1, nbt); + RefinedStorageUtils.restoreItems(filters, 0, nbt); + RefinedStorageUtils.restoreItems(upgrades, 1, nbt); } @Override @@ -112,8 +115,8 @@ public class TileDestructor extends TileMachine implements ICompareConfig, IMode nbt.setInteger(NBT_COMPARE, compare); nbt.setInteger(NBT_MODE, mode); - RefinedStorageUtils.saveInventory(inventory, 0, nbt); - RefinedStorageUtils.saveInventory(upgradesInventory, 1, nbt); + RefinedStorageUtils.saveItems(filters, 0, nbt); + RefinedStorageUtils.saveItems(upgrades, 1, nbt); } @Override @@ -136,16 +139,16 @@ public class TileDestructor extends TileMachine implements ICompareConfig, IMode return ContainerDestructor.class; } - public InventorySimple getUpgradesInventory() { - return upgradesInventory; + public IItemHandler getUpgrades() { + return upgrades; + } + + public IItemHandler getInventory() { + return filters; } @Override - public IInventory getDroppedInventory() { - return upgradesInventory; - } - - public IInventory getInventory() { - return inventory; + public IItemHandler getDroppedItems() { + return upgrades; } } diff --git a/src/main/java/refinedstorage/tile/TileDetector.java b/src/main/java/refinedstorage/tile/TileDetector.java index eccd0cd95..4f0f265e4 100755 --- a/src/main/java/refinedstorage/tile/TileDetector.java +++ b/src/main/java/refinedstorage/tile/TileDetector.java @@ -2,14 +2,14 @@ package refinedstorage.tile; import io.netty.buffer.ByteBuf; import net.minecraft.inventory.Container; -import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import net.minecraftforge.items.IItemHandler; import refinedstorage.RefinedStorageBlocks; import refinedstorage.RefinedStorageUtils; import refinedstorage.container.ContainerDetector; -import refinedstorage.inventory.InventorySimple; +import refinedstorage.inventory.SimpleItemHandler; import refinedstorage.storage.ItemGroup; import refinedstorage.tile.config.ICompareConfig; import refinedstorage.tile.config.RedstoneMode; @@ -24,7 +24,7 @@ public class TileDetector extends TileMachine implements ICompareConfig { public static final String NBT_AMOUNT = "Amount"; public static final String NBT_DESC_POWERED = "Powered"; - private InventorySimple inventory = new InventorySimple("detector", 1, this); + private SimpleItemHandler filter = new SimpleItemHandler(1, this); private int compare = 0; private int mode = MODE_EQUAL; @@ -47,7 +47,7 @@ public class TileDetector extends TileMachine implements ICompareConfig { @Override public void updateMachine() { if (ticks % 5 == 0) { - ItemStack slot = inventory.getStackInSlot(0); + ItemStack slot = filter.getStackInSlot(0); boolean wasPowered = powered; @@ -151,7 +151,7 @@ public class TileDetector extends TileMachine implements ICompareConfig { amount = nbt.getInteger(NBT_AMOUNT); } - RefinedStorageUtils.restoreInventory(inventory, 0, nbt); + RefinedStorageUtils.restoreItems(filter, 0, nbt); } @Override @@ -162,7 +162,7 @@ public class TileDetector extends TileMachine implements ICompareConfig { nbt.setInteger(NBT_MODE, mode); nbt.setInteger(NBT_AMOUNT, amount); - RefinedStorageUtils.saveInventory(inventory, 0, nbt); + RefinedStorageUtils.saveItems(filter, 0, nbt); } @Override @@ -202,8 +202,8 @@ public class TileDetector extends TileMachine implements ICompareConfig { return ContainerDetector.class; } - public IInventory getInventory() { - return inventory; + public IItemHandler getInventory() { + return filter; } @Override diff --git a/src/main/java/refinedstorage/tile/TileDiskDrive.java b/src/main/java/refinedstorage/tile/TileDiskDrive.java index 2dd683c15..975031132 100755 --- a/src/main/java/refinedstorage/tile/TileDiskDrive.java +++ b/src/main/java/refinedstorage/tile/TileDiskDrive.java @@ -1,18 +1,17 @@ package refinedstorage.tile; import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; -import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.text.ITextComponent; +import net.minecraftforge.items.IItemHandler; import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageUtils; import refinedstorage.block.EnumStorageType; import refinedstorage.container.ContainerDiskDrive; -import refinedstorage.inventory.InventorySimple; +import refinedstorage.inventory.SimpleItemHandler; +import refinedstorage.inventory.SimpleItemValidator; import refinedstorage.network.MessagePriorityUpdate; import refinedstorage.storage.*; import refinedstorage.tile.config.ICompareConfig; @@ -22,13 +21,13 @@ import refinedstorage.tile.config.ModeConstants; import java.util.List; -public class TileDiskDrive extends TileMachine implements IStorageProvider, IStorageGui, ICompareConfig, IModeConfig, IInventory { +public class TileDiskDrive extends TileMachine implements IStorageProvider, IStorageGui, ICompareConfig, IModeConfig { public static final String NBT_PRIORITY = "Priority"; public static final String NBT_COMPARE = "Compare"; public static final String NBT_MODE = "Mode"; - private InventorySimple inventory = new InventorySimple("disk_drive", 8, this); - private InventorySimple filterInventory = new InventorySimple("filters", 9, this); + private SimpleItemHandler disks = new SimpleItemHandler(8, this, new SimpleItemValidator(RefinedStorageItems.STORAGE_DISK)); + private SimpleItemHandler filters = new SimpleItemHandler(9, this); private NBTStorage storages[] = new NBTStorage[8]; @@ -37,10 +36,10 @@ public class TileDiskDrive extends TileMachine implements IStorageProvider, ISto private int mode = ModeConstants.WHITELIST; public NBTStorage getStorage(int slot) { - if (inventory.getStackInSlot(slot) == null) { + if (disks.getStackInSlot(slot) == null) { storages[slot] = null; } else if (storages[slot] == null) { - storages[slot] = new DiskStorage(getStackInSlot(slot), this); + storages[slot] = new DiskStorage(disks.getStackInSlot(slot), this); } return storages[slot]; @@ -50,8 +49,8 @@ public class TileDiskDrive extends TileMachine implements IStorageProvider, ISto public int getEnergyUsage() { int base = 5; - for (int i = 0; i < getSizeInventory(); ++i) { - if (getStackInSlot(i) != null) { + for (int i = 0; i < disks.getSlots(); ++i) { + if (disks.getStackInSlot(i) != null) { base += 2; } } @@ -61,11 +60,11 @@ public class TileDiskDrive extends TileMachine implements IStorageProvider, ISto @Override public void updateMachine() { - for (int i = 0; i < getSizeInventory(); ++i) { + for (int i = 0; i < disks.getSlots(); ++i) { NBTStorage storage = getStorage(i); if (storage != null && storage.isDirty()) { - storage.writeToNBT(getStackInSlot(i).getTagCompound()); + storage.writeToNBT(disks.getStackInSlot(i).getTagCompound()); storage.markClean(); } } @@ -73,7 +72,7 @@ public class TileDiskDrive extends TileMachine implements IStorageProvider, ISto @Override public void provide(List storages) { - for (int i = 0; i < getSizeInventory(); ++i) { + for (int i = 0; i < disks.getSlots(); ++i) { NBTStorage storage = getStorage(i); if (storage != null) { @@ -86,8 +85,8 @@ public class TileDiskDrive extends TileMachine implements IStorageProvider, ISto public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - RefinedStorageUtils.restoreInventory(inventory, 0, nbt); - RefinedStorageUtils.restoreInventory(filterInventory, 1, nbt); + RefinedStorageUtils.restoreItems(disks, 0, nbt); + RefinedStorageUtils.restoreItems(filters, 1, nbt); if (nbt.hasKey(NBT_PRIORITY)) { priority = nbt.getInteger(NBT_PRIORITY); @@ -106,8 +105,8 @@ public class TileDiskDrive extends TileMachine implements IStorageProvider, ISto public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - RefinedStorageUtils.saveInventory(inventory, 0, nbt); - RefinedStorageUtils.saveInventory(filterInventory, 1, nbt); + RefinedStorageUtils.saveItems(disks, 0, nbt); + RefinedStorageUtils.saveItems(filters, 1, nbt); nbt.setInteger(NBT_PRIORITY, priority); nbt.setInteger(NBT_COMPARE, compare); @@ -167,8 +166,8 @@ public class TileDiskDrive extends TileMachine implements IStorageProvider, ISto } @Override - public IInventory getInventory() { - return filterInventory; + public IItemHandler getFilters() { + return filters; } @Override @@ -206,8 +205,8 @@ public class TileDiskDrive extends TileMachine implements IStorageProvider, ISto public int getStored() { int stored = 0; - for (int i = 0; i < getSizeInventory(); ++i) { - ItemStack stack = getStackInSlot(i); + for (int i = 0; i < disks.getSlots(); ++i) { + ItemStack stack = disks.getStackInSlot(i); if (stack != null) { stored += NBTStorage.getStored(stack.getTagCompound()); @@ -221,8 +220,8 @@ public class TileDiskDrive extends TileMachine implements IStorageProvider, ISto public int getCapacity() { int capacity = 0; - for (int i = 0; i < getSizeInventory(); ++i) { - ItemStack stack = getStackInSlot(i); + for (int i = 0; i < disks.getSlots(); ++i) { + ItemStack stack = disks.getStackInSlot(i); if (stack != null) { int diskCapacity = EnumStorageType.getById(stack.getItemDamage()).getCapacity(); @@ -238,93 +237,12 @@ public class TileDiskDrive extends TileMachine implements IStorageProvider, ISto return capacity; } - @Override - public int getSizeInventory() { - return inventory.getSizeInventory(); + public IItemHandler getDisks() { + return disks; } @Override - public ItemStack getStackInSlot(int slot) { - return inventory.getStackInSlot(slot); - } - - @Override - public ItemStack decrStackSize(int slot, int count) { - return inventory.decrStackSize(slot, count); - } - - @Override - public ItemStack removeStackFromSlot(int slot) { - return inventory.removeStackFromSlot(slot); - } - - @Override - public void setInventorySlotContents(int slot, ItemStack stack) { - inventory.setInventorySlotContents(slot, stack); - } - - @Override - public int getInventoryStackLimit() { - return inventory.getInventoryStackLimit(); - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) { - return inventory.isUseableByPlayer(player); - } - - @Override - public void openInventory(EntityPlayer player) { - inventory.openInventory(player); - } - - @Override - public void closeInventory(EntityPlayer player) { - inventory.closeInventory(player); - } - - @Override - public boolean isItemValidForSlot(int slot, ItemStack stack) { - return stack.getItem() == RefinedStorageItems.STORAGE_DISK; - } - - @Override - public int getField(int id) { - return inventory.getField(id); - } - - @Override - public void setField(int id, int value) { - inventory.setField(id, value); - } - - @Override - public int getFieldCount() { - return inventory.getFieldCount(); - } - - @Override - public void clear() { - inventory.clear(); - } - - @Override - public boolean hasCustomName() { - return inventory.hasCustomName(); - } - - @Override - public ITextComponent getDisplayName() { - return inventory.getDisplayName(); - } - - @Override - public String getName() { - return inventory.getName(); - } - - @Override - public IInventory getDroppedInventory() { - return inventory; + public IItemHandler getDroppedItems() { + return disks; } } diff --git a/src/main/java/refinedstorage/tile/TileExporter.java b/src/main/java/refinedstorage/tile/TileExporter.java index 04b38db57..1fbdbd3d5 100755 --- a/src/main/java/refinedstorage/tile/TileExporter.java +++ b/src/main/java/refinedstorage/tile/TileExporter.java @@ -2,22 +2,28 @@ package refinedstorage.tile; import io.netty.buffer.ByteBuf; import net.minecraft.inventory.Container; -import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; +import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageUtils; import refinedstorage.container.ContainerExporter; -import refinedstorage.inventory.InventorySimple; +import refinedstorage.inventory.SimpleItemHandler; +import refinedstorage.inventory.SimpleItemValidator; import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.config.ICompareConfig; public class TileExporter extends TileMachine implements ICompareConfig { public static final String NBT_COMPARE = "Compare"; - private InventorySimple inventory = new InventorySimple("exporter", 9, this); - private InventorySimple upgradesInventory = new InventorySimple("upgrades", 4, this); + private SimpleItemHandler filters = new SimpleItemHandler(9, this); + private SimpleItemHandler upgrades = new SimpleItemHandler( + 4, + this, + new SimpleItemValidator(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_SPEED), + new SimpleItemValidator(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_CRAFTING) + ); private int compare = 0; @@ -25,16 +31,16 @@ public class TileExporter extends TileMachine implements ICompareConfig { @Override public int getEnergyUsage() { - return 2 + RefinedStorageUtils.getUpgradeEnergyUsage(upgradesInventory); + return 2 + RefinedStorageUtils.getUpgradeEnergyUsage(upgrades); } @Override public void updateMachine() { IItemHandler handler = RefinedStorageUtils.getItemHandler(getFacingTile(), getDirection().getOpposite()); - if (handler != null && ticks % RefinedStorageUtils.getSpeed(upgradesInventory) == 0) { - for (int i = 0; i < inventory.getSizeInventory(); ++i) { - ItemStack slot = inventory.getStackInSlot(i); + if (handler != null && ticks % RefinedStorageUtils.getSpeed(upgrades) == 0) { + for (int i = 0; i < filters.getSlots(); ++i) { + ItemStack slot = filters.getStackInSlot(i); if (slot != null) { ItemStack took = controller.take(ItemHandlerHelper.copyStackWithSize(slot, 1), compare); @@ -49,7 +55,7 @@ public class TileExporter extends TileMachine implements ICompareConfig { } controller.push(took); - } else if (RefinedStorageUtils.hasUpgrade(upgradesInventory, ItemUpgrade.TYPE_CRAFTING)) { + } else if (RefinedStorageUtils.hasUpgrade(upgrades, ItemUpgrade.TYPE_CRAFTING)) { if (scheduler.canSchedule(compare, slot)) { scheduler.schedule(controller, compare, slot); } @@ -79,8 +85,8 @@ public class TileExporter extends TileMachine implements ICompareConfig { compare = nbt.getInteger(NBT_COMPARE); } - RefinedStorageUtils.restoreInventory(inventory, 0, nbt); - RefinedStorageUtils.restoreInventory(upgradesInventory, 1, nbt); + RefinedStorageUtils.restoreItems(filters, 0, nbt); + RefinedStorageUtils.restoreItems(upgrades, 1, nbt); scheduler.readFromNBT(nbt); } @@ -91,8 +97,8 @@ public class TileExporter extends TileMachine implements ICompareConfig { nbt.setInteger(NBT_COMPARE, compare); - RefinedStorageUtils.saveInventory(inventory, 0, nbt); - RefinedStorageUtils.saveInventory(upgradesInventory, 1, nbt); + RefinedStorageUtils.saveItems(filters, 0, nbt); + RefinedStorageUtils.saveItems(upgrades, 1, nbt); scheduler.writeToNBT(nbt); } @@ -116,16 +122,16 @@ public class TileExporter extends TileMachine implements ICompareConfig { return ContainerExporter.class; } + public IItemHandler getFilters() { + return filters; + } + + public IItemHandler getUpgrades() { + return upgrades; + } + @Override - public IInventory getDroppedInventory() { - return upgradesInventory; - } - - public InventorySimple getUpgradesInventory() { - return upgradesInventory; - } - - public IInventory getInventory() { - return inventory; + public IItemHandler getDroppedItems() { + return upgrades; } } diff --git a/src/main/java/refinedstorage/tile/TileExternalStorage.java b/src/main/java/refinedstorage/tile/TileExternalStorage.java index a6ebf4f94..06067f101 100755 --- a/src/main/java/refinedstorage/tile/TileExternalStorage.java +++ b/src/main/java/refinedstorage/tile/TileExternalStorage.java @@ -2,7 +2,6 @@ package refinedstorage.tile; import io.netty.buffer.ByteBuf; import net.minecraft.inventory.Container; -import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.items.IItemHandler; @@ -11,7 +10,7 @@ import powercrystals.minefactoryreloaded.api.IDeepStorageUnit; import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageUtils; import refinedstorage.container.ContainerStorage; -import refinedstorage.inventory.InventorySimple; +import refinedstorage.inventory.SimpleItemHandler; import refinedstorage.network.MessagePriorityUpdate; import refinedstorage.storage.IStorage; import refinedstorage.storage.IStorageGui; @@ -26,7 +25,7 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider public static final String NBT_COMPARE = "Compare"; public static final String NBT_MODE = "Mode"; - private InventorySimple inventory = new InventorySimple("external_storage", 9, this); + private SimpleItemHandler filters = new SimpleItemHandler(9, this); private int priority = 0; private int compare = 0; @@ -77,7 +76,7 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider } else { IItemHandler handler = getItemHandler(); - // @todo: something goes wrong here + // @TODO: Something goes wrong here if (handler != null) { ItemHandlerHelper.insertItem(handler, stack, false); } @@ -128,7 +127,7 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider @Override public boolean mayPush(ItemStack stack) { - if (ModeFilter.respectsMode(inventory, this, compare, stack)) { + if (ModeFilter.respectsMode(filters, this, compare, stack)) { IDeepStorageUnit storageUnit = getStorageUnit(); if (storageUnit != null) { @@ -210,7 +209,7 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - RefinedStorageUtils.restoreInventory(inventory, 0, nbt); + RefinedStorageUtils.restoreItems(filters, 0, nbt); if (nbt.hasKey(NBT_PRIORITY)) { priority = nbt.getInteger(NBT_PRIORITY); @@ -229,7 +228,7 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - RefinedStorageUtils.saveInventory(inventory, 0, nbt); + RefinedStorageUtils.saveItems(filters, 0, nbt); nbt.setInteger(NBT_PRIORITY, priority); nbt.setInteger(NBT_COMPARE, compare); @@ -324,7 +323,7 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider } @Override - public IInventory getInventory() { - return inventory; + public IItemHandler getFilters() { + return filters; } } diff --git a/src/main/java/refinedstorage/tile/TileImporter.java b/src/main/java/refinedstorage/tile/TileImporter.java index 2dd75ccb9..336858462 100755 --- a/src/main/java/refinedstorage/tile/TileImporter.java +++ b/src/main/java/refinedstorage/tile/TileImporter.java @@ -2,13 +2,15 @@ package refinedstorage.tile; import io.netty.buffer.ByteBuf; import net.minecraft.inventory.Container; -import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.items.IItemHandler; +import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageUtils; import refinedstorage.container.ContainerImporter; -import refinedstorage.inventory.InventorySimple; +import refinedstorage.inventory.SimpleItemHandler; +import refinedstorage.inventory.SimpleItemValidator; +import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.config.ICompareConfig; import refinedstorage.tile.config.IModeConfig; import refinedstorage.tile.config.ModeConstants; @@ -18,8 +20,8 @@ public class TileImporter extends TileMachine implements ICompareConfig, IModeCo public static final String NBT_COMPARE = "Compare"; public static final String NBT_MODE = "Mode"; - private InventorySimple inventory = new InventorySimple("importer", 9, this); - private InventorySimple upgradesInventory = new InventorySimple("upgrades", 4, this); + private SimpleItemHandler filters = new SimpleItemHandler(9, this); + private SimpleItemHandler upgrades = new SimpleItemHandler(4, this, new SimpleItemValidator(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_SPEED)); private int compare = 0; private int mode = ModeConstants.WHITELIST; @@ -28,7 +30,7 @@ public class TileImporter extends TileMachine implements ICompareConfig, IModeCo @Override public int getEnergyUsage() { - return 2 + RefinedStorageUtils.getUpgradeEnergyUsage(upgradesInventory); + return 2 + RefinedStorageUtils.getUpgradeEnergyUsage(upgrades); } @Override @@ -46,9 +48,9 @@ public class TileImporter extends TileMachine implements ICompareConfig, IModeCo if (handler.getSlots() > 0) { ItemStack stack = handler.getStackInSlot(currentSlot); - if (stack == null || !ModeFilter.respectsMode(inventory, this, compare, stack)) { + if (stack == null || !ModeFilter.respectsMode(filters, this, compare, stack)) { currentSlot++; - } else if (ticks % RefinedStorageUtils.getSpeed(upgradesInventory) == 0) { + } else if (ticks % RefinedStorageUtils.getSpeed(upgrades) == 0) { ItemStack result = handler.extractItem(currentSlot, 1, true); if (result != null && controller.push(result)) { @@ -94,8 +96,8 @@ public class TileImporter extends TileMachine implements ICompareConfig, IModeCo mode = nbt.getInteger(NBT_MODE); } - RefinedStorageUtils.restoreInventory(inventory, 0, nbt); - RefinedStorageUtils.restoreInventory(upgradesInventory, 1, nbt); + RefinedStorageUtils.restoreItems(filters, 0, nbt); + RefinedStorageUtils.restoreItems(upgrades, 1, nbt); } @Override @@ -105,8 +107,8 @@ public class TileImporter extends TileMachine implements ICompareConfig, IModeCo nbt.setInteger(NBT_COMPARE, compare); nbt.setInteger(NBT_MODE, mode); - RefinedStorageUtils.saveInventory(inventory, 0, nbt); - RefinedStorageUtils.saveInventory(upgradesInventory, 1, nbt); + RefinedStorageUtils.saveItems(filters, 0, nbt); + RefinedStorageUtils.saveItems(upgrades, 1, nbt); } @Override @@ -130,16 +132,16 @@ public class TileImporter extends TileMachine implements ICompareConfig, IModeCo return ContainerImporter.class; } + public IItemHandler getUpgrades() { + return upgrades; + } + + public IItemHandler getFilters() { + return filters; + } + @Override - public IInventory getDroppedInventory() { - return upgradesInventory; - } - - public InventorySimple getUpgradesInventory() { - return upgradesInventory; - } - - public IInventory getInventory() { - return inventory; + public IItemHandler getDroppedItems() { + return upgrades; } } diff --git a/src/main/java/refinedstorage/tile/TileInterface.java b/src/main/java/refinedstorage/tile/TileInterface.java index 0c1355bbe..0895fe8d5 100755 --- a/src/main/java/refinedstorage/tile/TileInterface.java +++ b/src/main/java/refinedstorage/tile/TileInterface.java @@ -1,32 +1,24 @@ package refinedstorage.tile; import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.text.ITextComponent; +import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; +import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageUtils; import refinedstorage.container.ContainerInterface; -import refinedstorage.inventory.InventorySimple; +import refinedstorage.inventory.SimpleItemHandler; +import refinedstorage.inventory.SimpleItemValidator; +import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.config.ICompareConfig; -public class TileInterface extends TileMachine implements ICompareConfig, ISidedInventory { +public class TileInterface extends TileMachine implements ICompareConfig { public static final String NBT_COMPARE = "Compare"; - public static final int[] FACES = new int[]{ - 0, 1, 2, 3, 4, 5, 6, 7, 8 - }; - public static final int[] FACES_DOWN = new int[]{ - 18, 19, 20, 21, 22, 23, 24, 25, 26 - }; - - private InventorySimple inventory = new InventorySimple("interface", 9 * 3, this); - private InventorySimple upgradesInventory = new InventorySimple("upgrades", 4, this); + private SimpleItemHandler items = new SimpleItemHandler(9 * 3, this); + private SimpleItemHandler upgrades = new SimpleItemHandler(4, this, new SimpleItemValidator(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_SPEED)); private int compare = 0; @@ -34,7 +26,7 @@ public class TileInterface extends TileMachine implements ICompareConfig, ISided @Override public int getEnergyUsage() { - return 4 + RefinedStorageUtils.getUpgradeEnergyUsage(upgradesInventory); + return 4 + RefinedStorageUtils.getUpgradeEnergyUsage(upgrades); } @Override @@ -43,21 +35,21 @@ public class TileInterface extends TileMachine implements ICompareConfig, ISided currentSlot = 0; } - ItemStack slot = getStackInSlot(currentSlot); + ItemStack slot = items.getStackInSlot(currentSlot); if (slot == null) { currentSlot++; } else { - if (ticks % RefinedStorageUtils.getSpeed(upgradesInventory) == 0) { + if (ticks % RefinedStorageUtils.getSpeed(upgrades) == 0) { if (controller.push(ItemHandlerHelper.copyStackWithSize(slot, 1))) { - decrStackSize(currentSlot, 1); + items.extractItem(currentSlot, 1, false); } } } for (int i = 9; i < 18; ++i) { - ItemStack wanted = inventory.getStackInSlot(i); - ItemStack got = inventory.getStackInSlot(i + 9); + ItemStack wanted = items.getStackInSlot(i); + ItemStack got = items.getStackInSlot(i + 9); if (wanted != null) { boolean mayTake = false; @@ -65,7 +57,7 @@ public class TileInterface extends TileMachine implements ICompareConfig, ISided if (got != null) { if (!RefinedStorageUtils.compareStack(wanted, got, compare)) { if (controller.push(got)) { - inventory.setInventorySlotContents(i + 9, null); + items.setStackInSlot(i + 9, null); } } else { mayTake = true; @@ -75,7 +67,7 @@ public class TileInterface extends TileMachine implements ICompareConfig, ISided } if (mayTake) { - got = inventory.getStackInSlot(i + 9); + got = items.getStackInSlot(i + 9); int needed = got == null ? wanted.stackSize : wanted.stackSize - got.stackSize; @@ -84,7 +76,7 @@ public class TileInterface extends TileMachine implements ICompareConfig, ISided if (took != null) { if (got == null) { - inventory.setInventorySlotContents(i + 9, took); + items.setStackInSlot(i + 9, took); } else { got.stackSize += took.stackSize; } @@ -93,7 +85,7 @@ public class TileInterface extends TileMachine implements ICompareConfig, ISided } } else if (got != null) { if (controller.push(got)) { - inventory.setInventorySlotContents(i + 9, null); + items.setStackInSlot(i + 9, null); } } } @@ -115,8 +107,8 @@ public class TileInterface extends TileMachine implements ICompareConfig, ISided public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - RefinedStorageUtils.restoreInventory(this, 0, nbt); - RefinedStorageUtils.restoreInventory(upgradesInventory, 1, nbt); + RefinedStorageUtils.restoreItems(items, 0, nbt); + RefinedStorageUtils.restoreItems(upgrades, 1, nbt); if (nbt.hasKey(NBT_COMPARE)) { compare = nbt.getInteger(NBT_COMPARE); @@ -127,15 +119,13 @@ public class TileInterface extends TileMachine implements ICompareConfig, ISided public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - RefinedStorageUtils.saveInventory(this, 0, nbt); - RefinedStorageUtils.saveInventory(upgradesInventory, 1, nbt); + RefinedStorageUtils.saveItems(items, 0, nbt); + RefinedStorageUtils.saveItems(upgrades, 1, nbt); nbt.setInteger(NBT_COMPARE, compare); } - public InventorySimple getUpgradesInventory() { - return upgradesInventory; - } + @Override public void receiveContainerData(ByteBuf buf) { @@ -156,123 +146,28 @@ public class TileInterface extends TileMachine implements ICompareConfig, ISided return ContainerInterface.class; } - @Override - public int getSizeInventory() { - return inventory.getSizeInventory(); + public IItemHandler getItems() { + return items; + } + + public IItemHandler getUpgrades() { + return upgrades; } @Override - public ItemStack getStackInSlot(int slot) { - return inventory.getStackInSlot(slot); - } + public IItemHandler getDroppedItems() { + SimpleItemHandler dummy = new SimpleItemHandler(9 + 9 + 4); - @Override - public ItemStack decrStackSize(int slot, int count) { - return inventory.decrStackSize(slot, count); - } - - @Override - public ItemStack removeStackFromSlot(int slot) { - return inventory.removeStackFromSlot(slot); - } - - @Override - public void setInventorySlotContents(int slot, ItemStack stack) { - inventory.setInventorySlotContents(slot, stack); - } - - @Override - public int getInventoryStackLimit() { - return inventory.getInventoryStackLimit(); - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) { - return inventory.isUseableByPlayer(player); - } - - @Override - public void openInventory(EntityPlayer player) { - inventory.openInventory(player); - } - - @Override - public void closeInventory(EntityPlayer player) { - inventory.closeInventory(player); - } - - @Override - public boolean isItemValidForSlot(int slot, ItemStack stack) { - return inventory.isItemValidForSlot(slot, stack); - } - - @Override - public int getField(int id) { - return inventory.getField(id); - } - - @Override - public void setField(int id, int value) { - inventory.setField(id, value); - } - - @Override - public int getFieldCount() { - return inventory.getFieldCount(); - } - - @Override - public void clear() { - inventory.clear(); - } - - @Override - public String getName() { - return inventory.getName(); - } - - @Override - public boolean hasCustomName() { - return inventory.hasCustomName(); - } - - @Override - public ITextComponent getDisplayName() { - return inventory.getDisplayName(); - } - - @Override - public int[] getSlotsForFace(EnumFacing side) { - return side == EnumFacing.DOWN ? FACES_DOWN : FACES; - } - - @Override - public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side) { - return slot < 9; - } - - @Override - public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side) { - return slot >= 18; - } - - @Override - public IInventory getDroppedInventory() { - InventorySimple dummy = new InventorySimple(null, 9 + 9 + 4); - - // Importing slots for (int i = 0; i < 9; ++i) { - dummy.setInventorySlotContents(i, inventory.getStackInSlot(i)); + dummy.setStackInSlot(i, items.getStackInSlot(i)); } - // Exporting slots for (int i = 0; i < 9; ++i) { - dummy.setInventorySlotContents(9 + i, inventory.getStackInSlot(18 + i)); + dummy.setStackInSlot(9 + i, items.getStackInSlot(18 + i)); } - // Upgrade slots for (int i = 0; i < 4; ++i) { - dummy.setInventorySlotContents(18 + i, upgradesInventory.getStackInSlot(i)); + dummy.setStackInSlot(18 + i, upgrades.getStackInSlot(i)); } return dummy; diff --git a/src/main/java/refinedstorage/tile/TileStorage.java b/src/main/java/refinedstorage/tile/TileStorage.java index dda5cb05d..8bf61f092 100755 --- a/src/main/java/refinedstorage/tile/TileStorage.java +++ b/src/main/java/refinedstorage/tile/TileStorage.java @@ -2,15 +2,15 @@ package refinedstorage.tile; import io.netty.buffer.ByteBuf; import net.minecraft.inventory.Container; -import net.minecraft.inventory.IInventory; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.items.IItemHandler; import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageBlocks; import refinedstorage.RefinedStorageUtils; import refinedstorage.block.BlockStorage; import refinedstorage.block.EnumStorageType; import refinedstorage.container.ContainerStorage; -import refinedstorage.inventory.InventorySimple; +import refinedstorage.inventory.SimpleItemHandler; import refinedstorage.network.MessagePriorityUpdate; import refinedstorage.storage.*; import refinedstorage.tile.config.ICompareConfig; @@ -26,7 +26,7 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora public static final String NBT_COMPARE = "Compare"; public static final String NBT_MODE = "Mode"; - private InventorySimple inventory = new InventorySimple("storage", 9, this); + private SimpleItemHandler filters = new SimpleItemHandler(9, this); private NBTTagCompound storageTag = NBTStorage.createNBT(); @@ -67,7 +67,7 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - RefinedStorageUtils.restoreInventory(inventory, 0, nbt); + RefinedStorageUtils.restoreItems(filters, 0, nbt); if (nbt.hasKey(NBT_PRIORITY)) { priority = nbt.getInteger(NBT_PRIORITY); @@ -90,7 +90,7 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - RefinedStorageUtils.saveInventory(inventory, 0, nbt); + RefinedStorageUtils.saveItems(filters, 0, nbt); nbt.setInteger(NBT_PRIORITY, priority); nbt.setTag(NBT_STORAGE, storageTag); @@ -161,8 +161,8 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora } @Override - public IInventory getInventory() { - return inventory; + public IItemHandler getFilters() { + return filters; } @Override diff --git a/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java b/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java index 5783507ca..5624c789d 100755 --- a/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java +++ b/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java @@ -1,21 +1,21 @@ package refinedstorage.tile; import net.minecraft.inventory.Container; -import net.minecraft.inventory.IInventory; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.items.IItemHandler; import refinedstorage.RefinedStorageUtils; import refinedstorage.container.ContainerWirelessTransmitter; -import refinedstorage.inventory.InventorySimple; +import refinedstorage.inventory.SimpleItemHandler; import refinedstorage.item.ItemUpgrade; public class TileWirelessTransmitter extends TileMachine { public static final int RANGE_PER_UPGRADE = 8; - private InventorySimple inventory = new InventorySimple("upgrades", 4, this); + private SimpleItemHandler upgrades = new SimpleItemHandler(4, this); @Override public int getEnergyUsage() { - return 8 + RefinedStorageUtils.getUpgradeEnergyUsage(inventory); + return 8 + RefinedStorageUtils.getUpgradeEnergyUsage(upgrades); } @Override @@ -26,18 +26,22 @@ public class TileWirelessTransmitter extends TileMachine { public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - RefinedStorageUtils.restoreInventory(inventory, 0, nbt); + RefinedStorageUtils.restoreItems(upgrades, 0, nbt); } @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - RefinedStorageUtils.saveInventory(inventory, 0, nbt); + RefinedStorageUtils.saveItems(upgrades, 0, nbt); } public int getRange() { - return 16 + (RefinedStorageUtils.getUpgradeCount(inventory, ItemUpgrade.TYPE_RANGE) * RANGE_PER_UPGRADE); + return 16 + (RefinedStorageUtils.getUpgradeCount(upgrades, ItemUpgrade.TYPE_RANGE) * RANGE_PER_UPGRADE); + } + + public SimpleItemHandler getUpgrades() { + return upgrades; } @Override @@ -46,7 +50,7 @@ public class TileWirelessTransmitter extends TileMachine { } @Override - public IInventory getDroppedInventory() { - return inventory; + public IItemHandler getDroppedItems() { + return upgrades; } } diff --git a/src/main/java/refinedstorage/tile/autocrafting/TileCrafter.java b/src/main/java/refinedstorage/tile/autocrafting/TileCrafter.java index 91bc63ce7..6d096633c 100755 --- a/src/main/java/refinedstorage/tile/autocrafting/TileCrafter.java +++ b/src/main/java/refinedstorage/tile/autocrafting/TileCrafter.java @@ -1,29 +1,35 @@ package refinedstorage.tile.autocrafting; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; -import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.text.ITextComponent; import net.minecraft.world.World; +import net.minecraftforge.items.IItemHandler; import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageUtils; import refinedstorage.container.ContainerCrafter; -import refinedstorage.inventory.InventorySimple; +import refinedstorage.inventory.IItemValidator; +import refinedstorage.inventory.SimpleItemHandler; import refinedstorage.item.ItemPattern; import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.TileMachine; import refinedstorage.tile.autocrafting.task.ICraftingTask; -public class TileCrafter extends TileMachine implements IInventory { - private InventorySimple inventory = new InventorySimple("crafter", PATTERN_SLOTS + 4, this); +public class TileCrafter extends TileMachine { + private SimpleItemHandler patterns = new SimpleItemHandler(PATTERN_SLOTS, this, new IItemValidator() { + @Override + public boolean valid(ItemStack stack) { + return stack.getItem() == RefinedStorageItems.PATTERN && ItemPattern.isValid(stack); + } + }); + + private SimpleItemHandler upgrades = new SimpleItemHandler(4, this); public static final int PATTERN_SLOTS = 6; @Override public int getEnergyUsage() { - return 2 + RefinedStorageUtils.getUpgradeEnergyUsage(inventory, PATTERN_SLOTS); + return 2 + RefinedStorageUtils.getUpgradeEnergyUsage(upgrades); } @Override @@ -50,107 +56,42 @@ public class TileCrafter extends TileMachine implements IInventory { public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - RefinedStorageUtils.restoreInventory(inventory, 0, nbt); + RefinedStorageUtils.restoreItems(patterns, 0, nbt); + RefinedStorageUtils.restoreItems(upgrades, 1, nbt); } @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - RefinedStorageUtils.saveInventory(inventory, 0, nbt); + RefinedStorageUtils.saveItems(patterns, 0, nbt); + RefinedStorageUtils.saveItems(upgrades, 1, nbt); } public int getSpeed() { - return 20 - (RefinedStorageUtils.getUpgradeCount(inventory, ItemUpgrade.TYPE_SPEED, PATTERN_SLOTS) * 4); + return 20 - (RefinedStorageUtils.getUpgradeCount(upgrades, ItemUpgrade.TYPE_SPEED, PATTERN_SLOTS) * 4); + } + + public IItemHandler getPatterns() { + return patterns; + } + + public IItemHandler getUpgrades() { + return upgrades; } @Override - public int getSizeInventory() { - return inventory.getSizeInventory(); - } + public IItemHandler getDroppedItems() { + SimpleItemHandler dummy = new SimpleItemHandler(PATTERN_SLOTS + 4); - @Override - public ItemStack getStackInSlot(int slot) { - return inventory.getStackInSlot(slot); - } + for (int i = 0; i < PATTERN_SLOTS; ++i) { + dummy.setStackInSlot(i, patterns.getStackInSlot(i)); + } - @Override - public ItemStack decrStackSize(int slot, int count) { - return inventory.decrStackSize(slot, count); - } + for (int i = 0; i < 4; ++i) { + dummy.setStackInSlot(PATTERN_SLOTS + i, upgrades.getStackInSlot(i)); + } - @Override - public ItemStack removeStackFromSlot(int slot) { - return inventory.removeStackFromSlot(slot); - } - - @Override - public void setInventorySlotContents(int slot, ItemStack stack) { - inventory.setInventorySlotContents(slot, stack); - } - - @Override - public int getInventoryStackLimit() { - return inventory.getInventoryStackLimit(); - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) { - return inventory.isUseableByPlayer(player); - } - - @Override - public void openInventory(EntityPlayer player) { - inventory.openInventory(player); - } - - @Override - public void closeInventory(EntityPlayer player) { - inventory.closeInventory(player); - } - - @Override - public boolean isItemValidForSlot(int slot, ItemStack stack) { - return stack.getItem() == RefinedStorageItems.PATTERN && ItemPattern.isValid(stack); - } - - @Override - public int getField(int id) { - return inventory.getField(id); - } - - @Override - public void setField(int id, int value) { - inventory.setField(id, value); - } - - @Override - public int getFieldCount() { - return inventory.getFieldCount(); - } - - @Override - public void clear() { - inventory.clear(); - } - - @Override - public boolean hasCustomName() { - return inventory.hasCustomName(); - } - - @Override - public ITextComponent getDisplayName() { - return inventory.getDisplayName(); - } - - @Override - public String getName() { - return inventory.getName(); - } - - @Override - public IInventory getDroppedInventory() { - return inventory; + return dummy; } } diff --git a/src/main/java/refinedstorage/tile/autocrafting/TileProcessingPatternEncoder.java b/src/main/java/refinedstorage/tile/autocrafting/TileProcessingPatternEncoder.java index fb9f032d6..35dd6c9d0 100755 --- a/src/main/java/refinedstorage/tile/autocrafting/TileProcessingPatternEncoder.java +++ b/src/main/java/refinedstorage/tile/autocrafting/TileProcessingPatternEncoder.java @@ -1,152 +1,33 @@ package refinedstorage.tile.autocrafting; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.text.ITextComponent; +import net.minecraftforge.items.IItemHandler; import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageUtils; -import refinedstorage.inventory.InventorySimple; +import refinedstorage.inventory.SimpleItemHandler; +import refinedstorage.inventory.SimpleItemValidator; import refinedstorage.item.ItemPattern; import refinedstorage.tile.TileBase; -public class TileProcessingPatternEncoder extends TileBase implements ISidedInventory { - public static final int[] FACES = new int[]{ - 0 - }; - public static final int[] FACES_DOWN = new int[]{ - 1 - }; - - private InventorySimple inventory = new InventorySimple("patterns", 2, this); - private InventorySimple inputsOutputsInventory = new InventorySimple("input_outputs", 9 * 2, this); +public class TileProcessingPatternEncoder extends TileBase { + private SimpleItemHandler patterns = new SimpleItemHandler(2, this, new SimpleItemValidator(RefinedStorageItems.PATTERN)); + private SimpleItemHandler configuration = new SimpleItemHandler(9 * 2, this); @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - RefinedStorageUtils.saveInventory(inventory, 0, nbt); - RefinedStorageUtils.saveInventory(inputsOutputsInventory, 1, nbt); + RefinedStorageUtils.saveItems(patterns, 0, nbt); + RefinedStorageUtils.saveItems(configuration, 1, nbt); } @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - RefinedStorageUtils.restoreInventory(inventory, 0, nbt); - RefinedStorageUtils.restoreInventory(inputsOutputsInventory, 1, nbt); - } - - @Override - public int getSizeInventory() { - return inventory.getSizeInventory(); - } - - @Override - public ItemStack getStackInSlot(int slot) { - return inventory.getStackInSlot(slot); - } - - @Override - public ItemStack decrStackSize(int slot, int count) { - return inventory.decrStackSize(slot, count); - } - - @Override - public ItemStack removeStackFromSlot(int slot) { - return inventory.removeStackFromSlot(slot); - } - - @Override - public void setInventorySlotContents(int slot, ItemStack stack) { - inventory.setInventorySlotContents(slot, stack); - } - - @Override - public int getInventoryStackLimit() { - return inventory.getInventoryStackLimit(); - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) { - return inventory.isUseableByPlayer(player); - } - - @Override - public void openInventory(EntityPlayer player) { - inventory.openInventory(player); - } - - @Override - public void closeInventory(EntityPlayer player) { - inventory.closeInventory(player); - } - - @Override - public boolean isItemValidForSlot(int slot, ItemStack stack) { - return stack.getItem() == RefinedStorageItems.PATTERN; - } - - @Override - public int getField(int id) { - return inventory.getField(id); - } - - @Override - public void setField(int id, int value) { - inventory.setField(id, value); - } - - @Override - public int getFieldCount() { - return inventory.getFieldCount(); - } - - @Override - public void clear() { - inventory.clear(); - } - - @Override - public String getName() { - return inventory.getName(); - } - - @Override - public boolean hasCustomName() { - return inventory.hasCustomName(); - } - - @Override - public ITextComponent getDisplayName() { - return inventory.getDisplayName(); - } - - @Override - public int[] getSlotsForFace(EnumFacing side) { - return side == EnumFacing.DOWN ? FACES_DOWN : FACES; - } - - @Override - public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side) { - return slot == 0; - } - - @Override - public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side) { - return slot == 1; - } - - @Override - public IInventory getDroppedInventory() { - return this; - } - - public InventorySimple getInputsOutputsInventory() { - return inputsOutputsInventory; + RefinedStorageUtils.restoreItems(patterns, 0, nbt); + RefinedStorageUtils.restoreItems(configuration, 1, nbt); } public void onCreatePattern() { @@ -156,18 +37,17 @@ public class TileProcessingPatternEncoder extends TileBase implements ISidedInve ItemPattern.setProcessing(pattern, true); for (int i = 0; i < 18; ++i) { - if (inputsOutputsInventory.getStackInSlot(i) != null) { + if (configuration.getStackInSlot(i) != null) { if (i >= 9) { - ItemPattern.addOutput(pattern, inputsOutputsInventory.getStackInSlot(i)); + ItemPattern.addOutput(pattern, configuration.getStackInSlot(i)); } else { - ItemPattern.addInput(pattern, inputsOutputsInventory.getStackInSlot(i)); + ItemPattern.addInput(pattern, configuration.getStackInSlot(i)); } } } - decrStackSize(0, 1); - - setInventorySlotContents(1, pattern); + patterns.extractItem(0, 1, false); + patterns.setStackInSlot(1, pattern); } } @@ -175,17 +55,30 @@ public class TileProcessingPatternEncoder extends TileBase implements ISidedInve int inputsFilled = 0, outputsFilled = 0; for (int i = 0; i < 9; ++i) { - if (inputsOutputsInventory.getStackInSlot(i) != null) { + if (configuration.getStackInSlot(i) != null) { inputsFilled++; } } for (int i = 9; i < 18; ++i) { - if (inputsOutputsInventory.getStackInSlot(i) != null) { + if (configuration.getStackInSlot(i) != null) { outputsFilled++; } } - return inputsFilled > 0 && outputsFilled > 0 && getStackInSlot(0) != null && getStackInSlot(1) == null; + return inputsFilled > 0 && outputsFilled > 0 && patterns.getStackInSlot(0) != null && patterns.getStackInSlot(1) == null; + } + + public SimpleItemHandler getPatterns() { + return patterns; + } + + public SimpleItemHandler getConfiguration() { + return configuration; + } + + @Override + public IItemHandler getDroppedItems() { + return patterns; } } diff --git a/src/main/java/refinedstorage/tile/config/ModeFilter.java b/src/main/java/refinedstorage/tile/config/ModeFilter.java index d87d5c0db..50b72aabb 100755 --- a/src/main/java/refinedstorage/tile/config/ModeFilter.java +++ b/src/main/java/refinedstorage/tile/config/ModeFilter.java @@ -1,15 +1,15 @@ package refinedstorage.tile.config; -import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; +import net.minecraftforge.items.IItemHandler; import refinedstorage.RefinedStorageUtils; public class ModeFilter { - public static boolean respectsMode(IInventory filters, IModeConfig mode, int compare, ItemStack stack) { + public static boolean respectsMode(IItemHandler filters, IModeConfig mode, int compare, ItemStack stack) { if (mode.getMode() == ModeConstants.WHITELIST) { int slots = 0; - for (int i = 0; i < filters.getSizeInventory(); ++i) { + for (int i = 0; i < filters.getSlots(); ++i) { ItemStack slot = filters.getStackInSlot(i); if (slot != null) { @@ -23,7 +23,7 @@ public class ModeFilter { return slots == 0; } else if (mode.getMode() == ModeConstants.BLACKLIST) { - for (int i = 0; i < filters.getSizeInventory(); ++i) { + for (int i = 0; i < filters.getSlots(); ++i) { ItemStack slot = filters.getStackInSlot(i); if (slot != null && RefinedStorageUtils.compareStack(slot, stack, compare)) { diff --git a/src/main/java/refinedstorage/tile/grid/TileGrid.java b/src/main/java/refinedstorage/tile/grid/TileGrid.java index a33c81825..31cfb78b1 100755 --- a/src/main/java/refinedstorage/tile/grid/TileGrid.java +++ b/src/main/java/refinedstorage/tile/grid/TileGrid.java @@ -6,6 +6,8 @@ import net.minecraft.inventory.*; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.wrapper.InvWrapper; import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageBlocks; import refinedstorage.RefinedStorageItems; @@ -13,7 +15,8 @@ import refinedstorage.RefinedStorageUtils; import refinedstorage.block.BlockGrid; import refinedstorage.block.EnumGridType; import refinedstorage.container.ContainerGrid; -import refinedstorage.inventory.InventorySimple; +import refinedstorage.inventory.SimpleItemHandler; +import refinedstorage.inventory.SimpleItemValidator; import refinedstorage.item.ItemPattern; import refinedstorage.network.MessageGridCraftingStart; import refinedstorage.network.MessageGridSettingsUpdate; @@ -53,10 +56,10 @@ public class TileGrid extends TileMachine implements IGrid { onCraftingMatrixChanged(); } }; - private InventoryCrafting craftingInventory = new InventoryCrafting(craftingContainer, 3, 3); - private InventoryCraftResult craftingResultInventory = new InventoryCraftResult(); + private InventoryCrafting matrix = new InventoryCrafting(craftingContainer, 3, 3); + private InventoryCraftResult result = new InventoryCraftResult(); - private InventorySimple patternsInventory = new InventorySimple("patterns", 2, this); + private SimpleItemHandler patterns = new SimpleItemHandler(2, this, new SimpleItemValidator(RefinedStorageItems.PATTERN)); private int sortingDirection = SORTING_DIRECTION_DESCENDING; private int sortingType = SORTING_TYPE_NAME; @@ -96,39 +99,39 @@ public class TileGrid extends TileMachine implements IGrid { RefinedStorage.NETWORK.sendToServer(new MessageGridStoragePull(getPos().getX(), getPos().getY(), getPos().getZ(), id, flags)); } - public InventoryCrafting getCraftingInventory() { - return craftingInventory; + public InventoryCrafting getMatrix() { + return matrix; } - public InventoryCraftResult getCraftingResultInventory() { - return craftingResultInventory; + public InventoryCraftResult getResult() { + return result; } - public InventorySimple getPatternsInventory() { - return patternsInventory; + public IItemHandler getPatterns() { + return patterns; } public void onCraftingMatrixChanged() { markDirty(); - craftingResultInventory.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(craftingInventory, worldObj)); + result.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(matrix, worldObj)); } public void onCrafted(ContainerGrid container) { if (!worldObj.isRemote) { - ItemStack[] remainder = CraftingManager.getInstance().func_180303_b(craftingInventory, worldObj); + ItemStack[] remainder = CraftingManager.getInstance().func_180303_b(matrix, worldObj); - for (int i = 0; i < craftingInventory.getSizeInventory(); ++i) { + for (int i = 0; i < matrix.getSizeInventory(); ++i) { if (remainder[i] != null) { - craftingInventory.setInventorySlotContents(i, remainder[i].copy()); + matrix.setInventorySlotContents(i, remainder[i].copy()); } else { - ItemStack slot = craftingInventory.getStackInSlot(i); + ItemStack slot = matrix.getStackInSlot(i); if (slot != null) { if (slot.stackSize == 1 && isConnected()) { - craftingInventory.setInventorySlotContents(i, controller.take(slot.copy())); + matrix.setInventorySlotContents(i, controller.take(slot.copy())); } else { - craftingInventory.decrStackSize(i, 1); + matrix.decrStackSize(i, 1); } } } @@ -143,7 +146,7 @@ public class TileGrid extends TileMachine implements IGrid { public void onCraftedShift(ContainerGrid container, EntityPlayer player) { List craftedItemsList = new ArrayList(); int craftedItems = 0; - ItemStack crafted = craftingResultInventory.getStackInSlot(0); + ItemStack crafted = result.getStackInSlot(0); while (true) { onCrafted(container); @@ -152,7 +155,7 @@ public class TileGrid extends TileMachine implements IGrid { craftedItems += crafted.stackSize; - if (!RefinedStorageUtils.compareStack(crafted, craftingResultInventory.getStackInSlot(0)) || craftedItems + crafted.stackSize > crafted.getMaxStackSize()) { + if (!RefinedStorageUtils.compareStack(crafted, result.getStackInSlot(0)) || craftedItems + crafted.stackSize > crafted.getMaxStackSize()) { break; } } @@ -170,34 +173,34 @@ public class TileGrid extends TileMachine implements IGrid { public void onCreatePattern() { if (mayCreatePattern()) { - patternsInventory.decrStackSize(0, 1); + patterns.extractItem(0, 1, false); ItemStack pattern = new ItemStack(RefinedStorageItems.PATTERN); - ItemPattern.addOutput(pattern, craftingResultInventory.getStackInSlot(0)); + ItemPattern.addOutput(pattern, result.getStackInSlot(0)); ItemPattern.setProcessing(pattern, false); for (int i = 0; i < 9; ++i) { - ItemStack ingredient = craftingInventory.getStackInSlot(i); + ItemStack ingredient = matrix.getStackInSlot(i); if (ingredient != null) { ItemPattern.addInput(pattern, ingredient); } } - patternsInventory.setInventorySlotContents(1, pattern); + patterns.setStackInSlot(1, pattern); } } public boolean mayCreatePattern() { - return craftingResultInventory.getStackInSlot(0) != null && patternsInventory.getStackInSlot(1) == null && patternsInventory.getStackInSlot(0) != null; + return result.getStackInSlot(0) != null && patterns.getStackInSlot(1) == null && patterns.getStackInSlot(0) != null; } public void onRecipeTransfer(ItemStack[][] recipe) { if (isConnected()) { - for (int i = 0; i < craftingInventory.getSizeInventory(); ++i) { - ItemStack slot = craftingInventory.getStackInSlot(i); + for (int i = 0; i < matrix.getSizeInventory(); ++i) { + ItemStack slot = matrix.getStackInSlot(i); if (slot != null) { if (getType() == EnumGridType.CRAFTING) { @@ -206,11 +209,11 @@ public class TileGrid extends TileMachine implements IGrid { } } - craftingInventory.setInventorySlotContents(i, null); + matrix.setInventorySlotContents(i, null); } } - for (int i = 0; i < craftingInventory.getSizeInventory(); ++i) { + for (int i = 0; i < matrix.getSizeInventory(); ++i) { if (recipe[i] != null) { ItemStack[] possibilities = recipe[i]; @@ -219,13 +222,13 @@ public class TileGrid extends TileMachine implements IGrid { ItemStack took = controller.take(possibility); if (took != null) { - craftingInventory.setInventorySlotContents(i, possibility); + matrix.setInventorySlotContents(i, possibility); break; } } } else if (getType() == EnumGridType.PATTERN) { - craftingInventory.setInventorySlotContents(i, possibilities[0]); + matrix.setInventorySlotContents(i, possibilities[0]); } } } @@ -291,8 +294,8 @@ public class TileGrid extends TileMachine implements IGrid { public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - RefinedStorageUtils.restoreInventory(craftingInventory, 0, nbt); - RefinedStorageUtils.restoreInventory(patternsInventory, 1, nbt); + RefinedStorageUtils.restoreItemsLegacy(matrix, 0, nbt); + RefinedStorageUtils.restoreItems(patterns, 1, nbt); if (nbt.hasKey(NBT_SORTING_DIRECTION)) { sortingDirection = nbt.getInteger(NBT_SORTING_DIRECTION); @@ -311,8 +314,8 @@ public class TileGrid extends TileMachine implements IGrid { public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - RefinedStorageUtils.saveInventory(craftingInventory, 0, nbt); - RefinedStorageUtils.saveInventory(patternsInventory, 1, nbt); + RefinedStorageUtils.saveItemsLegacy(matrix, 0, nbt); + RefinedStorageUtils.saveItems(patterns, 1, nbt); nbt.setInteger(NBT_SORTING_DIRECTION, sortingDirection); nbt.setInteger(NBT_SORTING_TYPE, sortingType); @@ -359,12 +362,12 @@ public class TileGrid extends TileMachine implements IGrid { } @Override - public IInventory getDroppedInventory() { + public IItemHandler getDroppedItems() { switch (getType()) { case CRAFTING: - return craftingInventory; + return new InvWrapper(matrix); case PATTERN: - return patternsInventory; + return patterns; default: return null; } diff --git a/src/main/java/refinedstorage/tile/solderer/SoldererRegistry.java b/src/main/java/refinedstorage/tile/solderer/SoldererRegistry.java index f7ed40261..1733cf7c5 100755 --- a/src/main/java/refinedstorage/tile/solderer/SoldererRegistry.java +++ b/src/main/java/refinedstorage/tile/solderer/SoldererRegistry.java @@ -1,7 +1,7 @@ package refinedstorage.tile.solderer; -import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; +import net.minecraftforge.items.IItemHandler; import refinedstorage.RefinedStorageUtils; import java.util.ArrayList; @@ -14,7 +14,7 @@ public class SoldererRegistry { recipes.add(recipe); } - public static ISoldererRecipe getRecipe(IInventory inventory) { + public static ISoldererRecipe getRecipe(IItemHandler inventory) { for (ISoldererRecipe recipe : recipes) { boolean ok = true; diff --git a/src/main/java/refinedstorage/tile/solderer/TileSolderer.java b/src/main/java/refinedstorage/tile/solderer/TileSolderer.java index 3fe4aeec2..f4ca656ef 100755 --- a/src/main/java/refinedstorage/tile/solderer/TileSolderer.java +++ b/src/main/java/refinedstorage/tile/solderer/TileSolderer.java @@ -1,39 +1,24 @@ package refinedstorage.tile.solderer; import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.text.ITextComponent; import net.minecraft.world.World; +import net.minecraftforge.items.IItemHandler; +import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageUtils; import refinedstorage.container.ContainerSolderer; -import refinedstorage.inventory.InventorySimple; +import refinedstorage.inventory.SimpleItemHandler; +import refinedstorage.inventory.SimpleItemValidator; import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.TileMachine; -public class TileSolderer extends TileMachine implements ISidedInventory { +public class TileSolderer extends TileMachine { public static final String NBT_WORKING = "Working"; public static final String NBT_PROGRESS = "Progress"; - public static final int[] FACES_UP = new int[]{ - 1 - }; - public static final int[] FACES_NE = new int[]{ - 0 - }; - public static final int[] FACES_SW = new int[]{ - 2 - }; - public static final int[] FACES_DOWN = new int[]{ - 3 - }; - - private InventorySimple inventory = new InventorySimple("solderer", 4 + 4, this); + private SimpleItemHandler items = new SimpleItemHandler(4, this); + private SimpleItemHandler upgrades = new SimpleItemHandler(4, this, new SimpleItemValidator(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_SPEED)); private ISoldererRecipe recipe; @@ -48,16 +33,16 @@ public class TileSolderer extends TileMachine implements ISidedInventory { @Override public void updateMachine() { - ISoldererRecipe newRecipe = SoldererRegistry.getRecipe(inventory); + ISoldererRecipe newRecipe = SoldererRegistry.getRecipe(items); boolean wasWorking = working; if (newRecipe == null) { reset(); } else if (newRecipe != recipe) { - boolean isSameItem = inventory.getStackInSlot(3) != null ? RefinedStorageUtils.compareStackNoQuantity(inventory.getStackInSlot(3), newRecipe.getResult()) : false; + boolean isSameItem = items.getStackInSlot(3) != null ? RefinedStorageUtils.compareStackNoQuantity(items.getStackInSlot(3), newRecipe.getResult()) : false; - if (inventory.getStackInSlot(3) == null || (isSameItem && ((inventory.getStackInSlot(3).stackSize + newRecipe.getResult().stackSize) <= inventory.getStackInSlot(3).getMaxStackSize()))) { + if (items.getStackInSlot(3) == null || (isSameItem && ((items.getStackInSlot(3).stackSize + newRecipe.getResult().stackSize) <= items.getStackInSlot(3).getMaxStackSize()))) { recipe = newRecipe; progress = 0; working = true; @@ -65,18 +50,18 @@ public class TileSolderer extends TileMachine implements ISidedInventory { markDirty(); } } else if (working) { - progress += 1 + RefinedStorageUtils.getUpgradeCount(inventory, ItemUpgrade.TYPE_SPEED, 4); + progress += 1 + RefinedStorageUtils.getUpgradeCount(upgrades, ItemUpgrade.TYPE_SPEED); if (progress >= recipe.getDuration()) { - if (inventory.getStackInSlot(3) != null) { - inventory.getStackInSlot(3).stackSize += recipe.getResult().stackSize; + if (items.getStackInSlot(3) != null) { + items.getStackInSlot(3).stackSize += recipe.getResult().stackSize; } else { - inventory.setInventorySlotContents(3, recipe.getResult()); + items.setStackInSlot(3, recipe.getResult()); } for (int i = 0; i < 3; ++i) { if (recipe.getRow(i) != null) { - inventory.decrStackSize(i, recipe.getRow(i).stackSize); + items.extractItem(i, recipe.getRow(i).stackSize, false); } } @@ -108,9 +93,10 @@ public class TileSolderer extends TileMachine implements ISidedInventory { public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - RefinedStorageUtils.restoreInventory(this, 0, nbt); + RefinedStorageUtils.restoreItems(items, 0, nbt); + RefinedStorageUtils.restoreItems(upgrades, 1, nbt); - recipe = SoldererRegistry.getRecipe(inventory); + recipe = SoldererRegistry.getRecipe(items); if (nbt.hasKey(NBT_WORKING)) { working = nbt.getBoolean(NBT_WORKING); @@ -125,7 +111,8 @@ public class TileSolderer extends TileMachine implements ISidedInventory { public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - RefinedStorageUtils.saveInventory(this, 0, nbt); + RefinedStorageUtils.saveItems(items, 0, nbt); + RefinedStorageUtils.saveItems(upgrades, 1, nbt); nbt.setBoolean(NBT_WORKING, working); nbt.setInteger(NBT_PROGRESS, progress); @@ -178,118 +165,16 @@ public class TileSolderer extends TileMachine implements ISidedInventory { return (int) ((float) progress / (float) duration * (float) i); } - @Override - public IInventory getDroppedInventory() { - return inventory; + public IItemHandler getItems() { + return items; + } + + public IItemHandler getUpgrades() { + return upgrades; } @Override - public int getSizeInventory() { - return inventory.getSizeInventory(); - } - - @Override - public ItemStack getStackInSlot(int slot) { - return inventory.getStackInSlot(slot); - } - - @Override - public ItemStack decrStackSize(int slot, int count) { - return inventory.decrStackSize(slot, count); - } - - @Override - public ItemStack removeStackFromSlot(int slot) { - return inventory.removeStackFromSlot(slot); - } - - @Override - public void setInventorySlotContents(int slot, ItemStack stack) { - inventory.setInventorySlotContents(slot, stack); - } - - @Override - public int getInventoryStackLimit() { - return inventory.getInventoryStackLimit(); - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) { - return inventory.isUseableByPlayer(player); - } - - @Override - public void openInventory(EntityPlayer player) { - inventory.openInventory(player); - } - - @Override - public void closeInventory(EntityPlayer player) { - inventory.closeInventory(player); - } - - @Override - public boolean isItemValidForSlot(int slot, ItemStack stack) { - return inventory.isItemValidForSlot(slot, stack); - } - - @Override - public int getField(int id) { - return inventory.getField(id); - } - - @Override - public void setField(int id, int value) { - inventory.setField(id, value); - } - - @Override - public int getFieldCount() { - return inventory.getFieldCount(); - } - - @Override - public void clear() { - inventory.clear(); - } - - @Override - public String getName() { - return inventory.getName(); - } - - @Override - public boolean hasCustomName() { - return inventory.hasCustomName(); - } - - @Override - public ITextComponent getDisplayName() { - return inventory.getDisplayName(); - } - - @Override - public int[] getSlotsForFace(EnumFacing side) { - if (side == EnumFacing.UP) { - return FACES_UP; - } else if (side == EnumFacing.DOWN) { - return FACES_DOWN; - } else if (side == EnumFacing.NORTH || side == EnumFacing.EAST) { - return FACES_NE; - } else if (side == EnumFacing.SOUTH || side == EnumFacing.WEST) { - return FACES_SW; - } - - return FACES_UP; - } - - @Override - public boolean canInsertItem(int slot, ItemStack stack, EnumFacing direction) { - return slot != 3; - } - - @Override - public boolean canExtractItem(int slot, ItemStack stack, EnumFacing direction) { - return slot == 3; + public IItemHandler getDroppedItems() { + return items; } }