From e1bc1013d5fa8a579d509da6e97901b6410959e0 Mon Sep 17 00:00:00 2001 From: GlodBlock <1356392126@qq.com> Date: Sun, 25 Jul 2021 22:20:51 +0800 Subject: add blocks for LargeEssentiaGenerator --- .../Blocks/TEs/LargeEssentiaGenerator.java | 111 +++++++++++++++++++++ .../GoodGenerator/Blocks/TEs/MultiNqGenerator.java | 2 +- 2 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 src/main/java/GoodGenerator/Blocks/TEs/LargeEssentiaGenerator.java (limited to 'src/main/java/GoodGenerator/Blocks/TEs') diff --git a/src/main/java/GoodGenerator/Blocks/TEs/LargeEssentiaGenerator.java b/src/main/java/GoodGenerator/Blocks/TEs/LargeEssentiaGenerator.java new file mode 100644 index 0000000000..5c2a76170e --- /dev/null +++ b/src/main/java/GoodGenerator/Blocks/TEs/LargeEssentiaGenerator.java @@ -0,0 +1,111 @@ +package GoodGenerator.Blocks.TEs; + +import com.github.bartimaeusnek.crossmod.tectech.TecTechEnabledMulti; +import com.github.technus.tectech.mechanics.constructable.IConstructable; +import com.github.technus.tectech.mechanics.structure.IStructureDefinition; +import com.github.technus.tectech.mechanics.structure.StructureDefinition; +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.github.technus.tectech.thing.metaTileEntity.multi.base.GT_MetaTileEntity_MultiblockBase_EM; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectSourceHelper; + +import java.util.ArrayList; +import java.util.List; + +import static com.github.technus.tectech.mechanics.structure.StructureUtility.transpose; + +public class LargeEssentiaGenerator extends GT_MetaTileEntity_MultiblockBase_EM implements TecTechEnabledMulti, IConstructable { + + private IStructureDefinition multiDefinition = null; + protected List mAvailableAspects; + protected final int MAX_RANGE = 20; + protected final int ENERGY_PER_ESSENTIA = 512; + + public LargeEssentiaGenerator(String name){ + super(name); + } + + public LargeEssentiaGenerator(int id, String name, String nameRegional){ + super(id,name,nameRegional); + } + + @Override + public List getVanillaEnergyHatches() { + return this.mEnergyHatches; + } + + @Override + public List getTecTechEnergyTunnels() { + return new ArrayList<>(); + } + + @Override + public List getTecTechEnergyMultis() { + return new ArrayList<>(); + } + + @Override + public void construct(ItemStack itemStack, boolean b) { + + } + + @Override + public IStructureDefinition getStructure_EM() { + if(multiDefinition == null) { + multiDefinition = StructureDefinition + .builder() + .addShape(mName, + transpose(new String[][]{ + {}, + {}, + {}, + {}, + {}, + {}, + {} + }) + ) + .build(); + } + return multiDefinition; + } + + List getAvailableAspects() { + return mAvailableAspects; + } + + private long absorbFromEssentiaContainers() { + long tEU = 0; + + long tEUtoGen = getBaseMetaTileEntity().getEUCapacity() - getBaseMetaTileEntity().getUniversalEnergyStored(); + List mAvailableEssentiaAspects = getAvailableAspects(); + + for (int i = mAvailableEssentiaAspects.size() - 1; i >= 0 && tEUtoGen > 0; i--) { + Aspect aspect = mAvailableEssentiaAspects.get(i); + long tAspectEU = (ENERGY_PER_ESSENTIA * mEfficiency) / 100; + if (tAspectEU <= tEUtoGen + && AspectSourceHelper.drainEssentia((TileEntity) getBaseMetaTileEntity(), aspect, ForgeDirection.UNKNOWN, MAX_RANGE)) { + tEUtoGen -= tAspectEU; + tEU += tAspectEU; + } + } + return tEU; + } + + @Override + public String[] getStructureDescription(ItemStack itemStack) { + return new String[0]; + } + + @Override + public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { + return new LargeEssentiaGenerator(this.mName); + } +} diff --git a/src/main/java/GoodGenerator/Blocks/TEs/MultiNqGenerator.java b/src/main/java/GoodGenerator/Blocks/TEs/MultiNqGenerator.java index f5aa0af2e0..f2f9279b37 100644 --- a/src/main/java/GoodGenerator/Blocks/TEs/MultiNqGenerator.java +++ b/src/main/java/GoodGenerator/Blocks/TEs/MultiNqGenerator.java @@ -275,7 +275,7 @@ public class MultiNqGenerator extends GT_MetaTileEntity_MultiblockBase_EM implem else this.mOutputFluids = null; if (tFluids.contains(Materials.LiquidAir.getFluid(120)) && tFluids.get(tFluids.indexOf(Materials.LiquidAir.getFluid(120))).amount >= 120){ depleteInput(Materials.LiquidAir.getFluid(120)); - addAutoEnergy((long)(outputEU*times*booster)); + addAutoEnergy((long)(((long)outputEU)*(times*booster))); this.mEUt = (int)(outputEU*times*booster); } else{ -- cgit