From ad800fbd1a66499ff5d513a6495934ee74526f03 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Thu, 17 Oct 2019 17:17:53 +0200 Subject: [PATCH] Add new inventory listener system --- .../node/ExternalStorageNetworkNode.java | 7 +- .../apiimpl/network/node/GridNetworkNode.java | 65 ++++++++++--------- .../network/node/ImporterNetworkNode.java | 9 +-- .../network/node/NetworkNodeConstructor.java | 9 +-- .../network/node/NetworkNodeCrafter.java | 24 ++++--- .../network/node/NetworkNodeDestructor.java | 9 +-- .../network/node/NetworkNodeDetector.java | 7 +- .../network/node/NetworkNodeExporter.java | 9 +-- .../node/NetworkNodeFluidInterface.java | 9 +-- .../network/node/NetworkNodeInterface.java | 10 +-- .../node/NetworkNodeNetworkTransmitter.java | 22 +++---- .../node/NetworkNodeSecurityManager.java | 19 +++--- .../node/NetworkNodeStorageMonitor.java | 17 +++-- .../node/NetworkNodeWirelessTransmitter.java | 4 +- .../node/diskdrive/DiskDriveNetworkNode.java | 29 ++++----- .../NetworkNodeDiskManipulator.java | 46 ++++++------- .../node/storage/FluidStorageNetworkNode.java | 4 +- .../node/storage/StorageNetworkNode.java | 4 +- .../container/CrafterManagerContainer.java | 3 +- .../inventory/fluid/FluidInventory.java | 33 ++++------ .../inventory/fluid/FluidInventoryFilter.java | 6 +- .../fluid/FluidInventoryFilterIcon.java | 6 +- .../inventory/item/BaseItemHandler.java | 25 +++---- .../inventory/item/FilterItemHandler.java | 10 ++- .../inventory/item/UpgradeItemHandler.java | 7 +- .../inventory/listener/InventoryListener.java | 5 ++ .../NetworkNodeFluidInventoryListener.java | 19 ++++++ .../NetworkNodeInventoryListener.java | 19 ++++++ .../listener/NetworkNodeListener.java | 18 ----- .../listener/TileInventoryListener.java | 19 ++++++ .../inventory/listener/TileListener.java | 18 ----- .../tile/grid/WirelessFluidGrid.java | 12 ++-- .../tile/grid/WirelessGrid.java | 12 ++-- .../tile/grid/portable/PortableGrid.java | 28 ++++---- .../tile/grid/portable/TilePortableGrid.java | 15 ++--- 35 files changed, 276 insertions(+), 282 deletions(-) create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/InventoryListener.java create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/NetworkNodeFluidInventoryListener.java create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/NetworkNodeInventoryListener.java delete mode 100644 src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/NetworkNodeListener.java create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/TileInventoryListener.java delete mode 100644 src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/TileListener.java diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/ExternalStorageNetworkNode.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/ExternalStorageNetworkNode.java index 4375d294f..144881ff0 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/ExternalStorageNetworkNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/ExternalStorageNetworkNode.java @@ -15,7 +15,8 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.FluidStorageCache; import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.ItemStorageCache; import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory; import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; -import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.raoulvdberge.refinedstorage.tile.ExternalStorageTile; import com.raoulvdberge.refinedstorage.tile.config.*; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; @@ -45,8 +46,8 @@ public class ExternalStorageNetworkNode extends NetworkNode implements IStorageP private static final String NBT_TYPE = "Type"; private static final String NBT_FLUID_FILTERS = "FluidFilters"; - private BaseItemHandler itemFilters = new BaseItemHandler(9, new NetworkNodeListener(this)); - private FluidInventory fluidFilters = new FluidInventory(9, new NetworkNodeListener(this)); + private BaseItemHandler itemFilters = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this)); + private FluidInventory fluidFilters = new FluidInventory(9).addListener(new NetworkNodeFluidInventoryListener(this)); private int priority = 0; private int compare = IComparer.COMPARE_NBT; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/GridNetworkNode.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/GridNetworkNode.java index 8680e3c93..74ab12246 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/GridNetworkNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/GridNetworkNode.java @@ -18,7 +18,8 @@ import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory; import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.FilterItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.validator.ItemValidator; -import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.raoulvdberge.refinedstorage.item.PatternItem; import com.raoulvdberge.refinedstorage.tile.config.IType; import com.raoulvdberge.refinedstorage.tile.data.TileDataManager; @@ -89,40 +90,14 @@ public class GridNetworkNode extends NetworkNode implements IGridNetworkAware, I private ICraftingRecipe currentRecipe; private CraftingInventory matrix = new CraftingInventory(craftingContainer, 3, 3); private CraftResultInventory result = new CraftResultInventory(); - private BaseItemHandler processingMatrix = new BaseItemHandler(9 * 2, new NetworkNodeListener(this)); - private FluidInventory processingMatrixFluids = new FluidInventory(9 * 2, FluidAttributes.BUCKET_VOLUME * 64, new NetworkNodeListener(this)); + private BaseItemHandler processingMatrix = new BaseItemHandler(9 * 2).addListener(new NetworkNodeInventoryListener(this)); + private FluidInventory processingMatrixFluids = new FluidInventory(9 * 2, FluidAttributes.BUCKET_VOLUME * 64).addListener(new NetworkNodeFluidInventoryListener(this)); private boolean reading; private Set craftingListeners = new HashSet<>(); - private BaseItemHandler patterns = new BaseItemHandler(2, new NetworkNodeListener(this)) { - @Override - protected void onContentsChanged(int slot) { - super.onContentsChanged(slot); - - ItemStack pattern = getStackInSlot(slot); - if (slot == 1 && !pattern.isEmpty()) { - boolean isPatternProcessing = PatternItem.isProcessing(pattern); - - if (isPatternProcessing && isProcessingPattern()) { - for (int i = 0; i < 9; ++i) { - processingMatrix.setStackInSlot(i, PatternItem.getInputSlot(pattern, i)); - processingMatrixFluids.setFluid(i, PatternItem.getFluidInputSlot(pattern, i)); - } - - for (int i = 0; i < 9; ++i) { - processingMatrix.setStackInSlot(9 + i, PatternItem.getOutputSlot(pattern, i)); - processingMatrixFluids.setFluid(9 + i, PatternItem.getFluidOutputSlot(pattern, i)); - } - } else if (!isPatternProcessing && !isProcessingPattern()) { - for (int i = 0; i < 9; ++i) { - matrix.setInventorySlotContents(i, PatternItem.getInputSlot(pattern, i)); - } - } - } - } - + private BaseItemHandler patterns = new BaseItemHandler(2) { @Override public int getSlotLimit(int slot) { return slot == 1 ? 1 : super.getSlotLimit(slot); @@ -142,10 +117,36 @@ public class GridNetworkNode extends NetworkNode implements IGridNetworkAware, I return stack; } - }.addValidator(new ItemValidator(RSItems.PATTERN)); + } + .addValidator(new ItemValidator(RSItems.PATTERN)) + .addListener(new NetworkNodeInventoryListener(this)) + .addListener(((handler, slot, reading) -> { + ItemStack pattern = handler.getStackInSlot(slot); + + if (slot == 1 && !pattern.isEmpty()) { + boolean isPatternProcessing = PatternItem.isProcessing(pattern); + + if (isPatternProcessing && isProcessingPattern()) { + for (int i = 0; i < 9; ++i) { + processingMatrix.setStackInSlot(i, PatternItem.getInputSlot(pattern, i)); + processingMatrixFluids.setFluid(i, PatternItem.getFluidInputSlot(pattern, i)); + } + + for (int i = 0; i < 9; ++i) { + processingMatrix.setStackInSlot(9 + i, PatternItem.getOutputSlot(pattern, i)); + processingMatrixFluids.setFluid(9 + i, PatternItem.getFluidOutputSlot(pattern, i)); + } + } else if (!isPatternProcessing && !isProcessingPattern()) { + for (int i = 0; i < 9; ++i) { + matrix.setInventorySlotContents(i, PatternItem.getInputSlot(pattern, i)); + } + } + } + })); + private List filters = new ArrayList<>(); private List tabs = new ArrayList<>(); - private FilterItemHandler filter = new FilterItemHandler(filters, tabs, new NetworkNodeListener(this)); + private FilterItemHandler filter = (FilterItemHandler) new FilterItemHandler(filters, tabs).addListener(new NetworkNodeInventoryListener(this)); private final GridType type; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/ImporterNetworkNode.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/ImporterNetworkNode.java index 932dcf182..e4b6e6f20 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/ImporterNetworkNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/ImporterNetworkNode.java @@ -6,7 +6,8 @@ import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory; import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler; -import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.raoulvdberge.refinedstorage.item.UpgradeItem; import com.raoulvdberge.refinedstorage.tile.DiskDriveTile; import com.raoulvdberge.refinedstorage.tile.ImporterTile; @@ -35,10 +36,10 @@ public class ImporterNetworkNode extends NetworkNode implements IComparable, IWh private static final String NBT_TYPE = "Type"; private static final String NBT_FLUID_FILTERS = "FLuidFilters"; - private BaseItemHandler itemFilters = new BaseItemHandler(9, new NetworkNodeListener(this)); - private FluidInventory fluidFilters = new FluidInventory(9, new NetworkNodeListener(this)); + private BaseItemHandler itemFilters = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this)); + private FluidInventory fluidFilters = new FluidInventory(9).addListener(new NetworkNodeFluidInventoryListener(this)); - private UpgradeItemHandler upgrades = new UpgradeItemHandler(4, new NetworkNodeListener(this), UpgradeItem.Type.SPEED, UpgradeItem.Type.STACK); + private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4, UpgradeItem.Type.SPEED, UpgradeItem.Type.STACK).addListener(new NetworkNodeInventoryListener(this)); private int compare = IComparer.COMPARE_NBT; private int mode = IWhitelistBlacklist.BLACKLIST; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeConstructor.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeConstructor.java index 06c4626b4..6538a2cbe 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeConstructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeConstructor.java @@ -8,7 +8,8 @@ import com.raoulvdberge.refinedstorage.container.slot.filter.FilterSlot; import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory; import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler; -import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.raoulvdberge.refinedstorage.item.UpgradeItem; import com.raoulvdberge.refinedstorage.tile.TileConstructor; import com.raoulvdberge.refinedstorage.tile.config.IComparable; @@ -50,10 +51,10 @@ public class NetworkNodeConstructor extends NetworkNode implements IComparable, private static final int BASE_SPEED = 20; - private BaseItemHandler itemFilters = new BaseItemHandler(1, new NetworkNodeListener(this)); - private FluidInventory fluidFilters = new FluidInventory(1, new NetworkNodeListener(this)); + private BaseItemHandler itemFilters = new BaseItemHandler(1).addListener(new NetworkNodeInventoryListener(this)); + private FluidInventory fluidFilters = new FluidInventory(1).addListener(new NetworkNodeFluidInventoryListener(this)); - private UpgradeItemHandler upgrades = new UpgradeItemHandler(4, new NetworkNodeListener(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_CRAFTING, ItemUpgrade.TYPE_STACK*/); + private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4 /* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_CRAFTING, ItemUpgrade.TYPE_STACK*/).addListener(new NetworkNodeInventoryListener(this)); private int compare = IComparer.COMPARE_NBT; private int type = IType.ITEMS; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java index 98e626c29..dac9b5227 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java @@ -10,7 +10,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.validator.PatternItemValidator; -import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.raoulvdberge.refinedstorage.item.UpgradeItem; import com.raoulvdberge.refinedstorage.util.StackUtils; import com.raoulvdberge.refinedstorage.util.WorldUtils; @@ -59,11 +59,15 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC private static final String NBT_LOCKED = "Locked"; private static final String NBT_WAS_POWERED = "WasPowered"; - private BaseItemHandler patternsInventory = new BaseItemHandler(9, new NetworkNodeListener(this)) { + private BaseItemHandler patternsInventory = new BaseItemHandler(9) { @Override - protected void onContentsChanged(int slot) { - super.onContentsChanged(slot); - + public int getSlotLimit(int slot) { + return 1; + } + } + .addValidator(new PatternItemValidator(world)) + .addListener(new NetworkNodeInventoryListener(this)) + .addListener((handler, slot, reading) -> { if (!reading) { if (!world.isRemote) { invalidate(); @@ -73,17 +77,11 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC network.getCraftingManager().rebuild(); } } - } - - @Override - public int getSlotLimit(int slot) { - return 1; - } - }.addValidator(new PatternItemValidator(world)); + }); private List patterns = new ArrayList<>(); - private UpgradeItemHandler upgrades = new UpgradeItemHandler(4, new NetworkNodeListener(this)/* TODO, ItemUpgrade.TYPE_SPEED*/); + private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4 /* TODO, ItemUpgrade.TYPE_SPEED*/).addListener(new NetworkNodeInventoryListener(this)); // Used to prevent infinite recursion on getRootContainer() when there's e.g. two crafters facing each other. private boolean visited = false; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDestructor.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDestructor.java index 808239c6e..833e3d029 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDestructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDestructor.java @@ -7,7 +7,8 @@ import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory; import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler; -import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.raoulvdberge.refinedstorage.tile.TileDestructor; import com.raoulvdberge.refinedstorage.tile.config.IComparable; import com.raoulvdberge.refinedstorage.tile.config.IType; @@ -51,10 +52,10 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I private static final int BASE_SPEED = 20; - private BaseItemHandler itemFilters = new BaseItemHandler(9, new NetworkNodeListener(this)); - private FluidInventory fluidFilters = new FluidInventory(9, new NetworkNodeListener(this)); + private BaseItemHandler itemFilters = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this)); + private FluidInventory fluidFilters = new FluidInventory(9).addListener(new NetworkNodeFluidInventoryListener(this)); - private UpgradeItemHandler upgrades = new UpgradeItemHandler(4, new NetworkNodeListener(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_SILK_TOUCH, ItemUpgrade.TYPE_FORTUNE_1, ItemUpgrade.TYPE_FORTUNE_2, ItemUpgrade.TYPE_FORTUNE_3*/); + private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4).addListener(new NetworkNodeInventoryListener(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_SILK_TOUCH, ItemUpgrade.TYPE_FORTUNE_1, ItemUpgrade.TYPE_FORTUNE_2, ItemUpgrade.TYPE_FORTUNE_3*/); private int compare = IComparer.COMPARE_NBT; private int mode = IWhitelistBlacklist.BLACKLIST; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDetector.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDetector.java index 0fea45d02..0ce387cf8 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDetector.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDetector.java @@ -6,7 +6,8 @@ import com.raoulvdberge.refinedstorage.api.network.INetwork; import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory; import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; -import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.raoulvdberge.refinedstorage.tile.TileDetector; import com.raoulvdberge.refinedstorage.tile.config.IComparable; import com.raoulvdberge.refinedstorage.tile.config.IType; @@ -37,8 +38,8 @@ public class NetworkNodeDetector extends NetworkNode implements IComparable, ITy private static final String NBT_TYPE = "Type"; private static final String NBT_FLUID_FILTERS = "FluidFilters"; - private BaseItemHandler itemFilters = new BaseItemHandler(1, new NetworkNodeListener(this)); - private FluidInventory fluidFilters = new FluidInventory(1, new NetworkNodeListener(this)); + private BaseItemHandler itemFilters = new BaseItemHandler(1).addListener(new NetworkNodeInventoryListener(this)); + private FluidInventory fluidFilters = new FluidInventory(1).addListener(new NetworkNodeFluidInventoryListener(this)); private int compare = IComparer.COMPARE_NBT; private int type = IType.ITEMS; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java index 711c763dd..b98763bc0 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java @@ -6,7 +6,8 @@ import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory; import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler; -import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.raoulvdberge.refinedstorage.item.UpgradeItem; import com.raoulvdberge.refinedstorage.tile.TileExporter; import com.raoulvdberge.refinedstorage.tile.config.IComparable; @@ -32,10 +33,10 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy private static final String NBT_TYPE = "Type"; private static final String NBT_FLUID_FILTERS = "FluidFilters"; - private BaseItemHandler itemFilters = new BaseItemHandler(9, new NetworkNodeListener(this)); - private FluidInventory fluidFilters = new FluidInventory(9, new NetworkNodeListener(this)); + private BaseItemHandler itemFilters = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this)); + private FluidInventory fluidFilters = new FluidInventory(9).addListener(new NetworkNodeFluidInventoryListener(this)); - private UpgradeItemHandler upgrades = new UpgradeItemHandler(4, new NetworkNodeListener(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_CRAFTING, ItemUpgrade.TYPE_STACK*/); + private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4 /* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_CRAFTING, ItemUpgrade.TYPE_STACK*/).addListener(new NetworkNodeInventoryListener(this)); private int compare = IComparer.COMPARE_NBT; private int type = IType.ITEMS; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidInterface.java index 43284a3f2..e6d12a857 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidInterface.java @@ -10,7 +10,8 @@ import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory; import com.raoulvdberge.refinedstorage.inventory.fluid.ProxyFluidHandler; import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler; -import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.raoulvdberge.refinedstorage.item.UpgradeItem; import com.raoulvdberge.refinedstorage.tile.TileFluidInterface; import com.raoulvdberge.refinedstorage.tile.config.IType; @@ -55,10 +56,10 @@ public class NetworkNodeFluidInterface extends NetworkNode { private ProxyFluidHandler tank = new ProxyFluidHandler(tankIn, tankOut); - private BaseItemHandler in = new BaseItemHandler(1, new NetworkNodeListener(this)).addValidator(stack -> !StackUtils.getFluid(stack, true).getValue().isEmpty()); - private FluidInventory out = new FluidInventory(1, TANK_CAPACITY, new NetworkNodeListener(this)); + private BaseItemHandler in = new BaseItemHandler(1).addListener(new NetworkNodeInventoryListener(this)).addValidator(stack -> !StackUtils.getFluid(stack, true).getValue().isEmpty()); + private FluidInventory out = new FluidInventory(1, TANK_CAPACITY).addListener(new NetworkNodeFluidInventoryListener(this)); - private UpgradeItemHandler upgrades = new UpgradeItemHandler(4, new NetworkNodeListener(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK, ItemUpgrade.TYPE_CRAFTING*/); + private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4 /* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK, ItemUpgrade.TYPE_CRAFTING*/).addListener(new NetworkNodeInventoryListener(this)); public NetworkNodeFluidInterface(World world, BlockPos pos) { super(world, pos); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java index 959052862..5f472b389 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java @@ -9,7 +9,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.externalstorage.ItemExter import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.ProxyItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler; -import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.raoulvdberge.refinedstorage.item.UpgradeItem; import com.raoulvdberge.refinedstorage.tile.config.IComparable; import com.raoulvdberge.refinedstorage.tile.config.IType; @@ -29,14 +29,14 @@ public class NetworkNodeInterface extends NetworkNode implements IComparable { private static final String NBT_COMPARE = "Compare"; - private BaseItemHandler importItems = new BaseItemHandler(9, new NetworkNodeListener(this)); + private BaseItemHandler importItems = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this)); - private BaseItemHandler exportFilterItems = new BaseItemHandler(9, new NetworkNodeListener(this)); - private BaseItemHandler exportItems = new BaseItemHandler(9, new NetworkNodeListener(this)); + private BaseItemHandler exportFilterItems = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this)); + private BaseItemHandler exportItems = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this)); private IItemHandler items = new ProxyItemHandler(importItems, exportItems); - private UpgradeItemHandler upgrades = new UpgradeItemHandler(4, new NetworkNodeListener(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK, ItemUpgrade.TYPE_CRAFTING*/); + private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4).addListener(new NetworkNodeInventoryListener(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK, ItemUpgrade.TYPE_CRAFTING*/); private int compare = IComparer.COMPARE_NBT; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeNetworkTransmitter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeNetworkTransmitter.java index 433bfa60c..bd883a0c0 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeNetworkTransmitter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeNetworkTransmitter.java @@ -5,7 +5,7 @@ import com.raoulvdberge.refinedstorage.RSItems; import com.raoulvdberge.refinedstorage.api.util.Action; import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.validator.ItemValidator; -import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.raoulvdberge.refinedstorage.util.StackUtils; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; @@ -19,12 +19,11 @@ import javax.annotation.Nullable; public class NetworkNodeNetworkTransmitter extends NetworkNode { public static final ResourceLocation ID = new ResourceLocation(RS.ID, "network_transmitter"); - private BaseItemHandler networkCard = new BaseItemHandler(1, new NetworkNodeListener(this)) { - @Override - protected void onContentsChanged(int slot) { - super.onContentsChanged(slot); - - ItemStack card = getStackInSlot(slot); + private BaseItemHandler networkCard = new BaseItemHandler(1) + .addValidator(new ItemValidator(RSItems.NETWORK_CARD)) + .addListener(new NetworkNodeInventoryListener(this)) + .addListener((handler, slot, reading) -> { + ItemStack card = handler.getStackInSlot(slot); if (card.isEmpty()) { receiver = null; @@ -36,8 +35,7 @@ public class NetworkNodeNetworkTransmitter extends NetworkNode { if (network != null) { network.getNodeGraph().invalidate(Action.PERFORM, network.world(), network.getPosition()); } - } - }.addValidator(new ItemValidator(RSItems.NETWORK_CARD)); + }); private BlockPos receiver; private int receiverDimension; @@ -120,9 +118,9 @@ public class NetworkNodeNetworkTransmitter extends NetworkNode { // TODO final World dimensionWorld = DimensionManager.getWorld(receiverDimension); - // if (dimensionWorld != null) { - // operator.apply(dimensionWorld, receiver, null); - // } + // if (dimensionWorld != null) { + // operator.apply(dimensionWorld, receiver, null); + // } } else { operator.apply(world, receiver, null); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSecurityManager.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSecurityManager.java index 184ad89c7..f87e9f445 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSecurityManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSecurityManager.java @@ -9,7 +9,7 @@ import com.raoulvdberge.refinedstorage.api.network.security.Permission; import com.raoulvdberge.refinedstorage.apiimpl.network.security.SecurityCard; import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.validator.ItemValidator; -import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.raoulvdberge.refinedstorage.item.SecurityCardItem; import com.raoulvdberge.refinedstorage.util.StackUtils; import net.minecraft.item.ItemStack; @@ -31,11 +31,10 @@ public class NetworkNodeSecurityManager extends NetworkNode implements ISecurity private List cards = new ArrayList<>(); private ISecurityCard globalCard; - private BaseItemHandler cardsInv = new BaseItemHandler(9 * 2, new NetworkNodeListener(this)) { - @Override - protected void onContentsChanged(int slot) { - super.onContentsChanged(slot); - + private BaseItemHandler cardsInv = new BaseItemHandler(9 * 2) + .addValidator(new ItemValidator(RSItems.SECURITY_CARD)) + .addListener(new NetworkNodeInventoryListener(this)) + .addListener(((handler, slot, reading) -> { if (!world.isRemote) { invalidate(); } @@ -43,9 +42,11 @@ public class NetworkNodeSecurityManager extends NetworkNode implements ISecurity if (network != null) { network.getSecurityManager().invalidate(); } - } - }.addValidator(new ItemValidator(RSItems.SECURITY_CARD)); - private BaseItemHandler editCard = new BaseItemHandler(1, new NetworkNodeListener(this)).addValidator(new ItemValidator(RSItems.SECURITY_CARD)); + })); + + private BaseItemHandler editCard = new BaseItemHandler(1) + .addValidator(new ItemValidator(RSItems.SECURITY_CARD)) + .addListener(new NetworkNodeInventoryListener(this)); public NetworkNodeSecurityManager(World world, BlockPos pos) { super(world, pos); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeStorageMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeStorageMonitor.java index ec6e331ce..c73038e8c 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeStorageMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeStorageMonitor.java @@ -6,7 +6,7 @@ import com.raoulvdberge.refinedstorage.api.util.Action; import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; -import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.raoulvdberge.refinedstorage.tile.config.IComparable; import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode; import com.raoulvdberge.refinedstorage.util.StackUtils; @@ -31,14 +31,13 @@ public class NetworkNodeStorageMonitor extends NetworkNode implements IComparabl private static final String NBT_COMPARE = "Compare"; - private BaseItemHandler itemFilter = new BaseItemHandler(1, new NetworkNodeListener(this)) { - @Override - public void onContentsChanged(int slot) { - super.onContentsChanged(slot); - - WorldUtils.updateBlock(world, pos); - } - }; + private BaseItemHandler itemFilter = new BaseItemHandler(1) + .addListener(new NetworkNodeInventoryListener(this)) + .addListener((handler, slot, reading) -> { + if (!reading) { + WorldUtils.updateBlock(world, pos); + } + }); private Map> deposits = new HashMap<>(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWirelessTransmitter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWirelessTransmitter.java index 990e77b7c..997549e57 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWirelessTransmitter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWirelessTransmitter.java @@ -4,7 +4,7 @@ import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.api.network.IWirelessTransmitter; import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler; -import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.raoulvdberge.refinedstorage.item.UpgradeItem; import com.raoulvdberge.refinedstorage.util.StackUtils; import net.minecraft.nbt.CompoundNBT; @@ -19,7 +19,7 @@ import javax.annotation.Nullable; public class NetworkNodeWirelessTransmitter extends NetworkNode implements IWirelessTransmitter { public static final ResourceLocation ID = new ResourceLocation(RS.ID, "wireless_transmitter"); - private UpgradeItemHandler upgrades = new UpgradeItemHandler(4, new NetworkNodeListener(this)/* TODO , ItemUpgrade.TYPE_RANGE*/); + private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4 /* TODO , ItemUpgrade.TYPE_RANGE*/).addListener(new NetworkNodeInventoryListener(this)); public NetworkNodeWirelessTransmitter(World world, BlockPos pos) { super(world, pos); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/DiskDriveNetworkNode.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/DiskDriveNetworkNode.java index c5090cbdc..5b9d46433 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/DiskDriveNetworkNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/DiskDriveNetworkNode.java @@ -14,7 +14,8 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.ItemStorageCache; import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory; import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.validator.StorageDiskItemValidator; -import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.raoulvdberge.refinedstorage.tile.DiskDriveTile; import com.raoulvdberge.refinedstorage.tile.config.*; import com.raoulvdberge.refinedstorage.util.AccessTypeUtils; @@ -66,15 +67,20 @@ public class DiskDriveNetworkNode extends NetworkNode implements IStorageProvide private int ticksSinceBlockUpdateRequested; private boolean blockUpdateRequested; - private BaseItemHandler disks = new BaseItemHandler(8, new NetworkNodeListener(this)) { - @Override - protected void onContentsChanged(int slot) { - super.onContentsChanged(slot); + private BaseItemHandler itemFilters = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this)); + private FluidInventory fluidFilters = new FluidInventory(9).addListener(new NetworkNodeFluidInventoryListener(this)); + private IStorageDisk[] itemDisks = new IStorageDisk[8]; + private IStorageDisk[] fluidDisks = new IStorageDisk[8]; + + private BaseItemHandler disks = new BaseItemHandler(8) + .addValidator(new StorageDiskItemValidator()) + .addListener(new NetworkNodeInventoryListener(this)) + .addListener((handler, slot, reading) -> { if (!world.isRemote) { StackUtils.createStorages( (ServerWorld) world, - getStackInSlot(slot), + handler.getStackInSlot(slot), slot, itemDisks, fluidDisks, @@ -87,18 +93,11 @@ public class DiskDriveNetworkNode extends NetworkNode implements IStorageProvide network.getFluidStorageCache().invalidate(); } - if (!isReading()) { + if (!reading) { WorldUtils.updateBlock(world, pos); } } - } - }.addValidator(new StorageDiskItemValidator()); - - private BaseItemHandler itemFilters = new BaseItemHandler(9, new NetworkNodeListener(this)); - private FluidInventory fluidFilters = new FluidInventory(9, new NetworkNodeListener(this)); - - private IStorageDisk[] itemDisks = new IStorageDisk[8]; - private IStorageDisk[] fluidDisks = new IStorageDisk[8]; + }); private AccessType accessType = AccessType.INSERT_EXTRACT; private int priority = 0; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/NetworkNodeDiskManipulator.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/NetworkNodeDiskManipulator.java index 2b0b9f953..ccaf1fcd6 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/NetworkNodeDiskManipulator.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskmanipulator/NetworkNodeDiskManipulator.java @@ -13,7 +13,9 @@ import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.ProxyItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.validator.StorageDiskItemValidator; -import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; +import com.raoulvdberge.refinedstorage.item.UpgradeItem; import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator; import com.raoulvdberge.refinedstorage.tile.config.IComparable; import com.raoulvdberge.refinedstorage.tile.config.IType; @@ -28,8 +30,6 @@ import net.minecraft.world.World; import net.minecraft.world.server.ServerWorld; import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fml.LogicalSide; -import net.minecraftforge.fml.common.thread.EffectiveSide; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.wrapper.CombinedInvWrapper; @@ -58,7 +58,7 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab private IStorageDisk[] itemDisks = new IStorageDisk[6]; private IStorageDisk[] fluidDisks = new IStorageDisk[6]; - private UpgradeItemHandler upgrades = new UpgradeItemHandler(4, new NetworkNodeListener(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK*/) { + private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4, UpgradeItem.Type.SPEED, UpgradeItem.Type.STACK) { @Override public int getStackInteractCount() { int count = super.getStackInteractCount(); @@ -69,17 +69,16 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab return count; } - }; + }.addListener(new NetworkNodeInventoryListener(this)); - private BaseItemHandler inputDisks = new BaseItemHandler(3, new NetworkNodeListener(this)) { - @Override - protected void onContentsChanged(int slot) { - super.onContentsChanged(slot); - - if (EffectiveSide.get() == LogicalSide.SERVER) { // TODO: correct? + private BaseItemHandler inputDisks = new BaseItemHandler(3) + .addValidator(new StorageDiskItemValidator()) + .addListener(new NetworkNodeInventoryListener(this)) + .addListener((handler, slot, reading) -> { + if (!world.isRemote) { StackUtils.createStorages( (ServerWorld) world, - getStackInSlot(slot), + handler.getStackInSlot(slot), slot, itemDisks, fluidDisks, @@ -89,18 +88,16 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab WorldUtils.updateBlock(world, pos); } - } - }.addValidator(new StorageDiskItemValidator()); + }); - private BaseItemHandler outputDisks = new BaseItemHandler(3, new NetworkNodeListener(this)) { - @Override - protected void onContentsChanged(int slot) { - super.onContentsChanged(slot); - - if (EffectiveSide.get() == LogicalSide.SERVER) { // TODO: correct? + private BaseItemHandler outputDisks = new BaseItemHandler(3) + .addValidator(new StorageDiskItemValidator()) + .addListener(new NetworkNodeInventoryListener(this)) + .addListener(((handler, slot, reading) -> { + if (!world.isRemote) { StackUtils.createStorages( (ServerWorld) world, - getStackInSlot(slot), + handler.getStackInSlot(slot), 3 + slot, itemDisks, fluidDisks, @@ -110,8 +107,7 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab WorldUtils.updateBlock(world, pos); } - } - }.addValidator(new StorageDiskItemValidator()); + })); private ProxyItemHandler disks = new ProxyItemHandler(inputDisks, outputDisks); @@ -119,8 +115,8 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab super(world, pos); } - private BaseItemHandler itemFilters = new BaseItemHandler(9, new NetworkNodeListener(this)); - private FluidInventory fluidFilters = new FluidInventory(9, new NetworkNodeListener(this)); + private BaseItemHandler itemFilters = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this)); + private FluidInventory fluidFilters = new FluidInventory(9).addListener(new NetworkNodeFluidInventoryListener(this)); @Override public int getEnergyUsage() { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/FluidStorageNetworkNode.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/FluidStorageNetworkNode.java index ff4009f1c..cdd21579d 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/FluidStorageNetworkNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/FluidStorageNetworkNode.java @@ -14,7 +14,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode; import com.raoulvdberge.refinedstorage.apiimpl.storage.FluidStorageType; import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.FluidStorageCache; import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory; -import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener; import com.raoulvdberge.refinedstorage.tile.FluidStorageTile; import com.raoulvdberge.refinedstorage.tile.config.IAccessType; import com.raoulvdberge.refinedstorage.tile.config.IComparable; @@ -49,7 +49,7 @@ public class FluidStorageNetworkNode extends NetworkNode implements IStorageScre private static final String NBT_FILTERS = "Filters"; public static final String NBT_ID = "Id"; - private FluidInventory filters = new FluidInventory(9, new NetworkNodeListener(this)); + private FluidInventory filters = new FluidInventory(9).addListener(new NetworkNodeFluidInventoryListener(this)); private FluidStorageType type; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/StorageNetworkNode.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/StorageNetworkNode.java index 9b787f950..495201c7c 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/StorageNetworkNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/storage/StorageNetworkNode.java @@ -14,7 +14,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode; import com.raoulvdberge.refinedstorage.apiimpl.storage.ItemStorageType; import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.ItemStorageCache; import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; -import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener; +import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.raoulvdberge.refinedstorage.tile.StorageTile; import com.raoulvdberge.refinedstorage.tile.config.IAccessType; import com.raoulvdberge.refinedstorage.tile.config.IComparable; @@ -49,7 +49,7 @@ public class StorageNetworkNode extends NetworkNode implements IStorageScreen, I private static final String NBT_MODE = "Mode"; public static final String NBT_ID = "Id"; - private BaseItemHandler filters = new BaseItemHandler(9, new NetworkNodeListener(this)); + private BaseItemHandler filters = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this)); private final ItemStorageType type; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/CrafterManagerContainer.java b/src/main/java/com/raoulvdberge/refinedstorage/container/CrafterManagerContainer.java index 47460368d..69101f8f7 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/CrafterManagerContainer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/CrafterManagerContainer.java @@ -134,8 +134,7 @@ public class CrafterManagerContainer extends BaseContainer { if (newContainerData == null) { // We're only resizing, get the previous inventory... dummy = dummyInventories.get(category.getKey()); } else { - dummyInventories.put(category.getKey(), dummy = new BaseItemHandler(category.getValue(), slot -> { - }) { + dummyInventories.put(category.getKey(), dummy = new BaseItemHandler(category.getValue()) { @Override public int getSlotLimit(int slot) { return 1; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/fluid/FluidInventory.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/fluid/FluidInventory.java index c1fd462e9..4337547f2 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/inventory/fluid/FluidInventory.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/inventory/fluid/FluidInventory.java @@ -1,23 +1,23 @@ package com.raoulvdberge.refinedstorage.inventory.fluid; +import com.raoulvdberge.refinedstorage.inventory.listener.InventoryListener; import net.minecraft.nbt.CompoundNBT; import net.minecraftforge.fluids.FluidStack; import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.util.function.Consumer; +import java.util.ArrayList; +import java.util.List; public class FluidInventory { private static final String NBT_SLOT = "Slot_%d"; + private final List> listeners = new ArrayList<>(); + private FluidStack[] fluids; private int maxAmount; private boolean empty = true; - @Nullable - protected Consumer listener; - - public FluidInventory(int size, int maxAmount, @Nullable Consumer listener) { + public FluidInventory(int size, int maxAmount) { this.fluids = new FluidStack[size]; for (int i = 0; i < size; ++i) { @@ -25,15 +25,16 @@ public class FluidInventory { } this.maxAmount = maxAmount; - this.listener = listener; - } - - public FluidInventory(int size, @Nullable Consumer listener) { - this(size, Integer.MAX_VALUE, listener); } public FluidInventory(int size) { - this(size, Integer.MAX_VALUE, null); + this(size, Integer.MAX_VALUE); + } + + public FluidInventory addListener(InventoryListener listener) { + listeners.add(listener); + + return this; } public int getSlots() { @@ -54,19 +55,13 @@ public class FluidInventory { } public void setFluid(int slot, @Nonnull FluidStack stack) { - if (stack == null) { - throw new IllegalArgumentException("Stack can't be null"); - } - if (stack.getAmount() > maxAmount) { throw new IllegalArgumentException("Fluid size is invalid (given: " + stack.getAmount() + ", max size: " + maxAmount + ")"); } fluids[slot] = stack; - if (listener != null) { - listener.accept(slot); - } + listeners.forEach(l -> l.onChanged(this, slot, false)); updateEmptyState(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/fluid/FluidInventoryFilter.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/fluid/FluidInventoryFilter.java index f8f80199d..a75e30b94 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/inventory/fluid/FluidInventoryFilter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/inventory/fluid/FluidInventoryFilter.java @@ -8,15 +8,15 @@ import net.minecraftforge.fluids.FluidStack; public class FluidInventoryFilter extends FluidInventory { public FluidInventoryFilter(ItemStack stack) { - super(27, Integer.MAX_VALUE, null); + super(27, Integer.MAX_VALUE); - this.listener = slot -> { + this.addListener((handler, slot, reading) -> { if (!stack.hasTag()) { stack.setTag(new CompoundNBT()); } stack.getTag().put(FilterItem.NBT_FLUID_FILTERS, writeToNbt()); - }; + }); if (stack.hasTag() && stack.getTag().contains(FilterItem.NBT_FLUID_FILTERS)) { readFromNbt(stack.getTag().getCompound(FilterItem.NBT_FLUID_FILTERS)); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/fluid/FluidInventoryFilterIcon.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/fluid/FluidInventoryFilterIcon.java index affd53c56..0f01ace10 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/inventory/fluid/FluidInventoryFilterIcon.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/inventory/fluid/FluidInventoryFilterIcon.java @@ -7,15 +7,15 @@ import net.minecraftforge.fluids.FluidStack; public class FluidInventoryFilterIcon extends FluidInventory { public FluidInventoryFilterIcon(ItemStack stack) { - super(1, Integer.MAX_VALUE, null); + super(1, Integer.MAX_VALUE); - this.listener = slot -> { + this.addListener((handler, slot, reading) -> { if (!stack.hasTag()) { stack.setTag(new CompoundNBT()); } FilterItem.setFluidIcon(stack, getFluid(slot)); - }; + }); FluidStack icon = FilterItem.getFluidIcon(stack); if (icon != null) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/item/BaseItemHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/item/BaseItemHandler.java index ec06850c9..023c72856 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/inventory/item/BaseItemHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/inventory/item/BaseItemHandler.java @@ -1,28 +1,24 @@ package com.raoulvdberge.refinedstorage.inventory.item; +import com.raoulvdberge.refinedstorage.inventory.listener.InventoryListener; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraftforge.items.ItemStackHandler; import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; -import java.util.function.Consumer; import java.util.function.Predicate; -// TODO Builder system for server and clientside listeners. public class BaseItemHandler extends ItemStackHandler { - private final Consumer listener; + private final List> listeners = new ArrayList<>(); private final List> validators = new ArrayList<>(); private boolean empty = true; private boolean reading; - public BaseItemHandler(int size, @Nullable Consumer listener) { + public BaseItemHandler(int size) { super(size); - - this.listener = listener; } public BaseItemHandler addValidator(Predicate validator) { @@ -31,6 +27,12 @@ public class BaseItemHandler extends ItemStackHandler { return this; } + public BaseItemHandler addListener(InventoryListener listener) { + listeners.add(listener); + + return this; + } + @Override @Nonnull public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) { @@ -51,11 +53,8 @@ public class BaseItemHandler extends ItemStackHandler { protected void onContentsChanged(int slot) { super.onContentsChanged(slot); - if (!reading && listener != null) { - listener.accept(slot); - } - this.empty = stacks.stream().allMatch(ItemStack::isEmpty); + this.listeners.forEach(l -> l.onChanged(this, slot, reading)); } @Override @@ -72,8 +71,4 @@ public class BaseItemHandler extends ItemStackHandler { public void setReading(boolean reading) { this.reading = reading; } - - public boolean isReading() { - return reading; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/item/FilterItemHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/item/FilterItemHandler.java index 74ec6b2b8..8879d6ccd 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/inventory/item/FilterItemHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/inventory/item/FilterItemHandler.java @@ -16,22 +16,20 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fml.LogicalSide; import net.minecraftforge.fml.common.thread.EffectiveSide; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; -import java.util.function.Consumer; public class FilterItemHandler extends BaseItemHandler { private List filters; private List tabs; - public FilterItemHandler(List filters, List tabs, @Nullable Consumer listener) { - super(4, listener); - - this.addValidator(new ItemValidator(RSItems.FILTER)); + public FilterItemHandler(List filters, List tabs) { + super(4); this.filters = filters; this.tabs = tabs; + + this.addValidator(new ItemValidator(RSItems.FILTER)); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/item/UpgradeItemHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/item/UpgradeItemHandler.java index cc849f680..4b4072886 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/inventory/item/UpgradeItemHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/inventory/item/UpgradeItemHandler.java @@ -4,12 +4,9 @@ import com.raoulvdberge.refinedstorage.inventory.item.validator.UpgradeItemValid import com.raoulvdberge.refinedstorage.item.UpgradeItem; import net.minecraft.item.ItemStack; -import javax.annotation.Nullable; -import java.util.function.Consumer; - public class UpgradeItemHandler extends BaseItemHandler { - public UpgradeItemHandler(int size, @Nullable Consumer listener, UpgradeItem.Type... supportedUpgrades) { - super(size, listener); + public UpgradeItemHandler(int size, UpgradeItem.Type... supportedUpgrades) { + super(size); for (int i = 0; i < supportedUpgrades.length; ++i) { addValidator(new UpgradeItemValidator(supportedUpgrades[i])); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/InventoryListener.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/InventoryListener.java new file mode 100644 index 000000000..999fd074e --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/InventoryListener.java @@ -0,0 +1,5 @@ +package com.raoulvdberge.refinedstorage.inventory.listener; + +public interface InventoryListener { + void onChanged(T handler, int slot, boolean reading); +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/NetworkNodeFluidInventoryListener.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/NetworkNodeFluidInventoryListener.java new file mode 100644 index 000000000..2bd4b5a89 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/NetworkNodeFluidInventoryListener.java @@ -0,0 +1,19 @@ +package com.raoulvdberge.refinedstorage.inventory.listener; + +import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; +import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory; + +public class NetworkNodeFluidInventoryListener implements InventoryListener { + private INetworkNode node; + + public NetworkNodeFluidInventoryListener(INetworkNode node) { + this.node = node; + } + + @Override + public void onChanged(FluidInventory handler, int slot, boolean reading) { + if (!reading) { + node.markDirty(); + } + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/NetworkNodeInventoryListener.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/NetworkNodeInventoryListener.java new file mode 100644 index 000000000..bc53c4c1f --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/NetworkNodeInventoryListener.java @@ -0,0 +1,19 @@ +package com.raoulvdberge.refinedstorage.inventory.listener; + +import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; +import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; + +public class NetworkNodeInventoryListener implements InventoryListener { + private INetworkNode node; + + public NetworkNodeInventoryListener(INetworkNode node) { + this.node = node; + } + + @Override + public void onChanged(BaseItemHandler handler, int slot, boolean reading) { + if (!reading) { + node.markDirty(); + } + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/NetworkNodeListener.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/NetworkNodeListener.java deleted file mode 100644 index 6919a180c..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/NetworkNodeListener.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.raoulvdberge.refinedstorage.inventory.listener; - -import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; - -import java.util.function.Consumer; - -public class NetworkNodeListener implements Consumer { - private INetworkNode node; - - public NetworkNodeListener(INetworkNode node) { - this.node = node; - } - - @Override - public void accept(Integer slot) { - node.markDirty(); - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/TileInventoryListener.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/TileInventoryListener.java new file mode 100644 index 000000000..1f336bd01 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/TileInventoryListener.java @@ -0,0 +1,19 @@ +package com.raoulvdberge.refinedstorage.inventory.listener; + +import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; +import net.minecraft.tileentity.TileEntity; + +public class TileInventoryListener implements InventoryListener { + private TileEntity tile; + + public TileInventoryListener(TileEntity tile) { + this.tile = tile; + } + + @Override + public void onChanged(BaseItemHandler handler, int slot, boolean reading) { + if (!reading) { + tile.markDirty(); + } + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/TileListener.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/TileListener.java deleted file mode 100644 index b769cfcca..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/inventory/listener/TileListener.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.raoulvdberge.refinedstorage.inventory.listener; - -import net.minecraft.tileentity.TileEntity; - -import java.util.function.Consumer; - -public class TileListener implements Consumer { - private TileEntity tile; - - public TileListener(TileEntity tile) { - this.tile = tile; - } - - @Override - public void accept(Integer slot) { - tile.markDirty(); - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessFluidGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessFluidGrid.java index 6b53e448a..18119c1a8 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessFluidGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessFluidGrid.java @@ -47,18 +47,14 @@ public class WirelessFluidGrid implements IGridNetworkAware { private List filters = new ArrayList<>(); private List tabs = new ArrayList<>(); - private FilterItemHandler filter = new FilterItemHandler(filters, tabs, null) { - @Override - protected void onContentsChanged(int slot) { - super.onContentsChanged(slot); - + private FilterItemHandler filter = (FilterItemHandler) new FilterItemHandler(filters, tabs) + .addListener(((handler, slot, reading) -> { if (!stack.hasTag()) { stack.setTag(new CompoundNBT()); } - StackUtils.writeItems(this, 0, stack.getTag()); - } - }; + StackUtils.writeItems(handler, 0, stack.getTag()); + })); public WirelessFluidGrid(ItemStack stack) { /* TODO this.networkDimension = ItemWirelessFluidGrid.getDimensionId(stack); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessGrid.java index 2335e1663..f3e6dbed3 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessGrid.java @@ -47,18 +47,14 @@ public class WirelessGrid implements IGridNetworkAware { private List filters = new ArrayList<>(); private List tabs = new ArrayList<>(); - private FilterItemHandler filter = new FilterItemHandler(filters, tabs, null) { - @Override - protected void onContentsChanged(int slot) { - super.onContentsChanged(slot); - + private FilterItemHandler filter = (FilterItemHandler) new FilterItemHandler(filters, tabs) + .addListener((handler, slot, reading) -> { if (!stack.hasTag()) { stack.setTag(new CompoundNBT()); } - StackUtils.writeItems(this, 0, stack.getTag()); - } - }; + StackUtils.writeItems(handler, 0, stack.getTag()); + }); public WirelessGrid(ItemStack stack) { /* TODO this.networkDimension = ItemWirelessGrid.getDimensionId(stack); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/PortableGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/PortableGrid.java index 35767be7d..59452483e 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/PortableGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/PortableGrid.java @@ -79,26 +79,21 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer private List filters = new ArrayList<>(); private List tabs = new ArrayList<>(); - private FilterItemHandler filter = new FilterItemHandler(filters, tabs, null) { - @Override - protected void onContentsChanged(int slot) { - super.onContentsChanged(slot); + private FilterItemHandler filter = (FilterItemHandler) new FilterItemHandler(filters, tabs) + .addListener((handler, slot, reading) -> { if (!stack.hasTag()) { stack.setTag(new CompoundNBT()); } - StackUtils.writeItems(this, 0, stack.getTag()); - } - }; - private BaseItemHandler disk = new BaseItemHandler(1, slot -> { - }) { - @Override - protected void onContentsChanged(int slot) { - super.onContentsChanged(slot); + StackUtils.writeItems(handler, 0, stack.getTag()); + }); - if (/*TODO FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER*/false) { - ItemStack diskStack = getStackInSlot(slot); + private BaseItemHandler disk = new BaseItemHandler(1) + .addValidator(new StorageDiskItemValidator()) + .addListener(((handler, slot, reading) -> { + if (!player.world.isRemote) { + ItemStack diskStack = handler.getStackInSlot(slot); if (diskStack.isEmpty()) { storage = null; @@ -131,10 +126,9 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer cache.invalidate(); } - StackUtils.writeItems(this, 4, stack.getTag()); + StackUtils.writeItems(handler, 4, stack.getTag()); } - } - }.addValidator(new StorageDiskItemValidator()); + })); public PortableGrid(PlayerEntity player, ItemStack stack) { this.player = player; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java index 3b9192128..9d6047461 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java @@ -37,7 +37,7 @@ import com.raoulvdberge.refinedstorage.block.enums.PortableGridType; import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.FilterItemHandler; import com.raoulvdberge.refinedstorage.inventory.item.validator.StorageDiskItemValidator; -import com.raoulvdberge.refinedstorage.inventory.listener.TileListener; +import com.raoulvdberge.refinedstorage.inventory.listener.TileInventoryListener; import com.raoulvdberge.refinedstorage.screen.BaseScreen; import com.raoulvdberge.refinedstorage.screen.grid.GridScreen; import com.raoulvdberge.refinedstorage.tile.BaseTile; @@ -139,17 +139,16 @@ public class TilePortableGrid extends BaseTile implements IGrid, IPortableGrid, private List filters = new ArrayList<>(); private List tabs = new ArrayList<>(); - private FilterItemHandler filter = new FilterItemHandler(filters, tabs, new TileListener(this)); - private BaseItemHandler disk = new BaseItemHandler(1, new TileListener(this)) { - @Override - protected void onContentsChanged(int slot) { - super.onContentsChanged(slot); + private FilterItemHandler filter = (FilterItemHandler) new FilterItemHandler(filters, tabs).addListener(new TileInventoryListener(this)); + private BaseItemHandler disk = new BaseItemHandler(1) + .addValidator(new StorageDiskItemValidator()) + .addListener(new TileInventoryListener(this)) + .addListener((handler, slot, reading) -> { if (world != null && !world.isRemote) { loadStorage(); } - } - }.addValidator(new StorageDiskItemValidator()); + }); @Nullable private IStorageDisk storage;