From d82cdabc6deaaceb211e49782ef8abe338e691a2 Mon Sep 17 00:00:00 2001 From: NotMyWing Date: Sat, 25 May 2024 00:37:46 +1100 Subject: [PATCH] Fix crafting plan reporting invisible extractable items as available Closes #438 --- .../implementations/ContainerCraftConfirm.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/appeng/container/implementations/ContainerCraftConfirm.java b/src/main/java/appeng/container/implementations/ContainerCraftConfirm.java index c2fb67792..9d2ad43f3 100644 --- a/src/main/java/appeng/container/implementations/ContainerCraftConfirm.java +++ b/src/main/java/appeng/container/implementations/ContainerCraftConfirm.java @@ -31,7 +31,7 @@ import appeng.api.networking.crafting.ICraftingLink; import appeng.api.networking.security.IActionHost; import appeng.api.networking.security.IActionSource; import appeng.api.networking.storage.IStorageGrid; -import appeng.api.storage.IMEInventory; +import appeng.api.storage.IMEMonitor; import appeng.api.storage.ITerminalHost; import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.data.IAEItemStack; @@ -213,12 +213,16 @@ public class ContainerCraftConfirm extends AEBaseContainer { p.setStackSize(out.getCountRequestable()); final IStorageGrid sg = grid.getCache(IStorageGrid.class); - final IMEInventory items = sg.getInventory(AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class)); + final IMEMonitor items = sg.getInventory(AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class)); IAEItemStack m = null; if (c != null && this.result.isSimulation()) { m = o.copy(); - o = items.extractItems(o, Actionable.SIMULATE, this.getActionSource()); + if (items.getStorageList().findPrecise(o) != null) { + o = items.extractItems(o, Actionable.SIMULATE, this.getActionSource()); + } else { + o = null; + } if (o == null) { o = m.copy(); @@ -330,8 +334,7 @@ public class ContainerCraftConfirm extends AEBaseContainer { if (te != null) { Platform.openGUI(this.getInventoryPlayer().player, te, this.getOpenContext().getSide(), originalGui); } else { - if (ah instanceof IInventorySlotAware) { - IInventorySlotAware i = ((IInventorySlotAware) ah); + if (ah instanceof IInventorySlotAware i) { Platform.openGUI(this.getInventoryPlayer().player, i.getInventorySlot(), originalGui, i.isBaubleSlot()); } }