diff options
Diffstat (limited to 'src')
29 files changed, 1393 insertions, 101 deletions
diff --git a/src/main/java/GoodGenerator/Blocks/RegularBlock/TEBlock.java b/src/main/java/GoodGenerator/Blocks/RegularBlock/TEBlock.java index ffea651383..d549a82a4c 100644 --- a/src/main/java/GoodGenerator/Blocks/RegularBlock/TEBlock.java +++ b/src/main/java/GoodGenerator/Blocks/RegularBlock/TEBlock.java @@ -5,6 +5,7 @@ import GoodGenerator.Main.GoodGenerator; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.GregTech_API; +import gregtech.api.util.GT_Utility; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -17,8 +18,10 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import thaumcraft.api.aspects.Aspect; import thaumcraft.api.aspects.IEssentiaContainerItem; import java.util.List; @@ -151,10 +154,16 @@ public class TEBlock extends BlockContainer { ItemStack tItemStack = player.getHeldItem(); if (tItemStack != null) { Item tItem = tItemStack.getItem(); - if (tItem instanceof IEssentiaContainerItem) - ((EssentiaHatch) tile).setLockedAspect(((IEssentiaContainerItem) tItem).getAspects(player.getHeldItem()).getAspects()[0]); + if (tItem instanceof IEssentiaContainerItem && ((IEssentiaContainerItem) tItem).getAspects(player.getHeldItem()) != null && ((IEssentiaContainerItem) tItem).getAspects(player.getHeldItem()).size() > 0) { + Aspect tLocked = ((IEssentiaContainerItem) tItem).getAspects(player.getHeldItem()).getAspects()[0]; + ((EssentiaHatch) tile).setLockedAspect(tLocked); + GT_Utility.sendChatToPlayer(player, String.format(StatCollector.translateToLocal("essentiahatch.chat.0"), tLocked.getLocalizedDescription())); + } + } + else { + ((EssentiaHatch) tile).setLockedAspect(null); + GT_Utility.sendChatToPlayer(player, StatCollector.translateToLocal("essentiahatch.chat.1")); } - else ((EssentiaHatch) tile).setLockedAspect(null); world.markBlockForUpdate(x, y, z); return true; } diff --git a/src/main/java/GoodGenerator/Blocks/TEs/EssentiaHatch.java b/src/main/java/GoodGenerator/Blocks/TEs/EssentiaHatch.java index 13843ecb77..c173cb7982 100644 --- a/src/main/java/GoodGenerator/Blocks/TEs/EssentiaHatch.java +++ b/src/main/java/GoodGenerator/Blocks/TEs/EssentiaHatch.java @@ -1,5 +1,7 @@ package GoodGenerator.Blocks.TEs; +import GoodGenerator.CrossMod.Thaumcraft.LargeEssentiaEnergyData; +import gregtech.api.util.GT_Log; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.network.NetworkManager; @@ -18,8 +20,8 @@ import java.util.ArrayList; public class EssentiaHatch extends TileEntity implements IAspectContainer, IEssentiaTransport { private Aspect mLocked; - private AspectList current = new AspectList(); + public int mState = 0; public void setLockedAspect(Aspect aAspect) { this.mLocked = aAspect; @@ -30,7 +32,7 @@ public class EssentiaHatch extends TileEntity implements IAspectContainer, IEsse super.readFromNBT(tagCompound); this.mLocked = Aspect.getAspect(tagCompound.getString("mLocked")); - + this.mState = tagCompound.getInteger("mState"); current = new AspectList(); NBTTagList tlist = tagCompound.getTagList("Aspects", 10); for (int j = 0; j < tlist.tagCount(); ++j) { @@ -46,7 +48,7 @@ public class EssentiaHatch extends TileEntity implements IAspectContainer, IEsse super.writeToNBT(tagCompound); tagCompound.setString("mLocked", this.mLocked == null ? "" : this.mLocked.getTag()); - + tagCompound.setInteger("mState", mState); NBTTagList tlist = new NBTTagList(); Aspect[] aspectA = current.getAspects(); for (Aspect aspect : aspectA) { @@ -85,6 +87,8 @@ public class EssentiaHatch extends TileEntity implements IAspectContainer, IEsse } public void fillfrompipe() { + if (getEssentiaAmount(null) > 1000) + return; TileEntity[] te = new TileEntity[ForgeDirection.VALID_DIRECTIONS.length]; for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) { te[i] = ThaumcraftApiHelper.getConnectableTile(this.worldObj, this.xCoord, this.yCoord, this.zCoord, ForgeDirection.VALID_DIRECTIONS[i]); @@ -94,7 +98,10 @@ public class EssentiaHatch extends TileEntity implements IAspectContainer, IEsse return; } if ((pipe.getEssentiaType(ForgeDirection.VALID_DIRECTIONS[i].getOpposite()) != null) && (pipe.getSuctionAmount(ForgeDirection.VALID_DIRECTIONS[i]) < getSuctionAmount(ForgeDirection.VALID_DIRECTIONS[i]))) { - if (mLocked != null && pipe.getEssentiaType(ForgeDirection.VALID_DIRECTIONS[i].getOpposite()) == mLocked) { + Aspect readyInput = pipe.getEssentiaType(ForgeDirection.VALID_DIRECTIONS[i].getOpposite()); + int type = LargeEssentiaEnergyData.getAspectTypeIndex(readyInput); + if (type != -1 && (mState & (1 << type)) == 0) continue; + if (readyInput.equals(mLocked)) { addToContainer(mLocked, pipe.takeEssentia(mLocked, 1, ForgeDirection.VALID_DIRECTIONS[i])); } if (mLocked == null) diff --git a/src/main/java/GoodGenerator/Blocks/TEs/FuelRefineFactory.java b/src/main/java/GoodGenerator/Blocks/TEs/FuelRefineFactory.java index a4f448af35..69d6990153 100644 --- a/src/main/java/GoodGenerator/Blocks/TEs/FuelRefineFactory.java +++ b/src/main/java/GoodGenerator/Blocks/TEs/FuelRefineFactory.java @@ -69,7 +69,7 @@ public class FuelRefineFactory extends GT_MetaTileEntity_MultiblockBase_EM imple @Override public void construct(ItemStack itemStack, boolean hintsOnly) { - structureBuild_EM(mName, 7,12,1, hintsOnly, itemStack); + structureBuild_EM(mName, 7, 12, 1, hintsOnly, itemStack); } @Override diff --git a/src/main/java/GoodGenerator/Blocks/TEs/LargeEssentiaGenerator.java b/src/main/java/GoodGenerator/Blocks/TEs/LargeEssentiaGenerator.java index 084d56b32a..c887496e6b 100644 --- a/src/main/java/GoodGenerator/Blocks/TEs/LargeEssentiaGenerator.java +++ b/src/main/java/GoodGenerator/Blocks/TEs/LargeEssentiaGenerator.java @@ -1,7 +1,11 @@ package GoodGenerator.Blocks.TEs; +import GoodGenerator.CrossMod.Thaumcraft.LargeEssentiaEnergyData; +import GoodGenerator.Items.MyMaterial; import GoodGenerator.Loader.Loaders; import GoodGenerator.util.DescTextLocalization; +import GoodGenerator.util.ItemRefer; +import com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader; import com.github.bartimaeusnek.crossmod.tectech.TecTechEnabledMulti; import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_DynamoMulti; import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_EnergyMulti; @@ -10,20 +14,24 @@ import com.github.technus.tectech.thing.metaTileEntity.multi.base.GT_MetaTileEnt import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable; import com.gtnewhorizon.structurelib.structure.IStructureDefinition; import com.gtnewhorizon.structurelib.structure.StructureDefinition; -import gregtech.api.enums.TC_Aspects; +import gregtech.api.enums.Materials; import gregtech.api.enums.Textures; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.implementations.*; import gregtech.api.objects.GT_RenderedTexture; +import gregtech.api.objects.XSTR; import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; +import gregtech.api.util.GT_Utility; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; +import net.minecraftforge.fluids.FluidRegistry; import org.lwjgl.input.Keyboard; import thaumcraft.api.aspects.Aspect; import thaumcraft.api.aspects.AspectList; @@ -36,12 +44,14 @@ import static GoodGenerator.util.DescTextLocalization.BLUE_PRINT_INFO; import static com.gtnewhorizon.structurelib.structure.StructureUtility.*; import static gregtech.api.util.GT_StructureUtility.ofHatchAdder; -public class LargeEssentiaGenerator extends GT_MetaTileEntity_MultiblockBase_EM implements TecTechEnabledMulti, IConstructable { +public class LargeEssentiaGenerator extends GT_MetaTileEntity_MultiblockBase_EM implements IConstructable { private IStructureDefinition<LargeEssentiaGenerator> multiDefinition = null; - protected final int ENERGY_PER_ESSENTIA_DEFAULT = 8192; protected int mStableValue = 0; + protected int mTierLimit = -1; protected long mLeftEnergy; + private int mUpgrade = 1; + final XSTR R = new XSTR(); protected ArrayList<EssentiaHatch> mEssentiaHatch = new ArrayList<>(); public LargeEssentiaGenerator(String name){ @@ -53,21 +63,6 @@ public class LargeEssentiaGenerator extends GT_MetaTileEntity_MultiblockBase_EM } @Override - public List<GT_MetaTileEntity_Hatch_Energy> getVanillaEnergyHatches() { - return this.mEnergyHatches; - } - - @Override - public List<GT_MetaTileEntity_Hatch_EnergyTunnel> getTecTechEnergyTunnels() { - return new ArrayList<>(); - } - - @Override - public List<GT_MetaTileEntity_Hatch_EnergyMulti> getTecTechEnergyMultis() { - return new ArrayList<>(); - } - - @Override public void construct(ItemStack itemStack, boolean b) { structureBuild_EM(mName, 4, 0, 4, b, itemStack); } @@ -75,7 +70,22 @@ public class LargeEssentiaGenerator extends GT_MetaTileEntity_MultiblockBase_EM @Override public boolean checkMachine_EM(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) { mStableValue = 0; - return structureCheck_EM(mName, 4, 0, 4) && (mDynamoHatches.size() + eDynamoMulti.size()) == 1; + mEssentiaHatch.clear(); + return structureCheck_EM(mName, 4, 0, 4) && (mDynamoHatches.size() + eDynamoMulti.size()) == 1 + && checkHatchTier() && updateEssentiaHatchState(); + } + + public boolean checkHatchTier() { + for (GT_MetaTileEntity_Hatch_Input tHatch : mInputHatches) { + if (tHatch.mTier > mTierLimit) return false; + } + for (GT_MetaTileEntity_Hatch_Dynamo tHatch : mDynamoHatches) { + if (tHatch.mTier > mTierLimit) return false; + } + for (GT_MetaTileEntity_Hatch_DynamoMulti tHatch : eDynamoMulti) { + if (tHatch.mTier > mTierLimit) return false; + } + return true; } @Override @@ -83,6 +93,7 @@ public class LargeEssentiaGenerator extends GT_MetaTileEntity_MultiblockBase_EM super.loadNBTData(aNBT); this.mStableValue = aNBT.getInteger("mStableValue"); this.mLeftEnergy = aNBT.getLong("mLeftEnergy"); + this.mUpgrade = aNBT.getInteger("mUpgrade"); } @Override @@ -90,26 +101,14 @@ public class LargeEssentiaGenerator extends GT_MetaTileEntity_MultiblockBase_EM super.saveNBTData(aNBT); aNBT.setInteger("mStableValue", this.mStableValue); aNBT.setLong("mLeftEnergy", this.mLeftEnergy); + aNBT.setInteger("mUpgrade", this.mUpgrade); } - public void getEssentiaHatch() { - IGregTechTileEntity aTileEntity = getBaseMetaTileEntity(); - if (aTileEntity == null) return; - mEssentiaHatch.clear(); - TileEntity hatch = aTileEntity.getTileEntityOffset(4,-2, 0); - addEssentiaHatch(hatch); - hatch = aTileEntity.getTileEntityOffset(-4,-2, 0); - addEssentiaHatch(hatch); - hatch = aTileEntity.getTileEntityOffset(0,-2, 4); - addEssentiaHatch(hatch); - hatch = aTileEntity.getTileEntityOffset(0,-2, -4); - addEssentiaHatch(hatch); - } - - public void addEssentiaHatch(TileEntity aHatch) { - if (aHatch instanceof EssentiaHatch) { - mEssentiaHatch.add((EssentiaHatch) aHatch); + public boolean updateEssentiaHatchState() { + for (EssentiaHatch hatch : mEssentiaHatch) { + hatch.mState = mUpgrade; } + return true; } @Override @@ -123,6 +122,25 @@ public class LargeEssentiaGenerator extends GT_MetaTileEntity_MultiblockBase_EM } @Override + public boolean onRightclick(IGregTechTileEntity aBaseMetaTileEntity, EntityPlayer aPlayer) { + if (this.getBaseMetaTileEntity().isServerSide()) { + ItemStack tCurrentItem = aPlayer.inventory.getCurrentItem(); + if (tCurrentItem != null && tCurrentItem.getItem().equals(ItemRefer.Essentia_Upgrade_Empty.get(1).getItem())) { + int tMeta = tCurrentItem.getItemDamage(); + if ((mUpgrade & (1 << tMeta)) == 0 && tMeta != 0) { + tCurrentItem.stackSize --; + mUpgrade = mUpgrade | (1 << tMeta); + GT_Utility.sendChatToPlayer(aPlayer, tCurrentItem.getDisplayName() + StatCollector.translateToLocal("largeessentiagenerator.chat")); + } + updateEssentiaHatchState(); + return true; + } + } + super.onRightclick(aBaseMetaTileEntity, aPlayer); + return true; + } + + @Override public IStructureDefinition<LargeEssentiaGenerator> getStructure_EM() { if(multiDefinition == null) { multiDefinition = StructureDefinition @@ -152,22 +170,28 @@ public class LargeEssentiaGenerator extends GT_MetaTileEntity_MultiblockBase_EM 'E', ofChain( onElementPass( - x -> ++x.mStableValue, + x -> {++x.mStableValue; x.mTierLimit = Math.max(x.mTierLimit, 3);}, ofBlock( Loaders.essentiaCell, 0 ) ), onElementPass( - x -> x.mStableValue += 2, + x -> {x.mStableValue += 2; x.mTierLimit = Math.max(x.mTierLimit, 4);}, ofBlock( Loaders.essentiaCell, 1 ) ), onElementPass( - x -> x.mStableValue += 5, + x -> {x.mStableValue += 5; x.mTierLimit = Math.max(x.mTierLimit, 5);}, ofBlock( Loaders.essentiaCell, 2 ) + ), + onElementPass( + x -> {x.mStableValue += 10; x.mTierLimit = Math.max(x.mTierLimit, 6);}, + ofBlock( + Loaders.essentiaCell, 3 + ) ) ) ).addElement( @@ -180,8 +204,8 @@ public class LargeEssentiaGenerator extends GT_MetaTileEntity_MultiblockBase_EM ofBlock( Loaders.magicCasing, 0 ), - ofBlock( - Loaders.essentiaHatch, 0 + ofTileAdder( + LargeEssentiaGenerator::addEssentiaHatch, Loaders.magicCasing, 0 ) ) ) @@ -190,6 +214,13 @@ public class LargeEssentiaGenerator extends GT_MetaTileEntity_MultiblockBase_EM return multiDefinition; } + public final boolean addEssentiaHatch(TileEntity aTileEntity) { + if (aTileEntity instanceof EssentiaHatch) { + return this.mEssentiaHatch.add((EssentiaHatch) aTileEntity); + } + return false; + } + public final boolean addLargeEssentiaGeneratorList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) { if (aTileEntity == null) { return false; @@ -216,7 +247,6 @@ public class LargeEssentiaGenerator extends GT_MetaTileEntity_MultiblockBase_EM public boolean checkRecipe_EM(ItemStack aStack) { this.mEfficiency = 10000; this.mMaxProgresstime = 1; - getEssentiaHatch(); setEssentiaToEUVoltageAndAmp(getVoltageLimit(), getAmpLimit()); return true; } @@ -246,18 +276,175 @@ public class LargeEssentiaGenerator extends GT_MetaTileEntity_MultiblockBase_EM } public long getPerAspectEnergy(Aspect aspect) { - if (aspect.equals(Aspect.ENERGY)) return 45000 * mStableValue / 25; - if (aspect.equals(Aspect.FIRE)) return 30000 * mStableValue / 25; - if (aspect.equals(Aspect.GREED)) return 130000 * mStableValue / 25; - if (aspect.equals(Aspect.AURA)) return 120000 * mStableValue / 25; - if (aspect.equals(Aspect.TREE)) return 25000 * mStableValue / 25; - if (aspect.equals(Aspect.AIR)) return 13000 * mStableValue / 25; - if (aspect.equals(Aspect.MAGIC)) return 92000 * mStableValue / 25; - if (aspect.equals(Aspect.MECHANISM)) return 40000 * mStableValue / 25; - if (aspect.equals(TC_Aspects.ELECTRUM.mAspect)) return 131072 * mStableValue / 25; - if (aspect.equals(TC_Aspects.RADIO.mAspect)) return 524288 * mStableValue / 25; + int type = LargeEssentiaEnergyData.getAspectTypeIndex(aspect); + if (!isValidEssentia(aspect)) return 0; + switch (type) { + case 0: return normalEssentia(aspect); + case 1: return airEssentia(aspect); + case 2: return thermalEssentia(aspect); + case 3: return unstableEssentia(aspect); + case 4: return victusEssentia(aspect); + case 5: return taintedEssentia(aspect); + case 6: return mechanicEssentia(aspect); + case 7: return spiritEssentia(aspect); + case 8: return radiationEssentia(aspect); + case 9: return electricEssentia(aspect); + default: return 0; + } + } - return ENERGY_PER_ESSENTIA_DEFAULT * mStableValue / 25; + public long normalEssentia(Aspect aspect) { + return LargeEssentiaEnergyData.getAspectFuelValue(aspect); + } + + public long airEssentia(Aspect aspect) { + long baseValue = LargeEssentiaEnergyData.getAspectFuelValue(aspect); + double ceoOutput = 0; + int ceoInput = (int) LargeEssentiaEnergyData.getAspectCeo(aspect) * 8; + if (depleteInput(Materials.LiquidAir.getFluid(ceoInput))) { + ceoOutput = 1.5D; + } + else if (depleteInput(Materials.Air.getGas(ceoInput))){ + ceoOutput = 1.0D; + } + return (long) (baseValue * ceoOutput); + } + + public long thermalEssentia(Aspect aspect) { + long baseValue = LargeEssentiaEnergyData.getAspectFuelValue(aspect); + double ceoOutput = 0; + int ceoInput = (int) LargeEssentiaEnergyData.getAspectCeo(aspect) * 2; + if (depleteInput(FluidRegistry.getFluidStack("cryotheum", ceoInput))) { + ceoOutput = 9.0D; + } + else if (depleteInput(Materials.SuperCoolant.getFluid(ceoInput))) { + ceoOutput = 5.0D; + } + else if (depleteInput(FluidRegistry.getFluidStack("ic2coolant", ceoInput))) { + ceoOutput = 1.5D; + } + else if (depleteInput(Materials.Ice.getSolid(ceoInput))) { + ceoOutput = 1.2D; + } + else if (depleteInput(FluidRegistry.getFluidStack("ic2distilledwater", ceoInput))){ + ceoOutput = 1.0D; + } + else if (depleteInput(Materials.Water.getFluid(ceoInput))) { + ceoOutput = 0.5D; + } + + return (long) (baseValue * ceoOutput); + } + + public long unstableEssentia(Aspect aspect) { + long baseValue = LargeEssentiaEnergyData.getAspectFuelValue(aspect); + double ceoOutput = 0; + int ceoInput = (int) LargeEssentiaEnergyData.getAspectCeo(aspect) * 4; + if (depleteInput(WerkstoffLoader.Xenon.getFluidOrGas(ceoInput))){ + ceoOutput = 4.0D; + } + else if (depleteInput(WerkstoffLoader.Krypton.getFluidOrGas(ceoInput))){ + ceoOutput = 3.0D; + } + else if (depleteInput(Materials.Argon.getFluid(ceoInput))){ + ceoOutput = 2.5D; + } + else if (depleteInput(WerkstoffLoader.Neon.getFluidOrGas(ceoInput))){ + ceoOutput = 2.2D; + } + else if (depleteInput(Materials.Helium.getFluid(ceoInput))){ + ceoOutput = 2.0D; + } + else if (depleteInput(Materials.Nitrogen.getFluid(ceoInput))){ + ceoOutput = 1.0D; + } + return (long) (baseValue * ceoOutput); + } + + public long victusEssentia(Aspect aspect) { + long baseValue = LargeEssentiaEnergyData.getAspectFuelValue(aspect); + double ceoOutput = 1.0D; + int ceoInput = (int) LargeEssentiaEnergyData.getAspectCeo(aspect) * 18; + if (depleteInput(FluidRegistry.getFluidStack("xpjuice", ceoInput))) { + ceoOutput = 2.0D; + } + else if (depleteInput(FluidRegistry.getFluidStack("lifeessence", ceoInput))){ + ceoOutput = 6.0D; + } + return (long) (baseValue * ceoOutput); + } + + public long taintedEssentia(Aspect aspect) { + long baseValue = LargeEssentiaEnergyData.getAspectFuelValue(aspect); + double ceoOutput = 1.0D; + int ceoInput = (int) LargeEssentiaEnergyData.getAspectCeo(aspect) * 3; + int chance = 2000; + if (depleteInput(FluidRegistry.getFluidStack("fluidpure", ceoInput))) { + ceoOutput = 60.0D; + chance = 0; + } + else if (depleteInput(FluidRegistry.getFluidStack("fluiddeath", ceoInput))){ + ceoOutput = Math.pow(25000D / baseValue, 4); + chance = 4000; + } + + if (R.nextInt(10000) < chance) { + World world = getBaseMetaTileEntity().getWorld(); + int tX = R.nextInt(4); + int tZ = R.nextInt(4); + if (world.isAirBlock(tX, 0, tZ)) + world.setBlock(tX, 0, tZ, ConfigBlocks.blockFluxGas, R.nextInt(8), 3); + } + + return (long) (baseValue * ceoOutput); + } + + public long mechanicEssentia(Aspect aspect) { + long baseValue = LargeEssentiaEnergyData.getAspectFuelValue(aspect); + double ceoOutput = 0; + int ceoInput = (int) LargeEssentiaEnergyData.getAspectCeo(aspect) * 20; + if (depleteInput(Materials.Lubricant.getFluid(ceoInput))) { + ceoOutput = 1.0D; + } + return (long) (baseValue * ceoOutput); + } + + public long spiritEssentia(Aspect aspect) { + long baseValue = LargeEssentiaEnergyData.getAspectFuelValue(aspect); + double ceoOutput = 1.0D; + int ceoInput = (int) LargeEssentiaEnergyData.getAspectCeo(aspect) * 2; + if (depleteInput(FluidRegistry.getFluidStack("witchery:fluidspirit", ceoInput))) { + ceoOutput = 10D * (1 + mStableValue / 100D); + } + else if (depleteInput(FluidRegistry.getFluidStack("witchery:hollowtears", ceoInput))) { + ceoOutput = 15D * (1 + 100D / mStableValue); + } + return (long) (baseValue * ceoOutput); + } + + public long radiationEssentia(Aspect aspect) { + long baseValue = LargeEssentiaEnergyData.getAspectFuelValue(aspect); + double ceoOutput = 1.0D; + int ceoInput = (int) LargeEssentiaEnergyData.getAspectCeo(aspect) * 6; + if (depleteInput(Materials.Caesium.getMolten(ceoInput))) { + ceoOutput = 2.0D; + } + else if (depleteInput(Materials.Uranium235.getMolten(ceoInput))) { + ceoOutput = 3.0D; + } + else if (depleteInput(Materials.Naquadah.getMolten(ceoInput))) { + ceoOutput = 4.0D; + } + else if (depleteInput(MyMaterial.atomicSeparationCatalyst.getMolten(ceoInput))) { + ceoOutput = 16.0D; + } + return (long) (baseValue * ceoOutput); + } + + public long electricEssentia(Aspect aspect) { + long baseValue = LargeEssentiaEnergyData.getAspectFuelValue(aspect); + double ceoOutput = Math.pow(3.0, GT_Utility.getTier(getVoltageLimit())); + return (long) (baseValue * ceoOutput); } public void setEssentiaToEUVoltageAndAmp(long voltageLimit, long ampLimit) { @@ -267,6 +454,7 @@ public class LargeEssentiaGenerator extends GT_MetaTileEntity_MultiblockBase_EM for (EssentiaHatch hatch: this.mEssentiaHatch){ AspectList aspects = hatch.getAspects(); for (Aspect aspect: aspects.aspects.keySet()) { + if (!isValidEssentia(aspect) || getPerAspectEnergy(aspect) == 0) continue; while (EUt <= (voltageLimit * ampLimit) && aspects.getAmount(aspect) > 0) { EUt += getPerAspectEnergy(aspect); aspects.reduce(aspect, 1); @@ -275,6 +463,7 @@ public class LargeEssentiaGenerator extends GT_MetaTileEntity_MultiblockBase_EM } } if (EUt == 0 && aspects.size() != 0) { + if (!isValidEssentia(aspects.getAspects()[0]) || getPerAspectEnergy(aspects.getAspects()[0]) == 0) continue; EUt += getPerAspectEnergy(aspects.getAspects()[0]); aspects.reduce(aspects.getAspects()[0], 1); if (aspects.getAmount(aspects.getAspects()[0]) == 0) @@ -320,6 +509,7 @@ public class LargeEssentiaGenerator extends GT_MetaTileEntity_MultiblockBase_EM .addInfo("Controller block for the Large Essentia Generator") .addInfo("Maybe some thaumaturages are upset by it. . .") .addInfo("Transform essentia into energy!") + .addInfo("The the Diffusion Cell determines the highest hatch tier that LEG can accept.") .addInfo("You can find more information about this generator in Thaumonomicon.") .addInfo("The structure is too complex!") .addInfo(BLUE_PRINT_INFO) @@ -345,4 +535,9 @@ public class LargeEssentiaGenerator extends GT_MetaTileEntity_MultiblockBase_EM } return new ITexture[]{Textures.BlockIcons.getCasingTextureForId(1536)}; } + + public boolean isValidEssentia(Aspect aspect) { + int type = LargeEssentiaEnergyData.getAspectTypeIndex(aspect); + return type != -1 && (mUpgrade & (1 << type)) != 0; + } } diff --git a/src/main/java/GoodGenerator/CrossMod/NEI/IMCForNEI.java b/src/main/java/GoodGenerator/CrossMod/NEI/IMCForNEI.java index 81f0249a7e..e4514df282 100644 --- a/src/main/java/GoodGenerator/CrossMod/NEI/IMCForNEI.java +++ b/src/main/java/GoodGenerator/CrossMod/NEI/IMCForNEI.java @@ -19,5 +19,6 @@ public class IMCForNEI { aNBT.setInteger("handlerHeight", 135); aNBT.setInteger("handlerWidth", 166); aNBT.setInteger("maxRecipesPerPage", 1); + aNBT.setInteger("yShift", 6); } } diff --git a/src/main/java/GoodGenerator/CrossMod/NEI/NEI_Config.java b/src/main/java/GoodGenerator/CrossMod/NEI/NEI_Config.java index 1a57824b89..aebfe6102c 100644 --- a/src/main/java/GoodGenerator/CrossMod/NEI/NEI_Config.java +++ b/src/main/java/GoodGenerator/CrossMod/NEI/NEI_Config.java @@ -5,6 +5,7 @@ import GoodGenerator.util.MyRecipeAdder; import codechicken.nei.api.API; import codechicken.nei.api.IConfigureNEI; import net.minecraft.block.Block; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class NEI_Config implements IConfigureNEI { @@ -21,6 +22,10 @@ public class NEI_Config implements IConfigureNEI { API.hideItem(new ItemStack(aBlock, 1)); } + public static void hide(Item aItem) { + API.hideItem(new ItemStack(aItem, 1)); + } + @Override public String getName() { return "Good Generator NEI Plugin"; diff --git a/src/main/java/GoodGenerator/CrossMod/Thaumcraft/LargeEssentiaEnergyData.java b/src/main/java/GoodGenerator/CrossMod/Thaumcraft/LargeEssentiaEnergyData.java new file mode 100644 index 0000000000..60ef46e8ba --- /dev/null +++ b/src/main/java/GoodGenerator/CrossMod/Thaumcraft/LargeEssentiaEnergyData.java @@ -0,0 +1,124 @@ +package GoodGenerator.CrossMod.Thaumcraft; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import thaumcraft.api.aspects.Aspect; + +import java.io.*; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; + +public class LargeEssentiaEnergyData { + + public static final HashMap<Aspect, FuelData> ASPECT_FUEL_DATA = new HashMap<>(); + + public static String readJsonFile() { + try { + URL url = Thread.currentThread().getContextClassLoader().getResource("assets/goodgenerator/data/essentia.json"); + assert url != null; + BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), StandardCharsets.UTF_8)); + String s; + StringBuilder sb = new StringBuilder(); + while ((s = in.readLine()) != null) { + sb.append(s); + } + in.close(); + return sb.toString(); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } + + public static void processEssentiaData() { + String data = readJsonFile(); + if (data == null) { + return; + } + JsonParser jsonParser = new JsonParser(); + JsonObject jsonObject = (JsonObject)jsonParser.parse(data); + JsonArray jsonArray = jsonObject.get("Essentia").getAsJsonArray(); + for (JsonElement elm : jsonArray) { + JsonObject essData = elm.getAsJsonObject(); + String aspectName = essData.get("name").getAsString(); + Aspect aspect = Aspect.getAspect(aspectName.toLowerCase()); + if (aspect != null) { + int fuel = essData.get("fuelValue").getAsInt(); + String cate = essData.get("category").getAsString(); + float ceo = essData.get("consumeCeo").getAsFloat(); + ASPECT_FUEL_DATA.put(aspect, new FuelData(fuel, cate, ceo)); + } + } + } + + public static int getAspectTypeIndex(Aspect aspect) { + if (ASPECT_FUEL_DATA.containsKey(aspect)) { + return ASPECT_FUEL_DATA.get(aspect).getCategoryIndex(); + } + else return -1; + } + + public static String getAspectType(Aspect aspect) { + if (ASPECT_FUEL_DATA.containsKey(aspect)) { + return ASPECT_FUEL_DATA.get(aspect).getCategory(); + } + else return null; + } + + public static int getAspectFuelValue(Aspect aspect) { + if (ASPECT_FUEL_DATA.containsKey(aspect)) { + return ASPECT_FUEL_DATA.get(aspect).getFuelValue(); + } + else return 0; + } + + public static float getAspectCeo(Aspect aspect) { + if (ASPECT_FUEL_DATA.containsKey(aspect)) { + return ASPECT_FUEL_DATA.get(aspect).getConsumeSpeed(); + } + else return 0; + } +} + +class FuelData { + private final int fuelValue; + private final String category; + private final float consumeSpeed; + + FuelData(int basicValue, String cate, float ceo) { + fuelValue = basicValue; + category = cate; + consumeSpeed = ceo; + } + + public int getFuelValue() { + return fuelValue; + } + + public float getConsumeSpeed() { + return consumeSpeed; + } + + public String getCategory() { + return category; + } + + public int getCategoryIndex() { + switch (category) { + case "NORMAL": return 0; + case "AIR": return 1; + case "THERMAL": return 2; + case "UNSTABLE": return 3; + case "VICTUS": return 4; + case "TAINTED": return 5; + case "MECHANICS": return 6; + case "SPRITE": return 7; + case "RADIATION": return 8; + case "ELECTRIC": return 9; + default: return -1; + } + } +}
\ No newline at end of file diff --git a/src/main/java/GoodGenerator/CrossMod/Thaumcraft/Research.java b/src/main/java/GoodGenerator/CrossMod/Thaumcraft/Research.java index 12fcefe4e0..08aa1e4409 100644 --- a/src/main/java/GoodGenerator/CrossMod/Thaumcraft/Research.java +++ b/src/main/java/GoodGenerator/CrossMod/Thaumcraft/Research.java @@ -1,15 +1,22 @@ package GoodGenerator.CrossMod.Thaumcraft; +import GoodGenerator.Items.MyMaterial; import GoodGenerator.util.DescTextLocalization; import GoodGenerator.util.ItemRefer; +import com.github.bartimaeusnek.bartworks.common.loaders.ItemRegistry; import com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader; +import cpw.mods.fml.common.Loader; import gregtech.api.GregTech_API; import gregtech.api.enums.ItemList; import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; import gregtech.api.enums.TC_Aspects; +import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_OreDictUnificator; import ic2.core.Ic2Items; +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.item.ItemCoal; import net.minecraft.item.ItemStack; import thaumcraft.api.aspects.Aspect; import thaumcraft.api.aspects.AspectList; @@ -17,14 +24,25 @@ import thaumcraft.common.config.ConfigBlocks; import thaumcraft.common.config.ConfigItems; import java.util.Arrays; +import java.util.Collections; import static thaumcraft.api.ThaumcraftApi.addArcaneCraftingRecipe; public class Research{ public static void addResearch() { - DescTextLocalization.addText("research.ESSENTIA_GENERATOR.page",3); + DescTextLocalization.addText("research.ESSENTIA_GENERATOR.page",4); DescTextLocalization.addText("research.ESSENTIA_CELL.page",1); + DescTextLocalization.addText("research.ESSENTIA_UPGRADE_BLANK.page",1); + DescTextLocalization.addText("research.ESSENTIA_UPGRADE_AIR.page",2); + DescTextLocalization.addText("research.ESSENTIA_UPGRADE_THERMAL.page",3); + DescTextLocalization.addText("research.ESSENTIA_UPGRADE_UNSTABLE.page",3); + DescTextLocalization.addText("research.ESSENTIA_UPGRADE_VICTUS.page",3); + DescTextLocalization.addText("research.ESSENTIA_UPGRADE_TAINTED.page",4); + DescTextLocalization.addText("research.ESSENTIA_UPGRADE_MECHANICS.page",3); + DescTextLocalization.addText("research.ESSENTIA_UPGRADE_SPRITE.page",3); + DescTextLocalization.addText("research.ESSENTIA_UPGRADE_RADIATION.page",3); + DescTextLocalization.addText("research.ESSENTIA_UPGRADE_ELECTRIC.page",2); GregTech_API.sThaumcraftCompat.addResearch( "ESSENTIA_GENERATOR", "Combustion Engine in Magic World", @@ -87,8 +105,10 @@ public class Research{ "ESSENTIA_GENERATOR", GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Thaumium, 1), new ItemStack[]{ - GT_OreDictUnificator.get(OrePrefixes.pipeTiny, Materials.Steel, 1), - ItemList.Electric_Pump_MV.get(1L), + GT_OreDictUnificator.get(OrePrefixes.pipeTiny, Materials.StainlessSteel, 1), + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.ElectricalSteel, 1), + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.ElectricalSteel, 1), + ItemList.Electric_Pump_HV.get(1L), new ItemStack(ConfigBlocks.blockTube, 1, 4), new ItemStack(ConfigBlocks.blockCosmeticOpaque, 1, 2), }, @@ -111,7 +131,8 @@ public class Research{ 'A', Ic2Items.advancedMachine ), "research.ESSENTIA_GENERATOR.page.1", - "research.ESSENTIA_GENERATOR.page.2" + "research.ESSENTIA_GENERATOR.page.2", + "research.ESSENTIA_GENERATOR.page.3" } ); GregTech_API.sThaumcraftCompat.addResearch( @@ -134,17 +155,17 @@ public class Research{ "research.ESSENTIA_CELL.page.0", GregTech_API.sThaumcraftCompat.addInfusionRecipe( "ESSENTIA_CELL", - GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Thaumium, 1), + ItemRefer.Essentia_Cell_T1.get(1), new ItemStack[]{ - GT_OreDictUnificator.get(OrePrefixes.pipeTiny, Materials.Enderium, 1), - ItemList.Electric_Pump_HV.get(1L), - ItemList.QuantumEye.get(1L), - new ItemStack(ConfigBlocks.blockCosmeticOpaque, 1, 2), - GT_OreDictUnificator.get(OrePrefixes.gearGt, Materials.Platinum, 1), - WerkstoffLoader.Salt.get(OrePrefixes.gemExquisite, 1) + GT_OreDictUnificator.get(OrePrefixes.pipeTiny, Materials.TungstenSteel, 1), + ItemList.FluidRegulator_EV.get(1L), + ItemList.QuantumStar.get(1L), + new ItemStack(ConfigBlocks.blockJar, 1, 0), + GT_OreDictUnificator.get(OrePrefixes.spring, Materials.Platinum, 1), + GT_OreDictUnificator.get(OrePrefixes.gearGt, Materials.Desh, 1) }, ItemRefer.Essentia_Cell_T2.get(1), - 5, + 6, Arrays.asList( new TC_Aspects.TC_AspectStack(TC_Aspects.AQUA, 64), new TC_Aspects.TC_AspectStack(TC_Aspects.VACUOS, 64), @@ -153,25 +174,447 @@ public class Research{ ), GregTech_API.sThaumcraftCompat.addInfusionRecipe( "ESSENTIA_CELL", - GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Void, 1), + ItemRefer.Essentia_Cell_T2.get(1), new ItemStack[]{ - GT_OreDictUnificator.get(OrePrefixes.pipeTiny, Materials.Titanium, 1), - ItemList.Electric_Pump_EV.get(1L), - ItemList.QuantumStar.get(1L), - new ItemStack(ConfigBlocks.blockCosmeticOpaque, 1, 2), + GT_OreDictUnificator.get(OrePrefixes.pipeTiny, Materials.NiobiumTitanium, 1), + ItemList.Field_Generator_IV.get(1L), + ItemList.Reactor_Coolant_Sp_3.get(1L), new ItemStack(ConfigItems.itemResource,1,14), - Ic2Items.iridiumPlate, Ic2Items.fluidregulator, new ItemStack(ConfigBlocks.blockCrystal, 1, 6), + GT_OreDictUnificator.get(OrePrefixes.wireFine, Materials.Plutonium241, 1), + GT_OreDictUnificator.get(OrePrefixes.gearGt, Materials.Void, 1), + GT_OreDictUnificator.get(OrePrefixes.lens, Materials.EnderEye, 1), + new ItemStack(ConfigBlocks.blockMetalDevice, 1, 3) }, ItemRefer.Essentia_Cell_T3.get(1), - 6, + 8, Arrays.asList( new TC_Aspects.TC_AspectStack(TC_Aspects.AQUA, 128), new TC_Aspects.TC_AspectStack(TC_Aspects.VACUOS, 128), new TC_Aspects.TC_AspectStack(TC_Aspects.PERMUTATIO, 64) ) ), + GregTech_API.sThaumcraftCompat.addInfusionRecipe( + "ESSENTIA_CELL", + ItemRefer.Essentia_Cell_T3.get(1), + new ItemStack[]{ + GT_OreDictUnificator.get(OrePrefixes.pipeTiny, Materials.Europium, 1), + ItemList.Emitter_LuV.get(1L), + ItemList.FluidRegulator_LuV.get(1L), + new ItemStack(ConfigItems.itemEldritchObject,1,3), + new ItemStack(ItemRegistry.bw_realglas, 1, 3), + GT_OreDictUnificator.get(OrePrefixes.wireFine, Materials.Indium, 1), + GT_OreDictUnificator.get(OrePrefixes.gearGt, Materials.Ichorium, 1), + GT_OreDictUnificator.get(OrePrefixes.spring, Materials.Quantium, 1), + GT_OreDictUnificator.get(OrePrefixes.stickLong, Materials.Sunnarium, 1), + MyMaterial.orundum.get(OrePrefixes.gemExquisite, 1) + }, + ItemRefer.Essentia_Cell_T4.get(1), + 10, + Arrays.asList( + new TC_Aspects.TC_AspectStack(TC_Aspects.AQUA, 256), + new TC_Aspects.TC_AspectStack(TC_Aspects.VACUOS, 256), + new TC_Aspects.TC_AspectStack(TC_Aspects.PERMUTATIO, 128) + ) + ) + } + ); + ItemStack broad = new ItemStack(ConfigBlocks.blockCosmeticSolid, 1, 6); + if (Loader.isModLoaded("dreamcraft")) broad = GT_ModHandler.getModItem("dreamcraft", "item.ArcaneSlate", 1); + GregTech_API.sThaumcraftCompat.addResearch( + "ESSENTIA_UPGRADE_BLANK", + "Upgrade your generator", + "Let's try some more dangerous essentia.", + new String[]{"ESSENTIA_GENERATOR"}, + "ARTIFICE", + ItemRefer.Essentia_Upgrade_Empty.get(1), + 2, 0, -9, 4, + Arrays.asList( + new TC_Aspects.TC_AspectStack(TC_Aspects.AURAM, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.PERMUTATIO, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 10L) + ), + null, + new Object[] { + "research.ESSENTIA_UPGRADE_BLANK.page.0", + addArcaneCraftingRecipe( + "ESSENTIA_UPGRADE_BLANK", + ItemRefer.Essentia_Upgrade_Empty.get(1), + new AspectList().add(Aspect.AIR, 80).add(Aspect.ENTROPY, 50).add(Aspect.ORDER, 50).add(Aspect.WATER, 80), + "AMB","CZD","EIF", + 'A', GT_OreDictUnificator.get(OrePrefixes.screw, Materials.InfusedAir, 1), + 'B', GT_OreDictUnificator.get(OrePrefixes.screw, Materials.InfusedEarth, 1), + 'C', GT_OreDictUnificator.get(OrePrefixes.screw, Materials.InfusedFire, 1), + 'D', GT_OreDictUnificator.get(OrePrefixes.screw, Materials.InfusedWater, 1), + 'E', GT_OreDictUnificator.get(OrePrefixes.screw, Materials.InfusedOrder, 1), + 'F', GT_OreDictUnificator.get(OrePrefixes.screw, Materials.InfusedEntropy, 1), + 'M', new ItemStack(ConfigItems.itemResource, 1, 10), + 'Z', broad, + 'I', GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.PulsatingIron, 1) + ), + } + ); + GregTech_API.sThaumcraftCompat.addResearch( + "ESSENTIA_UPGRADE_AIR", + "Essentia: AIR", + "I can feel it on the wind.", + new String[]{"ESSENTIA_UPGRADE_BLANK"}, + "ARTIFICE", + ItemRefer.Essentia_Upgrade_Air.get(1), + 1, 0, -9, 5, + Arrays.asList( + new TC_Aspects.TC_AspectStack(TC_Aspects.AER, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.PERMUTATIO, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 10L) + ), + null, + new Object[] { + "research.ESSENTIA_UPGRADE_AIR.page.0", + GregTech_API.sThaumcraftCompat.addInfusionRecipe( + "ESSENTIA_UPGRADE_AIR", + ItemRefer.Essentia_Upgrade_Empty.get(1), + new ItemStack[] { + GT_OreDictUnificator.get(OrePrefixes.cell, Materials.LiquidAir, 1), + GT_OreDictUnificator.get(OrePrefixes.cell, Materials.Hydrogen, 1), + GT_OreDictUnificator.get(OrePrefixes.cell, Materials.Helium, 1), + GT_OreDictUnificator.get(OrePrefixes.cell, Materials.Argon, 1), + WerkstoffLoader.Neon.get(OrePrefixes.cell, 1), + WerkstoffLoader.Krypton.get(OrePrefixes.cell, 1), + }, + ItemRefer.Essentia_Upgrade_Air.get(1), + 5, + Arrays.asList( + new TC_Aspects.TC_AspectStack(TC_Aspects.AER, 128), + new TC_Aspects.TC_AspectStack(TC_Aspects.VOLATUS, 128), + new TC_Aspects.TC_AspectStack(TC_Aspects.MOTUS, 128), + new TC_Aspects.TC_AspectStack(TC_Aspects.AURAM, 128) + ) + ), + "research.ESSENTIA_UPGRADE_AIR.page.1" + } + ); + GregTech_API.sThaumcraftCompat.addResearch( + "ESSENTIA_UPGRADE_THERMAL", + "Essentia: THERMAL", + "Melting down.", + new String[]{"ESSENTIA_UPGRADE_BLANK"}, + "ARTIFICE", + ItemRefer.Essentia_Upgrade_Thermal.get(1), + 1, 0, -10, 5, + Arrays.asList( + new TC_Aspects.TC_AspectStack(TC_Aspects.IGNIS, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.PERMUTATIO, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 10L) + ), + null, + new Object[] { + "research.ESSENTIA_UPGRADE_THERMAL.page.0", + GregTech_API.sThaumcraftCompat.addInfusionRecipe( + "ESSENTIA_UPGRADE_THERMAL", + ItemRefer.Essentia_Upgrade_Empty.get(1), + new ItemStack[] { + GT_OreDictUnificator.get(OrePrefixes.lens, Materials.Firestone, 1), + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Netherrack, 1), + Ic2Items.reactorPlatingHeat, + ItemList.Casing_Coil_Nichrome.get(1), + new ItemStack(ConfigItems.itemResource, 1, 1), + new ItemStack(ConfigItems.itemResource, 1, 0), + }, + ItemRefer.Essentia_Upgrade_Thermal.get(1), + 5, + Collections.singletonList( + new TC_Aspects.TC_AspectStack(TC_Aspects.IGNIS, 1024) + ) + ), + "research.ESSENTIA_UPGRADE_THERMAL.page.1", + "research.ESSENTIA_UPGRADE_THERMAL.page.2" + } + ); + GregTech_API.sThaumcraftCompat.addResearch( + "ESSENTIA_UPGRADE_UNSTABLE", + "Essentia: UNSTABLE", + "Heart of chaos.", + new String[]{"ESSENTIA_UPGRADE_BLANK"}, + "ARTIFICE", + ItemRefer.Essentia_Upgrade_Unstable.get(1), + 1, 0, -11, 5, + Arrays.asList( + new TC_Aspects.TC_AspectStack(TC_Aspects.PERDITIO, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.PERMUTATIO, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 10L) + ), + null, + new Object[] { + "research.ESSENTIA_UPGRADE_UNSTABLE.page.0", + GregTech_API.sThaumcraftCompat.addInfusionRecipe( + "ESSENTIA_UPGRADE_UNSTABLE", + ItemRefer.Essentia_Upgrade_Empty.get(1), + new ItemStack[] { + GT_OreDictUnificator.get(OrePrefixes.cell, Materials.GasolinePremium, 1), + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Unstable, 1), + GT_OreDictUnificator.get(OrePrefixes.gearGt, Materials.Void, 1), + GT_OreDictUnificator.get(OrePrefixes.gem, Materials.InfusedEntropy, 1), + Ic2Items.industrialTnt, + new ItemStack(ItemRegistry.DESTRUCTOPACK) + }, + ItemRefer.Essentia_Upgrade_Unstable.get(1), + 6, + Arrays.asList( + new TC_Aspects.TC_AspectStack(TC_Aspects.PERDITIO, 128), + new TC_Aspects.TC_AspectStack(TC_Aspects.VACUOS, 128), + new TC_Aspects.TC_AspectStack(TC_Aspects.VENENUM, 128), + new TC_Aspects.TC_AspectStack(TC_Aspects.TELUM, 128) + ) + ), + "research.ESSENTIA_UPGRADE_UNSTABLE.page.1", + "research.ESSENTIA_UPGRADE_UNSTABLE.page.2" + } + ); + ItemStack meatDust = GT_OreDictUnificator.get(OrePrefixes.dust, Materials.MeatRaw, 1); + if (Loader.isModLoaded("dreamcraft")) meatDust = GT_ModHandler.getModItem("dreamcraft", "GTNHBioItems", 1, 2); + GregTech_API.sThaumcraftCompat.addResearch( + "ESSENTIA_UPGRADE_VICTUS", + "Essentia: VICTUS", + "Will it bleed?", + new String[]{"ESSENTIA_UPGRADE_BLANK"}, + "ARTIFICE", + ItemRefer.Essentia_Upgrade_Victus.get(1), + 1, 0, -12, 5, + Arrays.asList( + new TC_Aspects.TC_AspectStack(TC_Aspects.VICTUS, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.PERMUTATIO, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 10L) + ), + null, + new Object[] { + "research.ESSENTIA_UPGRADE_VICTUS.page.0", + GregTech_API.sThaumcraftCompat.addInfusionRecipe( + "ESSENTIA_UPGRADE_VICTUS", + ItemRefer.Essentia_Upgrade_Empty.get(1), + new ItemStack[] { + meatDust, + ItemList.Food_Dough_Sugar.get(1), + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Calcium, 1), + new ItemStack(Item.getItemById(367), 1), + new ItemStack(ConfigItems.itemResource, 1, 4), + new ItemStack(ConfigBlocks.blockMetalDevice, 1, 8), + }, + ItemRefer.Essentia_Upgrade_Victus.get(1), + 5, + Arrays.asList( + new TC_Aspects.TC_AspectStack(TC_Aspects.VICTUS, 128), + new TC_Aspects.TC_AspectStack(TC_Aspects.SPIRITUS, 128), + new TC_Aspects.TC_AspectStack(TC_Aspects.SANO, 128), + new TC_Aspects.TC_AspectStack(TC_Aspects.CORPUS, 128), + new TC_Aspects.TC_AspectStack(TC_Aspects.HUMANUS, 128) + ) + ), + "research.ESSENTIA_UPGRADE_VICTUS.page.1", + "research.ESSENTIA_UPGRADE_VICTUS.page.2" + } + ); + GregTech_API.sThaumcraftCompat.addResearch( + "ESSENTIA_UPGRADE_TAINTED", + "Essentia: TAINTED", + "Dirty Deeds Done Dirt Cheap", + new String[]{"ESSENTIA_UPGRADE_BLANK"}, + "ARTIFICE", + ItemRefer.Essentia_Upgrade_Tainted.get(1), + 1, 0, -13, 5, + Arrays.asList( + new TC_Aspects.TC_AspectStack(TC_Aspects.MORTUUS, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.PERMUTATIO, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 10L) + ), + null, + new Object[] { + "research.ESSENTIA_UPGRADE_TAINTED.page.0", + "research.ESSENTIA_UPGRADE_TAINTED.page.1", + GregTech_API.sThaumcraftCompat.addInfusionRecipe( + "ESSENTIA_UPGRADE_TAINTED", + ItemRefer.Essentia_Upgrade_Empty.get(1), + new ItemStack[] { + new ItemStack(ConfigBlocks.blockTaintFibres, 1, 0), + new ItemStack(ConfigBlocks.blockTaintFibres, 1, 2), + new ItemStack(ConfigItems.itemResource, 1, 11), + GT_OreDictUnificator.get(OrePrefixes.spring, Materials.NaquadahEnriched, 1), + GT_OreDictUnificator.get(OrePrefixes.gearGt, Materials.EndSteel, 1), + new ItemStack(Block.getBlockById(138), 1), + }, + ItemRefer.Essentia_Upgrade_Tainted.get(1), + 7, + Arrays.asList( + new TC_Aspects.TC_AspectStack(TC_Aspects.MORTUUS, 128), + new TC_Aspects.TC_AspectStack(TC_Aspects.ALIENIS, 128), + new TC_Aspects.TC_AspectStack(TC_Aspects.EXANIMIS, 128), + new TC_Aspects.TC_AspectStack(TC_Aspects.VITIUM, 128) + ) + ), + "research.ESSENTIA_UPGRADE_TAINTED.page.2", + "research.ESSENTIA_UPGRADE_TAINTED.page.3" + } + ); + GregTech_API.sThaumcraftCompat.addResearch( + "ESSENTIA_UPGRADE_MECHANICS", + "Essentia: MECHANICS", + "Driven by Ether.", + new String[]{"ESSENTIA_UPGRADE_BLANK"}, + "ARTIFICE", + ItemRefer.Essentia_Upgrade_Mechanics.get(1), + 1, 0, -14, 5, + Arrays.asList( + new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.PERMUTATIO, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 10L) + ), + null, + new Object[] { + "research.ESSENTIA_UPGRADE_MECHANICS.page.0", + GregTech_API.sThaumcraftCompat.addInfusionRecipe( + "ESSENTIA_UPGRADE_MECHANICS", + ItemRefer.Essentia_Upgrade_Empty.get(1), + new ItemStack[] { + new ItemStack(ConfigBlocks.blockTube, 1, 4), + new ItemStack(ConfigBlocks.blockTube, 1, 2), + GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.VividAlloy, 1), + GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.Polybenzimidazole, 1), + ItemList.Electric_Motor_IV.get(1), + ItemList.Electric_Pump_IV.get(1), + }, + ItemRefer.Essentia_Upgrade_Mechanics.get(1), + 5, + Arrays.asList( + new TC_Aspects.TC_AspectStack(TC_Aspects.ITER, 128), + new TC_Aspects.TC_AspectStack(TC_Aspects.LIMUS, 128), + new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 128) + ) + ), + "research.ESSENTIA_UPGRADE_MECHANICS.page.1", + "research.ESSENTIA_UPGRADE_MECHANICS.page.2" + } + ); + GregTech_API.sThaumcraftCompat.addResearch( + "ESSENTIA_UPGRADE_SPRITE", + "Essentia: SPRITE", + "Brain in a Machine.", + new String[]{"ESSENTIA_UPGRADE_BLANK"}, + "ARTIFICE", + ItemRefer.Essentia_Upgrade_Spirit.get(1), + 1, 0, -15, 5, + Arrays.asList( + new TC_Aspects.TC_AspectStack(TC_Aspects.COGNITIO, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.PERMUTATIO, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 10L) + ), + null, + new Object[] { + "research.ESSENTIA_UPGRADE_SPRITE.page.0", + GregTech_API.sThaumcraftCompat.addInfusionRecipe( + "ESSENTIA_UPGRADE_SPRITE", + ItemRefer.Essentia_Upgrade_Empty.get(1), + new ItemStack[] { + new ItemStack(ConfigBlocks.blockJar, 1, 1), + GT_OreDictUnificator.get(OrePrefixes.food, Materials.Cheese, 1), + GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.Shadow, 1), + GT_OreDictUnificator.get(OrePrefixes.spring, Materials.FierySteel, 1), + GT_OreDictUnificator.get(OrePrefixes.cell, Materials.Milk, 1), + ItemList.Machine_EV_Scanner.get(1) + }, + ItemRefer.Essentia_Upgrade_Spirit.get(1), + 5, + Arrays.asList( + new TC_Aspects.TC_AspectStack(TC_Aspects.COGNITIO, 128), + new TC_Aspects.TC_AspectStack(TC_Aspects.SENSUS, 128), + new TC_Aspects.TC_AspectStack(TC_Aspects.LUCRUM, 128), + new TC_Aspects.TC_AspectStack(TC_Aspects.STRONTIO, 128), + new TC_Aspects.TC_AspectStack(TC_Aspects.NEBRISUM, 128) + ) + ), + "research.ESSENTIA_UPGRADE_SPRITE.page.1", + "research.ESSENTIA_UPGRADE_SPRITE.page.2" + } + ); + GregTech_API.sThaumcraftCompat.addResearch( + "ESSENTIA_UPGRADE_RADIATION", + "Essentia: RADIATION", + "Atomic Heart", + new String[]{"ESSENTIA_UPGRADE_BLANK"}, + "ARTIFICE", + ItemRefer.Essentia_Upgrade_Radiation.get(1), + 1, 0, -16, 5, + Arrays.asList( + new TC_Aspects.TC_AspectStack(TC_Aspects.RADIO, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.PERMUTATIO, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 10L) + ), + null, + new Object[] { + "research.ESSENTIA_UPGRADE_RADIATION.page.0", + GregTech_API.sThaumcraftCompat.addInfusionRecipe( + "ESSENTIA_UPGRADE_RADIATION", + ItemRefer.Essentia_Upgrade_Empty.get(1), + new ItemStack[] { + ItemRefer.High_Density_Plutonium.get(1), + ItemRefer.High_Density_Uranium.get(1), + ItemRefer.High_Density_Thorium.get(1), + Ic2Items.UranFuel, + Ic2Items.MOXFuel, + WerkstoffLoader.Tiberium.get(OrePrefixes.gem, 1) + }, + ItemRefer.Essentia_Upgrade_Radiation.get(1), + 8, + Collections.singletonList( + new TC_Aspects.TC_AspectStack(TC_Aspects.RADIO, 1024) + ) + ), + "research.ESSENTIA_UPGRADE_RADIATION.page.1", + "research.ESSENTIA_UPGRADE_RADIATION.page.2" + } + ); + GregTech_API.sThaumcraftCompat.addResearch( + "ESSENTIA_UPGRADE_ELECTRIC", + "Essentia: ELECTRIC", + "Get electricity from... electricity?", + new String[]{"ESSENTIA_UPGRADE_AIR", "ESSENTIA_UPGRADE_THERMAL", "ESSENTIA_UPGRADE_UNSTABLE", "ESSENTIA_UPGRADE_VICTUS", "ESSENTIA_UPGRADE_TAINTED", "ESSENTIA_UPGRADE_MECHANICS", "ESSENTIA_UPGRADE_SPRITE", "ESSENTIA_UPGRADE_RADIATION"}, + "ARTIFICE", + ItemRefer.Essentia_Upgrade_Electric.get(1), + 1, 0, -12, 7, + Arrays.asList( + new TC_Aspects.TC_AspectStack(TC_Aspects.PERMUTATIO, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 10L), + new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 10L) + ), + null, + new Object[] { + "research.ESSENTIA_UPGRADE_ELECTRIC.page.0", + GregTech_API.sThaumcraftCompat.addInfusionRecipe( + "ESSENTIA_UPGRADE_RADIATION", + ItemRefer.Essentia_Upgrade_Empty.get(1), + new ItemStack[] { + GT_OreDictUnificator.get(OrePrefixes.wireGt01, Materials.SuperconductorMV, 1), + GT_OreDictUnificator.get(OrePrefixes.wireGt01, Materials.SuperconductorHV, 1), + GT_OreDictUnificator.get(OrePrefixes.wireGt01, Materials.SuperconductorEV, 1), + GT_OreDictUnificator.get(OrePrefixes.wireGt01, Materials.SuperconductorIV, 1), + GT_OreDictUnificator.get(OrePrefixes.wireGt01, Materials.SuperconductorLuV, 1), + GT_OreDictUnificator.get(OrePrefixes.wireGt01, Materials.SuperconductorZPM, 1) + }, + ItemRefer.Essentia_Upgrade_Electric.get(1), + 10, + Collections.singletonList( + new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 32768) + ) + ), + "research.ESSENTIA_UPGRADE_ELECTRIC.page.1" } ); } diff --git a/src/main/java/GoodGenerator/Items/MyItemBlocks.java b/src/main/java/GoodGenerator/Items/MyItemBlocks.java index c4a71f6834..151401708a 100644 --- a/src/main/java/GoodGenerator/Items/MyItemBlocks.java +++ b/src/main/java/GoodGenerator/Items/MyItemBlocks.java @@ -12,12 +12,15 @@ import net.minecraft.item.ItemBlock; import GoodGenerator.Main.GoodGenerator; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; import java.util.Arrays; import java.util.Collections; import java.util.List; +import static GoodGenerator.Loader.Loaders.essentiaCell; import static GoodGenerator.Loader.Loaders.yottaFluidTankCell; +import static GoodGenerator.util.CharExchanger.tierName; public class MyItemBlocks extends ItemBlock { private final String mNoMobsToolTip = GT_LanguageManager.addStringLocalization("gt.nomobspawnsonthisblock", "Mobs cannot Spawn on this Block"); @@ -77,7 +80,11 @@ public class MyItemBlocks extends ItemBlock { cap.append(" 1000000"); for (int i = 0; i < p_77624_1_.getItemDamage(); i++) cap.append("00"); cap.append(" L"); - p_77624_3_.add(DescTextLocalization.addText("YOTTankCell.tooltip", 1)[0] + CharExchanger.formatNumber(cap.toString())); + p_77624_3_.add(StatCollector.translateToLocal("YOTTankCell.tooltip.0") + CharExchanger.formatNumber(cap.toString())); + } + + if (Block.getBlockFromItem(p_77624_1_.getItem()).equals(essentiaCell)) { + p_77624_3_.add(StatCollector.translateToLocal("hatchTier.tooltip.0") + " " + tierName[p_77624_1_.getItemDamage() + 3]); } } } diff --git a/src/main/java/GoodGenerator/Loader/Loaders.java b/src/main/java/GoodGenerator/Loader/Loaders.java index 49025433c0..b25846117b 100644 --- a/src/main/java/GoodGenerator/Loader/Loaders.java +++ b/src/main/java/GoodGenerator/Loader/Loaders.java @@ -9,6 +9,8 @@ import GoodGenerator.Blocks.TEs.*; import GoodGenerator.Blocks.TEs.MetaTE.NeutronAccelerator; import GoodGenerator.Blocks.TEs.MetaTE.NeutronSensor; import GoodGenerator.CrossMod.NEI.IMCForNEI; +import GoodGenerator.CrossMod.NEI.NEI_Config; +import GoodGenerator.CrossMod.Thaumcraft.LargeEssentiaEnergyData; import GoodGenerator.Items.MyItemBlocks; import GoodGenerator.Items.MyItems; import GoodGenerator.Items.RadioactiveItem; @@ -31,6 +33,8 @@ public class Loaders { public static final int IDOffset = 32001; public static final byte GoodGeneratorTexturePage = 12; + public static final Item _null_ = new MyItems("_null_", null); + public static final Item radiationProtectionPlate = new MyItems("radiationProtectionPlate", GoodGenerator.GG); public static final Item wrappedUraniumIngot = new MyItems("wrappedUraniumIngot", GoodGenerator.GG); public static final Item highDensityUraniumNugget = new RadioactiveItem("highDensityUraniumNugget", GoodGenerator.GG, 200); @@ -58,6 +62,7 @@ public class Loaders { public static final Item naquadriaMass = new MyItems("naquadriaMass", addText("naquadriaMass.tooltip", 1), GoodGenerator.GG); public static final Item advancedFuelRod = new MyItems("advancedFuelRod", GoodGenerator.GG); public static final Item fluidCore = new MyItems("fluidCore", GoodGenerator.GG, new String[]{GoodGenerator.MOD_ID+":fluidCore/1", GoodGenerator.MOD_ID+":fluidCore/2", GoodGenerator.MOD_ID+":fluidCore/3", GoodGenerator.MOD_ID+":fluidCore/4", GoodGenerator.MOD_ID+":fluidCore/5", GoodGenerator.MOD_ID+":fluidCore/6"}); + public static final Item upgradeEssentia = new MyItems("upgradeEssentia", GoodGenerator.GG, new String[]{GoodGenerator.MOD_ID+":upgradeEssentia/null", GoodGenerator.MOD_ID+":upgradeEssentia/air", GoodGenerator.MOD_ID+":upgradeEssentia/thermal", GoodGenerator.MOD_ID+":upgradeEssentia/unstable", GoodGenerator.MOD_ID+":upgradeEssentia/victus", GoodGenerator.MOD_ID+":upgradeEssentia/tainted", GoodGenerator.MOD_ID+":upgradeEssentia/mechanics", GoodGenerator.MOD_ID+":upgradeEssentia/spirit", GoodGenerator.MOD_ID+":upgradeEssentia/radiation", GoodGenerator.MOD_ID+":upgradeEssentia/electric"}); public static final Block MAR_Casing = new Casing("MAR_Casing", new String[]{GoodGenerator.MOD_ID+":MAR_Casing"}); public static final Block FRF_Casings = new Casing("FRF_Casing", new String[]{"gregtech:iconsets/MACHINE_CASING_MINING_BLACKPLUTONIUM"}); @@ -69,7 +74,7 @@ public class Loaders { public static final Block rawCylinder = new Casing("rawCylinder", new String[]{GoodGenerator.MOD_ID+":rawCylinder"}); public static final Block titaniumPlatedCylinder = new Casing("titaniumPlatedCylinder", new String[]{GoodGenerator.MOD_ID+":titaniumPlatedCylinder"}); public static final Block magicCasing = new Casing("magicCasing", new String[]{GoodGenerator.MOD_ID+":MagicCasing"}); - public static final Block essentiaCell = new Casing("essentiaCell", new String[]{GoodGenerator.MOD_ID+":essentiaCell/1",GoodGenerator.MOD_ID+":essentiaCell/2",GoodGenerator.MOD_ID+":essentiaCell/3"}); + public static final Block essentiaCell = new Casing("essentiaCell", new String[]{GoodGenerator.MOD_ID+":essentiaCell/1",GoodGenerator.MOD_ID+":essentiaCell/2",GoodGenerator.MOD_ID+":essentiaCell/3",GoodGenerator.MOD_ID+":essentiaCell/4"}); public static final Block speedingPipe = new ComplexTextureCasing("speedingPipe", new String[]{GoodGenerator.MOD_ID+":speedingPipe_SIDE"}, new String[]{GoodGenerator.MOD_ID+":speedingPipe_TOP"}); public static final Block yottaFluidTankCell = new Casing("yottaFluidTankCell", new String[]{GoodGenerator.MOD_ID+":yottaFluidTankCell/1", GoodGenerator.MOD_ID+":yottaFluidTankCell/2", GoodGenerator.MOD_ID+":yottaFluidTankCell/3", GoodGenerator.MOD_ID+":yottaFluidTankCell/4", GoodGenerator.MOD_ID+":yottaFluidTankCell/5", GoodGenerator.MOD_ID+":yottaFluidTankCell/6", GoodGenerator.MOD_ID+":yottaFluidTankCell/7", GoodGenerator.MOD_ID+":yottaFluidTankCell/8", GoodGenerator.MOD_ID+":yottaFluidTankCell/9", GoodGenerator.MOD_ID+":yottaFluidTankCell/10",}); @@ -99,7 +104,11 @@ public class Loaders { Loaders.YFT = new YottaFluidTank(IDOffset + 13, "YottaFluidTank", "YOTTank").getStackForm(1L); } - public static void Register(){ + public static void Register() { + + GameRegistry.registerItem(_null_, "_null_", GoodGenerator.MOD_ID); + NEI_Config.hide(_null_); + GameRegistry.registerBlock(MAR_Casing, MyItemBlocks.class, "MAR_Casing"); GameRegistry.registerBlock(radiationProtectionSteelFrame, MyItemBlocks.class, "radiationProtectionSteelFrame"); GameRegistry.registerBlock(fieldRestrictingGlass, MyItemBlocks.class, "fieldRestrictingGlass"); @@ -143,6 +152,8 @@ public class Loaders { public static void compactMod() { if (Loader.isModLoaded("Thaumcraft")) { + LargeEssentiaEnergyData.processEssentiaData(); + GameRegistry.registerItem(upgradeEssentia, "upgradeEssentia", GoodGenerator.MOD_ID); GameRegistry.registerTileEntity(EssentiaHatch.class, "EssentiaHatch"); Loaders.LEG = new LargeEssentiaGenerator(IDOffset + 1, "LargeEssentiaGenerator", "Large Essentia Generator").getStackForm(1L); essentiaHatch = new TEBlock("essentiaHatch", new String[]{GoodGenerator.MOD_ID + ":essentiaHatch"}, 1); diff --git a/src/main/java/GoodGenerator/Loader/NeutronActivatorLoader.java b/src/main/java/GoodGenerator/Loader/NeutronActivatorLoader.java index cda6c79edb..97477963c7 100644 --- a/src/main/java/GoodGenerator/Loader/NeutronActivatorLoader.java +++ b/src/main/java/GoodGenerator/Loader/NeutronActivatorLoader.java @@ -12,14 +12,14 @@ public class NeutronActivatorLoader { public static void NARecipeLoad() { MyRecipeAdder.instance.addNeutronActivatorRecipe( new FluidStack[]{ - thoriumBasedLiquidFuel.getFluidOrGas(200) + thoriumBasedLiquidFuelExcited.getFluidOrGas(200) }, null, new FluidStack[]{ thoriumBasedLiquidFuelDepleted.getFluidOrGas(200) }, null, - 40, + 20000, 700, 500 ); diff --git a/src/main/java/GoodGenerator/Main/GG_Config_Loader.java b/src/main/java/GoodGenerator/Main/GG_Config_Loader.java index f3bf69752c..1fbab02516 100644 --- a/src/main/java/GoodGenerator/Main/GG_Config_Loader.java +++ b/src/main/java/GoodGenerator/Main/GG_Config_Loader.java @@ -11,11 +11,11 @@ public class GG_Config_Loader { public static int LiquidAirConsumptionPerSecond = 2400; public static int[] NaquadahFuelVoltage = new int[]{ - 12960, 9800, 32400, 220000, + 12960, 2200, 32400, 220000, 380000, 9511000, 88540000, 399576000 }; public static int[] NaquadahFuelTime = new int[]{ - 100, 200, 150, 20, 20, 80, 100, 160 + 100, 500, 150, 20, 20, 80, 100, 160 }; public static int[] CoolantEfficiency = new int[]{ 275, 150, 105 diff --git a/src/main/java/GoodGenerator/util/CharExchanger.java b/src/main/java/GoodGenerator/util/CharExchanger.java index f7f0927243..7c77dcae6c 100644 --- a/src/main/java/GoodGenerator/util/CharExchanger.java +++ b/src/main/java/GoodGenerator/util/CharExchanger.java @@ -1,7 +1,23 @@ package GoodGenerator.util; +import net.minecraft.util.EnumChatFormatting; + public class CharExchanger { + public static final String[] tierName = new String[] { + EnumChatFormatting.RED + "ULV" + EnumChatFormatting.RESET, + EnumChatFormatting.GRAY + "LV" + EnumChatFormatting.RESET, + EnumChatFormatting.AQUA + "MV" + EnumChatFormatting.RESET, + EnumChatFormatting.GOLD + "HV" + EnumChatFormatting.RESET, + EnumChatFormatting.DARK_PURPLE + "EV" + EnumChatFormatting.RESET, + EnumChatFormatting.DARK_BLUE + "IV" + EnumChatFormatting.RESET, + EnumChatFormatting.LIGHT_PURPLE + "LuV" + EnumChatFormatting.RESET, + EnumChatFormatting.WHITE + "ZPM" + EnumChatFormatting.RESET, + EnumChatFormatting.DARK_AQUA + "UV" + EnumChatFormatting.RESET, + EnumChatFormatting.DARK_RED + "UHV" + EnumChatFormatting.RESET, + EnumChatFormatting.GREEN + "UEV" + EnumChatFormatting.RESET, + }; + public static char shifter(int unicode){ return (char)unicode; } diff --git a/src/main/java/GoodGenerator/util/ItemRefer.java b/src/main/java/GoodGenerator/util/ItemRefer.java index a5bb66ecfb..500cd128f2 100644 --- a/src/main/java/GoodGenerator/util/ItemRefer.java +++ b/src/main/java/GoodGenerator/util/ItemRefer.java @@ -1,17 +1,17 @@ package GoodGenerator.util; import gregtech.api.util.GT_Utility; -import ic2.api.reactor.IReactorComponent; import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import static GoodGenerator.Loader.FuelRodLoader.*; import static GoodGenerator.Loader.Loaders.*; public final class ItemRefer { + public static ItemRefer NULL = getItemStack(_null_); + public static ItemRefer Radiation_Protection_Plate = getItemStack(radiationProtectionPlate); public static ItemRefer Wrapped_Uranium_Ingot = getItemStack(wrappedUraniumIngot); public static ItemRefer High_Density_Uranium_Nugget = getItemStack(highDensityUraniumNugget); @@ -56,7 +56,16 @@ public final class ItemRefer { public static ItemRefer Fluid_Storage_Core_T4 = getItemStack(fluidCore, 3); public static ItemRefer Fluid_Storage_Core_T5 = getItemStack(fluidCore, 4); public static ItemRefer Fluid_Storage_Core_T6 = getItemStack(fluidCore, 5); - + public static ItemRefer Essentia_Upgrade_Empty = getItemStack(upgradeEssentia, 0); + public static ItemRefer Essentia_Upgrade_Air = getItemStack(upgradeEssentia, 1); + public static ItemRefer Essentia_Upgrade_Thermal = getItemStack(upgradeEssentia, 2); + public static ItemRefer Essentia_Upgrade_Unstable = getItemStack(upgradeEssentia, 3); + public static ItemRefer Essentia_Upgrade_Victus = getItemStack(upgradeEssentia, 4); + public static ItemRefer Essentia_Upgrade_Tainted = getItemStack(upgradeEssentia, 5); + public static ItemRefer Essentia_Upgrade_Mechanics = getItemStack(upgradeEssentia, 6); + public static ItemRefer Essentia_Upgrade_Spirit = getItemStack(upgradeEssentia, 7); + public static ItemRefer Essentia_Upgrade_Radiation = getItemStack(upgradeEssentia, 8); + public static ItemRefer Essentia_Upgrade_Electric = getItemStack(upgradeEssentia, 9); public static ItemRefer Field_Restriction_Casing = getItemStack(MAR_Casing); public static ItemRefer Naquadah_Fuel_Refinery_Casing = getItemStack(FRF_Casings); @@ -72,6 +81,7 @@ public final class ItemRefer { public static ItemRefer Essentia_Cell_T1 = getItemStack(essentiaCell, 0); public static ItemRefer Essentia_Cell_T2 = getItemStack(essentiaCell, 1); public static ItemRefer Essentia_Cell_T3 = getItemStack(essentiaCell, 2); + public static ItemRefer Essentia_Cell_T4 = getItemStack(essentiaCell, 3); public static ItemRefer Essentia_Hatch = getItemStack(essentiaHatch); public static ItemRefer YOTTank_Casing = getItemStack(yottaFluidTankCasing); public static ItemRefer YOTTank_Cell_T1 = getItemStack(yottaFluidTankCell, 0); @@ -97,7 +107,7 @@ public final class ItemRefer { private int mMeta = 0; private static ItemRefer getItemStack(ItemStack itemStack) { - if (itemStack == null) return null; + if (itemStack == null) return NULL; return new ItemRefer(itemStack); } @@ -106,7 +116,7 @@ public final class ItemRefer { } private static ItemRefer getItemStack(Item item, int meta) { - if (item == null) return null; + if (item == null) return NULL; return new ItemRefer(item, meta); } @@ -115,7 +125,7 @@ public final class ItemRefer { } private static ItemRefer getItemStack(Block block, int meta) { - if (block == null) return null; + if (block == null) return NULL; return new ItemRefer(block, meta); } @@ -134,9 +144,9 @@ public final class ItemRefer { } public ItemStack get(int amount){ - if (mItem != null) return new ItemStack(mItem, amount, mMeta); + if (mItem != null ) return new ItemStack(mItem, amount, mMeta); if (mBlock != null) return new ItemStack(mBlock, amount, mMeta); if (mItemStack != null) return GT_Utility.copyAmount(amount, mItemStack); - return null; + return new ItemStack(_null_, amount, 0); } } diff --git a/src/main/java/GoodGenerator/util/StructureHelper.java b/src/main/java/GoodGenerator/util/StructureHelper.java index 4dcbc3f679..bce7402035 100644 --- a/src/main/java/GoodGenerator/util/StructureHelper.java +++ b/src/main/java/GoodGenerator/util/StructureHelper.java @@ -80,6 +80,7 @@ public class StructureHelper { if (aBlock == tBlock) { Integer currentMeta = aGetTheFuckingMeta.apply(t); int newMeta = tBlock.getDamageValue(world, x, y, z) + 1; + if (newMeta > maxMeta) return false; if (currentMeta == 0) { return aSetTheFuckingMeta.test(t, newMeta); } else { @@ -103,7 +104,7 @@ public class StructureHelper { private int getMeta(ItemStack trigger) { int meta = trigger.stackSize; if (meta <= 0) meta = 0; - if (meta > maxMeta) meta = maxMeta; + if (meta >= maxMeta) meta = maxMeta - 1; return meta; } }; diff --git a/src/main/resources/assets/goodgenerator/data/essentia.json b/src/main/resources/assets/goodgenerator/data/essentia.json new file mode 100644 index 0000000000..f718e9a629 --- /dev/null +++ b/src/main/resources/assets/goodgenerator/data/essentia.json @@ -0,0 +1,418 @@ +{ + "Essentia": [ + { + "name": "Aer", + "fuelValue": 1000, + "category": "AIR", + "consumeCeo": 1.0 + }, + { + "name": "Terra", + "fuelValue": 800, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Ignis", + "fuelValue": 16000, + "category": "THERMAL", + "consumeCeo": 1.0 + }, + { + "name": "Aqua", + "fuelValue": 5000, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Ordo", + "fuelValue": 12000, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Perditio", + "fuelValue": 4500, + "category": "UNSTABLE", + "consumeCeo": 1.0 + }, + { + "name": "Vacuos", + "fuelValue": 8200, + "category": "UNSTABLE", + "consumeCeo": 1.5 + }, + { + "name": "Lux", + "fuelValue": 13000, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Lux", + "fuelValue": 13000, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Tempestas", + "fuelValue": 61200, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Motus", + "fuelValue": 20000, + "category": "AIR", + "consumeCeo": 0.5 + }, + { + "name": "Gelum", + "fuelValue": 3900, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Vitreus", + "fuelValue": 2000, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Victus", + "fuelValue": 20000, + "category": "VICTUS", + "consumeCeo": 1.0 + }, + { + "name": "Venenum", + "fuelValue": 17000, + "category": "UNSTABLE", + "consumeCeo": 2.0 + }, + { + "name": "Potentia", + "fuelValue": 25600, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Permutatio", + "fuelValue": 6000, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Metallum", + "fuelValue": 2600, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Mortuus", + "fuelValue": 7200, + "category": "TAINTED", + "consumeCeo": 1.0 + }, + { + "name": "Volatus", + "fuelValue": 56000, + "category": "AIR", + "consumeCeo": 2.0 + }, + { + "name": "Tenebrae", + "fuelValue": 9000, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Spiritus", + "fuelValue": 37600, + "category": "VICTUS", + "consumeCeo": 0.7 + }, + { + "name": "Sano", + "fuelValue": 24600, + "category": "VICTUS", + "consumeCeo": 1.2 + }, + { + "name": "Iter", + "fuelValue": 16000, + "category": "MECHANICS", + "consumeCeo": 1.0 + }, + { + "name": "Alienis", + "fuelValue": 9700, + "category": "TAINTED", + "consumeCeo": 1.7 + }, + { + "name": "Praecantatio", + "fuelValue": 36000, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Auram", + "fuelValue": 42000, + "category": "AIR", + "consumeCeo": 2.7 + }, + { + "name": "Vitium", + "fuelValue": 4700, + "category": "TAINTED", + "consumeCeo": 10.0 + }, + { + "name": "Limus", + "fuelValue": 11800, + "category": "MECHANICS", + "consumeCeo": 1.0 + }, + { + "name": "Herba", + "fuelValue": 2600, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Arbor", + "fuelValue": 4500, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Bestia", + "fuelValue": 1000, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Corpus", + "fuelValue": 5200, + "category": "VICTUS", + "consumeCeo": 0.9 + }, + { + "name": "Corpus", + "fuelValue": 5200, + "category": "VICTUS", + "consumeCeo": 0.9 + }, + { + "name": "Exanimis", + "fuelValue": 9000, + "category": "TAINTED", + "consumeCeo": 1.2 + }, + { + "name": "Cognitio", + "fuelValue": 2200, + "category": "SPRITE", + "consumeCeo": 1.2 + }, + { + "name": "Sensus", + "fuelValue": 1400, + "category": "SPRITE", + "consumeCeo": 0.7 + }, + { + "name": "Humanus", + "fuelValue": 16700, + "category": "VICTUS", + "consumeCeo": 1.3 + }, + { + "name": "Messis", + "fuelValue": 9800, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Perfodio", + "fuelValue": 1300, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Instrumentum", + "fuelValue": 1200, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Meto", + "fuelValue": 3600, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Telum", + "fuelValue": 14200, + "category": "UNSTABLE", + "consumeCeo": 2.5 + }, + { + "name": "Tutamen", + "fuelValue": 6200, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Fames", + "fuelValue": 17600, + "category": "VICTUS", + "consumeCeo": 1.1 + }, + { + "name": "Lucrum", + "fuelValue": 6000, + "category": "SPRITE", + "consumeCeo": 2.0 + }, + { + "name": "Fabrico", + "fuelValue": 1100, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Pannus", + "fuelValue": 600, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Machina", + "fuelValue": 61200, + "category": "MECHANICS", + "consumeCeo": 1.0 + }, + { + "name": "Vinculum", + "fuelValue": 500, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Strontio", + "fuelValue": 200, + "category": "SPRITE", + "consumeCeo": 0.03 + }, + { + "name": "Nebrisum", + "fuelValue": 24300, + "category": "SPRITE", + "consumeCeo": 2.0 + }, + { + "name": "Electrum", + "fuelValue": 8, + "category": "ELECTRIC", + "consumeCeo": 0.0 + }, + { + "name": "Magneto", + "fuelValue": 108000, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Radio", + "fuelValue": 238000, + "category": "RADIATION", + "consumeCeo": 1.0 + }, + { + "name": "Custom1", + "fuelValue": 300000, + "category": "THERMAL", + "consumeCeo": 7.0 + }, + { + "name": "Custom2", + "fuelValue": 1, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Custom3", + "fuelValue": 217000, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Custom4", + "fuelValue": 118000, + "category": "RADIATION", + "consumeCeo": 0.5 + }, + { + "name": "Custom5", + "fuelValue": 120000, + "category": "VICTUS", + "consumeCeo": 0.6 + }, + { + "name": "Luxuria", + "fuelValue": 79200, + "category": "SPRITE", + "consumeCeo": 3.7 + }, + { + "name": "Infernus", + "fuelValue": 35700, + "category": "THERMAL", + "consumeCeo": 3.0 + }, + { + "name": "Superbia", + "fuelValue": 10900, + "category": "SPRITE", + "consumeCeo": 2.1 + }, + { + "name": "Gula", + "fuelValue": 64000, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Invidia", + "fuelValue": 7700, + "category": "SPRITE", + "consumeCeo": 1.0 + }, + { + "name": "Desidia", + "fuelValue": 600, + "category": "SPRITE", + "consumeCeo": 0.1 + }, + { + "name": "Ira", + "fuelValue": 86200, + "category": "THERMAL", + "consumeCeo": 5.0 + }, + { + "name": "Tempus", + "fuelValue": 142857, + "category": "NORMAL", + "consumeCeo": 0.0 + }, + { + "name": "Terminus", + "fuelValue": 300000, + "category": "UNSTABLE", + "consumeCeo": 10.0 + } + ] +}
\ No newline at end of file diff --git a/src/main/resources/assets/goodgenerator/lang/en_US.lang b/src/main/resources/assets/goodgenerator/lang/en_US.lang index a6bc177861..4c1f478cd1 100644 --- a/src/main/resources/assets/goodgenerator/lang/en_US.lang +++ b/src/main/resources/assets/goodgenerator/lang/en_US.lang @@ -14,6 +14,7 @@ magicCasing.0.name=Magic Casing essentiaCell.0.name=Novice Essentia Diffusion Cell essentiaCell.1.name=Adept Essentia Diffusion Cell essentiaCell.2.name=Master Essentia Diffusion Cell +essentiaCell.3.name=Grandmaster Essentia Diffusion Cell essentiaHatch.0.name=Essentia Input Hatch speedingPipe.0.name=Speeding Pipe Casing yottaFluidTankCasing.0.name=YOTTank Casing @@ -74,6 +75,16 @@ item.fluidCore.2.name=Fluid Storage Core T3 item.fluidCore.3.name=Fluid Storage Core T4 item.fluidCore.4.name=Fluid Storage Core T5 item.fluidCore.5.name=Fluid Storage Core T6 +item.upgradeEssentia.0.name=Essentia Generator: Empty +item.upgradeEssentia.1.name=§eEssentia Generator: Air§r +item.upgradeEssentia.2.name=§cEssentia Generator: Thermal§r +item.upgradeEssentia.3.name=§8Essentia Generator: Unstable§r +item.upgradeEssentia.4.name=§dEssentia Generator: Victus§r +item.upgradeEssentia.5.name=§5Essentia Generator: Tainted§r +item.upgradeEssentia.6.name=§bEssentia Generator: Mechanics§r +item.upgradeEssentia.7.name=§6Essentia Generator: Spirit§r +item.upgradeEssentia.8.name=§aEssentia Generator: Radiation§r +item.upgradeEssentia.9.name=§3Essentia Generator: Electric§r #Tooltip inverter.tooltip.0=Turn DC into AC. @@ -85,6 +96,7 @@ EssentiaHatch.tooltip.1=Right click it with empty hands to clear the Filter. fuelrod.tooltip.0=Durability: %s/%s depletedfuelrod.tooltip.0=Depleted YOTTankCell.tooltip.0=Capacity: +hatchTier.tooltip.0=Hatch Tier: #Fluids fluid.lightlyCrackedNaquadahGas=Lightly Cracked Naquadah Gas @@ -247,6 +259,11 @@ YOTTank.hint.4=1 - Input Hatch/YOTTank Casing YOTTank.hint.5=2 - Maintenance Hatch/YOTTank Casing YOTTank.hint.6=3 - Output Hatch +#Chat +largeessentiagenerator.chat= Installed! +essentiahatch.chat.0=Successfully locked to %s. +essentiahatch.chat.1=Cleared. + #Achievement achievement.gt.blockmachines.nag=Large Naquadah Reactor achievement.gt.blockmachines.nag.desc=Pickup this item to see the recipe in NEI @@ -282,7 +299,35 @@ achievement.yottaFluidTankCell.5=Fluid Cell Block T6 achievement.yottaFluidTankCell.5.desc=Pickup this item to see the recipe in NEI #Thaumcraft Research Context -research.ESSENTIA_GENERATOR.page.0=You have found that Essentia contains much more power than you thought. Is there a way to generate electricity from these Essentia? -research.ESSENTIA_GENERATOR.page.1=Different Essentia contains different amount of energy.<BR><BR>Potentia: 45000EU<BR><BR>Ignis: 30000EU<BR><BR>Lucrum: 130000EU<BR><BR>Auram: 120000EU<BR><BR>Arbor: 25000EU<BR><BR>Aer: 13000EU<BR><BR>Praecantatio: 92000EU<BR><BR>Machina: 40000EU<BR><BR>Electrum: 131072EU<BR><BR>Radio: 524288EU -research.ESSENTIA_GENERATOR.page.2=The unlisted Aspects contain 8192EU per Essentia. -research.ESSENTIA_CELL.page.0=The Novice Cell has such low efficiency that you can't bear it. So you discovered a new way to make some better Cells<BR><BR>The Novice Cell only provides 1 StablePoint, the Adept one provides 2 StablePoint, and the Master one provides 5 StablePoint!<BR><BR>With higher StablePoint, the generator can create more electricity from pre Essential. +research.ESSENTIA_GENERATOR.page.0=You have found that Essentia contains much more power than you thought. Is there a way to generate electricity from these Essentia?<BR><BR>The LEG(Large Essentia Generator) will automatically adapt its output voltage according to its dynamo hatch. The the Diffusion Cell determines the highest hatch tier that LEG can accept. +research.ESSENTIA_GENERATOR.page.1=Currently, only these Aspects can be converted into power directly without upgrades:<BR><BR>Terra: 800EU<BR><BR>Aqua: 5000EU<BR><BR>Ordo: 12000EU<BR><BR>Lux: 13000EU<BR><BR>Tempestas: 61200EU<BR><BR>Gelum: 3900EU<BR><BR>Vitreus: 2000EU<BR><BR>Potentia: 25600EU<BR><BR>Permutatio: 6000EU<BR><BR>Metallum: 2600EU +research.ESSENTIA_GENERATOR.page.2=Tenebrae: 9000EU<BR><BR>Praecantatio: 36000EU<BR><BR>Herba: 2600EU<BR><BR>Arbor: 4500EU<BR><BR>Bestia: 1000EU<BR><BR>Messis: 9800EU<BR><BR>Perfodio: 1300EU<BR><BR>Instrumentum: 1200EU<BR><BR>Meto: 3600EU<BR><BR>Tutamen: 6200EU<BR><BR>Fabrico: 1100EU +research.ESSENTIA_GENERATOR.page.3=Pannus: 600EU<BR><BR>Vinculum: 500EU<BR><BR>Magneto: 108000EU<BR><BR>Custom2: 1EU<BR><BR>Custom3: 217000<BR><BR>Gula: 64000EU<BR><BR>Tempus: 142857EU<BR><BR>You need to install upgrades on the generator if you want to use other kinds of Essentia as fuel. +research.ESSENTIA_CELL.page.0=The Novice Cell has such low efficiency that you can't bear it. So you discovered a new way to make some better Cells<BR><BR>The Novice Cell only provides 1 StablePoint, the Adept one provides 2 StablePoint, the Master one provides 5 StablePoint, and the Grandmaster one provides 10 StablePoint!<BR><BR>With higher StablePoint, the generator can create more electricity from pre Essential.<BR><BR>They also allow you to use better hatches. +research.ESSENTIA_UPGRADE_BLANK.page.0=A blank upgrade! I bet it has infinity possibility.<BR><BR>Except few kinds of Essentia, most Essentia needs external fluid to help them diffuse in the cell or increase the efficiency. Without these special fluids, the Essentia will block up the crevice of cells, resulting in lower efficiency or even no output. You can install multiple upgrades in one LEG.<BR><BR>The formula to calculate the fluid consuming speed:<BR>Basic consuming speed * Essentia coefficient * consumed Essentia amount +research.ESSENTIA_UPGRADE_AIR.page.0=This kind of Essentia has a high affinity for air and requires air to assist it to diffuse.<BR><BR>We can use liquid air which is more concentrated to further increase the efficiency of Essentia.<BR><BR>The basic consuming speed is 160L/sec. +research.ESSENTIA_UPGRADE_AIR.page.1=Acceptable Aspects:<BR><BR>Aer: 10000EU Coefficient:x1.0<BR><BR>Motus: 20000EU Coefficient:x0.5<BR><BR>Volatus: 56000EU Coefficient:x2.0<BR><BR>Auram: 42000EU Coefficient:x2.7<BR><BR>Required Liquid:<BR><BR>Air: Efficiency:x1.0<BR><BR>Liquid Air: Efficiency:x1.5 +research.ESSENTIA_UPGRADE_THERMAL.page.0=The energy from this kind of Essentia cannot be fully converted into electricity, and some of it is converted into heat that heats up the diffusion cell.<BR><BR>Coolants are needed to keep the generator running steadily and better coolants allow Essentia to release more energy safely.<BR><BR>The basic consuming speed is 40L/sec. +research.ESSENTIA_UPGRADE_THERMAL.page.1=Acceptable Aspects:<BR><BR>Ignis: 16000EU Coefficient:x1.0<BR><BR>Custom1: 300000EU Coefficient:x7.0<BR><BR>Volatus: 56000EU Coefficient:x2.0<BR><BR>Infernus: 35700EU Coefficient:x3.0<BR><BR>Ira: 82600EU Coefficient:x5.0 +research.ESSENTIA_UPGRADE_THERMAL.page.2=Required Liquid:<BR><BR>Water: Efficiency:x0.5<BR><BR>Distilled Water: Efficiency:x1.0<BR><BR>Crushed Ice: Efficiency:x1.2<BR><BR>IC2 Coolant: Efficiency:x1.5<BR><BR>Super Coolant: Efficiency:x5.0<BR><BR>Cryotheum: Efficiency:x9.0 +research.ESSENTIA_UPGRADE_UNSTABLE.page.0=This kind of Essentia tends to damage the diffusion cell or reacts with air easily.<BR><BR>Inert gases are needed to protect the diffusion cell.<BR><BR>The more inert the gas, the more energy can be safely released from the Essentia.<BR><BR>The basic consuming speed is 80L/sec. +research.ESSENTIA_UPGRADE_UNSTABLE.page.1=Acceptable Aspects:<BR><BR>Perditio: 4500EU Coefficient:x1.0<BR><BR>Vacuos: 8200EU Coefficient:x1.5<BR><BR>Venenum: 17000EU Coefficient:x2.0<BR><BR>Telum: 14200EU Coefficient:x2.5<BR><BR>Terminus: 300000EU Coefficient:x10.0 +research.ESSENTIA_UPGRADE_UNSTABLE.page.2=Required Liquid:<BR><BR>Nitrogen: Efficiency:x1.0<BR><BR>Helium: Efficiency:x2.0<BR><BR>Neon: Efficiency:x2.2<BR><BR>Argon: Efficiency:x2.5<BR><BR>Krypton: Efficiency:x3.0<BR><BR>Xenon: Efficiency:x4.0 +research.ESSENTIA_UPGRADE_VICTUS.page.0=This kind of Essentia contains the essence of life.<BR><BR>Most of them can't be converted into much energy directly, but you can provide them with Life Essence, enhancing the power they generate greatly.<BR><BR>The basic consuming speed is 360L/sec. +research.ESSENTIA_UPGRADE_VICTUS.page.1=Acceptable Aspects:<BR><BR>Victus: 20000EU Coefficient:x1.0<BR><BR>Spiritus: 37600EU Coefficient:x0.7<BR><BR>Sano: 24600EU Coefficient:x1.2<BR><BR>Corpus: 5200EU Coefficient:x0.9<BR><BR>Humanus: 16700EU Coefficient:x1.3<BR><BR>Fames: 17600EU Coefficient:x1.1<BR><BR>Custom5: 120000EU Coefficient:x0.6 +research.ESSENTIA_UPGRADE_VICTUS.page.2=Optional Liquid:<BR><BR>Liquid XP: Efficiency:x2.0<BR><BR>Life Essence: Efficiency:x6.0 +research.ESSENTIA_UPGRADE_TAINTED.page.0=This kind of Essentia contains dark powers. It may cause flux pollution when running.<BR><BR>You can provide these Essentia with Purifying Fluid or Liquid Death...... resulting two different effects.<BR><BR>The Purifying Fluid can purify and greatly enhances the energy outputted by the Essentia, and also prevents the flux pollution.<BR><BR>The Water of Death does not dissolve Essentia, but adding it to diffused Essentia can have a wonderful effect. The lower the basic fuel value of the Essentia, the more the dark energy can be released. +research.ESSENTIA_UPGRADE_TAINTED.page.1=The basic consuming speed is 60L/sec. +research.ESSENTIA_UPGRADE_TAINTED.page.2=Acceptable Aspects:<BR><BR>Mortuus: 7200EU Coefficient:x1.0<BR><BR>Alienis: 9700EU Coefficient:x1.7<BR><BR>Vitium: 4700EU Coefficient:x10.0<BR><BR>Exanimis: 9000EU Coefficient:x1.2 +research.ESSENTIA_UPGRADE_TAINTED.page.3=Optional Liquid:<BR><BR>Purifying Fluid: Efficiency:x60.0<BR><BR>Liquid Death: Efficiency:x (25000/Basic Fuel Value)^4 +research.ESSENTIA_UPGRADE_MECHANICS.page.0=This kind of Essentia must flow quickly in order to release energy.<BR><BR>Lubricants are needed to provide sufficient fluidity to the Essentia.<BR><BR>The basic consuming speed is 400L/sec. +research.ESSENTIA_UPGRADE_MECHANICS.page.1=Acceptable Aspects:<BR><BR>Iter: 16000EU<BR><BR>Machina: 61200EU<BR><BR>Limus: 11800EU<BR><BR>The Coefficient is always x1.0 +research.ESSENTIA_UPGRADE_MECHANICS.page.2=Required Liquid:<BR><BR>Lubricant: Efficiency:x1.0 +research.ESSENTIA_UPGRADE_SPRITE.page.0=The power directly generated from spiritual Essentia is very low. It is only when activated with Flowing Spirit or Hollow Tears that these Essentia can show their true power.<BR><BR>When the stable point of Diffusion Cell is low, Hollow Tears can stimulate more energy from Essentia. But when the stable point of Diffusion Cell becomes higher, only using Flowing Spirit can awaken the true power of Essentia.<BR><BR>The basic consuming speed is 40L/sec. +research.ESSENTIA_UPGRADE_SPRITE.page.1=Acceptable Aspects:<BR><BR>Cognitio: 2200EU Coefficient:x1.2<BR><BR>Sensus: 1400EU Coefficient:x0.7<BR><BR>Lucrum: 6000EU Coefficient:x2.0<BR><BR>Strontio: 200EU Coefficient:x0.03<BR><BR>Nebrisum: 24300EU Coefficient:x2.0<BR><BR>Luxuria: 79200EU Coefficient:x3.7<BR><BR>Superbia: 10900EU Coefficient:x2.1<BR><BR>Invidia: 7700EU Coefficient:x1.0<BR><BR>Desidia: 600EU Coefficient:x0.1 +research.ESSENTIA_UPGRADE_SPRITE.page.2=Optional Liquid:<BR><BR>Hollow Tears: Efficiency:x 15x(1+100/Stable Point)<BR><BR>Flowing Spirit Efficiency:x 10x(1+Stable Point/100)<BR><BR>This means Flowing Spirit is more efficient when stable point is over 150. +research.ESSENTIA_UPGRADE_RADIATION.page.0=The use of this Essentia for power generation is similar to the use of nuclear fuel, except that the Essentia represents a purely "radioactive" property rather than a specific nuclear fuel.<BR><BR>However, the method of boosting nuclear fuel power still applies here, and it will directly result in more energy being released from Essentia.<BR><BR>The basic consuming speed is 120L/sec. +research.ESSENTIA_UPGRADE_RADIATION.page.1=Acceptable Aspects:<BR><BR>Radio: 238000EU Coefficient:x1.0<BR><BR>Custom4: 118000EU Coefficient:x0.5 +research.ESSENTIA_UPGRADE_RADIATION.page.2=Optional Liquid:<BR><BR>Molten Caesium: Efficiency:x2.0<BR><BR>Molten Uranium-235: Efficiency:x3.0<BR><BR>Molten Naquadah: Efficiency:x4.0<BR><BR>Molten Atomic Separation Catalyst: Efficiency:x16.0 +research.ESSENTIA_UPGRADE_ELECTRIC.page.0=The ELECTRUM Essentia itself represents electricity!<BR><BR>The higher the voltage of the generator dynamo hatch, the more ELECTRUM will be affected by potential difference and increase the amount of energy. +research.ESSENTIA_UPGRADE_ELECTRIC.page.1=Acceptable Aspects: Electrum<BR><BR>The formula to calculate its power:<BR>8x(3.0^Dynamo Hatch Tier)EU
\ No newline at end of file diff --git a/src/main/resources/assets/goodgenerator/textures/blocks/essentiaCell/4.png b/src/main/resources/assets/goodgenerator/textures/blocks/essentiaCell/4.png Binary files differnew file mode 100644 index 0000000000..2f5df7876d --- /dev/null +++ b/src/main/resources/assets/goodgenerator/textures/blocks/essentiaCell/4.png diff --git a/src/main/resources/assets/goodgenerator/textures/items/_null_.png b/src/main/resources/assets/goodgenerator/textures/items/_null_.png Binary files differnew file mode 100644 index 0000000000..91048717ee --- /dev/null +++ b/src/main/resources/assets/goodgenerator/textures/items/_null_.png diff --git a/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/air.png b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/air.png Binary files differnew file mode 100644 index 0000000000..8562f123fc --- /dev/null +++ b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/air.png diff --git a/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/electric.png b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/electric.png Binary files differnew file mode 100644 index 0000000000..79b5290620 --- /dev/null +++ b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/electric.png diff --git a/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/mechanics.png b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/mechanics.png Binary files differnew file mode 100644 index 0000000000..5322aa6b83 --- /dev/null +++ b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/mechanics.png diff --git a/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/null.png b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/null.png Binary files differnew file mode 100644 index 0000000000..8f3be697df --- /dev/null +++ b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/null.png diff --git a/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/radiation.png b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/radiation.png Binary files differnew file mode 100644 index 0000000000..2d791b1869 --- /dev/null +++ b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/radiation.png diff --git a/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/spirit.png b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/spirit.png Binary files differnew file mode 100644 index 0000000000..edd4edd270 --- /dev/null +++ b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/spirit.png diff --git a/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/tainted.png b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/tainted.png Binary files differnew file mode 100644 index 0000000000..71c108b312 --- /dev/null +++ b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/tainted.png diff --git a/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/thermal.png b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/thermal.png Binary files differnew file mode 100644 index 0000000000..4ccd9d6eec --- /dev/null +++ b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/thermal.png diff --git a/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/unstable.png b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/unstable.png Binary files differnew file mode 100644 index 0000000000..27a78c9bb4 --- /dev/null +++ b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/unstable.png diff --git a/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/victus.png b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/victus.png Binary files differnew file mode 100644 index 0000000000..fa6bba84bc --- /dev/null +++ b/src/main/resources/assets/goodgenerator/textures/items/upgradeEssentia/victus.png |