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 | |
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>
25 files changed, 387 insertions, 124 deletions
diff --git a/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java b/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java index 54666567db..c39b47e903 100644 --- a/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java +++ b/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java @@ -398,6 +398,36 @@ public class GT_UITextures { public static final UITexture OVERLAY_BUTTON_LIQUIDMODE_OFF = UITexture .fullImage(GregTech.ID, "gui/overlay_button/LiquidMode_off"); + // These icons are for mode switching machine modes + public static final UITexture OVERLAY_BUTTON_MACHINEMODE_DEFAULT = UITexture + .fullImage(GregTech.ID, "gui/overlay_button/machine_mode_default"); + public static final UITexture OVERLAY_BUTTON_MACHINEMODE_CHEMBATH = UITexture + .fullImage(GregTech.ID, "gui/overlay_button/machine_mode_chembath"); + public static final UITexture OVERLAY_BUTTON_MACHINEMODE_WASHPLANT = UITexture + .fullImage(GregTech.ID, "gui/overlay_button/machine_mode_washplant"); + public static final UITexture OVERLAY_BUTTON_MACHINEMODE_SIMPLEWASHER = UITexture + .fullImage(GregTech.ID, "gui/overlay_button/machine_mode_simplewasher"); + public static final UITexture OVERLAY_BUTTON_MACHINEMODE_PACKAGER = UITexture + .fullImage(GregTech.ID, "gui/overlay_button/machine_mode_packager"); + public static final UITexture OVERLAY_BUTTON_MACHINEMODE_UNPACKAGER = UITexture + .fullImage(GregTech.ID, "gui/overlay_button/machine_mode_unpackager"); + public static final UITexture OVERLAY_BUTTON_MACHINEMODE_SEPARATOR = UITexture + .fullImage(GregTech.ID, "gui/overlay_button/machine_mode_separator"); + public static final UITexture OVERLAY_BUTTON_MACHINEMODE_POLARIZER = UITexture + .fullImage(GregTech.ID, "gui/overlay_button/machine_mode_polarizer"); + public static final UITexture OVERLAY_BUTTON_MACHINEMODE_LPF_FLUID = UITexture + .fullImage(GregTech.ID, "gui/overlay_button/machine_mode_lpf_fluid"); + public static final UITexture OVERLAY_BUTTON_MACHINEMODE_LPF_METAL = UITexture + .fullImage(GregTech.ID, "gui/overlay_button/machine_mode_lpf_metal"); + public static final UITexture OVERLAY_BUTTON_MACHINEMODE_BENDING = UITexture + .fullImage(GregTech.ID, "gui/overlay_button/machine_mode_bending"); + public static final UITexture OVERLAY_BUTTON_MACHINEMODE_FORMING = UITexture + .fullImage(GregTech.ID, "gui/overlay_button/machine_mode_forming"); + public static final UITexture OVERLAY_BUTTON_MACHINEMODE_SLICING = UITexture + .fullImage(GregTech.ID, "gui/overlay_button/machine_mode_slicing"); + public static final UITexture OVERLAY_BUTTON_MACHINEMODE_CUTTING = UITexture + .fullImage(GregTech.ID, "gui/overlay_button/machine_mode_cutting"); + /** * Can adjust size as needed. */ diff --git a/src/main/java/gregtech/api/interfaces/modularui/ControllerWithOptionalFeatures.java b/src/main/java/gregtech/api/interfaces/modularui/ControllerWithOptionalFeatures.java index 22694cdafd..a877492907 100644 --- a/src/main/java/gregtech/api/interfaces/modularui/ControllerWithOptionalFeatures.java +++ b/src/main/java/gregtech/api/interfaces/modularui/ControllerWithOptionalFeatures.java @@ -33,6 +33,7 @@ import gregtech.api.interfaces.tileentity.IVoidable; * <li>Separated input buses</li> * <li>Batch mode</li> * <li>Recipe locking</li> + * <li>Multiple machine modes</li> * </ul> */ public interface ControllerWithOptionalFeatures extends IVoidable, IRecipeLockable { @@ -118,6 +119,76 @@ public interface ControllerWithOptionalFeatures extends IVoidable, IRecipeLockab } /** + * @return if the multi has more than 1 mode + */ + default boolean supportsMachineModeSwitch() { + return false; + } + + /** + * @return the current mode number. This is a getter is used for displaying the icon in the GUI + */ + default int getMachineMode() { + return 0; + } + + /** + * @param index Index of machineModeIcons to pull from + * @return UITexture associated with that machineMode + */ + default UITexture getMachineModeIcon(int index) { + return null; + } + + /** + * @param index Number to set machineMode to + */ + default void setMachineMode(int index) {} + + /** + * @return Returns the next machineMode number in the sequence + */ + default int nextMachineMode() { + return 0; + } + + /** + * @return Returns whether machine supports mode switch by default + */ + default boolean getDefaultModeSwitch() { + return supportsMachineModeSwitch(); + } + + Pos2d getMachineModeSwitchButtonPos(); + + default void onMachineModeSwitchClick() {} + + default ButtonWidget createModeSwitchButton(IWidgetBuilder<?> builder) { + if (!supportsMachineModeSwitch()) return null; + Widget button = new ButtonWidget().setOnClick((clickData, widget) -> { + if (supportsMachineModeSwitch()) { + onMachineModeSwitchClick(); + setMachineMode(nextMachineMode()); + } + }) + .setPlayClickSound(supportsMachineModeSwitch()) + .setBackground(() -> { + List<UITexture> ret = new ArrayList<>(); + if (supportsMachineModeSwitch()) { + ret.add(GT_UITextures.BUTTON_STANDARD); + ret.add(getMachineModeIcon(getMachineMode())); + } else return null; + return ret.toArray(new IDrawable[0]); + }) + .attachSyncer(new FakeSyncWidget.IntegerSyncer(this::getMachineMode, this::setMachineMode), builder) + .addTooltip(StatCollector.translateToLocal("GT5U.gui.button.mode_switch")) + .setTooltipShowUpDelay(TOOLTIP_DELAY) + .setPos(getMachineModeSwitchButtonPos()) + .setSize(16, 16); + return (ButtonWidget) button; + } + + /** * @return if the multi supports input separation. */ boolean supportsInputSeparation(); diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java index 3d34a6c62a..735119d8bf 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java @@ -44,6 +44,7 @@ import org.lwjgl.input.Keyboard; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.gtnewhorizons.modularui.api.NumberFormatMUI; +import com.gtnewhorizons.modularui.api.drawable.UITexture; import com.gtnewhorizons.modularui.api.math.Alignment; import com.gtnewhorizons.modularui.api.math.Pos2d; import com.gtnewhorizons.modularui.api.screen.ModularWindow; @@ -127,6 +128,8 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity public String mNEI; public int damageFactorLow = 5; public float damageFactorHigh = 0.6f; + public int machineMode = 0; + public List<UITexture> machineModeIcons = new ArrayList<UITexture>(); public boolean mLockedToSingleRecipe = getDefaultRecipeLockingMode(); protected boolean inputSeparation = getDefaultInputSeparationMode(); @@ -253,6 +256,11 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity aNBT.setInteger("mEfficiency", mEfficiency); aNBT.setInteger("mPollution", mPollution); aNBT.setInteger("mRuntime", mRuntime); + + if (supportsMachineModeSwitch()) { + aNBT.setInteger("machineMode", machineMode); + } + if (supportsSingleRecipeLocking()) { aNBT.setBoolean("mLockedToSingleRecipe", mLockedToSingleRecipe); if (mLockedToSingleRecipe && mSingleRecipeCheck != null) @@ -294,6 +302,9 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity mEfficiency = aNBT.getInteger("mEfficiency"); mPollution = aNBT.getInteger("mPollution"); mRuntime = aNBT.getInteger("mRuntime"); + if (aNBT.hasKey("machineMode")) { + machineMode = aNBT.getInteger("machineMode"); + } if (supportsSingleRecipeLocking()) { mLockedToSingleRecipe = aNBT.getBoolean("mLockedToSingleRecipe"); if (mLockedToSingleRecipe && aNBT.hasKey("mSingleRecipeCheck", Constants.NBT.TAG_COMPOUND)) { @@ -2212,6 +2223,50 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity return new Pos2d(26, 91); } + /** + * Creates the icon list for this machine. Override this and add the overlays to machineModeIcons in order. + */ + public void setMachineModeIcons() { + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_DEFAULT); + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_DEFAULT); + } + + /** + * Override this if you are a multi-machine and want a GUI button. You will also want to override + * setMachineModeIcons(). + * Override nextMachineMode() if you have more than 2 modes. + */ + @Override + public boolean supportsMachineModeSwitch() { + return false; + } + + @Override + public int getMachineMode() { + return machineMode; + } + + @Override + public UITexture getMachineModeIcon(int index) { + return machineModeIcons.get(index); + } + + @Override + public void setMachineMode(int index) { + machineMode = index; + } + + @Override + public int nextMachineMode() { + if (machineMode == 0) return 1; + else return 0; + } + + @Override + public Pos2d getMachineModeSwitchButtonPos() { + return new Pos2d(80, 91); + } + @Override public boolean supportsBatchMode() { return false; @@ -2300,9 +2355,11 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity drawTexts(screenElements, inventorySlot); builder.widget(screenElements); + setMachineModeIcons(); builder.widget(createPowerSwitchButton(builder)) .widget(createVoidExcessButton(builder)) .widget(createInputSeparationButton(builder)) + .widget(createModeSwitchButton(builder)) .widget(createBatchModeButton(builder)) .widget(createLockToSingleRecipeButton(builder)); } 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); } 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); + } } diff --git a/src/main/resources/assets/gregtech/lang/en_US.lang b/src/main/resources/assets/gregtech/lang/en_US.lang index e529750871..9c62c6be6a 100644 --- a/src/main/resources/assets/gregtech/lang/en_US.lang +++ b/src/main/resources/assets/gregtech/lang/en_US.lang @@ -320,13 +320,13 @@ GT5U.machines.stalled_vent.tooltip.2=§7point this machine's steam GT5U.machines.stalled_vent.tooltip.3=§7vent towards an empty space. GT5U.GTPP_MULTI_ARC_FURNACE.mode.0=Electric GT5U.GTPP_MULTI_ARC_FURNACE.mode.1=Plasma -GT5U.GTPP_MULTI_CUTTING_MACHINE.mode.0=Slicing -GT5U.GTPP_MULTI_CUTTING_MACHINE.mode.1=Cutting +GT5U.GTPP_MULTI_CUTTING_MACHINE.mode.0=Cutting +GT5U.GTPP_MULTI_CUTTING_MACHINE.mode.1=Slicing GT5U.GTPP_MULTI_WASH_PLANT.mode.0=Ore Washer GT5U.GTPP_MULTI_WASH_PLANT.mode.1=Simple Washer GT5U.GTPP_MULTI_WASH_PLANT.mode.2=Chemical Bath -GT5U.GTPP_MULTI_INDUSTRIAL_PLATE_PRESS.mode.0=Forming Press -GT5U.GTPP_MULTI_INDUSTRIAL_PLATE_PRESS.mode.1=Bending +GT5U.GTPP_MULTI_INDUSTRIAL_PLATE_PRESS.mode.0=Bending +GT5U.GTPP_MULTI_INDUSTRIAL_PLATE_PRESS.mode.1=Forming Press GT5U.INDUSTRIAL_ELECTROMAGNETIC_SEPARATOR.mode.0=Electromagnetic Separator GT5U.INDUSTRIAL_ELECTROMAGNETIC_SEPARATOR.mode.1=Electromagnetic Polarizer GT5U.GTPP_MULTI_INDUSTRIAL_MULTI_MACHINE.mode.0=Metal @@ -342,8 +342,8 @@ GT5U.GTPP_MULTI_ADV_DISTILLATION_TOWER.mode.0=Distillation Tower GT5U.GTPP_MULTI_ADV_DISTILLATION_TOWER.mode.1=Distillery GT5U.GTPP_MULTI_PRECISE_ASSEMBLER.mode.0=Precise GT5U.GTPP_MULTI_PRECISE_ASSEMBLER.mode.1=Normal -GT5U.GTPP_MULTI_PACKAGER.mode.0=Unpackager -GT5U.GTPP_MULTI_PACKAGER.mode.1=Packager +GT5U.GTPP_MULTI_PACKAGER.mode.0=Packager +GT5U.GTPP_MULTI_PACKAGER.mode.1=Unpackager GT5U.machines.oreprocessor1=§eRunning Mode: GT5U.machines.oreprocessor2=§cTime: %s s GT5U.machines.oreprocessor.void=§eVoid Stone Dust: %s @@ -448,6 +448,7 @@ GT5U.gui.button.voiding_mode_item=§7Void Excess §6Items GT5U.gui.button.voiding_mode_fluid=§7Void Excess §9Fluids GT5U.gui.button.voiding_mode_all=§7Void Excess §6Items §7and §9Fluids GT5U.gui.button.input_separation=Input Separation +GT5U.gui.button.mode_switch=Mode Switch GT5U.gui.button.batch_mode=Batch Mode GT5U.gui.button.lock_recipe=Lock Recipe GT5U.gui.button.down_tier=Down Tier diff --git a/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_bending.png b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_bending.png Binary files differnew file mode 100644 index 0000000000..026d49a8b1 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_bending.png diff --git a/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_chembath.png b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_chembath.png Binary files differnew file mode 100644 index 0000000000..5b54193005 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_chembath.png diff --git a/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_cutting.png b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_cutting.png Binary files differnew file mode 100644 index 0000000000..85eefe9e95 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_cutting.png diff --git a/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_default.png b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_default.png Binary files differnew file mode 100644 index 0000000000..dff8315e40 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_default.png diff --git a/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_forming.png b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_forming.png Binary files differnew file mode 100644 index 0000000000..28b005fd20 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_forming.png diff --git a/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_lpf_fluid.png b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_lpf_fluid.png Binary files differnew file mode 100644 index 0000000000..77fcdcf993 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_lpf_fluid.png diff --git a/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_lpf_metal.png b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_lpf_metal.png Binary files differnew file mode 100644 index 0000000000..9b751bd92f --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_lpf_metal.png diff --git a/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_packager.png b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_packager.png Binary files differnew file mode 100644 index 0000000000..56abd27f05 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_packager.png diff --git a/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_polarizer.png b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_polarizer.png Binary files differnew file mode 100644 index 0000000000..53a46b0511 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_polarizer.png diff --git a/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_separator.png b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_separator.png Binary files differnew file mode 100644 index 0000000000..c4dc0a21d0 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_separator.png diff --git a/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_simplewasher.png b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_simplewasher.png Binary files differnew file mode 100644 index 0000000000..fc94ac64d7 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_simplewasher.png diff --git a/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_slicing.png b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_slicing.png Binary files differnew file mode 100644 index 0000000000..5a0dbba939 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_slicing.png diff --git a/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_unpackager.png b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_unpackager.png Binary files differnew file mode 100644 index 0000000000..c1c5753289 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_unpackager.png diff --git a/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_washplant.png b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_washplant.png Binary files differnew file mode 100644 index 0000000000..dad4485df3 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_washplant.png |