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/gregtech/common | |
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/gregtech/common')
2 files changed, 46 insertions, 25 deletions
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_IndustrialElectromagneticSeparator.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_IndustrialElectromagneticSeparator.java index 7d877e4b42..6f74f4d6ae 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_IndustrialElectromagneticSeparator.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_IndustrialElectromagneticSeparator.java @@ -36,6 +36,7 @@ import com.gtnewhorizon.structurelib.structure.StructureDefinition; import gregtech.api.GregTech_API; import gregtech.api.enums.Materials; import gregtech.api.enums.Textures; +import gregtech.api.gui.modularui.GT_UITextures; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; @@ -102,7 +103,9 @@ public class GT_MetaTileEntity_IndustrialElectromagneticSeparator final int MIN_CASING = 64; private GT_MetaTileEntity_MagHatch mMagHatch = null; private MagnetTiers magnetTier = null; - private boolean polarizerMode = false; + + private static final int MACHINEMODE_SEPARATOR = 0; + private static final int MACHINEMODE_POLARIZER = 1; private static final String STRUCTURE_PIECE_MAIN = "main"; private static final IStructureDefinition<GT_MetaTileEntity_IndustrialElectromagneticSeparator> STRUCTURE_DEFINITION = StructureDefinition @@ -312,7 +315,8 @@ public class GT_MetaTileEntity_IndustrialElectromagneticSeparator @Override public RecipeMap<?> getRecipeMap() { - return polarizerMode ? RecipeMaps.polarizerRecipes : RecipeMaps.electroMagneticSeparatorRecipes; + return (machineMode == MACHINEMODE_POLARIZER) ? RecipeMaps.polarizerRecipes + : RecipeMaps.electroMagneticSeparatorRecipes; } @Nonnull @@ -322,21 +326,29 @@ public class GT_MetaTileEntity_IndustrialElectromagneticSeparator } @Override - public void saveNBTData(NBTTagCompound aNBT) { - aNBT.setBoolean("polarizerMode", polarizerMode); - super.saveNBTData(aNBT); + public void loadNBTData(NBTTagCompound aNBT) { + if (aNBT.hasKey("polarizerMode")) { + machineMode = aNBT.getBoolean("polarizerMode") ? MACHINEMODE_POLARIZER : MACHINEMODE_SEPARATOR; + aNBT.removeTag("polarizerMode"); + } + super.loadNBTData(aNBT); } @Override - public void loadNBTData(NBTTagCompound aNBT) { - polarizerMode = aNBT.getBoolean("polarizerMode"); - super.loadNBTData(aNBT); + public boolean supportsMachineModeSwitch() { + return true; + } + + @Override + public void setMachineModeIcons() { + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_SEPARATOR); + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_POLARIZER); } @Override public void onScrewdriverRightClick(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) { - polarizerMode = !polarizerMode; - if (polarizerMode) { + setMachineMode(nextMachineMode()); + if (machineMode == MACHINEMODE_POLARIZER) { PlayerUtils.messagePlayer(aPlayer, "Now running in Polarizing Mode."); } else { PlayerUtils.messagePlayer(aPlayer, "Now running in Separating Mode."); @@ -353,7 +365,7 @@ public class GT_MetaTileEntity_IndustrialElectromagneticSeparator 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", polarizerMode); + tag.setInteger("mode", machineMode); } @Override @@ -364,8 +376,8 @@ public class GT_MetaTileEntity_IndustrialElectromagneticSeparator currentTip.add( StatCollector.translateToLocal("GT5U.machines.oreprocessor1") + " " + EnumChatFormatting.WHITE - + StatCollector.translateToLocal( - "GT5U.INDUSTRIAL_ELECTROMAGNETIC_SEPARATOR.mode." + (tag.getBoolean("mode") ? 1 : 0)) + + StatCollector + .translateToLocal("GT5U.INDUSTRIAL_ELECTROMAGNETIC_SEPARATOR.mode." + tag.getInteger("mode")) + EnumChatFormatting.RESET); } diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_MultiCanner.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_MultiCanner.java index d678c6df1f..0ead4cbe6b 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_MultiCanner.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_MultiCanner.java @@ -32,6 +32,7 @@ import com.gtnewhorizon.structurelib.structure.StructureDefinition; import gregtech.api.GregTech_API; import gregtech.api.enums.Textures; +import gregtech.api.gui.modularui.GT_UITextures; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; @@ -50,7 +51,8 @@ import mcp.mobius.waila.api.IWailaDataAccessor; public class GT_MetaTileEntity_MultiCanner extends GT_MetaTileEntity_EnhancedMultiBlockBase<GT_MetaTileEntity_MultiCanner> implements ISurvivalConstructable { - private boolean fluidMode = false; + private static final int MACHINEMODE_CANNER = 0; + private static final int MACHINEMODE_FLUIDCANNER = 1; private static final String STRUCTURE_PIECE_MAIN = "main"; private static final IStructureDefinition<GT_MetaTileEntity_MultiCanner> STRUCTURE_DEFINITION = StructureDefinition @@ -204,7 +206,7 @@ public class GT_MetaTileEntity_MultiCanner @Override public RecipeMap<?> getRecipeMap() { - return fluidMode ? RecipeMaps.fluidCannerRecipes : RecipeMaps.cannerRecipes; + return (machineMode == MACHINEMODE_FLUIDCANNER) ? RecipeMaps.fluidCannerRecipes : RecipeMaps.cannerRecipes; } @Nonnull @@ -214,21 +216,28 @@ public class GT_MetaTileEntity_MultiCanner } @Override - public void saveNBTData(NBTTagCompound aNBT) { - aNBT.setBoolean("fluidMode", fluidMode); - super.saveNBTData(aNBT); + public void loadNBTData(NBTTagCompound aNBT) { + if (aNBT.hasKey("fluidMode")) { + machineMode = aNBT.getBoolean("fluidMode") ? MACHINEMODE_FLUIDCANNER : MACHINEMODE_CANNER; + } + super.loadNBTData(aNBT); } @Override - public void loadNBTData(NBTTagCompound aNBT) { - fluidMode = aNBT.getBoolean("fluidMode"); - super.loadNBTData(aNBT); + public boolean supportsMachineModeSwitch() { + return true; + } + + @Override + public void setMachineModeIcons() { + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_PACKAGER); + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_LPF_FLUID); } @Override public void onScrewdriverRightClick(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) { - fluidMode = !fluidMode; - if (fluidMode) { + setMachineMode(nextMachineMode()); + if (machineMode == MACHINEMODE_FLUIDCANNER) { PlayerUtils.messagePlayer(aPlayer, "Now running in Fluid Canning Mode."); } else { PlayerUtils.messagePlayer(aPlayer, "Now running in Canning Mode."); @@ -239,7 +248,7 @@ public class GT_MetaTileEntity_MultiCanner 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", fluidMode); + tag.setInteger("mode", machineMode); } @Override @@ -250,7 +259,7 @@ public class GT_MetaTileEntity_MultiCanner currentTip.add( StatCollector.translateToLocal("GT5U.machines.oreprocessor1") + " " + EnumChatFormatting.WHITE - + StatCollector.translateToLocal("GT5U.MULTI_CANNER.mode." + (tag.getBoolean("mode") ? 1 : 0)) + + StatCollector.translateToLocal("GT5U.MULTI_CANNER.mode." + tag.getInteger("mode")) + EnumChatFormatting.RESET); } |