aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorevgengoldwar <69961523+evgengoldwar@users.noreply.github.com>2024-08-23 19:02:20 +0300
committerGitHub <noreply@github.com>2024-08-23 16:02:20 +0000
commit03b9d86394140fbe9554232690e4e569f4b0754b (patch)
treed96a32f12eacc61cf4e2f4cbb91748cbd067829c /src/main/java
parentc3e8a2d325a4aeb8a65a888b3c91f0c6177a17e9 (diff)
downloadGT5-Unofficial-03b9d86394140fbe9554232690e4e569f4b0754b.tar.gz
GT5-Unofficial-03b9d86394140fbe9554232690e4e569f4b0754b.tar.bz2
GT5-Unofficial-03b9d86394140fbe9554232690e4e569f4b0754b.zip
Added Steam mixer (#2915)
* Added Steam Mixer * Added Steam Mixer * Change logic and tooltip steam multi * Change mixer tooltip * Apply spotless * Fixed updateTexture for InputHatch * Added controller recipe for Steam Mixer --------- Co-authored-by: Martin Robertz <dream-master@gmx.net>
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/gtPlusPlus/core/recipe/RECIPES_Machines.java13
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java2
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_SteamMultiBase.java4
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamCentrifuge.java21
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamCompressor.java20
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamForgeHammer.java21
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamMacerator.java20
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamMixer.java415
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamWasher.java16
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamWaterPump.java5
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechSteamMultis.java7
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/registration/gregtech/MetaTileEntityIDs.java1
12 files changed, 533 insertions, 12 deletions
diff --git a/src/main/java/gtPlusPlus/core/recipe/RECIPES_Machines.java b/src/main/java/gtPlusPlus/core/recipe/RECIPES_Machines.java
index f8acb12367..00d9ccfd92 100644
--- a/src/main/java/gtPlusPlus/core/recipe/RECIPES_Machines.java
+++ b/src/main/java/gtPlusPlus/core/recipe/RECIPES_Machines.java
@@ -1054,6 +1054,19 @@ public class RECIPES_Machines {
aBronzeBricks,
GregtechItemList.Controller_SteamWasherMulti.get(1));
+ // Steam Mixer Multi
+ RecipeUtils.addShapedGregtechRecipe(
+ aBronzeBricks,
+ ALLOY.TUMBAGA.getRing(1),
+ aBronzeBricks,
+ ALLOY.TUMBAGA.getRotor(1),
+ ALLOY.TUMBAGA.getFrameBox(1),
+ ALLOY.TUMBAGA.getRotor(1),
+ aBronzeBricks,
+ ALLOY.TUMBAGA.getRing(1),
+ aBronzeBricks,
+ GregtechItemList.Controller_SteamMixerMulti.get(1));
+
ItemStack aWoodenCasing = ItemUtils.simpleMetaStack(GregTech_API.sBlockCasings9, 2, 1);
// WaterPump
RecipeUtils.addShapedGregtechRecipe(
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
index e62695c0b5..708650dfe2 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
@@ -456,6 +456,8 @@ public enum GregtechItemList implements GregtechItemContainer {
// Bit Steam Forge Hammer
Controller_SteamForgeHammerMulti,
// Big Steam Compressor
+ Controller_SteamMixerMulti,
+ // Big Steam Mixer
Controller_SteamCompressorMulti,
// Industrial Rock Breaker
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_SteamMultiBase.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_SteamMultiBase.java
index aebcafaf83..689bdf52ba 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_SteamMultiBase.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_SteamMultiBase.java
@@ -75,6 +75,8 @@ public abstract class GregtechMeta_SteamMultiBase<T extends GregtechMeta_SteamMu
protected abstract GT_RenderedTexture getFrontOverlayActive();
+ public abstract int getTierRecipes();
+
private int getCasingTextureIndex() {
return 10;
}
@@ -86,7 +88,7 @@ public abstract class GregtechMeta_SteamMultiBase<T extends GregtechMeta_SteamMu
@Override
protected void setProcessingLogicPower(ProcessingLogic logic) {
- logic.setAvailableVoltage(V[1]);
+ logic.setAvailableVoltage(V[getTierRecipes()]);
// We need to trick the GT_ParallelHelper we have enough amps for all recipe parallels.
logic.setAvailableAmperage(getMaxParallelRecipes());
logic.setAmperageOC(false);
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamCentrifuge.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamCentrifuge.java
index 5e1e06d1bd..28528bf656 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamCentrifuge.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamCentrifuge.java
@@ -45,6 +45,8 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.recipe.RecipeMap;
import gregtech.api.recipe.RecipeMaps;
+import gregtech.api.recipe.check.CheckRecipeResult;
+import gregtech.api.recipe.check.CheckRecipeResultRegistry;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_OverclockCalculator;
import gregtech.api.util.GT_Recipe;
@@ -298,6 +300,15 @@ public class GregtechMetaTileEntity_SteamCentrifuge
protected ProcessingLogic createProcessingLogic() {
return new ProcessingLogic() {
+ @Nonnull
+ @Override
+ protected CheckRecipeResult validateRecipe(@Nonnull GT_Recipe recipe) {
+ if (availableVoltage < recipe.mEUt) {
+ return CheckRecipeResultRegistry.insufficientPower(recipe.mEUt);
+ }
+ return CheckRecipeResultRegistry.SUCCESSFUL;
+ }
+
@Override
@Nonnull
protected GT_OverclockCalculator createOverclockCalculator(@NotNull GT_Recipe recipe) {
@@ -309,15 +320,21 @@ public class GregtechMetaTileEntity_SteamCentrifuge
}
@Override
+ public int getTierRecipes() {
+ return tierMachine == 1 ? 1 : 2;
+ }
+
+ @Override
protected GT_Multiblock_Tooltip_Builder createTooltip() {
GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
tt.addMachineType(getMachineType())
.addInfo("Controller Block for the Steam Centrifuge")
- .addInfo("Runs recipes up to MV tier")
.addInfo("33.3% faster than a single block steam machine would run.")
.addInfo(
"On Tier 1, it uses only 66.6% of the steam/s required compared to what a single block steam machine would use.")
- .addInfo("Centrifuges up to 8 x Tier things at a time.")
+ .addInfo("Bronze tier runs recipes up to LV tier")
+ .addInfo("Steel tier runs recipes up to MV tier")
+ .addInfo("Processes 8x parallel Bronze tier and 16x parallel Steel tier")
.addSeparator()
.beginStructureBlock(5, 5, 5, false)
.addInputBus(EnumChatFormatting.GOLD + "1" + EnumChatFormatting.GRAY + " Any casing", 1)
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamCompressor.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamCompressor.java
index 80c84da21e..f2debf5981 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamCompressor.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamCompressor.java
@@ -46,6 +46,8 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.recipe.RecipeMap;
import gregtech.api.recipe.RecipeMaps;
+import gregtech.api.recipe.check.CheckRecipeResult;
+import gregtech.api.recipe.check.CheckRecipeResultRegistry;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_OverclockCalculator;
import gregtech.api.util.GT_Recipe;
@@ -239,6 +241,15 @@ public class GregtechMetaTileEntity_SteamCompressor
protected ProcessingLogic createProcessingLogic() {
return new ProcessingLogic() {
+ @Nonnull
+ @Override
+ protected CheckRecipeResult validateRecipe(@Nonnull GT_Recipe recipe) {
+ if (availableVoltage < recipe.mEUt) {
+ return CheckRecipeResultRegistry.insufficientPower(recipe.mEUt);
+ }
+ return CheckRecipeResultRegistry.SUCCESSFUL;
+ }
+
@Override
@Nonnull
protected GT_OverclockCalculator createOverclockCalculator(@NotNull GT_Recipe recipe) {
@@ -250,13 +261,20 @@ public class GregtechMetaTileEntity_SteamCompressor
}
@Override
+ public int getTierRecipes() {
+ return tierMachine == 1 ? 1 : 2;
+ }
+
+ @Override
protected GT_Multiblock_Tooltip_Builder createTooltip() {
GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
tt.addMachineType(getMachineType())
.addInfo("Controller Block for the Steam Compressor")
.addInfo("33.3% faster than using a single block Steam Compressor.")
.addInfo("Uses only 66.6% of the steam/s compared to a single block Steam Compressor.")
- .addInfo("Compresses up to 8 x Tier things at a time.")
+ .addInfo("Bronze tier runs recipes up to LV tier")
+ .addInfo("Steel tier runs recipes up to MV tier")
+ .addInfo("Processes 8x parallel Bronze tier and 16x parallel Steel tier")
.addSeparator()
.beginStructureBlock(3, 3, 4, false)
.addInputBus(EnumChatFormatting.GOLD + "1" + EnumChatFormatting.GRAY + " Any casing", 1)
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamForgeHammer.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamForgeHammer.java
index 440e9360e3..c444743ca9 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamForgeHammer.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamForgeHammer.java
@@ -48,6 +48,8 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.recipe.RecipeMap;
import gregtech.api.recipe.RecipeMaps;
+import gregtech.api.recipe.check.CheckRecipeResult;
+import gregtech.api.recipe.check.CheckRecipeResultRegistry;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_OverclockCalculator;
import gregtech.api.util.GT_Recipe;
@@ -292,6 +294,15 @@ public class GregtechMetaTileEntity_SteamForgeHammer
protected ProcessingLogic createProcessingLogic() {
return new ProcessingLogic() {
+ @Nonnull
+ @Override
+ protected CheckRecipeResult validateRecipe(@Nonnull GT_Recipe recipe) {
+ if (availableVoltage < recipe.mEUt) {
+ return CheckRecipeResultRegistry.insufficientPower(recipe.mEUt);
+ }
+ return CheckRecipeResultRegistry.SUCCESSFUL;
+ }
+
@Override
@Nonnull
protected GT_OverclockCalculator createOverclockCalculator(@NotNull GT_Recipe recipe) {
@@ -303,15 +314,21 @@ public class GregtechMetaTileEntity_SteamForgeHammer
}
@Override
+ public int getTierRecipes() {
+ return tierMachine == 1 ? 1 : 2;
+ }
+
+ @Override
protected GT_Multiblock_Tooltip_Builder createTooltip() {
GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
tt.addMachineType(getMachineType())
.addInfo("Controller Block for the Steam Forge Hammer")
- .addInfo("Runs recipes up to MV tier")
.addInfo("33.3% faster than a single block steam machine would run.")
.addInfo(
"On Tier 1, it uses only 66.6% of the steam/s required compared to what a single block steam machine would use.")
- .addInfo("Processes up to 8 x Tier things at a time.")
+ .addInfo("Bronze tier runs recipes up to LV tier")
+ .addInfo("Steel tier runs recipes up to MV tier")
+ .addInfo("Processes 8x parallel Bronze tier and 16x parallel Steel tier")
.addSeparator()
.beginStructureBlock(6, 5, 5, false)
.addInputBus(EnumChatFormatting.GOLD + "1" + EnumChatFormatting.GRAY + " Any casing", 1)
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamMacerator.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamMacerator.java
index 6cf3d46bfb..3a055d7403 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamMacerator.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamMacerator.java
@@ -46,6 +46,8 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.recipe.RecipeMap;
import gregtech.api.recipe.RecipeMaps;
+import gregtech.api.recipe.check.CheckRecipeResult;
+import gregtech.api.recipe.check.CheckRecipeResultRegistry;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_OverclockCalculator;
import gregtech.api.util.GT_Recipe;
@@ -240,6 +242,15 @@ public class GregtechMetaTileEntity_SteamMacerator
protected ProcessingLogic createProcessingLogic() {
return new ProcessingLogic() {
+ @Nonnull
+ @Override
+ protected CheckRecipeResult validateRecipe(@Nonnull GT_Recipe recipe) {
+ if (availableVoltage < recipe.mEUt) {
+ return CheckRecipeResultRegistry.insufficientPower(recipe.mEUt);
+ }
+ return CheckRecipeResultRegistry.SUCCESSFUL;
+ }
+
// note that a basic steam machine has .setEUtDiscount(2F).setSpeedBoost(2F). So these here are bonuses.
@Override
@Nonnull
@@ -252,13 +263,20 @@ public class GregtechMetaTileEntity_SteamMacerator
}
@Override
+ public int getTierRecipes() {
+ return tierMachine == 1 ? 1 : 2;
+ }
+
+ @Override
protected GT_Multiblock_Tooltip_Builder createTooltip() {
GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
tt.addMachineType(getMachineType())
.addInfo("Controller Block for the Steam Macerator")
.addInfo("33.3% faster than using a single block Steam Macerator.")
.addInfo("Uses only 66.6% of the steam/s required compared to a single block Steam Macerator on Tier 1.")
- .addInfo("Macerates up to 8 x Tier things at a time.")
+ .addInfo("Bronze tier runs recipes up to LV tier")
+ .addInfo("Steel tier runs recipes up to MV tier")
+ .addInfo("Processes 8x parallel Bronze tier and 16x parallel Steel tier")
.addSeparator()
.beginStructureBlock(3, 3, 3, false)
.addInputBus(EnumChatFormatting.GOLD + "1" + EnumChatFormatting.GRAY + " Any casing", 1)
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamMixer.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamMixer.java
new file mode 100644
index 0000000000..2d92607a06
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamMixer.java
@@ -0,0 +1,415 @@
+package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.steam;
+
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlocksTiered;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofChain;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose;
+import static gregtech.api.GregTech_API.sBlockCasings1;
+import static gregtech.api.GregTech_API.sBlockCasings2;
+import static gregtech.api.enums.GT_HatchElement.InputHatch;
+import static gregtech.api.enums.GT_HatchElement.OutputHatch;
+import static gregtech.api.enums.GT_Values.AuthorEvgenWarGold;
+import static gregtech.api.util.GT_StructureUtility.buildHatchAdder;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.annotation.Nonnull;
+
+import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+
+import org.apache.commons.lang3.tuple.Pair;
+import org.jetbrains.annotations.NotNull;
+
+import com.google.common.collect.ImmutableList;
+import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import gregtech.api.GregTech_API;
+import gregtech.api.enums.SoundResource;
+import gregtech.api.enums.Textures;
+import gregtech.api.interfaces.ITexture;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.logic.ProcessingLogic;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
+import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.recipe.RecipeMap;
+import gregtech.api.recipe.check.CheckRecipeResult;
+import gregtech.api.recipe.check.CheckRecipeResultRegistry;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
+import gregtech.api.util.GT_OverclockCalculator;
+import gregtech.api.util.GT_Recipe;
+import gregtech.common.blocks.GT_Block_Casings1;
+import gregtech.common.blocks.GT_Block_Casings2;
+import gtPlusPlus.api.recipe.GTPPRecipeMaps;
+import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_SteamMultiBase;
+import mcp.mobius.waila.api.IWailaConfigHandler;
+import mcp.mobius.waila.api.IWailaDataAccessor;
+
+public class GregtechMetaTileEntity_SteamMixer extends GregtechMeta_SteamMultiBase<GregtechMetaTileEntity_SteamMixer>
+ implements ISurvivalConstructable {
+
+ public GregtechMetaTileEntity_SteamMixer(String aName) {
+ super(aName);
+ }
+
+ public GregtechMetaTileEntity_SteamMixer(int aID, String aName, String aNameRegional) {
+ super(aID, aName, aNameRegional);
+ }
+
+ @Override
+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
+ return new GregtechMetaTileEntity_SteamMixer(this.mName);
+ }
+
+ @Override
+ public String getMachineType() {
+ return "Mixer";
+ }
+
+ private static final String STRUCTUR_PIECE_MAIN = "main";
+
+ private IStructureDefinition<GregtechMetaTileEntity_SteamMixer> STRUCTURE_DEFINITION = null;
+ // spotless:off
+ private final String[][] shape = new String[][]{
+ {" "," A "," A "," AAAAA "," A "," A "," "},
+ {" A "," A "," ","AA B AA"," "," A "," A "},
+ {" A "," "," ","A C A"," "," "," A "},
+ {" AAAAA ","A A","A A","A C A","A A","A A"," AAAAA "},
+ {" AA~AA ","AD DA","A D D A","A B A","A D D A","AD DA"," AAAAA "},
+ {" AAAAA ","AAAAAAA","AAAAAAA","AAAAAAA","AAAAAAA","AAAAAAA"," AAAAA "}};
+ //spotless:on
+
+ private static final int HORIZONTAL_OFF_SET = 3;
+ private static final int VERTICAL_OFF_SET = 4;
+ private static final int DEPTH_OFF_SET = 0;
+
+ private int tierGearBoxCasing = -1;
+ private int tierPipeCasing = -1;
+ private int tierMachineCasing = -1;
+
+ private int tCountCasing = 0;
+
+ private int tierMachine = 1;
+
+ public int getTierMachineCasing(Block block, int meta) {
+ if (block == sBlockCasings1 && 10 == meta) {
+ tCountCasing++;
+ return 1;
+ }
+ if (block == sBlockCasings2 && 0 == meta) {
+ tCountCasing++;
+ return 2;
+ }
+ return 0;
+ }
+
+ public static int getTierGearBoxCasing(Block block, int meta) {
+ if (block == sBlockCasings2 && 2 == meta) return 1;
+ if (block == sBlockCasings2 && 3 == meta) return 2;
+ return 0;
+ }
+
+ public static int getTierPipeCasing(Block block, int meta) {
+ if (block == sBlockCasings2 && 12 == meta) return 1;
+ if (block == sBlockCasings2 && 13 == meta) return 2;
+ return 0;
+ }
+
+ protected void updateHatchTexture() {
+ for (GT_MetaTileEntity_Hatch h : mSteamInputs) h.updateTexture(getCasingTextureID());
+ for (GT_MetaTileEntity_Hatch h : mSteamOutputs) h.updateTexture(getCasingTextureID());
+ for (GT_MetaTileEntity_Hatch h : mSteamInputFluids) h.updateTexture(getCasingTextureID());
+ for (GT_MetaTileEntity_Hatch h : mOutputHatches) h.updateTexture(getCasingTextureID());
+ for (GT_MetaTileEntity_Hatch h : mInputHatches) h.updateTexture(getCasingTextureID());
+ }
+
+ private int getCasingTextureID() {
+ if (tierGearBoxCasing == 2 || tierPipeCasing == 2 || tierMachineCasing == 2)
+ return ((GT_Block_Casings2) GregTech_API.sBlockCasings2).getTextureIndex(0);
+ return ((GT_Block_Casings1) GregTech_API.sBlockCasings1).getTextureIndex(10);
+ }
+
+ @Override
+ public void onValueUpdate(byte aValue) {
+ tierMachineCasing = aValue;
+ }
+
+ @Override
+ public byte getUpdateData() {
+ return (byte) tierMachineCasing;
+ }
+
+ @Override
+ protected GT_RenderedTexture getFrontOverlay() {
+ return new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_FRONT_STEAM_CENTRIFUGE);
+ }
+
+ @Override
+ protected GT_RenderedTexture getFrontOverlayActive() {
+ return new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_FRONT_STEAM_CENTRIFUGE_ACTIVE);
+ }
+
+ @Override
+ public ITexture[] getTexture(final IGregTechTileEntity aBaseMetaTileEntity, final ForgeDirection side,
+ final ForgeDirection facing, final int aColorIndex, final boolean aActive, final boolean aRedstone) {
+ if (side == facing) {
+ return new ITexture[] { Textures.BlockIcons.getCasingTextureForId(getCasingTextureID()),
+ aActive ? getFrontOverlayActive() : getFrontOverlay() };
+ }
+ return new ITexture[] { Textures.BlockIcons.getCasingTextureForId(getCasingTextureID()) };
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_SteamMixer> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_SteamMixer>builder()
+
+ .addShape(STRUCTUR_PIECE_MAIN, transpose(shape))
+ .addElement(
+ 'B',
+ ofBlocksTiered(
+ GregtechMetaTileEntity_SteamMixer::getTierGearBoxCasing,
+ ImmutableList.of(Pair.of(sBlockCasings2, 2), Pair.of(sBlockCasings2, 3)),
+ -1,
+ (t, m) -> t.tierGearBoxCasing = m,
+ t -> t.tierGearBoxCasing))
+ .addElement(
+ 'C',
+ ofBlocksTiered(
+ GregtechMetaTileEntity_SteamMixer::getTierPipeCasing,
+ ImmutableList.of(Pair.of(sBlockCasings2, 12), Pair.of(sBlockCasings2, 13)),
+ -1,
+ (t, m) -> t.tierPipeCasing = m,
+ t -> t.tierPipeCasing))
+ .addElement('D', ofBlock(Blocks.iron_block, 0))
+ .addElement(
+ 'A',
+ ofChain(
+ buildSteamInput(GregtechMetaTileEntity_SteamMixer.class).casingIndex(10)
+ .dot(1)
+ .allowOnly(ForgeDirection.NORTH)
+ .build(),
+ buildHatchAdder(GregtechMetaTileEntity_SteamMixer.class)
+ .atLeast(
+ SteamHatchElement.InputBus_Steam,
+ SteamHatchElement.OutputBus_Steam,
+ OutputHatch,
+ InputHatch)
+ .casingIndex(10)
+ .dot(1)
+ .allowOnly(ForgeDirection.NORTH)
+ .buildAndChain(),
+ ofBlocksTiered(
+ this::getTierMachineCasing,
+ ImmutableList.of(Pair.of(sBlockCasings1, 10), Pair.of(sBlockCasings2, 0)),
+ -1,
+ (t, m) -> t.tierMachineCasing = m,
+ t -> t.tierMachineCasing)))
+ .build();
+
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ this.buildPiece(STRUCTUR_PIECE_MAIN, stackSize, hintsOnly, HORIZONTAL_OFF_SET, VERTICAL_OFF_SET, DEPTH_OFF_SET);
+ }
+
+ @Override
+ public int survivalConstruct(ItemStack stackSize, int elementBudget, ISurvivalBuildEnvironment env) {
+ if (this.mMachine) return -1;
+ return this.survivialBuildPiece(
+ STRUCTUR_PIECE_MAIN,
+ stackSize,
+ HORIZONTAL_OFF_SET,
+ VERTICAL_OFF_SET,
+ DEPTH_OFF_SET,
+ elementBudget,
+ env,
+ false,
+ true);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ tierGearBoxCasing = -1;
+ tierPipeCasing = -1;
+ tierMachineCasing = -1;
+ tCountCasing = 0;
+ if (!checkPiece(STRUCTUR_PIECE_MAIN, HORIZONTAL_OFF_SET, VERTICAL_OFF_SET, DEPTH_OFF_SET)) return false;
+ if (tierGearBoxCasing < 0 && tierPipeCasing < 0 && tierMachineCasing < 0) return false;
+ if (tierGearBoxCasing == 1 && tierPipeCasing == 1
+ && tierMachineCasing == 1
+ && tCountCasing > 90
+ && !mSteamInputFluids.isEmpty()
+ && !mSteamInputs.isEmpty()
+ && !mSteamOutputs.isEmpty()
+ && !mInputHatches.isEmpty()
+ && !mOutputHatches.isEmpty()) {
+ updateHatchTexture();
+ tierMachine = 1;
+ return true;
+ }
+ if (tierGearBoxCasing == 2 && tierPipeCasing == 2
+ && tierMachineCasing == 2
+ && tCountCasing > 90
+ && !mSteamInputFluids.isEmpty()
+ && !mSteamInputs.isEmpty()
+ && !mSteamOutputs.isEmpty()
+ && !mInputHatches.isEmpty()
+ && !mOutputHatches.isEmpty()) {
+ updateHatchTexture();
+ tierMachine = 2;
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public int getMaxParallelRecipes() {
+ return tierMachine == 1 ? 8 : 16;
+ }
+
+ @Override
+ public RecipeMap<?> getRecipeMap() {
+ return GTPPRecipeMaps.mixerNonCellRecipes;
+ }
+
+ @Override
+ protected ProcessingLogic createProcessingLogic() {
+ return new ProcessingLogic() {
+
+ @Nonnull
+ @Override
+ protected CheckRecipeResult validateRecipe(@Nonnull GT_Recipe recipe) {
+ if (availableVoltage < recipe.mEUt) {
+ return CheckRecipeResultRegistry.insufficientPower(recipe.mEUt);
+ }
+ return CheckRecipeResultRegistry.SUCCESSFUL;
+ }
+
+ @Override
+ @Nonnull
+ protected GT_OverclockCalculator createOverclockCalculator(@NotNull GT_Recipe recipe) {
+ return GT_OverclockCalculator.ofNoOverclock(recipe)
+ .setEUtDiscount(1.33F)
+ .setSpeedBoost(1.5F);
+ }
+ }.setMaxParallelSupplier(this::getMaxParallelRecipes);
+ }
+
+ @Override
+ public int getTierRecipes() {
+ return tierMachine == 1 ? 1 : 2;
+ }
+
+ @Override
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Steam Mixer")
+ .addInfo("Bronze tier runs recipes up to LV tier")
+ .addInfo("Steel tier runs recipes up to MV tier")
+ .addInfo("Processes 8x parallel Bronze tier and 16x parallel Steel tier")
+ .addSeparator()
+ .beginStructureBlock(7, 6, 7, false)
+ .addInputBus(EnumChatFormatting.GOLD + "1" + EnumChatFormatting.GRAY + " Any casing", 1)
+ .addInputHatch(EnumChatFormatting.GOLD + "1" + EnumChatFormatting.GRAY + " Any casing", 1)
+ .addOutputBus(EnumChatFormatting.GOLD + "1" + EnumChatFormatting.GRAY + " Any casing", 1)
+ .addOutputHatch(EnumChatFormatting.GOLD + "1" + EnumChatFormatting.GRAY + " Any casing", 1)
+ .addStructureInfo(
+ EnumChatFormatting.WHITE + "Steam Input Hatch "
+ + EnumChatFormatting.GOLD
+ + "1"
+ + EnumChatFormatting.GRAY
+ + " Any casing")
+ .addStructureInfo("")
+ .addStructureInfo(EnumChatFormatting.BLUE + "Tier " + EnumChatFormatting.DARK_PURPLE + 1)
+ .addStructureInfo(EnumChatFormatting.GOLD + "90-100x" + EnumChatFormatting.GRAY + " Bronze Plated Bricks")
+ .addStructureInfo(EnumChatFormatting.GOLD + "2x" + EnumChatFormatting.GRAY + " Bronze Gear Box Casing")
+ .addStructureInfo(EnumChatFormatting.GOLD + "2x" + EnumChatFormatting.GRAY + " Bronze Pipe Casing")
+ .addStructureInfo(EnumChatFormatting.GOLD + "8x" + EnumChatFormatting.GRAY + " Block of Iron")
+ .addStructureInfo("")
+ .addStructureInfo(EnumChatFormatting.BLUE + "Tier " + EnumChatFormatting.DARK_PURPLE + 2)
+ .addStructureInfo(
+ EnumChatFormatting.GOLD + "90-100x" + EnumChatFormatting.GRAY + " Solid Steel Machine Casing")
+ .addStructureInfo(EnumChatFormatting.GOLD + "2x" + EnumChatFormatting.GRAY + " Steel Gear Box Casing")
+ .addStructureInfo(EnumChatFormatting.GOLD + "2x" + EnumChatFormatting.GRAY + " Steel Pipe Casing")
+ .addStructureInfo(EnumChatFormatting.GOLD + "8x" + EnumChatFormatting.GRAY + " Block of Iron")
+ .addStructureInfo("")
+ .toolTipFinisher(AuthorEvgenWarGold);
+ return tt;
+ }
+
+ @Override
+ public String[] getInfoData() {
+ ArrayList<String> info = new ArrayList<>(Arrays.asList(super.getInfoData()));
+ info.add("Machine Tier: " + EnumChatFormatting.YELLOW + tierMachine);
+ info.add("Parallel: " + EnumChatFormatting.YELLOW + getMaxParallelRecipes());
+ return info.toArray(new String[0]);
+ }
+
+ @Override
+ public void getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor,
+ IWailaConfigHandler config) {
+ super.getWailaBody(itemStack, currenttip, accessor, config);
+ NBTTagCompound tag = accessor.getNBTData();
+
+ currenttip.add(
+ StatCollector.translateToLocal("GTPP.machines.tier") + ": "
+ + EnumChatFormatting.YELLOW
+ + tag.getInteger("tierMachine")
+ + EnumChatFormatting.RESET);
+ currenttip.add(
+ StatCollector.translateToLocal("GT5U.multiblock.curparallelism") + ": "
+ + EnumChatFormatting.BLUE
+ + tag.getInteger("parallel")
+ + EnumChatFormatting.RESET);
+ }
+
+ @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.setInteger("tierMachine", tierMachine);
+ tag.setInteger("parallel", getMaxParallelRecipes());
+ }
+
+ @Override
+ public void saveNBTData(NBTTagCompound aNBT) {
+ super.saveNBTData(aNBT);
+ aNBT.setInteger("tierMachine", tierMachine);
+ }
+
+ @Override
+ public void loadNBTData(final NBTTagCompound aNBT) {
+ super.loadNBTData(aNBT);
+ tierMachine = aNBT.getInteger("tierMachine");
+ }
+
+ @SideOnly(Side.CLIENT)
+ @Override
+ protected ResourceLocation getActivitySoundLoop() {
+ return SoundResource.GT_MACHINES_STEAM_CENTRIFUGE_LOOP.resourceLocation;
+ }
+
+}
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamWasher.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamWasher.java
index c556f23315..050fa19fd9 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamWasher.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamWasher.java
@@ -322,9 +322,9 @@ public class GregtechMetaTileEntity_SteamWasher extends GregtechMeta_SteamMultiB
if (isBroken) {
checkForWater();
isBroken = false;
- } else {
- return CheckRecipeResultRegistry.SUCCESSFUL;
- }
+ } else if (availableVoltage < recipe.mEUt) {
+ return CheckRecipeResultRegistry.insufficientPower(recipe.mEUt);
+ } else return CheckRecipeResultRegistry.SUCCESSFUL;
return SimpleCheckRecipeResult.ofFailure("no_water");
}
@@ -339,15 +339,21 @@ public class GregtechMetaTileEntity_SteamWasher extends GregtechMeta_SteamMultiB
}
@Override
+ public int getTierRecipes() {
+ return tierMachine == 1 ? 1 : 2;
+ }
+
+ @Override
protected GT_Multiblock_Tooltip_Builder createTooltip() {
GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
tt.addMachineType(getMachineType())
.addInfo("Controller Block for the Steam Washer")
- .addInfo("Runs recipes up to LV tier")
.addInfo("33.3% faster than a single block steam machine would run.")
.addInfo(
"On Tier 1, it uses only 66.6% of the steam/s required compared to what a single block steam machine would use.")
- .addInfo("Washes up to 8 x Tier things at a time.")
+ .addInfo("Bronze tier runs recipes up to LV tier")
+ .addInfo("Steel tier runs recipes up to MV tier")
+ .addInfo("Processes 8x parallel Bronze tier and 16x parallel Steel tier")
.addSeparator()
.beginStructureBlock(5, 5, 5, false)
.addInputBus(EnumChatFormatting.GOLD + "1" + EnumChatFormatting.GRAY + " Any casing", 1)
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamWaterPump.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamWaterPump.java
index 0c4e66c4d3..9d727b21ba 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamWaterPump.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamWaterPump.java
@@ -302,6 +302,11 @@ public class GregtechMetaTileEntity_SteamWaterPump
}
@Override
+ public int getTierRecipes() {
+ return 0;
+ }
+
+ @Override
public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
super.onPostTick(aBaseMetaTileEntity, aTick);
if (aBaseMetaTileEntity.isServerSide()) {
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechSteamMultis.java b/src/main/java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechSteamMultis.java
index ebffa24904..9b49bf8348 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechSteamMultis.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechSteamMultis.java
@@ -1,6 +1,7 @@
package gtPlusPlus.xmod.gregtech.registration.gregtech;
import static gtPlusPlus.xmod.gregtech.registration.gregtech.MetaTileEntityIDs.ControllerSteamForgeHammer;
+import static gtPlusPlus.xmod.gregtech.registration.gregtech.MetaTileEntityIDs.ControllerSteamMixerMulti;
import static gtPlusPlus.xmod.gregtech.registration.gregtech.MetaTileEntityIDs.Controller_SteamCentrifugeMulti;
import static gtPlusPlus.xmod.gregtech.registration.gregtech.MetaTileEntityIDs.Controller_SteamCompressorMulti;
import static gtPlusPlus.xmod.gregtech.registration.gregtech.MetaTileEntityIDs.Controller_SteamMaceratorMulti;
@@ -16,6 +17,7 @@ import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.st
import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.steam.GregtechMetaTileEntity_SteamCompressor;
import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.steam.GregtechMetaTileEntity_SteamForgeHammer;
import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.steam.GregtechMetaTileEntity_SteamMacerator;
+import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.steam.GregtechMetaTileEntity_SteamMixer;
import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.steam.GregtechMetaTileEntity_SteamWasher;
public class GregtechSteamMultis {
@@ -49,6 +51,11 @@ public class GregtechSteamMultis {
ControllerSteamForgeHammer.ID,
"gtpp.multimachine.steam.forge.hammer",
"Steam Forge Hammer").getStackForm(1));
+ GregtechItemList.Controller_SteamMixerMulti.set(
+ new GregtechMetaTileEntity_SteamMixer(
+ ControllerSteamMixerMulti.ID,
+ "gtpp.multimachine.steam.mixer",
+ "Steam Mixer").getStackForm(1));
GregtechItemList.Hatch_Input_Bus_Steam.set(
new GT_MetaTileEntity_Hatch_Steam_BusInput(
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/registration/gregtech/MetaTileEntityIDs.java b/src/main/java/gtPlusPlus/xmod/gregtech/registration/gregtech/MetaTileEntityIDs.java
index 42126abc0a..15f2037b6c 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/registration/gregtech/MetaTileEntityIDs.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/registration/gregtech/MetaTileEntityIDs.java
@@ -186,6 +186,7 @@ public enum MetaTileEntityIDs {
Controller_SteamCentrifugeMulti(31080),
Controller_SteamWasherMulti(31082),
ControllerSteamForgeHammer(31083),
+ ControllerSteamMixerMulti(31084),
GT4_Electric_Auto_Workbench_LV(31091),
GT4_Electric_Auto_Workbench_MV(31092),
GT4_Electric_Auto_Workbench_HV(31093),