From dbf53773c399357ac0d68b4e2bcab4c0eff582af Mon Sep 17 00:00:00 2001 From: repo_alt Date: Tue, 14 Dec 2021 12:50:59 +0300 Subject: [PATCH] Drag & drop from NEI to search support https://github.com/GTNewHorizons/GT-New-Horizons-Modpack/issues/9094 --- .../gui/GuiWirelessCraftingTerminal.java | 11 ++++++++ .../integration/modules/NEI.java | 22 +++------------- .../modules/NEIHelpers/NEIGUIHandler.java | 25 +++++++++++++++++++ 3 files changed, 39 insertions(+), 19 deletions(-) create mode 100644 src/java/net/p455w0rd/wirelesscraftingterminal/integration/modules/NEIHelpers/NEIGUIHandler.java diff --git a/src/java/net/p455w0rd/wirelesscraftingterminal/client/gui/GuiWirelessCraftingTerminal.java b/src/java/net/p455w0rd/wirelesscraftingterminal/client/gui/GuiWirelessCraftingTerminal.java index 0103439..541686e 100644 --- a/src/java/net/p455w0rd/wirelesscraftingterminal/client/gui/GuiWirelessCraftingTerminal.java +++ b/src/java/net/p455w0rd/wirelesscraftingterminal/client/gui/GuiWirelessCraftingTerminal.java @@ -1375,4 +1375,15 @@ public class GuiWirelessCraftingTerminal extends GuiContainer implements ISortSo return this.configSrc.getSetting(Settings.VIEW_MODE); } + public boolean isOverSearchField(int x, int y) + { + return searchField.isMouseIn(x - guiLeft, y - guiTop); + } + public void setSearchString(String memoryText) + { + this.searchField.setText(memoryText); + this.repo.setSearchString(memoryText); + this.repo.updateView(); + this.setScrollBar(); + } } diff --git a/src/java/net/p455w0rd/wirelesscraftingterminal/integration/modules/NEI.java b/src/java/net/p455w0rd/wirelesscraftingterminal/integration/modules/NEI.java index ab99fae..55ff5f4 100644 --- a/src/java/net/p455w0rd/wirelesscraftingterminal/integration/modules/NEI.java +++ b/src/java/net/p455w0rd/wirelesscraftingterminal/integration/modules/NEI.java @@ -34,6 +34,7 @@ import net.p455w0rd.wirelesscraftingterminal.integration.IIntegrationModule; import net.p455w0rd.wirelesscraftingterminal.integration.IntegrationHelper; import net.p455w0rd.wirelesscraftingterminal.integration.abstraction.INEI; import net.p455w0rd.wirelesscraftingterminal.integration.modules.NEIHelpers.NEIAEShapedRecipeHandler; +import net.p455w0rd.wirelesscraftingterminal.integration.modules.NEIHelpers.NEIGUIHandler; public class NEI implements INEI, IContainerTooltipHandler, IIntegrationModule { @Reflected @@ -62,25 +63,8 @@ public class NEI implements INEI, IContainerTooltipHandler, IIntegrationModule { API.registerGuiOverlay(net.p455w0rd.wirelesscraftingterminal.client.gui.GuiWirelessCraftingTerminal.class, "crafting", new WCTSlotPositioner()); API.registerGuiOverlayHandler(net.p455w0rd.wirelesscraftingterminal.client.gui.GuiWirelessCraftingTerminal.class, new WCTOverlayHandler(), "crafting"); API.registerRecipeHandler(new NEIAEShapedRecipeHandler()); - API.registerRecipeHandler( new NEIAEShapelessRecipeHandler() ); - - /* - final Method registerGuiOverlay = this.apiClass.getDeclaredMethod("registerGuiOverlay", Class.class, String.class, IStackPositioner.class); - registerGuiOverlay.invoke(this.apiClass, net.p455w0rd.wirelesscraftingterminal.client.gui.GuiWirelessCraftingTerminal.class, "crafting", - new WCTSlotPositioner()); - - final Class overlayHandler = Class.forName("codechicken.nei.api.IOverlayHandler"); - WCTOverlayHandler craftingOverlayHandler = new WCTOverlayHandler(); - final Method registrar = this.apiClass.getDeclaredMethod("registerGuiOverlayHandler", Class.class, overlayHandler, String.class); - registrar.invoke(this.apiClass, net.p455w0rd.wirelesscraftingterminal.client.gui.GuiWirelessCraftingTerminal.class, - craftingOverlayHandler, "crafting"); - */ - - - // final Class defaultHandler = - // NEICraftingHandler.class; - // final Constructor defaultConstructor = defaultHandler.getConstructor( - // int.class, int.class ); + API.registerRecipeHandler(new NEIAEShapelessRecipeHandler()); + API.registerNEIGuiHandler(new NEIGUIHandler()); } diff --git a/src/java/net/p455w0rd/wirelesscraftingterminal/integration/modules/NEIHelpers/NEIGUIHandler.java b/src/java/net/p455w0rd/wirelesscraftingterminal/integration/modules/NEIHelpers/NEIGUIHandler.java new file mode 100644 index 0000000..baf50f0 --- /dev/null +++ b/src/java/net/p455w0rd/wirelesscraftingterminal/integration/modules/NEIHelpers/NEIGUIHandler.java @@ -0,0 +1,25 @@ +package net.p455w0rd.wirelesscraftingterminal.integration.modules.NEIHelpers; + +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.item.ItemStack; + +import codechicken.nei.api.INEIGuiAdapter; +import net.p455w0rd.wirelesscraftingterminal.client.gui.GuiWirelessCraftingTerminal; + +public class NEIGUIHandler extends INEIGuiAdapter +{ + @Override + public boolean handleDragNDrop(GuiContainer gui, int mousex, int mousey, ItemStack draggedStack, int button) + { + if (gui instanceof GuiWirelessCraftingTerminal && draggedStack != null && draggedStack.getItem() != null) + { + GuiWirelessCraftingTerminal gmm = (GuiWirelessCraftingTerminal)gui; + if (gmm.isOverSearchField(mousex, mousey)) + { + gmm.setSearchString(draggedStack.getDisplayName()); + return true; + } + } + return super.handleDragNDrop(gui, mousex, mousey, draggedStack, button); + } +}