diff options
author | NotAPenguin <michiel.vandeginste@gmail.com> | 2024-09-02 23:17:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-02 23:17:17 +0200 |
commit | 1b820de08a05070909a267e17f033fcf58ac8710 (patch) | |
tree | 02831a025986a06b20f87e5bcc69d1e0c639a342 /src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaSmeltery.java | |
parent | afd3fd92b6a6ab9ab0d0dc3214e6bc8ff7a86c9b (diff) | |
download | GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.gz GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.bz2 GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.zip |
The Great Renaming (#3014)
* move kekztech to a single root dir
* move detrav to a single root dir
* move gtnh-lanthanides to a single root dir
* move tectech and delete some gross reflection in gt++
* remove more reflection inside gt5u
* delete more reflection in gt++
* fix imports
* move bartworks and bwcrossmod
* fix proxies
* move galactigreg and ggfab
* move gtneioreplugin
* try to fix gt++ bee loader
* apply the rename rules to BW
* apply rename rules to bwcrossmod
* apply rename rules to detrav scanner mod
* apply rename rules to galacticgreg
* apply rename rules to ggfab
* apply rename rules to goodgenerator
* apply rename rules to gtnh-lanthanides
* apply rename rules to gt++
* apply rename rules to kekztech
* apply rename rules to kubatech
* apply rename rules to tectech
* apply rename rules to gt
apply the rename rules to gt
* fix tt import
* fix mui hopefully
* fix coremod except intergalactic
* rename assline recipe class
* fix a class name i stumbled on
* rename StructureUtility to GTStructureUtility to prevent conflict with structurelib
* temporary rename of GTTooltipDataCache to old name
* fix gt client/server proxy names
Diffstat (limited to 'src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaSmeltery.java')
-rw-r--r-- | src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaSmeltery.java | 590 |
1 files changed, 0 insertions, 590 deletions
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaSmeltery.java b/src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaSmeltery.java deleted file mode 100644 index 82838322ce..0000000000 --- a/src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaSmeltery.java +++ /dev/null @@ -1,590 +0,0 @@ -package goodgenerator.blocks.tileEntity; - -import static com.gtnewhorizon.structurelib.structure.StructureUtility.*; -import static goodgenerator.util.DescTextLocalization.BLUE_PRINT_INFO; -import static gregtech.api.enums.Mods.ThaumicBases; -import static gregtech.api.util.GT_StructureUtility.buildHatchAdder; - -import java.util.ArrayList; -import java.util.Map; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.FluidStack; - -import org.jetbrains.annotations.NotNull; - -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.IStructureDefinition; -import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; -import com.gtnewhorizon.structurelib.structure.StructureDefinition; - -import goodgenerator.blocks.tileEntity.base.GT_MetaTileEntity_TooltipMultiBlockBase_EM; -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; -import gregtech.api.interfaces.metatileentity.IMetaTileEntity; -import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Muffler; -import gregtech.api.objects.XSTR; -import gregtech.api.recipe.check.CheckRecipeResult; -import gregtech.api.recipe.check.CheckRecipeResultRegistry; -import gregtech.api.recipe.check.SimpleCheckRecipeResult; -import gregtech.api.render.TextureFactory; -import gregtech.api.util.GT_Multiblock_Tooltip_Builder; -import thaumcraft.api.aspects.Aspect; -import thaumcraft.api.aspects.AspectList; -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, ISurvivalConstructable { - - private static final IIconContainer textureFontOn = new Textures.BlockIcons.CustomIcon( - "icons/LargeEssentiaSmeltery_On"); - private static final IIconContainer textureFontOn_Glow = new Textures.BlockIcons.CustomIcon( - "icons/LargeEssentiaSmeltery_On_GLOW"); - private static final IIconContainer textureFontOff = new Textures.BlockIcons.CustomIcon( - "icons/LargeEssentiaSmeltery_Off"); - private static final IIconContainer textureFontOff_Glow = new Textures.BlockIcons.CustomIcon( - "icons/LargeEssentiaSmeltery_Off_GLOW"); - private static final String STRUCTURE_PIECE_FIRST = "first"; - private static final String STRUCTURE_PIECE_LATER = "later"; - private static final String STRUCTURE_PIECE_LAST = "last"; - private static final int CASING_INDEX = 1536; - private static final int MAX_STRUCTURE_LENGTH = 8; - private static final int DEFAULT_STRUCTURE_LENGTH = 3; - private static final int MAX_CONFIGURABLE_LENGTH = MAX_STRUCTURE_LENGTH - DEFAULT_STRUCTURE_LENGTH; - - private static final int RECIPE_DURATION = 32; - private static final int RECIPE_EUT = 480; - private static final float NODE_COST_MULTIPLIER = 1.15f; - - public AspectList mOutputAspects = new AspectList(); - protected int mCasing = 0; - protected double mParallel = 0; - protected int nodePower = 0; - protected int nodePurificationEfficiency = 0; - protected int nodeIncrease = 0; - - private IStructureDefinition<LargeEssentiaSmeltery> multiDefinition = null; - private ArrayList<EssentiaOutputHatch> mEssentiaOutputHatches = new ArrayList<>(); - private int pTier = 0; - private XSTR xstr = new XSTR(); - - public LargeEssentiaSmeltery(String name) { - super(name); - } - - public LargeEssentiaSmeltery(int aID, String aName, String aNameRegional) { - super(aID, aName, aNameRegional); - } - - @Override - public void construct(ItemStack itemStack, boolean hintsOnly) { - structureBuild_EM(STRUCTURE_PIECE_FIRST, 2, 2, 0, itemStack, hintsOnly); - // default - structureBuild_EM(STRUCTURE_PIECE_LATER, 2, 2, -1, itemStack, hintsOnly); - structureBuild_EM(STRUCTURE_PIECE_LATER, 2, 2, -2, itemStack, hintsOnly); - int len = itemStack.stackSize; - if (len > MAX_CONFIGURABLE_LENGTH) len = MAX_CONFIGURABLE_LENGTH; - structureBuild_EM(STRUCTURE_PIECE_LAST, 2, 2, -len - 3, itemStack, hintsOnly); - while (len > 0) { - structureBuild_EM(STRUCTURE_PIECE_LATER, 2, 2, -len - 2, itemStack, hintsOnly); - len--; - } - } - - @Override - protected void clearHatches_EM() { - super.clearHatches_EM(); - mEssentiaOutputHatches.clear(); - } - - @Override - protected boolean checkMachine_EM(IGregTechTileEntity iGregTechTileEntity, ItemStack itemStack) { - this.mCasing = 0; - this.mParallel = 0; - this.pTier = 0; - this.nodePower = 0; - this.nodePurificationEfficiency = 0; - this.nodeIncrease = 0; - - if (!structureCheck_EM(STRUCTURE_PIECE_FIRST, 2, 2, 0)) return false; - if (!structureCheck_EM(STRUCTURE_PIECE_LATER, 2, 2, -1)) return false; - if (!structureCheck_EM(STRUCTURE_PIECE_LATER, 2, 2, -2)) return false; - int len = 2; - while (structureCheck_EM(STRUCTURE_PIECE_LATER, 2, 2, -len - 1)) len++; - if (len > MAX_STRUCTURE_LENGTH - 1 || len < DEFAULT_STRUCTURE_LENGTH) return false; - if (!structureCheck_EM(STRUCTURE_PIECE_LAST, 2, 2, -len - 1)) return false; - if (this.mCasing >= 24 && this.mMaintenanceHatches.size() == 1 - && this.mInputBusses.size() >= 1 - && this.mEssentiaOutputHatches.size() >= 1) { - this.mParallel = Math.floor(this.mParallel += 1 << this.pTier); - return true; - } - return false; - } - - @Override - public IStructureDefinition<? extends GT_MetaTileEntity_MultiblockBase_EM> getStructure_EM() { - if (this.multiDefinition == null) { - this.multiDefinition = StructureDefinition.<LargeEssentiaSmeltery>builder() - .addShape( - "first", - transpose(new String[][] { { " A " }, { " AAA " }, { "AA~AA" }, { " AAA " }, { " A " } })) - .addShape( - "later", - transpose(new String[][] { { " ABA " }, { "AECEA" }, { "D---D" }, { "AEFEA" }, { " AAA " } })) - .addShape( - "last", - transpose(new String[][] { { " A " }, { " AAA " }, { "AAAAA" }, { " AAA " }, { " A " } })) - .addElement('C', ofBlock(Loaders.essentiaFilterCasing, 0)) - .addElement('D', ofBlock(ConfigBlocks.blockCosmeticOpaque, 2)) - .addElement( - 'F', - ThaumicBases.isModLoaded() ? ofBlock(Block.getBlockFromName("thaumicbases:advAlchFurnace"), 0) - : ofBlock(ConfigBlocks.blockStoneDevice, 0)) - .addElement( - 'E', - ofChain( - onElementPass(x -> x.onEssentiaCellFound(0), ofBlock(Loaders.essentiaCell, 0)), - onElementPass(x -> x.onEssentiaCellFound(1), ofBlock(Loaders.essentiaCell, 1)), - onElementPass(x -> x.onEssentiaCellFound(2), ofBlock(Loaders.essentiaCell, 2)), - onElementPass(x -> x.onEssentiaCellFound(3), ofBlock(Loaders.essentiaCell, 3)))) - .addElement( - 'A', - ofChain( - buildHatchAdder(LargeEssentiaSmeltery.class) - .atLeast( - GT_HatchElement.Maintenance, - GT_HatchElement.Energy, - GT_HatchElement.InputBus, - GT_HatchElement.InputHatch) - .casingIndex(CASING_INDEX) - .dot(1) - .build(), - ofSpecificTileAdder( - LargeEssentiaSmeltery::addEssentiaOutputHatchToMachineList, - EssentiaOutputHatch.class, - Loaders.essentiaOutputHatch, - 0), - onElementPass(LargeEssentiaSmeltery::onCasingFound, ofBlock(Loaders.magicCasing, 0)))) - .addElement('B', GT_HatchElement.Muffler.newAny(CASING_INDEX, 2)) - .build(); - } - return this.multiDefinition; - } - - @Override - protected GT_Multiblock_Tooltip_Builder createTooltip() { - final GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder(); - tt.addMachineType("Essentia Smeltery") - .addInfo("Controller block for the Large Essentia Smeltery") - .addInfo("Necessary evil.") - .addInfo("Advanced Essentia smelting technology.") - .addInfo("Max parallel dictated by structure size and Essentia Diffusion Cell tier") - .addInfo("Energy Hatch tier: HV+") - .addInfo("You can find more information about this machine in the Thaumonomicon.") - .addPollutionAmount(getPollutionPerSecond(null)) - .addInfo("The structure is too complex!") - .addInfo(BLUE_PRINT_INFO) - .addSeparator() - .addController("Front center") - .addCasingInfo("Magic Casing", 24) - .addMaintenanceHatch("Hint block with dot 1") - .addInputBus("Hint block with dot 1") - .addInputHatch("Hint block with dot 1") - .addEnergyHatch("Hint block with dot 1") - .addOtherStructurePart("Essentia Output Hatch", "Hint block with dot 1") - .addMufflerHatch("Hint block with dot 2") - .toolTipFinisher("Good Generator"); - return tt; - } - - @Override - public String[] getStructureDescription(ItemStack itemStack) { - return DescTextLocalization.addText("LargeEssentiaSmeltery.hint", 8); - } - - @Override - public String[] getInfoData() { - String[] info = super.getInfoData(); - info[8] = "Node Power: " + EnumChatFormatting.RED - + this.nodePower - + EnumChatFormatting.RESET - + " Purification Efficiency: " - + EnumChatFormatting.AQUA - + this.nodePurificationEfficiency - + "%" - + EnumChatFormatting.RESET - + " Speed Up: " - + EnumChatFormatting.GRAY - + this.nodeIncrease - + "%" - + EnumChatFormatting.RESET; - return info; - } - - @Override - public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, ForgeDirection side, ForgeDirection facing, - int colorIndex, boolean aActive, boolean aRedstone) { - if (side == facing) { - if (aActive) return new ITexture[] { Textures.BlockIcons.getCasingTextureForId(CASING_INDEX), - TextureFactory.of(textureFontOn), TextureFactory.builder() - .addIcon(textureFontOn_Glow) - .glow() - .build() }; - else return new ITexture[] { Textures.BlockIcons.getCasingTextureForId(CASING_INDEX), - TextureFactory.of(textureFontOff), TextureFactory.builder() - .addIcon(textureFontOff_Glow) - .glow() - .build() }; - } - return new ITexture[] { Textures.BlockIcons.getCasingTextureForId(CASING_INDEX) }; - } - - protected void onCasingFound() { - this.mCasing++; - } - - protected void onEssentiaCellFound(int tier) { - this.mParallel += (1 << tier) * 0.25f; - this.pTier = Math.max(this.pTier, tier); - } - - private boolean addEnergyHatchToMachineList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) { - if (aTileEntity == null) { - return false; - } else { - IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity(); - if (aMetaTileEntity == null) { - return false; - } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy) { - if (((GT_MetaTileEntity_Hatch_Energy) aMetaTileEntity).mTier < 3) return false; - ((GT_MetaTileEntity_Hatch_Energy) aMetaTileEntity).updateTexture(aBaseCasingIndex); - return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy) aMetaTileEntity); - } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_EnergyMulti) { - ((GT_MetaTileEntity_Hatch_EnergyMulti) aMetaTileEntity).updateTexture(aBaseCasingIndex); - return this.eEnergyMulti.add(((GT_MetaTileEntity_Hatch_EnergyMulti) aMetaTileEntity)); - } else { - return false; - } - } - } - - private boolean addEssentiaOutputHatchToMachineList(EssentiaOutputHatch aTileEntity) { - if (aTileEntity instanceof EssentiaOutputHatch) { - return this.mEssentiaOutputHatches.add((EssentiaOutputHatch) aTileEntity); - } - return false; - } - - @Override - protected void runMachine(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { - if (!this.isFullPower()) return; - super.runMachine(aBaseMetaTileEntity, aTick); - } - - @Override - public @NotNull CheckRecipeResult checkProcessing_EM() { - if (!isFullPower()) return SimpleCheckRecipeResult.ofFailure("node_too_small"); - - ArrayList<ItemStack> tItemsList = getStoredInputs(); - ArrayList<FluidStack> tFluidsList = getStoredFluids(); - - if (tItemsList.isEmpty() && tFluidsList.isEmpty()) return CheckRecipeResultRegistry.NO_RECIPE; - - int p = (int) this.mParallel; - for (int i = tItemsList.size() - 1; i >= 0; i--) { - ItemStack itemStack = tItemsList.get(i); - int stackSize = itemStack.stackSize; - int sur = p - stackSize; - - if (sur > 0) { - p -= stackSize; - this.mOutputAspects.add(getEssentia(itemStack, stackSize)); - if (!depleteInput(itemStack)) itemStack.stackSize = 0; - } else if (sur == 0) { - this.mOutputAspects.add(getEssentia(itemStack, stackSize)); - if (!depleteInput(itemStack)) itemStack.stackSize = 0; - break; - } else { - this.mOutputAspects.add(getEssentia(itemStack, p)); - itemStack.stackSize -= p; - break; - } - } - - for (int i = tFluidsList.size() - 1; i >= 0; i--) { - FluidStack fluidStack = tFluidsList.get(i); - int stackSize = fluidStack.amount / 1000; - int sur = p - stackSize; - - if (sur > 0) { - p -= stackSize; - this.mOutputAspects.add(getEssentia(fluidStack, stackSize)); - if (!depleteInput(fluidStack)) fluidStack.amount = 0; - } else if (sur == 0) { - this.mOutputAspects.add(getEssentia(fluidStack, stackSize)); - if (!depleteInput(fluidStack)) fluidStack.amount = 0; - break; - } else { - this.mOutputAspects.add(getEssentia(fluidStack, p)); - fluidStack.amount -= p; - break; - } - } - - this.mEfficiency = 10000 - (this.getIdealStatus() - this.getRepairStatus()) * 1000; - this.mEfficiencyIncrease = 10000; - - final World WORLD = this.getBaseMetaTileEntity() - .getWorld(); - int x = this.getBaseMetaTileEntity() - .getXCoord(); - int y = this.getBaseMetaTileEntity() - .getYCoord(); - int z = this.getBaseMetaTileEntity() - .getZCoord(); - - this.drainNodePower(WORLD, x, y, z); - this.nodePower -= expectedPower(); - - calculatePerfectOverclockedNessMulti( - RECIPE_EUT, - (int) Math.ceil(this.mOutputAspects.visSize() * RECIPE_DURATION * (1 - this.nodeIncrease * 0.005)), - 1, - Math.min(Integer.MAX_VALUE, getMaxInputEnergy_EM())); - - this.updateSlots(); - if (this.mEUt > 0) this.mEUt = -this.mEUt; - return CheckRecipeResultRegistry.SUCCESSFUL; - } - - private AspectList getEssentia(ItemStack itemStack, int amount) { - AspectList aspectList = new AspectList(); - if (amount == 0) { - return aspectList; - } - AspectList aspects = ThaumcraftCraftingManager.getObjectTags(itemStack); - aspects = ThaumcraftCraftingManager.getBonusTags(itemStack, aspects); - if (aspects != null && aspects.size() != 0 && aspects.getAspects()[0] != null) { - for (int i = 0; i < amount; i++) aspectList.add(aspects); - } else aspectList.add(Aspect.ENTROPY, amount); - return aspectList; - } - - private AspectList getEssentia(FluidStack fluidStack, int amountBuckets) { - Block fluidBlock = fluidStack.getFluid() - .getBlock(); - if (fluidBlock == null) return new AspectList(); - ItemStack block = new ItemStack(fluidBlock); - return getEssentia(block, amountBuckets); - } - - private void fillEssentiaOutputHatch() { - for (EssentiaOutputHatch outputHatch : this.mEssentiaOutputHatches) { - for (Map.Entry<Aspect, Integer> entry : this.mOutputAspects.copy().aspects.entrySet()) { - Aspect aspect = entry.getKey(); - int amount = entry.getValue(); - this.mOutputAspects.remove(aspect, outputHatch.addEssentia(aspect, amount, null)); - } - } - this.mOutputAspects.aspects.clear(); - } - - private int expectedPower() { - return (int) (Math.pow(this.getMaxEnergyInputTier_EM(), 2) * NODE_COST_MULTIPLIER); - } - - private boolean isFullPower() { - return this.nodePower > expectedPower(); - } - - private void generateFluxGas(World world, int x, int y, int z) { - world.setBlock(x, y, z, ConfigBlocks.blockFluxGas, 8, 3); - } - - @Override - public void saveNBTData(NBTTagCompound aNBT) { - aNBT.setDouble("mParallel", this.mParallel); - aNBT.setDouble("nodePower", this.nodePower); - aNBT.setDouble("nodePurificationEfficiency", this.nodePurificationEfficiency); - aNBT.setDouble("nodeIncrease", this.nodeIncrease); - - Aspect[] aspectA = this.mOutputAspects.getAspects(); - NBTTagList nbtTagList = new NBTTagList(); - for (Aspect aspect : aspectA) { - if (aspect != null) { - NBTTagCompound f = new NBTTagCompound(); - f.setString("key", aspect.getTag()); - f.setInteger("amount", this.mOutputAspects.getAmount(aspect)); - nbtTagList.appendTag(f); - } - } - aNBT.setTag("Aspects", nbtTagList); - super.saveNBTData(aNBT); - } - - @Override - public void loadNBTData(NBTTagCompound aNBT) { - this.mParallel = aNBT.getDouble("mParallel"); - this.nodePower = aNBT.getInteger("nodePower"); - this.nodePurificationEfficiency = aNBT.getInteger("nodePurificationEfficiency"); - this.nodeIncrease = aNBT.getInteger("nodeIncrease"); - - this.mOutputAspects.aspects.clear(); - NBTTagList tlist = aNBT.getTagList("Aspects", 10); - for (int j = 0; j < tlist.tagCount(); ++j) { - NBTTagCompound rs = tlist.getCompoundTagAt(j); - if (rs.hasKey("key")) - this.mOutputAspects.add(Aspect.getAspect(rs.getString("key")), rs.getInteger("amount")); - } - super.loadNBTData(aNBT); - } - - @Override - protected void addClassicOutputs_EM() { - super.addClassicOutputs_EM(); - fillEssentiaOutputHatch(); - } - - @Override - public void stopMachine() { - super.stopMachine(); - this.mOutputAspects.aspects.clear(); - } - - private void drainNodePower(World world, int x, int y, int z) { - int power = this.expectedPower(); - if (this.nodePower < power * 10) { - this.nodePower += VisNetHandler.drainVis(world, x, y, z, Aspect.WATER, power); - this.nodePower += VisNetHandler.drainVis(world, x, y, z, Aspect.FIRE, power); - } - } - - @Override - public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { - super.onPostTick(aBaseMetaTileEntity, aTick); - if (aTick % 5 == 0 && this.mMachine) { - final World WORLD = this.getBaseMetaTileEntity() - .getWorld(); - int x = this.getBaseMetaTileEntity() - .getXCoord(); - int y = this.getBaseMetaTileEntity() - .getYCoord(); - int z = this.getBaseMetaTileEntity() - .getZCoord(); - - this.drainNodePower(WORLD, x, y, z); - - this.nodePurificationEfficiency = Math.max(0, this.nodePurificationEfficiency - 1); - if (this.nodePurificationEfficiency < 100) { - this.nodePurificationEfficiency = (int) Math.min( - 100, - this.nodePurificationEfficiency - + Math.ceil(VisNetHandler.drainVis(WORLD, x, y, z, Aspect.ORDER, 200) * 0.05)); - } - - this.nodeIncrease = Math.min(100, VisNetHandler.drainVis(WORLD, x, y, z, Aspect.ENTROPY, 125)); - } - } - - @Override - public boolean onRunningTick(ItemStack aStack) { - this.nodePurificationEfficiency = Math.max(0, this.nodePurificationEfficiency - 1); - if (xstr.nextInt(20) == 0) { - if (xstr.nextInt(100) < Math.max(100 - this.nodePurificationEfficiency, 0)) { - final World WORLD = this.getBaseMetaTileEntity() - .getWorld(); - GT_MetaTileEntity_Hatch_Muffler mufflerHatch = this.mMufflerHatches - .get(xstr.nextInt(this.mMufflerHatches.size())); - int x = mufflerHatch.getBaseMetaTileEntity() - .getXCoord(); - int y = mufflerHatch.getBaseMetaTileEntity() - .getYCoord(); - int z = mufflerHatch.getBaseMetaTileEntity() - .getZCoord(); - - ForgeDirection facing = mufflerHatch.getBaseMetaTileEntity() - .getFrontFacing(); - switch (facing) { - case SOUTH: - z += 1; - break; - case NORTH: - z -= 1; - break; - case WEST: - x -= 1; - break; - case EAST: - x += 1; - break; - default: - y += 1; - } - generateFluxGas(WORLD, x, y, z); - } - } - return super.onRunningTick(aStack); - } - - @Override - public boolean isCorrectMachinePart(ItemStack itemStack) { - return true; - } - - @Override - public int getPollutionPerSecond(ItemStack aStack) { - return 22 * (100 - this.nodePurificationEfficiency); - } - - @Override - public int getMaxEfficiency(ItemStack itemStack) { - return 10000; - } - - @Override - public int getDamageToComponent(ItemStack itemStack) { - return 0; - } - - @Override - public boolean explodesOnComponentBreak(ItemStack itemStack) { - return false; - } - - @Override - public IMetaTileEntity newMetaEntity(IGregTechTileEntity iGregTechTileEntity) { - return new LargeEssentiaSmeltery(this.mName); - } - - @Override - public int survivalConstruct(ItemStack stackSize, int elementBudget, ISurvivalBuildEnvironment env) { - if (mMachine) return -1; - int built = survivialBuildPiece(STRUCTURE_PIECE_FIRST, stackSize, 2, 2, 0, elementBudget, env, false, true); - if (built >= 0) return built; - int length = stackSize.stackSize + 2; - if (length > MAX_CONFIGURABLE_LENGTH) length = MAX_CONFIGURABLE_LENGTH + 2; - for (int i = 1; i <= length; i++) { - built = survivialBuildPiece(STRUCTURE_PIECE_LATER, stackSize, 2, 2, -i, elementBudget, env, false, true); - if (built >= 0) return built; - } - return survivialBuildPiece(STRUCTURE_PIECE_LAST, stackSize, 2, 2, -length - 1, elementBudget, env, false, true); - } -} |