diff options
author | Maxim <maxim235@gmx.de> | 2023-01-24 10:09:45 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-24 10:09:45 +0100 |
commit | b0d2190027d20ea572c958496822711509c60400 (patch) | |
tree | 9bd7d1c4a3f6afc8de44bc0e2fdc16a29f5b309f /src/main/java/goodgenerator/blocks | |
parent | 5ce5f507071ff505dbed388b0dfe6105f92bcfcc (diff) | |
download | GT5-Unofficial-b0d2190027d20ea572c958496822711509c60400.tar.gz GT5-Unofficial-b0d2190027d20ea572c958496822711509c60400.tar.bz2 GT5-Unofficial-b0d2190027d20ea572c958496822711509c60400.zip |
Add Yotta fluid lock (#131)
* Added fluid locking to yotta
* Added fluid lock and void excess to GUI buttons
Diffstat (limited to 'src/main/java/goodgenerator/blocks')
-rw-r--r-- | src/main/java/goodgenerator/blocks/tileEntity/GTMetaTileEntity/YOTTAHatch.java | 6 | ||||
-rw-r--r-- | src/main/java/goodgenerator/blocks/tileEntity/YottaFluidTank.java | 122 |
2 files changed, 120 insertions, 8 deletions
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/GTMetaTileEntity/YOTTAHatch.java b/src/main/java/goodgenerator/blocks/tileEntity/GTMetaTileEntity/YOTTAHatch.java index 6c8758ce67..6ac023a559 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/GTMetaTileEntity/YOTTAHatch.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/GTMetaTileEntity/YOTTAHatch.java @@ -271,6 +271,9 @@ public class YOTTAHatch extends GT_MetaTileEntity_Hatch if (host == null || host.getBaseMetaTileEntity() == null || !host.getBaseMetaTileEntity().isActive()) return 0; + if (host.mLockedFluidName != null + && !host.mLockedFluidName.equals("") + && !host.mLockedFluidName.equals(resource.getFluid().getName())) return 0; if (host.mFluidName == null || host.mFluidName.equals("") || host.mFluidName.equals(resource.getFluid().getName())) { @@ -291,6 +294,9 @@ public class YOTTAHatch extends GT_MetaTileEntity_Hatch if (host == null || host.getBaseMetaTileEntity() == null || !host.getBaseMetaTileEntity().isActive()) return 0; + if (host.mLockedFluidName != null + && !host.mLockedFluidName.equals("") + && !host.mLockedFluidName.equals(resource.getFluid().getName())) return 0; if (host.mFluidName == null || host.mFluidName.equals("") || host.mFluidName.equals(resource.getFluid().getName())) { 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); } } |