From 2686143de35992794900654a4a7afbec1a38815e Mon Sep 17 00:00:00 2001 From: Buuz135 Date: Fri, 19 Aug 2022 19:23:22 +0200 Subject: [PATCH] Fixed drawer controllers not being aware of void drawer slot changes, closes #73 --- .../block/tile/ControllableDrawerTile.java | 10 ++++++++-- .../block/tile/DrawerControllerTile.java | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/buuz135/functionalstorage/block/tile/ControllableDrawerTile.java b/src/main/java/com/buuz135/functionalstorage/block/tile/ControllableDrawerTile.java index 86c194f..ff3bf05 100644 --- a/src/main/java/com/buuz135/functionalstorage/block/tile/ControllableDrawerTile.java +++ b/src/main/java/com/buuz135/functionalstorage/block/tile/ControllableDrawerTile.java @@ -98,8 +98,14 @@ public abstract class ControllableDrawerTile this.addInventory((InventoryComponent) this.storageUpgrades); } this.addInventory((InventoryComponent) (this.utilityUpgrades = new InventoryComponent>("utility_upgrades", 114, 70, 3) - .setInputFilter((stack, integer) -> stack.getItem() instanceof UpgradeItem && ((UpgradeItem) stack.getItem()).getType() == UpgradeItem.Type.UTILITY) - .setSlotLimit(1)) + .setInputFilter((stack, integer) -> stack.getItem() instanceof UpgradeItem && ((UpgradeItem) stack.getItem()).getType() == UpgradeItem.Type.UTILITY) + .setSlotLimit(1) + .setOnSlotChanged((itemStack, integer) -> { + if (controllerPos != null && this.level.getBlockEntity(controllerPos) instanceof DrawerControllerTile controllerTile) { + controllerTile.getConnectedDrawers().rebuild(); + } + }) + ) ); } diff --git a/src/main/java/com/buuz135/functionalstorage/block/tile/DrawerControllerTile.java b/src/main/java/com/buuz135/functionalstorage/block/tile/DrawerControllerTile.java index a04c7c1..1b32726 100644 --- a/src/main/java/com/buuz135/functionalstorage/block/tile/DrawerControllerTile.java +++ b/src/main/java/com/buuz135/functionalstorage/block/tile/DrawerControllerTile.java @@ -214,7 +214,7 @@ public class DrawerControllerTile extends ControllableDrawerTile(); if (level != null && !level.isClientSide()) { for (Long connectedDrawer : this.connectedDrawers) {