aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build.gradle2
-rw-r--r--src/Java/gregtech/api/util/FishPondFakeRecipe.java2
-rw-r--r--src/Java/gtPlusPlus/GTplusplus.java24
-rw-r--r--src/Java/gtPlusPlus/api/damage/DamageTeslaTower.java1
-rw-r--r--src/Java/gtPlusPlus/api/helpers/MaterialHelper.java (renamed from src/Java/gtPlusPlus/api/objects/MaterialHelper.java)2
-rw-r--r--src/Java/gtPlusPlus/api/interfaces/IEntityCatcher.java2
-rw-r--r--src/Java/gtPlusPlus/api/interfaces/IGregtechPower.java149
-rw-r--r--src/Java/gtPlusPlus/api/objects/data/AutoMap.java (renamed from src/Java/gtPlusPlus/core/util/array/AutoMap.java)2
-rw-r--r--src/Java/gtPlusPlus/api/objects/data/Pair.java (renamed from src/Java/gtPlusPlus/core/util/array/Pair.java)2
-rw-r--r--src/Java/gtPlusPlus/api/objects/data/Quad.java (renamed from src/Java/gtPlusPlus/core/util/array/Quad.java)2
-rw-r--r--src/Java/gtPlusPlus/api/objects/data/Triplet.java (renamed from src/Java/gtPlusPlus/core/util/array/Triplet.java)2
-rw-r--r--src/Java/gtPlusPlus/api/objects/minecraft/BlockPos.java85
-rw-r--r--src/Java/gtPlusPlus/api/objects/minecraft/ChunkManager.java (renamed from src/Java/gtPlusPlus/api/objects/ChunkManager.java)6
-rw-r--r--src/Java/gtPlusPlus/api/objects/minecraft/DimChunkPos.java (renamed from src/Java/gtPlusPlus/api/objects/DimChunkPos.java)3
-rw-r--r--src/Java/gtPlusPlus/api/objects/minecraft/GenericStack.java (renamed from src/Java/gtPlusPlus/api/objects/GenericStack.java)2
-rw-r--r--src/Java/gtPlusPlus/api/objects/random/CSPRNG_DO_NOT_USE.java (renamed from src/Java/gtPlusPlus/api/objects/CSPRNG_DO_NOT_USE.java)2
-rw-r--r--src/Java/gtPlusPlus/api/objects/random/XSTR.java (renamed from src/Java/gtPlusPlus/api/objects/XSTR.java)2
-rw-r--r--src/Java/gtPlusPlus/core/block/base/BlockBaseModular.java4
-rw-r--r--src/Java/gtPlusPlus/core/block/base/BlockBaseNBT.java2
-rw-r--r--src/Java/gtPlusPlus/core/block/base/BlockBaseOre.java2
-rw-r--r--src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java2
-rw-r--r--src/Java/gtPlusPlus/core/block/general/HellFire.java2
-rw-r--r--src/Java/gtPlusPlus/core/block/general/antigrief/BlockWitherProof.java3
-rw-r--r--src/Java/gtPlusPlus/core/client/renderer/RenderPlasmaBolt.java2
-rw-r--r--src/Java/gtPlusPlus/core/commands/CommandMath.java110
-rw-r--r--src/Java/gtPlusPlus/core/commands/CommandUtils.java2
-rw-r--r--src/Java/gtPlusPlus/core/common/CommonProxy.java2
-rw-r--r--src/Java/gtPlusPlus/core/config/ConfigHandler.java2
-rw-r--r--src/Java/gtPlusPlus/core/entity/EntityTeslaTowerLightning.java2
-rw-r--r--src/Java/gtPlusPlus/core/entity/projectile/EntityHydrofluoricAcidPotion.java2
-rw-r--r--src/Java/gtPlusPlus/core/entity/projectile/EntitySulfuricAcidPotion.java2
-rw-r--r--src/Java/gtPlusPlus/core/handler/BurnableFuelHandler.java2
-rw-r--r--src/Java/gtPlusPlus/core/handler/analytics/AnalyticsLoggingPlugin.java (renamed from src/Java/gtPlusPlus/api/analytics/AnalyticsLoggingPlugin.java)2
-rw-r--r--src/Java/gtPlusPlus/core/handler/analytics/BlockingFlush.java (renamed from src/Java/gtPlusPlus/api/analytics/BlockingFlush.java)2
-rw-r--r--src/Java/gtPlusPlus/core/handler/analytics/SegmentAnalytics.java (renamed from src/Java/gtPlusPlus/api/analytics/SegmentAnalytics.java)2
-rw-r--r--src/Java/gtPlusPlus/core/handler/analytics/SegmentHelper.java (renamed from src/Java/gtPlusPlus/api/analytics/SegmentHelper.java)2
-rw-r--r--src/Java/gtPlusPlus/core/handler/events/BlockEventHandler.java4
-rw-r--r--src/Java/gtPlusPlus/core/handler/events/LoginEventHandler.java4
-rw-r--r--src/Java/gtPlusPlus/core/handler/events/PickaxeBlockBreakEventHandler.java23
-rw-r--r--src/Java/gtPlusPlus/core/handler/events/ZombieBackupSpawnEventHandler.java2
-rw-r--r--src/Java/gtPlusPlus/core/item/base/BaseEuItem.java2
-rw-r--r--src/Java/gtPlusPlus/core/item/base/BaseItemBurnable.java2
-rw-r--r--src/Java/gtPlusPlus/core/item/base/BaseItemComponent.java4
-rw-r--r--src/Java/gtPlusPlus/core/item/base/CoreItem.java4
-rw-r--r--src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockNBT.java29
-rw-r--r--src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java4
-rw-r--r--src/Java/gtPlusPlus/core/item/general/ItemAreaClear.java2
-rw-r--r--src/Java/gtPlusPlus/core/item/general/ItemHalfCompleteCasings.java4
-rw-r--r--src/Java/gtPlusPlus/core/item/general/capture/ItemEntityCatcher.java2
-rw-r--r--src/Java/gtPlusPlus/core/item/tool/staballoy/MultiPickaxeBase.java2
-rw-r--r--src/Java/gtPlusPlus/core/lib/CORE.java9
-rw-r--r--src/Java/gtPlusPlus/core/material/Material.java4
-rw-r--r--src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java106
-rw-r--r--src/Java/gtPlusPlus/core/slots/SlotModularBaubleUpgrades.java2
-rw-r--r--src/Java/gtPlusPlus/core/tileentities/base/TileEntityBase.java6
-rw-r--r--src/Java/gtPlusPlus/core/tileentities/base/TilePoweredGT.java1171
-rw-r--r--src/Java/gtPlusPlus/core/tileentities/machines/TileEntityModularityTable.java2
-rw-r--r--src/Java/gtPlusPlus/core/util/Utils.java2
-rw-r--r--src/Java/gtPlusPlus/core/util/array/BlockPos.java25
-rw-r--r--src/Java/gtPlusPlus/core/util/entity/EntityUtils.java2
-rw-r--r--src/Java/gtPlusPlus/core/util/item/ItemUtils.java2
-rw-r--r--src/Java/gtPlusPlus/core/util/locale/LocaleUtils.java91
-rw-r--r--src/Java/gtPlusPlus/core/util/math/MathUtils.java2
-rw-r--r--src/Java/gtPlusPlus/core/util/nbt/ModularArmourUtils.java2
-rw-r--r--src/Java/gtPlusPlus/core/util/reflect/AddGregtechRecipe.java43
-rw-r--r--src/Java/gtPlusPlus/core/util/uuid/UUIDGenerator.java2
-rw-r--r--src/Java/gtPlusPlus/core/world/damage/BaseCustomDamageSource.java (renamed from src/Java/gtPlusPlus/api/damage/BaseCustomDamageSource.java)2
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_GT_Base.java2
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_Ores.java4
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/object/BoxedQuad.java2
-rw-r--r--src/Java/gtPlusPlus/core/world/explosions/MiningExplosion.java2
-rw-r--r--src/Java/gtPlusPlus/plugin/manager/Core_Manager.java2
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/forestry/trees/TreefarmManager.java140
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_TreeFarmer.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_TreeFarmer.java6
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_DeluxeMachine.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java67
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/CasingTextureHandler2.java115
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/helpers/ChargingHelper.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/helpers/TreeFarmHelper.java767
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaTileEntityChunkLoader.java11
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaWirelessCharger.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMTE_TeslaTower.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntityAnimalFarm.java379
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntityTreeFarm.java266
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialCuttingMachine.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialFishingPond.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_MassFabricator.java8
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_MultiTank.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/loaders/GT_Material_Loader.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MaterialProcessing.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Recycling.java21
-rw-r--r--src/resources/assets/miscutils/lang/en_US.lang1802
-rw-r--r--src/resources/mcmod.info2
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",