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