aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities
diff options
context:
space:
mode:
authorMartin Robertz <dream-master@gmx.net>2023-03-25 18:32:18 +0100
committerGitHub <noreply@github.com>2023-03-25 18:32:18 +0100
commit23543172c014c23a740148c3c9c2668fde574f96 (patch)
tree60ef1dd2e931cd7c8c071c8c2e6597d0ae76a90c /src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities
parent2ab22537fcb12a30858bdaf825d2a396211b34d5 (diff)
downloadGT5-Unofficial-23543172c014c23a740148c3c9c2668fde574f96.tar.gz
GT5-Unofficial-23543172c014c23a740148c3c9c2668fde574f96.tar.bz2
GT5-Unofficial-23543172c014c23a740148c3c9c2668fde574f96.zip
Downtier oreproc GT++ multis to EV and add new EV Mac Stack (#579)
* tier down Multiblock Ore Washer, add Grisium EV mixer recipe to handle in EV * Tier down Thermal Centrifuge * Downgrade Centrifuge to EV maybe we need to nerf other recipes use Inconel Steel 250 later (Solar Tower, Cryo Stuff) * Downgrade Bender to EV * add code for less powerful macerator it has less parallel than original and must be upgraded (like the distillus) to regain the full parallel bonus * update tooltip to reflect casing change for T=1 * spotlessApply (#580) Co-authored-by: GitHub GTNH Actions <> * fix a bunch of issues with macerators * Spotless apply for branch Multiblock-EV-change for #579 (#581) Co-authored-by: GitHub GTNH Actions <> * add Upgrade T2 Card * spotlessApply (#582) Co-authored-by: GitHub GTNH Actions <> * fix NPE upon placing a fresh maceration controller * fix * spotlessApply (#583) Co-authored-by: GitHub GTNH Actions <> --------- Co-authored-by: Glease <4586901+Glease@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities')
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMacerator.java197
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_DistillationTower.java2
2 files changed, 173 insertions, 26 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMacerator.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMacerator.java
index 3860860cee..bf2654b97c 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMacerator.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMacerator.java
@@ -10,6 +10,8 @@ import static gregtech.api.util.GT_StructureUtility.buildHatchAdder;
import java.util.Random;
import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraftforge.common.util.Constants.NBT;
import net.minecraftforge.common.util.ForgeDirection;
import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
@@ -27,12 +29,15 @@ import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
public class GregtechMetaTileEntity_IndustrialMacerator extends
GregtechMeta_MultiBlockBase<GregtechMetaTileEntity_IndustrialMacerator> implements ISurvivalConstructable {
+ private int controllerTier = 1;
private int mCasing;
private int mPerLayer;
private static IStructureDefinition<GregtechMetaTileEntity_IndustrialMacerator> STRUCTURE_DEFINITION = null;
@@ -60,11 +65,13 @@ public class GregtechMetaTileEntity_IndustrialMacerator extends
GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
tt.addMachineType(getMachineType()).addInfo("Controller block for the Industrial Maceration Stack")
.addInfo("60% faster than using single block machines of the same voltage")
- .addInfo("Maximum of 8*tier parallels, LV = Tier 1, MV = Tier 2, etc.")
+ .addInfo("Maximum of n*tier parallels, LV = Tier 1, MV = Tier 2, etc.")
+ .addInfo("n=2 initially. n=8 after inserting Maceration Upgrade Chip.")
.addPollutionAmount(getPollutionPerSecond(null)).addSeparator().beginStructureBlock(3, 6, 3, true)
- .addController("Bottom center").addCasingInfo("Maceration Stack Casings", 26)
- .addInputBus("Bottom casing", 1).addEnergyHatch("Bottom casing", 1)
- .addMaintenanceHatch("Bottom casing", 1).addOutputBus("One per layer except bottom layer", 2)
+ .addController("Bottom center").addCasingInfo("Maceration Stack Casings (After upgrade)", 26)
+ .addCasingInfo("Stable Titanium Casings (Before upgrade)", 26).addInputBus("Bottom casing", 1)
+ .addEnergyHatch("Bottom casing", 1).addMaintenanceHatch("Bottom casing", 1)
+ .addOutputBus("One per layer except bottom layer", 2)
.addMufflerHatch("Any casing except bottom layer", 2).toolTipFinisher(CORE.GT_Tooltip_Builder.get());
return tt;
}
@@ -73,15 +80,18 @@ public class GregtechMetaTileEntity_IndustrialMacerator extends
public IStructureDefinition<GregtechMetaTileEntity_IndustrialMacerator> getStructureDefinition() {
if (STRUCTURE_DEFINITION == null) {
STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialMacerator>builder()
- .addShape(mName + "top", transpose(new String[][] { { "CCC", "CCC", "CCC" }, }))
+ .addShape(mName + "top1", transpose(new String[][] { { "ccc", "ccc", "ccc" }, }))
+ .addShape(mName + "mid1", transpose(new String[][] { { "ccc", "c-c", "ccc" }, }))
+ .addShape(mName + "bottom1", transpose(new String[][] { { "b~b", "bbb", "bbb" }, }))
+ .addShape(mName + "top2", transpose(new String[][] { { "CCC", "CCC", "CCC" }, }))
.addShape(
- mName + "mid",
+ mName + "mid2",
transpose(new String[][] { { "CCC", "C-C", "CCC" }, }))
- .addShape(mName + "bottom", transpose(new String[][] { { "B~B", "BBB", "BBB" }, }))
+ .addShape(mName + "bottom2", transpose(new String[][] { { "B~B", "BBB", "BBB" }, }))
.addElement(
'C',
ofChain(
- buildHatchAdder(GregtechMetaTileEntity_IndustrialMacerator.class).atLeast(OutputBus)
+ buildHatchAdder(GregtechMetaTileEntity_IndustrialMacerator.class).anyOf(OutputBus)
.shouldReject(t -> t.mPerLayer + 1 == t.mOutputBusses.size())
.disallowOnly(ForgeDirection.UP, ForgeDirection.DOWN)
.casingIndex(TAE.GTPP_INDEX(7)).dot(2).build(),
@@ -97,6 +107,31 @@ public class GregtechMetaTileEntity_IndustrialMacerator extends
.atLeast(Energy, Maintenance, InputBus).disallowOnly(ForgeDirection.UP)
.casingIndex(TAE.GTPP_INDEX(7)).dot(2).build(),
onElementPass(x -> ++x.mCasing, ofBlock(ModBlocks.blockCasingsMisc, 7))))
+ .addElement(
+ 'c',
+ ofChain(
+ buildHatchAdder(GregtechMetaTileEntity_IndustrialMacerator.class).anyOf(OutputBus)
+ .shouldReject(t -> t.mPerLayer + 1 == t.mOutputBusses.size())
+ .disallowOnly(ForgeDirection.UP, ForgeDirection.DOWN)
+ .casingIndex(
+ GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings4, 2))
+ .dot(2).build(),
+ buildHatchAdder(GregtechMetaTileEntity_IndustrialMacerator.class)
+ .atLeast(Energy, Maintenance, Muffler)
+ .disallowOnly(ForgeDirection.UP, ForgeDirection.DOWN)
+ .casingIndex(
+ GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings4, 2))
+ .dot(2).build(),
+ onElementPass(x -> ++x.mCasing, ofBlock(GregTech_API.sBlockCasings4, 2))))
+ .addElement(
+ 'b',
+ ofChain(
+ buildHatchAdder(GregtechMetaTileEntity_IndustrialMacerator.class)
+ .atLeast(Energy, Maintenance, InputBus).disallowOnly(ForgeDirection.UP)
+ .casingIndex(
+ GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings4, 2))
+ .dot(2).build(),
+ onElementPass(x -> ++x.mCasing, ofBlock(GregTech_API.sBlockCasings4, 2))))
.build();
}
return STRUCTURE_DEFINITION;
@@ -104,46 +139,95 @@ public class GregtechMetaTileEntity_IndustrialMacerator extends
@Override
public void construct(ItemStack stackSize, boolean hintsOnly) {
- buildPiece(mName + "bottom", stackSize, hintsOnly, 1, 0, 0);
- buildPiece(mName + "mid", stackSize, hintsOnly, 1, 1, 0);
- buildPiece(mName + "mid", stackSize, hintsOnly, 1, 2, 0);
- buildPiece(mName + "mid", stackSize, hintsOnly, 1, 3, 0);
- buildPiece(mName + "mid", stackSize, hintsOnly, 1, 4, 0);
- buildPiece(mName + "top", stackSize, hintsOnly, 1, 5, 0);
+ buildPiece(mName + "bottom" + controllerTier, stackSize, hintsOnly, 1, 0, 0);
+ buildPiece(mName + "mid" + controllerTier, stackSize, hintsOnly, 1, 1, 0);
+ buildPiece(mName + "mid" + controllerTier, stackSize, hintsOnly, 1, 2, 0);
+ buildPiece(mName + "mid" + controllerTier, stackSize, hintsOnly, 1, 3, 0);
+ buildPiece(mName + "mid" + controllerTier, stackSize, hintsOnly, 1, 4, 0);
+ buildPiece(mName + "top" + controllerTier, stackSize, hintsOnly, 1, 5, 0);
}
@Override
public int survivalConstruct(ItemStack stackSize, int elementBudget, ISurvivalBuildEnvironment env) {
if (mMachine) return -1;
int built;
- built = survivialBuildPiece(mName + "bottom", stackSize, 1, 0, 0, elementBudget, env, false, true);
+ built = survivialBuildPiece(
+ mName + "bottom" + controllerTier,
+ stackSize,
+ 1,
+ 0,
+ 0,
+ elementBudget,
+ env,
+ false,
+ true);
mPerLayer = 0;
if (built >= 0) return built;
- built = survivialBuildPiece(mName + "mid", stackSize, 1, 1, 0, elementBudget, env, false, true);
+ built = survivialBuildPiece(
+ mName + "mid" + controllerTier,
+ stackSize,
+ 1,
+ 1,
+ 0,
+ elementBudget,
+ env,
+ false,
+ true);
mPerLayer = 1;
if (built >= 0) return built;
- built = survivialBuildPiece(mName + "mid", stackSize, 1, 2, 0, elementBudget, env, false, true);
+ built = survivialBuildPiece(
+ mName + "mid" + controllerTier,
+ stackSize,
+ 1,
+ 2,
+ 0,
+ elementBudget,
+ env,
+ false,
+ true);
if (built >= 0) return built;
mPerLayer = 2;
- built = survivialBuildPiece(mName + "mid", stackSize, 1, 3, 0, elementBudget, env, false, true);
+ built = survivialBuildPiece(
+ mName + "mid" + controllerTier,
+ stackSize,
+ 1,
+ 3,
+ 0,
+ elementBudget,
+ env,
+ false,
+ true);
if (built >= 0) return built;
mPerLayer = 3;
- built = survivialBuildPiece(mName + "mid", stackSize, 1, 4, 0, elementBudget, env, false, true);
+ built = survivialBuildPiece(
+ mName + "mid" + controllerTier,
+ stackSize,
+ 1,
+ 4,
+ 0,
+ elementBudget,
+ env,
+ false,
+ true);
if (built >= 0) return built;
- return survivialBuildPiece(mName + "top", stackSize, 1, 5, 0, elementBudget, env, false, true);
+ mPerLayer = 4;
+ return survivialBuildPiece(mName + "top" + controllerTier, stackSize, 1, 5, 0, elementBudget, env, false, true);
}
@Override
public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
mCasing = 0;
mPerLayer = 0;
- if (checkPiece(mName + "bottom", 1, 0, 0)) {
+ if (checkPiece(mName + "bottom" + controllerTier, 1, 0, 0)) {
while (mPerLayer < 4) {
- if (!checkPiece(mName + "mid", 1, mPerLayer + 1, 0) || mPerLayer + 1 != mOutputBusses.size())
+ if (!checkPiece(mName + "mid" + controllerTier, 1, mPerLayer + 1, 0)
+ || mPerLayer + 1 != mOutputBusses.size())
return false;
mPerLayer++;
}
- return checkPiece(mName + "top", 1, 5, 0) && mOutputBusses.size() == 5 && mCasing >= 26 && checkHatch();
+ return checkPiece(mName + "top" + controllerTier, 1, 5, 0) && mOutputBusses.size() == 5
+ && mCasing >= 26
+ && checkHatch();
}
return false;
}
@@ -165,7 +249,12 @@ public class GregtechMetaTileEntity_IndustrialMacerator extends
@Override
protected int getCasingTextureId() {
- return TAE.GTPP_INDEX(7);
+ switch (controllerTier) {
+ case 2:
+ return TAE.GTPP_INDEX(7);
+ default:
+ return GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings4, 2);
+ }
}
@Override
@@ -193,6 +282,64 @@ public class GregtechMetaTileEntity_IndustrialMacerator extends
}
@Override
+ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
+ super.onPostTick(aBaseMetaTileEntity, aTick);
+ if (aTick % 20 == 0 && controllerTier == 1) {
+ ItemStack aGuiStack = this.getGUIItemStack();
+ if (aGuiStack != null) {
+ if (GT_Utility.areStacksEqual(aGuiStack, GregtechItemList.Maceration_Upgrade_Chip.get(1))) {
+ controllerTier = 2;
+ mInventory[1] = ItemUtils.depleteStack(aGuiStack);
+ // schedule a structure check
+ mUpdated = true;
+ }
+ }
+ }
+ }
+
+ @Override
+ public void onValueUpdate(byte aValue) {
+ controllerTier = aValue;
+ }
+
+ @Override
+ public byte getUpdateData() {
+ return (byte) controllerTier;
+ }
+
+ @Override
+ public void saveNBTData(NBTTagCompound aNBT) {
+ super.saveNBTData(aNBT);
+ aNBT.setByte("mTier", (byte) controllerTier);
+ }
+
+ @Override
+ public void loadNBTData(NBTTagCompound aNBT) {
+ super.loadNBTData(aNBT);
+ if (!aNBT.hasKey("mTier", NBT.TAG_BYTE))
+ // we assume old macerators are all T2 variants, as they were made before price reduction and shouldn't need
+ // to worry about upgrading
+ controllerTier = 2;
+ else controllerTier = aNBT.getByte("mTier");
+ }
+
+ @Override
+ public void initDefaultModes(NBTTagCompound aNBT) {
+ super.initDefaultModes(aNBT);
+ if (aNBT == null || !aNBT.hasKey("mTier")) {
+ controllerTier = 1;
+ } else {
+ controllerTier = aNBT.getByte("mTier");
+ }
+ }
+
+ @Override
+ public void setItemNBT(NBTTagCompound aNBT) {
+ super.setItemNBT(aNBT);
+ aNBT.setByte("mTier", (byte) controllerTier);
+ }
+
+ @Override
public boolean checkRecipe(final ItemStack aStack) {
return checkRecipeGeneric(getMaxParallelRecipes(), getEuDiscountForParallelism(), 60, 7500);
}
@@ -206,7 +353,7 @@ public class GregtechMetaTileEntity_IndustrialMacerator extends
public int getMaxParallelRecipes() {
final long tVoltage = getMaxInputVoltage();
final byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage));
- return Math.max(1, 8 * tTier);
+ return Math.max(1, (controllerTier == 1 ? 2 : 8) * tTier);
}
@Override
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_DistillationTower.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_DistillationTower.java
index 4d388da0ed..e19393213a 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_DistillationTower.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_DistillationTower.java
@@ -411,7 +411,7 @@ public class GregtechMetaTileEntity_Adv_DistillationTower extends
if (aGuiStack != null) {
if (GT_Utility.areStacksEqual(aGuiStack, GregtechItemList.Distillus_Upgrade_Chip.get(1))) {
this.mUpgraded = true;
- ItemUtils.depleteStack(aGuiStack);
+ mInventory[1] = ItemUtils.depleteStack(aGuiStack);
}
}
}