diff options
96 files changed, 4788 insertions, 840 deletions
diff --git a/build.gradle b/build.gradle index b7817b252b..f973786fca 100644 --- a/build.gradle +++ b/build.gradle @@ -45,7 +45,7 @@ sourceCompatibility = 1.8 targetCompatibility = 1.8 archivesBaseName = "GT-PlusPlus" -version = "1.7.0-prerelease-4" +version = "1.7.0-prerelease-5" minecraft.version = "1.7.10-10.13.4.1614-1.7.10" diff --git a/src/Java/gregtech/api/util/FishPondFakeRecipe.java b/src/Java/gregtech/api/util/FishPondFakeRecipe.java index d8661c23bd..9cb82bf5e0 100644 --- a/src/Java/gregtech/api/util/FishPondFakeRecipe.java +++ b/src/Java/gregtech/api/util/FishPondFakeRecipe.java @@ -3,8 +3,8 @@ package gregtech.api.util; import java.util.ArrayList; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.AutoMap; import gtPlusPlus.core.recipe.common.CI; -import gtPlusPlus.core.util.array.AutoMap; import gtPlusPlus.core.util.reflect.ReflectionUtils; import net.minecraft.item.ItemStack; import net.minecraft.util.WeightedRandomFishable; diff --git a/src/Java/gtPlusPlus/GTplusplus.java b/src/Java/gtPlusPlus/GTplusplus.java index b06ca00752..d782df664c 100644 --- a/src/Java/gtPlusPlus/GTplusplus.java +++ b/src/Java/gtPlusPlus/GTplusplus.java @@ -1,6 +1,6 @@ package gtPlusPlus; -import static gtPlusPlus.api.objects.ChunkManager.mChunkLoaderManagerMap; +import static gtPlusPlus.api.objects.minecraft.ChunkManager.mChunkLoaderManagerMap; import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableCustomCapes; import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableUpdateChecker; @@ -20,25 +20,26 @@ import gregtech.api.enums.Materials; import gregtech.api.util.GT_Recipe; import gregtech.api.util.Recipe_GT; import gregtech.api.util.GT_Recipe.GT_Recipe_Map; -import gtPlusPlus.api.analytics.SegmentAnalytics; -import gtPlusPlus.api.analytics.SegmentHelper; -import gtPlusPlus.api.objects.ChunkManager; -import gtPlusPlus.api.objects.DimChunkPos; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.Triplet; +import gtPlusPlus.api.objects.minecraft.ChunkManager; +import gtPlusPlus.api.objects.minecraft.DimChunkPos; import gtPlusPlus.core.commands.CommandMath; import gtPlusPlus.core.common.CommonProxy; import gtPlusPlus.core.config.ConfigHandler; import gtPlusPlus.core.handler.BookHandler; import gtPlusPlus.core.handler.Recipes.RegistrationHandler; +import gtPlusPlus.core.handler.analytics.SegmentAnalytics; +import gtPlusPlus.core.handler.analytics.SegmentHelper; import gtPlusPlus.core.handler.events.BlockEventHandler; import gtPlusPlus.core.handler.events.LoginEventHandler; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.nuclear.FLUORIDES; import gtPlusPlus.core.util.Utils; -import gtPlusPlus.core.util.array.Triplet; import gtPlusPlus.core.util.geo.GeoUtils; import gtPlusPlus.core.util.item.ItemUtils; +import gtPlusPlus.core.util.locale.LocaleUtils; import gtPlusPlus.core.util.networking.NetworkUtils; import gtPlusPlus.core.util.player.PlayerUtils; import gtPlusPlus.plugin.manager.Core_Manager; @@ -47,6 +48,7 @@ import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock; import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtTools; import gtPlusPlus.xmod.gregtech.common.tileentities.machines.basic.GregtechMetaTileEntityChunkLoader; import gtPlusPlus.xmod.gregtech.loaders.GT_Material_Loader; +import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_Recycling; import net.minecraft.launchwrapper.Launch; import net.minecraft.world.chunk.Chunk; import net.minecraftforge.common.ForgeChunkManager; @@ -134,6 +136,11 @@ public class GTplusplus implements ActionListener { BlockEventHandler.fluoriteOre = FLUORIDES.FLUORITE.getOre(1); Core_Manager.init(); + //Used by foreign players to generate .lang files for translation. + if (CORE.ConfigSwitches.dumpItemAndBlockData) { + LocaleUtils.GenerateFakeLocaleFile(); + } + } // Post-Init @@ -142,6 +149,7 @@ public class GTplusplus implements ActionListener { proxy.postInit(event); BookHandler.runLater(); Core_Manager.postInit(); + RecipeGen_Recycling.executeGenerators(); Logger.INFO("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); Logger.INFO("| Recipes succesfully Loaded: " + RegistrationHandler.recipesSuccess + " | Failed: " + RegistrationHandler.recipesFailed + " |"); @@ -158,10 +166,10 @@ public class GTplusplus implements ActionListener { @EventHandler public void serverStarting(final FMLServerStartingEvent event) { event.registerServerCommand(new CommandMath()); - + //Chunk Loading Timer h = ChunkManager.createChunkQueue(); - + } diff --git a/src/Java/gtPlusPlus/api/damage/DamageTeslaTower.java b/src/Java/gtPlusPlus/api/damage/DamageTeslaTower.java index ada2ba5c3d..ecde9fe930 100644 --- a/src/Java/gtPlusPlus/api/damage/DamageTeslaTower.java +++ b/src/Java/gtPlusPlus/api/damage/DamageTeslaTower.java @@ -1,5 +1,6 @@ package gtPlusPlus.api.damage; +import gtPlusPlus.core.world.damage.BaseCustomDamageSource; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.ChatComponentTranslation; diff --git a/src/Java/gtPlusPlus/api/objects/MaterialHelper.java b/src/Java/gtPlusPlus/api/helpers/MaterialHelper.java index d63ab7a15a..bb30727992 100644 --- a/src/Java/gtPlusPlus/api/objects/MaterialHelper.java +++ b/src/Java/gtPlusPlus/api/helpers/MaterialHelper.java @@ -1,4 +1,4 @@ -package gtPlusPlus.api.objects; +package gtPlusPlus.api.helpers; import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; diff --git a/src/Java/gtPlusPlus/api/interfaces/IEntityCatcher.java b/src/Java/gtPlusPlus/api/interfaces/IEntityCatcher.java index ca2d80de53..12813e1dd0 100644 --- a/src/Java/gtPlusPlus/api/interfaces/IEntityCatcher.java +++ b/src/Java/gtPlusPlus/api/interfaces/IEntityCatcher.java @@ -1,6 +1,6 @@ package gtPlusPlus.api.interfaces; -import gtPlusPlus.core.util.array.BlockPos; +import gtPlusPlus.api.objects.minecraft.BlockPos; import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/Java/gtPlusPlus/api/interfaces/IGregtechPower.java b/src/Java/gtPlusPlus/api/interfaces/IGregtechPower.java new file mode 100644 index 0000000000..de639c6bae --- /dev/null +++ b/src/Java/gtPlusPlus/api/interfaces/IGregtechPower.java @@ -0,0 +1,149 @@ +package gtPlusPlus.api.interfaces; + +import gregtech.api.interfaces.IDescribable; +import gregtech.api.interfaces.tileentity.IBasicEnergyContainer; +import gregtech.api.interfaces.tileentity.IGearEnergyTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechDeviceInformation; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.interfaces.tileentity.ITurnable; +import gtPlusPlus.core.tileentities.base.TilePoweredGT; +import net.minecraft.block.Block; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public abstract interface IGregtechPower extends IGearEnergyTileEntity, ITurnable, IGregTechDeviceInformation, IDescribable, IBasicEnergyContainer { + + @Override + public String[] getDescription(); + + @Override + default boolean isUniversalEnergyStored(long p0) { + return false; + } + + @Override + public long getOutputAmperage(); + + @Override + public long getOutputVoltage(); + + @Override + public long getInputAmperage(); + + @Override + public long getInputVoltage(); + + @Override + public boolean decreaseStoredEnergyUnits(long p0, boolean p1); + + @Override + public boolean increaseStoredEnergyUnits(long p0, boolean p1); + + @Override + public boolean drainEnergyUnits(byte p0, long p1, long p2); + + @Override + public long getAverageElectricInput(); + + @Override + public long getAverageElectricOutput(); + + @Override + public long getStoredEU(); + + @Override + public long getEUCapacity(); + + @Override + public long getStoredSteam(); + + @Override + public long getSteamCapacity(); + + @Override + public boolean increaseStoredSteam(long p0, boolean p1); + + @Override + public Block getBlockAtSide(byte p0); + + @Override + public Block getBlockAtSideAndDistance(byte p0, int p1); + + @Override + public Block getBlockOffset(int p0, int p1, int p2); + + + @Override + public TileEntity getTileEntity(int p0, int p1, int p2); + + @Override + public TileEntity getTileEntityAtSide(byte p0); + + @Override + public TileEntity getTileEntityAtSideAndDistance(byte p0, int p1); + + @Override + public TileEntity getTileEntityOffset(int p0, int p1, int p2); + + @Override + public World getWorld(); + + @Override + public int getXCoord(); + + @Override + public short getYCoord(); + + @Override + public int getZCoord(); + + @Override + public boolean isClientSide(); + + @Override + public boolean isDead(); + + @Override + public boolean isInvalidTileEntity(); + + @Override + public boolean isServerSide(); + + @Override + public void readFromNBT(NBTTagCompound p0); + + @Override + public void writeToNBT(NBTTagCompound p0); + + @Override + public boolean acceptsRotationalEnergy(byte p0); + + @Override + public boolean injectRotationalEnergy(byte p0, long p1, long p2); + + @Override + public long injectEnergyUnits(byte p0, long p1, long p2); + + @Override + public boolean inputEnergyFrom(byte p0); + + @Override + public boolean outputsEnergyTo(byte p0); + + @Override + public String[] getInfoData(); + + @Override + default public boolean isGivingInformation() { + return true; + } + + boolean onPreTick(TilePoweredGT tilePoweredGT, long mTickTimer2); + + boolean onTick(TilePoweredGT iGregTechTileEntity, long mTickTimer2); + + boolean onPostTick(TilePoweredGT iGregTechTileEntity, long mTickTimer2); + + +} diff --git a/src/Java/gtPlusPlus/core/util/array/AutoMap.java b/src/Java/gtPlusPlus/api/objects/data/AutoMap.java index ea5e1dd25e..a8d24d36d8 100644 --- a/src/Java/gtPlusPlus/core/util/array/AutoMap.java +++ b/src/Java/gtPlusPlus/api/objects/data/AutoMap.java @@ -1,4 +1,4 @@ -package gtPlusPlus.core.util.array; +package gtPlusPlus.api.objects.data; import java.io.Serializable; import java.util.*; diff --git a/src/Java/gtPlusPlus/core/util/array/Pair.java b/src/Java/gtPlusPlus/api/objects/data/Pair.java index 1d2c0ef7cb..6ab781cf1e 100644 --- a/src/Java/gtPlusPlus/core/util/array/Pair.java +++ b/src/Java/gtPlusPlus/api/objects/data/Pair.java @@ -1,4 +1,4 @@ -package gtPlusPlus.core.util.array; +package gtPlusPlus.api.objects.data; import java.io.Serializable; diff --git a/src/Java/gtPlusPlus/core/util/array/Quad.java b/src/Java/gtPlusPlus/api/objects/data/Quad.java index 417c3b6ebc..01c62e95e6 100644 --- a/src/Java/gtPlusPlus/core/util/array/Quad.java +++ b/src/Java/gtPlusPlus/api/objects/data/Quad.java @@ -1,4 +1,4 @@ -package gtPlusPlus.core.util.array; +package gtPlusPlus.api.objects.data; public class Quad<K,V,C,R> { diff --git a/src/Java/gtPlusPlus/core/util/array/Triplet.java b/src/Java/gtPlusPlus/api/objects/data/Triplet.java index 01f836ae72..affb03d868 100644 --- a/src/Java/gtPlusPlus/core/util/array/Triplet.java +++ b/src/Java/gtPlusPlus/api/objects/data/Triplet.java @@ -1,4 +1,4 @@ -package gtPlusPlus.core.util.array; +package gtPlusPlus.api.objects.data; public class Triplet<K,V,C> { diff --git a/src/Java/gtPlusPlus/api/objects/minecraft/BlockPos.java b/src/Java/gtPlusPlus/api/objects/minecraft/BlockPos.java new file mode 100644 index 0000000000..d258d1fe73 --- /dev/null +++ b/src/Java/gtPlusPlus/api/objects/minecraft/BlockPos.java @@ -0,0 +1,85 @@ +package gtPlusPlus.api.objects.minecraft; + +import java.io.Serializable; + +public class BlockPos implements Serializable{ + + private static final long serialVersionUID = -7271947491316682006L; + public final int xPos; + public final int yPos; + public final int zPos; + public final int dim; + + public BlockPos(int x, int y, int z){ + this(x, y, z, 0); + } + + public BlockPos(int x, int y, int z, int dim){ + this.xPos = x; + this.yPos = y; + this.zPos = z; + this.dim = dim; + } + + public String getLocationString() { + return "[X: "+this.xPos+"][Y: "+this.yPos+"][Z: "+this.zPos+"][Dim: "+this.dim+"]"; + } + + @Override + public int hashCode() { + int hash = 5; + hash += (13 * this.xPos); + hash += (19 * this.yPos); + hash += (31 * this.zPos); + hash += (17 * this.dim); + return hash; + } + + @Override + public boolean equals(Object other) { + if (other == null) { + return false; + } + if (other == this) { + return true; + } + if(!(other instanceof BlockPos)) { + return false; + } + BlockPos otherPoint = (BlockPos)other; + return this.xPos == otherPoint.xPos && this.yPos == otherPoint.yPos && this.zPos == otherPoint.zPos && this.dim == otherPoint.dim; + } + + public int distanceFrom(BlockPos target) { + if (target.dim != this.dim) { + return Short.MIN_VALUE; + } + return distanceFrom(target.xPos, target.yPos, target.zPos); + } + + /** + * + * @param x X coordinate of target. + * @param y Y coordinate of target. + * @param z Z coordinate of target. + * @return square of distance + */ + public int distanceFrom(int x, int y, int z) { + int distanceX = this.xPos - x; + int distanceY = this.yPos - y; + int distanceZ = this.zPos - z; + return distanceX * distanceX + distanceY * distanceY + distanceZ * distanceZ; + } + + public boolean isWithinRange(BlockPos target, int range) { + if (target.dim != this.dim) { + return false; + } + return isWithinRange(target.xPos, target.yPos, target.zPos, range); + } + + public boolean isWithinRange(int x, int y, int z, int range) { + return distanceFrom(x, y, z) <= (range * range); + } + +} diff --git a/src/Java/gtPlusPlus/api/objects/ChunkManager.java b/src/Java/gtPlusPlus/api/objects/minecraft/ChunkManager.java index 0bace04bf8..b411e8875a 100644 --- a/src/Java/gtPlusPlus/api/objects/ChunkManager.java +++ b/src/Java/gtPlusPlus/api/objects/minecraft/ChunkManager.java @@ -6,14 +6,14 @@ * permission unless otherwise specified on the * license page at http://railcraft.info/wiki/info:license. */ -package gtPlusPlus.api.objects; +package gtPlusPlus.api.objects.minecraft; import com.google.common.collect.LinkedListMultimap; import com.google.common.collect.ListMultimap; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import gtPlusPlus.GTplusplus; -import gtPlusPlus.core.util.array.BlockPos; -import gtPlusPlus.core.util.array.Triplet; +import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.Triplet; import gtPlusPlus.xmod.gregtech.common.tileentities.machines.basic.GregtechMetaTileEntityChunkLoader; import java.util.HashSet; diff --git a/src/Java/gtPlusPlus/api/objects/DimChunkPos.java b/src/Java/gtPlusPlus/api/objects/minecraft/DimChunkPos.java index bea0a4ec3b..010e522a14 100644 --- a/src/Java/gtPlusPlus/api/objects/DimChunkPos.java +++ b/src/Java/gtPlusPlus/api/objects/minecraft/DimChunkPos.java @@ -1,6 +1,5 @@ -package gtPlusPlus.api.objects; +package gtPlusPlus.api.objects.minecraft; -import gtPlusPlus.core.util.array.BlockPos; import net.minecraft.client.Minecraft; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; diff --git a/src/Java/gtPlusPlus/api/objects/GenericStack.java b/src/Java/gtPlusPlus/api/objects/minecraft/GenericStack.java index b3bc94364f..f5db1d9e3a 100644 --- a/src/Java/gtPlusPlus/api/objects/GenericStack.java +++ b/src/Java/gtPlusPlus/api/objects/minecraft/GenericStack.java @@ -1,4 +1,4 @@ -package gtPlusPlus.api.objects; +package gtPlusPlus.api.objects.minecraft; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; diff --git a/src/Java/gtPlusPlus/api/objects/CSPRNG_DO_NOT_USE.java b/src/Java/gtPlusPlus/api/objects/random/CSPRNG_DO_NOT_USE.java index 19200846ca..b2dc984456 100644 --- a/src/Java/gtPlusPlus/api/objects/CSPRNG_DO_NOT_USE.java +++ b/src/Java/gtPlusPlus/api/objects/random/CSPRNG_DO_NOT_USE.java @@ -33,7 +33,7 @@ * http://www.opensource.org/licenses/bsd-license.php */ -package gtPlusPlus.api.objects; +package gtPlusPlus.api.objects.random; import java.math.BigInteger; import java.security.SecureRandom; import java.util.Random; diff --git a/src/Java/gtPlusPlus/api/objects/XSTR.java b/src/Java/gtPlusPlus/api/objects/random/XSTR.java index 3ff0792f6e..7f83df52c4 100644 --- a/src/Java/gtPlusPlus/api/objects/XSTR.java +++ b/src/Java/gtPlusPlus/api/objects/random/XSTR.java @@ -1,4 +1,4 @@ -package gtPlusPlus.api.objects; +package gtPlusPlus.api.objects.random; /** * A subclass of java.util.random that implements the Xorshift random number * generator diff --git a/src/Java/gtPlusPlus/core/block/base/BlockBaseModular.java b/src/Java/gtPlusPlus/core/block/base/BlockBaseModular.java index c2b77ebdae..f8a9eb2b2f 100644 --- a/src/Java/gtPlusPlus/core/block/base/BlockBaseModular.java +++ b/src/Java/gtPlusPlus/core/block/base/BlockBaseModular.java @@ -53,11 +53,11 @@ public class BlockBaseModular extends BasicBlock{ } if (this.thisBlockType.equals(BlockTypes.STANDARD.name().toUpperCase())){ - LanguageRegistry.addName(this, "Block of "+blockMaterial); + //LanguageRegistry.addName(this, "Block of "+blockMaterial); //Utils.LOG_INFO("Registered Block in Language Registry as: "+"Block of "+blockMaterial); } else if (this.thisBlockType.equals(BlockTypes.FRAME.name().toUpperCase())){ - LanguageRegistry.addName(this, blockMaterial+ " Frame Box"); + //LanguageRegistry.addName(this, blockMaterial+ " Frame Box"); //Utils.LOG_INFO("Registered Block in Language Registry as: "+blockMaterial+ " Frame Box"); } diff --git a/src/Java/gtPlusPlus/core/block/base/BlockBaseNBT.java b/src/Java/gtPlusPlus/core/block/base/BlockBaseNBT.java index da308e270b..7ac07880c9 100644 --- a/src/Java/gtPlusPlus/core/block/base/BlockBaseNBT.java +++ b/src/Java/gtPlusPlus/core/block/base/BlockBaseNBT.java @@ -32,7 +32,7 @@ public abstract class BlockBaseNBT extends BlockContainer this.setBlockName(unlocalName); this.setCreativeTab(AddToCreativeTab.tabMachines); GameRegistry.registerBlock(this, ItemBlockNBT.class, unlocalName); - LanguageRegistry.addName(this, displayName); + //LanguageRegistry.addName(this, displayName); } /** diff --git a/src/Java/gtPlusPlus/core/block/base/BlockBaseOre.java b/src/Java/gtPlusPlus/core/block/base/BlockBaseOre.java index 2bea09d806..2f2050f21b 100644 --- a/src/Java/gtPlusPlus/core/block/base/BlockBaseOre.java +++ b/src/Java/gtPlusPlus/core/block/base/BlockBaseOre.java @@ -53,7 +53,7 @@ public class BlockBaseOre extends BasicBlock implements ITexturedBlock { try { GameRegistry.registerBlock(this, ItemBlockOre.class, Utils.sanitizeString("ore"+Utils.sanitizeString(this.blockMaterial.getLocalizedName()))); GT_OreDictUnificator.registerOre("ore"+Utils.sanitizeString(this.blockMaterial.getLocalizedName()), ItemUtils.getSimpleStack(this)); - LanguageRegistry.addName(this, blockMaterial.getLocalizedName()+ " Ore"); + //LanguageRegistry.addName(this, blockMaterial.getLocalizedName()+ " Ore"); } catch (Throwable t){ t.printStackTrace(); diff --git a/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java b/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java index ea55a9177d..56ba60a5f3 100644 --- a/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java +++ b/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java @@ -9,12 +9,12 @@ import cpw.mods.fml.common.registry.LanguageRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gregtech.common.items.GT_MetaGenerated_Tool_01; +import gtPlusPlus.api.objects.data.Triplet; import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.item.base.itemblock.ItemBlockEntityBase; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.tileentities.general.TileEntityXpConverter; import gtPlusPlus.core.util.Utils; -import gtPlusPlus.core.util.array.Triplet; import gtPlusPlus.core.util.enchanting.EnchantingUtils; import gtPlusPlus.core.util.player.PlayerUtils; import net.minecraft.block.BlockContainer; diff --git a/src/Java/gtPlusPlus/core/block/general/HellFire.java b/src/Java/gtPlusPlus/core/block/general/HellFire.java index a682a0d98d..ef15f373ae 100644 --- a/src/Java/gtPlusPlus/core/block/general/HellFire.java +++ b/src/Java/gtPlusPlus/core/block/general/HellFire.java @@ -17,7 +17,7 @@ import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import gtPlusPlus.api.objects.XSTR; +import gtPlusPlus.api.objects.random.XSTR; import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.math.MathUtils; diff --git a/src/Java/gtPlusPlus/core/block/general/antigrief/BlockWitherProof.java b/src/Java/gtPlusPlus/core/block/general/antigrief/BlockWitherProof.java index d093bf2e2f..3d97fb0aa3 100644 --- a/src/Java/gtPlusPlus/core/block/general/antigrief/BlockWitherProof.java +++ b/src/Java/gtPlusPlus/core/block/general/antigrief/BlockWitherProof.java @@ -30,9 +30,8 @@ public class BlockWitherProof extends Block{ this.setResistance(5000.0F); this.setHarvestLevel("pickaxe", 3); this.setStepSound(soundTypeMetal); - LanguageRegistry.addName(this, "Wither Cage"); + //LanguageRegistry.addName(this, "Wither Cage"); GameRegistry.registerBlock(this, Utils.sanitizeString("blockBlackGate")); - } public String GetProperName(){ diff --git a/src/Java/gtPlusPlus/core/client/renderer/RenderPlasmaBolt.java b/src/Java/gtPlusPlus/core/client/renderer/RenderPlasmaBolt.java index f505824bc9..cb17793c59 100644 --- a/src/Java/gtPlusPlus/core/client/renderer/RenderPlasmaBolt.java +++ b/src/Java/gtPlusPlus/core/client/renderer/RenderPlasmaBolt.java @@ -3,7 +3,7 @@ package gtPlusPlus.core.client.renderer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.api.objects.XSTR; +import gtPlusPlus.api.objects.random.XSTR; import gtPlusPlus.core.entity.EntityTeslaTowerLightning; import java.util.Random; diff --git a/src/Java/gtPlusPlus/core/commands/CommandMath.java b/src/Java/gtPlusPlus/core/commands/CommandMath.java index 27c963bf81..8e8dfbc36c 100644 --- a/src/Java/gtPlusPlus/core/commands/CommandMath.java +++ b/src/Java/gtPlusPlus/core/commands/CommandMath.java @@ -4,10 +4,13 @@ import java.util.ArrayList; import java.util.List; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.AutoMap; +import gtPlusPlus.core.util.item.ItemUtils; import gtPlusPlus.core.util.player.PlayerUtils; import net.minecraft.command.ICommand; import net.minecraft.command.ICommandSender; import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityXPOrb; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ChunkCoordinates; @@ -21,61 +24,82 @@ public class CommandMath implements ICommand protected String fullEntityName; protected Entity conjuredEntity; - public CommandMath() - { + public CommandMath(){ this.aliases = new ArrayList<>(); - - this.aliases.add("hometele"); - - this.aliases.add("warphome"); - + //this.aliases.add("hometele"); + //this.aliases.add("warphome"); } @Override - public int compareTo(final Object o) - { + public int compareTo(final Object o){ return 0; } @Override - public String getCommandName() - { - return "bed"; + public String getCommandName(){ + return "alkalus"; } @Override - public String getCommandUsage(final ICommandSender var1) - { - return "/bed [Teleports you to your bed for XP]"; + public String getCommandUsage(final ICommandSender var1){ + return "/alkalus [Dev Command]"; } @Override - public List<String> getCommandAliases() - { + public List<String> getCommandAliases(){ return this.aliases; } @Override - public void processCommand(final ICommandSender S, final String[] argString) - { + public void processCommand(final ICommandSender S, final String[] argString){ final World W = S.getEntityWorld(); - final CommandUtils C = new CommandUtils(); - final EntityPlayer P = C.getPlayer(S); - //System.out.println(P.getCommandSenderName()); - //System.out.println(P.getDisplayName()); - if (W.isRemote) - - { - - System.out.println("Not processing on Client side"); - + final EntityPlayer P = CommandUtils.getPlayer(S); + if (!W.isRemote){ + if (P.getDisplayName().toLowerCase().equals("draknyte1") || P.getCommandSenderName().toLowerCase().equals("draknyte1")) { + String[] prefixes = new String[] { + "ingot", + "plate", + "dust", + "gearGt", + "block", + "ore" + }; + String[] loots = new String[] { + "Iron", + "Iron", + "Iron", + "Copper", + "Copper", + "Copper", + "Tin", + "Mica", + "Steel", + "Steel", + "Steel", + "Invar", + "Titanium", + "Gold", + "Silver", + "Lead", + "Aluminium" + }; + AutoMap<EntityItem> itemEntities = new AutoMap<EntityItem>(); + for (String g : prefixes) { + for (String s : loots) { + itemEntities.put(new EntityItem(W, P.posX, P.posY, P.posZ, ItemUtils.getItemStackOfAmountFromOreDictNoBroken(g+s, 64))); + }} + for (EntityItem e : itemEntities.values()) { + e.lifespan = 30000; + } + + } } - else + /*else { @@ -167,36 +191,30 @@ public class CommandMath implements ICommand gregtech.api.util.GT_Utility.sendChatToPlayer(P, "You don't feel you're able to do this yet."); } - } + }*/ } @Override - public boolean canCommandSenderUseCommand(final ICommandSender var1) - { - return true; - + public boolean canCommandSenderUseCommand(final ICommandSender var1){ + final EntityPlayer P = CommandUtils.getPlayer(var1); + if (P.getDisplayName().toLowerCase().equals("draknyte1") || P.getCommandSenderName().toLowerCase().equals("draknyte1")) { + return true; + } + return false; } @Override - public List<?> addTabCompletionOptions(final ICommandSender var1, final String[] var2) - { - // TODO Auto-generated method stub - + public List<?> addTabCompletionOptions(final ICommandSender var1, final String[] var2){ return null; - } @Override - public boolean isUsernameIndex(final String[] var1, final int var2) - { + public boolean isUsernameIndex(final String[] var1, final int var2){ // TODO Auto-generated method stub - return false; - } - public boolean playerUsesCommand(final World W, final EntityPlayer P, final int cost) - { + public boolean playerUsesCommand(final World W, final EntityPlayer P, final int cost){ return true; diff --git a/src/Java/gtPlusPlus/core/commands/CommandUtils.java b/src/Java/gtPlusPlus/core/commands/CommandUtils.java index 4e74d53464..175925d40c 100644 --- a/src/Java/gtPlusPlus/core/commands/CommandUtils.java +++ b/src/Java/gtPlusPlus/core/commands/CommandUtils.java @@ -5,7 +5,7 @@ import net.minecraft.entity.player.EntityPlayer; public class CommandUtils { - public EntityPlayer getPlayer(final ICommandSender icommandsender){ + public static EntityPlayer getPlayer(final ICommandSender icommandsender){ EntityPlayer player; if(icommandsender instanceof EntityPlayer){ diff --git a/src/Java/gtPlusPlus/core/common/CommonProxy.java b/src/Java/gtPlusPlus/core/common/CommonProxy.java index d5f4d95aef..421a522945 100644 --- a/src/Java/gtPlusPlus/core/common/CommonProxy.java +++ b/src/Java/gtPlusPlus/core/common/CommonProxy.java @@ -5,8 +5,8 @@ import static gtPlusPlus.core.lib.CORE.DEBUG; import cpw.mods.fml.common.event.*; import cpw.mods.fml.common.registry.GameRegistry; import gtPlusPlus.GTplusplus; -import gtPlusPlus.api.objects.ChunkManager; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.minecraft.ChunkManager; import gtPlusPlus.core.block.ModBlocks; import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.entity.InternalEntityRegistry; diff --git a/src/Java/gtPlusPlus/core/config/ConfigHandler.java b/src/Java/gtPlusPlus/core/config/ConfigHandler.java index 98c4320ce7..a9fbec55de 100644 --- a/src/Java/gtPlusPlus/core/config/ConfigHandler.java +++ b/src/Java/gtPlusPlus/core/config/ConfigHandler.java @@ -31,6 +31,8 @@ public class ConfigHandler { "Makes many machines display lots of debug logging."); showHiddenNEIItems = config.getBoolean("showHiddenNEIItems", "debug", false, "Makes all items hidden from NEI display."); + dumpItemAndBlockData = config.getBoolean("dumpItemAndBlockData", "debug", false, + "Dumps all GT++ and Toxic Everglade Data to en_US.lang in the config folder. This config option can be used by foreign players to generate blank .lang files, which they can populate with their language of choice."); // Machines diff --git a/src/Java/gtPlusPlus/core/entity/EntityTeslaTowerLightning.java b/src/Java/gtPlusPlus/core/entity/EntityTeslaTowerLightning.java index 0cd5bd85bf..d1528747a1 100644 --- a/src/Java/gtPlusPlus/core/entity/EntityTeslaTowerLightning.java +++ b/src/Java/gtPlusPlus/core/entity/EntityTeslaTowerLightning.java @@ -5,7 +5,7 @@ import java.util.UUID; import gtPlusPlus.api.damage.DamageTeslaTower; import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.api.objects.XSTR; +import gtPlusPlus.api.objects.random.XSTR; import gtPlusPlus.core.util.entity.EntityUtils; import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; diff --git a/src/Java/gtPlusPlus/core/entity/projectile/EntityHydrofluoricAcidPotion.java b/src/Java/gtPlusPlus/core/entity/projectile/EntityHydrofluoricAcidPotion.java index c935409650..7517011673 100644 --- a/src/Java/gtPlusPlus/core/entity/projectile/EntityHydrofluoricAcidPotion.java +++ b/src/Java/gtPlusPlus/core/entity/projectile/EntityHydrofluoricAcidPotion.java @@ -1,7 +1,7 @@ package gtPlusPlus.core.entity.projectile; import gregtech.api.util.GT_Utility; -import gtPlusPlus.core.util.array.BlockPos; +import gtPlusPlus.api.objects.minecraft.BlockPos; import gtPlusPlus.core.util.entity.EntityUtils; import gtPlusPlus.core.util.math.MathUtils; import net.minecraft.block.Block; diff --git a/src/Java/gtPlusPlus/core/entity/projectile/EntitySulfuricAcidPotion.java b/src/Java/gtPlusPlus/core/entity/projectile/EntitySulfuricAcidPotion.java index cd4bec52bf..dfab6fa8ec 100644 --- a/src/Java/gtPlusPlus/core/entity/projectile/EntitySulfuricAcidPotion.java +++ b/src/Java/gtPlusPlus/core/entity/projectile/EntitySulfuricAcidPotion.java @@ -1,7 +1,7 @@ package gtPlusPlus.core.entity.projectile; import gregtech.api.util.GT_Utility; -import gtPlusPlus.core.util.array.BlockPos; +import gtPlusPlus.api.objects.minecraft.BlockPos; import gtPlusPlus.core.util.entity.EntityUtils; import gtPlusPlus.core.util.math.MathUtils; import net.minecraft.block.Block; diff --git a/src/Java/gtPlusPlus/core/handler/BurnableFuelHandler.java b/src/Java/gtPlusPlus/core/handler/BurnableFuelHandler.java index 79ca0ad174..8bcdaca6a8 100644 --- a/src/Java/gtPlusPlus/core/handler/BurnableFuelHandler.java +++ b/src/Java/gtPlusPlus/core/handler/BurnableFuelHandler.java @@ -1,8 +1,8 @@ package gtPlusPlus.core.handler; import cpw.mods.fml.common.IFuelHandler; +import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.core.lib.CORE; -import gtPlusPlus.core.util.array.Pair; import gtPlusPlus.core.util.item.ItemUtils; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; diff --git a/src/Java/gtPlusPlus/api/analytics/AnalyticsLoggingPlugin.java b/src/Java/gtPlusPlus/core/handler/analytics/AnalyticsLoggingPlugin.java index 2423eaa65c..808c62d7aa 100644 --- a/src/Java/gtPlusPlus/api/analytics/AnalyticsLoggingPlugin.java +++ b/src/Java/gtPlusPlus/core/handler/analytics/AnalyticsLoggingPlugin.java @@ -1,4 +1,4 @@ -package gtPlusPlus.api.analytics; +package gtPlusPlus.core.handler.analytics; import com.segment.analytics.Analytics; import com.segment.analytics.Callback; diff --git a/src/Java/gtPlusPlus/api/analytics/BlockingFlush.java b/src/Java/gtPlusPlus/core/handler/analytics/BlockingFlush.java index dddb37fefb..09d1cd5104 100644 --- a/src/Java/gtPlusPlus/api/analytics/BlockingFlush.java +++ b/src/Java/gtPlusPlus/core/handler/analytics/BlockingFlush.java @@ -1,4 +1,4 @@ -package gtPlusPlus.api.analytics; +package gtPlusPlus.core.handler.analytics; import com.segment.analytics.Analytics; import com.segment.analytics.Callback; diff --git a/src/Java/gtPlusPlus/api/analytics/SegmentAnalytics.java b/src/Java/gtPlusPlus/core/handler/analytics/SegmentAnalytics.java index c4ef82b9ef..a217f896cf 100644 --- a/src/Java/gtPlusPlus/api/analytics/SegmentAnalytics.java +++ b/src/Java/gtPlusPlus/core/handler/analytics/SegmentAnalytics.java @@ -1,4 +1,4 @@ -package gtPlusPlus.api.analytics; +package gtPlusPlus.core.handler.analytics; import java.util.LinkedHashMap; import java.util.Map; diff --git a/src/Java/gtPlusPlus/api/analytics/SegmentHelper.java b/src/Java/gtPlusPlus/core/handler/analytics/SegmentHelper.java index 6e264fe1d2..79b95eda24 100644 --- a/src/Java/gtPlusPlus/api/analytics/SegmentHelper.java +++ b/src/Java/gtPlusPlus/core/handler/analytics/SegmentHelper.java @@ -1,4 +1,4 @@ -package gtPlusPlus.api.analytics; +package gtPlusPlus.core.handler.analytics; import com.segment.analytics.Analytics; import com.segment.analytics.Callback; diff --git a/src/Java/gtPlusPlus/core/handler/events/BlockEventHandler.java b/src/Java/gtPlusPlus/core/handler/events/BlockEventHandler.java index cd79cf7fe6..0c6e798edd 100644 --- a/src/Java/gtPlusPlus/core/handler/events/BlockEventHandler.java +++ b/src/Java/gtPlusPlus/core/handler/events/BlockEventHandler.java @@ -9,9 +9,9 @@ import java.util.Map; import java.util.Random; import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import gtPlusPlus.api.analytics.SegmentAnalytics; -import gtPlusPlus.api.analytics.SegmentHelper; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.core.handler.analytics.SegmentAnalytics; +import gtPlusPlus.core.handler.analytics.SegmentHelper; import gtPlusPlus.core.item.ModItems; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.lib.LoadedMods; diff --git a/src/Java/gtPlusPlus/core/handler/events/LoginEventHandler.java b/src/Java/gtPlusPlus/core/handler/events/LoginEventHandler.java index 09365e3caf..c8c6a23bca 100644 --- a/src/Java/gtPlusPlus/core/handler/events/LoginEventHandler.java +++ b/src/Java/gtPlusPlus/core/handler/events/LoginEventHandler.java @@ -4,9 +4,9 @@ import java.util.*; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent; -import gtPlusPlus.api.analytics.SegmentAnalytics; -import gtPlusPlus.api.analytics.SegmentHelper; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.core.handler.analytics.SegmentAnalytics; +import gtPlusPlus.core.handler.analytics.SegmentHelper; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.lib.LoadedMods; import gtPlusPlus.core.proxy.ClientProxy; diff --git a/src/Java/gtPlusPlus/core/handler/events/PickaxeBlockBreakEventHandler.java b/src/Java/gtPlusPlus/core/handler/events/PickaxeBlockBreakEventHandler.java index aa9155d654..bdc9489f1d 100644 --- a/src/Java/gtPlusPlus/core/handler/events/PickaxeBlockBreakEventHandler.java +++ b/src/Java/gtPlusPlus/core/handler/events/PickaxeBlockBreakEventHandler.java @@ -5,10 +5,8 @@ import java.util.UUID; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.metatileentity.*; -import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.util.player.PlayerUtils; import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.machines.GregtechMetaSafeBlockBase; -import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.event.entity.player.PlayerInteractEvent; @@ -20,25 +18,14 @@ public class PickaxeBlockBreakEventHandler { try{ final TileEntity entity = event.world.getTileEntity(event.x, event.y, event.z); if (entity != null){ - final EntityPlayer playerInternal = event.getPlayer(); - Logger.WARNING(entity.getClass().getSimpleName()); - if (entity.getClass().getSimpleName().equals("")){ - - } - if ((entity instanceof BaseTileEntity) && !(entity instanceof BaseMetaPipeEntity)){ + final EntityPlayer playerInternal = event.getPlayer(); + if ((entity instanceof BaseMetaTileEntity) && !(BaseMetaPipeEntity.class.isInstance(entity))){ final IMetaTileEntity X = ((BaseMetaTileEntity)entity).getMetaTileEntity(); - final Block ThisBlock = X.getBaseMetaTileEntity().getBlock(event.x, event.y, event.z); + //final Block ThisBlock = X.getBaseMetaTileEntity().getBlock(event.x, event.y, event.z); if (X instanceof GregtechMetaSafeBlockBase){ - final UUID ownerUUID = ((GregtechMetaSafeBlockBase)X).ownerUUID; final UUID accessorUUID = playerInternal.getUniqueID(); - Logger.WARNING("Owner UUID: "+ownerUUID); - Logger.WARNING("Accessor UUID: "+accessorUUID); - if (((GregtechMetaSafeBlockBase)X).bUnbreakable){ - - Logger.INFO("UUID info. Accessor: "+accessorUUID + " | Owner: "+ownerUUID); - if (accessorUUID == ownerUUID){ PlayerUtils.messagePlayer(playerInternal, "Since you own this block, it has been destroyed."); event.setCanceled(false); @@ -47,15 +34,13 @@ public class PickaxeBlockBreakEventHandler { event.setCanceled(true); PlayerUtils.messagePlayer(playerInternal, "Since you do not own this block, it has not been destroyed."); } - // } } } } - } catch (final NullPointerException e) { - System.out.print("Caught a NullPointerException involving Safe Blocks. Cause: "+e.getCause()); + //System.out.print("Caught a NullPointerException involving Safe Blocks. Cause: "+e.getCause()); } } diff --git a/src/Java/gtPlusPlus/core/handler/events/ZombieBackupSpawnEventHandler.java b/src/Java/gtPlusPlus/core/handler/events/ZombieBackupSpawnEventHandler.java index 877b0c6ced..572f52124f 100644 --- a/src/Java/gtPlusPlus/core/handler/events/ZombieBackupSpawnEventHandler.java +++ b/src/Java/gtPlusPlus/core/handler/events/ZombieBackupSpawnEventHandler.java @@ -7,8 +7,8 @@ import org.apache.commons.lang3.reflect.FieldUtils; import cpw.mods.fml.common.eventhandler.Event.Result; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import gtPlusPlus.api.analytics.SegmentHelper; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.core.handler.analytics.SegmentHelper; import net.minecraftforge.event.entity.living.ZombieEvent; public class ZombieBackupSpawnEventHandler { diff --git a/src/Java/gtPlusPlus/core/item/base/BaseEuItem.java b/src/Java/gtPlusPlus/core/item/base/BaseEuItem.java index 8f8d0eed72..a32ff20353 100644 --- a/src/Java/gtPlusPlus/core/item/base/BaseEuItem.java +++ b/src/Java/gtPlusPlus/core/item/base/BaseEuItem.java @@ -16,9 +16,9 @@ import gregtech.api.interfaces.IItemBehaviour; import gregtech.api.interfaces.IItemContainer; import gregtech.api.objects.ItemData; import gregtech.api.util.*; +import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.lib.CORE; -import gtPlusPlus.core.util.array.Pair; import ic2.api.item.*; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; diff --git a/src/Java/gtPlusPlus/core/item/base/BaseItemBurnable.java b/src/Java/gtPlusPlus/core/item/base/BaseItemBurnable.java index 42aadfa91d..76d66069f5 100644 --- a/src/Java/gtPlusPlus/core/item/base/BaseItemBurnable.java +++ b/src/Java/gtPlusPlus/core/item/base/BaseItemBurnable.java @@ -1,7 +1,7 @@ package gtPlusPlus.core.item.base; +import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.core.lib.CORE; -import gtPlusPlus.core.util.array.Pair; import gtPlusPlus.core.util.item.ItemUtils; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; diff --git a/src/Java/gtPlusPlus/core/item/base/BaseItemComponent.java b/src/Java/gtPlusPlus/core/item/base/BaseItemComponent.java index 7622838f68..8b68d955e3 100644 --- a/src/Java/gtPlusPlus/core/item/base/BaseItemComponent.java +++ b/src/Java/gtPlusPlus/core/item/base/BaseItemComponent.java @@ -86,7 +86,7 @@ public class BaseItemComponent extends Item{ //return "gregtech" + ":" + "materialicons/"+metType+"/" + this.componentType.COMPONENT_NAME.toLowerCase(); } - @Override + /*@Override public String getItemStackDisplayName(final ItemStack p_77653_1_) { if (this.componentType == ComponentTypes.SMALLGEAR){ @@ -97,7 +97,7 @@ public class BaseItemComponent extends Item{ return (this.componentMaterial.getLocalizedName()+this.componentType.DISPLAY_NAME); } return this.materialName+" Cell"; - } + }*/ public final String getMaterialName() { return this.materialName; diff --git a/src/Java/gtPlusPlus/core/item/base/CoreItem.java b/src/Java/gtPlusPlus/core/item/base/CoreItem.java index 3b0fa7b621..d80553de96 100644 --- a/src/Java/gtPlusPlus/core/item/base/CoreItem.java +++ b/src/Java/gtPlusPlus/core/item/base/CoreItem.java @@ -194,11 +194,11 @@ public class CoreItem extends Item } } - @Override +/* @Override public String getItemStackDisplayName(final ItemStack tItem) { if ((this.itemName == null) || this.itemName.equals("")) { return super.getItemStackDisplayName(tItem); } return this.itemName; - } + }*/ }
\ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockNBT.java b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockNBT.java index 4ac7c7f5ff..aed0145303 100644 --- a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockNBT.java +++ b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockNBT.java @@ -1,6 +1,9 @@ package gtPlusPlus.core.item.base.itemblock; +import java.util.List; + import gregtech.api.util.GT_Utility; +import gtPlusPlus.api.interfaces.ITileTooltip; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.tileentities.base.TileEntityBase; import gtPlusPlus.core.util.player.PlayerUtils; @@ -15,10 +18,29 @@ import net.minecraft.world.World; public class ItemBlockNBT extends ItemBlock { + + protected final int mID; + public ItemBlockNBT(final Block block) { super(block); + this.mID = ((ITileTooltip) block).getTooltipID(); + } + + + @Override + public void addInformation(final ItemStack stack, final EntityPlayer aPlayer, final List list, final boolean bool) { + + //if () + + + + if (this.mID == 0){ //blockDarkWorldPortalFrame + list.add("Assembled in the same shape as the Nether Portal."); + } } + + @Override public void onCreated(ItemStack item, World world, EntityPlayer player) { addNBT(player, item); @@ -59,17 +81,13 @@ public class ItemBlockNBT extends ItemBlock { @Override public boolean placeBlockAt(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int side, float hitX, float hitY, float hitZ, int aMeta) { - - - if (!(aWorld.setBlock(aX, aY, aZ, this.field_150939_a, 0, 3))) { return false; } if (aWorld.getBlock(aX, aY, aZ) == this.field_150939_a) { this.field_150939_a.onBlockPlacedBy(aWorld, aX, aY, aZ, aPlayer, aStack); this.field_150939_a.onPostBlockPlaced(aWorld, aX, aY, aZ, aMeta); - } - + } TileEntityBase tTileEntity = (TileEntityBase) aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity != null && aPlayer != null) { if (tTileEntity.isServerSide()){ @@ -78,7 +96,6 @@ public class ItemBlockNBT extends ItemBlock { tTileEntity.setOwnerInformation(aNBT.getString("mOwner"), aNBT.getString("mUUID"), aNBT.getBoolean("mOP")); } } - return true; } diff --git a/src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java b/src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java index e2de72fa57..d11deecc17 100644 --- a/src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java +++ b/src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java @@ -57,10 +57,10 @@ public class BaseOreComponent extends Item{ return "gregtech" + ":" + "materialicons/METALLIC/" + this.componentType.COMPONENT_NAME; } - @Override + /*@Override public String getItemStackDisplayName(final ItemStack p_77653_1_) { return (this.componentType.getPrefix()+this.componentMaterial.getLocalizedName()+this.componentType.DISPLAY_NAME); - } + }*/ public final String getMaterialName() { return this.materialName; diff --git a/src/Java/gtPlusPlus/core/item/general/ItemAreaClear.java b/src/Java/gtPlusPlus/core/item/general/ItemAreaClear.java index fc92d5d82c..a3f7b78888 100644 --- a/src/Java/gtPlusPlus/core/item/general/ItemAreaClear.java +++ b/src/Java/gtPlusPlus/core/item/general/ItemAreaClear.java @@ -3,11 +3,11 @@ package gtPlusPlus.core.item.general; import java.util.List; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.minecraft.BlockPos; import gtPlusPlus.core.block.base.BlockBaseOre; import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.item.base.CoreItem; import gtPlusPlus.core.lib.CORE; -import gtPlusPlus.core.util.array.BlockPos; import gtPlusPlus.core.util.entity.EntityUtils; import gtPlusPlus.core.util.math.MathUtils; import net.minecraft.client.renderer.texture.IIconRegister; diff --git a/src/Java/gtPlusPlus/core/item/general/ItemHalfCompleteCasings.java b/src/Java/gtPlusPlus/core/item/general/ItemHalfCompleteCasings.java index 0463628e46..1ad12b69d4 100644 --- a/src/Java/gtPlusPlus/core/item/general/ItemHalfCompleteCasings.java +++ b/src/Java/gtPlusPlus/core/item/general/ItemHalfCompleteCasings.java @@ -32,7 +32,7 @@ public class ItemHalfCompleteCasings extends BaseItemColourable{ } } - @Override + /*@Override public String getItemStackDisplayName(final ItemStack tItem) { String prefix = "Half Complete Casing "; String casingType = ""; @@ -50,7 +50,7 @@ public class ItemHalfCompleteCasings extends BaseItemColourable{ } return (prefix+casingType); - } + }*/ @Override public int getColorFromItemStack(ItemStack stack, int HEX_OxFFFFFF) { diff --git a/src/Java/gtPlusPlus/core/item/general/capture/ItemEntityCatcher.java b/src/Java/gtPlusPlus/core/item/general/capture/ItemEntityCatcher.java index 1b8ab947e5..64f1c4e139 100644 --- a/src/Java/gtPlusPlus/core/item/general/capture/ItemEntityCatcher.java +++ b/src/Java/gtPlusPlus/core/item/general/capture/ItemEntityCatcher.java @@ -6,10 +6,10 @@ import java.util.UUID; import cpw.mods.fml.common.registry.GameRegistry; import gtPlusPlus.api.interfaces.IEntityCatcher; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.minecraft.BlockPos; import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.Utils; -import gtPlusPlus.core.util.array.BlockPos; import gtPlusPlus.core.util.nbt.NBTUtils; import gtPlusPlus.core.util.player.PlayerUtils; import net.minecraft.entity.*; diff --git a/src/Java/gtPlusPlus/core/item/tool/staballoy/MultiPickaxeBase.java b/src/Java/gtPlusPlus/core/item/tool/staballoy/MultiPickaxeBase.java index 45e0bd8fe6..66b4d87511 100644 --- a/src/Java/gtPlusPlus/core/item/tool/staballoy/MultiPickaxeBase.java +++ b/src/Java/gtPlusPlus/core/item/tool/staballoy/MultiPickaxeBase.java @@ -6,10 +6,10 @@ import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.Utils; -import gtPlusPlus.core.util.array.Pair; import gtPlusPlus.core.util.item.ItemUtils; import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.core.util.recipe.RecipeUtils; diff --git a/src/Java/gtPlusPlus/core/lib/CORE.java b/src/Java/gtPlusPlus/core/lib/CORE.java index c43c8dd3e7..67de9e64dd 100644 --- a/src/Java/gtPlusPlus/core/lib/CORE.java +++ b/src/Java/gtPlusPlus/core/lib/CORE.java @@ -6,10 +6,10 @@ import java.util.concurrent.ConcurrentHashMap; import com.mojang.authlib.GameProfile; import gregtech.api.GregTech_API; -import gtPlusPlus.api.objects.CSPRNG_DO_NOT_USE; -import gtPlusPlus.api.objects.XSTR; +import gtPlusPlus.api.objects.data.Pair; +import gtPlusPlus.api.objects.random.CSPRNG_DO_NOT_USE; +import gtPlusPlus.api.objects.random.XSTR; import gtPlusPlus.core.util.Utils; -import gtPlusPlus.core.util.array.Pair; import gtPlusPlus.core.util.geo.GeoUtils; import gtPlusPlus.core.util.gregtech.recipehandlers.GregtechRecipe; import gtPlusPlus.core.util.networking.NetworkUtils; @@ -47,7 +47,7 @@ public class CORE { public static final String name = "GT++"; public static final String MODID = "miscutils"; - public static final String VERSION = "1.7.0-prerelease-4"; + public static final String VERSION = "1.7.0-prerelease-5"; public static String MASTER_VERSION = NetworkUtils.getContentFromURL("https://raw.githubusercontent.com/draknyte1/GTplusplus/master/Recommended.txt").toLowerCase(); public static String USER_COUNTRY = GeoUtils.determineUsersCountry(); public static boolean isModUpToDate = Utils.isModUpToDate(); @@ -148,6 +148,7 @@ public class CORE { public static boolean disableEnderIOIngotTooltips = false; public static boolean MACHINE_INFO = true; public static boolean showHiddenNEIItems = false; + public static boolean dumpItemAndBlockData = false; //Tools public static boolean enableSkookumChoochers = true; diff --git a/src/Java/gtPlusPlus/core/material/Material.java b/src/Java/gtPlusPlus/core/material/Material.java index eca3c595ec..22c65c5a2b 100644 --- a/src/Java/gtPlusPlus/core/material/Material.java +++ b/src/Java/gtPlusPlus/core/material/Material.java @@ -7,13 +7,13 @@ import java.util.Map.Entry; import gregtech.api.enums.*; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.AutoMap; +import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.core.item.base.cell.BaseItemCell; import gtPlusPlus.core.material.state.MaterialState; import gtPlusPlus.core.util.StringUtils; import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.array.ArrayUtils; -import gtPlusPlus.core.util.array.AutoMap; -import gtPlusPlus.core.util.array.Pair; import gtPlusPlus.core.util.fluid.FluidUtils; import gtPlusPlus.core.util.item.ItemUtils; import gtPlusPlus.core.util.materials.MaterialUtils; diff --git a/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java b/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java index bd53c4f38a..969eb3aed8 100644 --- a/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java +++ b/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java @@ -27,7 +27,6 @@ import gtPlusPlus.core.util.reflect.AddGregtechRecipe; import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList; import net.minecraft.init.Blocks; import net.minecraft.init.Items; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; @@ -1040,16 +1039,53 @@ public class RECIPES_GREGTECH { //LFTR Fuel Related Compounds - //Hydroxide - GT_Values.RA.addChemicalRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("cellOxygen", 1), - ItemUtils.getItemStackOfAmountFromOreDict("cellHydrogen", 1), - GT_Values.NF, - FluidUtils.getFluidStack("hydroxide", 2000), - ItemUtils.getItemStackOfAmountFromOreDict("cellEmpty", 2), - 8*20); - //Ammonia + if(CORE.GTNH){ + //Hydroxide + AddGregtechRecipe.addChemicalRecipeForBasicMachineOnly( + ItemUtils.getItemStackOfAmountFromOreDict("cellOxygen", 1), + ItemUtils.getItemStackOfAmountFromOreDict("cellHydrogen", 1), + GT_Values.NF, + FluidUtils.getFluidStack("hydroxide", 2000), + ItemUtils.getItemStackOfAmountFromOreDict("cellEmpty", 2), + GT_Values.NI, + 8*20, 30); + //Beryllium Hydroxide + GT_Values.RA.addChemicalRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("dustBeryllium", 7), + ItemUtils.getGregtechCircuit(3), + FluidUtils.getFluidStack("hydroxide", 1000), + FluidUtils.getFluidStack("berylliumhydroxide", 2000), + GT_Values.NI, + 8*20); + //Ammonium Bifluoride + GT_Values.RA.addChemicalRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("cellHydrofluoricAcid", 1), + ItemUtils.getGregtechCircuit(3), + FluidUtils.getFluidStack("ammonium", 1000), + FluidUtils.getFluidStack("ammoniumbifluoride", 2000), + ItemUtils.getItemStackOfAmountFromOreDict("cellEmpty", 1), + 26*20); + //Ammonium + AddGregtechRecipe.addChemicalRecipeForBasicMachineOnly( + ItemUtils.getItemStackOfAmountFromOreDict("cellAmmonia", 1), + ItemUtils.getItemStackOfAmountFromOreDict("cellHydrogen", 1), + GT_Values.NF, + FluidUtils.getFluidStack("ammonium", 2000), + ItemUtils.getItemStackOfAmountFromOreDict("cellEmpty", 2), + GT_Values.NI, + 20*20, 30); + } + if (!CORE.GTNH) { + //Hydroxide + GT_Values.RA.addChemicalRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("cellOxygen", 1), + ItemUtils.getItemStackOfAmountFromOreDict("cellHydrogen", 1), + GT_Values.NF, + FluidUtils.getFluidStack("hydroxide", 2000), + ItemUtils.getItemStackOfAmountFromOreDict("cellEmpty", 2), + 8*20); + //Ammonia (moved to GTNH core mod) GT_Values.RA.addChemicalRecipe( ItemUtils.getItemStackOfAmountFromOreDict("cellHydrogen", 3), ItemUtils.getItemStackOfAmountFromOreDict("dustMagnetite", 0), @@ -1057,31 +1093,31 @@ public class RECIPES_GREGTECH { FluidUtils.getFluidStack("ammonia", 1000), ItemUtils.getItemStackOfAmountFromOreDict("cellEmpty", 3), 14 * 20); - }//moved to GTNH core mod - //Ammonium - GT_Values.RA.addChemicalRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("cellAmmonia", 1), - ItemUtils.getItemStackOfAmountFromOreDict("cellHydrogen", 1), - GT_Values.NF, - FluidUtils.getFluidStack("ammonium", 2000), - ItemUtils.getItemStackOfAmountFromOreDict("cellEmpty", 2), - 20*20); - //Ammonium Bifluoride - GT_Values.RA.addChemicalRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("cellHydrofluoricAcid", 1), - GT_Values.NI, - FluidUtils.getFluidStack("ammonium", 1000), - FluidUtils.getFluidStack("ammoniumbifluoride", 2000), - ItemUtils.getItemStackOfAmountFromOreDict("cellEmpty", 1), - 26*20); - //Beryllium Hydroxide - GT_Values.RA.addChemicalRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("dustBeryllium", 7), - GT_Values.NI, - FluidUtils.getFluidStack("hydroxide", 1000), - FluidUtils.getFluidStack("berylliumhydroxide", 2000), - GT_Values.NI, - 8*20); + //Beryllium Hydroxide + GT_Values.RA.addChemicalRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("dustBeryllium", 7), + GT_Values.NI, + FluidUtils.getFluidStack("hydroxide", 1000), + FluidUtils.getFluidStack("berylliumhydroxide", 2000), + GT_Values.NI, + 8*20); + //Ammonium Bifluoride + GT_Values.RA.addChemicalRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("cellHydrofluoricAcid", 1), + GT_Values.NI, + FluidUtils.getFluidStack("ammonium", 1000), + FluidUtils.getFluidStack("ammoniumbifluoride", 2000), + ItemUtils.getItemStackOfAmountFromOreDict("cellEmpty", 1), + 26*20); + //Ammonium + GT_Values.RA.addChemicalRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("cellAmmonia", 1), + ItemUtils.getItemStackOfAmountFromOreDict("cellHydrogen", 1), + GT_Values.NF, + FluidUtils.getFluidStack("ammonium", 2000), + ItemUtils.getItemStackOfAmountFromOreDict("cellEmpty", 2), + 20*20); + } } private static void blastFurnaceRecipes(){ diff --git a/src/Java/gtPlusPlus/core/slots/SlotModularBaubleUpgrades.java b/src/Java/gtPlusPlus/core/slots/SlotModularBaubleUpgrades.java index 85de0df60e..b6930dfe27 100644 --- a/src/Java/gtPlusPlus/core/slots/SlotModularBaubleUpgrades.java +++ b/src/Java/gtPlusPlus/core/slots/SlotModularBaubleUpgrades.java @@ -7,7 +7,7 @@ import java.util.Iterator; import java.util.Map.Entry; import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.core.util.array.Pair; +import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.core.util.nbt.ModularArmourUtils.BT; import gtPlusPlus.core.util.nbt.ModularArmourUtils.Modifiers; import net.minecraft.inventory.IInventory; diff --git a/src/Java/gtPlusPlus/core/tileentities/base/TileEntityBase.java b/src/Java/gtPlusPlus/core/tileentities/base/TileEntityBase.java index 81dfb1acf4..f8d4c3074e 100644 --- a/src/Java/gtPlusPlus/core/tileentities/base/TileEntityBase.java +++ b/src/Java/gtPlusPlus/core/tileentities/base/TileEntityBase.java @@ -82,7 +82,6 @@ public abstract class TileEntityBase extends TileEntity implements ISidedInvento } public boolean onPreTick(){ - return true; } @@ -141,10 +140,7 @@ public abstract class TileEntityBase extends TileEntity implements ISidedInvento public boolean isServerSide(){ if (this.hasWorldObj()){ - if (this.getWorldObj().isRemote){ - return false; - } - else { + if (!this.getWorldObj().isRemote){ return true; } } diff --git a/src/Java/gtPlusPlus/core/tileentities/base/TilePoweredGT.java b/src/Java/gtPlusPlus/core/tileentities/base/TilePoweredGT.java new file mode 100644 index 0000000000..8b789f922f --- /dev/null +++ b/src/Java/gtPlusPlus/core/tileentities/base/TilePoweredGT.java @@ -0,0 +1,1171 @@ +package gtPlusPlus.core.tileentities.base; + +import gregtech.api.GregTech_API; +import gregtech.api.enums.GT_Values; +import gregtech.api.interfaces.tileentity.IEnergyConnected; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.net.GT_Packet; +import gregtech.api.net.GT_Packet_Block_Event; +import gregtech.api.net.GT_Packet_TileEntity; +import gregtech.api.net.IGT_NetworkHandler; +import gregtech.api.util.GT_Utility; +import gtPlusPlus.api.interfaces.IGregtechPower; +import gtPlusPlus.api.objects.data.AutoMap; +import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.util.Utils; +import ic2.api.info.Info; +import net.minecraft.block.Block; +import net.minecraft.block.BlockFire; +import net.minecraft.entity.Entity; +import net.minecraft.init.Blocks; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.Packet; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public abstract class TilePoweredGT extends TileEntityBase implements IGregtechPower { + + public static AutoMap<TilePoweredGT> mPoweredEntities = new AutoMap<TilePoweredGT>(); + + //Base Tile Fields + public boolean ignoreUnloadedChunks; + public boolean isDead; + //Meta Tile Fields + private long mAcceptedAmperes; + + private boolean[] mActiveEUInputs; + private boolean[] mActiveEUOutputs; + protected int[] mAverageEUInput; + protected int mAverageEUInputIndex; + protected int[] mAverageEUOutput; + protected int mAverageEUOutputIndex; + private final TileEntity[] mBufferedTileEntities; + private byte mFacing = 0; + private boolean mHasEnoughEnergy; + private boolean mNeedsUpdate; + private boolean mNeedsBlockUpdate; + private boolean mRunningThroughTick; + private boolean mSendClientData; + protected boolean mReleaseEnergy; + private long mTickTimer; + protected long mStoredEnergy; + protected long mStoredSteam; + + public TilePoweredGT() { + super(); + this.mBufferedTileEntities = new TileEntity[6]; + this.ignoreUnloadedChunks = true; + this.isDead = false; + mPoweredEntities.put(this); + } + + @Override + public boolean acceptsRotationalEnergy(byte p0) { + return false; + } + + private boolean canAccessData() { + return this.isInvalid() ? false : true; + } + + private final void clearNullMarkersFromTileEntityBuffer() { + for (int i = 0; i < this.mBufferedTileEntities.length; ++i) { + if (this.mBufferedTileEntities[i] == this) { + this.mBufferedTileEntities[i] = null; + } + } + } + + protected final void clearTileEntityBuffer() { + for (int i = 0; i < this.mBufferedTileEntities.length; ++i) { + this.mBufferedTileEntities[i] = null; + } + } + + private boolean crossedChunkBorder(final int aX, final int aZ) { + return aX >> 4 != this.xCoord >> 4 || aZ >> 4 != this.zCoord >> 4; + } + + @Override + public boolean decreaseStoredEnergyUnits(final long aEnergy, final boolean aIgnoreTooLessEnergy) { + return this.canAccessData() && (this.mHasEnoughEnergy = (this.decreaseStoredEU(aEnergy, aIgnoreTooLessEnergy) + || this.decreaseStoredSteam(aEnergy, false) + || (aIgnoreTooLessEnergy && this.decreaseStoredSteam(aEnergy, true)))); + } + + public boolean decreaseStoredEU(final long aEnergy, final boolean aIgnoreTooLessEnergy) { + if (!this.canAccessData()) { + return false; + } + if (this.getEUVar() - aEnergy < 0L && !aIgnoreTooLessEnergy) { + return false; + } + this.setStoredEU(this.getEUVar() - aEnergy); + if (this.getEUVar() < 0L) { + this.setStoredEU(0L); + return false; + } + return true; + } + + public boolean decreaseStoredSteam(final long aEnergy, final boolean aIgnoreTooLessEnergy) { + if (!this.canAccessData()) { + return false; + } + if (this.getSteamVar() - aEnergy < 0L && !aIgnoreTooLessEnergy) { + return false; + } + this.setStoredSteam(this.getSteamVar() - aEnergy); + if (this.getSteamVar() < 0L) { + this.setStoredSteam(0L); + return false; + } + return true; + } + + public void doExplosion(final long aExplosionPower) { + final float tStrength = (aExplosionPower < GT_Values.V[0]) + ? 1.0f + : ((aExplosionPower < GT_Values.V[1]) + ? 2.0f + : ((aExplosionPower < GT_Values.V[2]) + ? 3.0f + : ((aExplosionPower < GT_Values.V[3]) + ? 4.0f + : ((aExplosionPower < GT_Values.V[4]) + ? 5.0f + : ((aExplosionPower < GT_Values.V[4] * 2L) + ? 6.0f + : ((aExplosionPower < GT_Values.V[5]) + ? 7.0f + : ((aExplosionPower < GT_Values.V[6]) + ? 8.0f + : ((aExplosionPower < GT_Values.V[7]) + ? 9.0f + : 10.0f)))))))); + final int tX = this.getXCoord(); + final int tY = this.getYCoord(); + final int tZ = this.getZCoord(); + final World tWorld = this.getWorld(); + GT_Utility.sendSoundToPlayers(tWorld, (String) GregTech_API.sSoundList.get(209), 1.0f, -1.0f, tX, tY, tZ); + tWorld.setBlock(tX, tY, tZ, Blocks.air); + if (GregTech_API.sMachineExplosions) { + tWorld.createExplosion((Entity) null, tX + 0.5, tY + 0.5, tZ + 0.5, tStrength, true); + } + } + + public boolean drainEnergyUnits(final byte aSide, final long aVoltage, final long aAmperage) { + if (!this.canAccessData() || !this.isElectric() || !this.outputsEnergyTo(aSide) + || this.getStoredEU() - aVoltage * aAmperage < this.getMinimumStoredEU()) { + return false; + } + if (this.decreaseStoredEU(aVoltage * aAmperage, false)) { + final int[] mAverageEUOutput = this.mAverageEUOutput; + final int mAverageEUOutputIndex = this.mAverageEUOutputIndex; + mAverageEUOutput[mAverageEUOutputIndex] += (int) (aVoltage * aAmperage); + return true; + } + return false; + } + + @Override + public final boolean getAir(final int aX, final int aY, final int aZ) { + return (this.ignoreUnloadedChunks && this.crossedChunkBorder(aX, aZ) && !this.worldObj.blockExists(aX, aY, aZ)) + || GT_Utility.isBlockAir(this.worldObj, aX, aY, aZ); + } + + @Override + public final boolean getAirAtSide(final byte aSide) { + return this.getAirAtSideAndDistance(aSide, 1); + } + + @Override + public final boolean getAirAtSideAndDistance(final byte aSide, final int aDistance) { + return this.getAir(this.getOffsetX(aSide, aDistance), this.getOffsetY(aSide, aDistance), + this.getOffsetZ(aSide, aDistance)); + } + + @Override + public final boolean getAirOffset(final int aX, final int aY, final int aZ) { + return this.getAir(this.xCoord + aX, this.yCoord + aY, this.zCoord + aZ); + } + + @Override + public long getAverageElectricInput() { + int rEU = 0; + for (int i = 0; i < this.mAverageEUInput.length; ++i) { + if (i != this.mAverageEUInputIndex) { + rEU += this.mAverageEUInput[i]; + } + } + return rEU / (this.mAverageEUInput.length - 1); + } + + public long getAverageElectricOutput() { + int rEU = 0; + for (int i = 0; i < this.mAverageEUOutput.length; ++i) { + if (i != this.mAverageEUOutputIndex) { + rEU += this.mAverageEUOutput[i]; + } + } + return rEU / (this.mAverageEUOutput.length - 1); + } + + @Override + public byte getBackFacing() { + return GT_Utility.getOppositeSide((int) this.mFacing); + } + + @Override + public final Block getBlock(final int aX, final int aY, final int aZ) { + if (this.ignoreUnloadedChunks && this.crossedChunkBorder(aX, aZ) && !this.worldObj.blockExists(aX, aY, aZ)) { + return Blocks.air; + } + return this.worldObj.getBlock(aX, aY, aZ); + } + + + @Override + public final Block getBlockAtSide(final byte aSide) { + return this.getBlockAtSideAndDistance(aSide, 1); + } + + @Override + public final Block getBlockAtSideAndDistance(final byte aSide, final int aDistance) { + return this.getBlock(this.getOffsetX(aSide, aDistance), this.getOffsetY(aSide, aDistance), + this.getOffsetZ(aSide, aDistance)); + } + + @Override + public final Block getBlockOffset(final int aX, final int aY, final int aZ) { + return this.getBlock(this.xCoord + aX, this.yCoord + aY, this.zCoord + aZ); + } + + @Override + public String[] getDescription() { + // TODO Auto-generated method stub + return null; + } + + + + + + + + + @Override + public long getEUCapacity() { + if (this.canAccessData()) { + return this.maxEUStore(); + } + return 0L; + } + + public long getEUVar() { + return mStoredEnergy; + } + + @Override + public byte getFrontFacing() { + return this.mFacing; + } + + @Override + public final IGregTechTileEntity getIGregTechTileEntity(final int aX, final int aY, final int aZ) { + final TileEntity tTileEntity = this.getTileEntity(aX, aY, aZ); + if (tTileEntity instanceof IGregTechTileEntity) { + return (IGregTechTileEntity) tTileEntity; + } + return null; + } + + @Override + public final IGregTechTileEntity getIGregTechTileEntityAtSide(final byte aSide) { + final TileEntity tTileEntity = this.getTileEntityAtSide(aSide); + if (tTileEntity instanceof IGregTechTileEntity) { + return (IGregTechTileEntity) tTileEntity; + } + return null; + } + + @Override + public final IGregTechTileEntity getIGregTechTileEntityAtSideAndDistance(final byte aSide, final int aDistance) { + final TileEntity tTileEntity = this.getTileEntityAtSideAndDistance(aSide, aDistance); + if (tTileEntity instanceof IGregTechTileEntity) { + return (IGregTechTileEntity) tTileEntity; + } + return null; + } + + @Override + public final IGregTechTileEntity getIGregTechTileEntityOffset(final int aX, final int aY, final int aZ) { + final TileEntity tTileEntity = this.getTileEntityOffset(aX, aY, aZ); + if (tTileEntity instanceof IGregTechTileEntity) { + return (IGregTechTileEntity) tTileEntity; + } + return null; + } + + @Override + public final IInventory getIInventory(final int aX, final int aY, final int aZ) { + final TileEntity tTileEntity = this.getTileEntity(aX, aY, aZ); + if (tTileEntity instanceof IInventory) { + return (IInventory) tTileEntity; + } + return null; + } + + @Override + public final IInventory getIInventoryAtSide(final byte aSide) { + final TileEntity tTileEntity = this.getTileEntityAtSide(aSide); + if (tTileEntity instanceof IInventory) { + return (IInventory) tTileEntity; + } + return null; + } + + @Override + public final IInventory getIInventoryAtSideAndDistance(final byte aSide, final int aDistance) { + final TileEntity tTileEntity = this.getTileEntityAtSideAndDistance(aSide, aDistance); + if (tTileEntity instanceof IInventory) { + return (IInventory) tTileEntity; + } + return null; + } + + @Override + public final IInventory getIInventoryOffset(final int aX, final int aY, final int aZ) { + final TileEntity tTileEntity = this.getTileEntityOffset(aX, aY, aZ); + if (tTileEntity instanceof IInventory) { + return (IInventory) tTileEntity; + } + return null; + } + + @Override + public String[] getInfoData() { + // TODO Auto-generated method stub + return null; + } + + @Override + public long getInputAmperage() { + if (this.canAccessData() && this.isElectric()) { + return this.maxAmperesIn(); + } + return 0L; + } + + public long getInputTier() { + return GT_Utility.getTier(this.getInputVoltage()); + } + + @Override + public long getInputVoltage() { + if (this.canAccessData() && this.isElectric()) { + return this.maxEUInput(); + } + return 2147483647L; + } + + private long getMinimumStoredEU() { + return 0; + } + + @Override + public final int getOffsetX(final byte aSide, final int aMultiplier) { + return this.xCoord + ForgeDirection.getOrientation((int) aSide).offsetX * aMultiplier; + } + + public final short getOffsetY(final byte aSide, final int aMultiplier) { + return (short) (this.yCoord + ForgeDirection.getOrientation((int) aSide).offsetY * aMultiplier); + } + + public final int getOffsetZ(final byte aSide, final int aMultiplier) { + return this.zCoord + ForgeDirection.getOrientation((int) aSide).offsetZ * aMultiplier; + } + + @Override + public long getOutputAmperage() { + if (this.canAccessData() && this.isElectric()) { + return this.maxAmperesOut(); + } + return 0L; + } + + public long getOutputTier() { + return GT_Utility.getTier(this.getOutputVoltage()); + } + + @Override + public long getOutputVoltage() { + if (this.canAccessData() && this.isElectric() && this.isEnetOutput()) { + return this.maxEUOutput(); + } + return 0L; + } + + @Override + public int getRandomNumber(int p0) { + return CORE.RANDOM.nextInt(); + } + + @Override + public long getSteamCapacity() { + if (this.canAccessData()) { + return this.maxSteamStore(); + } + return 0L; + } + + public long getSteamVar() { + return mStoredSteam; + } + + @Override + public long getStoredEU() { + if (this.canAccessData()) { + return Math.min(this.getEUVar(), this.getEUCapacity()); + } + return 0L; + } + + + + + + + + + + @Override + public long getStoredSteam() { + if (this.canAccessData()) { + return Math.min(this.getSteamVar(), this.getSteamCapacity()); + } + return 0L; + } + + @Override + public final TileEntity getTileEntity(final int aX, final int aY, final int aZ) { + if (this.ignoreUnloadedChunks && this.crossedChunkBorder(aX, aZ) && !this.worldObj.blockExists(aX, aY, aZ)) { + return null; + } + return this.worldObj.getTileEntity(aX, aY, aZ); + } + + public final TileEntity getTileEntityAtSide(final byte aSide) { + if (aSide < 0 || aSide >= 6 || this.mBufferedTileEntities[aSide] == this) { + return null; + } + final int tX = this.getOffsetX(aSide, 1); + final int tY = this.getOffsetY(aSide, 1); + final int tZ = this.getOffsetZ(aSide, 1); + if (this.crossedChunkBorder(tX, tZ)) { + this.mBufferedTileEntities[aSide] = null; + if (this.ignoreUnloadedChunks && !this.worldObj.blockExists(tX, tY, tZ)) { + return null; + } + } + if (this.mBufferedTileEntities[aSide] == null) { + this.mBufferedTileEntities[aSide] = this.worldObj.getTileEntity(tX, tY, tZ); + if (this.mBufferedTileEntities[aSide] == null) { + this.mBufferedTileEntities[aSide] = this; + return null; + } + return this.mBufferedTileEntities[aSide]; + } else { + if (this.mBufferedTileEntities[aSide].isInvalid()) { + this.mBufferedTileEntities[aSide] = null; + return this.getTileEntityAtSide(aSide); + } + if (this.mBufferedTileEntities[aSide].xCoord == tX && this.mBufferedTileEntities[aSide].yCoord == tY + && this.mBufferedTileEntities[aSide].zCoord == tZ) { + return this.mBufferedTileEntities[aSide]; + } + return null; + } + } + + @Override + public final TileEntity getTileEntityAtSideAndDistance(final byte aSide, final int aDistance) { + if (aDistance == 1) { + return this.getTileEntityAtSide(aSide); + } + return this.getTileEntity(this.getOffsetX(aSide, aDistance), this.getOffsetY(aSide, aDistance), + this.getOffsetZ(aSide, aDistance)); + } + + + + + + + + + + + @Override + public final TileEntity getTileEntityOffset(final int aX, final int aY, final int aZ) { + return this.getTileEntity(this.xCoord + aX, this.yCoord + aY, this.zCoord + aZ); + } + + @Override + public long getUniversalEnergyCapacity() { + return 0; + } + + @Override + public long getUniversalEnergyStored() { + return 0; + } + + @Override + public World getWorld() { + return this.getWorldObj(); + } + + + + + + + @Override + public int getXCoord() { + return this.xCoord; + } + + + + + + @Override + public short getYCoord() { + return (short) this.yCoord; + } + + @Override + public int getZCoord() { + return this.zCoord; + } + + public boolean hasEnoughEnergy() { + return (this.getStoredEU() > 0 ? (mHasEnoughEnergy = true) : (mHasEnoughEnergy = false)); + } + + + + + @Override + public boolean increaseStoredEnergyUnits(final long aEnergy, final boolean aIgnoreTooMuchEnergy) { + if (!this.canAccessData()) { + return false; + } + if (this.getStoredEU() < this.getEUCapacity() || aIgnoreTooMuchEnergy) { + this.setStoredEU(this.getEUVar() + aEnergy); + return true; + } + return false; + } + + @Override + public boolean increaseStoredSteam(final long aEnergy, final boolean aIgnoreTooMuchEnergy) { + if (!this.canAccessData()) { + return false; + } + if (this.getSteamVar() < this.getSteamCapacity() || aIgnoreTooMuchEnergy) { + this.setStoredSteam(this.getSteamVar() + aEnergy); + return true; + } + return false; + } + + public long injectEnergyUnits(final byte aSide, final long aVoltage, long aAmperage) { + if (!this.canAccessData() || !this.isElectric() || !this.inputEnergyFrom(aSide) + || aAmperage <= 0L || aVoltage <= 0L || this.getStoredEU() >= this.getEUCapacity() + || this.maxAmperesIn() <= this.mAcceptedAmperes) { + return 0L; + } + if (aVoltage > this.getInputVoltage()) { + this.doExplosion(aVoltage); + return 0L; + } + if (this.increaseStoredEnergyUnits(aVoltage + * (aAmperage = Math.min(aAmperage, Math.min(this.maxAmperesIn() - this.mAcceptedAmperes, + 1L + (this.getEUCapacity() - this.getStoredEU()) / aVoltage))), + true)) { + final int[] mAverageEUInput = this.mAverageEUInput; + final int mAverageEUInputIndex = this.mAverageEUInputIndex; + mAverageEUInput[mAverageEUInputIndex] += (int) (aVoltage * aAmperage); + this.mAcceptedAmperes += aAmperage; + return aAmperage; + } + return 0L; + } + + @Override + public boolean injectRotationalEnergy(byte p0, long p1, long p2) { + return false; + } + + @Override + public boolean inputEnergyFrom(final byte aSide) { + if (aSide == 6) { + return true; + } + if (this.isServerSide()) { + return aSide >= 0 && aSide < 6 && this.mActiveEUInputs[aSide] && !this.mReleaseEnergy; + } + return this.isEnergyInputSide(aSide); + } + + + public final boolean isClientSide() { + return this.worldObj.isRemote; + } + + @Override + public boolean isDead() { + return this.isDead; + } + + private boolean isElectric() { + return true; + } + + private boolean isEnergyInputSide(final byte aSide) { + if (aSide >= 0 && aSide < 6) { + if (this.isInvalid() || this.mReleaseEnergy) { + return false; + } + if (this.canAccessData() && this.isElectric() && this.isEnetInput()) { + return this.isInputFacing(aSide); + } + } + return false; + } + + private boolean isEnergyOutputSide(final byte aSide) { + if (aSide >= 0 && aSide < 6) { + if (this.isInvalid() || this.mReleaseEnergy) { + return this.mReleaseEnergy; + } + if (this.canAccessData() && this.isElectric() && this.isEnetOutput()) { + return this.isOutputFacing(aSide); + } + } + return false; + } + + public boolean isEnetInput() { + return false; + } + + public boolean isEnetOutput() { + return false; + } + + @Override + public boolean isGivingInformation() { + return this.canAccessData() && this.isGivingInformation(); + } + + public boolean isInputFacing(final byte aSide) { + return false; + } + + + + + @Override + public boolean isInvalidTileEntity() { + return isDead() ? true : false; + } + + public boolean isOutputFacing(final byte aSide) { + return false; + } + + public final boolean isServerSide() { + return !this.worldObj.isRemote; + } + + public boolean isUniversalEnergyStored(final long aEnergyAmount) { + return this.getUniversalEnergyStored() >= aEnergyAmount || (this.mHasEnoughEnergy = false); + } + + @Override + public boolean isValidFacing(final byte aSide) { + return this.canAccessData(); + } + + public long maxAmperesIn() { + return 1L; + } + + public long maxAmperesOut() { + return 1L; + } + + public long maxEUInput() { + return 0L; + } + + public long maxEUOutput() { + return 0L; + } + + public long maxEUStore() { + return 0L; + } + + public long maxSteamStore() { + return 256000L; + } + + public final void onAdjacentBlockChange(final int aX, final int aY, final int aZ) { + this.clearNullMarkersFromTileEntityBuffer(); + } + + @Override + public boolean outputsEnergyTo(final byte aSide) { + if (aSide == 6) { + return true; + } + if (this.isServerSide()) { + if (aSide < 0 || aSide >= 6 || !this.mActiveEUOutputs[aSide]) { + if (!this.mReleaseEnergy) { + return false; + } + } + return true; + } + return this.isEnergyOutputSide(aSide); + } + + public final void sendBlockEvent(final byte aID, final byte aValue) { + GT_Values.NW.sendPacketToAllPlayersInRange(this.worldObj, + (GT_Packet) new GT_Packet_Block_Event(this.xCoord, (short) this.yCoord, this.zCoord, aID, aValue), + this.xCoord, this.zCoord); + } + + public void setEUVar(final long aEnergy) { + mStoredEnergy = aEnergy; + } + + @Override + public void setFrontFacing(byte aFacing) { + if (this.isValidFacing(aFacing)) { + this.mFacing = aFacing; + //this.onFacingChange(); + //this.onMachineBlockUpdate(); + } + } + + public void setSteamVar(final long aSteam) { + mStoredSteam = aSteam; + } + + public boolean setStoredEU(long aEnergy) { + if (!this.canAccessData()) { + return false; + } + if (aEnergy < 0L) { + aEnergy = 0L; + } + this.setEUVar(aEnergy); + return true; + } + + public boolean setStoredSteam(long aEnergy) { + if (!this.canAccessData()) { + return false; + } + if (aEnergy < 0L) { + aEnergy = 0L; + } + this.setSteamVar(aEnergy); + return true; + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + // TODO Auto-generated method stub + super.writeToNBT(nbt); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + // TODO Auto-generated method stub + super.readFromNBT(nbt); + } + + + + + @Override + public boolean onPreTick() { + return onPreTick(this, this.mTickTimer); + } + + @Override + public boolean onTick() { + return onTick(this, this.mTickTimer); + } + + @Override + public boolean onPostTick() { + return onPostTick(this, this.mTickTimer); + } + + @Override + public boolean onPreTick(TilePoweredGT tilePoweredGT, long mTickTimer2) { + return super.onPreTick(); + } + + @Override + public boolean onTick(TilePoweredGT iGregTechTileEntity, long mTickTimer2) { + return super.onTick(); + } + + @Override + public boolean onPostTick(TilePoweredGT iGregTechTileEntity, long mTickTimer2) { + return super.onPostTick(); + } + + @Override + public void markDirty() { + super.markDirty(); + } + + @Override + public boolean receiveClientEvent(int p_145842_1_, int p_145842_2_) { + // TODO Auto-generated method stub + return super.receiveClientEvent(p_145842_1_, p_145842_2_); + } + + @Override + public void onChunkUnload() { + this.clearNullMarkersFromTileEntityBuffer(); + super.onChunkUnload(); + this.isDead = true; + } + + + public void updateEntity() { + super.updateEntity(); + this.isDead = false; + + this.mRunningThroughTick = true; + long tTime = System.currentTimeMillis(); + int tCode = 0; + final boolean aSideServer = this.isServerSide(); + final boolean aSideClient = this.isClientSide(); + /*try { + for (tCode = 0; this.hasValidMetaTileEntity() && tCode >= 0; tCode = -1) { + Label_1743 : { + switch (tCode) { + case 0 : { + ++tCode; + if (this.mTickTimer++ != 0L) { + break Label_1743; + } + this.oX = this.xCoord; + this.oY = this.yCoord; + this.oZ = this.zCoord; + + this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, + (TileEntity) this); + this.onFirstTick(this); + if (!this.hasValidMetaTileEntity()) { + this.mRunningThroughTick = false; + return; + } + break Label_1743; + } + case 1 : { + ++tCode; + if (!aSideClient) { + break Label_1743; + } + if (this.mNeedsUpdate) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + this.mNeedsUpdate = false; + } + break Label_1743; + } + case 2 : + case 3 : + case 4 : + case 5 : + case 6 : + case 7 : { + if (aSideServer && this.mTickTimer > 10L) { + for (byte i = (byte) (tCode - 2); i < 6; ++i) { + + } + } + } + case 8 : { + tCode = 9; + if (aSideServer) { + if (++this.mAverageEUInputIndex >= this.mAverageEUInput.length) { + this.mAverageEUInputIndex = 0; + } + if (++this.mAverageEUOutputIndex >= this.mAverageEUOutput.length) { + this.mAverageEUOutputIndex = 0; + } + this.mAverageEUInput[this.mAverageEUInputIndex] = 0; + this.mAverageEUOutput[this.mAverageEUOutputIndex] = 0; + } + } + case 9 : { + ++tCode; + this.onPreTick(this, this.mTickTimer); + if (!this.hasValidMetaTileEntity()) { + this.mRunningThroughTick = false; + return; + } + } + case 10 : { + ++tCode; + if (!aSideServer) { + break Label_1743; + } + + if (this.xCoord != this.oX || this.yCoord != this.oY || this.zCoord != this.oZ) { + this.oX = this.xCoord; + this.oY = this.yCoord; + this.oZ = this.zCoord; + this.issueClientUpdate(); + this.clearTileEntityBuffer(); + } + if (this.mFacing != this.oFacing) { + this.oFacing = this.mFacing; + this.issueBlockUpdate(); + } + if (this.mTickTimer > 20L && this.isElectric()) { + this.mAcceptedAmperes = 0L; + if (this.getOutputVoltage() != this.oOutput) { + this.oOutput = this.getOutputVoltage(); + } + if (this.isEnetOutput() || this.isEnetInput()) { + for (byte i = 0; i < 6; ++i) { + boolean temp = this.isEnergyInputSide(i); + if (temp != this.mActiveEUInputs[i]) { + this.mActiveEUInputs[i] = temp; + } + temp = this.isEnergyOutputSide(i); + if (temp != this.mActiveEUOutputs[i]) { + this.mActiveEUOutputs[i] = temp; + } + } + } + if (this.isEnetOutput() && this.oOutput > 0L) { + final long tOutputVoltage = Math.max(this.oOutput, + this.oOutput + (1 << GT_Utility.getTier(this.oOutput))); + final long tUsableAmperage = Math.min(this.getOutputAmperage(), + (this.getStoredEU() - this.getMinimumStoredEU()) + / tOutputVoltage); + if (tUsableAmperage > 0L) { + final long tEU = tOutputVoltage * IEnergyConnected.Util.emitEnergyToNetwork( + this.oOutput, tUsableAmperage, (IEnergyConnected) this); + final int[] mAverageEUOutput = this.mAverageEUOutput; + final int mAverageEUOutputIndex = this.mAverageEUOutputIndex; + mAverageEUOutput[mAverageEUOutputIndex] += (int) tEU; + this.decreaseStoredEU(tEU, true); + } + } + if (this.getEUCapacity() > 0L) { + if (GregTech_API.sMachineFireExplosions && this.getRandomNumber(1000) == 0) { + final Block tBlock = this.getBlockAtSide((byte) this.getRandomNumber(6)); + if (tBlock instanceof BlockFire) { + this.doEnergyExplosion(); + } + } + if (!this.hasValidMetaTileEntity()) { + this.mRunningThroughTick = false; + return; + } + } + } + if (!this.hasValidMetaTileEntity()) { + this.mRunningThroughTick = false; + return; + } + break Label_1743; + } + case 13 : { + ++tCode; + this.updateStatus(); + if (!this.hasValidMetaTileEntity()) { + this.mRunningThroughTick = false; + return; + } + } + case 14 : { + ++tCode; + this.onPostTick((IGregTechTileEntity) this, this.mTickTimer); + if (!this.hasValidMetaTileEntity()) { + this.mRunningThroughTick = false; + return; + } + } + case 15 : { + ++tCode; + if (!aSideServer) { + break; + } + if (this.mTickTimer % 10L == 0L && this.mSendClientData) { + final IGT_NetworkHandler nw = GT_Values.NW; + final World worldObj = this.worldObj; + final int xCoord = this.xCoord; + final short n = (short) this.yCoord; + final int zCoord = this.zCoord; + final short mid = this.mID; + final int n2 = this.mCoverSides[0]; + final int n3 = this.mCoverSides[1]; + final int n4 = this.mCoverSides[2]; + final int n5 = this.mCoverSides[3]; + final int n6 = this.mCoverSides[4]; + final int n7 = this.mCoverSides[5]; + final byte oTextureData = (byte) ((this.mFacing & 0x7) | (this.mActive ? 8 : 0) + | (this.mRedstone ? 16 : 0) | (this.mLockUpgrade ? 32 : 0)); + this.oTextureData = oTextureData; + final byte oTexturePage = (byte) ((this.hasValidMetaTileEntity() + && this.mMetaTileEntity instanceof GT_MetaTileEntity_Hatch) + ? ((GT_MetaTileEntity_Hatch) this.mMetaTileEntity).getTexturePage() + : 0); + this.oTexturePage = oTexturePage; + final byte oUpdateData = (byte) (this.hasValidMetaTileEntity() + ? this.mMetaTileEntity.getUpdateData() + : 0); + this.oUpdateData = oUpdateData; + final byte oRedstoneData = (byte) (((this.mSidedRedstone[0] > 0) ? 1 : 0) + | ((this.mSidedRedstone[1] > 0) ? 2 : 0) + | ((this.mSidedRedstone[2] > 0) ? 4 : 0) + | ((this.mSidedRedstone[3] > 0) ? 8 : 0) + | ((this.mSidedRedstone[4] > 0) ? 16 : 0) + | ((this.mSidedRedstone[5] > 0) ? 32 : 0)); + this.oRedstoneData = oRedstoneData; + final byte mColor = this.mColor; + this.oColor = mColor; + nw.sendPacketToAllPlayersInRange(worldObj, + (GT_Packet) new GT_Packet_TileEntity(xCoord, n, zCoord, mid, n2, n3, n4, n5, n6, + n7, oTextureData, oTexturePage, oUpdateData, oRedstoneData, mColor), + this.xCoord, this.zCoord); + this.mSendClientData = false; + } + if (this.mTickTimer > 10L) { + byte tData = (byte) ((this.mFacing & 0x7) | (this.mActive ? 8 : 0) + | (this.mRedstone ? 16 : 0) | (this.mLockUpgrade ? 32 : 0)); + if (tData != this.oTextureData) { + this.sendBlockEvent((byte) 0, this.oTextureData = tData); + } + tData = this.mMetaTileEntity.getUpdateData(); + if (tData != this.oUpdateData) { + this.sendBlockEvent((byte) 1, this.oUpdateData = tData); + } + if (this.mMetaTileEntity instanceof GT_MetaTileEntity_Hatch) { + tData = ((GT_MetaTileEntity_Hatch) this.mMetaTileEntity).getTexturePage(); + if (tData != this.oTexturePage) { + final byte b = 1; + final byte oTexturePage2 = tData; + this.oTexturePage = oTexturePage2; + this.sendBlockEvent(b, (byte) (oTexturePage2 | 0x80)); + } + } + if (this.mColor != this.oColor) { + this.sendBlockEvent((byte) 2, this.oColor = this.mColor); + } + tData = (byte) (((this.mSidedRedstone[0] > 0) ? 1 : 0) + | ((this.mSidedRedstone[1] > 0) ? 2 : 0) + | ((this.mSidedRedstone[2] > 0) ? 4 : 0) + | ((this.mSidedRedstone[3] > 0) ? 8 : 0) + | ((this.mSidedRedstone[4] > 0) ? 16 : 0) + | ((this.mSidedRedstone[5] > 0) ? 32 : 0)); + if (tData != this.oRedstoneData) { + this.sendBlockEvent((byte) 3, this.oRedstoneData = tData); + } + if (this.mLightValue != this.oLightValue) { + this.worldObj.setLightValue(EnumSkyBlock.Block, this.xCoord, this.yCoord, + this.zCoord, (int) this.mLightValue); + this.worldObj.updateLightByType(EnumSkyBlock.Block, this.xCoord, this.yCoord, + this.zCoord); + this.worldObj.updateLightByType(EnumSkyBlock.Block, this.xCoord + 1, this.yCoord, + this.zCoord); + this.worldObj.updateLightByType(EnumSkyBlock.Block, this.xCoord - 1, this.yCoord, + this.zCoord); + this.worldObj.updateLightByType(EnumSkyBlock.Block, this.xCoord, this.yCoord + 1, + this.zCoord); + this.worldObj.updateLightByType(EnumSkyBlock.Block, this.xCoord, this.yCoord - 1, + this.zCoord); + this.worldObj.updateLightByType(EnumSkyBlock.Block, this.xCoord, this.yCoord, + this.zCoord + 1); + this.worldObj.updateLightByType(EnumSkyBlock.Block, this.xCoord, this.yCoord, + this.zCoord - 1); + this.issueTextureUpdate(); + this.sendBlockEvent((byte) 7, this.oLightValue = this.mLightValue); + } + } + if (this.mNeedsBlockUpdate) { + this.worldObj.notifyBlocksOfNeighborChange(this.xCoord, this.yCoord, this.zCoord, + this.getBlockOffset(0, 0, 0)); + this.mNeedsBlockUpdate = false; + break; + } + break; + } + } + } + } + } catch (Throwable e) { + e.printStackTrace(GT_Log.err); + } + if (aSideServer && this.hasValidMetaTileEntity()) { + tTime = System.currentTimeMillis() - tTime; + if (this.mTimeStatistics.length > 0) { + this.mTimeStatistics[this.mTimeStatisticsIndex = (this.mTimeStatisticsIndex + 1) + % this.mTimeStatistics.length] = (int) tTime; + } + if (tTime > 0L && tTime > GregTech_API.MILLISECOND_THRESHOLD_UNTIL_LAG_WARNING && this.mTickTimer > 1000L + && this.getMetaTileEntity().doTickProfilingMessageDuringThisTick() + && this.mLagWarningCount++ < 10) { + System.out.println("WARNING: Possible Lag Source at [" + this.xCoord + ", " + this.yCoord + ", " + + this.zCoord + "] in Dimension " + this.worldObj.provider.dimensionId + " with " + tTime + + "ms caused by an instance of " + this.getMetaTileEntity().getClass()); + } + } + final boolean mWorkUpdate = false; + this.mRunningThroughTick = mWorkUpdate; + this.mInventoryChanged = mWorkUpdate; + this.mWorkUpdate = mWorkUpdate;*/ + } + + private void onFirstTick(TilePoweredGT tilePoweredGT) { + // TODO Auto-generated method stub + + } + + private boolean hasValidMetaTileEntity() { + return Utils.invertBoolean(isDead()); + } + + public void issueBlockUpdate() { + this.mNeedsBlockUpdate = true; + } + + public void issueClientUpdate() { + this.mSendClientData = true; + } + + public Packet getDescriptionPacket() { + this.issueClientUpdate(); + return null; + } + +} diff --git a/src/Java/gtPlusPlus/core/tileentities/machines/TileEntityModularityTable.java b/src/Java/gtPlusPlus/core/tileentities/machines/TileEntityModularityTable.java index 252b92984e..abff5fd755 100644 --- a/src/Java/gtPlusPlus/core/tileentities/machines/TileEntityModularityTable.java +++ b/src/Java/gtPlusPlus/core/tileentities/machines/TileEntityModularityTable.java @@ -5,12 +5,12 @@ import java.util.Map.Entry; import gregtech.api.enums.ItemList; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.core.container.Container_ModularityTable; import gtPlusPlus.core.inventories.modulartable.InventoryModularMain; import gtPlusPlus.core.inventories.modulartable.InventoryModularOutput; import gtPlusPlus.core.item.bauble.ModularBauble; import gtPlusPlus.core.tileentities.base.TileEntityBase; -import gtPlusPlus.core.util.array.Pair; import gtPlusPlus.core.util.item.ItemUtils; import gtPlusPlus.core.util.nbt.ModularArmourUtils; import gtPlusPlus.core.util.nbt.ModularArmourUtils.BT; diff --git a/src/Java/gtPlusPlus/core/util/Utils.java b/src/Java/gtPlusPlus/core/util/Utils.java index 0909e4bf2d..e15f8ba202 100644 --- a/src/Java/gtPlusPlus/core/util/Utils.java +++ b/src/Java/gtPlusPlus/core/util/Utils.java @@ -34,10 +34,10 @@ import gregtech.api.util.GT_Log; import gregtech.api.util.GT_Utility; import gtPlusPlus.GTplusplus; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.core.item.ModItems; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.material.Material; -import gtPlusPlus.core.util.array.Pair; import gtPlusPlus.core.util.fluid.FluidUtils; import gtPlusPlus.core.util.item.ItemUtils; import gtPlusPlus.core.util.math.MathUtils; diff --git a/src/Java/gtPlusPlus/core/util/array/BlockPos.java b/src/Java/gtPlusPlus/core/util/array/BlockPos.java deleted file mode 100644 index b625ebec54..0000000000 --- a/src/Java/gtPlusPlus/core/util/array/BlockPos.java +++ /dev/null @@ -1,25 +0,0 @@ -package gtPlusPlus.core.util.array; - -public class BlockPos { - - public final int xPos; - public final int yPos; - public final int zPos; - public final int dim; - - public BlockPos(int x, int y, int z){ - this(x, y, z, 0); - } - - public BlockPos(int x, int y, int z, int dim){ - this.xPos = x; - this.yPos = y; - this.zPos = z; - this.dim = dim; - } - - public String getLocationString() { - return "[X: "+this.xPos+"][Y: "+this.yPos+"][Z: "+this.zPos+"]"; - } - -} diff --git a/src/Java/gtPlusPlus/core/util/entity/EntityUtils.java b/src/Java/gtPlusPlus/core/util/entity/EntityUtils.java index 79c643a95d..27412d647f 100644 --- a/src/Java/gtPlusPlus/core/util/entity/EntityUtils.java +++ b/src/Java/gtPlusPlus/core/util/entity/EntityUtils.java @@ -5,7 +5,7 @@ import java.lang.reflect.Method; import cpw.mods.fml.common.registry.EntityRegistry; import gregtech.api.util.GT_Utility; -import gtPlusPlus.core.util.array.BlockPos; +import gtPlusPlus.api.objects.minecraft.BlockPos; import gtPlusPlus.core.util.reflect.ReflectionUtils; import ic2.core.IC2Potion; import ic2.core.item.armor.ItemArmorHazmat; diff --git a/src/Java/gtPlusPlus/core/util/item/ItemUtils.java b/src/Java/gtPlusPlus/core/util/item/ItemUtils.java index 367539b49d..d5caad9dee 100644 --- a/src/Java/gtPlusPlus/core/util/item/ItemUtils.java +++ b/src/Java/gtPlusPlus/core/util/item/ItemUtils.java @@ -10,6 +10,7 @@ import gregtech.api.enums.OrePrefixes; import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_OreDictUnificator; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.core.item.ModItems; import gtPlusPlus.core.item.base.BasicSpawnEgg; import gtPlusPlus.core.item.base.dusts.BaseItemDust; @@ -23,7 +24,6 @@ import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.lib.LoadedMods; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.util.Utils; -import gtPlusPlus.core.util.array.Pair; import gtPlusPlus.core.util.materials.MaterialUtils; import gtPlusPlus.core.util.reflect.ReflectionUtils; import gtPlusPlus.core.util.wrapper.var; diff --git a/src/Java/gtPlusPlus/core/util/locale/LocaleUtils.java b/src/Java/gtPlusPlus/core/util/locale/LocaleUtils.java new file mode 100644 index 0000000000..aea38d341e --- /dev/null +++ b/src/Java/gtPlusPlus/core/util/locale/LocaleUtils.java @@ -0,0 +1,91 @@ +package gtPlusPlus.core.util.locale; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; + +import cpw.mods.fml.common.Loader; +import cpw.mods.fml.common.ModContainer; +import cpw.mods.fml.common.registry.GameData; +import gtPlusPlus.core.util.Utils; +import gtPlusPlus.core.util.item.ItemUtils; +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public class LocaleUtils { + + public static boolean GenerateFakeLocaleFile() { + for (ModContainer modcontainer : Loader.instance().getModList()){ + if (modcontainer.getModId().toLowerCase().equals("miscutils")) { + String S = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"; + writeToFile(S); + dumpItemsAndBlocksForModContainer(modcontainer); + } + } + return true; + } + + public static boolean dumpItemsAndBlocksForModContainer(ModContainer mod) { + writeToFile("Dumping Items from "+mod.getModId()+"."); + for (Object C : GameData.getItemRegistry()) { + + try { + + if (C != null) { + if (C instanceof Item) { + Item R = (Item) C; + ItemStack IS = ItemUtils.getSimpleStack(R); + String modid = ItemUtils.getModId(IS); + if (modid.equals("miscutils") || modid.equals("ToxicEverglades")) { + String S = "["+modid+"] "+IS.getUnlocalizedName()+".name="; + writeToFile(S); + } + } + } + + } + catch (Throwable T) {} + + } + writeToFile("Dumping Blocks from "+mod.getModId()+"."); + for (Object B : GameData.getBlockRegistry()) { + + try { + + if (B != null) { + if (B instanceof Block) { + Block R = (Block) B; + ItemStack IS = ItemUtils.getSimpleStack(R); + String modid = ItemUtils.getModId(IS); + if (modid.equals("miscutils") || modid.equals("ToxicEverglades")) { + String S = "["+modid+"] "+IS.getUnlocalizedName()+".name="; + writeToFile(S); + } + } + } + + } + catch (Throwable T) {} + + } + + + return true; + } + + public static void writeToFile(String S) { + try { + File F = new File(Utils.getMcDir(), "config/GTplusplus/en_US.lang"); + BufferedWriter writer; + writer = new BufferedWriter(new FileWriter(F, true)); + writer.write(S); + writer.newLine(); + writer.close(); + } + catch (IOException e) {} + } + + +} diff --git a/src/Java/gtPlusPlus/core/util/math/MathUtils.java b/src/Java/gtPlusPlus/core/util/math/MathUtils.java index 313d1059ca..6d61335fe8 100644 --- a/src/Java/gtPlusPlus/core/util/math/MathUtils.java +++ b/src/Java/gtPlusPlus/core/util/math/MathUtils.java @@ -4,8 +4,8 @@ import java.util.Map; import java.util.Random; import gregtech.api.enums.GT_Values; -import gtPlusPlus.api.objects.CSPRNG_DO_NOT_USE; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.random.CSPRNG_DO_NOT_USE; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.Utils; diff --git a/src/Java/gtPlusPlus/core/util/nbt/ModularArmourUtils.java b/src/Java/gtPlusPlus/core/util/nbt/ModularArmourUtils.java index 2e8e29c372..c9ac557fee 100644 --- a/src/Java/gtPlusPlus/core/util/nbt/ModularArmourUtils.java +++ b/src/Java/gtPlusPlus/core/util/nbt/ModularArmourUtils.java @@ -3,7 +3,7 @@ package gtPlusPlus.core.util.nbt; import baubles.api.BaubleType; import gregtech.api.util.GT_Utility; import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.core.util.array.Pair; +import gtPlusPlus.api.objects.data.Pair; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/Java/gtPlusPlus/core/util/reflect/AddGregtechRecipe.java b/src/Java/gtPlusPlus/core/util/reflect/AddGregtechRecipe.java index 04a59e7f7d..cabd1f086c 100644 --- a/src/Java/gtPlusPlus/core/util/reflect/AddGregtechRecipe.java +++ b/src/Java/gtPlusPlus/core/util/reflect/AddGregtechRecipe.java @@ -78,7 +78,7 @@ public final class AddGregtechRecipe { FluidStack[] aFluidInputs, ItemStack aOutput, int aDuration, int aEUt){ -/* + /* try { IGT_RecipeAdder IGT_RecipeAdder = GT_Values.RA; if (IGT_RecipeAdder != null){ @@ -95,7 +95,7 @@ public final class AddGregtechRecipe { } //Utils.LOG_INFO("==============================================="); } - + try { Method testRA = GT_Values.RA.getClass().getMethod("addAssemblylineRecipe", GT_Values.RA.getClass(), aResearchItem.getClass(), int.class, aInputs.getClass(), aFluidInputs.getClass(), aOutput.getClass(), int.class, int.class); testRA.invoke(aResearchItem, aResearchTime, aInputs, aFluidInputs, aOutput, aDuration, aEUt); @@ -103,7 +103,7 @@ public final class AddGregtechRecipe { catch (Throwable masndj){ masndj.printStackTrace(); } - + Method addRecipe = classRA.getDeclaredMethod( "addAssemblylineRecipe", @@ -125,7 +125,7 @@ public final class AddGregtechRecipe { return false; } Utils.LOG_INFO("[Assembly Line] - Failed to add recipe. Research: "+aResearchItem.getDisplayName()+" | Result: "+aOutput.getDisplayName()); - */return false; + */return false; } public static boolean addCircuitAssemblerRecipe( @@ -203,4 +203,39 @@ public final class AddGregtechRecipe { return false; } + + public static boolean addChemicalRecipeForBasicMachineOnly(final ItemStack p0, final ItemStack p1, final FluidStack p2, final FluidStack p3, final ItemStack p4, final ItemStack p5, final int p6, final int p7){ + + if (CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) { + try { + IGT_RecipeAdder IGT_RecipeAdder = GT_Values.RA; + if (IGT_RecipeAdder != null){ + Class<? extends IGT_RecipeAdder> classRA = IGT_RecipeAdder.getClass(); + //final ItemStack p0, final ItemStack p1, final FluidStack p2, final FluidStack p3, final ItemStack p4, final ItemStack p5, final int p6, final int p7 + Method addRecipe = classRA.getMethod("addChemicalRecipeForBasicMachineOnly", ItemStack.class, ItemStack.class, FluidStack.class, FluidStack.class, ItemStack.class, ItemStack.class, int.class, int.class); + if (addRecipe != null){ + return (boolean) addRecipe.invoke(IGT_RecipeAdder, p0, p1, p2, p3, p4, p5, p6, p7); + } + } + } + catch (SecurityException | NoSuchMethodException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + + } + } + + return GT_Values.RA.addChemicalRecipe( + p0, + p1, + p2, + p3, + p4, + p5, + p6, + p7); + + } + + + + }
\ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/util/uuid/UUIDGenerator.java b/src/Java/gtPlusPlus/core/util/uuid/UUIDGenerator.java index 0fd2d8c6a5..bf0ac3d1f5 100644 --- a/src/Java/gtPlusPlus/core/util/uuid/UUIDGenerator.java +++ b/src/Java/gtPlusPlus/core/util/uuid/UUIDGenerator.java @@ -5,7 +5,7 @@ import java.net.InetAddress; import java.util.Random; import java.util.UUID; -import gtPlusPlus.api.objects.CSPRNG_DO_NOT_USE; +import gtPlusPlus.api.objects.random.CSPRNG_DO_NOT_USE; /** * diff --git a/src/Java/gtPlusPlus/api/damage/BaseCustomDamageSource.java b/src/Java/gtPlusPlus/core/world/damage/BaseCustomDamageSource.java index 24348988d6..3778beacfb 100644 --- a/src/Java/gtPlusPlus/api/damage/BaseCustomDamageSource.java +++ b/src/Java/gtPlusPlus/core/world/damage/BaseCustomDamageSource.java @@ -1,4 +1,4 @@ -package gtPlusPlus.api.damage; +package gtPlusPlus.core.world.damage; import net.minecraft.entity.Entity; import net.minecraft.util.EntityDamageSourceIndirect; diff --git a/src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_GT_Base.java b/src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_GT_Base.java index 6be899e5de..301a2154c2 100644 --- a/src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_GT_Base.java +++ b/src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_GT_Base.java @@ -6,7 +6,7 @@ import cpw.mods.fml.common.IWorldGenerator; import cpw.mods.fml.common.registry.GameRegistry; import gregtech.api.util.GT_Log; import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.api.objects.XSTR; +import gtPlusPlus.api.objects.random.XSTR; import gtPlusPlus.core.material.ELEMENT; import gtPlusPlus.core.world.darkworld.Dimension_DarkWorld; import gtPlusPlus.xmod.gregtech.HANDLER_GT; diff --git a/src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_Ores.java b/src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_Ores.java index 4b099ee4cf..8b28e2d4e8 100644 --- a/src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_Ores.java +++ b/src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_Ores.java @@ -4,12 +4,12 @@ import java.util.Hashtable; import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; -import gtPlusPlus.api.objects.MaterialHelper; +import gtPlusPlus.api.helpers.MaterialHelper; +import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.core.material.ELEMENT; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.ORES; import gtPlusPlus.core.material.nuclear.FLUORIDES; -import gtPlusPlus.core.util.array.Pair; import gtPlusPlus.core.util.materials.MaterialUtils; import gtPlusPlus.core.world.darkworld.object.BoxedQuad; import net.minecraft.block.Block; diff --git a/src/Java/gtPlusPlus/core/world/darkworld/object/BoxedQuad.java b/src/Java/gtPlusPlus/core/world/darkworld/object/BoxedQuad.java index d3c400896b..fd3d734e08 100644 --- a/src/Java/gtPlusPlus/core/world/darkworld/object/BoxedQuad.java +++ b/src/Java/gtPlusPlus/core/world/darkworld/object/BoxedQuad.java @@ -1,6 +1,6 @@ package gtPlusPlus.core.world.darkworld.object; -import gtPlusPlus.core.util.array.Pair; +import gtPlusPlus.api.objects.data.Pair; import net.minecraft.block.Block; public class BoxedQuad<K,V,C,R> { diff --git a/src/Java/gtPlusPlus/core/world/explosions/MiningExplosion.java b/src/Java/gtPlusPlus/core/world/explosions/MiningExplosion.java index 50fa08f55f..bcbb16a3b6 100644 --- a/src/Java/gtPlusPlus/core/world/explosions/MiningExplosion.java +++ b/src/Java/gtPlusPlus/core/world/explosions/MiningExplosion.java @@ -2,7 +2,7 @@ package gtPlusPlus.core.world.explosions; import java.util.*; -import gtPlusPlus.api.objects.XSTR; +import gtPlusPlus.api.objects.random.XSTR; import gtPlusPlus.core.entity.EntityPrimedMiningExplosive; import gtPlusPlus.core.util.math.MathUtils; import net.minecraft.block.Block; diff --git a/src/Java/gtPlusPlus/plugin/manager/Core_Manager.java b/src/Java/gtPlusPlus/plugin/manager/Core_Manager.java index 2fc6102779..2fd6096d32 100644 --- a/src/Java/gtPlusPlus/plugin/manager/Core_Manager.java +++ b/src/Java/gtPlusPlus/plugin/manager/Core_Manager.java @@ -2,7 +2,7 @@ package gtPlusPlus.plugin.manager; import gtPlusPlus.api.interfaces.IPlugin; import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.core.util.array.AutoMap; +import gtPlusPlus.api.objects.data.AutoMap; public class Core_Manager { diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java index c6edd94238..4a8a0a1e3c 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java @@ -19,8 +19,8 @@ import gregtech.api.metatileentity.BaseMetaTileEntity; import gregtech.api.metatileentity.MetaTileEntity; import gregtech.common.blocks.GT_Block_Machines; import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.api.objects.XSTR; -import gtPlusPlus.core.util.array.BlockPos; +import gtPlusPlus.api.objects.minecraft.BlockPos; +import gtPlusPlus.api.objects.random.XSTR; import gtPlusPlus.core.util.item.ItemUtils; import gtPlusPlus.core.util.nbt.NBTUtils; import gtPlusPlus.core.util.reflect.ReflectionUtils; diff --git a/src/Java/gtPlusPlus/xmod/forestry/trees/TreefarmManager.java b/src/Java/gtPlusPlus/xmod/forestry/trees/TreefarmManager.java deleted file mode 100644 index 155feae83c..0000000000 --- a/src/Java/gtPlusPlus/xmod/forestry/trees/TreefarmManager.java +++ /dev/null @@ -1,140 +0,0 @@ -package gtPlusPlus.xmod.forestry.trees; - -import cpw.mods.fml.common.Optional; -import gregtech.api.enums.OrePrefixes; -import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.core.lib.LoadedMods; -import gtPlusPlus.core.util.item.ItemUtils; -import gtPlusPlus.core.util.reflect.ReflectionUtils; -import net.minecraft.block.Block; -import net.minecraft.block.BlockAir; -import net.minecraft.block.material.Material; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; - -public class TreefarmManager { - - public static boolean isHumusLoaded = false; - public static boolean isForestryLogsLoaded = false; - public static boolean isForestryFenceLoaded = false; - public static boolean isForestrySaplingsLoaded = false; - public static boolean isForestryLeavesLoaded = false; - public static Block blockHumus; - - public static boolean isForestryValid(){ - if (!LoadedMods.Forestry){ - return false; - } - if (ReflectionUtils.doesClassExist("forestry.core.blocks.BlockSoil")){ - isHumusLoaded = true; - } - if (ReflectionUtils.doesClassExist("forestry.arboriculture.blocks.BlockLog")){ - isForestryLogsLoaded = true; - } - if (ReflectionUtils.doesClassExist("forestry.arboriculture.blocks.BlockArbFence")){ - isForestryFenceLoaded = true; - } - if (ReflectionUtils.doesClassExist("forestry.arboriculture.blocks.BlockSapling")){ - isForestrySaplingsLoaded = true; - } - if (ReflectionUtils.doesClassExist("forestry.arboriculture.blocks.BlockForestryLeaves")){ - isForestryLeavesLoaded = true; - } - return true; - } - - @Optional.Method(modid = "Forestry") - public static Block getHumus(){ - if(blockHumus != null){ - return blockHumus; - } - else if (ReflectionUtils.doesClassExist("forestry.core.blocks.BlockSoil")){ - try { - final Class<?> humusClass = Class.forName("forestry.core.blocks.BlockSoil"); - final ItemStack humusStack = ItemUtils.getCorrectStacktype("Forestry:soil", 1); - if (humusClass != null){ - blockHumus = Block.getBlockFromItem(humusStack.getItem()); - return Block.getBlockFromItem(humusStack.getItem()); - } - } catch (final ClassNotFoundException e) {} - } - return null; - } - - public static boolean isWoodLog(final Block log){ - final String tTool = log.getHarvestTool(0); - - if ((log == Blocks.log) || (log == Blocks.log2)){ - return true; - } - - //Forestry/General Compat - if (log.getClass().getName().toLowerCase().contains("blocklog")){ - return true; - } - - //IC2 Rubber Tree Compat - if (log.getClass().getName().toLowerCase().contains("rubwood") || log.getClass().getName().toLowerCase().contains("rubleaves")){ - return true; - } - - return (OrePrefixes.log.contains(new ItemStack(log, 1))&& ((tTool != null) && (tTool.equals("axe")))) || (log.getMaterial() != Material.wood) ? false : (OrePrefixes.fence.contains(new ItemStack(log, 1)) ? false : true); - } - - public static boolean isLeaves(final Block log){ - if (log.getUnlocalizedName().toLowerCase().contains("leaf")){ - return true; - } - if (log.getUnlocalizedName().toLowerCase().contains("leaves")){ - return true; - } - if (log.getLocalizedName().toLowerCase().contains("leaf")){ - return true; - } - if (log.getLocalizedName().toLowerCase().contains("leaves")){ - return true; - } - return OrePrefixes.leaves.contains(new ItemStack(log, 1)) || (log.getMaterial() == Material.leaves); - } - - public static boolean isSapling(final Block log){ - if (log != null){ - if (OrePrefixes.sapling.contains(new ItemStack(log, 1))){ - Logger.WARNING(""+log.getLocalizedName()); - } - if (log.getLocalizedName().toLowerCase().contains("sapling")){ - Logger.WARNING(""+log.getLocalizedName()); - return true; - } - } - return OrePrefixes.sapling.contains(new ItemStack(log, 1)); - } - - public static boolean isDirtBlock(final Block dirt){ - return (dirt == Blocks.dirt ? true : (dirt == Blocks.grass ? true : (getHumus() == null ? false : (dirt == blockHumus ? true : false)))); - } - - public static boolean isFenceBlock(final Block fence){ - return (fence == Blocks.fence ? true : (fence == Blocks.fence_gate ? true : (fence == Blocks.nether_brick_fence ? true : (OrePrefixes.fence.contains(new ItemStack(fence, 1)) ? true : false)))); - } - - public static boolean isAirBlock(final Block air){ - - if (air.getLocalizedName().toLowerCase().contains("air")){ - return true; - } - - if (air.getClass().getName().toLowerCase().contains("residual") || air.getClass().getName().toLowerCase().contains("heat")){ - return true; - } - - //Utils.LOG_INFO("Found "+air.getLocalizedName()); - - return (air == Blocks.air ? true : (air instanceof BlockAir ? true : false)); - } - - /*public static boolean isSaplingBlock(Block sapling){ - return (sapling == Blocks.sapling ? true : (sapling == Blocks.)) - }*/ - -} diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_TreeFarmer.java b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_TreeFarmer.java index 82bc38aa9a..240ca6cfe8 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_TreeFarmer.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_TreeFarmer.java @@ -58,7 +58,7 @@ public class CONTAINER_TreeFarmer extends GT_ContainerMetaTile_Machine { super.detectAndSendChanges(); for(final ICrafting crafting : (List<ICrafting>)this.crafters) { crafting.sendProgressBarUpdate(this, 100, (int) ((GregtechMetaTileEntityTreeFarm) this.mTileEntity.getMetaTileEntity()).maxEUStore()); - crafting.sendProgressBarUpdate(this, 101, (int) ((GregtechMetaTileEntityTreeFarm) this.mTileEntity.getMetaTileEntity()).getStoredInternalPower()); + crafting.sendProgressBarUpdate(this, 101, (int) ((GregtechMetaTileEntityTreeFarm) this.mTileEntity.getMetaTileEntity()).getEUVar()); if (((GregtechMetaTileEntityTreeFarm) this.mTileEntity.getMetaTileEntity()).isCorrectMachinePart(this.mTileEntity.getStackInSlot(1))){ this.mTileEntity.markDirty(); } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_TreeFarmer.java b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_TreeFarmer.java index 565c378179..3a60a3e93e 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_TreeFarmer.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_TreeFarmer.java @@ -24,9 +24,9 @@ public class GUI_TreeFarmer extends GT_GUIContainerMetaTile_Machine { this.maxPower = ((CONTAINER_TreeFarmer)this.mContainer).maxEU; this.storedPower = ((CONTAINER_TreeFarmer)this.mContainer).storedEU; if (((CONTAINER_TreeFarmer) this.mContainer).mDisplayErrorCode == 0) { - this.fontRendererObj.drawString("Current Power Stored: "+this.storedPower+"EU", 10, 52, 16448255); - this.fontRendererObj.drawString("Max Power Storage: "+this.maxPower+"EU", 10, 60, 16448255); - this.fontRendererObj.drawString("Current operations left: "+(this.storedPower/32), 10, 68, 16448255); + this.fontRendererObj.drawString("Current Power: "+this.storedPower+"EU", 8, 52, 16448255); + this.fontRendererObj.drawString("Max Power: "+this.maxPower+"EU", 8, 60, 16448255); + this.fontRendererObj.drawString("Current operations left: "+(this.storedPower/32), 8, 68, 16448255); } } } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_DeluxeMachine.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_DeluxeMachine.java index df886220c2..14586a91f8 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_DeluxeMachine.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_DeluxeMachine.java @@ -15,7 +15,7 @@ import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Recipe.GT_Recipe_Map; import gregtech.api.util.GT_Utility; import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.api.objects.XSTR; +import gtPlusPlus.api.objects.random.XSTR; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java index 22248814ce..0eec457d66 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java @@ -4,6 +4,7 @@ import java.lang.reflect.*; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.concurrent.TimeUnit; import gregtech.api.util.GT_Utility; import net.minecraftforge.fluids.FluidStack; @@ -30,6 +31,7 @@ import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import static gtPlusPlus.core.util.array.ArrayUtils.removeNulls; @@ -39,6 +41,7 @@ GT_MetaTileEntity_MultiBlockBase { public GT_Recipe mLastRecipe; private boolean mInternalCircuit = false; + protected long mTotalRunTime = 0; public ArrayList<GT_MetaTileEntity_Hatch_InputBattery> mChargeHatches = new ArrayList<GT_MetaTileEntity_Hatch_InputBattery>(); public ArrayList<GT_MetaTileEntity_Hatch_OutputBattery> mDischargeHatches = new ArrayList<GT_MetaTileEntity_Hatch_OutputBattery>(); @@ -59,7 +62,7 @@ GT_MetaTileEntity_MultiBlockBase { .getMetaTileEntity() == aMetaTileEntity) && !aMetaTileEntity.getBaseMetaTileEntity().isDead(); } - + public abstract boolean hasSlotInGUI(); @Override @@ -83,11 +86,27 @@ GT_MetaTileEntity_MultiBlockBase { } @Override - public String[] getInfoData() { - return new String[]{"Progress:", (this.mProgresstime / 20) + "secs", - (this.mMaxProgresstime / 20) + "secs", "Efficiency:", - (this.mEfficiency / 100.0F) + "%", "Problems:", - "" + (this.getIdealStatus() - this.getRepairStatus())}; + public String[] getInfoData() { + + long seconds = (this.mTotalRunTime/20); + int weeks = (int) (TimeUnit.SECONDS.toDays(seconds) / 7); + int days = (int) (TimeUnit.SECONDS.toDays(seconds) - 7 * weeks); + long hours = TimeUnit.SECONDS.toHours(seconds) - TimeUnit.DAYS.toHours(days) - TimeUnit.DAYS.toHours(7*weeks); + long minutes = TimeUnit.SECONDS.toMinutes(seconds) - (TimeUnit.SECONDS.toHours(seconds) * 60); + long second = TimeUnit.SECONDS.toSeconds(seconds) - (TimeUnit.SECONDS.toMinutes(seconds) *60); + + String[] g = { + "Progress: " + (this.mProgresstime / 20) +" / "+ (this.mMaxProgresstime / 20) + " secs", + "Efficiency: "+(this.mEfficiency / 100.0F) + "%", + "Problems: " + "" + (this.getIdealStatus() - this.getRepairStatus()), + "Total Time Since Built: " + ""+weeks+" Weeks, " + ""+days+" Days, ", + ""+hours+" Hours, " + ""+minutes+" Minutes, " + ""+second+" Seconds.", + "Total Time in ticks: "+this.mTotalRunTime}; + + return g; + + + } @Override @@ -128,7 +147,7 @@ GT_MetaTileEntity_MultiBlockBase { // Gendustry custom comb with a billion centrifuge outputs? Do it anyway. return true; } - + // Count slots available in output buses ArrayList<ItemStack> tBusStacks = new ArrayList<>(); @@ -353,16 +372,16 @@ GT_MetaTileEntity_MultiBlockBase { GT_Recipe cloneRecipe = null; baseRecipe = tRecipe.copy(); - if ((cloneRecipe != baseRecipe) || (cloneRecipe == null)) { + if ((baseRecipe != null) && ((cloneRecipe != baseRecipe) || (cloneRecipe == null))) { cloneRecipe = baseRecipe.copy(); Logger.WARNING("Setting Recipe"); } - if ((cloneTime != baseRecipe.mDuration) || (cloneTime == 0)) { + if ((baseRecipe != null) && ((cloneTime != baseRecipe.mDuration) || (cloneTime == 0))) { cloneTime = baseRecipe.mDuration; Logger.WARNING("Setting Time"); } - if (cloneRecipe.mDuration > 0) { + if ((cloneRecipe != null) && cloneRecipe.mDuration > 0) { final int originalTime = cloneRecipe.mDuration; final int tempTime = MathUtils.findPercentageOfInt(cloneRecipe.mDuration, (100 - percentage)); @@ -385,6 +404,12 @@ GT_MetaTileEntity_MultiBlockBase { @Override public void onPostTick(final IGregTechTileEntity aBaseMetaTileEntity, final long aTick) { + + //Time Counter + if (aBaseMetaTileEntity.isServerSide()){ + this.mTotalRunTime++; + } + super.onPostTick(aBaseMetaTileEntity, aTick); //this.mChargeHatches.clear(); //this.mDischargeHatches.clear(); @@ -408,7 +433,7 @@ GT_MetaTileEntity_MultiBlockBase { } super.explodeMultiblock(); } - + protected int getGUICircuit(ItemStack[] t) { Item g = CI.getNumberedCircuit(0).getItem(); ItemStack guiSlot = this.mInventory[1]; @@ -420,12 +445,12 @@ GT_MetaTileEntity_MultiBlockBase { else { this.mInternalCircuit = false; } - + if (!this.mInternalCircuit) { for (ItemStack j : t) { if (j.getItem() == g) { - mMode = j.getItemDamage(); - break; + mMode = j.getItemDamage(); + break; } } } @@ -593,7 +618,7 @@ GT_MetaTileEntity_MultiBlockBase { * This is the array Used to Store the Tectech Multi-Amp hatches. */ - public ArrayList<GT_MetaTileEntity_Hatch> mMultiDynamoHatches = new ArrayList(); + public ArrayList<GT_MetaTileEntity_Hatch> mMultiDynamoHatches = new ArrayList<GT_MetaTileEntity_Hatch>(); /** * TecTech Multi-Amp Dynamo Support @@ -652,4 +677,16 @@ GT_MetaTileEntity_MultiBlockBase { return 0; } + @Override + public void saveNBTData(NBTTagCompound aNBT) { + aNBT.setLong("mTotalRunTime", this.mTotalRunTime); + super.saveNBTData(aNBT); + } + + @Override + public void loadNBTData(NBTTagCompound aNBT) { + this.mTotalRunTime = aNBT.getLong("mTotalRunTime"); + super.loadNBTData(aNBT); + } + } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/CasingTextureHandler2.java b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/CasingTextureHandler2.java index d3bf4dfe51..148e92b7fa 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/CasingTextureHandler2.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/CasingTextureHandler2.java @@ -8,61 +8,68 @@ public class CasingTextureHandler2 { public static IIcon getIcon(final int aSide, final int aMeta) { //Texture ID's. case 0 == ID[57] if ((aMeta >= 0) && (aMeta < 16)) { switch (aMeta) { - //Centrifuge - case 0: - return TexturesGtBlock.Casing_Material_RedSteel.getIcon(); - //Coke Oven Frame - case 1: - return TexturesGtBlock.Casing_Material_HastelloyX.getIcon(); - //Coke Oven Casing Tier 1 - case 2: - return TexturesGtBlock.Casing_Material_HastelloyN.getIcon(); - //Coke Oven Casing Tier 2 - case 3: - return TexturesGtBlock.Casing_Material_Fluid_IncoloyDS.getIcon(); - //Material Press Casings - case 4: - return TexturesGtBlock.Casing_Material_Grisium.getIcon(); - //Sifter Structural - case 5: - return TexturesGtBlock.Casing_Machine_Metal_Panel_A.getIcon(); - //Sifter Sieve - case 6: - return TexturesGtBlock.Casing_Machine_Metal_Grate_A.getIcon(); - - //Vanadium Radox Battery - case 7: - return TexturesGtBlock.Overlay_Machine_Cyber_B.getIcon(); - //Power Sub-Station Casing - case 8: - return TexturesGtBlock.Casing_Machine_Metal_Sheet_A.getIcon(); - //Cyclotron Coil - case 9: - return TexturesGtBlock.Overlay_Machine_Cyber_A.getIcon(); - //Cyclotron External Casing - case 10: - return Textures.BlockIcons.MACHINE_CASING_RADIATIONPROOF.getIcon(); - //Multitank Exterior Casing - case 11: - return TexturesGtBlock.Casing_Material_Tantalloy61.getIcon(); - //Reactor Casing I - case 12: - return TexturesGtBlock.Casing_Machine_Simple_Top.getIcon(); - //Reactor Casing II - case 13: - if (aSide <2) { - return TexturesGtBlock.TEXTURE_TECH_A.getIcon(); - } - else { - return TexturesGtBlock.TEXTURE_TECH_B.getIcon(); - } - case 14: - return TexturesGtBlock.Casing_Material_RedSteel.getIcon(); - case 15: - return TexturesGtBlock.Casing_Machine_Farm_Manager.getIcon(); //Tree Farmer Textures + //Centrifuge + case 0: + return TexturesGtBlock.Casing_Material_RedSteel.getIcon(); + //Coke Oven Frame + case 1: + return TexturesGtBlock.Casing_Material_HastelloyX.getIcon(); + //Coke Oven Casing Tier 1 + case 2: + return TexturesGtBlock.Casing_Material_HastelloyN.getIcon(); + //Coke Oven Casing Tier 2 + case 3: + return TexturesGtBlock.Casing_Material_Fluid_IncoloyDS.getIcon(); + //Material Press Casings + case 4: + return TexturesGtBlock.Casing_Material_Grisium.getIcon(); + //Sifter Structural + case 5: + return TexturesGtBlock.Casing_Machine_Metal_Panel_A.getIcon(); + //Sifter Sieve + case 6: + return TexturesGtBlock.Casing_Machine_Metal_Grate_A.getIcon(); - default: - return TexturesGtBlock.Overlay_UU_Matter.getIcon(); + //Vanadium Radox Battery + case 7: + return TexturesGtBlock.Overlay_Machine_Cyber_B.getIcon(); + //Power Sub-Station Casing + case 8: + return TexturesGtBlock.Casing_Machine_Metal_Sheet_A.getIcon(); + //Cyclotron Coil + case 9: + return TexturesGtBlock.Overlay_Machine_Cyber_A.getIcon(); + //Cyclotron External Casing + case 10: + return Textures.BlockIcons.MACHINE_CASING_RADIATIONPROOF.getIcon(); + //Multitank Exterior Casing + case 11: + return TexturesGtBlock.Casing_Material_Tantalloy61.getIcon(); + //Reactor Casing I + case 12: + return TexturesGtBlock.Casing_Machine_Simple_Top.getIcon(); + //Reactor Casing II + case 13: + if (aSide <2) { + return TexturesGtBlock.TEXTURE_TECH_A.getIcon(); + } + else { + return TexturesGtBlock.TEXTURE_TECH_B.getIcon(); + } + case 14: + return TexturesGtBlock.Casing_Material_RedSteel.getIcon(); + case 15: + if (aSide <2) { + if (aSide == 1) { + return TexturesGtBlock.Casing_Machine_Podzol.getIcon(); + } + return TexturesGtBlock.Casing_Machine_Acacia_Log.getIcon(); + } + else { + return TexturesGtBlock.Casing_Machine_Farm_Manager.getIcon(); + } + default: + return TexturesGtBlock.Overlay_UU_Matter.getIcon(); } } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/ChargingHelper.java b/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/ChargingHelper.java index 210603ec0d..7aaabe6ef1 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/ChargingHelper.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/ChargingHelper.java @@ -8,9 +8,9 @@ import gregtech.api.enums.GT_Values; import gregtech.api.util.GT_ModHandler; import gregtech.common.items.*; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.Pair; +import gtPlusPlus.api.objects.minecraft.BlockPos; import gtPlusPlus.core.util.Utils; -import gtPlusPlus.core.util.array.BlockPos; -import gtPlusPlus.core.util.array.Pair; import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.core.util.nbt.NBTUtils; import gtPlusPlus.xmod.gregtech.common.tileentities.machines.basic.GregtechMetaWirelessCharger; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/TreeFarmHelper.java b/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/TreeFarmHelper.java index d023307820..7b1da9738b 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/TreeFarmHelper.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/TreeFarmHelper.java @@ -2,28 +2,63 @@ package gtPlusPlus.xmod.gregtech.common.helpers; import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableTreeFarmerParticles; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Queue; +import java.util.Set; +import java.util.Stack; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; + +import com.google.common.collect.Lists; + +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.eventhandler.Event.Result; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.TickEvent; +import gnu.trove.set.hash.THashSet; import gregtech.api.enums.OrePrefixes; +import gregtech.api.enums.TAE; import gregtech.api.enums.Textures; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.items.GT_MetaGenerated_Tool; import gregtech.common.items.GT_MetaGenerated_Item_02; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.AutoMap; +import gtPlusPlus.api.objects.minecraft.BlockPos; import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.lib.LoadedMods; +import gtPlusPlus.core.players.FakeFarmer; import gtPlusPlus.core.slots.SlotBuzzSaw.SAWTOOL; +import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.fluid.FluidUtils; +import gtPlusPlus.core.util.item.ItemUtils; import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.core.util.particles.BlockBreakParticles; -import gtPlusPlus.xmod.forestry.trees.TreefarmManager; +import gtPlusPlus.core.util.reflect.ReflectionUtils; import net.minecraft.block.Block; +import net.minecraft.block.BlockAir; import net.minecraft.block.IGrowable; +import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.play.server.S23PacketBlockChange; +import net.minecraft.server.MinecraftServer; +import net.minecraft.world.ChunkPosition; import net.minecraft.world.World; +import net.minecraftforge.common.ForgeHooks; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.player.BonemealEvent; +import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.fluids.FluidStack; public class TreeFarmHelper { @@ -199,7 +234,7 @@ public class TreeFarmHelper { } - if (TreefarmManager.isLeaves(testBlock) || TreefarmManager.isWoodLog(testBlock)){ + if (isLeaves(testBlock) || isWoodLog(testBlock)){ Logger.WARNING("1:"+testBlock.getUnlocalizedName()); int posiX, posiY, posiZ; posiX = aBaseMetaTileEntity.getXCoord()+xDir+i; @@ -232,7 +267,7 @@ public class TreeFarmHelper { //Utils.LOG_WARNING("Found "+aStack.getDisplayName()+" in the GUI slot."); if ((aStack.getItem() instanceof GT_MetaGenerated_Item_02) || (aStack.getItem() instanceof GT_MetaGenerated_Tool)){ if (OrePrefixes.craftingTool.contains(aStack)){ - if (aStack.getDisplayName().toLowerCase().contains("saw") || aStack.getDisplayName().toLowerCase().contains("gt.metatool.01.10")){ + if (aStack.getDisplayName().toLowerCase().contains("saw") || aStack.getDisplayName().toLowerCase().contains("gt.metatool.01")){ if (aStack.getItemDamage() == 10){ return SAWTOOL.SAW; } @@ -258,4 +293,730 @@ public class TreeFarmHelper { return SAWTOOL.NONE; } + public static boolean isHumusLoaded = false; + public static boolean isForestryLogsLoaded = false; + public static boolean isForestryFenceLoaded = false; + public static boolean isForestrySaplingsLoaded = false; + public static boolean isForestryLeavesLoaded = false; + public static Block blockHumus; + + public static boolean isForestryValid(){ + if (!LoadedMods.Forestry){ + return false; + } + if (ReflectionUtils.doesClassExist("forestry.core.blocks.BlockSoil")){ + isHumusLoaded = true; + } + if (ReflectionUtils.doesClassExist("forestry.arboriculture.blocks.BlockLog")){ + isForestryLogsLoaded = true; + } + if (ReflectionUtils.doesClassExist("forestry.arboriculture.blocks.BlockArbFence")){ + isForestryFenceLoaded = true; + } + if (ReflectionUtils.doesClassExist("forestry.arboriculture.blocks.BlockSapling")){ + isForestrySaplingsLoaded = true; + } + if (ReflectionUtils.doesClassExist("forestry.arboriculture.blocks.BlockForestryLeaves")){ + isForestryLeavesLoaded = true; + } + return true; + } + + @Optional.Method(modid = "Forestry") + public static Block getHumus(){ + if(blockHumus != null){ + return blockHumus; + } + else if (ReflectionUtils.doesClassExist("forestry.core.blocks.BlockSoil")){ + try { + final Class<?> humusClass = Class.forName("forestry.core.blocks.BlockSoil"); + final ItemStack humusStack = ItemUtils.getCorrectStacktype("Forestry:soil", 1); + if (humusClass != null){ + blockHumus = Block.getBlockFromItem(humusStack.getItem()); + return Block.getBlockFromItem(humusStack.getItem()); + } + } catch (final ClassNotFoundException e) {} + } + return null; + } + + public static boolean isWoodLog(final Block log){ + final String tTool = log.getHarvestTool(0); + + if ((log == Blocks.log) || (log == Blocks.log2)){ + return true; + } + + //Forestry/General Compat + if (log.getClass().getName().toLowerCase().contains("blocklog")){ + return true; + } + + //IC2 Rubber Tree Compat + if (log.getClass().getName().toLowerCase().contains("rubwood") || log.getClass().getName().toLowerCase().contains("rubleaves")){ + return true; + } + + return (OrePrefixes.log.contains(new ItemStack(log, 1))&& ((tTool != null) && (tTool.equals("axe")))) || (log.getMaterial() != Material.wood) ? false : (OrePrefixes.fence.contains(new ItemStack(log, 1)) ? false : true); + } + + public static boolean isLeaves(final Block log){ + if (log.getUnlocalizedName().toLowerCase().contains("leaf")){ + return true; + } + if (log.getUnlocalizedName().toLowerCase().contains("leaves")){ + return true; + } + if (log.getLocalizedName().toLowerCase().contains("leaf")){ + return true; + } + if (log.getLocalizedName().toLowerCase().contains("leaves")){ + return true; + } + return OrePrefixes.leaves.contains(new ItemStack(log, 1)) || log.getMaterial() == Material.leaves || OrePrefixes.treeLeaves.contains(new ItemStack(log, 1)) || log.getMaterial() == Material.vine || OrePrefixes.mushroom.contains(new ItemStack(log, 1)) || log.getMaterial() == Material.cactus; + } + + public static boolean isSapling(final Block log){ + if (log != null){ + if (OrePrefixes.sapling.contains(new ItemStack(log, 1))){ + Logger.WARNING(""+log.getLocalizedName()); + } + if (log.getLocalizedName().toLowerCase().contains("sapling")){ + Logger.WARNING(""+log.getLocalizedName()); + return true; + } + } + return OrePrefixes.sapling.contains(new ItemStack(log, 1)); + } + + public static boolean isDirtBlock(final Block dirt){ + return (dirt == Blocks.dirt ? true : (dirt == Blocks.grass ? true : (getHumus() == null ? false : (dirt == blockHumus ? true : false)))); + } + + public static boolean isFenceBlock(final Block fence){ + return (fence == Blocks.fence ? true : (fence == Blocks.fence_gate ? true : (fence == Blocks.nether_brick_fence ? true : (OrePrefixes.fence.contains(new ItemStack(fence, 1)) ? true : false)))); + } + + public static boolean isAirBlock(final Block air){ + if (air.getLocalizedName().toLowerCase().contains("air")){ + return true; + } + if (air.getClass().getName().toLowerCase().contains("residual") || air.getClass().getName().toLowerCase().contains("heat")){ + return true; + } + return (air == Blocks.air ? true : (air instanceof BlockAir ? true : false)); + } + + /*public static boolean isSaplingBlock(Block sapling){ + return (sapling == Blocks.sapling ? true : (sapling == Blocks.)) + }*/ + + public static BlockPos checkForLogsInGrowArea(final IGregTechTileEntity aBaseMetaTileEntity) { + final int xDir = net.minecraftforge.common.util.ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX * 7; + final int zDir = net.minecraftforge.common.util.ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ * 7; + for (int i = -7; i <= 7; i++) { + for (int j = -7; j <= 7; j++) { + for (int h = 0; h <= 1; h++) { + //Farm Floor inner 14x14 + if (((i != -7) && (i != 7)) && ((j != -7) && (j != 7))) { + if (h == 1) { + if (TreeFarmHelper.isWoodLog(aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j))) { + Logger.INFO("Found a Log"); + return new BlockPos(aBaseMetaTileEntity.getXCoord()+xDir + i, aBaseMetaTileEntity.getYCoord()+h, aBaseMetaTileEntity.getZCoord()+zDir + j); + } + } + } + } + } + } + return null; + } + + public static ItemStack[] findTreeFromBase(World world, BlockPos h) { + int HARD_LIMIT = 10000; + int mCount = 0; + Logger.INFO("Finding Rest of Tree."); + BlockPos mFirstSpot = h; + Set<BlockPos> mSearchedSpaces = new HashSet<BlockPos>(); + Set<BlockPos> mTreeSet = getConnectedBlocks(world, mFirstSpot, mSearchedSpaces); + Set<Set<BlockPos>> mTreeSet2 = new HashSet<Set<BlockPos>>(); + Set<BlockPos> mFinalTree = new HashSet<BlockPos>(); + Iterator<BlockPos> it = mTreeSet.iterator(); + + + Logger.INFO("Running first iteration."); + while(it.hasNext()){ + BlockPos G = it.next(); + mSearchedSpaces.add(G); + mTreeSet2.add(getConnectedBlocks(world, G, mSearchedSpaces)); + mCount++; + Logger.INFO("First Search: "+G.getLocationString()); + if (mCount > HARD_LIMIT) { + break; + } + } + + mCount = 0; + Iterator<Set<BlockPos>> it2 = mTreeSet2.iterator(); + Iterator<BlockPos> it3; + Logger.INFO("Running second iteration."); + while(it2.hasNext()){ + Set<BlockPos> G = it2.next(); + it3 = G.iterator(); + while(it3.hasNext()){ + BlockPos G2 = it3.next(); + mSearchedSpaces.add(G2); + mFinalTree.add(G2); + mCount++; + Logger.INFO("Second Search: "+G2.getLocationString()); + if (mCount > HARD_LIMIT) { + break; + } + } + if (mCount > HARD_LIMIT) { + break; + } + } + + + if (mFinalTree.size() > 0) { + Logger.INFO("Queuing "+mFinalTree.size()+" to Harvest Manager."); + TreeCutter harvestManager = new TreeCutter(world); + + Iterator<BlockPos> ith = mFinalTree.iterator(); + while(ith.hasNext()){ + BlockPos G = ith.next(); + harvestManager.queue(G); + mCount++; + Logger.INFO("Queued: "+G.getLocationString()); + if (mCount > HARD_LIMIT) { + break; + } + } + + if (harvestManager.isValid) { + ItemStack[] loot = harvestManager.getDrops(); + if (loot.length > 0) { + //Logger.INFO("Returning Drops from harvestManager Queue."); + return loot; + } + } + } + return new ItemStack[] {}; + } + + + public static Set<BlockPos> getConnectedBlocks(World W, BlockPos P, Set<BlockPos> checkedSpaces) { + int HARD_LIMIT = 1000; + int mCount = 0; + Logger.INFO("Finding blocks connected to "+P.getLocationString()+"."); + Set<BlockPos> mCheckedSpaces = checkedSpaces; + Set<BlockPos> mStartSearch = searchSixFaces(W, P, mCheckedSpaces, false); + Set<BlockPos> mSecondSearch = new HashSet<BlockPos>(); + Set<BlockPos> mThirdSearch = new HashSet<BlockPos>(); + Iterator<BlockPos> it = mStartSearch.iterator(); + while(it.hasNext()){ + Logger.INFO("Running first iteration. [II]"); + BlockPos G = it.next(); + mCheckedSpaces.add(G); + Set<BlockPos> mBranchSearch = searchSixFaces(W, G, mCheckedSpaces, true); + Iterator<BlockPos> it2 = mBranchSearch.iterator(); + while(it2.hasNext()){ + Logger.INFO("Running second iteration. [II]"); + BlockPos G2 = it2.next(); + mCheckedSpaces.add(G2); + mSecondSearch.add(G2); + mCount++; + if (mCount > HARD_LIMIT) { + break; + } + } + if (mCount > HARD_LIMIT) { + break; + } + } + mCount = 0; + Iterator<BlockPos> itx = mSecondSearch.iterator(); + while(itx.hasNext()){ + BlockPos G = itx.next(); + mCheckedSpaces.add(G); + Set<BlockPos> mBranchSearch = searchSixFaces(W, G, mCheckedSpaces, true); + Iterator<BlockPos> it2 = mBranchSearch.iterator(); + while(it2.hasNext()){ + BlockPos G2 = it2.next(); + mCheckedSpaces.add(G2); + mThirdSearch.add(G2); + mCount++; + if (mCount > HARD_LIMIT) { + break; + } + } + if (mCount > HARD_LIMIT) { + break; + } + } + return mThirdSearch; + } + + public static Set<BlockPos> searchSixFaces(World W, BlockPos P, Set<BlockPos> checkedSpaces, boolean checkLeaves) { + Set<BlockPos> mConnected = new HashSet<BlockPos>(); + int x = P.xPos; + int y = P.yPos; + int z = P.zPos; + if (checkLeaves) { + if (isWoodLog(W.getBlock(x-1, y, z)) || isLeaves(W.getBlock(x-1, y, z))) { + BlockPos L = new BlockPos(x-1, y, z); + if (!checkedSpaces.contains(L)) { + mConnected.add(L); + Logger.INFO("Found Connected. [III]"); + } + } + if (isWoodLog(W.getBlock(x+1, y, z)) || isLeaves(W.getBlock(x+1, y, z))) { + BlockPos L = new BlockPos(x+1, y, z); + if (!checkedSpaces.contains(L)) { + mConnected.add(L); + Logger.INFO("Found Connected. [III]"); + } + } + if (isWoodLog(W.getBlock(x, y-1, z)) || isLeaves(W.getBlock(x, y-1, z))) { + BlockPos L = new BlockPos(x, y-1, z); + if (!checkedSpaces.contains(L)) { + mConnected.add(L); + Logger.INFO("Found Connected. [III]"); + } + } + if (isWoodLog(W.getBlock(x, y+1, z)) || isLeaves(W.getBlock(x, y+1, z))) { + BlockPos L = new BlockPos(x, y+1, z); + if (!checkedSpaces.contains(L)) { + mConnected.add(L); + Logger.INFO("Found Connected. [III]"); + } + } + if (isWoodLog(W.getBlock(x, y, z-1)) || isLeaves(W.getBlock(x, y, z-1))) { + BlockPos L = new BlockPos(x, y, z-1); + if (!checkedSpaces.contains(L)) { + mConnected.add(L); + Logger.INFO("Found Connected. [III]"); + } + } + if (isWoodLog(W.getBlock(x, y, z+1)) || isLeaves(W.getBlock(x, y, z+1))) { + BlockPos L = new BlockPos(x, y, z+1); + if (!checkedSpaces.contains(L)) { + mConnected.add(L); + Logger.INFO("Found Connected. [III]"); + } + } + } + else { + if (isWoodLog(W.getBlock(x-1, y, z))) { + BlockPos L = new BlockPos(x-1, y, z); + //if (!checkedSpaces.contains(L)) { + mConnected.add(L); + Logger.INFO("Found Connected. [III]"); + //} + } + if (isWoodLog(W.getBlock(x+1, y, z))) { + BlockPos L = new BlockPos(x+1, y, z); + //if (!checkedSpaces.contains(L)) { + mConnected.add(L); + Logger.INFO("Found Connected. [III]"); + //} + } + if (isWoodLog(W.getBlock(x, y-1, z))) { + BlockPos L = new BlockPos(x, y-1, z); + //if (!checkedSpaces.contains(L)) { + mConnected.add(L); + Logger.INFO("Found Connected. [III]"); + //} + } + if (isWoodLog(W.getBlock(x, y+1, z))) { + BlockPos L = new BlockPos(x, y+1, z); + //if (!checkedSpaces.contains(L)) { + mConnected.add(L); + Logger.INFO("Found Connected. [III]"); + //} + } + if (isWoodLog(W.getBlock(x, y, z-1))) { + BlockPos L = new BlockPos(x, y, z-1); + //if (!checkedSpaces.contains(L)) { + mConnected.add(L); + Logger.INFO("Found Connected. [III]"); + //} + } + if (isWoodLog(W.getBlock(x, y, z+1))) { + BlockPos L = new BlockPos(x, y, z+1); + //if (!checkedSpaces.contains(L)) { + mConnected.add(L); + Logger.INFO("Found Connected. [III]"); + //} + } + } + return mConnected; + } + + public static <T> Set<T> combineSetData(Set<T> S, Set<T> J) { + Set<T> mData = new HashSet<T>(); + T[] array1 = (T[]) S.toArray(); + Collections.addAll(mData, array1); + T[] array2 = (T[]) J.toArray(); + Collections.addAll(mData, array2); + return mData; + } + + + + /** + * Tree Cutting + */ + + public static class TreeCutter { + + private final World mWorld; + private Map<String, BlockPos> mQueue = new ConcurrentHashMap<String, BlockPos>(); + private AutoMap<ItemStack[]> mDrops = new AutoMap<ItemStack[]>(); + private boolean isValid = true; + + public TreeCutter(World world) { + this.mWorld = world; + } + + public boolean queue(BlockPos pos) { + if (isValid && pos != null) { + //Logger.INFO("Queued: "+pos.getLocationString()); + String hash = Utils.calculateChecksumMD5(pos); + if (hash != null && !mQueue.containsKey(hash)) { + mQueue.put(hash, pos); + return true; + } + } + return false; + } + + private boolean emptyQueue() { + if (isValid) { + Logger.INFO("Emptying Queue."); + if (this.mQueue.size() > 0) { + int totalRemoved = 0; + for (BlockPos h : mQueue.values()) { + final Block block = mWorld.getBlock(h.xPos, h.yPos, h.zPos); + if (block != null) { + final int dropMeta = mWorld.getBlockMetadata(h.xPos, h.yPos, h.zPos); + final ArrayList<ItemStack> blockDrops = block.getDrops(mWorld, h.xPos, h.yPos, h.zPos, dropMeta, 0); + final ItemStack[] drops = ItemUtils.getBlockDrops(blockDrops); + mDrops.put(drops); + //Remove drop that was added to the bus. + mWorld.setBlockToAir(h.xPos, h.yPos, h.zPos); + //new BlockBreakParticles(mWorld, h.xPos, h.yPos, h.zPos, block); + totalRemoved++; + } + } + if (totalRemoved > 0 && mDrops.size() > 0) { + return true; + } + } + } + return false; + } + + public ItemStack[] getDrops() { + //If Queue is successfully cleared and drops are created, let us continue. + if (isValid && emptyQueue()) { + AutoMap<ItemStack> mCollective = new AutoMap<ItemStack>(); + //Iterate ALL of the arrays, add output to a collective. + for (ItemStack[] i : this.mDrops) { + //Array is not null. + if (i != null) { + //Iterate this array. + for (int d=0;d<i.length;d++) { + //Put Output into collective if valid + if (i[d] != null && i[d].stackSize > 0) { + mCollective.put(i[d]); + } + } + } + } + //Build an ItemStack array. + ItemStack[] drops = new ItemStack[mCollective.size()]; + for (int m=0;m<drops.length;m++) { + drops[m] = mCollective.get(m); + } + //Return drops array if it's valid. + if (drops.length > 0) { + isValid = false; + return drops; + } + } + //Invalid or no drops, return empty array. + isValid = false; + return new ItemStack[] {}; + } + + } + + + /** + * Farm AI + */ + private static EntityPlayerMP farmerAI; + public EntityPlayerMP getFakePlayer(World world) { + return farmerAI = checkFakePlayer(world); + } + + public static EntityPlayerMP checkFakePlayer(World world) { + if (farmerAI == null) { + return new FakeFarmer(MinecraftServer.getServer().worldServerForDimension(world.provider.dimensionId)); + } + return farmerAI; + } + + public static boolean onBlockStartBreak (int x, int y, int z, World world){ + final Block wood = world.getBlock(x, y, z); + if (wood == null){ + return false; + } + if (wood.isWood(world, x, y, z) || wood.getMaterial() == Material.sponge) + if(detectTree(world, x,y,z)) { + TreeChopTask chopper = new TreeChopTask(new ChunkPosition(x, y, z), checkFakePlayer(world), 128); + FMLCommonHandler.instance().bus().register(chopper); + // custom block breaking code, don't call vanilla code + return true; + } + //return onBlockStartBreak(stack, x, y, z, player); + return false; + } + + public static boolean detectTree(World world, int pX, int pY, int pZ) { + ChunkPosition pos = null; + Stack<ChunkPosition> candidates = new Stack<>(); + candidates.add(new ChunkPosition(pX, pY, pZ)); + + while (!candidates.isEmpty()) { + ChunkPosition candidate = candidates.pop(); + int curX = candidate.chunkPosX, curY = candidate.chunkPosY, curZ = candidate.chunkPosZ; + + Block block = world.getBlock(curX, curY, curZ); + if ((pos == null || candidate.chunkPosY > pos.chunkPosY) && block.isWood(world, curX, curY, curZ)) { + pos = new ChunkPosition(curX, candidate.chunkPosY + 1, curZ); + // go up + while (world.getBlock(curX, pos.chunkPosY, curZ).isWood(world, curX, pos.chunkPosY, curZ)) { + pos = new ChunkPosition(curX, pos.chunkPosY + 1, curZ); + } + // check if we still have a way diagonally up + candidates.add(new ChunkPosition(curX + 1, pos.chunkPosY + 1, curZ )); + candidates.add(new ChunkPosition(curX , pos.chunkPosY + 1, curZ + 1)); + candidates.add(new ChunkPosition(curX - 1, pos.chunkPosY + 1, curZ )); + candidates.add(new ChunkPosition(curX , pos.chunkPosY + 1, curZ - 1)); + } + } + + // not even one match, so there were no logs. + if (pos == null) { + return false; + } + + // check if there were enough leaves around the last position + // pos now contains the block above the topmost log + // we want at least 5 leaves in the surrounding 26 blocks + int d = 3; + int leaves = 0; + for (int offX = 0; offX < d; offX++) { + for (int offY = 0; offY < d; offY++) { + for (int offZ = 0; offZ < d; offZ++) { + int xPos = pos.chunkPosX -1 + offX, yPos = pos.chunkPosY - 1 + offY, zPos = pos.chunkPosZ - 1 + offZ; + Block leaf = world.getBlock(xPos, yPos, zPos); + if (leaf != null && leaf.isLeaves(world, xPos, yPos, zPos)) { + if (++leaves >= 5) { + return true; + } + } + } + } + } + + // not enough leaves. sorreh + return false; + } + + public static class TreeChopTask { + + public final World world; + public final EntityPlayer player; + public final int blocksPerTick; + + public Queue<ChunkPosition> blocks = Lists.newLinkedList(); + public Set<ChunkPosition> visited = new THashSet<>(); + + public TreeChopTask(ChunkPosition start, EntityPlayer player, int blocksPerTick) { + this.world = player.getEntityWorld(); + this.player = player; + this.blocksPerTick = blocksPerTick; + + this.blocks.add(start); + } + + private void queueCoordinate(int x, int y, int z) { + ChunkPosition pos = new ChunkPosition(x, y, z); + if (!visited.contains(pos)) { + blocks.add(pos); + } + } + + @SubscribeEvent + public void onWorldTick(TickEvent.WorldTickEvent event) { + if (event.side.isClient()) { + finish(); + return; + } + // only if same dimension + if (event.world.provider.dimensionId != world.provider.dimensionId) { + return; + } + + // setup + int left = blocksPerTick; + //NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool"); + + // continue running + ChunkPosition pos; + while (left > 0) { + // completely done or can't do our job anymore?! + if (blocks.isEmpty()/* || tags.getBoolean("Broken")*/) { + finish(); + return; + } + + pos = blocks.remove(); + if (!visited.add(pos)) { + continue; + } + int x = pos.chunkPosX, y = pos.chunkPosY, z = pos.chunkPosZ; + + Block block = world.getBlock(x, y, z); + int meta = world.getBlockMetadata(x, y, z); + + // can we harvest the block and is effective? + if (!block.isWood(world, x, y, z) || !isWoodLog(block)) { + continue; + } + + // save its neighbors + queueCoordinate(x + 1, y, z ); + queueCoordinate(x, y, z + 1); + queueCoordinate(x - 1, y, z ); + queueCoordinate(x, y, z - 1); + + // also add the layer above.. stupid acacia trees + for (int offX = 0; offX < 3; offX++) { + for (int offZ = 0; offZ < 3; offZ++) { + queueCoordinate(x - 1 + offX, y + 1, z - 1 + offZ); + } + } + + // break it, wooo! + breakExtraBlock(player.worldObj, x, y, z, 0, player, x, y, z); + left--; + } + } + + private void finish() { + // goodbye cruel world + FMLCommonHandler.instance().bus().unregister(this); + } + } + + + public static void breakExtraBlock(World world, int x, int y, int z, int sidehit, EntityPlayer playerEntity, int refX, int refY, int refZ) { + // prevent calling that stuff for air blocks, could lead to unexpected behaviour since it fires events + if (world.isAirBlock(x, y, z)) + return; + + // what? + if(!(playerEntity instanceof EntityPlayerMP)) + return; + EntityPlayerMP player = (EntityPlayerMP) playerEntity; + + // check if the block can be broken, since extra block breaks shouldn't instantly break stuff like obsidian + // or precious ores you can't harvest while mining stone + Block block = world.getBlock(x, y, z); + int meta = world.getBlockMetadata(x, y, z); + + // only effective materials + if (!isWoodLog(block)) + return; + + Block refBlock = world.getBlock(refX, refY, refZ); + float refStrength = ForgeHooks.blockStrength(refBlock, player, world, refX, refY, refZ); + float strength = ForgeHooks.blockStrength(block, player, world, x,y,z); + + // only harvestable blocks that aren't impossibly slow to harvest + if (!ForgeHooks.canHarvestBlock(block, player, meta) || refStrength/strength > 10f) + return; + + // send the blockbreak event + BlockEvent.BreakEvent event = ForgeHooks.onBlockBreakEvent(world, player.theItemInWorldManager.getGameType(), player, x,y,z); + if(event.isCanceled()) + return; + + if (player.capabilities.isCreativeMode) { + block.onBlockHarvested(world, x, y, z, meta, player); + if (block.removedByPlayer(world, player, x, y, z, false)) + block.onBlockDestroyedByPlayer(world, x, y, z, meta); + + // send update to client + if (!world.isRemote) { + player.playerNetServerHandler.sendPacket(new S23PacketBlockChange(x, y, z, world)); + } + return; + } + + // callback to the tool the player uses. Called on both sides. This damages the tool n stuff. + player.getCurrentEquippedItem().func_150999_a(world, block, x, y, z, player); + + // server sided handling + if (!world.isRemote) { + // serverside we reproduce ItemInWorldManager.tryHarvestBlock + + // ItemInWorldManager.removeBlock + block.onBlockHarvested(world, x,y,z, meta, player); + + if(block.removedByPlayer(world, player, x,y,z, true)) // boolean is if block can be harvested, checked above + { + block.onBlockDestroyedByPlayer( world, x,y,z, meta); + block.harvestBlock(world, player, x,y,z, meta); + block.dropXpOnBlockBreak(world, x,y,z, event.getExpToDrop()); + } + + // always send block update to client + player.playerNetServerHandler.sendPacket(new S23PacketBlockChange(x, y, z, world)); + } + // client sided handling + else { + //PlayerControllerMP pcmp = Minecraft.getMinecraft().playerController; + // clientside we do a "this clock has been clicked on long enough to be broken" call. This should not send any new packets + // the code above, executed on the server, sends a block-updates that give us the correct state of the block we destroy. + + // following code can be found in PlayerControllerMP.onPlayerDestroyBlock + world.playAuxSFX(2001, x, y, z, Block.getIdFromBlock(block) + (meta << 12)); + if(block.removedByPlayer(world, player, x,y,z, true)) + { + block.onBlockDestroyedByPlayer(world, x,y,z, meta); + } + // callback to the tool + ItemStack itemstack = player.getCurrentEquippedItem(); + if (itemstack != null) + { + itemstack.func_150999_a(world, block, x, y, z, player); + + if (itemstack.stackSize == 0) + { + player.destroyCurrentEquippedItem(); + } + } + + // send an update to the server, so we get an update back + //if(PHConstruct.extraBlockUpdates) + //Minecraft.getMinecraft().getNetHandler().addToSendQueue(new C07PacketPlayerDigging(2, x,y,z, Minecraft.getMinecraft().objectMouseOver.sideHit)); + } + } + } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaTileEntityChunkLoader.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaTileEntityChunkLoader.java index 7bdc5ae2f2..297db1d7a0 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaTileEntityChunkLoader.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaTileEntityChunkLoader.java @@ -1,7 +1,8 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.basic; import static gregtech.api.enums.GT_Values.V; -import static gtPlusPlus.api.objects.ChunkManager.mChunkLoaderManagerMap; +import static gtPlusPlus.api.objects.minecraft.ChunkManager.mChunkLoaderManagerMap; + import java.io.File; import java.io.IOException; import java.util.Map; @@ -17,11 +18,11 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_TieredMachi import gregtech.api.objects.GT_RenderedTexture; import gtPlusPlus.GTplusplus; import gtPlusPlus.api.interfaces.IChunkLoader; -import gtPlusPlus.api.objects.ChunkManager; -import gtPlusPlus.api.objects.DimChunkPos; import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.core.util.array.BlockPos; -import gtPlusPlus.core.util.array.Triplet; +import gtPlusPlus.api.objects.data.Triplet; +import gtPlusPlus.api.objects.minecraft.BlockPos; +import gtPlusPlus.api.objects.minecraft.ChunkManager; +import gtPlusPlus.api.objects.minecraft.DimChunkPos; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaWirelessCharger.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaWirelessCharger.java index 7f70712ee9..e88840573d 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaWirelessCharger.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaWirelessCharger.java @@ -11,8 +11,8 @@ import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.objects.GT_RenderedTexture; import gregtech.api.util.GT_Utility; +import gtPlusPlus.api.objects.minecraft.BlockPos; import gtPlusPlus.core.lib.CORE; -import gtPlusPlus.core.util.array.BlockPos; import gtPlusPlus.core.util.entity.EntityUtils; import gtPlusPlus.core.util.player.PlayerUtils; import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMetaTileEntity; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMTE_TeslaTower.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMTE_TeslaTower.java index b2b6b83d0b..4540c41bd5 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMTE_TeslaTower.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMTE_TeslaTower.java @@ -19,10 +19,10 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energ import gregtech.api.objects.GT_RenderedTexture; import gregtech.api.util.GT_Utility; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.core.block.ModBlocks; import gtPlusPlus.core.entity.EntityTeslaTowerLightning; import gtPlusPlus.core.util.Utils; -import gtPlusPlus.core.util.array.Pair; import gtPlusPlus.core.util.materials.MaterialUtils; import gtPlusPlus.core.util.player.PlayerUtils; import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntityAnimalFarm.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntityAnimalFarm.java index da83b3c3d1..7b7e4414b3 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntityAnimalFarm.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntityAnimalFarm.java @@ -1,397 +1,82 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi; -import java.lang.reflect.Field; - -import gregtech.api.GregTech_API; -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.MetaTileEntity; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_TieredMachineBlock; -import gregtech.api.objects.GT_ItemStack; -import gregtech.api.objects.GT_RenderedTexture; -import gregtech.api.util.GT_Recipe; -import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.core.lib.LoadedMods; -import gtPlusPlus.xmod.forestry.trees.TreefarmManager; -import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock; -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; -public class GregtechMetaTileEntityAnimalFarm extends GT_MetaTileEntity_MultiBlockBase { - - - private static final ITexture[] FACING_SIDE = {new GT_RenderedTexture(TexturesGtBlock.Casing_Material_Tumbaga)}; - private static final ITexture[] FACING_FRONT = {new GT_RenderedTexture(Textures.BlockIcons.MACHINE_BRONZEBLASTFURNACE)}; - private static final ITexture[] FACING_ACTIVE = {new GT_RenderedTexture(Textures.BlockIcons.MACHINE_BRONZEBLASTFURNACE_ACTIVE)}; - - - //public ArrayList<GT_MetaTileEntity_TieredMachineBlock> mCasings = new ArrayList(); +public abstract class GregtechMetaTileEntityAnimalFarm extends GT_MetaTileEntity_MultiBlockBase { - private final boolean running = false; - private boolean p1, p2, p3, p4, p5, p6; - public ItemStack mOutputItem1; - public ItemStack mOutputItem2; - private Block Humus; - private final boolean isForestryLoaded = TreefarmManager.isForestryValid(); - - public GregtechMetaTileEntityAnimalFarm(final int aID, final String aName, final String aNameRegional) { - super(aID, aName, aNameRegional); - } - - public GregtechMetaTileEntityAnimalFarm(final String aName) { + public GregtechMetaTileEntityAnimalFarm(String aName) { super(aName); + // TODO Auto-generated constructor stub } - - @Override - public String[] getDescription() { - return new String[]{ - "Controller Block for the Animal Farmer", - "How to get your first logs without an axe.", - "Max Size(WxHxD): 9x1x9 (Controller, with upto 4 dirt out each direction on a flat plane.)", - "Dirt for the rest! [D = Dirt, X = Controller]" - }; - } - - @Override - public ITexture[] getTexture(final IGregTechTileEntity aBaseMetaTileEntity, final byte aSide, final byte aFacing, final byte aColorIndex, final boolean aActive, final boolean aRedstone) { - if (aSide == 1) { - return new ITexture[]{new GT_RenderedTexture(TexturesGtBlock.Casing_Machine_Acacia_Log), new GT_RenderedTexture(aActive ? TexturesGtBlock.Overlay_Machine_Vent_Fast : TexturesGtBlock.Overlay_Machine_Vent)}; - } - return new ITexture[]{new GT_RenderedTexture(TexturesGtBlock.Casing_Machine_Farm_Manager)}; + + public GregtechMetaTileEntityAnimalFarm(int aID, String aName, String aNameRegional) { + super(aID, aName, aNameRegional); + // TODO Auto-generated constructor stub } @Override - public GT_Recipe.GT_Recipe_Map getRecipeMap() { + public IMetaTileEntity newMetaEntity(IGregTechTileEntity p0) { + // TODO Auto-generated method stub return null; } @Override - public boolean isTeleporterCompatible() { - return false; - } - - @Override - public boolean isFacingValid(final byte aFacing) { - return aFacing > 1; - } - - @Override - public boolean isAccessAllowed(final EntityPlayer aPlayer) { - return true; - } - - @Override - public boolean allowCoverOnSide(final byte aSide, final GT_ItemStack aCoverID) { - return (GregTech_API.getCoverBehavior(aCoverID.toStack()).isSimpleCover()) && (super.allowCoverOnSide(aSide, aCoverID)); - } - - @Override - public MetaTileEntity newMetaEntity(final IGregTechTileEntity aTileEntity) { - return new GregtechMetaTileEntityAnimalFarm(this.mName); + public String[] getDescription() { + // TODO Auto-generated method stub + return null; } @Override - public boolean onRightclick(final IGregTechTileEntity aBaseMetaTileEntity, final EntityPlayer aPlayer) { - if (aBaseMetaTileEntity.isClientSide()) { - return true; - } - - return true; + public ITexture[] getTexture(IGregTechTileEntity p0, byte p1, byte p2, byte p3, boolean p4, boolean p5) { + // TODO Auto-generated method stub + return null; } @Override - public boolean isCorrectMachinePart(final ItemStack aStack) { - return true; + public boolean isCorrectMachinePart(ItemStack p0) { + // TODO Auto-generated method stub + return false; } @Override - public boolean checkRecipe(final ItemStack aStack) { - Logger.INFO("Working"); - /*if (!checkRecursiveBlocks()) { - this.mEfficiency = 0; - this.mEfficiencyIncrease = 0; - this.mMaxProgresstime = 0; - running = false; - return false; - } - - if (mEfficiency == 0) { - this.mEfficiency = 10000; - this.mEfficiencyIncrease = 10000; - this.mMaxProgresstime = Math.max(1, this.mMaxProgresstime); - //GT_Pollution.addPollution(new ChunkPosition(this.getBaseMetaTileEntity().getXCoord(), this.getBaseMetaTileEntity().getYCoord(), this.getBaseMetaTileEntity().getZCoord()), mMaxProgresstime*5); - return true; - }*/ - this.mEfficiency = 0; - this.mEfficiencyIncrease = 0; - this.mMaxProgresstime = 0; + public boolean checkRecipe(ItemStack p0) { + // TODO Auto-generated method stub return false; } - - private Block getHumus(){ - if (!LoadedMods.Forestry){ - return null; - } - return TreefarmManager.getHumus(); - } - @Override - public boolean checkMachine(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) { - - //this.mCasings.clear(); - Logger.INFO("Step 1"); - final int xDir = net.minecraftforge.common.util.ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX * 7; - final int zDir = net.minecraftforge.common.util.ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ * 7; - - for (int i = -7; i <= 7; i++) { - Logger.INFO("Step 2"); - for (int j = -7; j <= 7; j++) { - Logger.INFO("Step 3"); - for (int h = 0; h <= 1; h++) { - Logger.INFO("Step 4"); - - final IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, h, zDir + j); - - //Farm Floor inner 14x14 - if (((i != -7) && (i != 7)) && ((j != -7) && (j != 7))) { - Logger.INFO("Step 5 - H:"+h); - // Farm Dirt Floor and Inner Air/Log space. - if (h == 0) { - //Dirt Floor - if (!TreefarmManager.isDirtBlock(aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j))) { - Logger.INFO("Dirt like block missing from inner 14x14."); - Logger.INFO("Instead, found "+aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j).getLocalizedName()); - aBaseMetaTileEntity.getWorld().setBlock( - (aBaseMetaTileEntity.getXCoord()+(xDir+i)), - (aBaseMetaTileEntity.getYCoord()+(h)), - (aBaseMetaTileEntity.getZCoord()+(zDir+j)), - Blocks.melon_block); - return false; - } - } - // Inside fenced area, mostly air or trees or saplings - else if (h == 1){ - //Farm Inner 14x14 - /*if (!TreefarmManager.isWoodLog(aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j)) || !TreefarmManager.isAirBlock(aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j)) || !aBaseMetaTileEntity.getAirOffset(xDir+i, h, zDir+j)) { - Utils.LOG_INFO("Wood like block missing from inner 14x14, layer 2."); //TODO - Utils.LOG_INFO("Instead, found "+aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j).getLocalizedName()); - Utils.LOG_INFO("Found at x:"+(xDir+i)+" y:"+h+" z:"+(zDir+j)); - //return false; - }*/ - } - - } - //Dealt with inner 5x5, now deal with the exterior. - else { - Logger.INFO("Step 6 - H:"+h); - //Deal with all 4 sides (Fenced area) - if (h == 1) { - if (!TreefarmManager.isFenceBlock(aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j))) { - Logger.INFO("Fence/Gate missing from outside the second layer."); - Logger.INFO("Instead, found "+aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j).getLocalizedName()); - return false; - } - } - //Deal with Bottom edges (Add Hatches/Busses first, othercheck make sure it's dirt) //TODO change the casings to not dirt~ - else if (h == 0) { - - try { - this.addCasingToCasingList(tTileEntity); - } catch (final Throwable t){} - - if ((!this.addMaintenanceToMachineList(tTileEntity, 77)) && (!this.addInputToMachineList(tTileEntity, 77)) && (!this.addOutputToMachineList(tTileEntity, 77)) && (!this.addEnergyInputToMachineList(tTileEntity, 77))) { - if (((xDir + i) != 0) || ((zDir + j) != 0)) {//no controller - - if (!(aBaseMetaTileEntity.getMetaTileID() != 752)) { - Logger.INFO("Fark Keeper Casings Missing from one of the edges on the bottom edge. x:"+(xDir+i)+" y:"+h+" z:"+(zDir+j)+" | "+aBaseMetaTileEntity.getClass()); - Logger.INFO("Instead, found "+aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j).getLocalizedName()); - return false; - } - Logger.INFO("Found a farm keeper."); - } - } - } - Logger.INFO("Step a"); - - } - Logger.INFO("Step b"); - } - Logger.INFO("Step c"); - } - Logger.INFO("Step d"); - } - Logger.INFO("Step 7"); - - //Must have at least one energy hatch. - if (this.mEnergyHatches != null) { - for (int i = 0; i < this.mEnergyHatches.size(); i++) { - if (this.mEnergyHatches.get(i).mTier < 2){ - Logger.INFO("You require at LEAST MV tier Energy Hatches."); - Logger.INFO(this.mOutputHatches.get(i).getBaseMetaTileEntity().getXCoord()+","+this.mOutputHatches.get(i).getBaseMetaTileEntity().getYCoord()+","+this.mOutputHatches.get(i).getBaseMetaTileEntity().getZCoord()); - return false; - } - } - } - //Must have at least one output hatch. - if (this.mOutputHatches != null) { - for (int i = 0; i < this.mOutputHatches.size(); i++) { - - if ((this.mOutputHatches.get(i).mTier < 2) && (this.mOutputHatches.get(i).getBaseMetaTileEntity() instanceof GregtechMTE_NuclearReactor)){ - Logger.INFO("You require at LEAST MV tier Output Hatches."); - Logger.INFO(this.mOutputHatches.get(i).getBaseMetaTileEntity().getXCoord()+","+this.mOutputHatches.get(i).getBaseMetaTileEntity().getYCoord()+","+this.mOutputHatches.get(i).getBaseMetaTileEntity().getZCoord()); - Logger.INFO(this.mOutputHatches.get(i).getBaseMetaTileEntity().getInventoryName()); - return false; - } - } - } - //Must have at least one input hatch. - if (this.mInputHatches != null) { - for (int i = 0; i < this.mInputHatches.size(); i++) { - if (this.mInputHatches.get(i).mTier < 2){ - Logger.INFO("You require at LEAST MV tier Input Hatches."); - Logger.INFO(this.mOutputHatches.get(i).getBaseMetaTileEntity().getXCoord()+","+this.mOutputHatches.get(i).getBaseMetaTileEntity().getYCoord()+","+this.mOutputHatches.get(i).getBaseMetaTileEntity().getZCoord()); - Logger.INFO(this.mOutputHatches.get(i).getBaseMetaTileEntity().getInventoryName()); - return false; - } - } - } - this.mSolderingTool = true; - //turnCasingActive(true); - Logger.INFO("Multiblock Formed."); - return true; + public boolean checkMachine(IGregTechTileEntity p0, ItemStack p1) { + // TODO Auto-generated method stub + return false; } @Override - public int getMaxEfficiency(final ItemStack aStack) { - return 10000; + public int getMaxEfficiency(ItemStack p0) { + // TODO Auto-generated method stub + return 0; } @Override - public int getPollutionPerTick(final ItemStack aStack) { + public int getPollutionPerTick(ItemStack p0) { + // TODO Auto-generated method stub return 0; } @Override - public int getDamageToComponent(final ItemStack aStack) { + public int getDamageToComponent(ItemStack p0) { + // TODO Auto-generated method stub return 0; } - public int getAmountOfOutputs() { - return 1; - } - @Override - public boolean explodesOnComponentBreak(final ItemStack aStack) { - return false; - } - - public boolean addCasingToCasingList(final IGregTechTileEntity aTileEntity) { - if (aTileEntity == null) { - return false; - } - final IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity(); - if (aMetaTileEntity == null) { - return false; - } - if (aMetaTileEntity instanceof GT_MetaTileEntity_TieredMachineBlock) { - //return this.mCasings.add((GT_MetaTileEntity_TieredMachineBlock) aMetaTileEntity); - } + public boolean explodesOnComponentBreak(ItemStack p0) { + // TODO Auto-generated method stub return false; } - private GT_MetaTileEntity_TieredMachineBlock changeTextureswithReflection(final GT_MetaTileEntity_TieredMachineBlock casing, final ITexture[][][] textureSet){ - final GT_MetaTileEntity_TieredMachineBlock cv = casing; - //System.out.println("Before: "+cv.mTextures.hashCode()); - //Get declared field from class - Field f; - try { - final Field[] x = cv.getClass().getFields(); - for (int i =0; i<x.length;i++){ - //Utils.LOG_INFO(x[i].getName()); - } - try { - //Try get the field variable - f = cv.getClass().getField("mTextures"); - // set the accessiblity of the field to true, this will enable you to change the value - f.setAccessible(true); - //change the field value - f.set(cv, textureSet); - //Verify change in texture set - //System.out.println("After: "+cv.mTextures.hashCode()); - return cv; - } catch (final NoSuchFieldException e) { - Logger.INFO("Could not find mTextures."); - return casing; - } - } catch (SecurityException | IllegalArgumentException | IllegalAccessException e) { - // TODO Auto-generated catch block - //e.printStackTrace(); - return casing; - } - } - - - public ITexture[][][] getTextureSet() { - final ITexture[][][] rTextures = new ITexture[10][17][]; - for (byte i = -1; i < 16; i++) { - rTextures[0][i + 1] = this.getFront(i); - rTextures[1][i + 1] = this.getBack(i); - rTextures[2][i + 1] = this.getBottom(i); - rTextures[3][i + 1] = this.getTop(i); - rTextures[4][i + 1] = this.getSides(i); - rTextures[5][i + 1] = this.getFrontActive(i); - rTextures[6][i + 1] = this.getBackActive(i); - rTextures[7][i + 1] = this.getBottomActive(i); - rTextures[8][i + 1] = this.getTopActive(i); - rTextures[9][i + 1] = this.getSidesActive(i); - } - return rTextures; - } - - public ITexture[] getFront(final byte aColor) { - return new ITexture[]{Textures.BlockIcons.MACHINE_CASINGS[2][aColor + 1]}; - } - - public ITexture[] getBack(final byte aColor) { - return new ITexture[]{Textures.BlockIcons.MACHINE_CASINGS[2][aColor + 1]}; - } - - public ITexture[] getBottom(final byte aColor) { - return new ITexture[]{Textures.BlockIcons.MACHINE_CASINGS[2][aColor + 1]}; - } - - public ITexture[] getTop(final byte aColor) { - return new ITexture[]{Textures.BlockIcons.MACHINE_CASINGS[2][aColor + 1]}; - } - - public ITexture[] getSides(final byte aColor) { - return new ITexture[]{Textures.BlockIcons.MACHINE_CASINGS[2][aColor + 1]}; - } - - public ITexture[] getFrontActive(final byte aColor) { - return this.getFront(aColor); - } - - public ITexture[] getBackActive(final byte aColor) { - return this.getBack(aColor); - } - - public ITexture[] getBottomActive(final byte aColor) { - return this.getBottom(aColor); - } - - public ITexture[] getTopActive(final byte aColor) { - return this.getTop(aColor); - } - - public ITexture[] getSidesActive(final byte aColor) { - return this.getSides(aColor); - } }
\ No newline at end of file diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntityTreeFarm.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntityTreeFarm.java index a6323726c3..f0123c2a08 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntityTreeFarm.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntityTreeFarm.java @@ -1,37 +1,39 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi; import gregtech.api.GregTech_API; +import gregtech.api.enums.GT_Values; +import gregtech.api.enums.TAE; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.MetaTileEntity; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy; import gregtech.api.objects.GT_ItemStack; import gregtech.api.objects.GT_RenderedTexture; import gregtech.api.util.*; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.minecraft.BlockPos; +import gtPlusPlus.core.block.ModBlocks; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.players.FakeFarmer; +import gtPlusPlus.core.slots.SlotBuzzSaw.SAWTOOL; import gtPlusPlus.xmod.gregtech.api.gui.CONTAINER_TreeFarmer; import gtPlusPlus.xmod.gregtech.api.gui.GUI_TreeFarmer; import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase; import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock; +import gtPlusPlus.xmod.gregtech.common.helpers.TreeFarmHelper; +import net.minecraft.block.Block; import net.minecraft.entity.player.*; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.server.MinecraftServer; public class GregtechMetaTileEntityTreeFarm extends GregtechMeta_MultiBlockBase { public final static int TEX_INDEX = 31; - - /** - * Farm AI - */ - - private EntityPlayerMP farmerAI; + protected boolean mIsCurrentlyWorking = false; + + - public EntityPlayerMP getFakePlayer() { - return this.farmerAI; - } - public GregtechMetaTileEntityTreeFarm(final int aID, final String aName, final String aNameRegional) { super(aID, aName, aNameRegional); @@ -41,6 +43,10 @@ public class GregtechMetaTileEntityTreeFarm extends GregtechMeta_MultiBlockBase super(aName); } + public boolean isCurrentlyWorking() { + return this.mIsCurrentlyWorking; + } + @Override public String[] getDescription() { return new String[]{ @@ -66,9 +72,33 @@ public class GregtechMetaTileEntityTreeFarm extends GregtechMeta_MultiBlockBase } @Override + public boolean drainEnergyInput(final long aEU) { + if (aEU <= 0L) { + return true; + } + + //Special Override, so that this function uses internally stored power first. + if (this.getEUVar() >= aEU) { + this.setEUVar(this.getEUVar()-aEU); + return true; + } + + for (final GT_MetaTileEntity_Hatch_Energy tHatch : this.mEnergyHatches) { + if (isValidMetaTileEntity((MetaTileEntity) tHatch) + && tHatch.getBaseMetaTileEntity().decreaseStoredEnergyUnits(aEU, false)) { + return true; + } + } + return false; + } + + @Override public ITexture[] getTexture(final IGregTechTileEntity aBaseMetaTileEntity, final byte aSide, final byte aFacing, final byte aColorIndex, final boolean aActive, final boolean aRedstone) { + if (aSide == 0) { + return new ITexture[]{new GT_RenderedTexture(TexturesGtBlock.Casing_Machine_Acacia_Log)}; + } if (aSide == 1) { - return new ITexture[]{new GT_RenderedTexture(TexturesGtBlock.Casing_Machine_Acacia_Log), new GT_RenderedTexture(true ? TexturesGtBlock.Overlay_Machine_Vent_Fast : TexturesGtBlock.Overlay_Machine_Vent)}; + return new ITexture[]{new GT_RenderedTexture(TexturesGtBlock.Casing_Machine_Acacia_Log), new GT_RenderedTexture(isCurrentlyWorking() ? TexturesGtBlock.Overlay_Machine_Vent_Fast : TexturesGtBlock.Overlay_Machine_Vent)}; } return new ITexture[]{new GT_RenderedTexture(TexturesGtBlock.Casing_Machine_Farm_Manager)}; } @@ -78,6 +108,18 @@ public class GregtechMetaTileEntityTreeFarm extends GregtechMeta_MultiBlockBase return null; } + + @Override + public void loadNBTData(NBTTagCompound arg0) { + super.loadNBTData(arg0); + } + + + @Override + public void saveNBTData(NBTTagCompound arg0) { + super.saveNBTData(arg0); + } + @Override public boolean isAccessAllowed(final EntityPlayer aPlayer) { return true; @@ -118,9 +160,18 @@ public class GregtechMetaTileEntityTreeFarm extends GregtechMeta_MultiBlockBase return true; } - @Override - public boolean onRunningTick(final ItemStack aStack) { - return super.onRunningTick(aStack); + public Block getCasingBlock() { + return ModBlocks.blockCasings2Misc; + } + + + public byte getCasingMeta() { + return 15; + } + + + public byte getCasingTextureIndex() { + return (byte) TAE.GTPP_INDEX(31); } @Override @@ -130,34 +181,201 @@ public class GregtechMetaTileEntityTreeFarm extends GregtechMeta_MultiBlockBase @Override + public boolean isGivingInformation() { + return true; + } + + @Override + public String[] getInfoData() { + String[] mSuper = super.getInfoData(); + String[] mDesc = new String[mSuper.length+1]; + mDesc[0] = "Yggdrasil"; // Machine name + for (int i=0;i<mSuper.length;i++) { + mDesc[i+1] = mSuper[i]; + } + return mDesc; + }; + + @Override public boolean explodesOnComponentBreak(ItemStack p0) { return false; } + @Override + public boolean onRunningTick(final ItemStack aStack) { + //Logger.INFO("s"); + + return super.onRunningTick(aStack); + } @Override public void onPostTick(final IGregTechTileEntity aBaseMetaTileEntity, final long aTick) { - //super.onPostTick(aBaseMetaTileEntity, aTick); - if (aBaseMetaTileEntity.isServerSide()) { - //Set Forestry Fake player Sapling Planter - if (this.farmerAI == null) { - this.farmerAI = new FakeFarmer(MinecraftServer.getServer().worldServerForDimension(this.getBaseMetaTileEntity().getWorld().provider.dimensionId)); + //Do Main Multi Logic first + super.onPostTick(aBaseMetaTileEntity, aTick); + + //Do Tree Farm logic next on server side, once per second + if (aBaseMetaTileEntity.isServerSide() && (aTick % 20 == 0)) { + + //Simple Repairs for a simple machine + if (isCurrentlyWorking()) { + this.mSolderingTool = true; + } + + if (this.getBaseMetaTileEntity().isServerSide()) { + if (this.mEnergyHatches.size() > 0) { + for (GT_MetaTileEntity_Hatch_Energy j : this.mEnergyHatches) { + //Logger.INFO(""+j.getInputTier()); + if (this.getEUVar() <= (this.maxEUStore()-GT_Values.V[(int) j.getInputTier()])) { + this.setEUVar(this.getEUVar()+GT_Values.V[(int) j.getInputTier()]); + j.setEUVar(j.getEUVar()-GT_Values.V[(int) j.getInputTier()]); + } + else if (this.getEUVar() > (this.maxEUStore()-GT_Values.V[(int) j.getInputTier()])) { + long diff = (this.maxEUStore()-this.getEUVar()); + this.setEUVar(this.getEUVar()+diff); + j.setEUVar(j.getEUVar()-diff); + } + } + } } - + + + //Try Work + if (this.drainEnergyInput(32)) { + BlockPos t; + if ((t = TreeFarmHelper.checkForLogsInGrowArea(this.getBaseMetaTileEntity())) != null) { + //Logger.INFO("Lets try find new logs/branches."); + TreeFarmHelper.findTreeFromBase(this.getBaseMetaTileEntity().getWorld(), t); + } + } + } - //Client Side - do nothing } @Override - public boolean checkRecipe(ItemStack p0) { + public boolean checkRecipe(ItemStack p0) { + mIsCurrentlyWorking = (isCorrectMachinePart(p0) && this.getEUVar() > 0); + if (isCurrentlyWorking()) { + return true; + } return false; } @Override - public boolean checkMachine(IGregTechTileEntity p0, ItemStack p1) { - return false; + public boolean isCorrectMachinePart(final ItemStack aStack) { + boolean isValid = false; + final SAWTOOL currentInputItem = TreeFarmHelper.isCorrectMachinePart(aStack); + if (currentInputItem != SAWTOOL.NONE){ + isValid = true; + } + return isValid; + } + + @Override + public boolean checkMachine(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) { + Logger.WARNING("Step 1"); + final int xDir = net.minecraftforge.common.util.ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX * 7; + final int zDir = net.minecraftforge.common.util.ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ * 7; + + for (int i = -7; i <= 7; i++) { + Logger.WARNING("Step 2"); + for (int j = -7; j <= 7; j++) { + Logger.WARNING("Step 3"); + for (int h = 0; h <= 1; h++) { + Logger.WARNING("Step 4"); + final IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, h, zDir + j); + //Farm Floor inner 14x14 + if (((i != -7) && (i != 7)) && ((j != -7) && (j != 7))) { + Logger.WARNING("Step 5 - H:"+h); + // Farm Dirt Floor and Inner Air/Log space. + if (h == 0) { + //Dirt Floor + if (!TreeFarmHelper.isDirtBlock(aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j))) { + Logger.MACHINE_INFO("Dirt like block missing from inner 14x14."); + Logger.MACHINE_INFO("Instead, found "+aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j).getLocalizedName()); + return false; + } + } + } + //Dealt with inner 5x5, now deal with the exterior. + else { + Logger.WARNING("Step 6 - H:"+h); + //Deal with all 4 sides (Fenced area) + if (h == 1) { + if (!TreeFarmHelper.isFenceBlock(aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j))) { + Logger.MACHINE_INFO("Fence/Gate missing from outside the second layer."); + Logger.MACHINE_INFO("Instead, found "+aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j).getLocalizedName()); + return false; + } + } + //Deal with Bottom edges (Add Hatches/Busses first, othercheck make sure it's dirt) //TODO change the casings to not dirt~? + else if (h == 0) { + if (tTileEntity != null) + if ((!this.addMaintenanceToMachineList(tTileEntity, TAE.GTPP_INDEX(TEX_INDEX))) && (!this.addInputToMachineList(tTileEntity, TAE.GTPP_INDEX(TEX_INDEX))) && (!this.addOutputToMachineList(tTileEntity, TAE.GTPP_INDEX(TEX_INDEX))) && (!this.addEnergyInputToMachineList(tTileEntity, TAE.GTPP_INDEX(TEX_INDEX)))) { + if (((xDir + i) != 0) || ((zDir + j) != 0)) {//no controller + + if (tTileEntity.getMetaTileID() != 752) { + Logger.MACHINE_INFO("Farm Keeper Casings Missing from one of the edges on the bottom edge. x:"+(xDir+i)+" y:"+h+" z:"+(zDir+j)+" | "+aBaseMetaTileEntity.getClass()); + Logger.MACHINE_INFO("Instead, found "+aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j).getLocalizedName()+" "+tTileEntity.getMetaTileID()); + return false; + } + Logger.WARNING("Found a farm keeper."); + } + } + } + } + } + } + } + + //Must have at least one energy hatch. + if (this.mEnergyHatches != null) { + for (int i = 0; i < this.mEnergyHatches.size(); i++) { + if (this.mEnergyHatches.get(i).mTier < 1){ + Logger.MACHINE_INFO("You require at LEAST MV tier Energy Hatches."); + Logger.MACHINE_INFO(this.mOutputHatches.get(i).getBaseMetaTileEntity().getXCoord()+","+this.mOutputHatches.get(i).getBaseMetaTileEntity().getYCoord()+","+this.mOutputHatches.get(i).getBaseMetaTileEntity().getZCoord()); + return false; + } + } + } + //Must have at least one output hatch. + if (this.mOutputHatches != null) { + for (int i = 0; i < this.mOutputHatches.size(); i++) { + + if (this.mOutputHatches.get(i).mTier < 1){ + Logger.MACHINE_INFO("You require at LEAST MV tier Output Hatches."); + Logger.MACHINE_INFO(this.mOutputHatches.get(i).getBaseMetaTileEntity().getXCoord()+","+this.mOutputHatches.get(i).getBaseMetaTileEntity().getYCoord()+","+this.mOutputHatches.get(i).getBaseMetaTileEntity().getZCoord()); + Logger.MACHINE_INFO(this.mOutputHatches.get(i).getBaseMetaTileEntity().getInventoryName()); + return false; + } + } + } + //Must have at least one input hatch. + if (this.mInputHatches != null) { + for (int i = 0; i < this.mInputHatches.size(); i++) { + if (this.mInputHatches.get(i).mTier < 1){ + Logger.MACHINE_INFO("You require at LEAST MV tier Input Hatches."); + Logger.MACHINE_INFO(this.mOutputHatches.get(i).getBaseMetaTileEntity().getXCoord()+","+this.mOutputHatches.get(i).getBaseMetaTileEntity().getYCoord()+","+this.mOutputHatches.get(i).getBaseMetaTileEntity().getZCoord()); + Logger.MACHINE_INFO(this.mOutputHatches.get(i).getBaseMetaTileEntity().getInventoryName()); + return false; + } + } + } + Logger.MACHINE_INFO("Multiblock Formed."); + return true; + } + + + @Override + public int getPollutionPerTick(ItemStack arg0) { + return 0; + } + + + @Override + public void onServerStart() { + super.onServerStart(); } }
\ No newline at end of file diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialCuttingMachine.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialCuttingMachine.java index 76c6490480..4b93adad37 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialCuttingMachine.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialCuttingMachine.java @@ -137,7 +137,7 @@ extends GregtechMeta_MultiBlockBase { } } } - if ((this.mOutputHatches.size() != 0) || (this.mInputHatches.size() < 0)) { + if ((this.mOutputHatches.size() != 0) || (this.mInputHatches.size() != 0)) { Logger.INFO("Use Busses, Not Hatches for Input/Output."); return false; } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialFishingPond.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialFishingPond.java index 98dc3140bb..62279f0461 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialFishingPond.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialFishingPond.java @@ -17,10 +17,10 @@ import gregtech.api.util.FishPondFakeRecipe; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.AutoMap; import gtPlusPlus.core.block.ModBlocks; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.recipe.common.CI; -import gtPlusPlus.core.util.array.AutoMap; import gtPlusPlus.core.util.fluid.FluidUtils; import gtPlusPlus.core.util.item.ItemUtils; import gtPlusPlus.core.util.math.MathUtils; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_MassFabricator.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_MassFabricator.java index a64057f3cc..f5cf674578 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_MassFabricator.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_MassFabricator.java @@ -24,15 +24,15 @@ import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Recipe.GT_Recipe_Map; import gregtech.api.util.GT_Utility; import gregtech.api.util.Recipe_GT; -import gtPlusPlus.api.objects.GenericStack; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.AutoMap; +import gtPlusPlus.api.objects.data.Pair; +import gtPlusPlus.api.objects.data.Triplet; +import gtPlusPlus.api.objects.minecraft.GenericStack; import gtPlusPlus.core.block.ModBlocks; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.recipe.common.CI; import gtPlusPlus.core.util.Utils; -import gtPlusPlus.core.util.array.AutoMap; -import gtPlusPlus.core.util.array.Pair; -import gtPlusPlus.core.util.array.Triplet; import gtPlusPlus.core.util.fluid.FluidUtils; import gtPlusPlus.core.util.item.ItemUtils; import gtPlusPlus.core.util.math.MathUtils; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_MultiTank.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_MultiTank.java index 7176db5d97..db6b1d9e6a 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_MultiTank.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_MultiTank.java @@ -14,9 +14,9 @@ import gregtech.api.objects.GT_RenderedTexture; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.core.block.ModBlocks; import gtPlusPlus.core.lib.CORE; -import gtPlusPlus.core.util.array.Pair; import gtPlusPlus.core.util.fluid.FluidUtils; import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase; import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/GT_Material_Loader.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/GT_Material_Loader.java index c57ad71fc7..b36ba2f69e 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/GT_Material_Loader.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/GT_Material_Loader.java @@ -7,9 +7,9 @@ import java.util.Map; import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.AutoMap; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.Utils; -import gtPlusPlus.core.util.array.AutoMap; import gtPlusPlus.core.util.materials.MaterialUtils; import gtPlusPlus.core.util.reflect.ReflectionUtils; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MaterialProcessing.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MaterialProcessing.java index 32fa282b0c..590296eee9 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MaterialProcessing.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MaterialProcessing.java @@ -4,12 +4,12 @@ import gregtech.api.GregTech_API; import gregtech.api.enums.GT_Values; import gregtech.api.util.GT_Recipe; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.AutoMap; +import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.MaterialStack; import gtPlusPlus.core.material.state.MaterialState; -import gtPlusPlus.core.util.array.AutoMap; -import gtPlusPlus.core.util.array.Pair; import gtPlusPlus.core.util.item.ItemUtils; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java index bdcb30f930..d7fb58366b 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java @@ -5,14 +5,14 @@ import gregtech.api.enums.GT_Values; import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_Recipe; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.AutoMap; +import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.material.ELEMENT; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.MaterialStack; import gtPlusPlus.core.material.state.MaterialState; import gtPlusPlus.core.recipe.common.CI; -import gtPlusPlus.core.util.array.AutoMap; -import gtPlusPlus.core.util.array.Pair; import gtPlusPlus.core.util.item.ItemUtils; import gtPlusPlus.core.util.recipe.RecipeUtils; import net.minecraft.item.ItemStack; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Recycling.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Recycling.java index 98fb6050d4..00feb26ca5 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Recycling.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Recycling.java @@ -11,10 +11,11 @@ import gregtech.api.enums.GT_Values; import gregtech.api.enums.OrePrefixes; import gregtech.api.util.*; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.AutoMap; +import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.state.MaterialState; import gtPlusPlus.core.util.Utils; -import gtPlusPlus.core.util.array.Pair; import gtPlusPlus.core.util.item.ItemUtils; import gtPlusPlus.core.util.reflect.ReflectionUtils; import net.minecraft.item.ItemStack; @@ -22,6 +23,16 @@ import net.minecraftforge.oredict.OreDictionary; public class RecipeGen_Recycling implements Runnable { + public static AutoMap<Runnable> mQueuedRecyclingGenerators = new AutoMap<Runnable>(); + + public static void executeGenerators() { + if (mQueuedRecyclingGenerators.size() > 0) { + for (Runnable R : mQueuedRecyclingGenerators.values()) { + R.run(); + } + } + } + final Material toGenerate; public static Map<String, ItemStack> mNameMap; @@ -30,14 +41,14 @@ public class RecipeGen_Recycling implements Runnable { if (mNameMap == null){ mNameMap = this.getNameMap(); } - if (mNameMap != null){ - generateRecipes(this.toGenerate); - } + mQueuedRecyclingGenerators.put(this); } @Override public void run() { - + if (mNameMap != null){ + generateRecipes(this.toGenerate); + } } public static void generateRecipes(final Material material) { diff --git a/src/resources/assets/miscutils/lang/en_US.lang b/src/resources/assets/miscutils/lang/en_US.lang index 477d72d103..7fa3b9afad 100644 --- a/src/resources/assets/miscutils/lang/en_US.lang +++ b/src/resources/assets/miscutils/lang/en_US.lang @@ -97,4 +97,1804 @@ tile.blockCompressedObsidian.2.name=Triple Compressed Obsidian (729) tile.blockCompressedObsidian.3.name=Quadruple Compressed Obsidian (6561) tile.blockCompressedObsidian.4.name=Quintuple Compressed Obsidian (59049) tile.blockCompressedObsidian.5.name=Inverted Obsidian -tile.blockNet.name=Net
\ No newline at end of file +tile.blockNet.name=Net + + +//GT++ Items + +//Meta Tool +MU-metaitem.01.0.name=MU-metaitem.01.0.name + +//Cells +item.SulfurDioxide.name=High Quality Sulfur Dioxide Cell +item.Fertiliser.name=Fertiliser Cell +item.UN32Fertiliser.name=UN-32 Fertiliser Cell +item.UN18Fertiliser.name=UN-18 Fertiliser Cell +item.RaisinJuice.name=Raisin Juice Cell + +//Resources +item.itemStickyRubber.name=Gumlet of Sticky Rubber +item.itemCoalCoke.name=Coking Coal +item.itemHydrogenBlob.name=Mysterious Hydrogen Blob +item.itemHeliumBlob.name=Mysterious Hydrogen Substance + +//Normal Items +item.itemAlkalusDisk.name=Alkalus Disk +item.itemSimpleFiremaker.name=Basic Firemaker +item.itemFiber.name=Plant Fiber +item.itemRope.name=Rope +item.backpackRed.name=Red Backpack +item.backpackGreen.name=Green Backpack +item.backpackBlue.name=Blue Backpack +item.backpackYellow.name=Yellow Backpack +item.backpackPurple.name=Purple Backpack +item.backpackCyan.name=Cyan Backpack +item.backpackMaroon.name=Maroon Backpack +item.backpackOlive.name=Olive Backpack +item.backpackDarkGreen.name=Dark Green Backpack +item.backpackDarkPurple.name=Dark Purple Backpack +item.backpackTeal.name=Teal Backpack +item.backpackNavy.name=Navy Backpack +item.backpackSilver.name=Silver Backpack +item.backpackGray.name=Gray Backpack +item.backpackBlack.name=Black Backpack +item.backpackWhite.name=White Backpack +item.itemBlueprint.name=Blueprint [I am useless] +item.itemGemShards.name=Diamond Shards +item.itemHalfCompleteCasings.name=Half Complete Casing I +item.itemSulfuricPotion.name=Thowable Vial of Sulfuric Acid +item.itemHydrofluoricPotion.name=Thowable Vial of Hydrofluoric Acid +item.itemIngotRaisinBread.name=A Serving of Raisin Bread +item.itemHotIngotRaisinBread.name=A Serving of Hot Raisin Bread +item.itemFoodRaisinToast.name=A Serving of Raisin Toast +item.itemHotFoodRaisinToast.name=A Serving of Hot Raisin Toast +item.itemFoodCurriedSausages.name=A Serving of Curried Sausages +item.itemHotFoodCurriedSausages.name=A Serving of Hot Curried Sausages + + + +//Material Items +item.itemDustGadolinium.name=Gadolinium Dust +item.itemDustSmallGadolinium.name=Small Pile of Gadolinium Dust +item.itemDustTinyGadolinium.name=Tiny Pile of Gadolinium Dust +item.itemDustYtterbium.name=Ytterbium Dust +item.itemDustSmallYtterbium.name=Small Pile of Ytterbium Dust +item.itemDustTinyYtterbium.name=Tiny Pile of Ytterbium Dust +item.itemDustSamarium.name=Samarium Dust +item.itemDustSmallSamarium.name=Small Pile of Samarium Dust +item.itemDustTinySamarium.name=Tiny Pile of Samarium Dust +item.itemDustLanthanum.name=Lanthanum Dust +item.itemDustSmallLanthanum.name=Small Pile of Lanthanum Dust +item.itemDustTinyLanthanum.name=Tiny Pile of Lanthanum Dust +item.itemCellNeon.name=Neon Cell +item.itemCellGermanium.name=Germanium Cell +item.itemCellSelenium.name=Selenium Cell +item.itemCellBromine.name=Bromine Cell +item.itemCellKrypton.name=Krypton Cell +item.itemCellZirconium.name=Zirconium Cell +item.itemCellTechnetium.name=Technetium Cell +item.itemCellRuthenium.name=Ruthenium Cell +item.itemCellRhodium.name=Rhodium Cell +item.itemCellIodine.name=Iodine Cell +item.itemCellXenon.name=Xenon Cell +item.itemCellHafnium.name=Hafnium Cell +item.itemCellRhenium.name=Rhenium Cell +item.itemCellThallium.name=Thallium Cell +item.itemCellPolonium.name=Polonium Cell +item.itemCellAstatine.name=Astatine Cell +item.itemCellFrancium.name=Francium Cell +item.itemCellRadium.name=Radium Cell +item.itemCellActinium.name=Actinium Cell +item.itemCellProtactinium.name=Protactinium Cell +item.itemCellNeptunium.name=Neptunium Cell +item.itemCellCurium.name=Curium Cell +item.itemCellBerkelium.name=Berkelium Cell +item.itemCellCalifornium.name=Californium Cell +item.itemCellEinsteinium.name=Einsteinium Cell +item.itemCellFermium.name=Fermium Cell +item.itemCellRefinedTrinium.name=Refined Trinium Cell +item.itemIngotSelenium.name=Selenium Ingot +item.itemDustSelenium.name=Selenium Dust +item.itemDustTinySelenium.name=Tiny Pile of Selenium Dust +item.itemDustSmallSelenium.name=Small Pile of Selenium Dust +item.itemNuggetSelenium.name=Selenium Nugget +item.itemPlateSelenium.name=Selenium Plate +item.itemPlateDoubleSelenium.name=Double Selenium Plate +item.itemBoltSelenium.name=Selenium Bolt +item.itemRodSelenium.name=Selenium Rod +item.itemRodLongSelenium.name=Long Selenium Rod +item.itemRingSelenium.name=Selenium Ring +item.itemScrewSelenium.name=Selenium Screw +item.itemRotorSelenium.name=Selenium Rotor +item.itemGearSelenium.name=Selenium Gear +item.itemCellUranium232.name=Uranium 232 Cell +item.itemCellUranium233.name=Uranium 233 Cell +item.itemCellThoriumTetrafluoride.name=Thorium Tetrafluoride Cell +item.itemCellThoriumHexafluoride.name=Thorium Hexafluoride Cell +item.itemCellUraniumTetrafluoride.name=Uranium Tetrafluoride Cell +item.itemCellUraniumHexafluoride.name=Uranium Hexafluoride Cell +item.itemCellZirconiumTetrafluoride.name=Zirconium Tetrafluoride Cell +item.itemCellBerylliumFluoride.name=Beryllium Fluoride Cell +item.itemCellLithiumFluoride.name=Lithium Fluoride Cell +item.itemCellHydroxide.name=Hydroxide Cell +item.itemCellAmmonium.name=Ammonium Cell +item.itemCellAmmoniumBifluoride.name=Ammonium Bifluoride Cell +item.itemCellBerylliumHydroxide.name=Beryllium Hydroxide Cell +item.itemCellAmmoniumTetrafluoroberyllate.name=Ammonium Tetrafluoroberyllate Cell +item.itemCellNeptuniumHexafluoride.name=Neptunium Hexafluoride Cell +item.itemCellTechnetiumHexafluoride.name=Technetium Hexafluoride Cell +item.itemCellSeleniumHexafluoride.name=Selenium Hexafluoride Cell +item.itemCellEnergyCrystal.name=Energy Crystal Cell +item.itemCellBloodSteel.name=Blood Steel Cell +item.itemCellStaballoy.name=Staballoy Cell +item.itemCellTantalloy60.name=Tantalloy-60 Cell +item.itemCellTantalloy61.name=Tantalloy-61 Cell +item.itemCellTumbaga.name=Tumbaga Cell +item.itemCellPotin.name=Potin Cell +item.itemCellInconel625.name=Inconel-625 Cell +item.itemCellInconel690.name=Inconel-690 Cell +item.itemCellInconel792.name=Inconel-792 Cell +item.itemCellZeron100.name=Zeron-100 Cell +item.itemCellMaragingSteel250.name=Maraging Steel 250 Cell +item.itemCellMaragingSteel300.name=Maraging Steel 300 Cell +item.itemCellMaragingSteel350.name=Maraging Steel 350 Cell +item.itemCellStellite.name=Stellite Cell +item.itemCellTalonite.name=Talonite Cell +item.itemCellHastelloyW.name=Hastelloy-W Cell +item.itemCellHastelloyX.name=Hastelloy-X Cell +item.itemCellHastelloyN.name=Hastelloy-N Cell +item.itemCellHastelloyC276.name=Hastelloy-C276 Cell +item.itemCellIncoloy020.name=Incoloy-020 Cell +item.itemCellIncoloyDS.name=Incoloy-DS Cell +item.itemCellIncoloyMA956.name=Incoloy-MA956 Cell +item.itemCellTungstenCarbide.name=Tungsten Carbide Cell +item.itemCellSiliconCarbide.name=Silicon Carbide Cell +item.itemCellTantalumCarbide.name=Tantalum Carbide Cell +item.itemCellZirconiumCarbide.name=Zirconium Carbide Cell +item.itemCellNiobiumCarbide.name=Niobium Carbide Cell +item.itemCellGrisium.name=Grisium Cell +item.itemCellEglinSteelBaseCompound.name=Eglin Steel Base Compound Cell +item.itemCellEglinSteel.name=Eglin Steel Cell +item.itemCellHG1223.name=HG-1223 Cell +item.itemCellTriniumTitaniumAlloy.name=Trinium Titanium Alloy Cell +item.itemCellTriniumNaquadahAlloy.name=Trinium Naquadah Alloy Cell +item.itemCellTriniumNaquadahCarbonite.name=Trinium Naquadah Carbonite Cell +item.itemCellQuantum.name=Quantum Cell +item.itemIngotBromine.name=Bromine Ingot +item.itemDustBromine.name=Bromine Dust +item.itemDustTinyBromine.name=Tiny Pile of Bromine Dust +item.itemDustSmallBromine.name=Small Pile of Bromine Dust +item.itemNuggetBromine.name=Bromine Nugget +item.itemPlateBromine.name=Bromine Plate +item.itemPlateDoubleBromine.name=Double Bromine Plate +item.itemIngotStrontium.name=Strontium Ingot +item.itemDustStrontium.name=Strontium Dust +item.itemDustTinyStrontium.name=Tiny Pile of Strontium Dust +item.itemDustSmallStrontium.name=Small Pile of Strontium Dust +item.itemNuggetStrontium.name=Strontium Nugget +item.itemPlateStrontium.name=Strontium Plate +item.itemPlateDoubleStrontium.name=Double Strontium Plate +item.itemBoltStrontium.name=Strontium Bolt +item.itemRodStrontium.name=Strontium Rod +item.itemRodLongStrontium.name=Long Strontium Rod +item.itemRingStrontium.name=Strontium Ring +item.itemScrewStrontium.name=Strontium Screw +item.itemRotorStrontium.name=Strontium Rotor +item.itemGearStrontium.name=Strontium Gear +item.itemIngotZirconium.name=Zirconium Ingot +item.itemDustZirconium.name=Zirconium Dust +item.itemDustTinyZirconium.name=Tiny Pile of Zirconium Dust +item.itemDustSmallZirconium.name=Small Pile of Zirconium Dust +item.itemNuggetZirconium.name=Zirconium Nugget +item.itemPlateZirconium.name=Zirconium Plate +item.itemPlateDoubleZirconium.name=Double Zirconium Plate +item.itemBoltZirconium.name=Zirconium Bolt +item.itemRodZirconium.name=Zirconium Rod +item.itemRodLongZirconium.name=Long Zirconium Rod +item.itemRingZirconium.name=Zirconium Ring +item.itemScrewZirconium.name=Zirconium Screw +item.itemRotorZirconium.name=Zirconium Rotor +item.itemGearZirconium.name=Zirconium Gear +item.itemIngotRuthenium.name=Ruthenium Ingot +item.itemDustRuthenium.name=Ruthenium Dust +item.itemDustTinyRuthenium.name=Tiny Pile of Ruthenium Dust +item.itemDustSmallRuthenium.name=Small Pile of Ruthenium Dust +item.itemNuggetRuthenium.name=Ruthenium Nugget +item.itemPlateRuthenium.name=Ruthenium Plate +item.itemPlateDoubleRuthenium.name=Double Ruthenium Plate +item.itemBoltRuthenium.name=Ruthenium Bolt +item.itemRodRuthenium.name=Ruthenium Rod +item.itemRodLongRuthenium.name=Long Ruthenium Rod +item.itemRingRuthenium.name=Ruthenium Ring +item.itemScrewRuthenium.name=Ruthenium Screw +item.itemRotorRuthenium.name=Ruthenium Rotor +item.itemGearRuthenium.name=Ruthenium Gear +item.itemIngotIodine.name=Iodine Ingot +item.itemDustIodine.name=Iodine Dust +item.itemDustTinyIodine.name=Tiny Pile of Iodine Dust +item.itemDustSmallIodine.name=Small Pile of Iodine Dust +item.itemNuggetIodine.name=Iodine Nugget +item.itemPlateIodine.name=Iodine Plate +item.itemPlateDoubleIodine.name=Double Iodine Plate +item.itemBoltIodine.name=Iodine Bolt +item.itemRodIodine.name=Iodine Rod +item.itemRodLongIodine.name=Long Iodine Rod +item.itemRingIodine.name=Iodine Ring +item.itemScrewIodine.name=Iodine Screw +item.itemRotorIodine.name=Iodine Rotor +item.itemGearIodine.name=Iodine Gear +item.itemIngotHafnium.name=Hafnium Ingot +item.itemDustHafnium.name=Hafnium Dust +item.itemDustTinyHafnium.name=Tiny Pile of Hafnium Dust +item.itemDustSmallHafnium.name=Small Pile of Hafnium Dust +item.itemNuggetHafnium.name=Hafnium Nugget +item.itemPlateHafnium.name=Hafnium Plate +item.itemPlateDoubleHafnium.name=Double Hafnium Plate +item.itemBoltHafnium.name=Hafnium Bolt +item.itemRodHafnium.name=Hafnium Rod +item.itemRodLongHafnium.name=Long Hafnium Rod +item.itemRingHafnium.name=Hafnium Ring +item.itemScrewHafnium.name=Hafnium Screw +item.itemRotorHafnium.name=Hafnium Rotor +item.itemGearHafnium.name=Hafnium Gear +item.itemIngotDysprosium.name=Dysprosium Ingot +item.itemDustDysprosium.name=Dysprosium Dust +item.itemDustTinyDysprosium.name=Tiny Pile of Dysprosium Dust +item.itemDustSmallDysprosium.name=Small Pile of Dysprosium Dust +item.itemNuggetDysprosium.name=Dysprosium Nugget +item.itemPlateDysprosium.name=Dysprosium Plate +item.itemPlateDoubleDysprosium.name=Double Dysprosium Plate +item.itemBoltDysprosium.name=Dysprosium Bolt +item.itemRodDysprosium.name=Dysprosium Rod +item.itemRodLongDysprosium.name=Long Dysprosium Rod +item.itemRingDysprosium.name=Dysprosium Ring +item.itemScrewDysprosium.name=Dysprosium Screw +item.itemRotorDysprosium.name=Dysprosium Rotor +item.itemGearDysprosium.name=Dysprosium Gear +item.itemIngotTellurium.name=Tellurium Ingot +item.itemDustTellurium.name=Tellurium Dust +item.itemDustTinyTellurium.name=Tiny Pile of Tellurium Dust +item.itemDustSmallTellurium.name=Small Pile of Tellurium Dust +item.itemNuggetTellurium.name=Tellurium Nugget +item.itemPlateTellurium.name=Tellurium Plate +item.itemPlateDoubleTellurium.name=Double Tellurium Plate +item.itemBoltTellurium.name=Tellurium Bolt +item.itemRodTellurium.name=Tellurium Rod +item.itemRodLongTellurium.name=Long Tellurium Rod +item.itemRingTellurium.name=Tellurium Ring +item.itemScrewTellurium.name=Tellurium Screw +item.itemRotorTellurium.name=Tellurium Rotor +item.itemGearTellurium.name=Tellurium Gear +item.itemIngotRhodium.name=Rhodium Ingot +item.itemDustRhodium.name=Rhodium Dust +item.itemDustTinyRhodium.name=Tiny Pile of Rhodium Dust +item.itemDustSmallRhodium.name=Small Pile of Rhodium Dust +item.itemNuggetRhodium.name=Rhodium Nugget +item.itemPlateRhodium.name=Rhodium Plate +item.itemPlateDoubleRhodium.name=Double Rhodium Plate +item.itemBoltRhodium.name=Rhodium Bolt +item.itemRodRhodium.name=Rhodium Rod +item.itemRodLongRhodium.name=Long Rhodium Rod +item.itemRingRhodium.name=Rhodium Ring +item.itemScrewRhodium.name=Rhodium Screw +item.itemRotorRhodium.name=Rhodium Rotor +item.itemGearRhodium.name=Rhodium Gear +item.itemIngotRhenium.name=Rhenium Ingot +item.itemDustRhenium.name=Rhenium Dust +item.itemDustTinyRhenium.name=Tiny Pile of Rhenium Dust +item.itemDustSmallRhenium.name=Small Pile of Rhenium Dust +item.itemNuggetRhenium.name=Rhenium Nugget +item.itemPlateRhenium.name=Rhenium Plate +item.itemPlateDoubleRhenium.name=Double Rhenium Plate +item.itemBoltRhenium.name=Rhenium Bolt +item.itemRodRhenium.name=Rhenium Rod +item.itemRodLongRhenium.name=Long Rhenium Rod +item.itemRingRhenium.name=Rhenium Ring +item.itemScrewRhenium.name=Rhenium Screw +item.itemRotorRhenium.name=Rhenium Rotor +item.itemGearRhenium.name=Rhenium Gear +item.itemIngotThallium.name=Thallium Ingot +item.itemDustThallium.name=Thallium Dust +item.itemDustTinyThallium.name=Tiny Pile of Thallium Dust +item.itemDustSmallThallium.name=Small Pile of Thallium Dust +item.itemNuggetThallium.name=Thallium Nugget +item.itemPlateThallium.name=Thallium Plate +item.itemPlateDoubleThallium.name=Double Thallium Plate +item.itemBoltThallium.name=Thallium Bolt +item.itemRodThallium.name=Thallium Rod +item.itemRodLongThallium.name=Long Thallium Rod +item.itemRingThallium.name=Thallium Ring +item.itemScrewThallium.name=Thallium Screw +item.itemRotorThallium.name=Thallium Rotor +item.itemGearThallium.name=Thallium Gear +item.itemIngotTechnetium.name=Technetium Ingot +item.itemDustTechnetium.name=Technetium Dust +item.itemDustTinyTechnetium.name=Tiny Pile of Technetium Dust +item.itemDustSmallTechnetium.name=Small Pile of Technetium Dust +item.itemNuggetTechnetium.name=Technetium Nugget +item.itemPlateTechnetium.name=Technetium Plate +item.itemPlateDoubleTechnetium.name=Double Technetium Plate +item.itemIngotPolonium.name=Polonium Ingot +item.itemDustPolonium.name=Polonium Dust +item.itemDustTinyPolonium.name=Tiny Pile of Polonium Dust +item.itemDustSmallPolonium.name=Small Pile of Polonium Dust +item.itemNuggetPolonium.name=Polonium Nugget +item.itemPlatePolonium.name=Polonium Plate +item.itemPlateDoublePolonium.name=Double Polonium Plate +item.itemIngotAstatine.name=Astatine Ingot +item.itemDustAstatine.name=Astatine Dust +item.itemDustTinyAstatine.name=Tiny Pile of Astatine Dust +item.itemDustSmallAstatine.name=Small Pile of Astatine Dust +item.itemNuggetAstatine.name=Astatine Nugget +item.itemPlateAstatine.name=Astatine Plate +item.itemPlateDoubleAstatine.name=Double Astatine Plate +item.itemIngotFrancium.name=Francium Ingot +item.itemDustFrancium.name=Francium Dust +item.itemDustTinyFrancium.name=Tiny Pile of Francium Dust +item.itemDustSmallFrancium.name=Small Pile of Francium Dust +item.itemNuggetFrancium.name=Francium Nugget +item.itemPlateFrancium.name=Francium Plate +item.itemPlateDoubleFrancium.name=Double Francium Plate +item.itemIngotRadium.name=Radium Ingot +item.itemDustRadium.name=Radium Dust +item.itemDustTinyRadium.name=Tiny Pile of Radium Dust +item.itemDustSmallRadium.name=Small Pile of Radium Dust +item.itemNuggetRadium.name=Radium Nugget +item.itemPlateRadium.name=Radium Plate +item.itemPlateDoubleRadium.name=Double Radium Plate +item.itemIngotActinium.name=Actinium Ingot +item.itemDustActinium.name=Actinium Dust +item.itemDustTinyActinium.name=Tiny Pile of Actinium Dust +item.itemDustSmallActinium.name=Small Pile of Actinium Dust +item.itemNuggetActinium.name=Actinium Nugget +item.itemPlateActinium.name=Actinium Plate +item.itemPlateDoubleActinium.name=Double Actinium Plate +item.itemIngotProtactinium.name=Protactinium Ingot +item.itemDustProtactinium.name=Protactinium Dust +item.itemDustTinyProtactinium.name=Tiny Pile of Protactinium Dust +item.itemDustSmallProtactinium.name=Small Pile of Protactinium Dust +item.itemNuggetProtactinium.name=Protactinium Nugget +item.itemPlateProtactinium.name=Protactinium Plate +item.itemPlateDoubleProtactinium.name=Double Protactinium Plate +item.itemIngotNeptunium.name=Neptunium Ingot +item.itemDustNeptunium.name=Neptunium Dust +item.itemDustTinyNeptunium.name=Tiny Pile of Neptunium Dust +item.itemDustSmallNeptunium.name=Small Pile of Neptunium Dust +item.itemNuggetNeptunium.name=Neptunium Nugget +item.itemPlateNeptunium.name=Neptunium Plate +item.itemPlateDoubleNeptunium.name=Double Neptunium Plate +item.itemIngotCurium.name=Curium Ingot +item.itemDustCurium.name=Curium Dust +item.itemDustTinyCurium.name=Tiny Pile of Curium Dust +item.itemDustSmallCurium.name=Small Pile of Curium Dust +item.itemNuggetCurium.name=Curium Nugget +item.itemPlateCurium.name=Curium Plate +item.itemPlateDoubleCurium.name=Double Curium Plate +item.itemIngotBerkelium.name=Berkelium Ingot +item.itemDustBerkelium.name=Berkelium Dust +item.itemDustTinyBerkelium.name=Tiny Pile of Berkelium Dust +item.itemDustSmallBerkelium.name=Small Pile of Berkelium Dust +item.itemNuggetBerkelium.name=Berkelium Nugget +item.itemPlateBerkelium.name=Berkelium Plate +item.itemPlateDoubleBerkelium.name=Double Berkelium Plate +item.itemIngotCalifornium.name=Californium Ingot +item.itemDustCalifornium.name=Californium Dust +item.itemDustTinyCalifornium.name=Tiny Pile of Californium Dust +item.itemDustSmallCalifornium.name=Small Pile of Californium Dust +item.itemNuggetCalifornium.name=Californium Nugget +item.itemPlateCalifornium.name=Californium Plate +item.itemPlateDoubleCalifornium.name=Double Californium Plate +item.itemIngotEinsteinium.name=Einsteinium Ingot +item.itemDustEinsteinium.name=Einsteinium Dust +item.itemDustTinyEinsteinium.name=Tiny Pile of Einsteinium Dust +item.itemDustSmallEinsteinium.name=Small Pile of Einsteinium Dust +item.itemNuggetEinsteinium.name=Einsteinium Nugget +item.itemPlateEinsteinium.name=Einsteinium Plate +item.itemPlateDoubleEinsteinium.name=Double Einsteinium Plate +item.itemIngotFermium.name=Fermium Ingot +item.itemDustFermium.name=Fermium Dust +item.itemDustTinyFermium.name=Tiny Pile of Fermium Dust +item.itemDustSmallFermium.name=Small Pile of Fermium Dust +item.itemNuggetFermium.name=Fermium Nugget +item.itemPlateFermium.name=Fermium Plate +item.itemPlateDoubleFermium.name=Double Fermium Plate +item.itemIngotLithium7.name=Lithium 7 Ingot +item.itemDustLithium7.name=Lithium 7 Dust +item.itemDustTinyLithium7.name=Tiny Pile of Lithium 7 Dust +item.itemDustSmallLithium7.name=Small Pile of Lithium 7 Dust +item.itemNuggetLithium7.name=Lithium 7 Nugget +item.itemPlateLithium7.name=Lithium 7 Plate +item.itemPlateDoubleLithium7.name=Double Lithium 7 Plate +item.itemIngotThorium232.name=Thorium 232 Ingot +item.itemDustThorium232.name=Thorium 232 Dust +item.itemDustTinyThorium232.name=Tiny Pile of Thorium 232 Dust +item.itemDustSmallThorium232.name=Small Pile of Thorium 232 Dust +item.itemNuggetThorium232.name=Thorium 232 Nugget +item.itemPlateThorium232.name=Thorium 232 Plate +item.itemPlateDoubleThorium232.name=Double Thorium 232 Plate +item.itemIngotUranium232.name=Uranium 232 Ingot +item.itemDustUranium232.name=Uranium 232 Dust +item.itemDustTinyUranium232.name=Tiny Pile of Uranium 232 Dust +item.itemDustSmallUranium232.name=Small Pile of Uranium 232 Dust +item.itemNuggetUranium232.name=Uranium 232 Nugget +item.itemPlateUranium232.name=Uranium 232 Plate +item.itemRodUranium232.name=Uranium 232 Rod +item.itemRodLongUranium232.name=Long Uranium 232 Rod +item.itemIngotUranium233.name=Uranium 233 Ingot +item.itemDustUranium233.name=Uranium 233 Dust +item.itemDustTinyUranium233.name=Tiny Pile of Uranium 233 Dust +item.itemDustSmallUranium233.name=Small Pile of Uranium 233 Dust +item.itemNuggetUranium233.name=Uranium 233 Nugget +item.itemPlateUranium233.name=Uranium 233 Plate +item.itemRodUranium233.name=Uranium 233 Rod +item.itemRodLongUranium233.name=Long Uranium 233 Rod +item.itemIngotPlutonium238.name=Plutonium-238 Ingot +item.itemDustPlutonium238.name=Plutonium-238 Dust +item.itemDustTinyPlutonium238.name=Tiny Pile of Plutonium-238 Dust +item.itemDustSmallPlutonium238.name=Small Pile of Plutonium-238 Dust +item.itemNuggetPlutonium238.name=Plutonium-238 Nugget +item.itemPlatePlutonium238.name=Plutonium-238 Plate +item.itemPlateDoublePlutonium238.name=Double Plutonium-238 Plate +item.itemIngotStrontium90.name=Strontium-90 Ingot +item.itemDustStrontium90.name=Strontium-90 Dust +item.itemDustTinyStrontium90.name=Tiny Pile of Strontium-90 Dust +item.itemDustSmallStrontium90.name=Small Pile of Strontium-90 Dust +item.itemNuggetStrontium90.name=Strontium-90 Nugget +item.itemPlateStrontium90.name=Strontium-90 Plate +item.itemPlateDoubleStrontium90.name=Double Strontium-90 Plate +item.itemIngotPolonium210.name=Polonium-210 Ingot +item.itemDustPolonium210.name=Polonium-210 Dust +item.itemDustTinyPolonium210.name=Tiny Pile of Polonium-210 Dust +item.itemDustSmallPolonium210.name=Small Pile of Polonium-210 Dust +item.itemNuggetPolonium210.name=Polonium-210 Nugget +item.itemPlatePolonium210.name=Polonium-210 Plate +item.itemPlateDoublePolonium210.name=Double Polonium-210 Plate +item.itemIngotAmericium241.name=Americium-241 Ingot +item.itemDustAmericium241.name=Americium-241 Dust +item.itemDustTinyAmericium241.name=Tiny Pile of Americium-241 Dust +item.itemDustSmallAmericium241.name=Small Pile of Americium-241 Dust +item.itemNuggetAmericium241.name=Americium-241 Nugget +item.itemPlateAmericium241.name=Americium-241 Plate +item.itemPlateDoubleAmericium241.name=Double Americium-241 Plate +item.itemIngotSiliconCarbide.name=Silicon Carbide Ingot +item.itemDustSiliconCarbide.name=Silicon Carbide Dust +item.itemDustTinySiliconCarbide.name=Tiny Pile of Silicon Carbide Dust +item.itemDustSmallSiliconCarbide.name=Small Pile of Silicon Carbide Dust +item.itemNuggetSiliconCarbide.name=Silicon Carbide Nugget +item.itemPlateSiliconCarbide.name=Silicon Carbide Plate +item.itemPlateDoubleSiliconCarbide.name=Double Silicon Carbide Plate +item.itemBoltSiliconCarbide.name=Silicon Carbide Bolt +item.itemRodSiliconCarbide.name=Silicon Carbide Rod +item.itemRodLongSiliconCarbide.name=Long Silicon Carbide Rod +item.itemRingSiliconCarbide.name=Silicon Carbide Ring +item.itemScrewSiliconCarbide.name=Silicon Carbide Screw +item.itemRotorSiliconCarbide.name=Silicon Carbide Rotor +item.itemGearSiliconCarbide.name=Silicon Carbide Gear +item.itemIngotZirconiumCarbide.name=Zirconium Carbide Ingot +item.itemHotIngotZirconiumCarbide.name=Hot Zirconium Carbide Ingot +item.itemDustZirconiumCarbide.name=Zirconium Carbide Dust +item.itemDustTinyZirconiumCarbide.name=Tiny Pile of Zirconium Carbide Dust +item.itemDustSmallZirconiumCarbide.name=Small Pile of Zirconium Carbide Dust +item.itemNuggetZirconiumCarbide.name=Zirconium Carbide Nugget +item.itemPlateZirconiumCarbide.name=Zirconium Carbide Plate +item.itemPlateDoubleZirconiumCarbide.name=Double Zirconium Carbide Plate +item.itemBoltZirconiumCarbide.name=Zirconium Carbide Bolt +item.itemRodZirconiumCarbide.name=Zirconium Carbide Rod +item.itemRodLongZirconiumCarbide.name=Long Zirconium Carbide Rod +item.itemRingZirconiumCarbide.name=Zirconium Carbide Ring +item.itemScrewZirconiumCarbide.name=Zirconium Carbide Screw +item.itemRotorZirconiumCarbide.name=Zirconium Carbide Rotor +item.itemGearZirconiumCarbide.name=Zirconium Carbide Gear +item.itemIngotTantalumCarbide.name=Tantalum Carbide Ingot +item.itemHotIngotTantalumCarbide.name=Hot Tantalum Carbide Ingot +item.itemDustTantalumCarbide.name=Tantalum Carbide Dust +item.itemDustTinyTantalumCarbide.name=Tiny Pile of Tantalum Carbide Dust +item.itemDustSmallTantalumCarbide.name=Small Pile of Tantalum Carbide Dust +item.itemNuggetTantalumCarbide.name=Tantalum Carbide Nugget +item.itemPlateTantalumCarbide.name=Tantalum Carbide Plate +item.itemPlateDoubleTantalumCarbide.name=Double Tantalum Carbide Plate +item.itemBoltTantalumCarbide.name=Tantalum Carbide Bolt +item.itemRodTantalumCarbide.name=Tantalum Carbide Rod +item.itemRodLongTantalumCarbide.name=Long Tantalum Carbide Rod +item.itemRingTantalumCarbide.name=Tantalum Carbide Ring +item.itemScrewTantalumCarbide.name=Tantalum Carbide Screw +item.itemRotorTantalumCarbide.name=Tantalum Carbide Rotor +item.itemGearTantalumCarbide.name=Tantalum Carbide Gear +item.itemIngotNiobiumCarbide.name=Niobium Carbide Ingot +item.itemHotIngotNiobiumCarbide.name=Hot Niobium Carbide Ingot +item.itemDustNiobiumCarbide.name=Niobium Carbide Dust +item.itemDustTinyNiobiumCarbide.name=Tiny Pile of Niobium Carbide Dust +item.itemDustSmallNiobiumCarbide.name=Small Pile of Niobium Carbide Dust +item.itemNuggetNiobiumCarbide.name=Niobium Carbide Nugget +item.itemPlateNiobiumCarbide.name=Niobium Carbide Plate +item.itemPlateDoubleNiobiumCarbide.name=Double Niobium Carbide Plate +item.itemBoltNiobiumCarbide.name=Niobium Carbide Bolt +item.itemRodNiobiumCarbide.name=Niobium Carbide Rod +item.itemRodLongNiobiumCarbide.name=Long Niobium Carbide Rod +item.itemRingNiobiumCarbide.name=Niobium Carbide Ring +item.itemScrewNiobiumCarbide.name=Niobium Carbide Screw +item.itemRotorNiobiumCarbide.name=Niobium Carbide Rotor +item.itemGearNiobiumCarbide.name=Niobium Carbide Gear +item.itemIngotBerylliumFluoride.name=Beryllium Fluoride Ingot +item.itemDustBerylliumFluoride.name=Beryllium Fluoride Dust +item.itemDustTinyBerylliumFluoride.name=Tiny Pile of Beryllium Fluoride Dust +item.itemDustSmallBerylliumFluoride.name=Small Pile of Beryllium Fluoride Dust +item.itemNuggetBerylliumFluoride.name=Beryllium Fluoride Nugget +item.itemPlateBerylliumFluoride.name=Beryllium Fluoride Plate +item.itemPlateDoubleBerylliumFluoride.name=Double Beryllium Fluoride Plate +item.itemIngotLithiumFluoride.name=Lithium Fluoride Ingot +item.itemDustLithiumFluoride.name=Lithium Fluoride Dust +item.itemDustTinyLithiumFluoride.name=Tiny Pile of Lithium Fluoride Dust +item.itemDustSmallLithiumFluoride.name=Small Pile of Lithium Fluoride Dust +item.itemNuggetLithiumFluoride.name=Lithium Fluoride Nugget +item.itemPlateLithiumFluoride.name=Lithium Fluoride Plate +item.itemPlateDoubleLithiumFluoride.name=Double Lithium Fluoride Plate +item.itemIngotThoriumTetrafluoride.name=Thorium Tetrafluoride Ingot +item.itemDustThoriumTetrafluoride.name=Thorium Tetrafluoride Dust +item.itemDustTinyThoriumTetrafluoride.name=Tiny Pile of Thorium Tetrafluoride Dust +item.itemDustSmallThoriumTetrafluoride.name=Small Pile of Thorium Tetrafluoride Dust +item.itemNuggetThoriumTetrafluoride.name=Thorium Tetrafluoride Nugget +item.itemPlateThoriumTetrafluoride.name=Thorium Tetrafluoride Plate +item.itemPlateDoubleThoriumTetrafluoride.name=Double Thorium Tetrafluoride Plate +item.itemIngotThoriumHexafluoride.name=Thorium Hexafluoride Ingot +item.itemDustThoriumHexafluoride.name=Thorium Hexafluoride Dust +item.itemDustTinyThoriumHexafluoride.name=Tiny Pile of Thorium Hexafluoride Dust +item.itemDustSmallThoriumHexafluoride.name=Small Pile of Thorium Hexafluoride Dust +item.itemNuggetThoriumHexafluoride.name=Thorium Hexafluoride Nugget +item.itemPlateThoriumHexafluoride.name=Thorium Hexafluoride Plate +item.itemPlateDoubleThoriumHexafluoride.name=Double Thorium Hexafluoride Plate +item.itemIngotUraniumTetrafluoride.name=Uranium Tetrafluoride Ingot +item.itemDustUraniumTetrafluoride.name=Uranium Tetrafluoride Dust +item.itemDustTinyUraniumTetrafluoride.name=Tiny Pile of Uranium Tetrafluoride Dust +item.itemDustSmallUraniumTetrafluoride.name=Small Pile of Uranium Tetrafluoride Dust +item.itemNuggetUraniumTetrafluoride.name=Uranium Tetrafluoride Nugget +item.itemPlateUraniumTetrafluoride.name=Uranium Tetrafluoride Plate +item.itemPlateDoubleUraniumTetrafluoride.name=Double Uranium Tetrafluoride Plate +item.itemIngotUraniumHexafluoride.name=Uranium Hexafluoride Ingot +item.itemDustUraniumHexafluoride.name=Uranium Hexafluoride Dust +item.itemDustTinyUraniumHexafluoride.name=Tiny Pile of Uranium Hexafluoride Dust +item.itemDustSmallUraniumHexafluoride.name=Small Pile of Uranium Hexafluoride Dust +item.itemNuggetUraniumHexafluoride.name=Uranium Hexafluoride Nugget +item.itemPlateUraniumHexafluoride.name=Uranium Hexafluoride Plate +item.itemPlateDoubleUraniumHexafluoride.name=Double Uranium Hexafluoride Plate +item.itemIngotZirconiumTetrafluoride.name=Zirconium Tetrafluoride Ingot +item.itemDustZirconiumTetrafluoride.name=Zirconium Tetrafluoride Dust +item.itemDustTinyZirconiumTetrafluoride.name=Tiny Pile of Zirconium Tetrafluoride Dust +item.itemDustSmallZirconiumTetrafluoride.name=Small Pile of Zirconium Tetrafluoride Dust +item.itemNuggetZirconiumTetrafluoride.name=Zirconium Tetrafluoride Nugget +item.itemPlateZirconiumTetrafluoride.name=Zirconium Tetrafluoride Plate +item.itemPlateDoubleZirconiumTetrafluoride.name=Double Zirconium Tetrafluoride Plate +item.itemIngotNeptuniumHexafluoride.name=Neptunium Hexafluoride Ingot +item.itemDustNeptuniumHexafluoride.name=Neptunium Hexafluoride Dust +item.itemDustTinyNeptuniumHexafluoride.name=Tiny Pile of Neptunium Hexafluoride Dust +item.itemDustSmallNeptuniumHexafluoride.name=Small Pile of Neptunium Hexafluoride Dust +item.itemNuggetNeptuniumHexafluoride.name=Neptunium Hexafluoride Nugget +item.itemPlateNeptuniumHexafluoride.name=Neptunium Hexafluoride Plate +item.itemPlateDoubleNeptuniumHexafluoride.name=Double Neptunium Hexafluoride Plate +item.itemIngotTechnetiumHexafluoride.name=Technetium Hexafluoride Ingot +item.itemDustTechnetiumHexafluoride.name=Technetium Hexafluoride Dust +item.itemDustTinyTechnetiumHexafluoride.name=Tiny Pile of Technetium Hexafluoride Dust +item.itemDustSmallTechnetiumHexafluoride.name=Small Pile of Technetium Hexafluoride Dust +item.itemNuggetTechnetiumHexafluoride.name=Technetium Hexafluoride Nugget +item.itemPlateTechnetiumHexafluoride.name=Technetium Hexafluoride Plate +item.itemPlateDoubleTechnetiumHexafluoride.name=Double Technetium Hexafluoride Plate +item.itemIngotSeleniumHexafluoride.name=Selenium Hexafluoride Ingot +item.itemDustSeleniumHexafluoride.name=Selenium Hexafluoride Dust +item.itemDustTinySeleniumHexafluoride.name=Tiny Pile of Selenium Hexafluoride Dust +item.itemDustSmallSeleniumHexafluoride.name=Small Pile of Selenium Hexafluoride Dust +item.itemNuggetSeleniumHexafluoride.name=Selenium Hexafluoride Nugget +item.itemPlateSeleniumHexafluoride.name=Selenium Hexafluoride Plate +item.itemPlateDoubleSeleniumHexafluoride.name=Double Selenium Hexafluoride Plate +item.itemIngotLiFBeF2ZrF4U235.name=LiFBeF2ZrF4U235 Ingot +item.itemDustLiFBeF2ZrF4U235.name=LiFBeF2ZrF4U235 Dust +item.itemDustTinyLiFBeF2ZrF4U235.name=Tiny Pile of LiFBeF2ZrF4U235 Dust +item.itemDustSmallLiFBeF2ZrF4U235.name=Small Pile of LiFBeF2ZrF4U235 Dust +item.itemNuggetLiFBeF2ZrF4U235.name=LiFBeF2ZrF4U235 Nugget +item.itemPlateLiFBeF2ZrF4U235.name=LiFBeF2ZrF4U235 Plate +item.itemPlateDoubleLiFBeF2ZrF4U235.name=Double LiFBeF2ZrF4U235 Plate +item.itemIngotLiFBeF2ZrF4UF4.name=LiFBeF2ZrF4UF4 Ingot +item.itemDustLiFBeF2ZrF4UF4.name=LiFBeF2ZrF4UF4 Dust +item.itemDustTinyLiFBeF2ZrF4UF4.name=Tiny Pile of LiFBeF2ZrF4UF4 Dust +item.itemDustSmallLiFBeF2ZrF4UF4.name=Small Pile of LiFBeF2ZrF4UF4 Dust +item.itemNuggetLiFBeF2ZrF4UF4.name=LiFBeF2ZrF4UF4 Nugget +item.itemPlateLiFBeF2ZrF4UF4.name=LiFBeF2ZrF4UF4 Plate +item.itemPlateDoubleLiFBeF2ZrF4UF4.name=Double LiFBeF2ZrF4UF4 Plate +item.itemIngotLiFBeF2ThF4UF4.name=LiFBeF2ThF4UF4 Ingot +item.itemDustLiFBeF2ThF4UF4.name=LiFBeF2ThF4UF4 Dust +item.itemDustTinyLiFBeF2ThF4UF4.name=Tiny Pile of LiFBeF2ThF4UF4 Dust +item.itemDustSmallLiFBeF2ThF4UF4.name=Small Pile of LiFBeF2ThF4UF4 Dust +item.itemNuggetLiFBeF2ThF4UF4.name=LiFBeF2ThF4UF4 Nugget +item.itemPlateLiFBeF2ThF4UF4.name=LiFBeF2ThF4UF4 Plate +item.itemPlateDoubleLiFBeF2ThF4UF4.name=Double LiFBeF2ThF4UF4 Plate +item.itemIngotEnergyCrystal.name=Energy Crystal Ingot +item.itemHotIngotEnergyCrystal.name=Hot Energy Crystal Ingot +item.itemDustEnergyCrystal.name=Energy Crystal Dust +item.itemDustTinyEnergyCrystal.name=Tiny Pile of Energy Crystal Dust +item.itemDustSmallEnergyCrystal.name=Small Pile of Energy Crystal Dust +item.itemNuggetEnergyCrystal.name=Energy Crystal Nugget +item.itemPlateEnergyCrystal.name=Energy Crystal Plate +item.itemPlateDoubleEnergyCrystal.name=Double Energy Crystal Plate +item.itemBoltEnergyCrystal.name=Energy Crystal Bolt +item.itemRodEnergyCrystal.name=Energy Crystal Rod +item.itemRodLongEnergyCrystal.name=Long Energy Crystal Rod +item.itemRingEnergyCrystal.name=Energy Crystal Ring +item.itemScrewEnergyCrystal.name=Energy Crystal Screw +item.itemRotorEnergyCrystal.name=Energy Crystal Rotor +item.itemGearEnergyCrystal.name=Energy Crystal Gear +item.itemIngotBloodSteel.name=Blood Steel Ingot +item.itemDustBloodSteel.name=Blood Steel Dust +item.itemDustTinyBloodSteel.name=Tiny Pile of Blood Steel Dust +item.itemDustSmallBloodSteel.name=Small Pile of Blood Steel Dust +item.itemNuggetBloodSteel.name=Blood Steel Nugget +item.itemPlateBloodSteel.name=Blood Steel Plate +item.itemPlateDoubleBloodSteel.name=Double Blood Steel Plate +item.itemBoltBloodSteel.name=Blood Steel Bolt +item.itemRodBloodSteel.name=Blood Steel Rod +item.itemRodLongBloodSteel.name=Long Blood Steel Rod +item.itemRingBloodSteel.name=Blood Steel Ring +item.itemScrewBloodSteel.name=Blood Steel Screw +item.itemRotorBloodSteel.name=Blood Steel Rotor +item.itemGearBloodSteel.name=Blood Steel Gear +item.itemIngotZeron100.name=Zeron-100 Ingot +item.itemHotIngotZeron100.name=Hot Zeron-100 Ingot +item.itemDustZeron100.name=Zeron-100 Dust +item.itemDustTinyZeron100.name=Tiny Pile of Zeron-100 Dust +item.itemDustSmallZeron100.name=Small Pile of Zeron-100 Dust +item.itemNuggetZeron100.name=Zeron-100 Nugget +item.itemPlateZeron100.name=Zeron-100 Plate +item.itemPlateDoubleZeron100.name=Double Zeron-100 Plate +item.itemBoltZeron100.name=Zeron-100 Bolt +item.itemRodZeron100.name=Zeron-100 Rod +item.itemRodLongZeron100.name=Long Zeron-100 Rod +item.itemRingZeron100.name=Zeron-100 Ring +item.itemScrewZeron100.name=Zeron-100 Screw +item.itemRotorZeron100.name=Zeron-100 Rotor +item.itemGearZeron100.name=Zeron-100 Gear +item.itemIngotTumbaga.name=Tumbaga Ingot +item.itemDustTumbaga.name=Tumbaga Dust +item.itemDustTinyTumbaga.name=Tiny Pile of Tumbaga Dust +item.itemDustSmallTumbaga.name=Small Pile of Tumbaga Dust +item.itemNuggetTumbaga.name=Tumbaga Nugget +item.itemPlateTumbaga.name=Tumbaga Plate +item.itemPlateDoubleTumbaga.name=Double Tumbaga Plate +item.itemBoltTumbaga.name=Tumbaga Bolt +item.itemRodTumbaga.name=Tumbaga Rod +item.itemRodLongTumbaga.name=Long Tumbaga Rod +item.itemRingTumbaga.name=Tumbaga Ring +item.itemScrewTumbaga.name=Tumbaga Screw +item.itemRotorTumbaga.name=Tumbaga Rotor +item.itemGearTumbaga.name=Tumbaga Gear +item.itemIngotPotin.name=Potin Ingot +item.itemDustPotin.name=Potin Dust +item.itemDustTinyPotin.name=Tiny Pile of Potin Dust +item.itemDustSmallPotin.name=Small Pile of Potin Dust +item.itemNuggetPotin.name=Potin Nugget +item.itemPlatePotin.name=Potin Plate +item.itemPlateDoublePotin.name=Double Potin Plate +item.itemBoltPotin.name=Potin Bolt +item.itemRodPotin.name=Potin Rod +item.itemRodLongPotin.name=Long Potin Rod +item.itemRingPotin.name=Potin Ring +item.itemScrewPotin.name=Potin Screw +item.itemRotorPotin.name=Potin Rotor +item.itemGearPotin.name=Potin Gear +item.itemIngotStaballoy.name=Staballoy Ingot +item.itemHotIngotStaballoy.name=Hot Staballoy Ingot +item.itemDustStaballoy.name=Staballoy Dust +item.itemDustTinyStaballoy.name=Tiny Pile of Staballoy Dust +item.itemDustSmallStaballoy.name=Small Pile of Staballoy Dust +item.itemNuggetStaballoy.name=Staballoy Nugget +item.itemPlateStaballoy.name=Staballoy Plate +item.itemPlateDoubleStaballoy.name=Double Staballoy Plate +item.itemBoltStaballoy.name=Staballoy Bolt +item.itemRodStaballoy.name=Staballoy Rod +item.itemRodLongStaballoy.name=Long Staballoy Rod +item.itemRingStaballoy.name=Staballoy Ring +item.itemScrewStaballoy.name=Staballoy Screw +item.itemRotorStaballoy.name=Staballoy Rotor +item.itemGearStaballoy.name=Staballoy Gear +item.itemIngotTantalloy60.name=Tantalloy-60 Ingot +item.itemHotIngotTantalloy60.name=Hot Tantalloy-60 Ingot +item.itemDustTantalloy60.name=Tantalloy-60 Dust +item.itemDustTinyTantalloy60.name=Tiny Pile of Tantalloy-60 Dust +item.itemDustSmallTantalloy60.name=Small Pile of Tantalloy-60 Dust +item.itemNuggetTantalloy60.name=Tantalloy-60 Nugget +item.itemPlateTantalloy60.name=Tantalloy-60 Plate +item.itemPlateDoubleTantalloy60.name=Double Tantalloy-60 Plate +item.itemBoltTantalloy60.name=Tantalloy-60 Bolt +item.itemRodTantalloy60.name=Tantalloy-60 Rod +item.itemRodLongTantalloy60.name=Long Tantalloy-60 Rod +item.itemRingTantalloy60.name=Tantalloy-60 Ring +item.itemScrewTantalloy60.name=Tantalloy-60 Screw +item.itemRotorTantalloy60.name=Tantalloy-60 Rotor +item.itemGearTantalloy60.name=Tantalloy-60 Gear +item.itemIngotTantalloy61.name=Tantalloy-61 Ingot +item.itemHotIngotTantalloy61.name=Hot Tantalloy-61 Ingot +item.itemDustTantalloy61.name=Tantalloy-61 Dust +item.itemDustTinyTantalloy61.name=Tiny Pile of Tantalloy-61 Dust +item.itemDustSmallTantalloy61.name=Small Pile of Tantalloy-61 Dust +item.itemNuggetTantalloy61.name=Tantalloy-61 Nugget +item.itemPlateTantalloy61.name=Tantalloy-61 Plate +item.itemPlateDoubleTantalloy61.name=Double Tantalloy-61 Plate +item.itemBoltTantalloy61.name=Tantalloy-61 Bolt +item.itemRodTantalloy61.name=Tantalloy-61 Rod +item.itemRodLongTantalloy61.name=Long Tantalloy-61 Rod +item.itemRingTantalloy61.name=Tantalloy-61 Ring +item.itemScrewTantalloy61.name=Tantalloy-61 Screw +item.itemRotorTantalloy61.name=Tantalloy-61 Rotor +item.itemGearTantalloy61.name=Tantalloy-61 Gear +item.itemIngotInconel625.name=Inconel-625 Ingot +item.itemHotIngotInconel625.name=Hot Inconel-625 Ingot +item.itemDustInconel625.name=Inconel-625 Dust +item.itemDustTinyInconel625.name=Tiny Pile of Inconel-625 Dust +item.itemDustSmallInconel625.name=Small Pile of Inconel-625 Dust +item.itemNuggetInconel625.name=Inconel-625 Nugget +item.itemPlateInconel625.name=Inconel-625 Plate +item.itemPlateDoubleInconel625.name=Double Inconel-625 Plate +item.itemBoltInconel625.name=Inconel-625 Bolt +item.itemRodInconel625.name=Inconel-625 Rod +item.itemRodLongInconel625.name=Long Inconel-625 Rod +item.itemRingInconel625.name=Inconel-625 Ring +item.itemScrewInconel625.name=Inconel-625 Screw +item.itemRotorInconel625.name=Inconel-625 Rotor +item.itemGearInconel625.name=Inconel-625 Gear +item.itemIngotInconel690.name=Inconel-690 Ingot +item.itemHotIngotInconel690.name=Hot Inconel-690 Ingot +item.itemDustInconel690.name=Inconel-690 Dust +item.itemDustTinyInconel690.name=Tiny Pile of Inconel-690 Dust +item.itemDustSmallInconel690.name=Small Pile of Inconel-690 Dust +item.itemNuggetInconel690.name=Inconel-690 Nugget +item.itemPlateInconel690.name=Inconel-690 Plate +item.itemPlateDoubleInconel690.name=Double Inconel-690 Plate +item.itemBoltInconel690.name=Inconel-690 Bolt +item.itemRodInconel690.name=Inconel-690 Rod +item.itemRodLongInconel690.name=Long Inconel-690 Rod +item.itemRingInconel690.name=Inconel-690 Ring +item.itemScrewInconel690.name=Inconel-690 Screw +item.itemRotorInconel690.name=Inconel-690 Rotor +item.itemGearInconel690.name=Inconel-690 Gear +item.itemIngotInconel792.name=Inconel-792 Ingot +item.itemHotIngotInconel792.name=Hot Inconel-792 Ingot +item.itemDustInconel792.name=Inconel-792 Dust +item.itemDustTinyInconel792.name=Tiny Pile of Inconel-792 Dust +item.itemDustSmallInconel792.name=Small Pile of Inconel-792 Dust +item.itemNuggetInconel792.name=Inconel-792 Nugget +item.itemPlateInconel792.name=Inconel-792 Plate +item.itemPlateDoubleInconel792.name=Double Inconel-792 Plate +item.itemBoltInconel792.name=Inconel-792 Bolt +item.itemRodInconel792.name=Inconel-792 Rod +item.itemRodLongInconel792.name=Long Inconel-792 Rod +item.itemRingInconel792.name=Inconel-792 Ring +item.itemScrewInconel792.name=Inconel-792 Screw +item.itemRotorInconel792.name=Inconel-792 Rotor +item.itemGearInconel792.name=Inconel-792 Gear +item.itemDustEglinSteelBaseCompound.name=Eglin Steel Base Compound Dust +item.itemDustTinyEglinSteelBaseCompound.name=Tiny Pile of Eglin Steel Base Compound Dust +item.itemDustSmallEglinSteelBaseCompound.name=Small Pile of Eglin Steel Base Compound Dust +item.itemIngotEglinSteel.name=Eglin Steel Ingot +item.itemDustEglinSteel.name=Eglin Steel Dust +item.itemDustTinyEglinSteel.name=Tiny Pile of Eglin Steel Dust +item.itemDustSmallEglinSteel.name=Small Pile of Eglin Steel Dust +item.itemNuggetEglinSteel.name=Eglin Steel Nugget +item.itemPlateEglinSteel.name=Eglin Steel Plate +item.itemPlateDoubleEglinSteel.name=Double Eglin Steel Plate +item.itemBoltEglinSteel.name=Eglin Steel Bolt +item.itemRodEglinSteel.name=Eglin Steel Rod +item.itemRodLongEglinSteel.name=Long Eglin Steel Rod +item.itemRingEglinSteel.name=Eglin Steel Ring +item.itemScrewEglinSteel.name=Eglin Steel Screw +item.itemRotorEglinSteel.name=Eglin Steel Rotor +item.itemGearEglinSteel.name=Eglin Steel Gear +item.itemIngotMaragingSteel250.name=Maraging Steel 250 Ingot +item.itemHotIngotMaragingSteel250.name=Hot Maraging Steel 250 Ingot +item.itemDustMaragingSteel250.name=Maraging Steel 250 Dust +item.itemDustTinyMaragingSteel250.name=Tiny Pile of Maraging Steel 250 Dust +item.itemDustSmallMaragingSteel250.name=Small Pile of Maraging Steel 250 Dust +item.itemNuggetMaragingSteel250.name=Maraging Steel 250 Nugget +item.itemPlateMaragingSteel250.name=Maraging Steel 250 Plate +item.itemPlateDoubleMaragingSteel250.name=Double Maraging Steel 250 Plate +item.itemBoltMaragingSteel250.name=Maraging Steel 250 Bolt +item.itemRodMaragingSteel250.name=Maraging Steel 250 Rod +item.itemRodLongMaragingSteel250.name=Long Maraging Steel 250 Rod +item.itemRingMaragingSteel250.name=Maraging Steel 250 Ring +item.itemScrewMaragingSteel250.name=Maraging Steel 250 Screw +item.itemRotorMaragingSteel250.name=Maraging Steel 250 Rotor +item.itemGearMaragingSteel250.name=Maraging Steel 250 Gear +item.itemIngotMaragingSteel300.name=Maraging Steel 300 Ingot +item.itemHotIngotMaragingSteel300.name=Hot Maraging Steel 300 Ingot +item.itemDustMaragingSteel300.name=Maraging Steel 300 Dust +item.itemDustTinyMaragingSteel300.name=Tiny Pile of Maraging Steel 300 Dust +item.itemDustSmallMaragingSteel300.name=Small Pile of Maraging Steel 300 Dust +item.itemNuggetMaragingSteel300.name=Maraging Steel 300 Nugget +item.itemPlateMaragingSteel300.name=Maraging Steel 300 Plate +item.itemPlateDoubleMaragingSteel300.name=Double Maraging Steel 300 Plate +item.itemBoltMaragingSteel300.name=Maraging Steel 300 Bolt +item.itemRodMaragingSteel300.name=Maraging Steel 300 Rod +item.itemRodLongMaragingSteel300.name=Long Maraging Steel 300 Rod +item.itemRingMaragingSteel300.name=Maraging Steel 300 Ring +item.itemScrewMaragingSteel300.name=Maraging Steel 300 Screw +item.itemRotorMaragingSteel300.name=Maraging Steel 300 Rotor +item.itemGearMaragingSteel300.name=Maraging Steel 300 Gear +item.itemIngotMaragingSteel350.name=Maraging Steel 350 Ingot +item.itemHotIngotMaragingSteel350.name=Hot Maraging Steel 350 Ingot +item.itemDustMaragingSteel350.name=Maraging Steel 350 Dust +item.itemDustTinyMaragingSteel350.name=Tiny Pile of Maraging Steel 350 Dust +item.itemDustSmallMaragingSteel350.name=Small Pile of Maraging Steel 350 Dust +item.itemNuggetMaragingSteel350.name=Maraging Steel 350 Nugget +item.itemPlateMaragingSteel350.name=Maraging Steel 350 Plate +item.itemPlateDoubleMaragingSteel350.name=Double Maraging Steel 350 Plate +item.itemBoltMaragingSteel350.name=Maraging Steel 350 Bolt +item.itemRodMaragingSteel350.name=Maraging Steel 350 Rod +item.itemRodLongMaragingSteel350.name=Long Maraging Steel 350 Rod +item.itemRingMaragingSteel350.name=Maraging Steel 350 Ring +item.itemScrewMaragingSteel350.name=Maraging Steel 350 Screw +item.itemRotorMaragingSteel350.name=Maraging Steel 350 Rotor +item.itemGearMaragingSteel350.name=Maraging Steel 350 Gear +item.itemIngotStellite.name=Stellite Ingot +item.itemHotIngotStellite.name=Hot Stellite Ingot +item.itemDustStellite.name=Stellite Dust +item.itemDustTinyStellite.name=Tiny Pile of Stellite Dust +item.itemDustSmallStellite.name=Small Pile of Stellite Dust +item.itemNuggetStellite.name=Stellite Nugget +item.itemPlateStellite.name=Stellite Plate +item.itemPlateDoubleStellite.name=Double Stellite Plate +item.itemBoltStellite.name=Stellite Bolt +item.itemRodStellite.name=Stellite Rod +item.itemRodLongStellite.name=Long Stellite Rod +item.itemRingStellite.name=Stellite Ring +item.itemScrewStellite.name=Stellite Screw +item.itemRotorStellite.name=Stellite Rotor +item.itemGearStellite.name=Stellite Gear +item.itemIngotTalonite.name=Talonite Ingot +item.itemDustTalonite.name=Talonite Dust +item.itemDustTinyTalonite.name=Tiny Pile of Talonite Dust +item.itemDustSmallTalonite.name=Small Pile of Talonite Dust +item.itemNuggetTalonite.name=Talonite Nugget +item.itemPlateTalonite.name=Talonite Plate +item.itemPlateDoubleTalonite.name=Double Talonite Plate +item.itemBoltTalonite.name=Talonite Bolt +item.itemRodTalonite.name=Talonite Rod +item.itemRodLongTalonite.name=Long Talonite Rod +item.itemRingTalonite.name=Talonite Ring +item.itemScrewTalonite.name=Talonite Screw +item.itemRotorTalonite.name=Talonite Rotor +item.itemGearTalonite.name=Talonite Gear +item.itemIngotHastelloyW.name=Hastelloy-W Ingot +item.itemDustHastelloyW.name=Hastelloy-W Dust +item.itemDustTinyHastelloyW.name=Tiny Pile of Hastelloy-W Dust +item.itemDustSmallHastelloyW.name=Small Pile of Hastelloy-W Dust +item.itemNuggetHastelloyW.name=Hastelloy-W Nugget +item.itemPlateHastelloyW.name=Hastelloy-W Plate +item.itemPlateDoubleHastelloyW.name=Double Hastelloy-W Plate +item.itemBoltHastelloyW.name=Hastelloy-W Bolt +item.itemRodHastelloyW.name=Hastelloy-W Rod +item.itemRodLongHastelloyW.name=Long Hastelloy-W Rod +item.itemRingHastelloyW.name=Hastelloy-W Ring +item.itemScrewHastelloyW.name=Hastelloy-W Screw +item.itemRotorHastelloyW.name=Hastelloy-W Rotor +item.itemGearHastelloyW.name=Hastelloy-W Gear +item.itemIngotHastelloyX.name=Hastelloy-X Ingot +item.itemDustHastelloyX.name=Hastelloy-X Dust +item.itemDustTinyHastelloyX.name=Tiny Pile of Hastelloy-X Dust +item.itemDustSmallHastelloyX.name=Small Pile of Hastelloy-X Dust +item.itemNuggetHastelloyX.name=Hastelloy-X Nugget +item.itemPlateHastelloyX.name=Hastelloy-X Plate +item.itemPlateDoubleHastelloyX.name=Double Hastelloy-X Plate +item.itemBoltHastelloyX.name=Hastelloy-X Bolt +item.itemRodHastelloyX.name=Hastelloy-X Rod +item.itemRodLongHastelloyX.name=Long Hastelloy-X Rod +item.itemRingHastelloyX.name=Hastelloy-X Ring +item.itemScrewHastelloyX.name=Hastelloy-X Screw +item.itemRotorHastelloyX.name=Hastelloy-X Rotor +item.itemGearHastelloyX.name=Hastelloy-X Gear +item.itemIngotHastelloyC276.name=Hastelloy-C276 Ingot +item.itemHotIngotHastelloyC276.name=Hot Hastelloy-C276 Ingot +item.itemDustHastelloyC276.name=Hastelloy-C276 Dust +item.itemDustTinyHastelloyC276.name=Tiny Pile of Hastelloy-C276 Dust +item.itemDustSmallHastelloyC276.name=Small Pile of Hastelloy-C276 Dust +item.itemNuggetHastelloyC276.name=Hastelloy-C276 Nugget +item.itemPlateHastelloyC276.name=Hastelloy-C276 Plate +item.itemPlateDoubleHastelloyC276.name=Double Hastelloy-C276 Plate +item.itemBoltHastelloyC276.name=Hastelloy-C276 Bolt +item.itemRodHastelloyC276.name=Hastelloy-C276 Rod +item.itemRodLongHastelloyC276.name=Long Hastelloy-C276 Rod +item.itemRingHastelloyC276.name=Hastelloy-C276 Ring +item.itemScrewHastelloyC276.name=Hastelloy-C276 Screw +item.itemRotorHastelloyC276.name=Hastelloy-C276 Rotor +item.itemGearHastelloyC276.name=Hastelloy-C276 Gear +item.itemIngotHastelloyN.name=Hastelloy-N Ingot +item.itemHotIngotHastelloyN.name=Hot Hastelloy-N Ingot +item.itemDustHastelloyN.name=Hastelloy-N Dust +item.itemDustTinyHastelloyN.name=Tiny Pile of Hastelloy-N Dust +item.itemDustSmallHastelloyN.name=Small Pile of Hastelloy-N Dust +item.itemNuggetHastelloyN.name=Hastelloy-N Nugget +item.itemPlateHastelloyN.name=Hastelloy-N Plate +item.itemPlateDoubleHastelloyN.name=Double Hastelloy-N Plate +item.itemBoltHastelloyN.name=Hastelloy-N Bolt +item.itemRodHastelloyN.name=Hastelloy-N Rod +item.itemRodLongHastelloyN.name=Long Hastelloy-N Rod +item.itemRingHastelloyN.name=Hastelloy-N Ring +item.itemScrewHastelloyN.name=Hastelloy-N Screw +item.itemRotorHastelloyN.name=Hastelloy-N Rotor +item.itemGearHastelloyN.name=Hastelloy-N Gear +item.itemIngotIncoloy020.name=Incoloy-020 Ingot +item.itemDustIncoloy020.name=Incoloy-020 Dust +item.itemDustTinyIncoloy020.name=Tiny Pile of Incoloy-020 Dust +item.itemDustSmallIncoloy020.name=Small Pile of Incoloy-020 Dust +item.itemNuggetIncoloy020.name=Incoloy-020 Nugget +item.itemPlateIncoloy020.name=Incoloy-020 Plate +item.itemPlateDoubleIncoloy020.name=Double Incoloy-020 Plate +item.itemBoltIncoloy020.name=Incoloy-020 Bolt +item.itemRodIncoloy020.name=Incoloy-020 Rod +item.itemRodLongIncoloy020.name=Long Incoloy-020 Rod +item.itemRingIncoloy020.name=Incoloy-020 Ring +item.itemScrewIncoloy020.name=Incoloy-020 Screw +item.itemRotorIncoloy020.name=Incoloy-020 Rotor +item.itemGearIncoloy020.name=Incoloy-020 Gear +item.itemIngotIncoloyDS.name=Incoloy-DS Ingot +item.itemDustIncoloyDS.name=Incoloy-DS Dust +item.itemDustTinyIncoloyDS.name=Tiny Pile of Incoloy-DS Dust +item.itemDustSmallIncoloyDS.name=Small Pile of Incoloy-DS Dust +item.itemNuggetIncoloyDS.name=Incoloy-DS Nugget +item.itemPlateIncoloyDS.name=Incoloy-DS Plate +item.itemPlateDoubleIncoloyDS.name=Double Incoloy-DS Plate +item.itemBoltIncoloyDS.name=Incoloy-DS Bolt +item.itemRodIncoloyDS.name=Incoloy-DS Rod +item.itemRodLongIncoloyDS.name=Long Incoloy-DS Rod +item.itemRingIncoloyDS.name=Incoloy-DS Ring +item.itemScrewIncoloyDS.name=Incoloy-DS Screw +item.itemRotorIncoloyDS.name=Incoloy-DS Rotor +item.itemGearIncoloyDS.name=Incoloy-DS Gear +item.itemIngotIncoloyMA956.name=Incoloy-MA956 Ingot +item.itemHotIngotIncoloyMA956.name=Hot Incoloy-MA956 Ingot +item.itemDustIncoloyMA956.name=Incoloy-MA956 Dust +item.itemDustTinyIncoloyMA956.name=Tiny Pile of Incoloy-MA956 Dust +item.itemDustSmallIncoloyMA956.name=Small Pile of Incoloy-MA956 Dust +item.itemNuggetIncoloyMA956.name=Incoloy-MA956 Nugget +item.itemPlateIncoloyMA956.name=Incoloy-MA956 Plate +item.itemPlateDoubleIncoloyMA956.name=Double Incoloy-MA956 Plate +item.itemBoltIncoloyMA956.name=Incoloy-MA956 Bolt +item.itemRodIncoloyMA956.name=Incoloy-MA956 Rod +item.itemRodLongIncoloyMA956.name=Long Incoloy-MA956 Rod +item.itemRingIncoloyMA956.name=Incoloy-MA956 Ring +item.itemScrewIncoloyMA956.name=Incoloy-MA956 Screw +item.itemRotorIncoloyMA956.name=Incoloy-MA956 Rotor +item.itemGearIncoloyMA956.name=Incoloy-MA956 Gear +item.itemIngotGrisium.name=Grisium Ingot +item.itemHotIngotGrisium.name=Hot Grisium Ingot +item.itemDustGrisium.name=Grisium Dust +item.itemDustTinyGrisium.name=Tiny Pile of Grisium Dust +item.itemDustSmallGrisium.name=Small Pile of Grisium Dust +item.itemNuggetGrisium.name=Grisium Nugget +item.itemPlateGrisium.name=Grisium Plate +item.itemPlateDoubleGrisium.name=Double Grisium Plate +item.itemBoltGrisium.name=Grisium Bolt +item.itemRodGrisium.name=Grisium Rod +item.itemRodLongGrisium.name=Long Grisium Rod +item.itemRingGrisium.name=Grisium Ring +item.itemScrewGrisium.name=Grisium Screw +item.itemRotorGrisium.name=Grisium Rotor +item.itemGearGrisium.name=Grisium Gear +item.itemIngotHG1223.name=HG-1223 Ingot +item.itemDustHG1223.name=HG-1223 Dust +item.itemDustTinyHG1223.name=Tiny Pile of HG-1223 Dust +item.itemDustSmallHG1223.name=Small Pile of HG-1223 Dust +item.itemNuggetHG1223.name=HG-1223 Nugget +item.itemPlateHG1223.name=HG-1223 Plate +item.itemPlateDoubleHG1223.name=Double HG-1223 Plate +item.itemIngotTrinium.name=Trinium Ingot +item.itemDustTrinium.name=Trinium Dust +item.itemDustTinyTrinium.name=Tiny Pile of Trinium Dust +item.itemDustSmallTrinium.name=Small Pile of Trinium Dust +item.itemNuggetTrinium.name=Trinium Nugget +item.itemPlateTrinium.name=Trinium Plate +item.itemPlateDoubleTrinium.name=Double Trinium Plate +item.itemIngotRefinedTrinium.name=Refined Trinium Ingot +item.itemDustRefinedTrinium.name=Refined Trinium Dust +item.itemDustTinyRefinedTrinium.name=Tiny Pile of Refined Trinium Dust +item.itemDustSmallRefinedTrinium.name=Small Pile of Refined Trinium Dust +item.itemNuggetRefinedTrinium.name=Refined Trinium Nugget +item.itemPlateRefinedTrinium.name=Refined Trinium Plate +item.itemPlateDoubleRefinedTrinium.name=Double Refined Trinium Plate +item.itemIngotTriniumTitaniumAlloy.name=Trinium Titanium Alloy Ingot +item.itemHotIngotTriniumTitaniumAlloy.name=Hot Trinium Titanium Alloy Ingot +item.itemDustTriniumTitaniumAlloy.name=Trinium Titanium Alloy Dust +item.itemDustTinyTriniumTitaniumAlloy.name=Tiny Pile of Trinium Titanium Alloy Dust +item.itemDustSmallTriniumTitaniumAlloy.name=Small Pile of Trinium Titanium Alloy Dust +item.itemNuggetTriniumTitaniumAlloy.name=Trinium Titanium Alloy Nugget +item.itemPlateTriniumTitaniumAlloy.name=Trinium Titanium Alloy Plate +item.itemPlateDoubleTriniumTitaniumAlloy.name=Double Trinium Titanium Alloy Plate +item.itemBoltTriniumTitaniumAlloy.name=Trinium Titanium Alloy Bolt +item.itemRodTriniumTitaniumAlloy.name=Trinium Titanium Alloy Rod +item.itemRodLongTriniumTitaniumAlloy.name=Long Trinium Titanium Alloy Rod +item.itemRingTriniumTitaniumAlloy.name=Trinium Titanium Alloy Ring +item.itemScrewTriniumTitaniumAlloy.name=Trinium Titanium Alloy Screw +item.itemRotorTriniumTitaniumAlloy.name=Trinium Titanium Alloy Rotor +item.itemGearTriniumTitaniumAlloy.name=Trinium Titanium Alloy Gear +item.itemIngotTriniumNaquadahAlloy.name=Trinium Naquadah Alloy Ingot +item.itemDustTriniumNaquadahAlloy.name=Trinium Naquadah Alloy Dust +item.itemDustTinyTriniumNaquadahAlloy.name=Tiny Pile of Trinium Naquadah Alloy Dust +item.itemDustSmallTriniumNaquadahAlloy.name=Small Pile of Trinium Naquadah Alloy Dust +item.itemNuggetTriniumNaquadahAlloy.name=Trinium Naquadah Alloy Nugget +item.itemPlateTriniumNaquadahAlloy.name=Trinium Naquadah Alloy Plate +item.itemPlateDoubleTriniumNaquadahAlloy.name=Double Trinium Naquadah Alloy Plate +item.itemIngotTriniumNaquadahCarbonite.name=Trinium Naquadah Carbonite Ingot +item.itemHotIngotTriniumNaquadahCarbonite.name=Hot Trinium Naquadah Carbonite Ingot +item.itemDustTriniumNaquadahCarbonite.name=Trinium Naquadah Carbonite Dust +item.itemDustTinyTriniumNaquadahCarbonite.name=Tiny Pile of Trinium Naquadah Carbonite Dust +item.itemDustSmallTriniumNaquadahCarbonite.name=Small Pile of Trinium Naquadah Carbonite Dust +item.itemNuggetTriniumNaquadahCarbonite.name=Trinium Naquadah Carbonite Nugget +item.itemPlateTriniumNaquadahCarbonite.name=Trinium Naquadah Carbonite Plate +item.itemPlateDoubleTriniumNaquadahCarbonite.name=Double Trinium Naquadah Carbonite Plate +item.itemBoltTriniumNaquadahCarbonite.name=Trinium Naquadah Carbonite Bolt +item.itemRodTriniumNaquadahCarbonite.name=Trinium Naquadah Carbonite Rod +item.itemRodLongTriniumNaquadahCarbonite.name=Long Trinium Naquadah Carbonite Rod +item.itemRingTriniumNaquadahCarbonite.name=Trinium Naquadah Carbonite Ring +item.itemScrewTriniumNaquadahCarbonite.name=Trinium Naquadah Carbonite Screw +item.itemRotorTriniumNaquadahCarbonite.name=Trinium Naquadah Carbonite Rotor +item.itemGearTriniumNaquadahCarbonite.name=Trinium Naquadah Carbonite Gear +item.itemIngotQuantum.name=Quantum Ingot +item.itemHotIngotQuantum.name=Hot Quantum Ingot +item.itemDustQuantum.name=Quantum Dust +item.itemDustTinyQuantum.name=Tiny Pile of Quantum Dust +item.itemDustSmallQuantum.name=Small Pile of Quantum Dust +item.itemNuggetQuantum.name=Quantum Nugget +item.itemPlateQuantum.name=Quantum Plate +item.itemPlateDoubleQuantum.name=Double Quantum Plate +item.itemBoltQuantum.name=Quantum Bolt +item.itemRodQuantum.name=Quantum Rod +item.itemRodLongQuantum.name=Long Quantum Rod +item.itemRingQuantum.name=Quantum Ring +item.itemScrewQuantum.name=Quantum Screw +item.itemRotorQuantum.name=Quantum Rotor +item.itemGearQuantum.name=Quantum Gear +item.itemDustFluorite.name=Fluorite Dust +item.itemDustTinyFluorite.name=Tiny Pile of Fluorite Dust +item.itemDustSmallFluorite.name=Small Pile of Fluorite Dust +item.crushedFluorite.name=Crushed Fluorite Ore +item.crushedCentrifugedFluorite.name=Centrifuged Crushed Fluorite Ore +item.crushedPurifiedFluorite.name=Purified Crushed Fluorite Ore +item.dustImpureFluorite.name=Impure Fluorite Dust +item.dustPureFluorite.name=Purified Fluorite Dust +item.itemDustCrocoite.name=Crocoite Dust +item.itemDustTinyCrocoite.name=Tiny Pile of Crocoite Dust +item.itemDustSmallCrocoite.name=Small Pile of Crocoite Dust +item.crushedCrocoite.name=Crushed Crocoite Ore +item.crushedCentrifugedCrocoite.name=Centrifuged Crushed Crocoite Ore +item.crushedPurifiedCrocoite.name=Purified Crushed Crocoite Ore +item.dustImpureCrocoite.name=Impure Crocoite Dust +item.dustPureCrocoite.name=Purified Crocoite Dust +item.itemDustGeikielite.name=Geikielite Dust +item.itemDustTinyGeikielite.name=Tiny Pile of Geikielite Dust +item.itemDustSmallGeikielite.name=Small Pile of Geikielite Dust +item.crushedGeikielite.name=Crushed Geikielite Ore +item.crushedCentrifugedGeikielite.name=Centrifuged Crushed Geikielite Ore +item.crushedPurifiedGeikielite.name=Purified Crushed Geikielite Ore +item.dustImpureGeikielite.name=Impure Geikielite Dust +item.dustPureGeikielite.name=Purified Geikielite Dust +item.itemDustNichromite.name=Nichromite Dust +item.itemDustTinyNichromite.name=Tiny Pile of Nichromite Dust +item.itemDustSmallNichromite.name=Small Pile of Nichromite Dust +item.crushedNichromite.name=Crushed Nichromite Ore +item.crushedCentrifugedNichromite.name=Centrifuged Crushed Nichromite Ore +item.crushedPurifiedNichromite.name=Purified Crushed Nichromite Ore +item.dustImpureNichromite.name=Impure Nichromite Dust +item.dustPureNichromite.name=Purified Nichromite Dust +item.itemDustTitanite.name=Titanite Dust +item.itemDustTinyTitanite.name=Tiny Pile of Titanite Dust +item.itemDustSmallTitanite.name=Small Pile of Titanite Dust +item.crushedTitanite.name=Crushed Titanite Ore +item.crushedCentrifugedTitanite.name=Centrifuged Crushed Titanite Ore +item.crushedPurifiedTitanite.name=Purified Crushed Titanite Ore +item.dustImpureTitanite.name=Impure Titanite Dust +item.dustPureTitanite.name=Purified Titanite Dust +item.itemDustZimbabweite.name=Zimbabweite Dust +item.itemDustTinyZimbabweite.name=Tiny Pile of Zimbabweite Dust +item.itemDustSmallZimbabweite.name=Small Pile of Zimbabweite Dust +item.crushedZimbabweite.name=Crushed Zimbabweite Ore +item.crushedCentrifugedZimbabweite.name=Centrifuged Crushed Zimbabweite Ore +item.crushedPurifiedZimbabweite.name=Purified Crushed Zimbabweite Ore +item.dustImpureZimbabweite.name=Impure Zimbabweite Dust +item.dustPureZimbabweite.name=Purified Zimbabweite Dust +item.itemDustZirconolite.name=Zirconolite Dust +item.itemDustTinyZirconolite.name=Tiny Pile of Zirconolite Dust +item.itemDustSmallZirconolite.name=Small Pile of Zirconolite Dust +item.crushedZirconolite.name=Crushed Zirconolite Ore +item.crushedCentrifugedZirconolite.name=Centrifuged Crushed Zirconolite Ore +item.crushedPurifiedZirconolite.name=Purified Crushed Zirconolite Ore +item.dustImpureZirconolite.name=Impure Zirconolite Dust +item.dustPureZirconolite.name=Purified Zirconolite Dust +item.itemDustGadoliniteCe.name=Gadolinite (Ce) Dust +item.itemDustTinyGadoliniteCe.name=Tiny Pile of Gadolinite (Ce) Dust +item.itemDustSmallGadoliniteCe.name=Small Pile of Gadolinite (Ce) Dust +item.crushedGadoliniteCe.name=Crushed Gadolinite (Ce) Ore +item.crushedCentrifugedGadoliniteCe.name=Centrifuged Crushed Gadolinite (Ce) Ore +item.crushedPurifiedGadoliniteCe.name=Purified Crushed Gadolinite (Ce) Ore +item.dustImpureGadoliniteCe.name=Impure Gadolinite (Ce) Dust +item.dustPureGadoliniteCe.name=Purified Gadolinite (Ce) Dust +item.itemDustGadoliniteY.name=Gadolinite (Y) Dust +item.itemDustTinyGadoliniteY.name=Tiny Pile of Gadolinite (Y) Dust +item.itemDustSmallGadoliniteY.name=Small Pile of Gadolinite (Y) Dust +item.crushedGadoliniteY.name=Crushed Gadolinite (Y) Ore +item.crushedCentrifugedGadoliniteY.name=Centrifuged Crushed Gadolinite (Y) Ore +item.crushedPurifiedGadoliniteY.name=Purified Crushed Gadolinite (Y) Ore +item.dustImpureGadoliniteY.name=Impure Gadolinite (Y) Dust +item.dustPureGadoliniteY.name=Purified Gadolinite (Y) Dust +item.itemDustLepersonnite.name=Lepersonnite Dust +item.itemDustTinyLepersonnite.name=Tiny Pile of Lepersonnite Dust +item.itemDustSmallLepersonnite.name=Small Pile of Lepersonnite Dust +item.crushedLepersonnite.name=Crushed Lepersonnite Ore +item.crushedCentrifugedLepersonnite.name=Centrifuged Crushed Lepersonnite Ore +item.crushedPurifiedLepersonnite.name=Purified Crushed Lepersonnite Ore +item.dustImpureLepersonnite.name=Impure Lepersonnite Dust +item.dustPureLepersonnite.name=Purified Lepersonnite Dust +item.itemDustSamarskiteY.name=Samarskite (Y) Dust +item.itemDustTinySamarskiteY.name=Tiny Pile of Samarskite (Y) Dust +item.itemDustSmallSamarskiteY.name=Small Pile of Samarskite (Y) Dust +item.crushedSamarskiteY.name=Crushed Samarskite (Y) Ore +item.crushedCentrifugedSamarskiteY.name=Centrifuged Crushed Samarskite (Y) Ore +item.crushedPurifiedSamarskiteY.name=Purified Crushed Samarskite (Y) Ore +item.dustImpureSamarskiteY.name=Impure Samarskite (Y) Dust +item.dustPureSamarskiteY.name=Purified Samarskite (Y) Dust +item.itemDustSamarskiteYb.name=Samarskite (Yb) Dust +item.itemDustTinySamarskiteYb.name=Tiny Pile of Samarskite (Yb) Dust +item.itemDustSmallSamarskiteYb.name=Small Pile of Samarskite (Yb) Dust +item.crushedSamarskiteYb.name=Crushed Samarskite (Yb) Ore +item.crushedCentrifugedSamarskiteYb.name=Centrifuged Crushed Samarskite (Yb) Ore +item.crushedPurifiedSamarskiteYb.name=Purified Crushed Samarskite (Yb) Ore +item.dustImpureSamarskiteYb.name=Impure Samarskite (Yb) Dust +item.dustPureSamarskiteYb.name=Purified Samarskite (Yb) Dust +item.itemDustXenotime.name=Xenotime Dust +item.itemDustTinyXenotime.name=Tiny Pile of Xenotime Dust +item.itemDustSmallXenotime.name=Small Pile of Xenotime Dust +item.crushedXenotime.name=Crushed Xenotime Ore +item.crushedCentrifugedXenotime.name=Centrifuged Crushed Xenotime Ore +item.crushedPurifiedXenotime.name=Purified Crushed Xenotime Ore +item.dustImpureXenotime.name=Impure Xenotime Dust +item.dustPureXenotime.name=Purified Xenotime Dust +item.itemDustYttriaite.name=Yttriaite Dust +item.itemDustTinyYttriaite.name=Tiny Pile of Yttriaite Dust +item.itemDustSmallYttriaite.name=Small Pile of Yttriaite Dust +item.crushedYttriaite.name=Crushed Yttriaite Ore +item.crushedCentrifugedYttriaite.name=Centrifuged Crushed Yttriaite Ore +item.crushedPurifiedYttriaite.name=Purified Crushed Yttriaite Ore +item.dustImpureYttriaite.name=Impure Yttriaite Dust +item.dustPureYttriaite.name=Purified Yttriaite Dust +item.itemDustYttrialite.name=Yttrialite Dust +item.itemDustTinyYttrialite.name=Tiny Pile of Yttrialite Dust +item.itemDustSmallYttrialite.name=Small Pile of Yttrialite Dust +item.crushedYttrialite.name=Crushed Yttrialite Ore +item.crushedCentrifugedYttrialite.name=Centrifuged Crushed Yttrialite Ore +item.crushedPurifiedYttrialite.name=Purified Crushed Yttrialite Ore +item.dustImpureYttrialite.name=Impure Yttrialite Dust +item.dustPureYttrialite.name=Purified Yttrialite Dust +item.itemDustYttrocerite.name=Yttrocerite Dust +item.itemDustTinyYttrocerite.name=Tiny Pile of Yttrocerite Dust +item.itemDustSmallYttrocerite.name=Small Pile of Yttrocerite Dust +item.crushedYttrocerite.name=Crushed Yttrocerite Ore +item.crushedCentrifugedYttrocerite.name=Centrifuged Crushed Yttrocerite Ore +item.crushedPurifiedYttrocerite.name=Purified Crushed Yttrocerite Ore +item.dustImpureYttrocerite.name=Impure Yttrocerite Dust +item.dustPureYttrocerite.name=Purified Yttrocerite Dust +item.itemDustZircon.name=Zircon Dust +item.itemDustTinyZircon.name=Tiny Pile of Zircon Dust +item.itemDustSmallZircon.name=Small Pile of Zircon Dust +item.crushedZircon.name=Crushed Zircon Ore +item.crushedCentrifugedZircon.name=Centrifuged Crushed Zircon Ore +item.crushedPurifiedZircon.name=Purified Crushed Zircon Ore +item.dustImpureZircon.name=Impure Zircon Dust +item.dustPureZircon.name=Purified Zircon Dust +item.itemDustPolycrase.name=Polycrase Dust +item.itemDustTinyPolycrase.name=Tiny Pile of Polycrase Dust +item.itemDustSmallPolycrase.name=Small Pile of Polycrase Dust +item.crushedPolycrase.name=Crushed Polycrase Ore +item.crushedCentrifugedPolycrase.name=Centrifuged Crushed Polycrase Ore +item.crushedPurifiedPolycrase.name=Purified Crushed Polycrase Ore +item.dustImpurePolycrase.name=Impure Polycrase Dust +item.dustPurePolycrase.name=Purified Polycrase Dust +item.itemDustZircophyllite.name=Zircophyllite Dust +item.itemDustTinyZircophyllite.name=Tiny Pile of Zircophyllite Dust +item.itemDustSmallZircophyllite.name=Small Pile of Zircophyllite Dust +item.crushedZircophyllite.name=Crushed Zircophyllite Ore +item.crushedCentrifugedZircophyllite.name=Centrifuged Crushed Zircophyllite Ore +item.crushedPurifiedZircophyllite.name=Purified Crushed Zircophyllite Ore +item.dustImpureZircophyllite.name=Impure Zircophyllite Dust +item.dustPureZircophyllite.name=Purified Zircophyllite Dust +item.itemDustZirkelite.name=Zirkelite Dust +item.itemDustTinyZirkelite.name=Tiny Pile of Zirkelite Dust +item.itemDustSmallZirkelite.name=Small Pile of Zirkelite Dust +item.crushedZirkelite.name=Crushed Zirkelite Ore +item.crushedCentrifugedZirkelite.name=Centrifuged Crushed Zirkelite Ore +item.crushedPurifiedZirkelite.name=Purified Crushed Zirkelite Ore +item.dustImpureZirkelite.name=Impure Zirkelite Dust +item.dustPureZirkelite.name=Purified Zirkelite Dust +item.itemDustLanthaniteLa.name=Lanthanite (La) Dust +item.itemDustTinyLanthaniteLa.name=Tiny Pile of Lanthanite (La) Dust +item.itemDustSmallLanthaniteLa.name=Small Pile of Lanthanite (La) Dust +item.crushedLanthaniteLa.name=Crushed Lanthanite (La) Ore +item.crushedCentrifugedLanthaniteLa.name=Centrifuged Crushed Lanthanite (La) Ore +item.crushedPurifiedLanthaniteLa.name=Purified Crushed Lanthanite (La) Ore +item.dustImpureLanthaniteLa.name=Impure Lanthanite (La) Dust +item.dustPureLanthaniteLa.name=Purified Lanthanite (La) Dust +item.itemDustLanthaniteCe.name=Lanthanite (Ce) Dust +item.itemDustTinyLanthaniteCe.name=Tiny Pile of Lanthanite (Ce) Dust +item.itemDustSmallLanthaniteCe.name=Small Pile of Lanthanite (Ce) Dust +item.crushedLanthaniteCe.name=Crushed Lanthanite (Ce) Ore +item.crushedCentrifugedLanthaniteCe.name=Centrifuged Crushed Lanthanite (Ce) Ore +item.crushedPurifiedLanthaniteCe.name=Purified Crushed Lanthanite (Ce) Ore +item.dustImpureLanthaniteCe.name=Impure Lanthanite (Ce) Dust +item.dustPureLanthaniteCe.name=Purified Lanthanite (Ce) Dust +item.itemDustLanthaniteNd.name=Lanthanite (Nd) Dust +item.itemDustTinyLanthaniteNd.name=Tiny Pile of Lanthanite (Nd) Dust +item.itemDustSmallLanthaniteNd.name=Small Pile of Lanthanite (Nd) Dust +item.crushedLanthaniteNd.name=Crushed Lanthanite (Nd) Ore +item.crushedCentrifugedLanthaniteNd.name=Centrifuged Crushed Lanthanite (Nd) Ore +item.crushedPurifiedLanthaniteNd.name=Purified Crushed Lanthanite (Nd) Ore +item.dustImpureLanthaniteNd.name=Impure Lanthanite (Nd) Dust +item.dustPureLanthaniteNd.name=Purified Lanthanite (Nd) Dust +item.itemDustAgarditeY.name=Agardite (Y) Dust +item.itemDustTinyAgarditeY.name=Tiny Pile of Agardite (Y) Dust +item.itemDustSmallAgarditeY.name=Small Pile of Agardite (Y) Dust +item.crushedAgarditeY.name=Crushed Agardite (Y) Ore +item.crushedCentrifugedAgarditeY.name=Centrifuged Crushed Agardite (Y) Ore +item.crushedPurifiedAgarditeY.name=Purified Crushed Agardite (Y) Ore +item.dustImpureAgarditeY.name=Impure Agardite (Y) Dust +item.dustPureAgarditeY.name=Purified Agardite (Y) Dust +item.itemDustAgarditeCd.name=Agardite (Cd) Dust +item.itemDustTinyAgarditeCd.name=Tiny Pile of Agardite (Cd) Dust +item.itemDustSmallAgarditeCd.name=Small Pile of Agardite (Cd) Dust +item.crushedAgarditeCd.name=Crushed Agardite (Cd) Ore +item.crushedCentrifugedAgarditeCd.name=Centrifuged Crushed Agardite (Cd) Ore +item.crushedPurifiedAgarditeCd.name=Purified Crushed Agardite (Cd) Ore +item.dustImpureAgarditeCd.name=Impure Agardite (Cd) Dust +item.dustPureAgarditeCd.name=Purified Agardite (Cd) Dust +item.itemDustAgarditeLa.name=Agardite (La) Dust +item.itemDustTinyAgarditeLa.name=Tiny Pile of Agardite (La) Dust +item.itemDustSmallAgarditeLa.name=Small Pile of Agardite (La) Dust +item.crushedAgarditeLa.name=Crushed Agardite (La) Ore +item.crushedCentrifugedAgarditeLa.name=Centrifuged Crushed Agardite (La) Ore +item.crushedPurifiedAgarditeLa.name=Purified Crushed Agardite (La) Ore +item.dustImpureAgarditeLa.name=Impure Agardite (La) Dust +item.dustPureAgarditeLa.name=Purified Agardite (La) Dust +item.itemDustAgarditeNd.name=Agardite (Nd) Dust +item.itemDustTinyAgarditeNd.name=Tiny Pile of Agardite (Nd) Dust +item.itemDustSmallAgarditeNd.name=Small Pile of Agardite (Nd) Dust +item.crushedAgarditeNd.name=Crushed Agardite (Nd) Ore +item.crushedCentrifugedAgarditeNd.name=Centrifuged Crushed Agardite (Nd) Ore +item.crushedPurifiedAgarditeNd.name=Purified Crushed Agardite (Nd) Ore +item.dustImpureAgarditeNd.name=Impure Agardite (Nd) Dust +item.dustPureAgarditeNd.name=Purified Agardite (Nd) Dust +item.itemDustHibonite.name=Hibonite Dust +item.itemDustTinyHibonite.name=Tiny Pile of Hibonite Dust +item.itemDustSmallHibonite.name=Small Pile of Hibonite Dust +item.crushedHibonite.name=Crushed Hibonite Ore +item.crushedCentrifugedHibonite.name=Centrifuged Crushed Hibonite Ore +item.crushedPurifiedHibonite.name=Purified Crushed Hibonite Ore +item.dustImpureHibonite.name=Impure Hibonite Dust +item.dustPureHibonite.name=Purified Hibonite Dust +item.itemDustCerite.name=Cerite Dust +item.itemDustTinyCerite.name=Tiny Pile of Cerite Dust +item.itemDustSmallCerite.name=Small Pile of Cerite Dust +item.crushedCerite.name=Crushed Cerite Ore +item.crushedCentrifugedCerite.name=Centrifuged Crushed Cerite Ore +item.crushedPurifiedCerite.name=Purified Crushed Cerite Ore +item.dustImpureCerite.name=Impure Cerite Dust +item.dustPureCerite.name=Purified Cerite Dust +item.itemDustFluorcaphite.name=Fluorcaphite Dust +item.itemDustTinyFluorcaphite.name=Tiny Pile of Fluorcaphite Dust +item.itemDustSmallFluorcaphite.name=Small Pile of Fluorcaphite Dust +item.crushedFluorcaphite.name=Crushed Fluorcaphite Ore +item.crushedCentrifugedFluorcaphite.name=Centrifuged Crushed Fluorcaphite Ore +item.crushedPurifiedFluorcaphite.name=Purified Crushed Fluorcaphite Ore +item.dustImpureFluorcaphite.name=Impure Fluorcaphite Dust +item.dustPureFluorcaphite.name=Purified Fluorcaphite Dust +item.itemDustFlorencite.name=Florencite Dust +item.itemDustTinyFlorencite.name=Tiny Pile of Florencite Dust +item.itemDustSmallFlorencite.name=Small Pile of Florencite Dust +item.crushedFlorencite.name=Crushed Florencite Ore +item.crushedCentrifugedFlorencite.name=Centrifuged Crushed Florencite Ore +item.crushedPurifiedFlorencite.name=Purified Crushed Florencite Ore +item.dustImpureFlorencite.name=Impure Florencite Dust +item.dustPureFlorencite.name=Purified Florencite Dust +item.itemDustCryolite.name=Cryolite Dust +item.itemDustTinyCryolite.name=Tiny Pile of Cryolite Dust +item.itemDustSmallCryolite.name=Small Pile of Cryolite Dust +item.crushedCryolite.name=Crushed Cryolite Ore +item.crushedCentrifugedCryolite.name=Centrifuged Crushed Cryolite Ore +item.crushedPurifiedCryolite.name=Purified Crushed Cryolite Ore +item.dustImpureCryolite.name=Impure Cryolite Dust +item.dustPureCryolite.name=Purified Cryolite Dust + +//Shards +item.itemDrained.name=Drained Shard +item.itemDustInfusedAir.name=Infused Air Dust +item.itemDustInfusedFire.name=Infused Fire Dust +item.itemDustInfusedEarth.name=Infused Earth Dust +item.itemDustInfusedWater.name=Infused Water Dust + + +//Misc Material Items +item.itemDustLithiumCarbonate.name=Lithium Carbonate Dust +item.itemDustSmallLithiumCarbonate.name=Small Pile of Lithium Carbonate Dust +item.itemDustTinyLithiumCarbonate.name=Tiny Pile of Lithium Carbonate Dust +item.itemDustLithiumPeroxide.name=Lithium Peroxide Dust +item.itemDustSmallLithiumPeroxide.name=Small Pile of Lithium Peroxide Dust +item.itemDustTinyLithiumPeroxide.name=Tiny Pile of Lithium Peroxide Dust +item.itemDustLithiumHydroxide.name=Lithium Hydroxide Dust +item.itemDustSmallLithiumHydroxide.name=Small Pile of Lithium Hydroxide Dust +item.itemDustTinyLithiumHydroxide.name=Tiny Pile of Lithium Hydroxide Dust +item.itemDustCalciumHydroxide.name=Hydrated Lime Dust +item.itemDustSmallCalciumHydroxide.name=Small Pile of Hydrated Lime Dust +item.itemDustTinyCalciumHydroxide.name=Tiny Pile of Hydrated Lime Dust +item.itemDustCalciumCarbonate.name=Calcium Carbonate Dust +item.itemDustSmallCalciumCarbonate.name=Small Pile of Calcium Carbonate Dust +item.itemDustTinyCalciumCarbonate.name=Tiny Pile of Calcium Carbonate Dust +item.itemDustGypsum.name=Calcium Sulfate (Gypsum) Dust +item.itemDustSmallGypsum.name=Small Pile of Calcium Sulfate (Gypsum) Dust +item.itemDustTinyGypsum.name=Tiny Pile of Calcium Sulfate (Gypsum) Dust +item.itemDustLi2CO3CaOH2.name=Li2CO3 + Ca(OH)2 Compound Dust +item.itemDustSmallLi2CO3CaOH2.name=Small Pile of Li2CO3 + Ca(OH)2 Compound Dust +item.itemDustTinyLi2CO3CaOH2.name=Tiny Pile of Li2CO3 + Ca(OH)2 Compound Dust +item.itemDustLi2BeF4.name=Li2BeF4 Fuel Compound Dust +item.itemDustSmallLi2BeF4.name=Small Pile of Li2BeF4 Fuel Compound Dust +item.itemDustTinyLi2BeF4.name=Tiny Pile of Li2BeF4 Fuel Compound Dust +item.Li2BeF4.name=Li2BeF4 Cell +item.itemCircuitLFTR.name=§aThorium Reactor Control Circuit +item.itemZirconiumPellet.name=Zirconium Pellet [ZrCl₄] +item.itemDustZrCl4.name=ZrCl4 Dust +item.itemDustSmallZrCl4.name=Small Pile of ZrCl4 Dust +item.itemDustTinyZrCl4.name=Tiny Pile of ZrCl4 Dust +item.itemDustCookedZrCl4.name=Cooked ZrCl4 Dust +item.itemDustSmallCookedZrCl4.name=Small Pile of Cooked ZrCl4 Dust +item.itemDustTinyCookedZrCl4.name=Tiny Pile of Cooked ZrCl4 Dust +item.itemDustUN18Fertiliser.name=UN-18 Fertiliser Dust +item.itemDustSmallUN18Fertiliser.name=Small Pile of UN-18 Fertiliser Dust +item.itemDustTinyUN18Fertiliser.name=Tiny Pile of UN-18 Fertiliser Dust +item.itemDustUN32Fertiliser.name=UN-32 Fertiliser Dust +item.itemDustSmallUN32Fertiliser.name=Small Pile of UN-32 Fertiliser Dust +item.itemDustTinyUN32Fertiliser.name=Tiny Pile of UN-32 Fertiliser Dust + +//Multitools +item.AluminiumMultipick.name=Aluminium Multipick +item.AluminiumMultispade.name=Aluminium Multispade +item.BerylliumMultispade.name=Beryllium Multispade +item.BismuthMultispade.name=Bismuth Multispade +item.CarbonMultispade.name=Carbon Multispade +item.ChromeMultipick.name=Chrome Multipick +item.ChromeMultispade.name=Chrome Multispade +item.CobaltMultipick.name=Cobalt Multipick +item.CobaltMultispade.name=Cobalt Multispade +item.GoldMultispade.name=Gold Multispade +item.IridiumMultipick.name=Iridium Multipick +item.IridiumMultispade.name=Iridium Multispade +item.IronMultipick.name=Iron Multipick +item.IronMultispade.name=Iron Multispade +item.LeadMultispade.name=Lead Multispade +item.ManganeseMultipick.name=Manganese Multipick +item.ManganeseMultispade.name=Manganese Multispade +item.MolybdenumMultipick.name=Molybdenum Multipick +item.MolybdenumMultispade.name=Molybdenum Multispade +item.NeodymiumMultipick.name=Neodymium Multipick +item.NeodymiumMultispade.name=Neodymium Multispade +item.NeutroniumMultipick.name=Neutronium Multipick +item.NeutroniumMultispade.name=Neutronium Multispade +item.NickelMultispade.name=Nickel Multispade +item.OsmiumMultipick.name=Osmium Multipick +item.OsmiumMultispade.name=Osmium Multispade +item.PalladiumMultipick.name=Palladium Multipick +item.PalladiumMultispade.name=Palladium Multispade +item.PlatinumMultispade.name=Platinum Multispade +item.Plutonium241Multipick.name=Plutonium 241 Multipick +item.Plutonium241Multispade.name=Plutonium 241 Multispade +item.SilverMultispade.name=Silver Multispade +item.ThoriumMultipick.name=Thorium Multipick +item.ThoriumMultispade.name=Thorium Multispade +item.TitaniumMultipick.name=Titanium Multipick +item.TitaniumMultispade.name=Titanium Multispade +item.TungstenMultipick.name=Tungsten Multipick +item.TungstenMultispade.name=Tungsten Multispade +item.Uranium235Multipick.name=Uranium 235 Multipick +item.Uranium235Multispade.name=Uranium 235 Multispade +item.DarkSteelMultipick.name=Dark Steel Multipick +item.DarkSteelMultispade.name=Dark Steel Multispade +item.DuraniumMultipick.name=Duranium Multipick +item.DuraniumMultispade.name=Duranium Multispade +item.InfusedGoldMultispade.name=Infused Gold Multispade +item.NaquadahMultipick.name=Naquadah Multipick +item.NaquadahMultispade.name=Naquadah Multispade +item.NaquadahAlloyMultipick.name=Naquadah Alloy Multipick +item.NaquadahAlloyMultispade.name=Naquadah Alloy Multispade +item.NaquadriaMultipick.name=Naquadria Multipick +item.NaquadriaMultispade.name=Naquadria Multispade +item.TritaniumMultipick.name=Tritanium Multipick +item.TritaniumMultispade.name=Tritanium Multispade +item.OsmiridiumMultipick.name=Osmiridium Multipick +item.OsmiridiumMultispade.name=Osmiridium Multispade +item.BrassMultispade.name=Brass Multispade +item.BronzeMultipick.name=Bronze Multipick +item.BronzeMultispade.name=Bronze Multispade +item.CupronickelMultispade.name=Cupronickel Multispade +item.ElectrumMultispade.name=Electrum Multispade +item.InvarMultipick.name=Invar Multipick +item.InvarMultispade.name=Invar Multispade +item.KanthalMultispade.name=Kanthal Multispade +item.MagnaliumMultipick.name=Magnalium Multipick +item.MagnaliumMultispade.name=Magnalium Multispade +item.NichromeMultispade.name=Nichrome Multispade +item.PigIronMultipick.name=Pig Iron Multipick +item.PigIronMultispade.name=Pig Iron Multispade +item.PolycaprolactamMultispade.name=Polycaprolactam Multispade +item.PolytetrafluoroethyleneMultispade.name=Polytetrafluoroethylene Multispade +item.NickelZincFerriteMultispade.name=Nickel-Zinc Ferrite Multispade +item.PolyphenyleneSulfideMultispade.name=Polyphenylene Sulfide Multispade +item.StainlessSteelMultipick.name=Stainless Steel Multipick +item.StainlessSteelMultispade.name=Stainless Steel Multispade +item.SteelMultipick.name=Steel Multipick +item.SteelMultispade.name=Steel Multispade +item.TinAlloyMultispade.name=Tin Alloy Multispade +item.UltimetMultipick.name=Ultimet Multipick +item.UltimetMultispade.name=Ultimet Multispade +item.WroughtIronMultipick.name=Wrought Iron Multipick +item.WroughtIronMultispade.name=Wrought Iron Multispade +item.SterlingSilverMultipick.name=Sterling Silver Multipick +item.SterlingSilverMultispade.name=Sterling Silver Multispade +item.RoseGoldMultipick.name=Rose Gold Multipick +item.RoseGoldMultispade.name=Rose Gold Multispade +item.BlackBronzeMultipick.name=Black Bronze Multipick +item.BlackBronzeMultispade.name=Black Bronze Multispade +item.BismuthBronzeMultipick.name=Bismuth Bronze Multipick +item.BismuthBronzeMultispade.name=Bismuth Bronze Multispade +item.BlackSteelMultipick.name=Black Steel Multipick +item.BlackSteelMultispade.name=Black Steel Multispade +item.RedSteelMultipick.name=Red Steel Multipick +item.RedSteelMultispade.name=Red Steel Multispade +item.BlueSteelMultipick.name=Blue Steel Multipick +item.BlueSteelMultispade.name=Blue Steel Multispade +item.DamascusSteelMultipick.name=Damascus Steel Multipick +item.DamascusSteelMultispade.name=Damascus Steel Multispade +item.MithrilMultispade.name=Mithril Multispade +item.CobaltBrassMultipick.name=Cobalt Brass Multipick +item.CobaltBrassMultispade.name=Cobalt Brass Multispade +item.ThaumiumMultipick.name=Thaumium Multipick +item.ThaumiumMultispade.name=Thaumium Multispade +item.HSSGMultipick.name=HSS-G Multipick +item.HSSGMultispade.name=HSS-G Multispade +item.HSSEMultipick.name=HSS-E Multipick +item.HSSEMultispade.name=HSS-E Multispade +item.HSSSMultipick.name=HSS-S Multipick +item.HSSSMultispade.name=HSS-S Multispade +item.HastelloyC276Multipick.name=Hastelloy-C276 Multipick +item.HastelloyC276Multispade.name=Hastelloy-C276 Multispade +item.HastelloyNMultipick.name=Hastelloy-N Multipick +item.HastelloyNMultispade.name=Hastelloy-N Multispade +item.HastelloyWMultipick.name=Hastelloy-W Multipick +item.HastelloyWMultispade.name=Hastelloy-W Multispade +item.HastelloyXMultipick.name=Hastelloy-X Multipick +item.HastelloyXMultispade.name=Hastelloy-X Multispade +item.Incoloy020Multipick.name=Incoloy-020 Multipick +item.Incoloy020Multispade.name=Incoloy-020 Multispade +item.IncoloyDSMultipick.name=Incoloy-DS Multipick +item.IncoloyDSMultispade.name=Incoloy-DS Multispade +item.IncoloyMA956Multipick.name=Incoloy-MA956 Multipick +item.IncoloyMA956Multispade.name=Incoloy-MA956 Multispade +item.Inconel625Multipick.name=Inconel-625 Multipick +item.Inconel625Multispade.name=Inconel-625 Multispade +item.Inconel690Multipick.name=Inconel-690 Multipick +item.Inconel690Multispade.name=Inconel-690 Multispade +item.Inconel792Multipick.name=Inconel-792 Multipick +item.Inconel792Multispade.name=Inconel-792 Multispade +item.GrisiumMultipick.name=Grisium Multipick +item.GrisiumMultispade.name=Grisium Multispade +item.Tantalloy60Multipick.name=Tantalloy-60 Multipick +item.Tantalloy60Multispade.name=Tantalloy-60 Multispade +item.Tantalloy61Multipick.name=Tantalloy-61 Multipick +item.Tantalloy61Multispade.name=Tantalloy-61 Multispade +item.StaballoyMultipick.name=Staballoy Multipick +item.StaballoyMultispade.name=Staballoy Multispade +item.QuantumMultipick.name=Quantum Multipick +item.QuantumMultispade.name=Quantum Multispade +item.PotinMultipick.name=Potin Multipick +item.PotinMultispade.name=Potin Multispade +item.TumbagaMultipick.name=Tumbaga Multipick +item.TumbagaMultispade.name=Tumbaga Multispade +item.TaloniteMultipick.name=Talonite Multipick +item.TaloniteMultispade.name=Talonite Multispade +item.StelliteMultipick.name=Stellite Multipick +item.StelliteMultispade.name=Stellite Multispade +item.TungstenCarbideMultipick.name=Tungsten Carbide Multipick +item.TungstenCarbideMultispade.name=Tungsten Carbide Multispade +item.TantalumCarbideMultipick.name=Tantalum Carbide Multipick +item.TantalumCarbideMultispade.name=Tantalum Carbide Multispade + +item.mobessence.name=mobessence Cell +item.itemPlateClay.name=Clay Plate +item.itemPlateDoubleClay.name=Double Clay Plate +item.itemSmallGearWroughtIron.name=Small WroughtIron Gear +item.itemPlateLithium.name=Lithium Plate +item.itemPlateDoubleEuropium.name=Double Europium Plate +item.itemBoilerChassis_0.name=Advanced Boiler Chassis [Tier 1] +item.itemDehydratorCoilWire_0.name=Coil Wire [EV] +item.itemDehydratorCoil_0.name=Dehydrator Coil [EV] +item.itemAirFilter_0.name=Air Filter [Tier 1] +item.itemLavaFilter.name=Lava Filter +item.itemGrindleTablet.name=Git +item.itemDragonJar.name=Dragon Capture Jar +item.CoalGas.name=Coal Gas Cell +item.Ethylbenzene.name=Ethylbenzene Cell +item.Anthracene.name=Anthracene Cell +item.Toluene.name=Toluene Cell +item.CoalTar.name=Coal Tar Cell +item.CoalTarOil.name=Coal Tar Oil Cell +item.SulfuricCoalTarOil.name=Sulfuric Coal Tar Oil Cell +item.Naphthalene.name=Naphthalene Cell +item.PhthalicAcid.name=Phthalic Acid Cell +item.itemDustPhthalicAnhydride.name=Phthalic Anhydride Dust +item.itemDustSmallPhthalicAnhydride.name=Small Pile of Phthalic Anhydride Dust +item.itemDustTinyPhthalicAnhydride.name=Tiny Pile of Phthalic Anhydride Dust +item.2Ethylanthraquinone.name=2-Ethylanthraquinone Cell +item.2Ethylanthrahydroquinone.name=2-Ethylanthrahydroquinone Cell +item.HydrogenPeroxide.name=Hydrogen Peroxide Cell +item.itemDustLithiumHydroperoxide.name=Lithium Hydroperoxide Dust +item.itemDustSmallLithiumHydroperoxide.name=Small Pile of Lithium Hydroperoxide Dust +item.itemDustTinyLithiumHydroperoxide.name=Tiny Pile of Lithium Hydroperoxide Dust +item.LithiumPeroxide.name=Lithium Peroxide Cell +item.itemPotionChilly.name=Chilly Potion +item.itemKeyBig4000DC's.name=4000DC's Big Key +item.itemGemDull.name=Dull Gemstone +item.itemMushroomForest.name=Forest Mushroom +item.itemPlateVanadium.name=Vanadium Plate +item.thekeytothecity.name=The Key to the City +item.modularbauble.name=Modular Bauble +item.itemDustSoularium.name=Soularium Dust +item.itemDustSmallSoularium.name=Small Pile of Soularium Dust +item.itemDustTinySoularium.name=Tiny Pile of Soularium Dust +item.itemDustRedstoneAlloy.name=Redstone Alloy Dust +item.itemDustSmallRedstoneAlloy.name=Small Pile of Redstone Alloy Dust +item.itemDustTinyRedstoneAlloy.name=Tiny Pile of Redstone Alloy Dust +item.itemDustElectricalSteel.name=Electrical Steel Dust +item.itemDustSmallElectricalSteel.name=Small Pile of Electrical Steel Dust +item.itemDustTinyElectricalSteel.name=Tiny Pile of Electrical Steel Dust +item.itemDustPulsatingIron.name=Pulsating Iron Dust +item.itemDustSmallPulsatingIron.name=Small Pile of Pulsating Iron Dust +item.itemDustTinyPulsatingIron.name=Tiny Pile of Pulsating Iron Dust +item.itemDustEnergeticAlloy.name=Energetic Alloy Dust +item.itemDustSmallEnergeticAlloy.name=Small Pile of Energetic Alloy Dust +item.itemDustTinyEnergeticAlloy.name=Tiny Pile of Energetic Alloy Dust +item.itemDustVibrantAlloy.name=Vibrant Alloy Dust +item.itemDustSmallVibrantAlloy.name=Small Pile of Vibrant Alloy Dust +item.itemDustTinyVibrantAlloy.name=Tiny Pile of Vibrant Alloy Dust +item.itemDustConductiveIron.name=Conductive Iron Dust +item.itemDustSmallConductiveIron.name=Small Pile of Conductive Iron Dust +item.itemDustTinyConductiveIron.name=Tiny Pile of Conductive Iron Dust +item.itemPlateSoularium.name=Soularium plate +item.itemPlateRedstoneAlloy.name=Redstone Alloy plate +item.itemPlateElectricalSteel.name=Electrical Steel plate +item.itemPlatePhasedIron.name=Phased Iron plate +item.itemPlateEnergeticAlloy.name=Energetic Alloy plate +item.itemPlateVibrantAlloy.name=Vibrant Alloy plate +item.itemPlateConductiveIron.name=Conductive Iron plate +item.itemPlateBlutonium.name=Blutonium plate +item.itemPlateCyanite.name=Cyanite plate +item.itemPlateLudicrite.name=Ludicrite plate +item.itemPlateVoid.name=Void plate +item.itemPlateDimensionShard.name=Dimensional Shard plate +item.rfEUBattery.name=Universally Chargeable Battery +item.personalCloakingDevice.name=§9Personal Cloaking Device§7 +item.personalHealingDevice.name=§9Personal Healing NanoBooster§r +item.SlowBuildingRing.name=§eSlow Building Ring§7 +item.itemStaballoyPickaxe.name=Tunnel Digger +item.itemStaballoyAxe.name=Tree Feller +item.itemSandstoneHammer.name=Cobblestone Breaker +item.itemBufferCore.name=Buffer Core [ULV]. +item.itemBufferCore.name=Buffer Core [LV]. +item.itemBufferCore.name=Buffer Core [MV]. +item.itemBufferCore.name=Buffer Core [HV]. +item.itemBufferCore.name=Buffer Core [EV]. +item.itemBufferCore.name=Buffer Core [IV]. +item.itemBufferCore.name=Buffer Core [LuV]. +item.itemBufferCore.name=Buffer Core [ZPM]. +item.itemBufferCore.name=Buffer Core [UV]. +item.itemBufferCore.name=Buffer Core [MAX]. +item.itemPLACEHOLDER_Circuit.name=Quark Manipulator (UV) +item.itembookgt.name=§oThermal Boiler Manual + +// Everglade Items +item.everglades.trigger.name=§6Alkalus Disk [§cActivated§6] + + + + + + + +//Blocks +tile.blockRainforestOakLog.name=Rainforest Oak +tile.blockRainforestOakLeaves.name=Oak Leaves +tile.blockRainforestOakSapling.name=Rainforest Oak Sapling + +//TC Stuff +tile.blockFastAlchemyFurnace.0.name=Broken +tile.blockFastArcaneAlembic.0.name=Broken + +//Frame Boxes +tile.Block of Selenium.name=Block of Selenium +tile.Selenium Frame Box.name=Selenium Frame Box +tile.Block of Bromine.name=Block of Bromine +tile.Block of Strontium.name=Block of Strontium +tile.Strontium Frame Box.name=Strontium Frame Box +tile.Block of Zirconium.name=Block of Zirconium +tile.Zirconium Frame Box.name=Zirconium Frame Box +tile.Block of Ruthenium.name=Block of Ruthenium +tile.Ruthenium Frame Box.name=Ruthenium Frame Box +tile.Block of Iodine.name=Block of Iodine +tile.Iodine Frame Box.name=Iodine Frame Box +tile.Block of Hafnium.name=Block of Hafnium +tile.Hafnium Frame Box.name=Hafnium Frame Box +tile.Block of Dysprosium.name=Block of Dysprosium +tile.Dysprosium Frame Box.name=Dysprosium Frame Box +tile.Block of Tellurium.name=Block of Tellurium +tile.Tellurium Frame Box.name=Tellurium Frame Box +tile.Block of Rhodium.name=Block of Rhodium +tile.Rhodium Frame Box.name=Rhodium Frame Box +tile.Block of Rhenium.name=Block of Rhenium +tile.Rhenium Frame Box.name=Rhenium Frame Box +tile.Block of Thallium.name=Block of Thallium +tile.Thallium Frame Box.name=Thallium Frame Box +tile.Block of Technetium.name=Block of Technetium +tile.Block of Polonium.name=Block of Polonium +tile.Block of Astatine.name=Block of Astatine +tile.Block of Francium.name=Block of Francium +tile.Block of Radium.name=Block of Radium +tile.Block of Actinium.name=Block of Actinium +tile.Block of Protactinium.name=Block of Protactinium +tile.Block of Neptunium.name=Block of Neptunium +tile.Block of Curium.name=Block of Curium +tile.Block of Berkelium.name=Block of Berkelium +tile.Block of Californium.name=Block of Californium +tile.Block of Einsteinium.name=Block of Einsteinium +tile.Block of Fermium.name=Block of Fermium +tile.Block of Thorium 232.name=Block of Thorium 232 +tile.Block of Uranium 232.name=Block of Uranium 232 +tile.Block of Uranium 233.name=Block of Uranium 233 +tile.Block of Plutonium-238.name=Block of Plutonium-238 +tile.Block of Strontium-90.name=Block of Strontium-90 +tile.Block of Polonium-210.name=Block of Polonium-210 +tile.Block of Americium-241.name=Block of Americium-241 +tile.Block of Silicon Carbide.name=Block of Silicon Carbide +tile.Silicon Carbide Frame Box.name=Silicon Carbide Frame Box +tile.Block of Zirconium Carbide.name=Block of Zirconium Carbide +tile.Zirconium Carbide Frame Box.name=Zirconium Carbide Frame Box +tile.Block of Tantalum Carbide.name=Block of Tantalum Carbide +tile.Tantalum Carbide Frame Box.name=Tantalum Carbide Frame Box +tile.Block of Niobium Carbide.name=Block of Niobium Carbide +tile.Niobium Carbide Frame Box.name=Niobium Carbide Frame Box +tile.Block of Beryllium Fluoride.name=Block of Beryllium Fluoride +tile.Block of Lithium Fluoride.name=Block of Lithium Fluoride +tile.Block of Thorium Tetrafluoride.name=Block of Thorium Tetrafluoride +tile.Block of Thorium Hexafluoride.name=Block of Thorium Hexafluoride +tile.Block of Uranium Tetrafluoride.name=Block of Uranium Tetrafluoride +tile.Block of Uranium Hexafluoride.name=Block of Uranium Hexafluoride +tile.Block of Zirconium Tetrafluoride.name=Block of Zirconium Tetrafluoride +tile.Block of Neptunium Hexafluoride.name=Block of Neptunium Hexafluoride +tile.Block of Technetium Hexafluoride.name=Block of Technetium Hexafluoride +tile.Block of Selenium Hexafluoride.name=Block of Selenium Hexafluoride +tile.Block of LiFBeF2ZrF4U235.name=Block of LiFBeF2ZrF4U235 +tile.Block of LiFBeF2ZrF4UF4.name=Block of LiFBeF2ZrF4UF4 +tile.Block of LiFBeF2ThF4UF4.name=Block of LiFBeF2ThF4UF4 +tile.Block of Energy Crystal.name=Block of Energy Crystal +tile.Energy Crystal Frame Box.name=Energy Crystal Frame Box +tile.Block of Blood Steel.name=Block of Blood Steel +tile.Blood Steel Frame Box.name=Blood Steel Frame Box +tile.Block of Zeron-100.name=Block of Zeron-100 +tile.Zeron-100 Frame Box.name=Zeron-100 Frame Box +tile.Block of Tumbaga.name=Block of Tumbaga +tile.Tumbaga Frame Box.name=Tumbaga Frame Box +tile.Block of Potin.name=Block of Potin +tile.Potin Frame Box.name=Potin Frame Box +tile.Block of Staballoy.name=Block of Staballoy +tile.Staballoy Frame Box.name=Staballoy Frame Box +tile.Block of Tantalloy-60.name=Block of Tantalloy-60 +tile.Tantalloy-60 Frame Box.name=Tantalloy-60 Frame Box +tile.Block of Tantalloy-61.name=Block of Tantalloy-61 +tile.Tantalloy-61 Frame Box.name=Tantalloy-61 Frame Box +tile.Block of Inconel-625.name=Block of Inconel-625 +tile.Inconel-625 Frame Box.name=Inconel-625 Frame Box +tile.Block of Inconel-690.name=Block of Inconel-690 +tile.Inconel-690 Frame Box.name=Inconel-690 Frame Box +tile.Block of Inconel-792.name=Block of Inconel-792 +tile.Inconel-792 Frame Box.name=Inconel-792 Frame Box +tile.Block of Eglin Steel.name=Block of Eglin Steel +tile.Eglin Steel Frame Box.name=Eglin Steel Frame Box +tile.Block of Maraging Steel 250.name=Block of Maraging Steel 250 +tile.Maraging Steel 250 Frame Box.name=Maraging Steel 250 Frame Box +tile.Block of Maraging Steel 300.name=Block of Maraging Steel 300 +tile.Maraging Steel 300 Frame Box.name=Maraging Steel 300 Frame Box +tile.Block of Maraging Steel 350.name=Block of Maraging Steel 350 +tile.Maraging Steel 350 Frame Box.name=Maraging Steel 350 Frame Box +tile.Block of Stellite.name=Block of Stellite +tile.Stellite Frame Box.name=Stellite Frame Box +tile.Block of Talonite.name=Block of Talonite +tile.Talonite Frame Box.name=Talonite Frame Box +tile.Block of Hastelloy-W.name=Block of Hastelloy-W +tile.Hastelloy-W Frame Box.name=Hastelloy-W Frame Box +tile.Block of Hastelloy-X.name=Block of Hastelloy-X +tile.Hastelloy-X Frame Box.name=Hastelloy-X Frame Box +tile.Block of Hastelloy-C276.name=Block of Hastelloy-C276 +tile.Hastelloy-C276 Frame Box.name=Hastelloy-C276 Frame Box +tile.Block of Hastelloy-N.name=Block of Hastelloy-N +tile.Hastelloy-N Frame Box.name=Hastelloy-N Frame Box +tile.Block of Incoloy-020.name=Block of Incoloy-020 +tile.Incoloy-020 Frame Box.name=Incoloy-020 Frame Box +tile.Block of Incoloy-DS.name=Block of Incoloy-DS +tile.Incoloy-DS Frame Box.name=Incoloy-DS Frame Box +tile.Block of Incoloy-MA956.name=Block of Incoloy-MA956 +tile.Incoloy-MA956 Frame Box.name=Incoloy-MA956 Frame Box +tile.Block of Grisium.name=Block of Grisium +tile.Grisium Frame Box.name=Grisium Frame Box +tile.Block of Trinium.name=Block of Trinium +tile.Block of Refined Trinium.name=Block of Refined Trinium +tile.Block of Trinium Titanium Alloy.name=Block of Trinium Titanium Alloy +tile.Trinium Titanium Alloy Frame Box.name=Trinium Titanium Alloy Frame Box +tile.Block of Trinium Naquadah Alloy.name=Block of Trinium Naquadah Alloy +tile.Block of Trinium Naquadah Carbonite.name=Block of Trinium Naquadah Carbonite +tile.Trinium Naquadah Carbonite Frame Box.name=Trinium Naquadah Carbonite Frame Box +tile.Block of Quantum.name=Block of Quantum +tile.Quantum Frame Box.name=Quantum Frame Box + +//Ores +tile.OreFluorite.name=Fluorite Ore +tile.OreCrocoite.name=Crocoite Ore +tile.OreGeikielite.name=Geikielite Ore +tile.OreNichromite.name=Nichromite Ore +tile.OreTitanite.name=Titanite Ore +tile.OreZimbabweite.name=Zimbabweite Ore +tile.OreZirconolite.name=Zirconolite Ore +tile.OreGadoliniteCe.name=Gadolinite (Ce) Ore +tile.OreGadoliniteY.name=Gadolinite (Y) Ore +tile.OreLepersonnite.name=Lepersonnite Ore +tile.OreSamarskiteY.name=Samarskite (Y) Ore +tile.OreSamarskiteYb.name=Samarskite (Yb) Ore +tile.OreXenotime.name=Xenotime Ore +tile.OreYttriaite.name=Yttriaite Ore +tile.OreYttrialite.name=Yttrialite Ore +tile.OreYttrocerite.name=Yttrocerite Ore +tile.OreZircon.name=Zircon Ore +tile.OrePolycrase.name=Polycrase Ore +tile.OreZircophyllite.name=Zircophyllite Ore +tile.OreZirkelite.name=Zirkelite Ore +tile.OreLanthaniteLa.name=Lanthanite (La) Ore +tile.OreLanthaniteCe.name=Lanthanite (Ce) Ore +tile.OreLanthaniteNd.name=Lanthanite (Nd) Ore +tile.OreAgarditeY.name=Agardite (Y) Ore +tile.OreAgarditeCd.name=Agardite (Cd) Ore +tile.OreAgarditeLa.name=Agardite (La) Ore +tile.OreAgarditeNd.name=Agardite (Nd) Ore +tile.OreHibonite.name=Hibonite Ore +tile.OreCerite.name=Cerite Ore +tile.OreFluorcaphite.name=Fluorcaphite Ore +tile.OreFlorencite.name=Florencite Ore +tile.OreCryolite.name=Cryolite Ore + +//Misc +tile.blockMFEffect.name=Special +tile.fluidBlockSludge.name=Sludge +tile.blockWorkbenchGT.name=Workbench +tile.blockWorkbenchGTAdvanced.name=Advanced Workbench +tile.blockHeliumGenerator.name=Helium Generator +tile.blockFirePit.name=Fire Pit +tile.blockFishTrap.name=Fish Catcher +tile.blockInfiniteFluidTank.name=Infinite Fluid Tank +tile.blockMiningExplosives.name=Mining Explosives +tile.blockHellFire.name=Hellish Fire +tile.blockProjectBench.name=Project Table +tile.blockTradeBench.name=Trade Bench +tile.blockModularity.name=Modularity Bench +tile.blockBlackGate.name=Wither Cage +tile.blockTankXpConverter.name=Experience Converter + +//Everglades Blocks +tile.fluidSludge.0.name=Stagnant Waste Water +tile.blockDarkWorldPortal.name=tile.blockDarkWorldPortal.name +tile.blockDarkWorldGround.name=tile.blockDarkWorldGround.name +tile.blockDarkWorldGround2.name=tile.blockDarkWorldGround2.name +tile.blockDarkWorldPortalFrame.name=tile.blockDarkWorldPortalFrame.name
\ No newline at end of file diff --git a/src/resources/mcmod.info b/src/resources/mcmod.info index bac5494ce9..a18d28437e 100644 --- a/src/resources/mcmod.info +++ b/src/resources/mcmod.info @@ -5,7 +5,7 @@ "description": "Adds a few various Multiblocks, Machines, etc to Gregtech and a plethora of other mods (Nearly 30!)", "credits": "", "logoFile": "", - "version": "1.7.0-prerelease-4", + "version": "1.7.0-prerelease-5", "mcversion": "1.7.10", "url": "https://github.com/draknyte1/GTplusplus/wiki", "updateUrl": "https://github.com/draknyte1/GTplusplus/releases/latest", |