diff options
author | Mary <33456283+FourIsTheNumber@users.noreply.github.com> | 2024-07-19 12:27:40 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-19 23:27:40 +0700 |
commit | 1842f59eeb837edecfc31dae8a2b35fcda471b38 (patch) | |
tree | 826ae5a141706145ed48ec415c57b3bf93a3fc88 /src/main/java/gtPlusPlus/xmod | |
parent | e4b0d5d1e0f6080d4896c6ceec649d16fe68369f (diff) | |
download | GT5-Unofficial-1842f59eeb837edecfc31dae8a2b35fcda471b38.tar.gz GT5-Unofficial-1842f59eeb837edecfc31dae8a2b35fcda471b38.tar.bz2 GT5-Unofficial-1842f59eeb837edecfc31dae8a2b35fcda471b38.zip |
Mode switch button (#2730)
* Button textures. Once again I am manually pulling changes from a different branch... sorry. If you want to read the full commit history, the modeswitchgui branch has it.
* Texture enums
* Implementation in ControllerWithOptionalFeatures
* Implementation in GT_MetaTileEntity_MultiBlockBase
* Implemented into all multi-machines
* Lang changes
* Added documentation
* Added missing clear
* Quick polish changes - button base texture is standard instead of pressed, and the click noise works.
* MFE compatibility
* TurboCan compatibility
* Fix misordered icons in canner
* Removed redundant code in button
* Attempted to refactor with MachineMode enum. Also moved loadNBT and saveNBT logic to base class
* sa
* fix
(cherry picked from commit 1f14a7abf460ad114f10e8ba58b6be44b7b18d48)
* Rework machineMode into enum of IMachineMode completely
* Fixed breaking typo
* Made it stop crashing on normal multis that don't support mode switch
* Revert
* Finished revert and re-addressed changes from original review
* spotless
* Load nbt tags in correct order. Fixes backwards compat
* Check nbt key on load instead
* Run super last and make all MACHINEMODE static
---------
Co-authored-by: Martin Robertz <dream-master@gmx.net>
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod')
5 files changed, 176 insertions, 93 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GMTE_AmazonPackager.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GMTE_AmazonPackager.java index 10ccf64e96..cf9445dfdb 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GMTE_AmazonPackager.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GMTE_AmazonPackager.java @@ -32,6 +32,7 @@ import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; import gregtech.api.enums.TAE; +import gregtech.api.gui.modularui.GT_UITextures; import gregtech.api.interfaces.IIconContainer; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; @@ -53,7 +54,8 @@ public class GMTE_AmazonPackager extends GregtechMeta_MultiBlockBase<GMTE_Amazon private int mCasing; - private boolean mPackageMode = true; + private static final int MACHINEMODE_PACKAGER = 0; + private static final int MACHINEMODE_UNPACKAGER = 1; private static IStructureDefinition<GMTE_AmazonPackager> STRUCTURE_DEFINITION = null; @@ -139,7 +141,7 @@ public class GMTE_AmazonPackager extends GregtechMeta_MultiBlockBase<GMTE_Amazon @Override public RecipeMap<?> getRecipeMap() { - return mPackageMode ? RecipeMaps.packagerRecipes : RecipeMaps.unpackagerRecipes; + return (machineMode == MACHINEMODE_PACKAGER) ? RecipeMaps.packagerRecipes : RecipeMaps.unpackagerRecipes; } @Nonnull @@ -193,14 +195,10 @@ public class GMTE_AmazonPackager extends GregtechMeta_MultiBlockBase<GMTE_Amazon } @Override - public void saveNBTData(NBTTagCompound aNBT) { - aNBT.setBoolean("mPackageMode", mPackageMode); - super.saveNBTData(aNBT); - } - - @Override public void loadNBTData(NBTTagCompound aNBT) { - mPackageMode = aNBT.getBoolean("mPackageMode"); + if (aNBT.hasKey("mPackageMode")) { + machineMode = aNBT.getInteger("mPackageMode"); + } super.loadNBTData(aNBT); } @@ -208,13 +206,13 @@ public class GMTE_AmazonPackager extends GregtechMeta_MultiBlockBase<GMTE_Amazon public void getWailaNBTData(EntityPlayerMP player, TileEntity tile, NBTTagCompound tag, World world, int x, int y, int z) { super.getWailaNBTData(player, tile, tag, world, x, y, z); - tag.setBoolean("mode", mPackageMode); + tag.setInteger("mode", machineMode); } @Override public void onModeChangeByScrewdriver(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) { - mPackageMode = !mPackageMode; - if (mPackageMode) { + setMachineMode(nextMachineMode()); + if (machineMode == MACHINEMODE_PACKAGER) { PlayerUtils.messagePlayer(aPlayer, "Now running in Packager Mode."); } else { PlayerUtils.messagePlayer(aPlayer, "Now running in Unpackager Mode."); @@ -230,7 +228,19 @@ public class GMTE_AmazonPackager extends GregtechMeta_MultiBlockBase<GMTE_Amazon currentTip.add( StatCollector.translateToLocal("GT5U.machines.oreprocessor1") + " " + EnumChatFormatting.WHITE - + StatCollector.translateToLocal("GT5U.GTPP_MULTI_PACKAGER.mode." + (tag.getBoolean("mode") ? 1 : 0)) + + StatCollector.translateToLocal("GT5U.GTPP_MULTI_PACKAGER.mode." + tag.getInteger("mode")) + EnumChatFormatting.RESET); } + + @Override + public boolean supportsMachineModeSwitch() { + return true; + } + + @Override + public void setMachineModeIcons() { + machineModeIcons.clear(); + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_PACKAGER); + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_UNPACKAGER); + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCuttingMachine.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCuttingMachine.java index 2bcbe0e018..216634b708 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCuttingMachine.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCuttingMachine.java @@ -34,6 +34,7 @@ import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; import gregtech.api.enums.TAE; +import gregtech.api.gui.modularui.GT_UITextures; import gregtech.api.interfaces.IIconContainer; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; @@ -53,8 +54,10 @@ import mcp.mobius.waila.api.IWailaDataAccessor; public class GregtechMetaTileEntity_IndustrialCuttingMachine extends GregtechMeta_MultiBlockBase<GregtechMetaTileEntity_IndustrialCuttingMachine> implements ISurvivalConstructable { - private boolean mCuttingMode = true; private int mCasing; + private static final int MACHINEMODE_CUTTER = 0; + private static final int MACHINEMODE_SLICER = 1; + private static IStructureDefinition<GregtechMetaTileEntity_IndustrialCuttingMachine> STRUCTURE_DEFINITION = null; public GregtechMetaTileEntity_IndustrialCuttingMachine(final int aID, final String aName, @@ -154,7 +157,7 @@ public class GregtechMetaTileEntity_IndustrialCuttingMachine extends @Override public RecipeMap<?> getRecipeMap() { - return mCuttingMode ? RecipeMaps.cutterRecipes : RecipeMaps.slicerRecipes; + return (machineMode == MACHINEMODE_CUTTER) ? RecipeMaps.cutterRecipes : RecipeMaps.slicerRecipes; } @Nonnull @@ -213,34 +216,39 @@ public class GregtechMetaTileEntity_IndustrialCuttingMachine extends } @Override - public void onModeChangeByScrewdriver(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) { - mCuttingMode = !mCuttingMode; - String aMode = mCuttingMode ? "Cutting" : "Slicing"; - PlayerUtils.messagePlayer(aPlayer, "Mode: " + aMode); - mLastRecipe = null; + public boolean supportsMachineModeSwitch() { + return true; } @Override - public void saveNBTData(NBTTagCompound aNBT) { - super.saveNBTData(aNBT); - aNBT.setBoolean("mCuttingMode", mCuttingMode); + public void setMachineModeIcons() { + machineModeIcons.clear(); + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_CUTTING); + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_SLICING); + } + + @Override + public void onModeChangeByScrewdriver(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) { + setMachineMode(nextMachineMode()); + String aMode = machineMode == MACHINEMODE_CUTTER ? "Cutting" : "Slicing"; + PlayerUtils.messagePlayer(aPlayer, "Mode: " + aMode); + mLastRecipe = null; } @Override public void loadNBTData(NBTTagCompound aNBT) { - super.loadNBTData(aNBT); + // Migrates old NBT tag to the new one if (aNBT.hasKey("mCuttingMode")) { - mCuttingMode = aNBT.getBoolean("mCuttingMode"); - } else { - mCuttingMode = true; + machineMode = aNBT.getBoolean("mCuttingMode") ? MACHINEMODE_CUTTER : MACHINEMODE_SLICER; } + super.loadNBTData(aNBT); } @Override public void getWailaNBTData(EntityPlayerMP player, TileEntity tile, NBTTagCompound tag, World world, int x, int y, int z) { super.getWailaNBTData(player, tile, tag, world, x, y, z); - tag.setBoolean("mode", mCuttingMode); + tag.setInteger("mode", machineMode); } @Override @@ -251,8 +259,7 @@ public class GregtechMetaTileEntity_IndustrialCuttingMachine extends currentTip.add( StatCollector.translateToLocal("GT5U.machines.oreprocessor1") + " " + EnumChatFormatting.WHITE - + StatCollector - .translateToLocal("GT5U.GTPP_MULTI_CUTTING_MACHINE.mode." + (tag.getBoolean("mode") ? 1 : 0)) + + StatCollector.translateToLocal("GT5U.GTPP_MULTI_CUTTING_MACHINE.mode." + tag.getInteger("mode")) + EnumChatFormatting.RESET); } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMultiMachine.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMultiMachine.java index edafdc72c4..dbafbc7866 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMultiMachine.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMultiMachine.java @@ -39,6 +39,7 @@ import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; import gregtech.api.enums.TAE; +import gregtech.api.gui.modularui.GT_UITextures; import gregtech.api.interfaces.IIconContainer; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; @@ -72,7 +73,10 @@ import mcp.mobius.waila.api.IWailaDataAccessor; public class GregtechMetaTileEntity_IndustrialMultiMachine extends GregtechMeta_MultiBlockBase<GregtechMetaTileEntity_IndustrialMultiMachine> implements ISurvivalConstructable { - protected int mInternalMode = 0; + private final static int MACHINEMODE_METAL = 0; + private final static int MACHINEMODE_FLUID = 1; + private final static int MACHINEMODE_MISC = 2; + private static final int MODE_COMPRESSOR = 0; private static final int MODE_LATHE = 1; private static final int MODE_MAGNETIC = 2; @@ -216,12 +220,16 @@ public class GregtechMetaTileEntity_IndustrialMultiMachine extends @Override public int getPollutionPerSecond(final ItemStack aStack) { - if (mInternalMode == 0) { - return CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialMultiMachine_ModeMetal; - } else if (mInternalMode == 1) { - return CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialMultiMachine_ModeFluid; - } else { // config 2 - return CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialMultiMachine_ModeMisc; + switch (machineMode) { + case MACHINEMODE_METAL -> { + return CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialMultiMachine_ModeMetal; + } + case MACHINEMODE_FLUID -> { + return CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialMultiMachine_ModeFluid; + } + default -> { + return CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialMultiMachine_ModeMisc; + } } } @@ -249,7 +257,7 @@ public class GregtechMetaTileEntity_IndustrialMultiMachine extends private int getCircuitID(ItemStack circuit) { int H = circuit.getItemDamage(); int T = (H == 20 ? 0 : (H == 21 ? 1 : (H == 22 ? 2 : -1))); - return MODE_MAP[this.mInternalMode][T]; + return MODE_MAP[machineMode][T]; } @Override @@ -306,6 +314,7 @@ public class GregtechMetaTileEntity_IndustrialMultiMachine extends return new ProcessingLogic() { private ItemStack lastCircuit = null; + private int lastMode = -1; @Nonnull @Override @@ -318,6 +327,10 @@ public class GregtechMetaTileEntity_IndustrialMultiMachine extends lastRecipe = null; lastCircuit = circuit; } + if (machineMode != lastMode) { + lastRecipe = null; + lastMode = machineMode; + } RecipeMap<?> foundMap = getRecipeMap(getCircuitID(circuit)); if (foundMap == null) { return Stream.empty(); @@ -331,15 +344,14 @@ public class GregtechMetaTileEntity_IndustrialMultiMachine extends @Override public void onModeChangeByScrewdriver(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) { - if (mInternalMode < 2) { - mInternalMode++; - } else { - mInternalMode = 0; + setMachineMode(nextMachineMode()); + String mModeString; + switch (machineMode) { + case MACHINEMODE_METAL -> mModeString = "Metal"; + case MACHINEMODE_FLUID -> mModeString = "Fluid"; + default -> mModeString = "Misc"; } - String mModeString = (mInternalMode == 0 ? "Metal" - : mInternalMode == 1 ? "Fluid" : mInternalMode == 2 ? "Misc." : "null"); PlayerUtils.messagePlayer(aPlayer, "Multi-Machine is now in " + mModeString + " mode."); - mLastRecipe = null; } @Override @@ -347,26 +359,20 @@ public class GregtechMetaTileEntity_IndustrialMultiMachine extends String[] data = super.getInfoData(); ArrayList<String> mInfo = new ArrayList<>(Arrays.asList(data)); String mode; - if (mInternalMode == 0) { - mode = StatCollector.translateToLocal("GTPP.multiblock.multimachine.metal"); - } else if (mInternalMode == 1) { - mode = StatCollector.translateToLocal("GTPP.multiblock.multimachine.fluid"); - } else { - mode = StatCollector.translateToLocal("GTPP.multiblock.multimachine.misc"); + switch (machineMode) { + case MACHINEMODE_METAL -> mode = StatCollector.translateToLocal("GTPP.multiblock.multimachine.metal"); + case MACHINEMODE_FLUID -> mode = StatCollector.translateToLocal("GTPP.multiblock.multimachine.fluid"); + default -> mode = StatCollector.translateToLocal("GTPP.multiblock.multimachine.misc"); } mInfo.add(mode); return mInfo.toArray(new String[0]); } @Override - public void saveNBTData(NBTTagCompound aNBT) { - aNBT.setInteger("mInternalMode", mInternalMode); - super.saveNBTData(aNBT); - } - - @Override public void loadNBTData(NBTTagCompound aNBT) { - this.mInternalMode = aNBT.getInteger("mInternalMode"); + if (aNBT.hasKey("mInternalMode")) { + machineMode = aNBT.getInteger("mInternalMode"); + } super.loadNBTData(aNBT); } @@ -378,7 +384,7 @@ public class GregtechMetaTileEntity_IndustrialMultiMachine extends @Override protected CheckRecipeResult doCheckRecipe() { - if (mInternalMode != 2 || !isInputSeparationEnabled()) { + if (machineMode != MACHINEMODE_MISC || !isInputSeparationEnabled()) { return super.doCheckRecipe(); } else { CheckRecipeResult result = CheckRecipeResultRegistry.NO_RECIPE; @@ -495,7 +501,7 @@ public class GregtechMetaTileEntity_IndustrialMultiMachine extends public void getWailaNBTData(EntityPlayerMP player, TileEntity tile, NBTTagCompound tag, World world, int x, int y, int z) { super.getWailaNBTData(player, tile, tag, world, x, y, z); - tag.setInteger("mode", mInternalMode); + tag.setInteger("mode", machineMode); } @Override @@ -512,4 +518,25 @@ public class GregtechMetaTileEntity_IndustrialMultiMachine extends + EnumChatFormatting.RESET); } } + + @Override + public boolean supportsMachineModeSwitch() { + return true; + } + + @Override + public int nextMachineMode() { + mLastRecipe = null; + if (machineMode == MACHINEMODE_METAL) return MACHINEMODE_FLUID; + else if (machineMode == MACHINEMODE_FLUID) return MACHINEMODE_MISC; + else return MACHINEMODE_METAL; + } + + @Override + public void setMachineModeIcons() { + machineModeIcons.clear(); + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_LPF_METAL); + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_LPF_FLUID); + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_DEFAULT); + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialPlatePress.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialPlatePress.java index c186126912..ade5c2604b 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialPlatePress.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialPlatePress.java @@ -32,6 +32,7 @@ import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; import gregtech.api.enums.SoundResource; +import gregtech.api.gui.modularui.GT_UITextures; import gregtech.api.interfaces.IIconContainer; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; @@ -51,8 +52,11 @@ import mcp.mobius.waila.api.IWailaDataAccessor; public class GregtechMetaTileEntity_IndustrialPlatePress extends GregtechMeta_MultiBlockBase<GregtechMetaTileEntity_IndustrialPlatePress> implements ISurvivalConstructable { - private boolean mFormingMode = false; private int mCasing; + + private static final int MACHINEMODE_BENDER = 0; + private static final int MACHINEMODE_FORMER = 1; + private static IStructureDefinition<GregtechMetaTileEntity_IndustrialPlatePress> STRUCTURE_DEFINITION = null; public GregtechMetaTileEntity_IndustrialPlatePress(final int aID, final String aName, final String aNameRegional) { @@ -155,7 +159,7 @@ public class GregtechMetaTileEntity_IndustrialPlatePress @Override public RecipeMap<?> getRecipeMap() { - return mFormingMode ? RecipeMaps.formingPressRecipes : RecipeMaps.benderRecipes; + return (machineMode == MACHINEMODE_FORMER) ? RecipeMaps.formingPressRecipes : RecipeMaps.benderRecipes; } @Nonnull @@ -187,7 +191,8 @@ public class GregtechMetaTileEntity_IndustrialPlatePress @Override public int getPollutionPerSecond(final ItemStack aStack) { - if (this.mFormingMode) return CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialPlatePress_ModeForming; + if (machineMode == MACHINEMODE_FORMER) + return CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialPlatePress_ModeForming; return CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialPlatePress_ModeBending; } @@ -197,21 +202,30 @@ public class GregtechMetaTileEntity_IndustrialPlatePress } @Override - public void saveNBTData(NBTTagCompound aNBT) { - aNBT.setBoolean("mFormingMode", mFormingMode); - super.saveNBTData(aNBT); + public void loadNBTData(NBTTagCompound aNBT) { + // Migrates old NBT tag to the new one + if (aNBT.hasKey("mFormingMode")) { + machineMode = aNBT.getBoolean("mFormingMode") ? MACHINEMODE_FORMER : MACHINEMODE_BENDER; + } + super.loadNBTData(aNBT); } @Override - public void loadNBTData(NBTTagCompound aNBT) { - mFormingMode = aNBT.getBoolean("mFormingMode"); - super.loadNBTData(aNBT); + public boolean supportsMachineModeSwitch() { + return true; + } + + @Override + public void setMachineModeIcons() { + machineModeIcons.clear(); + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_BENDING); + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_FORMING); } @Override public void onModeChangeByScrewdriver(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) { - mFormingMode = !mFormingMode; - if (mFormingMode) { + setMachineMode(nextMachineMode()); + if (machineMode == MACHINEMODE_FORMER) { PlayerUtils.messagePlayer(aPlayer, "Now running in Forming Press Mode."); } else { PlayerUtils.messagePlayer(aPlayer, "Now running in Bending Mode."); @@ -228,7 +242,7 @@ public class GregtechMetaTileEntity_IndustrialPlatePress public void getWailaNBTData(EntityPlayerMP player, TileEntity tile, NBTTagCompound tag, World world, int x, int y, int z) { super.getWailaNBTData(player, tile, tag, world, x, y, z); - tag.setBoolean("mode", mFormingMode); + tag.setInteger("mode", machineMode); } @Override @@ -240,7 +254,7 @@ public class GregtechMetaTileEntity_IndustrialPlatePress StatCollector.translateToLocal("GT5U.machines.oreprocessor1") + " " + EnumChatFormatting.WHITE + StatCollector - .translateToLocal("GT5U.GTPP_MULTI_INDUSTRIAL_PLATE_PRESS.mode." + (tag.getBoolean("mode") ? 1 : 0)) + .translateToLocal("GT5U.GTPP_MULTI_INDUSTRIAL_PLATE_PRESS.mode." + tag.getInteger("mode")) + EnumChatFormatting.RESET); } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWashPlant.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWashPlant.java index f4f9f8500a..9c7a47f7f8 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWashPlant.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWashPlant.java @@ -43,6 +43,7 @@ import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; import gregtech.api.enums.TAE; +import gregtech.api.gui.modularui.GT_UITextures; import gregtech.api.interfaces.IIconContainer; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; @@ -71,11 +72,14 @@ import mcp.mobius.waila.api.IWailaDataAccessor; public class GregtechMetaTileEntity_IndustrialWashPlant extends GregtechMeta_MultiBlockBase<GregtechMetaTileEntity_IndustrialWashPlant> implements ISurvivalConstructable { - private int mMode = 0; private int mCasing; private static IStructureDefinition<GregtechMetaTileEntity_IndustrialWashPlant> STRUCTURE_DEFINITION = null; + private static final int MACHINEMODE_OREWASH = 0; + private static final int MACHINEMODE_SIMPLEWASH = 1; + private static final int MACHINEMODE_CHEMBATH = 2; + public GregtechMetaTileEntity_IndustrialWashPlant(final int aID, final String aName, final String aNameRegional) { super(aID, aName, aNameRegional); } @@ -190,8 +194,17 @@ public class GregtechMetaTileEntity_IndustrialWashPlant @Override public RecipeMap<?> getRecipeMap() { - return mMode == 0 ? RecipeMaps.oreWasherRecipes - : mMode == 1 ? GTPPRecipeMaps.simpleWasherRecipes : RecipeMaps.chemicalBathRecipes; + switch (machineMode) { + case MACHINEMODE_OREWASH -> { + return RecipeMaps.oreWasherRecipes; + } + case MACHINEMODE_SIMPLEWASH -> { + return GTPPRecipeMaps.simpleWasherRecipes; + } + default -> { + return RecipeMaps.chemicalBathRecipes; + } + } } @Nonnull @@ -234,7 +247,8 @@ public class GregtechMetaTileEntity_IndustrialWashPlant @Override public int getPollutionPerSecond(final ItemStack aStack) { - if (mMode == 2) return CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialWashPlant_ModeChemBath; + if (machineMode == MACHINEMODE_CHEMBATH) + return CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialWashPlant_ModeChemBath; return CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialWashPlant_ModeWasher; } @@ -341,37 +355,28 @@ public class GregtechMetaTileEntity_IndustrialWashPlant } @Override - public void saveNBTData(NBTTagCompound aNBT) { - aNBT.setInteger("mMode", mMode); - super.saveNBTData(aNBT); - } - - @Override public void loadNBTData(NBTTagCompound aNBT) { if (aNBT.hasKey("mChemicalMode")) { boolean aTempMode = aNBT.getBoolean("mChemicalMode"); if (aTempMode) { - mMode = 2; + machineMode = 2; } else { - mMode = 0; + machineMode = 0; } aNBT.removeTag("mChemicalMode"); } if (aNBT.hasKey("mMode")) { - mMode = aNBT.getInteger("mMode"); + machineMode = aNBT.getInteger("mMode"); } super.loadNBTData(aNBT); } @Override public void onModeChangeByScrewdriver(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) { - mMode++; - if (mMode > 2) { - mMode = 0; - } - if (mMode == 0) { + setMachineMode(nextMachineMode()); + if (machineMode == 0) { PlayerUtils.messagePlayer(aPlayer, "Wash Plant is now running in Ore Washer Mode."); - } else if (mMode == 1) { + } else if (machineMode == 1) { PlayerUtils.messagePlayer(aPlayer, "Wash Plant is now running in Simple Washer Mode."); } else { PlayerUtils.messagePlayer(aPlayer, "Wash Plant is now running in Chemical Bath Mode."); @@ -383,7 +388,7 @@ public class GregtechMetaTileEntity_IndustrialWashPlant public void getWailaNBTData(EntityPlayerMP player, TileEntity tile, NBTTagCompound tag, World world, int x, int y, int z) { super.getWailaNBTData(player, tile, tag, world, x, y, z); - tag.setInteger("mode", mMode); + tag.setInteger("mode", machineMode); } @Override @@ -397,4 +402,24 @@ public class GregtechMetaTileEntity_IndustrialWashPlant + StatCollector.translateToLocal("GT5U.GTPP_MULTI_WASH_PLANT.mode." + tag.getInteger("mode")) + EnumChatFormatting.RESET); } + + @Override + public boolean supportsMachineModeSwitch() { + return true; + } + + @Override + public int nextMachineMode() { + if (machineMode == MACHINEMODE_OREWASH) return MACHINEMODE_SIMPLEWASH; + else if (machineMode == MACHINEMODE_SIMPLEWASH) return MACHINEMODE_CHEMBATH; + else return MACHINEMODE_OREWASH; + } + + @Override + public void setMachineModeIcons() { + machineModeIcons.clear(); + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_WASHPLANT); + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_SIMPLEWASHER); + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_CHEMBATH); + } } |