diff --git a/src/main/java/com/github/vfyjxf/nee/NEINeeConfig.java b/src/main/java/com/github/vfyjxf/nee/NEINeeConfig.java index 560d89e..1f66dda 100644 --- a/src/main/java/com/github/vfyjxf/nee/NEINeeConfig.java +++ b/src/main/java/com/github/vfyjxf/nee/NEINeeConfig.java @@ -17,6 +17,7 @@ import com.github.vfyjxf.nee.processor.IRecipeProcessor; import com.github.vfyjxf.nee.processor.RecipeProcessor; import com.github.vfyjxf.nee.utils.ModIDs; +import com.glodblock.github.client.gui.GuiFluidCraftingWireless; import com.glodblock.github.client.gui.GuiFluidPatternExWireless; import com.glodblock.github.client.gui.GuiFluidPatternTerminal; import com.glodblock.github.client.gui.GuiFluidPatternTerminalEx; @@ -159,6 +160,10 @@ private void installWirelessCraftingTermSupport() { API.registerGuiOverlayHandler(GuiWirelessCraftingTerminal.class, NEECraftingHelper.INSTANCE, "crafting"); API.registerGuiOverlayHandler(GuiWirelessCraftingTerminal.class, NEECraftingHelper.INSTANCE, "crafting2x2"); } + if (Loader.isModLoaded(ModIDs.FC)) { + API.registerGuiOverlayHandler(GuiFluidCraftingWireless.class, NEECraftingHelper.INSTANCE, "crafting"); + API.registerGuiOverlayHandler(GuiFluidCraftingWireless.class, NEECraftingHelper.INSTANCE, "crafting2x2"); + } } private void installThaumicEnergisticsSupport() { diff --git a/src/main/java/com/github/vfyjxf/nee/client/NEEContainerDrawHandler.java b/src/main/java/com/github/vfyjxf/nee/client/NEEContainerDrawHandler.java index feac40e..5c6fbd0 100644 --- a/src/main/java/com/github/vfyjxf/nee/client/NEEContainerDrawHandler.java +++ b/src/main/java/com/github/vfyjxf/nee/client/NEEContainerDrawHandler.java @@ -56,6 +56,7 @@ public class NEEContainerDrawHandler { private boolean drawRequestTooltip; private boolean drawMissingTooltip; private boolean drawCraftableTooltip; + private boolean isFluidCraftingTerm; public NEEContainerDrawHandler() { // gtnh nei support @@ -76,8 +77,9 @@ public void onGuiInit(GuiScreenEvent.InitGuiEvent.Post event) { GuiRecipe guiRecipe = (GuiRecipe) event.gui; this.isCraftingTerm = GuiUtils.isGuiCraftingTerm(guiRecipe.firstGui); this.isPatternTerm = GuiUtils.isPatternTerm(guiRecipe.firstGui); + this.isFluidCraftingTerm = GuiUtils.isGuiFluidCraftingWireless(guiRecipe.firstGui); - if (this.isCraftingTerm || this.isPatternTerm) { + if (this.isCraftingTerm || this.isPatternTerm || this.isFluidCraftingTerm) { this.oldPage = guiRecipe.page; this.oldType = guiRecipe.recipetype; setOverlayButton(guiRecipe); diff --git a/src/main/java/com/github/vfyjxf/nee/network/packet/PacketCraftingRequest.java b/src/main/java/com/github/vfyjxf/nee/network/packet/PacketCraftingRequest.java index a4f2816..55a8d76 100644 --- a/src/main/java/com/github/vfyjxf/nee/network/packet/PacketCraftingRequest.java +++ b/src/main/java/com/github/vfyjxf/nee/network/packet/PacketCraftingRequest.java @@ -18,7 +18,6 @@ import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; import net.p455w0rd.wirelesscraftingterminal.common.WCTGuiHandler; -import net.p455w0rd.wirelesscraftingterminal.common.container.ContainerWirelessCraftingTerminal; import net.p455w0rd.wirelesscraftingterminal.helpers.WirelessTerminalGuiObject; import net.p455w0rd.wirelesscraftingterminal.reference.Reference; @@ -31,6 +30,7 @@ import com.github.vfyjxf.nee.network.NEEGuiHandler; import com.github.vfyjxf.nee.utils.GuiUtils; import com.github.vfyjxf.nee.utils.ModIDs; +import com.glodblock.github.inventory.item.WirelessCraftingTerminalInventory; import com.google.common.base.Optional; import appeng.api.AEApi; @@ -126,8 +126,9 @@ public IMessage onMessage(PacketCraftingRequest message, MessageContext ctx) { EntityPlayerMP player = ctx.getServerHandler().playerEntity; Container container = player.openContainer; - if (GuiUtils.isWirelessCraftingTermContainer(container)) { - message.handlerWirelessCraftingRequest((ContainerWirelessCraftingTerminal) container, message, player); + if (GuiUtils.isWirelessCraftingTermContainer(container) + || GuiUtils.isFCContainerCraftingWireless(container)) { + message.handlerWirelessCraftingRequest((AEBaseContainer) container, message, player); } else if (container instanceof AEBaseContainer) { AEBaseContainer baseContainer = (AEBaseContainer) container; Object target = baseContainer.getTarget(); @@ -265,43 +266,47 @@ private void handlerCraftingAmountRequest(ContainerCraftingAmount container, Pac } } - private void handlerWirelessCraftingRequest(ContainerWirelessCraftingTerminal container, - PacketCraftingRequest message, EntityPlayerMP player) { + private void handlerWirelessCraftingRequest(AEBaseContainer container, PacketCraftingRequest message, + EntityPlayerMP player) { Object target = container.getTarget(); + IGrid grid = null; if (target instanceof WirelessTerminalGuiObject) { - IGrid grid = ((WirelessTerminalGuiObject) target).getTargetGrid(); - if (grid != null) { - final ISecurityGrid security = grid.getCache(ISecurityGrid.class); - if (security != null && security.hasPermission(player, SecurityPermissions.CRAFT) - && message.getRequireToCraftStack() != null) { - Future futureJob = null; - try { - final ICraftingGrid cg = grid.getCache(ICraftingGrid.class); - futureJob = cg.beginCraftingJob( - player.worldObj, - grid, - container.getActionSource(), - message.getRequireToCraftStack(), - null); - - int x = (int) player.posX; - int y = (int) player.posY; - int z = (int) player.posZ; - - WCTGuiHandler.launchGui(Reference.GUI_CRAFT_CONFIRM, player, player.worldObj, x, y, z); - - if (player.openContainer instanceof net.p455w0rd.wirelesscraftingterminal.common.container.ContainerCraftConfirm) { - final net.p455w0rd.wirelesscraftingterminal.common.container.ContainerCraftConfirm ccc = (net.p455w0rd.wirelesscraftingterminal.common.container.ContainerCraftConfirm) player.openContainer; - ccc.setItemToCraft(message.getRequireToCraftStack()); - ccc.setJob(futureJob); - ccc.setAutoStart(message.isAutoStart()); - } - } catch (final Throwable e) { - if (futureJob != null) { - futureJob.cancel(true); - } - AELog.debug(e); + grid = ((WirelessTerminalGuiObject) target).getTargetGrid(); + } else if (target instanceof WirelessCraftingTerminalInventory) { + WirelessCraftingTerminalInventory target1 = (WirelessCraftingTerminalInventory) target; + grid = target1.getActionableNode().getGrid(); + } + if (grid != null) { + final ISecurityGrid security = grid.getCache(ISecurityGrid.class); + if (security != null && security.hasPermission(player, SecurityPermissions.CRAFT) + && message.getRequireToCraftStack() != null) { + Future futureJob = null; + try { + final ICraftingGrid cg = grid.getCache(ICraftingGrid.class); + futureJob = cg.beginCraftingJob( + player.worldObj, + grid, + container.getActionSource(), + message.getRequireToCraftStack(), + null); + + int x = (int) player.posX; + int y = (int) player.posY; + int z = (int) player.posZ; + + WCTGuiHandler.launchGui(Reference.GUI_CRAFT_CONFIRM, player, player.worldObj, x, y, z); + + if (player.openContainer instanceof net.p455w0rd.wirelesscraftingterminal.common.container.ContainerCraftConfirm) { + final net.p455w0rd.wirelesscraftingterminal.common.container.ContainerCraftConfirm ccc = (net.p455w0rd.wirelesscraftingterminal.common.container.ContainerCraftConfirm) player.openContainer; + ccc.setItemToCraft(message.getRequireToCraftStack()); + ccc.setJob(futureJob); + ccc.setAutoStart(message.isAutoStart()); + } + } catch (final Throwable e) { + if (futureJob != null) { + futureJob.cancel(true); } + AELog.debug(e); } } } diff --git a/src/main/java/com/github/vfyjxf/nee/utils/GuiUtils.java b/src/main/java/com/github/vfyjxf/nee/utils/GuiUtils.java index dd49977..7b98853 100644 --- a/src/main/java/com/github/vfyjxf/nee/utils/GuiUtils.java +++ b/src/main/java/com/github/vfyjxf/nee/utils/GuiUtils.java @@ -34,11 +34,21 @@ public static boolean isGuiWirelessCrafting(GuiScreen gui) { return gui instanceof net.p455w0rd.wirelesscraftingterminal.client.gui.GuiWirelessCraftingTerminal; } + public static boolean isGuiFluidCraftingWireless(GuiScreen gui) { + if (!isFluidCraftModloaded) return false; + return gui instanceof com.glodblock.github.client.gui.GuiFluidCraftingWireless; + } + public static boolean isWirelessCraftingTermContainer(Container container) { if (!isWirelessCraftingTerminalModLoaded) return false; return container instanceof net.p455w0rd.wirelesscraftingterminal.common.container.ContainerWirelessCraftingTerminal; } + public static boolean isFCContainerCraftingWireless(Container container) { + if (!isFluidCraftModloaded) return false; + return container instanceof com.glodblock.github.client.gui.container.ContainerCraftingWireless; + } + public static boolean isContainerWirelessCraftingConfirm(Container container) { if (!isWirelessCraftingTerminalModLoaded) return false; return container instanceof net.p455w0rd.wirelesscraftingterminal.common.container.ContainerCraftConfirm; @@ -82,7 +92,8 @@ public static boolean isPatternContainer(Container container) { } public static boolean isGuiCraftingTerm(GuiScreen guiScreen) { - return guiScreen instanceof GuiCraftingTerm || isGuiWirelessCrafting(guiScreen); + return guiScreen instanceof GuiCraftingTerm || isGuiWirelessCrafting(guiScreen) + || isGuiFluidCraftingWireless(guiScreen); } public static boolean isFluidCraftPatternTermEx(GuiScreen guiScreen) { diff --git a/src/main/java/com/github/vfyjxf/nee/utils/IngredientTracker.java b/src/main/java/com/github/vfyjxf/nee/utils/IngredientTracker.java index 433cd3f..c2dcf4f 100644 --- a/src/main/java/com/github/vfyjxf/nee/utils/IngredientTracker.java +++ b/src/main/java/com/github/vfyjxf/nee/utils/IngredientTracker.java @@ -94,14 +94,17 @@ private List getCraftableStacks() { if (termGui != null) { IItemList list = null; try { - if (!GuiUtils.isGuiWirelessCrafting(termGui)) { - ItemRepo repo = getRepo(); - list = (IItemList) ReflectionHelper.findField(ItemRepo.class, "list").get(repo); - } else { + if (GuiUtils.isGuiWirelessCrafting(termGui)) { // wireless crafting terminal support ItemRepo repo = (ItemRepo) ReflectionHelper.findField(GuiWirelessCraftingTerminal.class, "repo") .get(termGui); list = (IItemList) ReflectionHelper.findField(ItemRepo.class, "list").get(repo); + } else if (GuiUtils.isGuiFluidCraftingWireless(termGui)) { + ItemRepo repo = (ItemRepo) ReflectionHelper.findField(FCGuiMonitor.class, "repo").get(termGui); + list = (IItemList) ReflectionHelper.findField(ItemRepo.class, "list").get(repo); + } else { + ItemRepo repo = getRepo(); + list = (IItemList) ReflectionHelper.findField(ItemRepo.class, "list").get(repo); } } catch (IllegalAccessException e) { e.printStackTrace(); @@ -121,22 +124,25 @@ private List getCraftableStacks() { private List getStorageStacks() { List list = new ArrayList<>(); if (termGui != null) { + try { - if (!GuiUtils.isGuiWirelessCrafting(termGui)) { - ItemRepo repo = (ItemRepo) ReflectionHelper.findField(GuiMEMonitorable.class, "repo").get(termGui); - for (IAEItemStack stack : (IItemList) ReflectionHelper - .findField(ItemRepo.class, "list").get(repo)) { - list.add(stack.copy()); - } - } else { + ItemRepo repo; + if (GuiUtils.isGuiWirelessCrafting(termGui)) { // wireless crafting terminal support - ItemRepo repo = (ItemRepo) ReflectionHelper.findField(GuiWirelessCraftingTerminal.class, "repo") + repo = (ItemRepo) ReflectionHelper.findField(GuiWirelessCraftingTerminal.class, "repo") .get(termGui); - for (IAEItemStack stack : (IItemList) ReflectionHelper - .findField(ItemRepo.class, "list").get(repo)) { - list.add(stack.copy()); - } } + // wireless fluid terminal + else if (GuiUtils.isGuiFluidCraftingWireless(termGui)) { + repo = (ItemRepo) ReflectionHelper.findField(FCGuiMonitor.class, "repo").get(termGui); + } else { + repo = (ItemRepo) ReflectionHelper.findField(GuiMEMonitorable.class, "repo").get(termGui); + } + for (IAEItemStack stack : (IItemList) ReflectionHelper.findField(ItemRepo.class, "list") + .get(repo)) { + list.add(stack.copy()); + } + } catch (IllegalAccessException e) { e.printStackTrace(); }