aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/goodgenerator/blocks/tileEntity/YottaFluidTank.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/goodgenerator/blocks/tileEntity/YottaFluidTank.java')
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/YottaFluidTank.java122
1 files changed, 114 insertions, 8 deletions
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/YottaFluidTank.java b/src/main/java/goodgenerator/blocks/tileEntity/YottaFluidTank.java
index ab60660002..cfeba833a2 100644
--- a/src/main/java/goodgenerator/blocks/tileEntity/YottaFluidTank.java
+++ b/src/main/java/goodgenerator/blocks/tileEntity/YottaFluidTank.java
@@ -2,18 +2,21 @@ package goodgenerator.blocks.tileEntity;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
import static goodgenerator.util.DescTextLocalization.BLUE_PRINT_INFO;
+import static gregtech.api.metatileentity.BaseTileEntity.TOOLTIP_DELAY;
import static gregtech.api.util.GT_StructureUtility.*;
import com.github.bartimaeusnek.bartworks.API.BorosilicateGlass;
+import com.github.technus.tectech.TecTech;
+import com.github.technus.tectech.thing.gui.TecTechUITextures;
import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable;
import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
import com.gtnewhorizon.structurelib.structure.*;
-import com.gtnewhorizons.modularui.common.widget.DynamicPositionedColumn;
-import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
-import com.gtnewhorizons.modularui.common.widget.SlotWidget;
-import com.gtnewhorizons.modularui.common.widget.TextWidget;
+import com.gtnewhorizons.modularui.api.drawable.IDrawable;
+import com.gtnewhorizons.modularui.api.drawable.UITexture;
+import com.gtnewhorizons.modularui.common.widget.*;
import goodgenerator.blocks.tileEntity.GTMetaTileEntity.YOTTAHatch;
import goodgenerator.blocks.tileEntity.base.GT_MetaTileEntity_TooltipMultiBlockBase_EM;
+import goodgenerator.client.GUI.GG_UITextures;
import goodgenerator.loader.Loaders;
import goodgenerator.util.CharExchanger;
import goodgenerator.util.DescTextLocalization;
@@ -60,6 +63,8 @@ public class YottaFluidTank extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
public BigInteger mStorage = new BigInteger("0", 10);
public BigInteger mStorageCurrent = new BigInteger("0", 10);
public String mFluidName = "";
+ public String mLockedFluidName = "";
+ protected boolean isFluidLocked = false;
protected int glassMeta;
protected int maxCell;
protected final String YOTTANK_BOTTOM = mName + "buttom";
@@ -94,10 +99,19 @@ public class YottaFluidTank extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
public String getFluidName() {
if (mFluidName == null || mFluidName.equals("") || FluidRegistry.getFluidStack(mFluidName, 1) == null)
- return "Empty";
+ return StatCollector.translateToLocal("scanner.info.YOTTank.empty");
return FluidRegistry.getFluidStack(mFluidName, 1).getLocalizedName();
}
+ public String getLockedFluidName() {
+ if (!isFluidLocked) return StatCollector.translateToLocal("scanner.info.YOTTank.none");
+ if (mLockedFluidName == null
+ || mLockedFluidName.equals("")
+ || FluidRegistry.getFluidStack(mLockedFluidName, 1) == null)
+ return StatCollector.translateToLocal("scanner.info.YOTTank.next");
+ return FluidRegistry.getFluidStack(mLockedFluidName, 1).getLocalizedName();
+ }
+
@Override
public void loadNBTData(NBTTagCompound aNBT) {
String tAmount = aNBT.getString("mStorage");
@@ -107,7 +121,9 @@ public class YottaFluidTank extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
mStorage = new BigInteger(tAmount, 10);
mStorageCurrent = new BigInteger(tAmountCurrent, 10);
mFluidName = aNBT.getString("mFluidName");
+ mLockedFluidName = aNBT.getString("mLockedFluidName");
voidExcessEnabled = aNBT.getBoolean("voidExcessEnabled");
+ isFluidLocked = aNBT.getBoolean("isFluidLocked");
super.loadNBTData(aNBT);
}
@@ -116,7 +132,9 @@ public class YottaFluidTank extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
aNBT.setString("mStorage", mStorage.toString(10));
aNBT.setString("mStorageCurrent", mStorageCurrent.toString(10));
aNBT.setString("mFluidName", mFluidName);
+ aNBT.setString("mLockedFluidName", mLockedFluidName);
aNBT.setBoolean("voidExcessEnabled", voidExcessEnabled);
+ aNBT.setBoolean("isFluidLocked", isFluidLocked);
super.saveNBTData(aNBT);
}
@@ -311,8 +329,12 @@ public class YottaFluidTank extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
StatCollector.translateToLocal(
EnumChatFormatting.YELLOW + CharExchanger.formatNumber(getFluidName()) + EnumChatFormatting.RESET),
StatCollector.translateToLocal("scanner.info.YOTTank.2"),
- StatCollector.translateToLocal(
- EnumChatFormatting.BLUE + CharExchanger.formatNumber(getStored()) + EnumChatFormatting.RESET + " L")
+ StatCollector.translateToLocal(EnumChatFormatting.BLUE + CharExchanger.formatNumber(getStored())
+ + EnumChatFormatting.RESET + " L"),
+ StatCollector.translateToLocal("scanner.info.YOTTank.3"),
+ StatCollector.translateToLocal(EnumChatFormatting.YELLOW
+ + CharExchanger.formatNumber(getLockedFluidName())
+ + EnumChatFormatting.RESET)
};
}
@@ -352,6 +374,13 @@ public class YottaFluidTank extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
List<FluidStack> tStore = getStoredFluids();
for (FluidStack tFluid : tStore) {
if (tFluid == null) continue;
+ if (isFluidLocked) {
+ if (mLockedFluidName != null && !mLockedFluidName.equals("")) {
+ if (!tFluid.getFluid().getName().equals(mLockedFluidName)) continue;
+ } else {
+ mLockedFluidName = tFluid.getFluid().getName();
+ }
+ }
if (mFluidName == null
|| mFluidName.equals("")
|| tFluid.getFluid().getName().equals(mFluidName)) {
@@ -430,6 +459,28 @@ public class YottaFluidTank extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
}
@Override
+ public boolean onWireCutterRightClick(
+ byte aSide, byte aWrenchingSide, EntityPlayer aPlayer, float aX, float aY, float aZ) {
+ if (aSide == getBaseMetaTileEntity().getFrontFacing()) {
+ if (mLockedFluidName == null || mLockedFluidName.equals("")) {
+ if (mFluidName != null && !mFluidName.equals("")) {
+ mLockedFluidName = mFluidName;
+ aPlayer.addChatMessage(new ChatComponentTranslation("yottank.chat.1", getFluidName()));
+ } else {
+ aPlayer.addChatMessage(new ChatComponentTranslation("yottank.chat.2"));
+ }
+ isFluidLocked = true;
+ } else {
+ mLockedFluidName = "";
+ isFluidLocked = false;
+ aPlayer.addChatMessage(new ChatComponentTranslation("yottank.chat.0"));
+ }
+ return true;
+ }
+ return false;
+ }
+
+ @Override
public String[] getStructureDescription(ItemStack stackSize) {
return DescTextLocalization.addText("YOTTank.hint", 8);
}
@@ -502,6 +553,61 @@ public class YottaFluidTank extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
.setSynced(false)
.setDefaultColor(COLOR_TEXT_WHITE.get())
.setEnabled(widget -> getBaseMetaTileEntity().getErrorDisplayID() == 0))
- .widget(new FakeSyncWidget.BigIntegerSyncer(() -> mStorageCurrent, val -> mStorageCurrent = val));
+ .widget(new FakeSyncWidget.BigIntegerSyncer(() -> mStorageCurrent, val -> mStorageCurrent = val))
+ .widget(TextWidget.dynamicString(
+ () -> StatCollector.translateToLocal("gui.YOTTank.3") + " " + getLockedFluidName())
+ .setSynced(false)
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setEnabled(widget -> getBaseMetaTileEntity().getErrorDisplayID() == 0))
+ .widget(new FakeSyncWidget.StringSyncer(() -> mLockedFluidName, val -> mLockedFluidName = val))
+ .widget(new FakeSyncWidget.BooleanSyncer(() -> isFluidLocked, val -> isFluidLocked = val))
+ .widget(new FakeSyncWidget.BooleanSyncer(() -> voidExcessEnabled, val -> voidExcessEnabled = val));
+ }
+
+ @Override
+ protected ButtonWidget createSafeVoidButton() {
+ return (ButtonWidget) new ButtonWidget()
+ .setOnClick((clickData, widget) -> {
+ TecTech.proxy.playSound(getBaseMetaTileEntity(), "fx_click");
+ voidExcessEnabled = !voidExcessEnabled;
+ })
+ .setPlayClickSound(false)
+ .setBackground(() -> {
+ List<UITexture> ret = new ArrayList<>();
+ ret.add(TecTechUITextures.BUTTON_STANDARD_16x16);
+ ret.add(
+ voidExcessEnabled
+ ? TecTechUITextures.OVERLAY_BUTTON_SAFE_VOID_ON
+ : TecTechUITextures.OVERLAY_BUTTON_SAFE_VOID_OFF);
+ return ret.toArray(new IDrawable[0]);
+ })
+ .setPos(174, doesBindPlayerInventory() ? 132 : 156)
+ .setSize(16, 16)
+ .addTooltip(StatCollector.translateToLocal("gui.YOTTank.button.void"))
+ .setTooltipShowUpDelay(TOOLTIP_DELAY);
+ }
+
+ @Override
+ protected ButtonWidget createPowerPassButton() {
+ return (ButtonWidget) new ButtonWidget()
+ .setOnClick((clickData, widget) -> {
+ TecTech.proxy.playSound(getBaseMetaTileEntity(), "fx_click");
+ isFluidLocked = !isFluidLocked;
+ if (!widget.getContext().isClient()) mLockedFluidName = isFluidLocked ? mFluidName : "";
+ })
+ .setPlayClickSound(false)
+ .setBackground(() -> {
+ List<UITexture> ret = new ArrayList<>();
+ ret.add(TecTechUITextures.BUTTON_STANDARD_16x16);
+ ret.add(
+ isFluidLocked
+ ? GG_UITextures.OVERLAY_BUTTON_LOCK_ON
+ : GG_UITextures.OVERLAY_BUTTON_LOCK_OFF);
+ return ret.toArray(new IDrawable[0]);
+ })
+ .setPos(174, doesBindPlayerInventory() ? 116 : 140)
+ .setSize(16, 16)
+ .addTooltip(StatCollector.translateToLocal("gui.YOTTank.button.locking"))
+ .setTooltipShowUpDelay(TOOLTIP_DELAY);
}
}