aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLyft <127234178+Lyfts@users.noreply.github.com>2024-11-23 15:17:17 +0100
committerGitHub <noreply@github.com>2024-11-23 14:17:17 +0000
commit3605cfcc3f4b0a77294a98867f2d6f12c146e664 (patch)
treef8460ff19b578003bb2a09904d0e8014e8a4fcc0
parent65f01576cae54415ada2153d6b013543e14ea3c4 (diff)
downloadGT5-Unofficial-3605cfcc3f4b0a77294a98867f2d6f12c146e664.tar.gz
GT5-Unofficial-3605cfcc3f4b0a77294a98867f2d6f12c146e664.tar.bz2
GT5-Unofficial-3605cfcc3f4b0a77294a98867f2d6f12c146e664.zip
Use ofBlocksTiered for steam water pump structure (#3521)
Co-authored-by: Martin Robertz <dream-master@gmx.net>
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/MTESteamWaterPump.java94
1 files changed, 40 insertions, 54 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/MTESteamWaterPump.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/MTESteamWaterPump.java
index 8765866b68..8b592a1cc1 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/MTESteamWaterPump.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/MTESteamWaterPump.java
@@ -1,15 +1,16 @@
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.onElementPass;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose;
import static gregtech.api.enums.HatchElement.OutputHatch;
import static gregtech.api.util.GTStructureUtility.buildHatchAdder;
-import static gregtech.api.util.GTStructureUtility.ofFrame;
import java.util.List;
+import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@@ -22,8 +23,10 @@ import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
+import org.apache.commons.lang3.tuple.Pair;
import org.jetbrains.annotations.NotNull;
+import com.google.common.collect.ImmutableList;
import com.gtnewhorizon.structurelib.alignment.IAlignmentLimits;
import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
@@ -76,8 +79,7 @@ public class MTESteamWaterPump extends MTESteamMultiBase<MTESteamWaterPump> impl
private static final int HORIZONTAL_OFF_SET = 1;
private static final int VERTICAL_OFF_SET = 2;
private static final int DEPTH_OFF_SET = 0;
- private static final String tier1 = "tier1";
- private static final String tier2 = "tier2";
+ private static final String STRUCTURE_PIECE_MAIN = "main";
// Base amount of water produced per second, before applying humidity and tier modifiers.
private static final int BASE_WATER_PER_SECOND = 1_500;
@@ -85,7 +87,7 @@ public class MTESteamWaterPump extends MTESteamMultiBase<MTESteamWaterPump> impl
private static final int BASE_STEAM_PER_SECOND = 1_500;
- private int mSetTier = 1;
+ private int mSetTier = -1;
private float currentHumidity;
@@ -99,8 +101,7 @@ public class MTESteamWaterPump extends MTESteamMultiBase<MTESteamWaterPump> impl
private float getHumidity() {
return this.getBaseMetaTileEntity()
- .getWorld()
- .getBiomeGenForCoords(getBaseMetaTileEntity().getXCoord(), getBaseMetaTileEntity().getZCoord()).rainfall;
+ .getBiome().rainfall;
}
private int calculateFinalWaterOutput() {
@@ -113,23 +114,15 @@ public class MTESteamWaterPump extends MTESteamMultiBase<MTESteamWaterPump> impl
if (STRUCTURE_DEFINITION == null) {
STRUCTURE_DEFINITION = StructureDefinition.<MTESteamWaterPump>builder()
-
.addShape(
- tier1,
+ STRUCTURE_PIECE_MAIN,
transpose(
new String[][] {
{ " A ", " A ", "AAA", " A " },
{ " A ", " ", "A A", " A " },
{ "C~C", "CCC", "CCC", "CCC" } }))
- .addShape(
- tier2,
- transpose(
- new String[][] {
- { " D ", " D ", "DDD", " D " },
- { " D ", " ", "D D", " D " },
- { "C~C", "CCC", "CCC", "CCC" } }))
- .addElement('A', ofFrame(Materials.Bronze))
- .addElement('D', ofFrame(Materials.Steel))
+ .addElement('A', ofBlocksTiered(MTESteamWaterPump::getFrameTier, ImmutableList.of(Pair.of(GregTechAPI.sBlockFrames, Materials.Bronze.mMetaItemSubID),
+ Pair.of(GregTechAPI.sBlockFrames, Materials.Steel.mMetaItemSubID)), -1, (pump, tier) -> pump.mSetTier = tier , pump -> pump.mSetTier))
.addElement(
'C',
ofChain(
@@ -151,59 +144,52 @@ public class MTESteamWaterPump extends MTESteamMultiBase<MTESteamWaterPump> impl
}
// spotless:on
+ public static int getFrameTier(Block block, int meta) {
+ if (block == GregTechAPI.sBlockFrames) {
+ if (meta == Materials.Bronze.mMetaItemSubID) return 1;
+ if (meta == Materials.Steel.mMetaItemSubID) return 2;
+ }
+ return 0;
+ }
+
@Override
public void construct(ItemStack stackSize, boolean hintsOnly) {
- if (stackSize.stackSize == 1) {
- this.buildPiece(tier1, stackSize, hintsOnly, HORIZONTAL_OFF_SET, VERTICAL_OFF_SET, DEPTH_OFF_SET);
- } else {
- this.buildPiece(tier2, stackSize, hintsOnly, HORIZONTAL_OFF_SET, VERTICAL_OFF_SET, DEPTH_OFF_SET);
- }
+ this.buildPiece(
+ STRUCTURE_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;
- int built = 0;
- if (stackSize.stackSize == 1) {
- mSetTier = 1;
- built += this.survivialBuildPiece(
- tier1,
- stackSize,
- HORIZONTAL_OFF_SET,
- VERTICAL_OFF_SET,
- DEPTH_OFF_SET,
- elementBudget,
- env,
- false,
- true);
- } else {
- mSetTier = 2;
- built += this.survivialBuildPiece(
- tier2,
- stackSize,
- HORIZONTAL_OFF_SET,
- VERTICAL_OFF_SET,
- DEPTH_OFF_SET,
- elementBudget,
- env,
- false,
- true);
- }
- return built;
+ return this.survivialBuildPiece(
+ STRUCTURE_PIECE_MAIN,
+ stackSize,
+ HORIZONTAL_OFF_SET,
+ VERTICAL_OFF_SET,
+ DEPTH_OFF_SET,
+ elementBudget,
+ env,
+ false,
+ true);
}
public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
mCountCasing = 0;
- mSetTier = 1;
- if (!checkPiece(tier1, HORIZONTAL_OFF_SET, VERTICAL_OFF_SET, DEPTH_OFF_SET)) {
- if (!checkPiece(tier2, HORIZONTAL_OFF_SET, VERTICAL_OFF_SET, DEPTH_OFF_SET)) return false;
- mSetTier = 2;
+ mSetTier = -1;
+
+ if (!checkPiece(STRUCTURE_PIECE_MAIN, HORIZONTAL_OFF_SET, VERTICAL_OFF_SET, DEPTH_OFF_SET)) {
+ return false;
}
if (this.mOutputHatches.size() != 1 || this.mSteamInputFluids.size() != 1) return false;
currentHumidity = getHumidity();
- return mCountCasing >= 9;
+ return mCountCasing >= 9 && mSetTier > 0;
}
@Override