diff options
author | evgengoldwar <69961523+evgengoldwar@users.noreply.github.com> | 2024-08-23 19:02:20 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-23 16:02:20 +0000 |
commit | 03b9d86394140fbe9554232690e4e569f4b0754b (patch) | |
tree | d96a32f12eacc61cf4e2f4cbb91748cbd067829c /src/main/java | |
parent | c3e8a2d325a4aeb8a65a888b3c91f0c6177a17e9 (diff) | |
download | GT5-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')
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), |