From 0e797b2120ffaec1fa680ff361d066258e75ef65 Mon Sep 17 00:00:00 2001 From: PrototypeTrousers Date: Thu, 2 Feb 2023 18:22:20 -0300 Subject: [PATCH] GUI/Container fixes Ugh --- .../gui/implementations/GuiCraftAmount.java | 6 ++--- .../gui/implementations/GuiCraftConfirm.java | 6 +++-- .../implementations/GuiCraftingStatus.java | 7 +++--- .../implementations/GuiMEPortableCell.java | 6 +---- .../GuiWirelessCraftingTerminal.java | 8 +++++++ .../GuiWirelessPatternTerminal.java | 8 +++++++ .../gui/implementations/GuiWirelessTerm.java | 15 ++++++++----- .../ContainerMEPortableCell.java | 4 ++-- .../ContainerWirelessCraftingTerminal.java | 15 +++++-------- .../ContainerWirelessPatternTerminal.java | 14 ++++++++++-- src/main/java/appeng/core/sync/GuiBridge.java | 14 +++++++++--- .../client/gui/GuiWirelessFluidTerminal.java | 22 +++++++++++++++++++ .../ContainerMEPortableFluidCell.java | 14 ++++++++++-- 13 files changed, 103 insertions(+), 36 deletions(-) diff --git a/src/main/java/appeng/client/gui/implementations/GuiCraftAmount.java b/src/main/java/appeng/client/gui/implementations/GuiCraftAmount.java index f1d3a001c..02e07e2a8 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiCraftAmount.java +++ b/src/main/java/appeng/client/gui/implementations/GuiCraftAmount.java @@ -22,6 +22,7 @@ package appeng.client.gui.implementations; import appeng.api.AEApi; import appeng.api.definitions.IDefinitions; import appeng.api.definitions.IParts; +import appeng.api.features.IWirelessTermHandler; import appeng.api.storage.ITerminalHost; import appeng.client.gui.AEBaseGui; import appeng.client.gui.widgets.GuiNumberBox; @@ -97,9 +98,8 @@ public class GuiCraftAmount extends AEBaseGui { final IParts parts = definitions.parts(); if (target instanceof WirelessTerminalGuiObject) { - myIcon = definitions.items().wirelessTerminal().maybeStack(1).orElse(myIcon); - - this.originalGui = GuiBridge.GUI_WIRELESS_TERM; + myIcon = ((WirelessTerminalGuiObject) target).getItemStack(); + this.originalGui = (GuiBridge) AEApi.instance().registries().wireless().getWirelessTerminalHandler(myIcon).getGuiHandler(myIcon); } if (target instanceof PartTerminal) { diff --git a/src/main/java/appeng/client/gui/implementations/GuiCraftConfirm.java b/src/main/java/appeng/client/gui/implementations/GuiCraftConfirm.java index cf8b716cb..043b57835 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiCraftConfirm.java +++ b/src/main/java/appeng/client/gui/implementations/GuiCraftConfirm.java @@ -20,6 +20,7 @@ package appeng.client.gui.implementations; import appeng.api.AEApi; +import appeng.api.features.IWirelessTermHandler; import appeng.api.storage.ITerminalHost; import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.data.IAEItemStack; @@ -83,8 +84,9 @@ public class GuiCraftConfirm extends AEBaseGui { this.ccc = (ContainerCraftConfirm) this.inventorySlots; this.ccc.setGui(this); - if (te instanceof IWirelessTermHandler) { - this.OriginalGui = (GuiBridge) ((IWirelessTermHandler)te).getGuiHandler(((WirelessTerminalGuiObject)te).getItemStack())); + if (te instanceof WirelessTerminalGuiObject) { + ItemStack itemStack = ((WirelessTerminalGuiObject) te).getItemStack(); + this.OriginalGui = (GuiBridge) AEApi.instance().registries().wireless().getWirelessTerminalHandler(itemStack).getGuiHandler(itemStack); } if (te instanceof PartTerminal) { diff --git a/src/main/java/appeng/client/gui/implementations/GuiCraftingStatus.java b/src/main/java/appeng/client/gui/implementations/GuiCraftingStatus.java index 6e9efecd4..556e34af7 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiCraftingStatus.java +++ b/src/main/java/appeng/client/gui/implementations/GuiCraftingStatus.java @@ -26,6 +26,7 @@ package appeng.client.gui.implementations; import appeng.api.AEApi; import appeng.api.definitions.IDefinitions; import appeng.api.definitions.IParts; +import appeng.api.features.IWirelessTermHandler; import appeng.api.storage.ITerminalHost; import appeng.api.storage.data.IAEItemStack; import appeng.client.gui.widgets.GuiScrollbar; @@ -33,6 +34,7 @@ import appeng.client.gui.widgets.GuiTabButton; import appeng.container.implementations.ContainerCraftingStatus; import appeng.container.implementations.CraftingCPUStatus; import appeng.core.AELog; +import appeng.core.features.registries.WirelessRegistry; import appeng.core.localization.GuiText; import appeng.core.sync.GuiBridge; import appeng.core.sync.network.NetworkHandler; @@ -84,9 +86,8 @@ public class GuiCraftingStatus extends GuiCraftingCPU { final IParts parts = definitions.parts(); if (target instanceof WirelessTerminalGuiObject) { - this.myIcon = definitions.items().wirelessTerminal().maybeStack(1).orElse(ItemStack.EMPTY); - - this.originalGui = GuiBridge.GUI_WIRELESS_TERM; + myIcon = ((WirelessTerminalGuiObject) target).getItemStack(); + this.originalGui = (GuiBridge) AEApi.instance().registries().wireless().getWirelessTerminalHandler(myIcon).getGuiHandler(myIcon); } if (target instanceof PartTerminal) { diff --git a/src/main/java/appeng/client/gui/implementations/GuiMEPortableCell.java b/src/main/java/appeng/client/gui/implementations/GuiMEPortableCell.java index 89dc0dcdc..2cb29d3ce 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiMEPortableCell.java +++ b/src/main/java/appeng/client/gui/implementations/GuiMEPortableCell.java @@ -28,11 +28,7 @@ public class GuiMEPortableCell extends GuiMEMonitorable { public GuiMEPortableCell(final InventoryPlayer inventoryPlayer, final IPortableCell te) { super(inventoryPlayer, te); } - - int defaultGetMaxRows() { - return super.getMaxRows(); - } - + @Override protected int getMaxRows() { return 3; diff --git a/src/main/java/appeng/client/gui/implementations/GuiWirelessCraftingTerminal.java b/src/main/java/appeng/client/gui/implementations/GuiWirelessCraftingTerminal.java index f40a4b08d..fa4b4a821 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiWirelessCraftingTerminal.java +++ b/src/main/java/appeng/client/gui/implementations/GuiWirelessCraftingTerminal.java @@ -30,6 +30,7 @@ import appeng.core.sync.network.NetworkHandler; import appeng.core.sync.packets.PacketInventoryAction; import appeng.helpers.InventoryAction; import appeng.helpers.WirelessTerminalGuiObject; +import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -78,6 +79,13 @@ public class GuiWirelessCraftingTerminal extends GuiMEMonitorable { this.fontRenderer.drawString(GuiText.CraftingTerminal.getLocal(), 8, this.ySize - 96 + 1 - this.getReservedSpace(), 4210752); } + @Override + public void drawBG(int offsetX, int offsetY, int mouseX, int mouseY) { + this.bindTexture("guis/wirelessupgrades.png"); + Gui.drawModalRectWithCustomSizedTexture(offsetX + 198, offsetY + 127, 0, 0, 32, 32, 32, 32); + super.drawBG(offsetX, offsetY, mouseX, mouseY); + } + @Override protected String getBackground() { return "guis/crafting.png"; diff --git a/src/main/java/appeng/client/gui/implementations/GuiWirelessPatternTerminal.java b/src/main/java/appeng/client/gui/implementations/GuiWirelessPatternTerminal.java index b326d895c..433501815 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiWirelessPatternTerminal.java +++ b/src/main/java/appeng/client/gui/implementations/GuiWirelessPatternTerminal.java @@ -21,6 +21,7 @@ package appeng.client.gui.implementations; import appeng.container.implementations.ContainerWirelessPatternTerminal; import appeng.helpers.WirelessTerminalGuiObject; +import net.minecraft.client.gui.Gui; import net.minecraft.entity.player.InventoryPlayer; @@ -30,4 +31,11 @@ public class GuiWirelessPatternTerminal extends GuiPatternTerm { super(inventoryPlayer, te, new ContainerWirelessPatternTerminal(inventoryPlayer, te)); this.setReservedSpace(81); } + + @Override + public void drawBG(int offsetX, int offsetY, int mouseX, int mouseY) { + this.bindTexture("guis/wirelessupgrades.png"); + Gui.drawModalRectWithCustomSizedTexture(offsetX + 198, offsetY + 127, 0, 0, 32, 32, 32, 32); + super.drawBG(offsetX, offsetY, mouseX, mouseY); + } } diff --git a/src/main/java/appeng/client/gui/implementations/GuiWirelessTerm.java b/src/main/java/appeng/client/gui/implementations/GuiWirelessTerm.java index a0bd8813c..25b9eff27 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiWirelessTerm.java +++ b/src/main/java/appeng/client/gui/implementations/GuiWirelessTerm.java @@ -20,17 +20,22 @@ package appeng.client.gui.implementations; import appeng.api.implementations.guiobjects.IPortableCell; +import appeng.container.implementations.ContainerWirelessTerm; +import appeng.helpers.WirelessTerminalGuiObject; +import net.minecraft.client.gui.Gui; import net.minecraft.entity.player.InventoryPlayer; -public class GuiWirelessTerm extends GuiMEPortableCell { +public class GuiWirelessTerm extends GuiMEMonitorable { - public GuiWirelessTerm(final InventoryPlayer inventoryPlayer, final IPortableCell te) { - super(inventoryPlayer, te); + public GuiWirelessTerm(final InventoryPlayer inventoryPlayer, final WirelessTerminalGuiObject te) { + super(inventoryPlayer, te, new ContainerWirelessTerm(inventoryPlayer, te)); } @Override - protected int getMaxRows() { - return this.defaultGetMaxRows(); + public void drawBG(int offsetX, int offsetY, int mouseX, int mouseY) { + this.bindTexture("guis/wirelessupgrades.png"); + Gui.drawModalRectWithCustomSizedTexture(offsetX + 198, offsetY + 127, 0, 0, 32, 32, 32, 32); + super.drawBG(offsetX, offsetY, mouseX, mouseY); } } diff --git a/src/main/java/appeng/container/implementations/ContainerMEPortableCell.java b/src/main/java/appeng/container/implementations/ContainerMEPortableCell.java index 26d3dae19..b5a8c3ef5 100644 --- a/src/main/java/appeng/container/implementations/ContainerMEPortableCell.java +++ b/src/main/java/appeng/container/implementations/ContainerMEPortableCell.java @@ -136,7 +136,7 @@ public class ContainerMEPortableCell extends ContainerMEMonitorable implements I if (wirelessTerminalGUIObject != null) { for (int upgradeSlot = 0; upgradeSlot < availableUpgrades(); upgradeSlot++) { this.addSlotToContainer( - (new SlotRestrictedInput(SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, upgradeSlot, 187, upgradeSlot * 18, this.getInventoryPlayer())) + (new SlotRestrictedInput(SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, upgradeSlot, 206, 135 + upgradeSlot * 18, this.getInventoryPlayer())) .setNotDraggable()); } } @@ -157,7 +157,7 @@ public class ContainerMEPortableCell extends ContainerMEMonitorable implements I } } - private void loadFromNBT() { + protected void loadFromNBT() { NBTTagCompound data = wirelessTerminalGUIObject.getItemStack().getTagCompound(); if (data != null) { upgrades.readFromNBT(wirelessTerminalGUIObject.getItemStack().getTagCompound().getCompoundTag("upgrades")); diff --git a/src/main/java/appeng/container/implementations/ContainerWirelessCraftingTerminal.java b/src/main/java/appeng/container/implementations/ContainerWirelessCraftingTerminal.java index 3c3ee8feb..78435661d 100644 --- a/src/main/java/appeng/container/implementations/ContainerWirelessCraftingTerminal.java +++ b/src/main/java/appeng/container/implementations/ContainerWirelessCraftingTerminal.java @@ -40,23 +40,18 @@ import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.PlayerInvWrapper; -public class ContainerWirelessCraftingTerminal extends ContainerMEPortableCell implements IAEAppEngInventory, IContainerCraftingPacket { - - private final WirelessTerminalGuiObject wirelessTerminalGUIObject; +public class ContainerWirelessCraftingTerminal extends ContainerMEPortableCell implements IContainerCraftingPacket { private final AppEngInternalInventory output = new AppEngInternalInventory(this, 1); private final SlotCraftingMatrix[] craftingSlots = new SlotCraftingMatrix[9]; private final SlotCraftingTerm outputSlot; - private final AppEngInternalInventory craftingGrid = new AppEngInternalInventory(this, 9); + private AppEngInternalInventory craftingGrid; private IRecipe currentRecipe; public ContainerWirelessCraftingTerminal(final InventoryPlayer ip, final WirelessTerminalGuiObject gui) { - super(ip, gui, false); - this.wirelessTerminalGUIObject = gui; - - this.loadFromNBT(); + super(ip, gui, true); final IItemHandler crafting = this.craftingGrid; @@ -104,11 +99,13 @@ public class ContainerWirelessCraftingTerminal extends ContainerMEPortableCell i } } + @Override protected void loadFromNBT() { + super.loadFromNBT(); + this.craftingGrid = new AppEngInternalInventory(this, 9); NBTTagCompound data = wirelessTerminalGUIObject.getItemStack().getTagCompound(); if (data != null) { this.craftingGrid.readFromNBT(data, "craftingGrid"); - upgrades.readFromNBT(wirelessTerminalGUIObject.getItemStack().getTagCompound().getCompoundTag("upgrades")); } } diff --git a/src/main/java/appeng/container/implementations/ContainerWirelessPatternTerminal.java b/src/main/java/appeng/container/implementations/ContainerWirelessPatternTerminal.java index e6aefca4e..f41f79b7b 100644 --- a/src/main/java/appeng/container/implementations/ContainerWirelessPatternTerminal.java +++ b/src/main/java/appeng/container/implementations/ContainerWirelessPatternTerminal.java @@ -48,7 +48,7 @@ import net.minecraftforge.items.IItemHandler; import static appeng.helpers.PatternHelper.CRAFTING_GRID_DIMENSION; -public class ContainerWirelessPatternTerminal extends ContainerPatternEncoder implements IUpgradeableCellContainer { +public class ContainerWirelessPatternTerminal extends ContainerPatternEncoder implements IUpgradeableCellContainer, IInventorySlotAware { private final WirelessTerminalGuiObject wirelessTerminalGUIObject; private final int slot; @@ -259,9 +259,19 @@ public class ContainerWirelessPatternTerminal extends ContainerPatternEncoder im if (wirelessTerminalGUIObject != null) { for (int upgradeSlot = 0; upgradeSlot < availableUpgrades(); upgradeSlot++) { this.addSlotToContainer( - (new SlotRestrictedInput(SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, upgradeSlot, 187, upgradeSlot * 18 - 2, this.getInventoryPlayer())) + (new SlotRestrictedInput(SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, upgradeSlot, 206, 135 + upgradeSlot * 18, this.getInventoryPlayer())) .setNotDraggable()); } } } + + @Override + public int getInventorySlot() { + return wirelessTerminalGUIObject.getInventorySlot(); + } + + @Override + public boolean isBaubleSlot() { + return wirelessTerminalGUIObject.isBaubleSlot(); + } } diff --git a/src/main/java/appeng/core/sync/GuiBridge.java b/src/main/java/appeng/core/sync/GuiBridge.java index 4b3d5d4ca..b913d1f27 100644 --- a/src/main/java/appeng/core/sync/GuiBridge.java +++ b/src/main/java/appeng/core/sync/GuiBridge.java @@ -43,6 +43,7 @@ import appeng.container.AEBaseContainer; import appeng.container.ContainerNull; import appeng.container.ContainerOpenContext; import appeng.container.implementations.*; +import appeng.container.interfaces.IInventorySlotAware; import appeng.fluids.container.*; import appeng.fluids.helper.IFluidInterfaceHost; import appeng.fluids.parts.PartFluidFormationPlane; @@ -243,10 +244,10 @@ public enum GuiBridge implements IGuiHandler { } else { if (stem) { if (player.openContainer instanceof IInventorySlotAware) { - int slot = ((IInventorySlotAware)player.openContainer).getInventorySlot(); + int slot = ((IInventorySlotAware) player.openContainer).getInventorySlot(); it = BaublesApi.getBaublesHandler(player).getStackInSlot(slot); } - }else { + } else { it = BaublesApi.getBaublesHandler(player).getStackInSlot(x); } } @@ -363,7 +364,14 @@ public enum GuiBridge implements IGuiHandler { it = player.inventory.getStackInSlot(x); } } else { - it = BaublesApi.getBaublesHandler(player).getStackInSlot(x); + if (stem) { + if (player.openContainer instanceof IInventorySlotAware) { + int slot = ((IInventorySlotAware) player.openContainer).getInventorySlot(); + it = BaublesApi.getBaublesHandler(player).getStackInSlot(slot); + } + } else { + it = BaublesApi.getBaublesHandler(player).getStackInSlot(x); + } } final Object myItem = this.getGuiObject(it, player, w, x, y, z); if (myItem != null && ID.CorrectTileOrPart(myItem)) { diff --git a/src/main/java/appeng/fluids/client/gui/GuiWirelessFluidTerminal.java b/src/main/java/appeng/fluids/client/gui/GuiWirelessFluidTerminal.java index bd3dc0882..9f7ce30b0 100644 --- a/src/main/java/appeng/fluids/client/gui/GuiWirelessFluidTerminal.java +++ b/src/main/java/appeng/fluids/client/gui/GuiWirelessFluidTerminal.java @@ -22,12 +22,34 @@ package appeng.fluids.client.gui; import appeng.api.implementations.guiobjects.IPortableCell; import appeng.fluids.container.ContainerWirelessFluidTerminal; import appeng.helpers.WirelessTerminalGuiObject; +import net.minecraft.client.gui.Gui; import net.minecraft.entity.player.InventoryPlayer; +import java.awt.*; +import java.util.ArrayList; +import java.util.List; + public class GuiWirelessFluidTerminal extends GuiMEPortableFluidCell { public GuiWirelessFluidTerminal(final InventoryPlayer inventoryPlayer, final WirelessTerminalGuiObject te) { super(inventoryPlayer, te, new ContainerWirelessFluidTerminal(inventoryPlayer, te)); } + + @Override + public void drawBG(int offsetX, int offsetY, int mouseX, int mouseY) { + this.bindTexture("guis/wirelessupgrades.png"); + Gui.drawModalRectWithCustomSizedTexture(offsetX + 175, offsetY + 131, 0, 0, 32, 32, 32, 32); + super.drawBG(offsetX, offsetY, mouseX, mouseY); + } + + @Override + public List getJEIExclusionArea() { + List ea = new ArrayList<>(); + ea.add(new Rectangle(this.guiLeft + 174, + this.guiTop + 131, + 32, + 32)); + return ea; + } } diff --git a/src/main/java/appeng/fluids/container/ContainerMEPortableFluidCell.java b/src/main/java/appeng/fluids/container/ContainerMEPortableFluidCell.java index b13824efa..40f50dbc6 100644 --- a/src/main/java/appeng/fluids/container/ContainerMEPortableFluidCell.java +++ b/src/main/java/appeng/fluids/container/ContainerMEPortableFluidCell.java @@ -65,7 +65,7 @@ import javax.annotation.Nonnull; import java.io.IOException; import java.nio.BufferOverflowException; -public class ContainerMEPortableFluidCell extends AEBaseContainer implements IAEAppEngInventory, IConfigManagerHost, IConfigurableObject, IMEMonitorHandlerReceiver, IUpgradeableCellContainer { +public class ContainerMEPortableFluidCell extends AEBaseContainer implements IAEAppEngInventory, IConfigManagerHost, IConfigurableObject, IMEMonitorHandlerReceiver, IUpgradeableCellContainer, IInventorySlotAware { protected final WirelessTerminalGuiObject wirelessTerminalGUIObject; @@ -552,7 +552,7 @@ public class ContainerMEPortableFluidCell extends AEBaseContainer implements IAE if (wirelessTerminalGUIObject != null) { for (int upgradeSlot = 0; upgradeSlot < availableUpgrades(); upgradeSlot++) { this.addSlotToContainer( - (new SlotRestrictedInput(SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, upgradeSlot, 187, 139 + upgradeSlot * 18, this.getInventoryPlayer())) + (new SlotRestrictedInput(SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, upgradeSlot, 183, 139 + upgradeSlot * 18, this.getInventoryPlayer())) .setNotDraggable()); } } @@ -578,4 +578,14 @@ public class ContainerMEPortableFluidCell extends AEBaseContainer implements IAE @Override public void onChangeInventory(IItemHandler inv, int slot, InvOperation mc, ItemStack removedStack, ItemStack newStack) { } + + @Override + public int getInventorySlot() { + return wirelessTerminalGUIObject.getInventorySlot(); + } + + @Override + public boolean isBaubleSlot() { + return wirelessTerminalGUIObject.isBaubleSlot(); + } }