diff options
author | くぁーりぃ <39122497+Quarri6343@users.noreply.github.com> | 2022-08-30 05:04:31 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-29 22:04:31 +0200 |
commit | 4927a8885381ca48479be71e7cdb37aae9cbf5fd (patch) | |
tree | 7664056ac3ec23574942e9a265e6ca37067b8963 /src/main/java/gregtech/api/gui | |
parent | ce1bd5b2138093a61e9b17989ffea7c126a00c12 (diff) | |
download | GT5-Unofficial-4927a8885381ca48479be71e7cdb37aae9cbf5fd.tar.gz GT5-Unofficial-4927a8885381ca48479be71e7cdb37aae9cbf5fd.tar.bz2 GT5-Unofficial-4927a8885381ca48479be71e7cdb37aae9cbf5fd.zip |
Digitalize Super Tank (#1318)
* add new GUI
* make gui interactable
* make later three buttons actually function
* add auto output feature
* do localization
* apply spotless
* spotless pt.2
Diffstat (limited to 'src/main/java/gregtech/api/gui')
4 files changed, 232 insertions, 4 deletions
diff --git a/src/main/java/gregtech/api/gui/GT_Container.java b/src/main/java/gregtech/api/gui/GT_Container.java index b5aebf87f2..083634f030 100644 --- a/src/main/java/gregtech/api/gui/GT_Container.java +++ b/src/main/java/gregtech/api/gui/GT_Container.java @@ -670,7 +670,6 @@ public class GT_Container extends Container { } replaceCursorItemStack(aPlayer, tFilledContainer); } - if (tTankStack.amount <= 0) aFluidAccess.set(null); return tFilledContainer; } diff --git a/src/main/java/gregtech/api/gui/GT_Container_BasicTank.java b/src/main/java/gregtech/api/gui/GT_Container_BasicTank.java index 23769ab0cc..6e4f5b8920 100644 --- a/src/main/java/gregtech/api/gui/GT_Container_BasicTank.java +++ b/src/main/java/gregtech/api/gui/GT_Container_BasicTank.java @@ -22,7 +22,7 @@ import net.minecraftforge.fluids.FluidStack; public class GT_Container_BasicTank extends GT_ContainerMetaTile_Machine { public int mContent = 0; - private int oContent = 0; + protected int oContent = 0; public GT_Container_BasicTank(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity) { super(aInventoryPlayer, aTileEntity); @@ -68,6 +68,11 @@ public class GT_Container_BasicTank extends GT_ContainerMetaTile_Machine { if (((GT_MetaTileEntity_BasicTank) mTileEntity.getMetaTileEntity()).mFluid != null) mContent = ((GT_MetaTileEntity_BasicTank) mTileEntity.getMetaTileEntity()).mFluid.amount; else mContent = 0; + sendProgressBar(); + oContent = mContent; + } + + public void sendProgressBar() { for (Object crafter : this.crafters) { ICrafting player = (ICrafting) crafter; if (mTimer % 500 == 0 || oContent != mContent) { @@ -75,8 +80,6 @@ public class GT_Container_BasicTank extends GT_ContainerMetaTile_Machine { player.sendProgressBarUpdate(this, 101, mContent >>> 16); } } - - oContent = mContent; } @Override diff --git a/src/main/java/gregtech/api/gui/GT_Container_DigitalTank.java b/src/main/java/gregtech/api/gui/GT_Container_DigitalTank.java new file mode 100644 index 0000000000..ae67dfd59f --- /dev/null +++ b/src/main/java/gregtech/api/gui/GT_Container_DigitalTank.java @@ -0,0 +1,135 @@ +package gregtech.api.gui; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.util.GT_Utility; +import gregtech.common.tileentities.storage.GT_MetaTileEntity_DigitalTankBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.ICrafting; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class GT_Container_DigitalTank extends GT_Container_BasicTank { + public boolean outputFluid = false, mLockFluid = false, mVoidFluidPart = false, mVoidFluidFull = false; + + public GT_Container_DigitalTank(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity) { + super(aInventoryPlayer, aTileEntity); + } + + @Override + public void addSlots(InventoryPlayer aInventoryPlayer) { + addSlotToContainer(new Slot(mTileEntity, 0, 81, 17)); + addSlotToContainer(new GT_Slot_Output(mTileEntity, 1, 81, 44)); + addSlotToContainer(new GT_Slot_Render(mTileEntity, 2, 59, 42)); + addSlotToContainer(new GT_Slot_Holo(mTileEntity, 3, 8, 64, false, true, 1)); + addSlotToContainer(new GT_Slot_Holo(mTileEntity, 4, 26, 64, false, true, 1)); + addSlotToContainer(new GT_Slot_Holo(mTileEntity, 5, 44, 64, false, true, 1)); + addSlotToContainer(new GT_Slot_Holo(mTileEntity, 6, 62, 64, false, true, 1)); + } + + @Override + public ItemStack slotClick(int aSlotIndex, int aMouseclick, int aShifthold, EntityPlayer aPlayer) { + + GT_MetaTileEntity_DigitalTankBase mte = ((GT_MetaTileEntity_DigitalTankBase) mTileEntity.getMetaTileEntity()); + + if (aSlotIndex == 3) { + mte.mOutputFluid = !mte.mOutputFluid; + if (!mte.mOutputFluid) { + GT_Utility.sendChatToPlayer(aPlayer, GT_Utility.trans("225", "Fluid Auto Output Disabled")); + } else { + GT_Utility.sendChatToPlayer(aPlayer, GT_Utility.trans("226", "Fluid Auto Output Enabled")); + } + return null; + } + if (aSlotIndex == 4) { + String inBrackets; + mte.mLockFluid = !mte.mLockFluid; + if (mte.mLockFluid) { + if (mte.mFluid == null) { + mte.lockedFluidName = null; + inBrackets = GT_Utility.trans("227", "currently none, will be locked to the next that is put in"); + } else { + mte.lockedFluidName = mte.getDrainableStack().getUnlocalizedName(); + inBrackets = mte.getDrainableStack().getLocalizedName(); + } + GT_Utility.sendChatToPlayer( + aPlayer, String.format("%s (%s)", GT_Utility.trans("228", "1 specific Fluid"), inBrackets)); + } else { + GT_Utility.sendChatToPlayer(aPlayer, GT_Utility.trans("229", "Lock Fluid Mode Disabled")); + } + return null; + } + if (aSlotIndex == 5) { + mte.mVoidFluidPart = !mte.mVoidFluidPart; + if (!mte.mVoidFluidPart) { + GT_Utility.sendChatToPlayer(aPlayer, GT_Utility.trans("230", "Overflow Voiding Mode Disabled")); + } else { + GT_Utility.sendChatToPlayer(aPlayer, GT_Utility.trans("231", "Overflow Voiding Mode Enabled")); + } + return null; + } + if (aSlotIndex == 6) { + mte.mVoidFluidFull = !mte.mVoidFluidFull; + if (!mte.mVoidFluidFull) { + GT_Utility.sendChatToPlayer(aPlayer, GT_Utility.trans("232", "Void Full Mode Disabled")); + } else { + GT_Utility.sendChatToPlayer(aPlayer, GT_Utility.trans("233", "Void Full Mode Enabled")); + } + return null; + } + + return super.slotClick(aSlotIndex, aMouseclick, aShifthold, aPlayer); + } + + @Override + public void sendProgressBar() { + GT_MetaTileEntity_DigitalTankBase mte = ((GT_MetaTileEntity_DigitalTankBase) mTileEntity.getMetaTileEntity()); + + for (Object crafter : this.crafters) { + ICrafting player = (ICrafting) crafter; + if (mContent != oContent) { + player.sendProgressBarUpdate(this, 100, mContent & 65535); + player.sendProgressBarUpdate(this, 101, mContent >>> 16); + } + if (outputFluid != mte.mOutputFluid) { + player.sendProgressBarUpdate(this, 103, mte.mOutputFluid ? 1 : 0); + } + if (mLockFluid != mte.mLockFluid) { + player.sendProgressBarUpdate(this, 104, mte.mLockFluid ? 1 : 0); + } + if (mVoidFluidPart != mte.mVoidFluidPart) { + player.sendProgressBarUpdate(this, 105, mte.mVoidFluidPart ? 1 : 0); + } + if (mVoidFluidFull != mte.mVoidFluidFull) { + player.sendProgressBarUpdate(this, 106, mte.mVoidFluidFull ? 1 : 0); + } + } + + outputFluid = mte.mOutputFluid; + mLockFluid = mte.mLockFluid; + mVoidFluidPart = mte.mVoidFluidPart; + mVoidFluidFull = mte.mVoidFluidFull; + } + + @Override + @SideOnly(Side.CLIENT) + public void updateProgressBar(int id, int value) { + super.updateProgressBar(id, value); + switch (id) { + case 103: + outputFluid = (value != 0); + break; + case 104: + mLockFluid = (value != 0); + break; + case 105: + mVoidFluidPart = (value != 0); + break; + case 106: + mVoidFluidFull = (value != 0); + break; + } + } +} diff --git a/src/main/java/gregtech/api/gui/GT_GUIContainer_DigitalTank.java b/src/main/java/gregtech/api/gui/GT_GUIContainer_DigitalTank.java new file mode 100644 index 0000000000..c0655ced94 --- /dev/null +++ b/src/main/java/gregtech/api/gui/GT_GUIContainer_DigitalTank.java @@ -0,0 +1,91 @@ +package gregtech.api.gui; + +import static gregtech.api.enums.GT_Values.RES_PATH_GUI; + +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.util.GT_Utility; +import java.util.ArrayList; +import java.util.List; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.StatCollector; + +public class GT_GUIContainer_DigitalTank extends GT_GUIContainerMetaTile_Machine { + + private final String mName; + private final int textColor = this.getTextColorOrDefault("text", 0xFAFAFF), + textColorTitle = this.getTextColorOrDefault("title", 0x404040), + textColorValue = this.getTextColorOrDefault("value", 0xFAFAFF); + + public GT_GUIContainer_DigitalTank( + InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity, String aName) { + super(new GT_Container_DigitalTank(aInventoryPlayer, aTileEntity), RES_PATH_GUI + "DigitalTank.png"); + mName = aName; + } + + @Override + public void drawScreen(int par1, int par2, float par3) { + super.drawScreen(par1, par2, par3); + drawTooltip(par1, par2); + } + + private void drawTooltip(int x2, int y2) { + int xStart = (width - xSize) / 2; + int yStart = (height - ySize) / 2; + int x = x2 - xStart; + int y = y2 - yStart + 5; + List<String> list = new ArrayList<>(); + if (y >= 68 && y <= 84) { + if (x >= 8 && x <= 24) { + list.add(StatCollector.translateToLocal("GT5U.machines.digitaltank.autooutput.name")); + } else if (x >= 26 && x <= 42) { + list.add(StatCollector.translateToLocal("GT5U.machines.digitaltank.lockfluid.name")); + list.add(StatCollector.translateToLocal("GT5U.machines.digitaltank.lockfluid.tooltip")); + list.add(StatCollector.translateToLocal("GT5U.machines.digitaltank.lockfluid.tooltip1")); + } + if (x >= 44 && x <= 60) { + list.add(StatCollector.translateToLocal("GT5U.machines.digitaltank.voidoverflow.name")); + list.add(StatCollector.translateToLocal("GT5U.machines.digitaltank.voidoverflow.tooltip")); + } + if (x >= 62 && x <= 78) { + list.add(StatCollector.translateToLocal("GT5U.machines.digitaltank.voidfull.name")); + list.add(StatCollector.translateToLocal("GT5U.machines.digitaltank.voidfull.tooltip")); + } + } + if (!list.isEmpty()) drawHoveringText(list, x2, y2, fontRendererObj); + } + + @Override + protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { + fontRendererObj.drawString(mName, 8, 6, textColorTitle); + if (mContainer != null) { + fontRendererObj.drawString("Liquid Amount", 10, 20, textColor); + fontRendererObj.drawString( + GT_Utility.parseNumberToString(((GT_Container_DigitalTank) mContainer).mContent), + 10, + 30, + textColorValue); + } + } + + @Override + protected void drawGuiContainerBackgroundLayer(float parTicks, int mouseX, int mouseY) { + super.drawGuiContainerBackgroundLayer(parTicks, mouseX, mouseY); + int x = (width - xSize) / 2; + int y = (height - ySize) / 2; + drawTexturedModalRect(x, y, 0, 0, xSize, ySize); + if (mContainer != null) { + if (((GT_Container_DigitalTank) mContainer).mLockFluid) { + drawTexturedModalRect(x + 25, y + 63, 176, 0, 18, 18); + } + if (((GT_Container_DigitalTank) mContainer).outputFluid) { + drawTexturedModalRect(x + 7, y + 63, 176, 18, 18, 18); + } + if (((GT_Container_DigitalTank) mContainer).mVoidFluidPart) { + drawTexturedModalRect(x + 43, y + 63, 176, 36, 18, 18); + } + if (((GT_Container_DigitalTank) mContainer).mVoidFluidFull) { + drawTexturedModalRect(x + 61, y + 63, 176, 54, 18, 18); + } + } + } +} |