aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/gui
diff options
context:
space:
mode:
authorくぁーりぃ <39122497+Quarri6343@users.noreply.github.com>2022-08-30 05:04:31 +0900
committerGitHub <noreply@github.com>2022-08-29 22:04:31 +0200
commit4927a8885381ca48479be71e7cdb37aae9cbf5fd (patch)
tree7664056ac3ec23574942e9a265e6ca37067b8963 /src/main/java/gregtech/api/gui
parentce1bd5b2138093a61e9b17989ffea7c126a00c12 (diff)
downloadGT5-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')
-rw-r--r--src/main/java/gregtech/api/gui/GT_Container.java1
-rw-r--r--src/main/java/gregtech/api/gui/GT_Container_BasicTank.java9
-rw-r--r--src/main/java/gregtech/api/gui/GT_Container_DigitalTank.java135
-rw-r--r--src/main/java/gregtech/api/gui/GT_GUIContainer_DigitalTank.java91
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);
+ }
+ }
+ }
+}