aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/goodgenerator/blocks/tileEntity/base
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/goodgenerator/blocks/tileEntity/base')
-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
3 files changed, 117 insertions, 71 deletions
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/base/GT_MetaTileEntity_LargeTurbineBase.java b/src/main/java/goodgenerator/blocks/tileEntity/base/GT_MetaTileEntity_LargeTurbineBase.java
index 75d2b201e0..2ae630eef7 100644
--- a/src/main/java/goodgenerator/blocks/tileEntity/base/GT_MetaTileEntity_LargeTurbineBase.java
+++ b/src/main/java/goodgenerator/blocks/tileEntity/base/GT_MetaTileEntity_LargeTurbineBase.java
@@ -5,9 +5,11 @@ package goodgenerator.blocks.tileEntity.base;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.lazy;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose;
-import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
-import static gregtech.api.util.GT_StructureUtility.ofHatchAdderOptional;
+import static gregtech.api.enums.GT_HatchElement.*;
+import static gregtech.api.util.GT_StructureUtility.*;
+import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
+import com.gtnewhorizon.structurelib.structure.IItemSource;
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
import com.gtnewhorizon.structurelib.structure.IStructureElementCheckOnly;
import com.gtnewhorizon.structurelib.structure.StructureDefinition;
@@ -21,6 +23,7 @@ import gregtech.api.util.GT_Utility;
import gregtech.common.items.GT_MetaGenerated_Tool_01;
import java.util.ArrayList;
import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@@ -30,7 +33,8 @@ import net.minecraft.util.StatCollector;
import net.minecraftforge.fluids.FluidStack;
public abstract class GT_MetaTileEntity_LargeTurbineBase
- extends GT_MetaTileEntity_EnhancedMultiBlockBase<GT_MetaTileEntity_LargeTurbineBase> {
+ extends GT_MetaTileEntity_EnhancedMultiBlockBase<GT_MetaTileEntity_LargeTurbineBase>
+ implements ISurvivalConstructable {
private static final String STRUCTURE_PIECE_MAIN = "main";
private static final ClassValue<IStructureDefinition<GT_MetaTileEntity_LargeTurbineBase>> STRUCTURE_DEFINITION =
new ClassValue<IStructureDefinition<GT_MetaTileEntity_LargeTurbineBase>>() {
@@ -55,20 +59,12 @@ public abstract class GT_MetaTileEntity_LargeTurbineBase
},
}))
.addElement('c', lazy(t -> ofBlock(t.getCasingBlock(), t.getCasingMeta())))
- .addElement(
- 'd',
- lazy(t -> ofHatchAdder(
- GT_MetaTileEntity_LargeTurbineBase::addDynamoToMachineList,
- t.getCasingTextureIndex(),
- 1)))
- .addElement(
- 'h',
- lazy(t -> ofHatchAdderOptional(
- GT_MetaTileEntity_LargeTurbineBase::addToMachineList,
- t.getCasingTextureIndex(),
- 2,
- t.getCasingBlock(),
- t.getCasingMeta())))
+ .addElement('d', lazy(t -> Dynamo.newAny(t.getCasingTextureIndex(), 1)))
+ .addElement('h', lazy(t -> buildHatchAdder(GT_MetaTileEntity_LargeTurbineBase.class)
+ .atLeast(Maintenance, InputHatch, OutputHatch, OutputBus, InputBus, Muffler)
+ .casingIndex(t.getCasingTextureIndex())
+ .dot(2)
+ .buildAndChain(t.getCasingBlock(), t.getCasingMeta())))
.addElement('x', (IStructureElementCheckOnly<GT_MetaTileEntity_LargeTurbineBase>)
(aContext, aWorld, aX, aY, aZ) -> {
TileEntity tTile = aWorld.getTileEntity(aX, aY, aZ);
@@ -313,4 +309,10 @@ public abstract class GT_MetaTileEntity_LargeTurbineBase
public void construct(ItemStack stackSize, boolean hintsOnly) {
buildPiece(STRUCTURE_PIECE_MAIN, stackSize, hintsOnly, 2, 2, 1);
}
+
+ @Override
+ public int survivalConstruct(ItemStack stackSize, int elementBudget, IItemSource source, EntityPlayerMP actor) {
+ if (mMachine) return -1;
+ return survivialBuildPiece(STRUCTURE_PIECE_MAIN, stackSize, 2, 2, 1, elementBudget, source, actor, false, true);
+ }
}
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/base/LargeFusionComputer.java b/src/main/java/goodgenerator/blocks/tileEntity/base/LargeFusionComputer.java
index 5cb63e3afc..b461dfa0dd 100644
--- a/src/main/java/goodgenerator/blocks/tileEntity/base/LargeFusionComputer.java
+++ b/src/main/java/goodgenerator/blocks/tileEntity/base/LargeFusionComputer.java
@@ -5,13 +5,15 @@ import static com.github.bartimaeusnek.bartworks.util.RecipeFinderForParallel.ha
import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
import static gregtech.api.enums.Textures.BlockIcons.*;
import static gregtech.api.util.GT_StructureUtility.ofFrame;
-import static gregtech.api.util.GT_StructureUtility.ofHatchAdderOptional;
import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_EnergyMulti;
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.client.GUI.LargeFusionComputerGUIClient;
+import gregtech.api.enums.GT_HatchElement;
import gregtech.api.enums.Materials;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
@@ -23,10 +25,12 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Outpu
import gregtech.api.objects.GT_ChunkManager;
import gregtech.api.objects.GT_ItemStack;
import gregtech.api.render.TextureFactory;
+import gregtech.api.util.GT_HatchElementBuilder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import java.util.ArrayList;
import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
@@ -36,7 +40,8 @@ import net.minecraft.world.ChunkCoordIntPair;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
-public abstract class LargeFusionComputer extends GT_MetaTileEntity_TooltipMultiBlockBase_EM implements IConstructable {
+public abstract class LargeFusionComputer extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
+ implements IConstructable, ISurvivalConstructable {
public static final String MAIN_NAME = "largeFusion";
private boolean isLoadedChunk;
@@ -52,30 +57,24 @@ public abstract class LargeFusionComputer extends GT_MetaTileEntity_TooltipMulti
.addElement('H', lazy(x -> ofBlock(x.getCoilBlock(), x.getCoilMeta())))
.addElement('C', lazy(x -> ofBlock(x.getCasingBlock(), x.getCasingMeta())))
.addElement('B', lazy(x -> ofBlock(x.getGlassBlock(), x.getGlassMeta())))
- .addElement(
- 'I',
- lazy(x -> ofHatchAdderOptional(
- LargeFusionComputer::addInjector,
- x.textureIndex(),
- 1,
- x.getGlassBlock(),
- x.getGlassMeta())))
- .addElement(
- 'O',
- lazy(x -> ofHatchAdderOptional(
- LargeFusionComputer::addExtractor,
- x.textureIndex(),
- 2,
- x.getGlassBlock(),
- x.getGlassMeta())))
- .addElement(
- 'E',
- lazy(x -> ofHatchAdderOptional(
- LargeFusionComputer::addEnergyInjector,
- x.textureIndex(),
- 3,
- x.getCasingBlock(),
- x.getCasingMeta())))
+ .addElement('I', lazy(x -> GT_HatchElementBuilder.<LargeFusionComputer>builder()
+ .atLeast(GT_HatchElement.InputHatch)
+ .adder(LargeFusionComputer::addInjector)
+ .casingIndex(x.textureIndex())
+ .dot(1)
+ .buildAndChain(x.getGlassBlock(), x.getGlassMeta())))
+ .addElement('O', lazy(x -> GT_HatchElementBuilder.<LargeFusionComputer>builder()
+ .atLeast(GT_HatchElement.OutputHatch)
+ .adder(LargeFusionComputer::addExtractor)
+ .casingIndex(x.textureIndex())
+ .dot(2)
+ .buildAndChain(x.getGlassBlock(), x.getGlassMeta())))
+ .addElement('E', lazy(x -> GT_HatchElementBuilder.<LargeFusionComputer>builder()
+ .atLeast(HatchElement.EnergyMulti.or(GT_HatchElement.Energy))
+ .adder(LargeFusionComputer::addEnergyInjector)
+ .casingIndex(x.textureIndex())
+ .dot(3)
+ .buildAndChain(x.getCasingBlock(), x.getCasingMeta())))
.addElement('F', lazy(x -> ofFrame(x.getFrameBox())))
.build();
}
@@ -135,7 +134,6 @@ public abstract class LargeFusionComputer extends GT_MetaTileEntity_TooltipMulti
public int textureIndex() {
return 53;
}
- ;
public abstract ITexture getTextureOverlay();
@@ -172,6 +170,25 @@ public abstract class LargeFusionComputer extends GT_MetaTileEntity_TooltipMulti
}
@Override
+ public int survivalConstruct(ItemStack stackSize, int elementBudget, IItemSource source, EntityPlayerMP actor) {
+ if (mMachine) {
+ return -1;
+ } else {
+ return survivialBuildPiece(
+ MAIN_NAME,
+ stackSize,
+ 23,
+ 3,
+ 40,
+ elementBudget >= 200 ? elementBudget : Math.min(200, elementBudget * 5),
+ source,
+ actor,
+ false,
+ true);
+ }
+ }
+
+ @Override
public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
if (aBaseMetaTileEntity.isServerSide() && !aBaseMetaTileEntity.isAllowedToWork()) {
// if machine has stopped, stop chunkloading
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/base/LargeFusionComputerPP.java b/src/main/java/goodgenerator/blocks/tileEntity/base/LargeFusionComputerPP.java
index aad7991984..aa29b0c35b 100644
--- a/src/main/java/goodgenerator/blocks/tileEntity/base/LargeFusionComputerPP.java
+++ b/src/main/java/goodgenerator/blocks/tileEntity/base/LargeFusionComputerPP.java
@@ -5,13 +5,15 @@ import static com.github.bartimaeusnek.bartworks.util.RecipeFinderForParallel.ha
import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
import static gregtech.api.enums.Textures.BlockIcons.*;
import static gregtech.api.util.GT_StructureUtility.ofFrame;
-import static gregtech.api.util.GT_StructureUtility.ofHatchAdderOptional;
import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_EnergyMulti;
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.client.GUI.LargeFusionComputerGUIClient;
+import gregtech.api.enums.GT_HatchElement;
import gregtech.api.enums.Materials;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
@@ -23,10 +25,12 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Outpu
import gregtech.api.objects.GT_ChunkManager;
import gregtech.api.objects.GT_ItemStack;
import gregtech.api.render.TextureFactory;
+import gregtech.api.util.GT_HatchElementBuilder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import java.util.ArrayList;
import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
@@ -37,7 +41,7 @@ import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
public abstract class LargeFusionComputerPP extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
- implements IConstructable {
+ implements IConstructable, ISurvivalConstructable {
public static final String MAIN_NAME = "largeFusionPP";
private boolean isLoadedChunk;
@@ -53,30 +57,24 @@ public abstract class LargeFusionComputerPP extends GT_MetaTileEntity_TooltipMul
.addElement('H', lazy(x -> ofBlock(x.getCoilBlock(), x.getCoilMeta())))
.addElement('C', lazy(x -> ofBlock(x.getCasingBlock(), x.getCasingMeta())))
.addElement('B', lazy(x -> ofBlock(x.getGlassBlock(), x.getGlassMeta())))
- .addElement(
- 'I',
- lazy(x -> ofHatchAdderOptional(
- LargeFusionComputerPP::addInjector,
- x.textureIndex(),
- 1,
- x.getGlassBlock(),
- x.getGlassMeta())))
- .addElement(
- 'O',
- lazy(x -> ofHatchAdderOptional(
- LargeFusionComputerPP::addExtractor,
- x.textureIndex(),
- 2,
- x.getGlassBlock(),
- x.getGlassMeta())))
- .addElement(
- 'E',
- lazy(x -> ofHatchAdderOptional(
- LargeFusionComputerPP::addEnergyInjector,
- x.textureIndex(),
- 3,
- x.getCasingBlock(),
- x.getCasingMeta())))
+ .addElement('I', lazy(x -> GT_HatchElementBuilder.<LargeFusionComputerPP>builder()
+ .atLeast(GT_HatchElement.InputHatch)
+ .adder(LargeFusionComputerPP::addInjector)
+ .casingIndex(x.textureIndex())
+ .dot(1)
+ .buildAndChain(x.getGlassBlock(), x.getGlassMeta())))
+ .addElement('O', lazy(x -> GT_HatchElementBuilder.<LargeFusionComputerPP>builder()
+ .atLeast(GT_HatchElement.OutputHatch)
+ .adder(LargeFusionComputerPP::addExtractor)
+ .casingIndex(x.textureIndex())
+ .dot(2)
+ .buildAndChain(x.getGlassBlock(), x.getGlassMeta())))
+ .addElement('E', lazy(x -> GT_HatchElementBuilder.<LargeFusionComputerPP>builder()
+ .atLeast(HatchElement.EnergyMulti.or(GT_HatchElement.Energy))
+ .adder(LargeFusionComputerPP::addEnergyInjector)
+ .casingIndex(x.textureIndex())
+ .dot(3)
+ .buildAndChain(x.getCasingBlock(), x.getCasingMeta())))
.addElement('F', lazy(x -> ofFrame(x.getFrameBox())))
.build();
}
@@ -171,6 +169,25 @@ public abstract class LargeFusionComputerPP extends GT_MetaTileEntity_TooltipMul
}
@Override
+ public int survivalConstruct(ItemStack stackSize, int elementBudget, IItemSource source, EntityPlayerMP actor) {
+ if (mMachine) {
+ return -1;
+ } else {
+ return survivialBuildPiece(
+ MAIN_NAME,
+ stackSize,
+ 23,
+ 3,
+ 40,
+ elementBudget >= 200 ? elementBudget : Math.min(200, elementBudget * 5),
+ source,
+ actor,
+ false,
+ true);
+ }
+ }
+
+ @Override
public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
if (aBaseMetaTileEntity.isServerSide() && !aBaseMetaTileEntity.isAllowedToWork()) {
// if machine has stopped, stop chunkloading
@@ -217,7 +234,17 @@ public abstract class LargeFusionComputerPP extends GT_MetaTileEntity_TooltipMul
this.mEUStore = aBaseMetaTileEntity.getStoredEU();
checkRecipe(mInventory[1]);
}
- if (--mUpdate == 0 || --mStartUpCheck == 0) {
+ if (mUpdated) {
+ mUpdate = 50;
+ mUpdated = false;
+ }
+ if (--mUpdate == 0
+ || --mStartUpCheck == 0
+ || cyclicUpdate_EM()
+ || aBaseMetaTileEntity.hasWorkJustBeenEnabled()) {
+ if (mUpdate <= -1000) {
+ mUpdate = 5000;
+ }
checkStructure(true, aBaseMetaTileEntity);
}
if (mStartUpCheck < 0) {