diff --git a/src/main/java/com/glodblock/github/client/FluidInterfaceButtons.java b/src/main/java/com/glodblock/github/client/FluidInterfaceButtons.java new file mode 100644 index 00000000..414f2b14 --- /dev/null +++ b/src/main/java/com/glodblock/github/client/FluidInterfaceButtons.java @@ -0,0 +1,93 @@ +package com.glodblock.github.client; + +import java.util.List; + +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.StatCollector; + +import org.lwjgl.input.Mouse; + +import com.glodblock.github.FluidCraft; +import com.glodblock.github.loader.ItemAndBlockHolder; +import com.glodblock.github.network.CPacketCustomButtonUpdate; +import com.glodblock.github.network.CPacketSwitchGuis; + +import appeng.api.config.Settings; +import appeng.api.config.SidelessMode; +import appeng.client.gui.widgets.GuiImgButton; +import appeng.client.gui.widgets.GuiTabButton; +import appeng.core.sync.network.NetworkHandler; +import appeng.core.sync.packets.PacketConfigButton; +import appeng.helpers.ICustomButtonDataObject; +import io.netty.buffer.ByteBuf; + +public class FluidInterfaceButtons implements ICustomButtonDataObject { + + private GuiImgButton sidelessMode; + private GuiTabButton switcher; + private final boolean fullBlock; + public SidelessMode sidelessSate; + + public FluidInterfaceButtons(final boolean fullBlock) { + this.fullBlock = fullBlock; + } + + public void initCustomButtons(int guiLeft, int guiTop, int xSize, int ySize, int xOffset, int yOffset, + List buttonList) { + if (fullBlock) { + this.sidelessMode = new GuiImgButton( + guiLeft - 18, + guiTop + yOffset, + Settings.SIDELESS_MODE, + SidelessMode.SIDELESS); + buttonList.add(this.sidelessMode); + } + + this.switcher = new GuiTabButton( + guiLeft + 132, + guiTop, + !fullBlock ? ItemAndBlockHolder.FLUID_INTERFACE.stack() : ItemAndBlockHolder.INTERFACE.stack(), + StatCollector.translateToLocal("ae2fc.tooltip.switch_fluid_interface"), + RenderItem.getInstance()); + buttonList.add(this.switcher); + + FluidCraft.proxy.netHandler.sendToServer(new CPacketCustomButtonUpdate()); + } + + @Override + public boolean actionPerformedCustomButtons(final GuiButton btn) { + if (btn == this.switcher) { + FluidCraft.proxy.netHandler.sendToServer(new CPacketSwitchGuis()); + return true; + } else if (fullBlock && btn == this.sidelessMode) { + final boolean backwards = Mouse.isButtonDown(1); + NetworkHandler.instance.sendToServer(new PacketConfigButton(this.sidelessMode.getSetting(), backwards)); + FluidCraft.proxy.netHandler.sendToServer(new CPacketCustomButtonUpdate()); + return true; + } + + return false; + } + + @Override + public void readData(NBTTagCompound tag) {} + + @Override + public void writeData(NBTTagCompound tag) {} + + @Override + public void readByte(ByteBuf buf) { + this.sidelessMode.set(SidelessMode.values()[buf.readInt()]); + } + + @Override + public void writeByte(ByteBuf buf) { + buf.writeInt(this.sidelessSate.ordinal()); + } + + public void setSidelessMode(SidelessMode sm) { + this.sidelessSate = sm; + } +} diff --git a/src/main/java/com/glodblock/github/inventory/UltraTerminalButtons.java b/src/main/java/com/glodblock/github/client/UltraTerminalButtons.java similarity index 99% rename from src/main/java/com/glodblock/github/inventory/UltraTerminalButtons.java rename to src/main/java/com/glodblock/github/client/UltraTerminalButtons.java index b9e7bd46..f728d436 100644 --- a/src/main/java/com/glodblock/github/inventory/UltraTerminalButtons.java +++ b/src/main/java/com/glodblock/github/client/UltraTerminalButtons.java @@ -1,4 +1,4 @@ -package com.glodblock.github.inventory; +package com.glodblock.github.client; import static appeng.util.Platform.nextEnum; import static com.glodblock.github.common.item.ItemWirelessUltraTerminal.MODE; diff --git a/src/main/java/com/glodblock/github/client/gui/GuiDualInterface.java b/src/main/java/com/glodblock/github/client/gui/GuiDualInterface.java deleted file mode 100644 index 1cbadf7b..00000000 --- a/src/main/java/com/glodblock/github/client/gui/GuiDualInterface.java +++ /dev/null @@ -1,280 +0,0 @@ -package com.glodblock.github.client.gui; - -import net.minecraft.client.gui.GuiButton; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.StatCollector; - -import org.lwjgl.input.Keyboard; -import org.lwjgl.input.Mouse; - -import com.glodblock.github.client.gui.container.ContainerDualInterface; -import com.glodblock.github.common.parts.PartFluidInterface; -import com.glodblock.github.common.tile.TileFluidInterface; -import com.glodblock.github.inventory.InventoryHandler; -import com.glodblock.github.inventory.gui.GuiType; -import com.glodblock.github.loader.ItemAndBlockHolder; -import com.glodblock.github.util.ModAndClassUtil; -import com.glodblock.github.util.NameConst; - -import appeng.api.config.AdvancedBlockingMode; -import appeng.api.config.FuzzyMode; -import appeng.api.config.InsertionMode; -import appeng.api.config.LockCraftingMode; -import appeng.api.config.Settings; -import appeng.api.config.SidelessMode; -import appeng.api.config.Upgrades; -import appeng.api.config.YesNo; -import appeng.client.gui.implementations.GuiUpgradeable; -import appeng.client.gui.widgets.GuiImgButton; -import appeng.client.gui.widgets.GuiSimpleImgButton; -import appeng.client.gui.widgets.GuiTabButton; -import appeng.client.gui.widgets.GuiToggleButton; -import appeng.container.implementations.ContainerInterface; -import appeng.core.AELog; -import appeng.core.localization.ButtonToolTips; -import appeng.core.localization.GuiText; -import appeng.core.sync.network.NetworkHandler; -import appeng.core.sync.packets.PacketConfigButton; -import appeng.core.sync.packets.PacketValueConfig; -import appeng.helpers.IInterfaceHost; - -public class GuiDualInterface extends GuiUpgradeable { - - private GuiTabButton priority; - private GuiTabButton switcher; - private GuiImgButton BlockMode; - private GuiImgButton SmartBlockMode; - private GuiImgButton fuzzyMode; - private GuiToggleButton interfaceMode; - private GuiImgButton insertionMode; - private GuiImgButton sidelessMode; - private GuiSimpleImgButton doublePatterns; - private GuiToggleButton patternOptimization; - private GuiImgButton advancedBlockingMode; - private GuiImgButton lockCraftingMode; - private final IInterfaceHost host; - - public GuiDualInterface(InventoryPlayer inventoryPlayer, IInterfaceHost te) { - super(new ContainerDualInterface(inventoryPlayer, te)); - this.host = te; - this.ySize = 211; - } - - @Override - protected void addButtons() { - this.priority = new GuiTabButton( - this.guiLeft + 154, - this.guiTop, - 2 + 4 * 16, - GuiText.Priority.getLocal(), - itemRender); - this.buttonList.add(this.priority); - - this.switcher = new GuiTabButton( - this.guiLeft + 132, - this.guiTop, - host instanceof PartFluidInterface ? ItemAndBlockHolder.FLUID_INTERFACE.stack() - : ItemAndBlockHolder.INTERFACE.stack(), - StatCollector.translateToLocal("ae2fc.tooltip.switch_fluid_interface"), - itemRender); - this.buttonList.add(this.switcher); - - int offset = 8; - - this.BlockMode = new GuiImgButton(this.guiLeft - 18, this.guiTop + offset, Settings.BLOCK, YesNo.NO); - this.buttonList.add(this.BlockMode); - - this.SmartBlockMode = new GuiImgButton(this.guiLeft - 36, this.guiTop + offset, Settings.SMART_BLOCK, YesNo.NO); - this.buttonList.add(this.SmartBlockMode); - - offset += 18; - - this.interfaceMode = new GuiToggleButton( - this.guiLeft - 18, - this.guiTop + offset, - 84, - 85, - GuiText.InterfaceTerminal.getLocal(), - GuiText.InterfaceTerminalHint.getLocal()); - this.buttonList.add(this.interfaceMode); - - offset += 18; - - this.insertionMode = new GuiImgButton( - this.guiLeft - 18, - this.guiTop + offset, - Settings.INSERTION_MODE, - InsertionMode.DEFAULT); - this.buttonList.add(this.insertionMode); - - offset += 18; - - this.doublePatterns = new GuiSimpleImgButton(this.guiLeft - 18, this.guiTop + offset, 71, ""); - this.doublePatterns.enabled = false; - this.buttonList.add(this.doublePatterns); - - offset += 18; - - this.patternOptimization = new GuiToggleButton( - this.guiLeft - 18, - this.guiTop + offset, - 178, - 194, - GuiText.PatternOptimization.getLocal(), - GuiText.PatternOptimizationHint.getLocal()); - this.buttonList.add(this.patternOptimization); - - offset += 18; - - this.advancedBlockingMode = new GuiImgButton( - this.guiLeft - 18, - this.guiTop + offset, - Settings.ADVANCED_BLOCKING_MODE, - AdvancedBlockingMode.DEFAULT); - this.buttonList.add(this.advancedBlockingMode); - this.advancedBlockingMode.visible = this.bc.getInstalledUpgrades(Upgrades.ADVANCED_BLOCKING) > 0; - - offset += 18; - - if (isTile()) { - this.sidelessMode = new GuiImgButton( - this.guiLeft - 18, - this.guiTop + offset, - Settings.SIDELESS_MODE, - SidelessMode.SIDELESS); - this.buttonList.add(this.sidelessMode); - - offset += 18; - } - - this.lockCraftingMode = new GuiImgButton( - this.guiLeft - 18, - this.guiTop + offset, - Settings.LOCK_CRAFTING_MODE, - LockCraftingMode.NONE); - this.lockCraftingMode.visible = this.bc.getInstalledUpgrades(Upgrades.LOCK_CRAFTING) > 0; - this.buttonList.add(lockCraftingMode); - - offset += 18; - - this.fuzzyMode = new GuiImgButton( - this.guiLeft - 18, - this.guiTop + offset, - Settings.FUZZY_MODE, - FuzzyMode.IGNORE_ALL); - this.fuzzyMode.visible = this.bc.getInstalledUpgrades(Upgrades.FUZZY) > 0; - this.buttonList.add(fuzzyMode); - } - - @Override - public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { - if (this.BlockMode != null) { - this.BlockMode.set(((ContainerInterface) this.cvb).getBlockingMode()); - } - if (this.SmartBlockMode != null) { - this.SmartBlockMode.set(((ContainerInterface) this.cvb).getSmartBlockingMode()); - } - if (this.interfaceMode != null) { - this.interfaceMode.setState(((ContainerInterface) this.cvb).getInterfaceTerminalMode() == YesNo.YES); - } - if (this.insertionMode != null) { - this.insertionMode.set(((ContainerInterface) this.cvb).getInsertionMode()); - } - if (this.doublePatterns != null) { - this.doublePatterns.enabled = ((ContainerInterface) this.cvb).isAllowedToMultiplyPatterns; - if (this.doublePatterns.enabled) this.doublePatterns.setTooltip( - ButtonToolTips.DoublePatterns.getLocal() + "\n" + ButtonToolTips.DoublePatternsHint.getLocal()); - else this.doublePatterns.setTooltip( - ButtonToolTips.DoublePatterns.getLocal() + "\n" + ButtonToolTips.OptimizePatternsNoReq.getLocal()); - } - if (this.patternOptimization != null) { - this.patternOptimization.setState(((ContainerInterface) this.cvb).getPatternOptimization() == YesNo.YES); - } - if (this.sidelessMode != null) { - this.sidelessMode.set(((ContainerDualInterface) this.cvb).getSidelessMode()); - } - if (this.advancedBlockingMode != null) { - this.advancedBlockingMode.set(((ContainerDualInterface) this.cvb).getAdvancedBlockingMode()); - } - if (this.lockCraftingMode != null) { - this.lockCraftingMode.set(((ContainerInterface) this.cvb).getLockCraftingMode()); - } - if (this.fuzzyMode != null) { - this.fuzzyMode.set(((ContainerInterface) this.cvb).getFuzzyMode()); - } - this.fontRendererObj.drawString( - getGuiDisplayName(StatCollector.translateToLocal(NameConst.GUI_FLUID_INTERFACE)), - 8, - 6, - 4210752); - } - - @Override - protected String getBackground() { - if (!ModAndClassUtil.isBigInterface) return "guis/interface.png"; - return switch (((ContainerInterface) this.cvb).getPatternCapacityCardsInstalled()) { - case -1 -> "guis/interfacenonenoconfig.png"; - case 1 -> "guis/interface2.png"; - case 2 -> "guis/interface3.png"; - case 3 -> "guis/interface4.png"; - default -> "guis/interface.png"; - }; - } - - @Override - protected void actionPerformed(final GuiButton btn) { - super.actionPerformed(btn); - final boolean backwards = Mouse.isButtonDown(1); - if (btn == this.priority) { - // InventoryHandler.switchGui(GuiType.PRIORITY); - } else if (btn == this.switcher) { - InventoryHandler.switchGui(GuiType.DUAL_INTERFACE_FLUID); - } else if (btn == this.interfaceMode) { - NetworkHandler.instance.sendToServer(new PacketConfigButton(Settings.INTERFACE_TERMINAL, backwards)); - } else if (btn == this.BlockMode) { - NetworkHandler.instance.sendToServer(new PacketConfigButton(this.BlockMode.getSetting(), backwards)); - } else if (btn == this.SmartBlockMode) { - NetworkHandler.instance.sendToServer(new PacketConfigButton(this.SmartBlockMode.getSetting(), backwards)); - } else if (btn == this.insertionMode) { - NetworkHandler.instance.sendToServer(new PacketConfigButton(this.insertionMode.getSetting(), backwards)); - } else if (btn == this.doublePatterns) { - try { - int val = Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) ? 1 : 0; - if (backwards) val |= 0b10; - NetworkHandler.instance - .sendToServer(new PacketValueConfig("Interface.DoublePatterns", String.valueOf(val))); - } catch (final Throwable e) { - AELog.debug(e); - } - } else if (btn == this.patternOptimization) { - NetworkHandler.instance.sendToServer(new PacketConfigButton(Settings.PATTERN_OPTIMIZATION, backwards)); - } else if (btn == this.sidelessMode) { - NetworkHandler.instance.sendToServer(new PacketConfigButton(this.sidelessMode.getSetting(), backwards)); - } else if (btn == this.advancedBlockingMode) { - NetworkHandler.instance - .sendToServer(new PacketConfigButton(this.advancedBlockingMode.getSetting(), backwards)); - } else if (btn == this.lockCraftingMode) { - NetworkHandler.instance.sendToServer(new PacketConfigButton(this.lockCraftingMode.getSetting(), backwards)); - } else if (btn == this.fuzzyMode) { - NetworkHandler.instance.sendToServer(new PacketConfigButton(this.fuzzyMode.getSetting(), backwards)); - } - } - - private boolean isTile() { - return this.host instanceof TileFluidInterface; - } - - @Override - protected void handleButtonVisibility() { - super.handleButtonVisibility(); - if (this.advancedBlockingMode != null) { - this.advancedBlockingMode.setVisibility(this.bc.getInstalledUpgrades(Upgrades.ADVANCED_BLOCKING) > 0); - } - if (this.lockCraftingMode != null) { - this.lockCraftingMode.setVisibility(this.bc.getInstalledUpgrades(Upgrades.LOCK_CRAFTING) > 0); - } - if (this.fuzzyMode != null) { - this.fuzzyMode.setVisibility(this.bc.getInstalledUpgrades(Upgrades.FUZZY) > 0); - } - } -} diff --git a/src/main/java/com/glodblock/github/client/gui/GuiFluidInterface.java b/src/main/java/com/glodblock/github/client/gui/GuiFluidInterface.java index 1e70b9cd..8fa334a6 100644 --- a/src/main/java/com/glodblock/github/client/gui/GuiFluidInterface.java +++ b/src/main/java/com/glodblock/github/client/gui/GuiFluidInterface.java @@ -1,13 +1,11 @@ package com.glodblock.github.client.gui; -import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Slot; import net.minecraft.util.ResourceLocation; -import net.minecraft.util.StatCollector; import net.minecraftforge.common.util.ForgeDirection; import org.lwjgl.opengl.GL11; @@ -17,27 +15,22 @@ import com.glodblock.github.client.gui.container.ContainerFluidInterface; import com.glodblock.github.common.parts.PartFluidInterface; import com.glodblock.github.inventory.IAEFluidTank; import com.glodblock.github.inventory.IDualHost; -import com.glodblock.github.inventory.InventoryHandler; -import com.glodblock.github.inventory.gui.GuiType; import com.glodblock.github.inventory.gui.MouseRegionManager; import com.glodblock.github.inventory.gui.TankMouseHandler; -import com.glodblock.github.loader.ItemAndBlockHolder; import com.glodblock.github.util.NameConst; import com.glodblock.github.util.RenderUtil; import appeng.api.storage.data.IAEFluidStack; -import appeng.client.gui.AEBaseGui; -import appeng.client.gui.widgets.GuiTabButton; +import appeng.client.gui.GuiSub; import appeng.core.localization.GuiText; -public class GuiFluidInterface extends AEBaseGui { +public class GuiFluidInterface extends GuiSub { private static final ResourceLocation TEX_BG = FluidCraft.resource("textures/gui/interface_fluid.png"); private static final int TANK_X = 35, TANK_X_OFF = 18, TANK_Y = 53; private static final int TANK_WIDTH = 16, TANK_HEIGHT = 68; private final ContainerFluidInterface cont; - private GuiTabButton switcher; private final MouseRegionManager mouseRegions = new MouseRegionManager(this); public GuiFluidInterface(InventoryPlayer ipl, IDualHost tile) { @@ -65,18 +58,6 @@ public class GuiFluidInterface extends AEBaseGui { } catch (final Exception ignore) {} } - @Override - public void initGui() { - super.initGui(); - this.switcher = new GuiTabButton( - this.guiLeft + 154, - this.guiTop, - isPart() ? ItemAndBlockHolder.FLUID_INTERFACE.stack() : ItemAndBlockHolder.INTERFACE.stack(), - StatCollector.translateToLocal("ae2fc.tooltip.switch_fluid_interface"), - itemRender); - this.buttonList.add(this.switcher); - } - @Override public void drawFG(int offsetX, int offsetY, int mouseX, int mouseY) { fontRendererObj.drawString(getGuiDisplayName(I18n.format(NameConst.GUI_FLUID_INTERFACE)), 8, 6, 0x404040); @@ -112,14 +93,6 @@ public class GuiFluidInterface extends AEBaseGui { drawTexturedModalRect(offsetX, offsetY, 0, 0, 176, ySize); } - @Override - protected void actionPerformed(final GuiButton btn) { - super.actionPerformed(btn); - if (btn == this.switcher) { - InventoryHandler.switchGui(GuiType.DUAL_INTERFACE); - } - } - public void update(int id, IAEFluidStack stack) { if (id >= 100) { cont.getTile().setConfig(id - 100, stack); diff --git a/src/main/java/com/glodblock/github/client/gui/container/ContainerDualInterface.java b/src/main/java/com/glodblock/github/client/gui/container/ContainerDualInterface.java deleted file mode 100644 index ea886bbe..00000000 --- a/src/main/java/com/glodblock/github/client/gui/container/ContainerDualInterface.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.glodblock.github.client.gui.container; - -import net.minecraft.entity.player.InventoryPlayer; - -import com.glodblock.github.common.tile.TileFluidInterface; -import com.glodblock.github.inventory.gui.GuiType; -import com.glodblock.github.loader.ItemAndBlockHolder; -import com.glodblock.github.util.FluidPrimaryGui; - -import appeng.api.config.Settings; -import appeng.api.config.SidelessMode; -import appeng.api.parts.IPart; -import appeng.api.util.IConfigManager; -import appeng.container.ContainerOpenContext; -import appeng.container.PrimaryGui; -import appeng.container.guisync.GuiSync; -import appeng.container.implementations.ContainerInterface; -import appeng.helpers.IInterfaceHost; - -public class ContainerDualInterface extends ContainerInterface { - - @GuiSync(11) - public SidelessMode sidelessMode; - - private final boolean isTile; - - public ContainerDualInterface(InventoryPlayer ip, IInterfaceHost te) { - super(ip, te); - this.sidelessMode = SidelessMode.SIDELESS; - this.isTile = te instanceof TileFluidInterface; - } - - public SidelessMode getSidelessMode() { - return this.sidelessMode; - } - - @Override - protected void loadSettingsFromHost(IConfigManager cm) { - super.loadSettingsFromHost(cm); - this.sidelessMode = this.isTile ? (SidelessMode) cm.getSetting(Settings.SIDELESS_MODE) : SidelessMode.SIDELESS; - } - - @Override - public PrimaryGui getPrimaryGui() { - - ContainerOpenContext context = getOpenContext(); - return new FluidPrimaryGui( - GuiType.DUAL_INTERFACE_FLUID, - getTarget() instanceof IPart ? ItemAndBlockHolder.FLUID_INTERFACE.stack() - : ItemAndBlockHolder.INTERFACE.stack(), - context.getTile(), - context.getSide()); - } -} diff --git a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidInterface.java b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidInterface.java index f72ec718..9e4617b8 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidInterface.java +++ b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidInterface.java @@ -15,11 +15,11 @@ import com.glodblock.github.inventory.slot.OptionalFluidSlotFakeTypeOnly; import com.glodblock.github.network.SPacketFluidUpdate; import appeng.api.storage.data.IAEFluidStack; -import appeng.container.AEBaseContainer; +import appeng.container.ContainerSubGui; import appeng.container.slot.IOptionalSlotHost; import appeng.util.item.AEFluidStack; -public class ContainerFluidInterface extends AEBaseContainer implements IOptionalSlotHost { +public class ContainerFluidInterface extends ContainerSubGui implements IOptionalSlotHost { private final IDualHost tile; diff --git a/src/main/java/com/glodblock/github/common/block/BlockFluidInterface.java b/src/main/java/com/glodblock/github/common/block/BlockFluidInterface.java index 33007194..fe42c102 100644 --- a/src/main/java/com/glodblock/github/common/block/BlockFluidInterface.java +++ b/src/main/java/com/glodblock/github/common/block/BlockFluidInterface.java @@ -11,14 +11,12 @@ import net.minecraftforge.common.util.ForgeDirection; import com.glodblock.github.client.render.RenderBlockFluidInterface; import com.glodblock.github.common.tabs.FluidCraftingTabs; import com.glodblock.github.common.tile.TileFluidInterface; -import com.glodblock.github.inventory.InventoryHandler; -import com.glodblock.github.inventory.gui.GuiType; -import com.glodblock.github.util.BlockPos; import com.glodblock.github.util.NameConst; import appeng.api.util.IOrientable; import appeng.block.AEBaseItemBlock; import appeng.core.features.AEFeature; +import appeng.core.sync.GuiBridge; import appeng.tile.misc.TileInterface; import appeng.util.Platform; import cpw.mods.fml.common.registry.GameRegistry; @@ -50,12 +48,7 @@ public class BlockFluidInterface extends FCBaseBlock { final TileInterface tg = this.getTileEntity(world, x, y, z); if (tg != null) { if (Platform.isServer()) { - InventoryHandler.openGui( - player, - world, - new BlockPos(x, y, z), - ForgeDirection.getOrientation(facing), - GuiType.DUAL_INTERFACE); + Platform.openGUI(player, tg, ForgeDirection.getOrientation(facing), GuiBridge.GUI_INTERFACE); } return true; } diff --git a/src/main/java/com/glodblock/github/common/item/ItemPartFluidInterface.java b/src/main/java/com/glodblock/github/common/item/ItemPartFluidInterface.java index c2ce3747..c393c492 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemPartFluidInterface.java +++ b/src/main/java/com/glodblock/github/common/item/ItemPartFluidInterface.java @@ -2,7 +2,6 @@ package com.glodblock.github.common.item; import javax.annotation.Nullable; -import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -46,7 +45,9 @@ public class ItemPartFluidInterface extends FCBaseItem implements IPartItem { } @Override - public void registerIcons(IIconRegister _iconRegister) {} + protected String getIconString() { + return NameConst.RES_KEY + "fluid_interface"; + } @Override @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java b/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java index 69ec046b..e511bc60 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java +++ b/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java @@ -19,9 +19,9 @@ import net.minecraftforge.common.util.ForgeDirection; import org.apache.commons.lang3.tuple.ImmutablePair; import com.glodblock.github.FluidCraft; +import com.glodblock.github.client.UltraTerminalButtons; import com.glodblock.github.common.tabs.FluidCraftingTabs; import com.glodblock.github.inventory.InventoryHandler; -import com.glodblock.github.inventory.UltraTerminalButtons; import com.glodblock.github.inventory.gui.GuiType; import com.glodblock.github.inventory.item.WirelessLevelTerminalInventory; import com.glodblock.github.inventory.item.WirelessMagnet; diff --git a/src/main/java/com/glodblock/github/common/parts/PartFluidInterface.java b/src/main/java/com/glodblock/github/common/parts/PartFluidInterface.java index 3905ac0b..5fb29968 100644 --- a/src/main/java/com/glodblock/github/common/parts/PartFluidInterface.java +++ b/src/main/java/com/glodblock/github/common/parts/PartFluidInterface.java @@ -1,26 +1,22 @@ package com.glodblock.github.common.parts; import java.io.IOException; -import java.util.Objects; +import java.util.List; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.client.gui.GuiButton; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; -import com.glodblock.github.client.textures.FCPartsTexture; +import com.glodblock.github.client.FluidInterfaceButtons; import com.glodblock.github.common.item.ItemFluidPacket; import com.glodblock.github.inventory.AEFluidInventory; import com.glodblock.github.inventory.IAEFluidTank; import com.glodblock.github.inventory.IDualHost; -import com.glodblock.github.inventory.InventoryHandler; -import com.glodblock.github.inventory.gui.GuiType; -import com.glodblock.github.util.BlockPos; +import com.glodblock.github.loader.ItemAndBlockHolder; import com.glodblock.github.util.DualityFluidInterface; import com.glodblock.github.util.Util; @@ -31,86 +27,27 @@ import appeng.api.networking.events.MENetworkEventSubscribe; import appeng.api.networking.events.MENetworkPowerStatusChange; import appeng.api.networking.ticking.TickRateModulation; import appeng.api.networking.ticking.TickingRequest; -import appeng.api.parts.IPartRenderHelper; import appeng.api.storage.data.IAEFluidStack; -import appeng.client.texture.CableBusTextures; +import appeng.helpers.ICustomButtonDataObject; +import appeng.helpers.ICustomButtonProvider; import appeng.parts.misc.PartInterface; import appeng.tile.inventory.AppEngInternalAEInventory; -import appeng.util.Platform; import cpw.mods.fml.common.network.ByteBufUtils; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -public class PartFluidInterface extends PartInterface implements IDualHost { +public class PartFluidInterface extends PartInterface implements IDualHost, ICustomButtonProvider { private final AppEngInternalAEInventory config = new AppEngInternalAEInventory(this, 6); private final DualityFluidInterface fluidDuality = new DualityFluidInterface(this.getProxy(), this); + private ICustomButtonDataObject customButtonDataObject; + public PartFluidInterface(ItemStack is) { super(is); - } - @Override - @SideOnly(Side.CLIENT) - public void renderStatic(final int x, final int y, final int z, final IPartRenderHelper rh, - final RenderBlocks renderer) { - this.setRenderCache(rh.useSimplifiedRendering(x, y, z, this, this.getRenderCache())); - rh.setTexture( - CableBusTextures.PartMonitorSides.getIcon(), - CableBusTextures.PartMonitorSides.getIcon(), - CableBusTextures.PartMonitorBack.getIcon(), - FCPartsTexture.BlockInterface_Face.getIcon(), - CableBusTextures.PartMonitorSides.getIcon(), - CableBusTextures.PartMonitorSides.getIcon()); - - rh.setBounds(2, 2, 14, 14, 14, 16); - rh.renderBlock(x, y, z, renderer); - - rh.setTexture( - CableBusTextures.PartMonitorSides.getIcon(), - CableBusTextures.PartMonitorSides.getIcon(), - CableBusTextures.PartMonitorBack.getIcon(), - FCPartsTexture.BlockInterface_Face.getIcon(), - CableBusTextures.PartMonitorSides.getIcon(), - CableBusTextures.PartMonitorSides.getIcon()); - - rh.setBounds(5, 5, 12, 11, 11, 13); - rh.renderBlock(x, y, z, renderer); - - rh.setTexture( - CableBusTextures.PartMonitorSidesStatus.getIcon(), - CableBusTextures.PartMonitorSidesStatus.getIcon(), - CableBusTextures.PartMonitorBack.getIcon(), - FCPartsTexture.BlockInterface_Face.getIcon(), - CableBusTextures.PartMonitorSidesStatus.getIcon(), - CableBusTextures.PartMonitorSidesStatus.getIcon()); - - rh.setBounds(5, 5, 13, 11, 11, 14); - rh.renderBlock(x, y, z, renderer); - - this.renderLights(x, y, z, rh, renderer); - } - - @Override - @SideOnly(Side.CLIENT) - public void renderInventory(final IPartRenderHelper rh, final RenderBlocks renderer) { - rh.setTexture( - CableBusTextures.PartMonitorSides.getIcon(), - CableBusTextures.PartMonitorSides.getIcon(), - CableBusTextures.PartMonitorBack.getIcon(), - FCPartsTexture.BlockInterface_Face.getIcon(), - CableBusTextures.PartMonitorSides.getIcon(), - CableBusTextures.PartMonitorSides.getIcon()); - - rh.setBounds(2, 2, 14, 14, 14, 16); - rh.renderInventoryBox(renderer); - - rh.setBounds(5, 5, 12, 11, 11, 13); - rh.renderInventoryBox(renderer); - - rh.setBounds(5, 5, 13, 11, 11, 14); - rh.renderInventoryBox(renderer); + this.customButtonDataObject = new FluidInterfaceButtons(false); } @MENetworkEventSubscribe @@ -222,22 +159,6 @@ public class PartFluidInterface extends PartInterface implements IDualHost { return fluidDuality.getTankInfo(from); } - @Override - public boolean onPartActivate(final EntityPlayer player, final Vec3 pos) { - if (player.isSneaking()) { - return false; - } - if (Platform.isServer()) { - InventoryHandler.openGui( - player, - this.getHost().getTile().getWorldObj(), - new BlockPos(this.getHost().getTile()), - Objects.requireNonNull(this.getSide()), - GuiType.DUAL_INTERFACE); - } - return true; - } - @Override public void onFluidInventoryChanged(IAEFluidTank inv, int slot) { saveChanges(); @@ -283,4 +204,38 @@ public class PartFluidInterface extends PartInterface implements IDualHost { return fluid; } } + + @Override + public ItemStack getPrimaryGuiIcon() { + return ItemAndBlockHolder.FLUID_INTERFACE.stack(); + } + + @Override + public void writeCustomButtonData() {} + + @Override + public void readCustomButtonData() {} + + @Override + public void initCustomButtons(int guiLeft, int guiTop, int xSize, int ySize, int xOffset, int yOffset, + List buttonList) { + if (customButtonDataObject != null) + customButtonDataObject.initCustomButtons(guiLeft, guiTop, xSize, ySize, xOffset, yOffset, buttonList); + } + + @SideOnly(Side.CLIENT) + @Override + public boolean actionPerformedCustomButtons(final GuiButton btn) { + return customButtonDataObject != null && customButtonDataObject.actionPerformedCustomButtons(btn); + } + + @Override + public ICustomButtonDataObject getDataObject() { + return customButtonDataObject; + } + + @Override + public void setDataObject(ICustomButtonDataObject dataObject) { + customButtonDataObject = dataObject; + } } diff --git a/src/main/java/com/glodblock/github/common/parts/PartFluidP2PInterface.java b/src/main/java/com/glodblock/github/common/parts/PartFluidP2PInterface.java index 39ce31c0..d237c860 100644 --- a/src/main/java/com/glodblock/github/common/parts/PartFluidP2PInterface.java +++ b/src/main/java/com/glodblock/github/common/parts/PartFluidP2PInterface.java @@ -1,25 +1,23 @@ package com.glodblock.github.common.parts; -import java.util.Objects; +import java.util.List; +import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; -import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; +import com.glodblock.github.client.FluidInterfaceButtons; import com.glodblock.github.common.item.ItemFluidPacket; import com.glodblock.github.inventory.AEFluidInventory; import com.glodblock.github.inventory.IAEFluidTank; import com.glodblock.github.inventory.IDualHost; -import com.glodblock.github.inventory.InventoryHandler; -import com.glodblock.github.inventory.gui.GuiType; import com.glodblock.github.loader.ItemAndBlockHolder; -import com.glodblock.github.util.BlockPos; import com.glodblock.github.util.DualityFluidInterface; import com.glodblock.github.util.Util; @@ -30,20 +28,25 @@ import appeng.api.networking.ticking.TickingRequest; import appeng.api.storage.data.IAEFluidStack; import appeng.api.util.IConfigManager; import appeng.helpers.DualityInterface; +import appeng.helpers.ICustomButtonDataObject; +import appeng.helpers.ICustomButtonProvider; import appeng.parts.p2p.PartP2PInterface; import appeng.parts.p2p.PartP2PTunnel; import appeng.tile.inventory.AppEngInternalAEInventory; -import appeng.util.Platform; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class PartFluidP2PInterface extends PartP2PInterface implements IDualHost { +public class PartFluidP2PInterface extends PartP2PInterface implements IDualHost, ICustomButtonProvider { private final DualityFluidInterface dualityFluid = new DualityFluidInterface(this.getProxy(), this); private final AppEngInternalAEInventory config = new AppEngInternalAEInventory(this, 6); + private ICustomButtonDataObject customButtonDataObject; + public PartFluidP2PInterface(ItemStack is) { super(is); + + this.customButtonDataObject = new FluidInterfaceButtons(false); } @Override @@ -62,28 +65,6 @@ public class PartFluidP2PInterface extends PartP2PInterface implements IDualHost return newTunnel; } - @Override - public boolean onPartActivate(final EntityPlayer p, final Vec3 pos) { - if (super.onPartActivate(p, pos)) { - return true; - } - - if (p.isSneaking()) { - return false; - } - - if (Platform.isServer()) { - InventoryHandler.openGui( - p, - this.getHost().getTile().getWorldObj(), - new BlockPos(this.getHost().getTile()), - Objects.requireNonNull(this.getSide()), - GuiType.DUAL_INTERFACE); - } - - return true; - } - @Override protected void copySettings(final PartP2PTunnel from) { if (from instanceof PartFluidP2PInterface fromInterface) { @@ -186,4 +167,38 @@ public class PartFluidP2PInterface extends PartP2PInterface implements IDualHost dualityFluid.getInternalFluid().setFluidInSlot(id, fluid); } } + + @Override + public ItemStack getPrimaryGuiIcon() { + return ItemAndBlockHolder.FLUID_INTERFACE.stack(); + } + + @Override + public void writeCustomButtonData() {} + + @Override + public void readCustomButtonData() {} + + @Override + public void initCustomButtons(int guiLeft, int guiTop, int xSize, int ySize, int xOffset, int yOffset, + List buttonList) { + if (customButtonDataObject != null) + customButtonDataObject.initCustomButtons(guiLeft, guiTop, xSize, ySize, xOffset, yOffset, buttonList); + } + + @SideOnly(Side.CLIENT) + @Override + public boolean actionPerformedCustomButtons(final GuiButton btn) { + return customButtonDataObject != null && customButtonDataObject.actionPerformedCustomButtons(btn); + } + + @Override + public ICustomButtonDataObject getDataObject() { + return customButtonDataObject; + } + + @Override + public void setDataObject(ICustomButtonDataObject dataObject) { + customButtonDataObject = dataObject; + } } diff --git a/src/main/java/com/glodblock/github/common/tile/TileFluidInterface.java b/src/main/java/com/glodblock/github/common/tile/TileFluidInterface.java index f4f50547..146690ab 100644 --- a/src/main/java/com/glodblock/github/common/tile/TileFluidInterface.java +++ b/src/main/java/com/glodblock/github/common/tile/TileFluidInterface.java @@ -5,6 +5,7 @@ import java.util.List; import javax.annotation.Nullable; +import net.minecraft.client.gui.GuiButton; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -13,6 +14,7 @@ import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; +import com.glodblock.github.client.FluidInterfaceButtons; import com.glodblock.github.common.item.ItemFluidPacket; import com.glodblock.github.inventory.AEFluidInventory; import com.glodblock.github.inventory.IAEFluidTank; @@ -32,17 +34,23 @@ import appeng.api.networking.ticking.TickRateModulation; import appeng.api.networking.ticking.TickingRequest; import appeng.api.storage.data.IAEFluidStack; import appeng.api.util.IConfigManager; +import appeng.helpers.ICustomButtonDataObject; +import appeng.helpers.ICustomButtonProvider; import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.inventory.AppEngInternalAEInventory; import appeng.tile.misc.TileInterface; import cpw.mods.fml.common.network.ByteBufUtils; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -public class TileFluidInterface extends TileInterface implements IDualHost { +public class TileFluidInterface extends TileInterface implements IDualHost, ICustomButtonProvider { private final IConfigManager dualityConfigManager = getInterfaceDuality().getConfigManager(); + private ICustomButtonDataObject customButtonDataObject; + private final DualityFluidInterface fluidDuality = new DualityFluidInterface(this.getProxy(), this) { @Override @@ -59,6 +67,7 @@ public class TileFluidInterface extends TileInterface implements IDualHost { public TileFluidInterface() { super.getInterfaceDuality().getConfigManager().registerSetting(Settings.SIDELESS_MODE, SidelessMode.SIDELESS); + this.customButtonDataObject = new FluidInterfaceButtons(true); } @MENetworkEventSubscribe @@ -226,4 +235,38 @@ public class TileFluidInterface extends TileInterface implements IDualHost { this.fluidDuality.addDrops(drops); super.getDrops(w, x, y, z, drops); } + + @Override + public ItemStack getPrimaryGuiIcon() { + return ItemAndBlockHolder.INTERFACE.stack(); + } + + @Override + public void writeCustomButtonData() {} + + @Override + public void readCustomButtonData() {} + + @Override + public void initCustomButtons(int guiLeft, int guiTop, int xSize, int ySize, int xOffset, int yOffset, + List buttonList) { + if (customButtonDataObject != null) + customButtonDataObject.initCustomButtons(guiLeft, guiTop, xSize, ySize, xOffset, yOffset, buttonList); + } + + @SideOnly(Side.CLIENT) + @Override + public boolean actionPerformedCustomButtons(final GuiButton btn) { + return customButtonDataObject != null && customButtonDataObject.actionPerformedCustomButtons(btn); + } + + @Override + public ICustomButtonDataObject getDataObject() { + return customButtonDataObject; + } + + @Override + public void setDataObject(ICustomButtonDataObject dataObject) { + customButtonDataObject = dataObject; + } } diff --git a/src/main/java/com/glodblock/github/inventory/InventoryHandler.java b/src/main/java/com/glodblock/github/inventory/InventoryHandler.java index b76f03d6..0bc85c9f 100644 --- a/src/main/java/com/glodblock/github/inventory/InventoryHandler.java +++ b/src/main/java/com/glodblock/github/inventory/InventoryHandler.java @@ -8,7 +8,6 @@ import net.minecraftforge.common.util.ForgeDirection; import com.glodblock.github.FluidCraft; import com.glodblock.github.inventory.gui.GuiType; -import com.glodblock.github.network.CPacketSwitchGuis; import com.glodblock.github.util.BlockPos; import appeng.core.sync.GuiBridge; @@ -19,10 +18,6 @@ import cpw.mods.fml.relauncher.SideOnly; public class InventoryHandler implements IGuiHandler { - public static void switchGui(Object guiType) { - FluidCraft.proxy.netHandler.sendToServer(new CPacketSwitchGuis()); - } - public static void openGui(EntityPlayer player, World world, BlockPos pos, ForgeDirection face, Object guiType) { if (Platform.isClient()) { return; diff --git a/src/main/java/com/glodblock/github/inventory/gui/GuiType.java b/src/main/java/com/glodblock/github/inventory/gui/GuiType.java index 6585d267..ad9bc953 100644 --- a/src/main/java/com/glodblock/github/inventory/gui/GuiType.java +++ b/src/main/java/com/glodblock/github/inventory/gui/GuiType.java @@ -6,7 +6,6 @@ import javax.annotation.Nullable; import net.minecraft.entity.player.EntityPlayer; -import com.glodblock.github.client.gui.GuiDualInterface; import com.glodblock.github.client.gui.GuiFluidAutoFiller; import com.glodblock.github.client.gui.GuiFluidInterface; import com.glodblock.github.client.gui.GuiFluidPacketDecoder; @@ -20,7 +19,6 @@ import com.glodblock.github.client.gui.GuiLevelWireless; import com.glodblock.github.client.gui.GuiMagnetFilter; import com.glodblock.github.client.gui.GuiOCPatternEditor; import com.glodblock.github.client.gui.GuiSuperStockReplenisher; -import com.glodblock.github.client.gui.container.ContainerDualInterface; import com.glodblock.github.client.gui.container.ContainerFluidAutoFiller; import com.glodblock.github.client.gui.container.ContainerFluidInterface; import com.glodblock.github.client.gui.container.ContainerFluidPacketDecoder; @@ -47,7 +45,6 @@ import com.google.common.collect.ImmutableList; import appeng.api.storage.ITerminalHost; import appeng.container.implementations.ContainerLevelEmitter; -import appeng.helpers.IInterfaceHost; import appeng.helpers.ILevelEmitter; public enum GuiType { @@ -104,19 +101,6 @@ public enum GuiType { } }), - DUAL_INTERFACE(new TileOrPartGuiFactory<>(IInterfaceHost.class) { - - @Override - protected Object createServerGui(EntityPlayer player, IInterfaceHost inv) { - return new ContainerDualInterface(player.inventory, inv); - } - - @Override - protected Object createClientGui(EntityPlayer player, IInterfaceHost inv) { - return new GuiDualInterface(player.inventory, inv); - } - }), - DUAL_INTERFACE_FLUID(new TileOrPartGuiFactory<>(IDualHost.class) { @Override diff --git a/src/main/java/com/glodblock/github/inventory/item/BaseWirelessInventory.java b/src/main/java/com/glodblock/github/inventory/item/BaseWirelessInventory.java index a18c350c..06b81a58 100644 --- a/src/main/java/com/glodblock/github/inventory/item/BaseWirelessInventory.java +++ b/src/main/java/com/glodblock/github/inventory/item/BaseWirelessInventory.java @@ -1,7 +1,7 @@ package com.glodblock.github.inventory.item; import static appeng.util.Platform.nextEnum; -import static com.glodblock.github.inventory.UltraTerminalButtons.restockItems; +import static com.glodblock.github.client.UltraTerminalButtons.restockItems; import static com.glodblock.github.inventory.item.WirelessMagnet.modeKey; import java.util.Objects; diff --git a/src/main/java/com/glodblock/github/loader/ChannelLoader.java b/src/main/java/com/glodblock/github/loader/ChannelLoader.java index 8160f2e3..0dd342df 100644 --- a/src/main/java/com/glodblock/github/loader/ChannelLoader.java +++ b/src/main/java/com/glodblock/github/loader/ChannelLoader.java @@ -5,6 +5,7 @@ import net.minecraft.network.Packet; import net.minecraft.world.World; import com.glodblock.github.FluidCraft; +import com.glodblock.github.network.CPacketCustomButtonUpdate; import com.glodblock.github.network.CPacketDumpTank; import com.glodblock.github.network.CPacketFluidPatternTermBtns; import com.glodblock.github.network.CPacketLevelMaintainer; @@ -65,6 +66,11 @@ public class ChannelLoader implements Runnable { SPacketCustomButtonUpdate.class, id++, Side.CLIENT); + netHandler.registerMessage( + new CPacketCustomButtonUpdate.Handler(), + CPacketCustomButtonUpdate.class, + id++, + Side.SERVER); } public static void sendPacketToAllPlayers(Packet packet, World world) { diff --git a/src/main/java/com/glodblock/github/network/CPacketCustomButtonUpdate.java b/src/main/java/com/glodblock/github/network/CPacketCustomButtonUpdate.java new file mode 100644 index 00000000..c640eff9 --- /dev/null +++ b/src/main/java/com/glodblock/github/network/CPacketCustomButtonUpdate.java @@ -0,0 +1,45 @@ +package com.glodblock.github.network; + +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.inventory.Container; + +import com.glodblock.github.FluidCraft; +import com.glodblock.github.client.FluidInterfaceButtons; +import com.glodblock.github.common.tile.TileFluidInterface; + +import appeng.api.config.Settings; +import appeng.api.config.SidelessMode; +import appeng.container.AEBaseContainer; +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; + +public class CPacketCustomButtonUpdate implements IMessage { + + public CPacketCustomButtonUpdate() {} + + @Override + public void fromBytes(ByteBuf buf) {} + + @Override + public void toBytes(ByteBuf buf) {} + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(CPacketCustomButtonUpdate message, MessageContext ctx) { + final Container c = ctx.getServerHandler().playerEntity.openContainer; + final EntityPlayerMP player = ctx.getServerHandler().playerEntity; + + if (c instanceof AEBaseContainer abc && abc.getTarget() instanceof TileFluidInterface tfi) { + if (tfi.getDataObject() instanceof FluidInterfaceButtons fib) { + fib.setSidelessMode((SidelessMode) tfi.getConfigManager().getSetting(Settings.SIDELESS_MODE)); + FluidCraft.proxy.netHandler.sendTo(new SPacketCustomButtonUpdate(fib), player); + } + } + + return null; + } + } +} diff --git a/src/main/java/com/glodblock/github/network/CPacketFluidPatternTermBtns.java b/src/main/java/com/glodblock/github/network/CPacketFluidPatternTermBtns.java index 3c9ce72e..df9b5634 100644 --- a/src/main/java/com/glodblock/github/network/CPacketFluidPatternTermBtns.java +++ b/src/main/java/com/glodblock/github/network/CPacketFluidPatternTermBtns.java @@ -5,9 +5,9 @@ import net.minecraft.inventory.Container; import net.minecraftforge.common.util.ForgeDirection; import com.glodblock.github.FluidCraft; +import com.glodblock.github.client.UltraTerminalButtons; import com.glodblock.github.client.gui.container.ContainerMagnetFilter; import com.glodblock.github.inventory.InventoryHandler; -import com.glodblock.github.inventory.UltraTerminalButtons; import com.glodblock.github.inventory.gui.GuiType; import com.glodblock.github.inventory.item.IWirelessMagnetFilter; import com.glodblock.github.util.BlockPos; diff --git a/src/main/java/com/glodblock/github/network/CPacketSwitchGuis.java b/src/main/java/com/glodblock/github/network/CPacketSwitchGuis.java index 4893dfbc..d2f95762 100644 --- a/src/main/java/com/glodblock/github/network/CPacketSwitchGuis.java +++ b/src/main/java/com/glodblock/github/network/CPacketSwitchGuis.java @@ -13,18 +13,21 @@ import org.apache.commons.lang3.tuple.ImmutablePair; import com.glodblock.github.FluidCraft; import com.glodblock.github.common.item.ItemWirelessUltraTerminal; +import com.glodblock.github.common.parts.PartFluidInterface; +import com.glodblock.github.common.parts.PartFluidP2PInterface; +import com.glodblock.github.common.tile.TileFluidInterface; +import com.glodblock.github.common.tile.TileSuperStockReplenisher; import com.glodblock.github.inventory.InventoryHandler; import com.glodblock.github.inventory.gui.GuiType; -import com.glodblock.github.inventory.item.IWirelessTerminal; import com.glodblock.github.util.BlockPos; import com.glodblock.github.util.UltraTerminalModes; import com.glodblock.github.util.Util; import appeng.container.AEBaseContainer; import appeng.container.ContainerOpenContext; -import appeng.core.sync.GuiBridge; +import appeng.container.IContainerSubGui; +import appeng.container.PrimaryGui; import appeng.helpers.ICustomButtonProvider; -import appeng.util.Platform; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; @@ -87,33 +90,29 @@ public class CPacketSwitchGuis implements IMessage { } } } else { - // open new terminal //TODO in world stuff if (cont instanceof AEBaseContainer aeBaseContainer) { + final PrimaryGui pGui = aeBaseContainer.getPrimaryGui(); ContainerOpenContext context = aeBaseContainer.getOpenContext(); if (context == null) return null; TileEntity te = context.getTile(); - Object guiType = GuiType.GUI_SUPER_STOCK_REPLENISHER; - if (te != null) { - if (guiType instanceof GuiType gt) { - InventoryHandler.openGui( - player, - player.worldObj, - new BlockPos(te), - Objects.requireNonNull(context.getSide()), - gt); - } else if (guiType instanceof GuiBridge gb) Platform.openGUI(player, te, context.getSide(), gb); - } else if (aeBaseContainer.getTarget() instanceof IWirelessTerminal wt) { - if (guiType instanceof GuiType gt) { - InventoryHandler.openGui( - player, - player.worldObj, - new BlockPos( - wt.getInventorySlot(), - Util.GuiHelper.encodeType(0, Util.GuiHelper.GuiType.ITEM), - 0), - Objects.requireNonNull(context.getSide()), - gt); - } else if (guiType instanceof GuiBridge gb) Platform.openGUI(player, null, null, gb); + Object target = aeBaseContainer.getTarget(); + GuiType guiType; + + if (te instanceof TileSuperStockReplenisher) guiType = GuiType.GUI_SUPER_STOCK_REPLENISHER; + else if (te instanceof TileFluidInterface || target instanceof PartFluidInterface + || target instanceof PartFluidP2PInterface) + guiType = GuiType.DUAL_INTERFACE_FLUID; + else return null; + + InventoryHandler.openGui( + player, + player.worldObj, + new BlockPos(te), + Objects.requireNonNull(context.getSide()), + guiType); + + if (player.openContainer instanceof IContainerSubGui sg) { + sg.setPrimaryGui(pGui); } } } diff --git a/src/main/java/com/glodblock/github/util/Util.java b/src/main/java/com/glodblock/github/util/Util.java index d4f2a665..d7b58586 100644 --- a/src/main/java/com/glodblock/github/util/Util.java +++ b/src/main/java/com/glodblock/github/util/Util.java @@ -1,8 +1,8 @@ package com.glodblock.github.util; +import static com.glodblock.github.client.UltraTerminalButtons.restockItems; import static com.glodblock.github.common.item.ItemBaseWirelessTerminal.infinityBoosterCard; import static com.glodblock.github.common.item.ItemBaseWirelessTerminal.infinityEnergyCard; -import static com.glodblock.github.inventory.UltraTerminalButtons.restockItems; import static com.glodblock.github.util.Util.DimensionalCoordSide.hasEnergyCard; import static net.minecraft.init.Items.glass_bottle;