aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorMary <33456283+FourIsTheNumber@users.noreply.github.com>2024-07-19 12:27:40 -0400
committerGitHub <noreply@github.com>2024-07-19 23:27:40 +0700
commit1842f59eeb837edecfc31dae8a2b35fcda471b38 (patch)
tree826ae5a141706145ed48ec415c57b3bf93a3fc88 /src/main
parente4b0d5d1e0f6080d4896c6ceec649d16fe68369f (diff)
downloadGT5-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')
-rw-r--r--src/main/java/gregtech/api/gui/modularui/GT_UITextures.java30
-rw-r--r--src/main/java/gregtech/api/interfaces/modularui/ControllerWithOptionalFeatures.java71
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java57
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_IndustrialElectromagneticSeparator.java38
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_MultiCanner.java33
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GMTE_AmazonPackager.java36
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCuttingMachine.java41
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMultiMachine.java87
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialPlatePress.java40
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWashPlant.java65
-rw-r--r--src/main/resources/assets/gregtech/lang/en_US.lang13
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_bending.pngbin0 -> 571 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_chembath.pngbin0 -> 564 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_cutting.pngbin0 -> 644 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_default.pngbin0 -> 590 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_forming.pngbin0 -> 590 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_lpf_fluid.pngbin0 -> 574 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_lpf_metal.pngbin0 -> 586 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_packager.pngbin0 -> 615 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_polarizer.pngbin0 -> 600 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_separator.pngbin0 -> 538 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_simplewasher.pngbin0 -> 564 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_slicing.pngbin0 -> 543 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_unpackager.pngbin0 -> 618 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_washplant.pngbin0 -> 595 bytes
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
new file mode 100644
index 0000000000..026d49a8b1
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_bending.png
Binary files differ
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
new file mode 100644
index 0000000000..5b54193005
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_chembath.png
Binary files differ
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
new file mode 100644
index 0000000000..85eefe9e95
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_cutting.png
Binary files differ
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
new file mode 100644
index 0000000000..dff8315e40
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_default.png
Binary files differ
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
new file mode 100644
index 0000000000..28b005fd20
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_forming.png
Binary files differ
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
new file mode 100644
index 0000000000..77fcdcf993
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_lpf_fluid.png
Binary files differ
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
new file mode 100644
index 0000000000..9b751bd92f
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_lpf_metal.png
Binary files differ
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
new file mode 100644
index 0000000000..56abd27f05
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_packager.png
Binary files differ
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
new file mode 100644
index 0000000000..53a46b0511
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_polarizer.png
Binary files differ
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
new file mode 100644
index 0000000000..c4dc0a21d0
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_separator.png
Binary files differ
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
new file mode 100644
index 0000000000..fc94ac64d7
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_simplewasher.png
Binary files differ
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
new file mode 100644
index 0000000000..5a0dbba939
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_slicing.png
Binary files differ
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
new file mode 100644
index 0000000000..c1c5753289
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_unpackager.png
Binary files differ
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
new file mode 100644
index 0000000000..dad4485df3
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/gui/overlay_button/machine_mode_washplant.png
Binary files differ