GUI/Container fixes Ugh

This commit is contained in:
PrototypeTrousers
2023-02-02 18:22:20 -03:00
parent 17c38a6418
commit 0e797b2120
13 changed files with 103 additions and 36 deletions
@@ -22,6 +22,7 @@ package appeng.client.gui.implementations;
import appeng.api.AEApi; import appeng.api.AEApi;
import appeng.api.definitions.IDefinitions; import appeng.api.definitions.IDefinitions;
import appeng.api.definitions.IParts; import appeng.api.definitions.IParts;
import appeng.api.features.IWirelessTermHandler;
import appeng.api.storage.ITerminalHost; import appeng.api.storage.ITerminalHost;
import appeng.client.gui.AEBaseGui; import appeng.client.gui.AEBaseGui;
import appeng.client.gui.widgets.GuiNumberBox; import appeng.client.gui.widgets.GuiNumberBox;
@@ -97,9 +98,8 @@ public class GuiCraftAmount extends AEBaseGui {
final IParts parts = definitions.parts(); final IParts parts = definitions.parts();
if (target instanceof WirelessTerminalGuiObject) { if (target instanceof WirelessTerminalGuiObject) {
myIcon = definitions.items().wirelessTerminal().maybeStack(1).orElse(myIcon); myIcon = ((WirelessTerminalGuiObject) target).getItemStack();
this.originalGui = (GuiBridge) AEApi.instance().registries().wireless().getWirelessTerminalHandler(myIcon).getGuiHandler(myIcon);
this.originalGui = GuiBridge.GUI_WIRELESS_TERM;
} }
if (target instanceof PartTerminal) { if (target instanceof PartTerminal) {
@@ -20,6 +20,7 @@ package appeng.client.gui.implementations;
import appeng.api.AEApi; import appeng.api.AEApi;
import appeng.api.features.IWirelessTermHandler;
import appeng.api.storage.ITerminalHost; import appeng.api.storage.ITerminalHost;
import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.channels.IItemStorageChannel;
import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEItemStack;
@@ -83,8 +84,9 @@ public class GuiCraftConfirm extends AEBaseGui {
this.ccc = (ContainerCraftConfirm) this.inventorySlots; this.ccc = (ContainerCraftConfirm) this.inventorySlots;
this.ccc.setGui(this); this.ccc.setGui(this);
if (te instanceof IWirelessTermHandler) { if (te instanceof WirelessTerminalGuiObject) {
this.OriginalGui = (GuiBridge) ((IWirelessTermHandler)te).getGuiHandler(((WirelessTerminalGuiObject)te).getItemStack())); ItemStack itemStack = ((WirelessTerminalGuiObject) te).getItemStack();
this.OriginalGui = (GuiBridge) AEApi.instance().registries().wireless().getWirelessTerminalHandler(itemStack).getGuiHandler(itemStack);
} }
if (te instanceof PartTerminal) { if (te instanceof PartTerminal) {
@@ -26,6 +26,7 @@ package appeng.client.gui.implementations;
import appeng.api.AEApi; import appeng.api.AEApi;
import appeng.api.definitions.IDefinitions; import appeng.api.definitions.IDefinitions;
import appeng.api.definitions.IParts; import appeng.api.definitions.IParts;
import appeng.api.features.IWirelessTermHandler;
import appeng.api.storage.ITerminalHost; import appeng.api.storage.ITerminalHost;
import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEItemStack;
import appeng.client.gui.widgets.GuiScrollbar; 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.ContainerCraftingStatus;
import appeng.container.implementations.CraftingCPUStatus; import appeng.container.implementations.CraftingCPUStatus;
import appeng.core.AELog; import appeng.core.AELog;
import appeng.core.features.registries.WirelessRegistry;
import appeng.core.localization.GuiText; import appeng.core.localization.GuiText;
import appeng.core.sync.GuiBridge; import appeng.core.sync.GuiBridge;
import appeng.core.sync.network.NetworkHandler; import appeng.core.sync.network.NetworkHandler;
@@ -84,9 +86,8 @@ public class GuiCraftingStatus extends GuiCraftingCPU {
final IParts parts = definitions.parts(); final IParts parts = definitions.parts();
if (target instanceof WirelessTerminalGuiObject) { if (target instanceof WirelessTerminalGuiObject) {
this.myIcon = definitions.items().wirelessTerminal().maybeStack(1).orElse(ItemStack.EMPTY); myIcon = ((WirelessTerminalGuiObject) target).getItemStack();
this.originalGui = (GuiBridge) AEApi.instance().registries().wireless().getWirelessTerminalHandler(myIcon).getGuiHandler(myIcon);
this.originalGui = GuiBridge.GUI_WIRELESS_TERM;
} }
if (target instanceof PartTerminal) { if (target instanceof PartTerminal) {
@@ -28,11 +28,7 @@ public class GuiMEPortableCell extends GuiMEMonitorable {
public GuiMEPortableCell(final InventoryPlayer inventoryPlayer, final IPortableCell te) { public GuiMEPortableCell(final InventoryPlayer inventoryPlayer, final IPortableCell te) {
super(inventoryPlayer, te); super(inventoryPlayer, te);
} }
int defaultGetMaxRows() {
return super.getMaxRows();
}
@Override @Override
protected int getMaxRows() { protected int getMaxRows() {
return 3; return 3;
@@ -30,6 +30,7 @@ import appeng.core.sync.network.NetworkHandler;
import appeng.core.sync.packets.PacketInventoryAction; import appeng.core.sync.packets.PacketInventoryAction;
import appeng.helpers.InventoryAction; import appeng.helpers.InventoryAction;
import appeng.helpers.WirelessTerminalGuiObject; import appeng.helpers.WirelessTerminalGuiObject;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; 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); 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 @Override
protected String getBackground() { protected String getBackground() {
return "guis/crafting.png"; return "guis/crafting.png";
@@ -21,6 +21,7 @@ package appeng.client.gui.implementations;
import appeng.container.implementations.ContainerWirelessPatternTerminal; import appeng.container.implementations.ContainerWirelessPatternTerminal;
import appeng.helpers.WirelessTerminalGuiObject; import appeng.helpers.WirelessTerminalGuiObject;
import net.minecraft.client.gui.Gui;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
@@ -30,4 +31,11 @@ public class GuiWirelessPatternTerminal extends GuiPatternTerm {
super(inventoryPlayer, te, new ContainerWirelessPatternTerminal(inventoryPlayer, te)); super(inventoryPlayer, te, new ContainerWirelessPatternTerminal(inventoryPlayer, te));
this.setReservedSpace(81); 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);
}
} }
@@ -20,17 +20,22 @@ package appeng.client.gui.implementations;
import appeng.api.implementations.guiobjects.IPortableCell; 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; import net.minecraft.entity.player.InventoryPlayer;
public class GuiWirelessTerm extends GuiMEPortableCell { public class GuiWirelessTerm extends GuiMEMonitorable {
public GuiWirelessTerm(final InventoryPlayer inventoryPlayer, final IPortableCell te) { public GuiWirelessTerm(final InventoryPlayer inventoryPlayer, final WirelessTerminalGuiObject te) {
super(inventoryPlayer, te); super(inventoryPlayer, te, new ContainerWirelessTerm(inventoryPlayer, te));
} }
@Override @Override
protected int getMaxRows() { public void drawBG(int offsetX, int offsetY, int mouseX, int mouseY) {
return this.defaultGetMaxRows(); this.bindTexture("guis/wirelessupgrades.png");
Gui.drawModalRectWithCustomSizedTexture(offsetX + 198, offsetY + 127, 0, 0, 32, 32, 32, 32);
super.drawBG(offsetX, offsetY, mouseX, mouseY);
} }
} }
@@ -136,7 +136,7 @@ public class ContainerMEPortableCell extends ContainerMEMonitorable implements I
if (wirelessTerminalGUIObject != null) { if (wirelessTerminalGUIObject != null) {
for (int upgradeSlot = 0; upgradeSlot < availableUpgrades(); upgradeSlot++) { for (int upgradeSlot = 0; upgradeSlot < availableUpgrades(); upgradeSlot++) {
this.addSlotToContainer( 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()); .setNotDraggable());
} }
} }
@@ -157,7 +157,7 @@ public class ContainerMEPortableCell extends ContainerMEMonitorable implements I
} }
} }
private void loadFromNBT() { protected void loadFromNBT() {
NBTTagCompound data = wirelessTerminalGUIObject.getItemStack().getTagCompound(); NBTTagCompound data = wirelessTerminalGUIObject.getItemStack().getTagCompound();
if (data != null) { if (data != null) {
upgrades.readFromNBT(wirelessTerminalGUIObject.getItemStack().getTagCompound().getCompoundTag("upgrades")); upgrades.readFromNBT(wirelessTerminalGUIObject.getItemStack().getTagCompound().getCompoundTag("upgrades"));
@@ -40,23 +40,18 @@ import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.wrapper.PlayerInvWrapper; import net.minecraftforge.items.wrapper.PlayerInvWrapper;
public class ContainerWirelessCraftingTerminal extends ContainerMEPortableCell implements IAEAppEngInventory, IContainerCraftingPacket { public class ContainerWirelessCraftingTerminal extends ContainerMEPortableCell implements IContainerCraftingPacket {
private final WirelessTerminalGuiObject wirelessTerminalGUIObject;
private final AppEngInternalInventory output = new AppEngInternalInventory(this, 1); private final AppEngInternalInventory output = new AppEngInternalInventory(this, 1);
private final SlotCraftingMatrix[] craftingSlots = new SlotCraftingMatrix[9]; private final SlotCraftingMatrix[] craftingSlots = new SlotCraftingMatrix[9];
private final SlotCraftingTerm outputSlot; private final SlotCraftingTerm outputSlot;
private final AppEngInternalInventory craftingGrid = new AppEngInternalInventory(this, 9); private AppEngInternalInventory craftingGrid;
private IRecipe currentRecipe; private IRecipe currentRecipe;
public ContainerWirelessCraftingTerminal(final InventoryPlayer ip, final WirelessTerminalGuiObject gui) { public ContainerWirelessCraftingTerminal(final InventoryPlayer ip, final WirelessTerminalGuiObject gui) {
super(ip, gui, false); super(ip, gui, true);
this.wirelessTerminalGUIObject = gui;
this.loadFromNBT();
final IItemHandler crafting = this.craftingGrid; final IItemHandler crafting = this.craftingGrid;
@@ -104,11 +99,13 @@ public class ContainerWirelessCraftingTerminal extends ContainerMEPortableCell i
} }
} }
@Override
protected void loadFromNBT() { protected void loadFromNBT() {
super.loadFromNBT();
this.craftingGrid = new AppEngInternalInventory(this, 9);
NBTTagCompound data = wirelessTerminalGUIObject.getItemStack().getTagCompound(); NBTTagCompound data = wirelessTerminalGUIObject.getItemStack().getTagCompound();
if (data != null) { if (data != null) {
this.craftingGrid.readFromNBT(data, "craftingGrid"); this.craftingGrid.readFromNBT(data, "craftingGrid");
upgrades.readFromNBT(wirelessTerminalGUIObject.getItemStack().getTagCompound().getCompoundTag("upgrades"));
} }
} }
@@ -48,7 +48,7 @@ import net.minecraftforge.items.IItemHandler;
import static appeng.helpers.PatternHelper.CRAFTING_GRID_DIMENSION; 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 WirelessTerminalGuiObject wirelessTerminalGUIObject;
private final int slot; private final int slot;
@@ -259,9 +259,19 @@ public class ContainerWirelessPatternTerminal extends ContainerPatternEncoder im
if (wirelessTerminalGUIObject != null) { if (wirelessTerminalGUIObject != null) {
for (int upgradeSlot = 0; upgradeSlot < availableUpgrades(); upgradeSlot++) { for (int upgradeSlot = 0; upgradeSlot < availableUpgrades(); upgradeSlot++) {
this.addSlotToContainer( 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()); .setNotDraggable());
} }
} }
} }
@Override
public int getInventorySlot() {
return wirelessTerminalGUIObject.getInventorySlot();
}
@Override
public boolean isBaubleSlot() {
return wirelessTerminalGUIObject.isBaubleSlot();
}
} }
+11 -3
View File
@@ -43,6 +43,7 @@ import appeng.container.AEBaseContainer;
import appeng.container.ContainerNull; import appeng.container.ContainerNull;
import appeng.container.ContainerOpenContext; import appeng.container.ContainerOpenContext;
import appeng.container.implementations.*; import appeng.container.implementations.*;
import appeng.container.interfaces.IInventorySlotAware;
import appeng.fluids.container.*; import appeng.fluids.container.*;
import appeng.fluids.helper.IFluidInterfaceHost; import appeng.fluids.helper.IFluidInterfaceHost;
import appeng.fluids.parts.PartFluidFormationPlane; import appeng.fluids.parts.PartFluidFormationPlane;
@@ -243,10 +244,10 @@ public enum GuiBridge implements IGuiHandler {
} else { } else {
if (stem) { if (stem) {
if (player.openContainer instanceof IInventorySlotAware) { if (player.openContainer instanceof IInventorySlotAware) {
int slot = ((IInventorySlotAware)player.openContainer).getInventorySlot(); int slot = ((IInventorySlotAware) player.openContainer).getInventorySlot();
it = BaublesApi.getBaublesHandler(player).getStackInSlot(slot); it = BaublesApi.getBaublesHandler(player).getStackInSlot(slot);
} }
}else { } else {
it = BaublesApi.getBaublesHandler(player).getStackInSlot(x); it = BaublesApi.getBaublesHandler(player).getStackInSlot(x);
} }
} }
@@ -363,7 +364,14 @@ public enum GuiBridge implements IGuiHandler {
it = player.inventory.getStackInSlot(x); it = player.inventory.getStackInSlot(x);
} }
} else { } 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); final Object myItem = this.getGuiObject(it, player, w, x, y, z);
if (myItem != null && ID.CorrectTileOrPart(myItem)) { if (myItem != null && ID.CorrectTileOrPart(myItem)) {
@@ -22,12 +22,34 @@ package appeng.fluids.client.gui;
import appeng.api.implementations.guiobjects.IPortableCell; import appeng.api.implementations.guiobjects.IPortableCell;
import appeng.fluids.container.ContainerWirelessFluidTerminal; import appeng.fluids.container.ContainerWirelessFluidTerminal;
import appeng.helpers.WirelessTerminalGuiObject; import appeng.helpers.WirelessTerminalGuiObject;
import net.minecraft.client.gui.Gui;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import java.awt.*;
import java.util.ArrayList;
import java.util.List;
public class GuiWirelessFluidTerminal extends GuiMEPortableFluidCell { public class GuiWirelessFluidTerminal extends GuiMEPortableFluidCell {
public GuiWirelessFluidTerminal(final InventoryPlayer inventoryPlayer, final WirelessTerminalGuiObject te) { public GuiWirelessFluidTerminal(final InventoryPlayer inventoryPlayer, final WirelessTerminalGuiObject te) {
super(inventoryPlayer, te, new ContainerWirelessFluidTerminal(inventoryPlayer, 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<Rectangle> getJEIExclusionArea() {
List<Rectangle> ea = new ArrayList<>();
ea.add(new Rectangle(this.guiLeft + 174,
this.guiTop + 131,
32,
32));
return ea;
}
} }
@@ -65,7 +65,7 @@ import javax.annotation.Nonnull;
import java.io.IOException; import java.io.IOException;
import java.nio.BufferOverflowException; import java.nio.BufferOverflowException;
public class ContainerMEPortableFluidCell extends AEBaseContainer implements IAEAppEngInventory, IConfigManagerHost, IConfigurableObject, IMEMonitorHandlerReceiver<IAEFluidStack>, IUpgradeableCellContainer { public class ContainerMEPortableFluidCell extends AEBaseContainer implements IAEAppEngInventory, IConfigManagerHost, IConfigurableObject, IMEMonitorHandlerReceiver<IAEFluidStack>, IUpgradeableCellContainer, IInventorySlotAware {
protected final WirelessTerminalGuiObject wirelessTerminalGUIObject; protected final WirelessTerminalGuiObject wirelessTerminalGUIObject;
@@ -552,7 +552,7 @@ public class ContainerMEPortableFluidCell extends AEBaseContainer implements IAE
if (wirelessTerminalGUIObject != null) { if (wirelessTerminalGUIObject != null) {
for (int upgradeSlot = 0; upgradeSlot < availableUpgrades(); upgradeSlot++) { for (int upgradeSlot = 0; upgradeSlot < availableUpgrades(); upgradeSlot++) {
this.addSlotToContainer( 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()); .setNotDraggable());
} }
} }
@@ -578,4 +578,14 @@ public class ContainerMEPortableFluidCell extends AEBaseContainer implements IAE
@Override @Override
public void onChangeInventory(IItemHandler inv, int slot, InvOperation mc, ItemStack removedStack, ItemStack newStack) { 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();
}
} }