From c5bb06f216c449a548c572adf09f8aaf0ae5912d Mon Sep 17 00:00:00 2001 From: Yang Xizhi <60341015+GlodBlock@users.noreply.github.com> Date: Tue, 18 Oct 2022 01:08:20 +0800 Subject: [PATCH] add blacklist for appeng ghost item compact (#6) --- .../net/bdew/neiaddons/appeng/AddonAppeng.java | 12 ++++++++++++ .../bdew/neiaddons/appeng/AppEngGuiHandler.java | 16 ++++++++++++---- .../appeng/SetFakeSlotCommandHandler.java | 4 ++-- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/main/scala/net/bdew/neiaddons/appeng/AddonAppeng.java b/src/main/scala/net/bdew/neiaddons/appeng/AddonAppeng.java index 0476f7d..1fab3f0 100644 --- a/src/main/scala/net/bdew/neiaddons/appeng/AddonAppeng.java +++ b/src/main/scala/net/bdew/neiaddons/appeng/AddonAppeng.java @@ -35,6 +35,7 @@ public class AddonAppeng extends BaseAddon { public static AddonAppeng instance; public static final String setWorkbenchCommand = "SetAE2FakeSlot"; + public static String[] blackListGuiName; public static Class clsBaseGui; public static Class clsBaseContainer; @@ -60,6 +61,17 @@ public void preInit(FMLPreInitializationEvent ev) { @Override public void init(Side side) throws Exception { try { + blackListGuiName = NEIAddons.config + .get( + getName(), + "Blacklist Gui Class Name", + new String[] { + "com.glodblock.github.client.gui.GuiFluidPatternTerminal", + "com.glodblock.github.client.gui.GuiFluidPatternTerminalEx" + }, + "These Gui won't have the NEI drag item handler from NEI addon.") + .getStringList(); + clsBaseContainer = Utils.getAndCheckClass("appeng.container.AEBaseContainer", Container.class); clsSlotFake = Utils.getAndCheckClass("appeng.container.slot.SlotFake", Slot.class); mSlotFakeIsEnabled = clsSlotFake.getMethod("isEnabled"); diff --git a/src/main/scala/net/bdew/neiaddons/appeng/AppEngGuiHandler.java b/src/main/scala/net/bdew/neiaddons/appeng/AppEngGuiHandler.java index 31e0669..7e671fd 100644 --- a/src/main/scala/net/bdew/neiaddons/appeng/AppEngGuiHandler.java +++ b/src/main/scala/net/bdew/neiaddons/appeng/AppEngGuiHandler.java @@ -24,12 +24,10 @@ public class AppEngGuiHandler extends INEIGuiAdapter { @Override public boolean handleDragNDrop(GuiContainer gui, int mouseX, int mouseY, ItemStack draggedStack, int button) { - if (AddonAppeng.clsBaseGui.isInstance(gui)) { + if (AddonAppeng.clsBaseGui.isInstance(gui) && !checkBlacklist(gui)) { final Slot currentSlot = getSlotAtPosition(gui, mouseX, mouseY); - if (currentSlot != null - && AddonAppeng.clsSlotFake.isInstance(currentSlot) - && SlotHelper.isSlotEnabled(currentSlot)) { + if (AddonAppeng.clsSlotFake.isInstance(currentSlot) && SlotHelper.isSlotEnabled(currentSlot)) { if (ClientHandler.enabledCommands.contains(AddonAppeng.setWorkbenchCommand)) { final ItemStack stack = draggedStack.copy(); @@ -59,6 +57,16 @@ public boolean handleDragNDrop(GuiContainer gui, int mouseX, int mouseY, ItemSta return super.handleDragNDrop(gui, mouseX, mouseY, draggedStack, button); } + private boolean checkBlacklist(GuiContainer gui) { + String name = gui.getClass().getName(); + for (String blacklist : AddonAppeng.blackListGuiName) { + if (blacklist.equals(name)) { + return true; + } + } + return false; + } + private boolean isMouseOverSlot(GuiContainer gui, Slot slot, int mouseX, int mouseY) { int slotX = slot.xDisplayPosition; int slotY = slot.yDisplayPosition; diff --git a/src/main/scala/net/bdew/neiaddons/appeng/SetFakeSlotCommandHandler.java b/src/main/scala/net/bdew/neiaddons/appeng/SetFakeSlotCommandHandler.java index 2fbe266..81354dc 100644 --- a/src/main/scala/net/bdew/neiaddons/appeng/SetFakeSlotCommandHandler.java +++ b/src/main/scala/net/bdew/neiaddons/appeng/SetFakeSlotCommandHandler.java @@ -22,9 +22,9 @@ public void handle(NBTTagCompound data, EntityPlayerMP player) { ItemStack stack = ItemStack.loadItemStackFromNBT(data.getCompoundTag("item")); int slotNum = data.getInteger("slot"); Container cont = player.openContainer; - if ((cont != null) && AddonAppeng.clsBaseContainer.isInstance(cont)) { + if (AddonAppeng.clsBaseContainer.isInstance(cont)) { Slot slot = cont.getSlot(slotNum); - if ((slot != null) && AddonAppeng.clsSlotFake.isInstance(slot) && SlotHelper.isSlotEnabled(slot)) { + if (AddonAppeng.clsSlotFake.isInstance(slot) && SlotHelper.isSlotEnabled(slot)) { ItemStack targetStack = slot.getStack(); if (null != targetStack && !data.getBoolean("replace") && stack.isItemEqual(targetStack)) { stack.stackSize = slot.getStack().stackSize + stack.stackSize;