diff options
Diffstat (limited to 'src/main/java/goodgenerator/blocks/tileEntity/base')
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) { |
