aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/goodgenerator
diff options
context:
space:
mode:
authorMaxim <maxim235@gmx.de>2022-10-12 19:59:27 +0200
committerGitHub <noreply@github.com>2022-10-12 19:59:27 +0200
commitc770197d9b5b74c23bc83879da5678eaccffd4ce (patch)
tree000a4504dec29c8b7261ffadaaeb81267a7c5a09 /src/main/java/goodgenerator
parentca665ff165429d751b2c5142fa5b26d335692b43 (diff)
downloadGT5-Unofficial-c770197d9b5b74c23bc83879da5678eaccffd4ce.tar.gz
GT5-Unofficial-c770197d9b5b74c23bc83879da5678eaccffd4ce.tar.bz2
GT5-Unofficial-c770197d9b5b74c23bc83879da5678eaccffd4ce.zip
Auto place integration (#83)
* Updated needed dependancies * Added autoplace integration for compact fusion reactors * Corrected energy hatch type and increased budget for large fusion * Applied spotless * Added autoplace integration to precise assembler * Reverted check for now * survival build multis * spotless * spotless annoyance * Added structure check from normal compact to gtpp compact * SC Steam turbine survival Co-authored-by: BlueWeabo <76872108+BlueWeabo@users.noreply.github.com>
Diffstat (limited to 'src/main/java/goodgenerator')
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/CoolantTower.java24
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/ExtremeHeatExchanger.java87
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/FuelRefineFactory.java27
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaGenerator.java24
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaSmeltery.java46
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer1.java2
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer4.java2
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer5.java2
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/MultiNqGenerator.java25
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/NeutronActivator.java98
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/PreciseAssembler.java96
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/UniversalChemicalFuelEngine.java47
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/YottaFluidTank.java71
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/base/GT_MetaTileEntity_LargeTurbineBase.java36
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/base/LargeFusionComputer.java71
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/base/LargeFusionComputerPP.java81
16 files changed, 560 insertions, 179 deletions
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/CoolantTower.java b/src/main/java/goodgenerator/blocks/tileEntity/CoolantTower.java
index f011934b66..3cee14c86f 100644
--- a/src/main/java/goodgenerator/blocks/tileEntity/CoolantTower.java
+++ b/src/main/java/goodgenerator/blocks/tileEntity/CoolantTower.java
@@ -3,16 +3,18 @@ package goodgenerator.blocks.tileEntity;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
import static goodgenerator.util.DescTextLocalization.BLUE_PRINT_INFO;
import static gregtech.api.enums.Textures.BlockIcons.*;
-import static gregtech.api.util.GT_StructureUtility.ofFrame;
-import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+import static gregtech.api.util.GT_StructureUtility.*;
import com.github.technus.tectech.thing.metaTileEntity.multi.base.GT_MetaTileEntity_MultiblockBase_EM;
import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable;
+import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
+import com.gtnewhorizon.structurelib.structure.IItemSource;
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
import com.gtnewhorizon.structurelib.structure.StructureDefinition;
import goodgenerator.blocks.tileEntity.base.GT_MetaTileEntity_TooltipMultiBlockBase_EM;
import goodgenerator.util.DescTextLocalization;
import gregtech.api.GregTech_API;
+import gregtech.api.enums.GT_HatchElement;
import gregtech.api.enums.Materials;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
@@ -24,10 +26,12 @@ import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Utility;
+import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;
-public class CoolantTower extends GT_MetaTileEntity_TooltipMultiBlockBase_EM implements IConstructable {
+public class CoolantTower extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
+ implements IConstructable, ISurvivalConstructable {
protected IStructureDefinition<CoolantTower> multiDefinition = null;
private final int CASING_INDEX = 1542;
@@ -219,9 +223,11 @@ public class CoolantTower extends GT_MetaTileEntity_TooltipMultiBlockBase_EM imp
.addElement('C', ofFrame(Materials.TungstenCarbide))
.addElement(
'H',
- ofChain(
- ofHatchAdder(CoolantTower::addIOFluidToMachineList, CASING_INDEX, 1),
- ofBlockAnyMeta(GregTech_API.sBlockConcretes, 8)))
+ ofChain(buildHatchAdder(CoolantTower.class)
+ .atLeast(GT_HatchElement.InputHatch, GT_HatchElement.OutputHatch)
+ .casingIndex(CASING_INDEX)
+ .dot(1)
+ .buildAndChain(ofBlockAnyMeta(GregTech_API.sBlockConcretes, 8))))
.build();
}
return multiDefinition;
@@ -362,4 +368,10 @@ public class CoolantTower extends GT_MetaTileEntity_TooltipMultiBlockBase_EM imp
}
return new ITexture[] {casingTexturePages[12][6]};
}
+
+ @Override
+ public int survivalConstruct(ItemStack stackSize, int elementBudget, IItemSource source, EntityPlayerMP actor) {
+ if (mMachine) return -1;
+ return survivialBuildPiece(mName, stackSize, 5, 11, 0, elementBudget, source, actor, false, true);
+ }
}
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/ExtremeHeatExchanger.java b/src/main/java/goodgenerator/blocks/tileEntity/ExtremeHeatExchanger.java
index c7472acfbe..75d131aff3 100644
--- a/src/main/java/goodgenerator/blocks/tileEntity/ExtremeHeatExchanger.java
+++ b/src/main/java/goodgenerator/blocks/tileEntity/ExtremeHeatExchanger.java
@@ -4,9 +4,12 @@ import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
import static goodgenerator.util.DescTextLocalization.BLUE_PRINT_INFO;
import static gregtech.api.enums.GT_Values.V;
import static gregtech.api.enums.Textures.BlockIcons.*;
+import static gregtech.api.util.GT_StructureUtility.buildHatchAdder;
import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable;
+import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
+import com.gtnewhorizon.structurelib.structure.IItemSource;
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
import com.gtnewhorizon.structurelib.structure.StructureDefinition;
import goodgenerator.blocks.tileEntity.base.GT_MetaTileEntity_TooltipMultiBlockBase_EM;
@@ -14,6 +17,8 @@ import goodgenerator.loader.Loaders;
import goodgenerator.util.DescTextLocalization;
import goodgenerator.util.MyRecipeAdder;
import gregtech.api.GregTech_API;
+import gregtech.api.enums.GT_HatchElement;
+import gregtech.api.interfaces.IHatchElement;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
@@ -21,12 +26,13 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output;
import gregtech.api.render.TextureFactory;
-import gregtech.api.util.GT_Log;
-import gregtech.api.util.GT_ModHandler;
-import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
-import gregtech.api.util.GT_Utility;
+import gregtech.api.util.*;
import ic2.core.Ic2Items;
+import java.util.Arrays;
+import java.util.Collections;
+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;
import net.minecraft.util.EnumChatFormatting;
@@ -34,7 +40,8 @@ import net.minecraft.util.StatCollector;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
-public class ExtremeHeatExchanger extends GT_MetaTileEntity_TooltipMultiBlockBase_EM implements IConstructable {
+public class ExtremeHeatExchanger extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
+ implements IConstructable, ISurvivalConstructable {
protected IStructureDefinition<ExtremeHeatExchanger> multiDefinition = null;
@@ -87,17 +94,35 @@ public class ExtremeHeatExchanger extends GT_MetaTileEntity_TooltipMultiBlockBas
.addElement(
'B',
ofChain(
- ofHatchAdder(ExtremeHeatExchanger::addClassicInputToMachineList, 48, 1),
- ofHatchAdder(ExtremeHeatExchanger::addMaintenanceToMachineList, 48, 1),
+ buildHatchAdder(ExtremeHeatExchanger.class)
+ .atLeast(GT_HatchElement.InputHatch, GT_HatchElement.Maintenance)
+ .casingIndex(48)
+ .dot(1)
+ .build(),
onElementPass(x -> x.casingAmount++, ofBlock(GregTech_API.sBlockCasings4, 0))))
.addElement(
'T',
ofChain(
- ofHatchAdder(ExtremeHeatExchanger::addClassicOutputToMachineList, 48, 2),
- ofHatchAdder(ExtremeHeatExchanger::addMaintenanceToMachineList, 48, 2),
+ buildHatchAdder(ExtremeHeatExchanger.class)
+ .atLeast(GT_HatchElement.OutputHatch, GT_HatchElement.Maintenance)
+ .casingIndex(48)
+ .dot(1)
+ .build(),
onElementPass(x -> x.casingAmount++, ofBlock(GregTech_API.sBlockCasings4, 0))))
- .addElement('F', ofHatchAdder(ExtremeHeatExchanger::addHotFluidInputToMachineList, 48, 3))
- .addElement('E', ofHatchAdder(ExtremeHeatExchanger::addColdFluidOutputToMachineList, 48, 4))
+ .addElement(
+ 'F',
+ buildHatchAdder(ExtremeHeatExchanger.class)
+ .atLeast(EHEHatches.HotInputHatch)
+ .casingIndex(48)
+ .dot(3)
+ .build())
+ .addElement(
+ 'E',
+ buildHatchAdder(ExtremeHeatExchanger.class)
+ .atLeast(EHEHatches.ColdOutputHatch)
+ .casingIndex(48)
+ .dot(4)
+ .build())
.addElement(
'C',
ofChain(
@@ -331,4 +356,44 @@ public class ExtremeHeatExchanger extends GT_MetaTileEntity_TooltipMultiBlockBas
}
return new ITexture[] {casingTexturePages[0][48]};
}
+
+ @Override
+ public int survivalConstruct(ItemStack stackSize, int elementBudget, IItemSource source, EntityPlayerMP actor) {
+ if (mMachine) return -1;
+ return survivialBuildPiece(mName, stackSize, 2, 5, 0, elementBudget, source, actor, false, true);
+ }
+
+ private enum EHEHatches implements IHatchElement<ExtremeHeatExchanger> {
+ HotInputHatch(ExtremeHeatExchanger::addHotFluidInputToMachineList, GT_MetaTileEntity_Hatch_Input.class) {
+ @Override
+ public long count(ExtremeHeatExchanger t) {
+ if (t.mHotFluidHatch == null) return 0;
+ return 1;
+ }
+ },
+ ColdOutputHatch(ExtremeHeatExchanger::addColdFluidOutputToMachineList, GT_MetaTileEntity_Hatch_Output.class) {
+ @Override
+ public long count(ExtremeHeatExchanger t) {
+ if (t.mCooledFluidHatch == null) return 0;
+ return 1;
+ }
+ };
+
+ private final List<Class<? extends IMetaTileEntity>> mteClasses;
+ private final IGT_HatchAdder<ExtremeHeatExchanger> adder;
+
+ EHEHatches(IGT_HatchAdder<ExtremeHeatExchanger> adder, Class<? extends IMetaTileEntity>... mteClasses) {
+ this.mteClasses = Collections.unmodifiableList(Arrays.asList(mteClasses));
+ this.adder = adder;
+ }
+
+ @Override
+ public List<? extends Class<? extends IMetaTileEntity>> mteClasses() {
+ return mteClasses;
+ }
+
+ public IGT_HatchAdder<? super ExtremeHeatExchanger> adder() {
+ return adder;
+ }
+ }
}
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/FuelRefineFactory.java b/src/main/java/goodgenerator/blocks/tileEntity/FuelRefineFactory.java
index f964303394..80f5757e83 100644
--- a/src/main/java/goodgenerator/blocks/tileEntity/FuelRefineFactory.java
+++ b/src/main/java/goodgenerator/blocks/tileEntity/FuelRefineFactory.java
@@ -3,13 +3,15 @@ package goodgenerator.blocks.tileEntity;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
import static goodgenerator.util.DescTextLocalization.BLUE_PRINT_INFO;
import static gregtech.api.enums.GT_Values.V;
-import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+import static gregtech.api.util.GT_StructureUtility.buildHatchAdder;
import com.github.bartimaeusnek.crossmod.tectech.TecTechEnabledMulti;
import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_EnergyMulti;
import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_EnergyTunnel;
import com.gtnewhorizon.structurelib.StructureLibAPI;
import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable;
+import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
+import com.gtnewhorizon.structurelib.structure.IItemSource;
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
import com.gtnewhorizon.structurelib.structure.IStructureElement;
import com.gtnewhorizon.structurelib.structure.StructureDefinition;
@@ -17,6 +19,7 @@ import goodgenerator.blocks.tileEntity.base.GT_MetaTileEntity_TooltipMultiBlockB
import goodgenerator.loader.Loaders;
import goodgenerator.util.DescTextLocalization;
import goodgenerator.util.MyRecipeAdder;
+import gregtech.api.enums.GT_HatchElement;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
@@ -30,6 +33,7 @@ import gregtech.api.util.GT_Utility;
import java.util.ArrayList;
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;
import net.minecraft.util.StatCollector;
@@ -37,7 +41,7 @@ import net.minecraft.world.World;
import net.minecraftforge.fluids.FluidStack;
public class FuelRefineFactory extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
- implements TecTechEnabledMulti, IConstructable {
+ implements TecTechEnabledMulti, IConstructable, ISurvivalConstructable {
private IStructureDefinition<FuelRefineFactory> multiDefinition = null;
private int Tier = -1;
@@ -95,9 +99,16 @@ public class FuelRefineFactory extends GT_MetaTileEntity_TooltipMultiBlockBase_E
}))
.addElement(
'X',
- ofChain(
- ofHatchAdder(FuelRefineFactory::addToFRFList, 179, Loaders.FRF_Casings, 0),
- ofBlock(Loaders.FRF_Casings, 0)))
+ buildHatchAdder(FuelRefineFactory.class)
+ .atLeast(
+ GT_HatchElement.Maintenance,
+ GT_HatchElement.InputHatch,
+ GT_HatchElement.InputBus,
+ GT_HatchElement.OutputHatch,
+ HatchElement.EnergyMulti.or(GT_HatchElement.Energy))
+ .casingIndex(50)
+ .dot(1)
+ .buildAndChain(ofBlock(Loaders.FRF_Casings, 0)))
.addElement('C', ofBlock(Loaders.FRF_Casings, 0))
.addElement('G', ofBlock(Loaders.fieldRestrictingGlass, 0))
.addElement(
@@ -358,4 +369,10 @@ public class FuelRefineFactory extends GT_MetaTileEntity_TooltipMultiBlockBase_E
}
return new ITexture[] {Textures.BlockIcons.getCasingTextureForId(179)};
}
+
+ @Override
+ public int survivalConstruct(ItemStack stackSize, int elementBudget, IItemSource source, EntityPlayerMP actor) {
+ if (mMachine) return -1;
+ return survivialBuildPiece(mName, stackSize, 7, 12, 1, elementBudget, source, actor, false, true);
+ }
}
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaGenerator.java b/src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaGenerator.java
index 6af68c59ea..080bb188bc 100644
--- a/src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaGenerator.java
+++ b/src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaGenerator.java
@@ -2,11 +2,13 @@ package goodgenerator.blocks.tileEntity;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
import static goodgenerator.util.DescTextLocalization.BLUE_PRINT_INFO;
-import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+import static gregtech.api.util.GT_StructureUtility.buildHatchAdder;
import com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader;
import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_DynamoMulti;
import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable;
+import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
+import com.gtnewhorizon.structurelib.structure.IItemSource;
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
import com.gtnewhorizon.structurelib.structure.StructureDefinition;
import goodgenerator.blocks.tileEntity.base.GT_MetaTileEntity_TooltipMultiBlockBase_EM;
@@ -15,6 +17,7 @@ import goodgenerator.items.MyMaterial;
import goodgenerator.loader.Loaders;
import goodgenerator.util.DescTextLocalization;
import goodgenerator.util.ItemRefer;
+import gregtech.api.enums.GT_HatchElement;
import gregtech.api.enums.Materials;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
@@ -31,6 +34,7 @@ import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Utility;
import java.util.ArrayList;
import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
@@ -41,7 +45,8 @@ import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.common.config.ConfigBlocks;
-public class LargeEssentiaGenerator extends GT_MetaTileEntity_TooltipMultiBlockBase_EM implements IConstructable {
+public class LargeEssentiaGenerator extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
+ implements IConstructable, ISurvivalConstructable {
private IStructureDefinition<LargeEssentiaGenerator> multiDefinition = null;
protected int mStableValue = 0;
@@ -218,7 +223,14 @@ public class LargeEssentiaGenerator extends GT_MetaTileEntity_TooltipMultiBlockB
.addElement(
'X',
ofChain(
- ofHatchAdder(LargeEssentiaGenerator::addLargeEssentiaGeneratorList, 1536, 1),
+ buildHatchAdder(LargeEssentiaGenerator.class)
+ .atLeast(
+ HatchElement.DynamoMulti.or(GT_HatchElement.Dynamo),
+ GT_HatchElement.Maintenance,
+ GT_HatchElement.InputHatch)
+ .casingIndex(1536)
+ .dot(1)
+ .build(),
ofBlock(Loaders.magicCasing, 0),
ofTileAdder(LargeEssentiaGenerator::addEssentiaHatch, Loaders.magicCasing, 0)))
.build();
@@ -556,4 +568,10 @@ public class LargeEssentiaGenerator extends GT_MetaTileEntity_TooltipMultiBlockB
int type = LargeEssentiaEnergyData.getAspectTypeIndex(aspect);
return type != -1 && (mUpgrade & (1 << type)) != 0;
}
+
+ @Override
+ public int survivalConstruct(ItemStack stackSize, int elementBudget, IItemSource source, EntityPlayerMP actor) {
+ if (mMachine) return -1;
+ return survivialBuildPiece(mName, stackSize, 4, 0, 4, elementBudget, source, actor, false, true);
+ }
}
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaSmeltery.java b/src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaSmeltery.java
index 900f527344..0c5b28b2f2 100644
--- a/src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaSmeltery.java
+++ b/src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaSmeltery.java
@@ -2,17 +2,20 @@ package goodgenerator.blocks.tileEntity;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
import static goodgenerator.util.DescTextLocalization.BLUE_PRINT_INFO;
-import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+import static gregtech.api.util.GT_StructureUtility.buildHatchAdder;
import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_EnergyMulti;
import com.github.technus.tectech.thing.metaTileEntity.multi.base.GT_MetaTileEntity_MultiblockBase_EM;
import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable;
+import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
+import com.gtnewhorizon.structurelib.structure.IItemSource;
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
import com.gtnewhorizon.structurelib.structure.StructureDefinition;
import goodgenerator.blocks.tileEntity.base.GT_MetaTileEntity_TooltipMultiBlockBase_EM;
import goodgenerator.crossmod.LoadedList;
import goodgenerator.loader.Loaders;
import goodgenerator.util.DescTextLocalization;
+import gregtech.api.enums.GT_HatchElement;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.IIconContainer;
import gregtech.api.interfaces.ITexture;
@@ -25,6 +28,7 @@ import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import java.util.ArrayList;
import java.util.Map;
import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
@@ -38,7 +42,8 @@ import thaumcraft.api.visnet.VisNetHandler;
import thaumcraft.common.config.ConfigBlocks;
import thaumcraft.common.lib.crafting.ThaumcraftCraftingManager;
-public class LargeEssentiaSmeltery extends GT_MetaTileEntity_TooltipMultiBlockBase_EM implements IConstructable {
+public class LargeEssentiaSmeltery extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
+ implements IConstructable, ISurvivalConstructable {
private static final IIconContainer textureFontOn =
new Textures.BlockIcons.CustomIcon("icons/LargeEssentiaSmeltery_On");
@@ -148,16 +153,27 @@ public class LargeEssentiaSmeltery extends GT_MetaTileEntity_TooltipMultiBlockBa
.addElement(
'A',
ofChain(
- ofHatchAdder(LargeEssentiaSmeltery::addMaintenanceToMachineList, CASING_INDEX, 1),
- ofHatchAdder(LargeEssentiaSmeltery::addInputToMachineList, CASING_INDEX, 1),
- ofHatchAdder(LargeEssentiaSmeltery::addEnergyHatchToMachineList, CASING_INDEX, 1),
+ buildHatchAdder(LargeEssentiaSmeltery.class)
+ .atLeast(
+ GT_HatchElement.Maintenance,
+ GT_HatchElement.Energy,
+ GT_HatchElement.InputBus)
+ .casingIndex(CASING_INDEX)
+ .dot(1)
+ .build(),
ofTileAdder(
LargeEssentiaSmeltery::addEssentiaOutputHatchToMachineList,
Loaders.magicCasing,
0),
onElementPass(
LargeEssentiaSmeltery::onCasingFound, ofBlock(Loaders.magicCasing, 0))))
- .addElement('B', ofHatchAdder(LargeEssentiaSmeltery::addMufflerToMachineList, CASING_INDEX, 2))
+ .addElement(
+ 'B',
+ buildHatchAdder(LargeEssentiaSmeltery.class)
+ .atLeast(GT_HatchElement.Muffler)
+ .casingIndex(CASING_INDEX)
+ .dot(2)
+ .build())
.build();
}
return this.multiDefinition;
@@ -508,4 +524,22 @@ public class LargeEssentiaSmeltery extends GT_MetaTileEntity_TooltipMultiBlockBa
protected void maintenance_EM() {
super.maintenance_EM();
}
+
+ @Override
+ public int survivalConstruct(ItemStack stackSize, int elementBudget, IItemSource source, EntityPlayerMP actor) {
+ if (mMachine) return -1;
+ int built = 0;
+ built += survivialBuildPiece(
+ STRUCTURE_PIECE_FIRST, stackSize, 2, 2, 0, elementBudget, source, actor, false, true);
+ int lenght = stackSize.stackSize + 2;
+ if (lenght > MAX_CONFIGURABLE_LENGTH) lenght = MAX_CONFIGURABLE_LENGTH + 2;
+ built += survivialBuildPiece(
+ STRUCTURE_PIECE_LAST, stackSize, 2, 2, lenght + 1, elementBudget - built, source, actor, false, true);
+ while (lenght > 0) {
+ built += survivialBuildPiece(
+ STRUCTURE_PIECE_LATER, stackSize, 2, 2, lenght, elementBudget - built, source, actor, false, true);
+ lenght--;
+ }
+ return built;
+ }
}
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer1.java b/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer1.java
index 2aefa6a5d4..5098c5c5ef 100644
--- a/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer1.java
+++ b/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer1.java
@@ -57,7 +57,7 @@ public class LargeFusionComputer1 extends LargeFusionComputer {
.addCasingInfo("LuV Machine Casing", 1664)
.addCasingInfo("Ameliorated Superconduct Coil", 560)
.addCasingInfo("Naquadah Alloy Frame Boxes", 128)
- .addCasingInfo("Chrome Reinforced Borosilicate Glass Block", 63)
+ .addCasingInfo("Rhodium-Plated Palladium Reinforced Borosilicate Glass Block", 63)
.addEnergyHatch("1-32, Hint block with dot 3", 3)
.addInputHatch("2-16, Hint block with dot 1", 1)
.addOutputHatch("1-16, Hint block with dot 2", 2)
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer4.java b/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer4.java
index ad6ab36a93..40404a3c16 100644
--- a/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer4.java
+++ b/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer4.java
@@ -64,7 +64,7 @@ public class LargeFusionComputer4 extends LargeFusionComputerPP {
.addCasingInfo("Fusion Machine Casing MK III", 1664)
.addCasingInfo("Compact Fusion Coil MK-II Prototype", 560)
.addCasingInfo("Infinity Catalyst Frame Box", 128)
- .addCasingInfo("Uranium Reinforced Borosilicate Glass Block", 63)
+ .addCasingInfo("Neutronium Reinforced Borosilicate Glass Block", 63)
.addEnergyHatch("1-32, Hint block with dot 3", 3)
.addInputHatch("2-16, Hint block with dot 1", 1)
.addOutputHatch("1-16, Hint block with dot 2", 2)
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer5.java b/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer5.java
index 3f7ab9cdc3..5057f6471f 100644
--- a/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer5.java
+++ b/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer5.java
@@ -60,7 +60,7 @@ public class LargeFusionComputer5 extends LargeFusionComputerPP {
.addCasingInfo("Fusion Machine Casing MK IV", 1664)
.addCasingInfo("Compact Fusion Coil MK-II Finaltype", 560)
.addCasingInfo("Infinity Frame Box", 128)
- .addCasingInfo("Europium Reinforced Borosilicate Glass Block", 63)
+ .addCasingInfo("Cosmic Neutronium Reinforced Borosilicate Glass Block", 63)
.addEnergyHatch("1-32, Hint block with dot 3", 3)
.addInputHatch("2-16, Hint block with dot 1", 1)
.addOutputHatch("1-16, Hint block with dot 2", 2)
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/MultiNqGenerator.java b/src/main/java/goodgenerator/blocks/tileEntity/MultiNqGenerator.java
index b1d4518e27..1cfc589372 100644
--- a/src/main/java/goodgenerator/blocks/tileEntity/MultiNqGenerator.java
+++ b/src/main/java/goodgenerator/blocks/tileEntity/MultiNqGenerator.java
@@ -3,7 +3,7 @@ package goodgenerator.blocks.tileEntity;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
import static goodgenerator.main.GG_Config_Loader.*;
import static goodgenerator.util.DescTextLocalization.BLUE_PRINT_INFO;
-import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+import static gregtech.api.util.GT_StructureUtility.buildHatchAdder;
import com.github.bartimaeusnek.bartworks.util.Pair;
import com.github.bartimaeusnek.crossmod.tectech.TecTechEnabledMulti;
@@ -11,6 +11,8 @@ import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_H
import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_EnergyMulti;
import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_EnergyTunnel;
import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable;
+import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
+import com.gtnewhorizon.structurelib.structure.IItemSource;
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
import com.gtnewhorizon.structurelib.structure.StructureDefinition;
import goodgenerator.blocks.tileEntity.base.GT_MetaTileEntity_TooltipMultiBlockBase_EM;
@@ -20,6 +22,7 @@ import goodgenerator.util.CrackRecipeAdder;
import goodgenerator.util.DescTextLocalization;
import goodgenerator.util.MyRecipeAdder;
import gregtech.api.GregTech_API;
+import gregtech.api.enums.GT_HatchElement;
import gregtech.api.enums.Materials;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
@@ -34,6 +37,7 @@ import gregtech.api.util.GT_Utility;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
@@ -41,7 +45,7 @@ import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
public class MultiNqGenerator extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
- implements TecTechEnabledMulti, IConstructable {
+ implements TecTechEnabledMulti, IConstructable, ISurvivalConstructable {
protected IStructureDefinition<MultiNqGenerator> multiDefinition = null;
protected long leftEnergy = 0;
@@ -122,8 +126,15 @@ public class MultiNqGenerator extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
.addElement(
'X',
ofChain(
- ofHatchAdder(
- MultiNqGenerator::addToGeneratorList, 44, GregTech_API.sBlockCasings3, 12),
+ buildHatchAdder(MultiNqGenerator.class)
+ .atLeast(
+ HatchElement.DynamoMulti.or(GT_HatchElement.Dynamo),
+ GT_HatchElement.InputHatch,
+ GT_HatchElement.OutputHatch,
+ GT_HatchElement.Maintenance)
+ .casingIndex(44)
+ .dot(1)
+ .build(),
ofBlock(GregTech_API.sBlockCasings3, 12)))
.addElement('A', ofBlock(GregTech_API.sBlockCasings3, 12))
.addElement('N', ofBlock(Loaders.radiationProtectionSteelFrame, 0))
@@ -424,4 +435,10 @@ public class MultiNqGenerator extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
public List<GT_MetaTileEntity_Hatch_EnergyMulti> getTecTechEnergyMultis() {
return new ArrayList<>();
}
+
+ @Override
+ public int survivalConstruct(ItemStack stackSize, int elementBudget, IItemSource source, EntityPlayerMP actor) {
+ if (mMachine) return -1;
+ return survivialBuildPiece(mName, stackSize, 3, 7, 0, elementBudget, source, actor, false, true);
+ }
}
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/NeutronActivator.java b/src/main/java/goodgenerator/blocks/tileEntity/NeutronActivator.java
index ea3d637a47..a524146fed 100644
--- a/src/main/java/goodgenerator/blocks/tileEntity/NeutronActivator.java
+++ b/src/main/java/goodgenerator/blocks/tileEntity/NeutronActivator.java
@@ -2,10 +2,12 @@ package goodgenerator.blocks.tileEntity;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
import static goodgenerator.util.DescTextLocalization.BLUE_PRINT_INFO;
-import static goodgenerator.util.StructureHelper.addFrame;
-import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+import static gregtech.api.util.GT_StructureUtility.buildHatchAdder;
+import static gregtech.ap