aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--build.gradle2
-rw-r--r--src/Java/gregtech/api/util/Recipe_GT.java2
-rw-r--r--src/Java/gtPlusPlus/GTplusplus.java96
-rw-r--r--src/Java/gtPlusPlus/core/item/ModItems.java17
-rw-r--r--src/Java/gtPlusPlus/core/item/base/misc/BaseItemParticle.java5
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/IonParticles.java117
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java2
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/StandardBaseParticles.java90
-rw-r--r--src/Java/gtPlusPlus/core/item/general/BufferCore.java66
-rw-r--r--src/Java/gtPlusPlus/core/item/general/ItemControlCore.java11
-rw-r--r--src/Java/gtPlusPlus/core/material/Material.java2
-rw-r--r--src/Java/gtPlusPlus/core/material/Particle.java47
-rw-r--r--src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java256
-rw-r--r--src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java274
-rw-r--r--src/Java/gtPlusPlus/core/recipe/common/CI.java276
-rw-r--r--src/Java/gtPlusPlus/core/util/Utils.java5
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java29
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/AsmConfig.java6
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java31
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechItems.java1
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java278
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Cyclotron.java150
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java12
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java11
-rw-r--r--src/resources/assets/gregtech/lang/zh_CN.lang21
-rw-r--r--src/resources/assets/miscutils/lang/en_US.lang23
-rw-r--r--src/resources/assets/miscutils/lang/zh_CN.lang1032
-rw-r--r--src/resources/assets/miscutils/textures/items/MU-metaitem.01/101.pngbin0 -> 309 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/MU-metaitem.01/105.pngbin0 -> 30527 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/0.pngbin0 -> 112 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/1.pngbin0 -> 146 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/10.pngbin0 -> 161 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/100.pngbin0 -> 161 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/101.pngbin0 -> 153 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/102.pngbin0 -> 124 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/103.pngbin0 -> 148 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/104.pngbin0 -> 156 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/105.pngbin0 -> 175 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/106.pngbin0 -> 148 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/107.pngbin0 -> 143 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/108.pngbin0 -> 152 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/109.pngbin0 -> 154 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/11.pngbin0 -> 178 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/110.pngbin0 -> 163 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/111.pngbin0 -> 146 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/112.pngbin0 -> 148 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/113.pngbin0 -> 113 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/114.pngbin0 -> 160 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/115.pngbin0 -> 138 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/116.pngbin0 -> 140 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/117.pngbin0 -> 166 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/12.pngbin0 -> 147 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/13.pngbin0 -> 151 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/14.pngbin0 -> 125 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/15.pngbin0 -> 136 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/16.pngbin0 -> 136 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/17.pngbin0 -> 148 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/18.pngbin0 -> 143 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/19.pngbin0 -> 161 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/2.pngbin0 -> 115 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/20.pngbin0 -> 155 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/21.pngbin0 -> 115 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/22.pngbin0 -> 132 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/23.pngbin0 -> 144 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/24.pngbin0 -> 150 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/25.pngbin0 -> 141 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/26.pngbin0 -> 148 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/27.pngbin0 -> 141 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/28.pngbin0 -> 142 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/29.pngbin0 -> 145 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/3.pngbin0 -> 150 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/30.pngbin0 -> 159 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/31.pngbin0 -> 157 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/32.pngbin0 -> 158 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/33.pngbin0 -> 158 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/34.pngbin0 -> 144 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/35.pngbin0 -> 159 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/36.pngbin0 -> 155 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/37.pngbin0 -> 149 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/38.pngbin0 -> 135 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/39.pngbin0 -> 141 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/4.pngbin0 -> 125 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/40.pngbin0 -> 157 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/41.pngbin0 -> 162 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/42.pngbin0 -> 133 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/43.pngbin0 -> 147 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/44.pngbin0 -> 155 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/45.pngbin0 -> 152 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/46.pngbin0 -> 173 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/47.pngbin0 -> 154 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/48.pngbin0 -> 129 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/49.pngbin0 -> 152 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/5.pngbin0 -> 127 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/50.pngbin0 -> 163 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/51.pngbin0 -> 142 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/52.pngbin0 -> 110 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/53.pngbin0 -> 167 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/54.pngbin0 -> 155 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/55.pngbin0 -> 152 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/56.pngbin0 -> 142 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/57.pngbin0 -> 154 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/58.pngbin0 -> 136 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/59.pngbin0 -> 156 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/6.pngbin0 -> 131 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/60.pngbin0 -> 142 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/61.pngbin0 -> 157 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/62.pngbin0 -> 129 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/63.pngbin0 -> 165 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/64.pngbin0 -> 134 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/65.pngbin0 -> 157 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/66.pngbin0 -> 139 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/67.pngbin0 -> 129 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/68.pngbin0 -> 126 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/69.pngbin0 -> 157 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/7.pngbin0 -> 128 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/70.pngbin0 -> 121 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/71.pngbin0 -> 127 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/72.pngbin0 -> 137 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/73.pngbin0 -> 150 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/74.pngbin0 -> 153 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/75.pngbin0 -> 154 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/76.pngbin0 -> 126 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/77.pngbin0 -> 138 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/78.pngbin0 -> 152 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/79.pngbin0 -> 157 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/8.pngbin0 -> 107 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/80.pngbin0 -> 112 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/81.pngbin0 -> 151 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/82.pngbin0 -> 139 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/83.pngbin0 -> 149 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/84.pngbin0 -> 153 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/85.pngbin0 -> 152 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/86.pngbin0 -> 125 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/87.pngbin0 -> 153 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/88.pngbin0 -> 157 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/89.pngbin0 -> 125 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/9.pngbin0 -> 161 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/90.pngbin0 -> 146 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/91.pngbin0 -> 119 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/92.pngbin0 -> 163 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/93.pngbin0 -> 138 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/94.pngbin0 -> 153 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/95.pngbin0 -> 150 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/96.pngbin0 -> 157 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/97.pngbin0 -> 146 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/98.pngbin0 -> 143 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/99.pngbin0 -> 128 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/ion/IonBase.pngbin0 -> 1789 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemBufferCore.pngbin431 -> 1329 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/0.PNGbin0 -> 1672 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/1.pngbin0 -> 1669 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/10.PNGbin0 -> 1644 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/11.PNGbin0 -> 1678 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/12.PNGbin0 -> 1658 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/13.PNGbin0 -> 1668 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/14.PNGbin0 -> 1676 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/15.PNGbin0 -> 1675 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/16.PNGbin0 -> 1679 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/17.PNGbin0 -> 1674 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/18.PNGbin0 -> 1674 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/19.PNGbin0 -> 1685 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/2.pngbin0 -> 1683 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/20.PNGbin0 -> 1663 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/21.PNGbin0 -> 1653 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/22.PNGbin0 -> 1665 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/23.PNGbin0 -> 1680 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/24.PNGbin0 -> 1673 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/3.pngbin0 -> 1681 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/4.pngbin0 -> 1682 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/5.pngbin0 -> 1675 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/6.pngbin0 -> 1674 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/7.PNGbin0 -> 1667 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/8.PNGbin0 -> 1656 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/particle/9.PNGbin0 -> 1663 bytes
-rw-r--r--src/resources/assets/stevescarts/lang/zh_CN.lang2
178 files changed, 2247 insertions, 623 deletions
diff --git a/.gitignore b/.gitignore
index 9581eb380c..2144086d21 100644
--- a/.gitignore
+++ b/.gitignore
@@ -130,3 +130,4 @@ scripts
/src/Java/gtPlusPlus/xmod/galacticraft/asm/TileEntityFuelLoader_ASM.java
/src/Java/gtPlusPlus/xmod/ob/TileEntitySprinkler_ASM.java
/src/Java/gtPlusPlus/xmod/thermalfoundation/asm/OreDictionaryArbiter_ASM.java
+/GeneratedIcons
diff --git a/build.gradle b/build.gradle
index d7c9ccf6c4..c0a53d65c1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -52,7 +52,7 @@ targetCompatibility = JavaVersion.VERSION_1_8
//Jar Info
archivesBaseName = "GT-PlusPlus"
-version = "1.7.02.55"
+version = "1.7.02.64-nightly"
minecraft.version = "1.7.10-10.13.4.1614-1.7.10"
minecraft {
diff --git a/src/Java/gregtech/api/util/Recipe_GT.java b/src/Java/gregtech/api/util/Recipe_GT.java
index 8a5abb529d..611f55c8b0 100644
--- a/src/Java/gregtech/api/util/Recipe_GT.java
+++ b/src/Java/gregtech/api/util/Recipe_GT.java
@@ -271,7 +271,7 @@ public class Recipe_GT extends GT_Recipe implements IComparableRecipe{
"Fuel Value: ", 1000, " EU", true, false);
//Cyclotron recipe map
- public static final GT_Recipe_Map sCyclotronRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(200), "gt.recipe.cyclotron", "COMET - Compact Cyclotron", null, RES_PATH_GUI + "basicmachines/BlastSmelter", 1, 1, 1, 0, 1, E, 1, E, true, true);
+ public static final GT_Recipe_Map sCyclotronRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(200), "gt.recipe.cyclotron", "COMET - Compact Cyclotron", null, RES_PATH_GUI + "basicmachines/BlastSmelter", 2, 16, 0, 0, 1, E, 1, E, true, true);
//Advanced Mixer
public static final GT_Recipe_Map sAdvancedMixerRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(1000), "gt.recipe.advanced.mixer",
diff --git a/src/Java/gtPlusPlus/GTplusplus.java b/src/Java/gtPlusPlus/GTplusplus.java
index 8ae48f3b3f..7b340dc798 100644
--- a/src/Java/gtPlusPlus/GTplusplus.java
+++ b/src/Java/gtPlusPlus/GTplusplus.java
@@ -1,6 +1,8 @@
package gtPlusPlus;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.*;
+import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableAnimatedTurbines;
+import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableCustomCapes;
+import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableUpdateChecker;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -9,18 +11,24 @@ import java.util.Collection;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.SidedProxy;
-import cpw.mods.fml.common.event.*;
+import cpw.mods.fml.common.event.FMLInitializationEvent;
+import cpw.mods.fml.common.event.FMLLoadCompleteEvent;
+import cpw.mods.fml.common.event.FMLPostInitializationEvent;
+import cpw.mods.fml.common.event.FMLPreInitializationEvent;
+import cpw.mods.fml.common.event.FMLServerStartingEvent;
+import cpw.mods.fml.common.event.FMLServerStoppingEvent;
import cpw.mods.fml.relauncher.IFMLLoadingPlugin.MCVersion;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import gregtech.api.enums.Materials;
import gregtech.api.enums.Textures;
import gregtech.api.enums.Textures.BlockIcons;
-import gregtech.api.util.*;
+import gregtech.api.util.FishPondFakeRecipe;
+import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
+import gregtech.api.util.Recipe_GT;
+import gregtech.api.util.SemiFluidFuelHandler;
import gtPlusPlus.api.objects.Logger;
-import gtPlusPlus.api.objects.data.AutoMap;
-import gtPlusPlus.api.objects.data.Pair;
import gtPlusPlus.core.commands.CommandDebugChunks;
import gtPlusPlus.core.commands.CommandMath;
import gtPlusPlus.core.common.CommonProxy;
@@ -28,16 +36,22 @@ import gtPlusPlus.core.config.ConfigHandler;
import gtPlusPlus.core.handler.BookHandler;
import gtPlusPlus.core.handler.Recipes.RegistrationHandler;
import gtPlusPlus.core.handler.chunkloading.ChunkLoading;
-import gtPlusPlus.core.handler.events.*;
+import gtPlusPlus.core.handler.events.BlockEventHandler;
+import gtPlusPlus.core.handler.events.LoginEventHandler;
+import gtPlusPlus.core.handler.events.MissingMappingsEvent;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.material.Material;
import gtPlusPlus.core.material.nuclear.FLUORIDES;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.data.LocaleUtils;
-import gtPlusPlus.core.util.minecraft.*;
+import gtPlusPlus.core.util.minecraft.FluidUtils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.minecraft.RecipeUtils;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
-import gtPlusPlus.core.util.sys.*;
+import gtPlusPlus.core.util.sys.GeoUtils;
+import gtPlusPlus.core.util.sys.NetworkUtils;
+import gtPlusPlus.core.util.sys.SystemUtils;
import gtPlusPlus.plugin.manager.Core_Manager;
import gtPlusPlus.xmod.gregtech.api.objects.GregtechBufferThread;
import gtPlusPlus.xmod.gregtech.common.Meta_GT_Proxy;
@@ -46,7 +60,6 @@ import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtTools;
import gtPlusPlus.xmod.gregtech.loaders.GT_Material_Loader;
import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_BlastSmelterGT_GTNH;
import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechMiniRaFusion;
-import gtPlusPlus.xmod.ob.SprinklerHandler;
import gtPlusPlus.xmod.thaumcraft.commands.CommandDumpAspects;
import net.minecraft.launchwrapper.Launch;
import net.minecraft.util.IIcon;
@@ -420,69 +433,4 @@ public class GTplusplus implements ActionListener {
mGregMatLoader.enableMaterial(Materials.Force);
}
- /**
- * Capes
- */
-
- public static final AutoMap<Pair<String, String>> mOrangeCapes = new AutoMap<Pair<String, String>>();
- public static final AutoMap<Pair<String, String>> mMiscCapes = new AutoMap<Pair<String, String>>();
- public static final AutoMap<Pair<String, String>> mBetaTestCapes = new AutoMap<Pair<String, String>>();
- public static final AutoMap<Pair<String, String>> mDevCapes = new AutoMap<Pair<String, String>>();
- public static final AutoMap<Pair<String, String>> mPatreonCapes = new AutoMap<Pair<String, String>>();
-
- public static void BuildCapeList() {
- //Basic Orange Cape (I give these away at times, just because)
- mOrangeCapes.put(new Pair<String, String>("ImmortalPharaoh7", "c8c479b2-7464-4b20-adea-b43ff1c10c53"));
- mOrangeCapes.put(new Pair<String, String>("Walmart_Employee", "7a56602b-9a67-44e3-95a5-270f887712c6"));
- mOrangeCapes.put(new Pair<String, String>("ArchonCerulean", "f773e61f-261f-41e7-a221-5dcace291ced"));
- mOrangeCapes.put(new Pair<String, String>("netmc", "c3ecbcc3-0d83-4da6-bb89-69f3f1a6e38b"));
- mOrangeCapes.put(new Pair<String, String>("twinsrock8", "c1239b45b-b3a3-4282-8143-c73778897dda"));
- mOrangeCapes.put(new Pair<String, String>("Ajes", "b1781fc7-35ca-4255-a21c-cdb1b7ea1853"));
- mOrangeCapes.put(new Pair<String, String>("LAGIdiot", "44f38ff8-aad7-49c3-acb3-d92317af9078"));
- mOrangeCapes.put(new Pair<String, String>("Snaggerr", "7e553c3b-b259-4c16-992a-c8c107401e74"));
- mOrangeCapes.put(new Pair<String, String>("Semmelx4", "651b3963-038f-4769-9f75-0eaca0c4e748"));
- //mOrangeCapes.put(new Pair<String, String>("aaaa", "1234"));
- //mOrangeCapes.put(new Pair<String, String>("aaaa", "1234"));
- //mOrangeCapes.put(new Pair<String, String>("aaaa", "1234"));
-
- //Misc
- mMiscCapes.put(new Pair<String, String>("doomsquirter", "3aee80ab-d982-4e6d-b8d0-7912bbd75f5d"));
- mMiscCapes.put(new Pair<String, String>("ukdunc", "17d57521-3a1e-4eb9-91e6-901a65c15e07"));
- mMiscCapes.put(new Pair<String, String>("q009", "520aebe6-4cd9-46cd-bc7a-d47e5e648e38"));
- mMiscCapes.put(new Pair<String, String>("JaidenC", "00b157e5-cd97-43a2-a080-460f550e93cd"));
- mMiscCapes.put(new Pair<String, String>("TheGiggitygoo", "9f996c78-bddc-4dec-a522-0df7267f11f3"));
-
- //Beta/Dev Tester Capes
- mBetaTestCapes.put(new Pair<String, String>("fobius", "ca399a5b-d1bb-46e3-af5b-5939817b5cf8"));
- mBetaTestCapes.put(new Pair<String, String>("cantankerousrex", ""));
- mBetaTestCapes.put(new Pair<String, String>("stephen_2015", "004ae3d8-ecaf-48eb-9e4e-224d42d31c78"));
- mBetaTestCapes.put(new Pair<String, String>("Dyonovan", "2f3a7dff-b1ec-4c05-8eed-63ad2a3ba73f"));
- mBetaTestCapes.put(new Pair<String, String>("Bear989Sr", "1964e3d1-6500-40e7-9ff2-e6161d41a8c2"));
- mBetaTestCapes.put(new Pair<String, String>("CrazyJ1984", "d84f9654-87ea-46a9-881f-c6aa45dd5af8"));
- mBetaTestCapes.put(new Pair<String, String>("AndreyKV", "9550c173-a8c5-4e7f-bf8d-b5ded56921ef"));
- mBetaTestCapes.put(new Pair<String, String>("Piky", "7822ae35-9d5a-4fe7-bd5f-d03006932a65"));
-
- //GTNH Beta Testers
- mBetaTestCapes.put(new Pair<String, String>("bartimaeusnek", "578c2d13-9358-4ae8-95e7-a30ab9f9f3c7"));
- mBetaTestCapes.put(new Pair<String, String>("Prewf", "634433ec-6256-44aa-97b3-a615be18ce23"));
- mBetaTestCapes.put(new Pair<String, String>("FallDark", "86aa136e-9b5e-45e3-8273-6684fd7c537d"));
- mBetaTestCapes.put(new Pair<String, String>("0lafe", "8b06bcf9-7a94-45f9-a01f-2fff73e7582d"));
- mBetaTestCapes.put(new Pair<String, String>("Dogehog", "499b751e-f106-41ae-8dfe-3b88a73958e0"));
- //mBetaTestCapes.put(new Pair<String, String>("cantankerousrex", ""));
-
- //Dev Capes
- mDevCapes.put(new Pair<String, String>("draknyte1", "5652713c-668e-47f3-853a-3fa959a9dfd3"));
- mDevCapes.put(new Pair<String, String>("crimsonhood17", "c4773470-2585-4bd7-82b3-8764ca6acd08"));
-
-
- /**
- * Patreons
- */
-
- mPatreonCapes.put(new Pair<String, String>("Baxterzz", "e8aa5500-7319-4453-822c-b96b29ab5981"));
- mPatreonCapes.put(new Pair<String, String>("leagris", "09752aa3-8b9c-4f8f-b04f-5421e799547d"));
- mPatreonCapes.put(new Pair<String, String>("Traumeister", "fd3f46ac-801a-4566-90b5-75cb362d261e"));
- mPatreonCapes.put(new Pair<String, String>("asturrial", "26c4881f-c708-4c5d-aa76-4419c3a1265b"));
- }
-
}
diff --git a/src/Java/gtPlusPlus/core/item/ModItems.java b/src/Java/gtPlusPlus/core/item/ModItems.java
index 2fd23ec88d..a14073e569 100644
--- a/src/Java/gtPlusPlus/core/item/ModItems.java
+++ b/src/Java/gtPlusPlus/core/item/ModItems.java
@@ -292,11 +292,12 @@ public final class ModItems {
public static Item boxFood;
public static Item boxMagic;
- private static DustDecayable dustMolybdenum99;
+ public static DustDecayable dustMolybdenum99;
+ public static DustDecayable dustTechnetium99;
+ public static DustDecayable dustTechnetium99M;
- private static DustDecayable dustTechnetium99;
-
- private static DustDecayable dustTechnetium99M;
+ public static IonParticles itemIonParticleBase;
+ public static StandardBaseParticles itemStandarParticleBase;
static {
Logger.INFO("Items!");
@@ -580,7 +581,7 @@ public final class ModItems {
MaterialGenerator.generate(ALLOY.ABYSSAL);
- MaterialGenerator.generate(ALLOY.TITANSTEEL, false);
+ MaterialGenerator.generate(ALLOY.TITANSTEEL);
MaterialGenerator.generate(ALLOY.ARCANITE);
MaterialGenerator.generate(ALLOY.OCTIRON);
@@ -630,7 +631,7 @@ public final class ModItems {
dustLithiumPeroxide = ItemUtils.generateSpecialUseDusts("LithiumPeroxide", "Lithium Peroxide", "Li2O2", Utils.rgbtoHexValue(250, 250, 250))[0]; //https://en.wikipedia.org/wiki/Lithium_peroxide
dustLithiumHydroxide = ItemUtils.generateSpecialUseDusts("LithiumHydroxide", "Lithium Hydroxide", "LiOH", Utils.rgbtoHexValue(250, 250, 250))[0]; //https://en.wikipedia.org/wiki/Lithium_hydroxide
- if ((ItemUtils.getItemStackOfAmountFromOreDict("dustQuicklime", 1).getItem() == ModItems.AAA_Broken) || !LoadedMods.IHL){
+ if (!ItemUtils.checkForInvalidItems(ItemUtils.getItemStackOfAmountFromOreDict("dustQuicklime", 1)) && !LoadedMods.IHL){
dustQuicklime = ItemUtils.generateSpecialUseDusts("Quicklime", "Quicklime", "CaO", Utils.rgbtoHexValue(255, 255, 175))[0]; //https://en.wikipedia.org/wiki/Calcium_oxide
}
dustCalciumHydroxide = ItemUtils.generateSpecialUseDusts("CalciumHydroxide", "Hydrated Lime", "Ca(OH)2", Utils.rgbtoHexValue(255, 255, 255))[0]; //https://en.wikipedia.org/wiki/Calcium_hydroxide
@@ -814,8 +815,8 @@ public final class ModItems {
dustTechnetium99M = new DustDecayable("dustTechnetium99M", ELEMENT.getInstance().TECHNETIUM.getRgbAsHex(), 8570, new String[] {""+StringUtils.superscript("99ᵐTc"), "Result: Technicium 99 ("+StringUtils.superscript("99Tc")+")"}, dustTechnetium99, 4);
dustMolybdenum99 = new DustDecayable("dustMolybdenum99", ELEMENT.getInstance().MOLYBDENUM.getRgbAsHex(), 16450, new String[] {""+StringUtils.superscript("99Mo"), "Result: Technicium 99ᵐ ("+StringUtils.superscript("99ᵐTc")+")"}, dustTechnetium99M, 4);
- new IonParticles();
- new StandardBaseParticles();
+ itemIonParticleBase = new IonParticles();
+ itemStandarParticleBase = new StandardBaseParticles();
diff --git a/src/Java/gtPlusPlus/core/item/base/misc/BaseItemParticle.java b/src/Java/gtPlusPlus/core/item/base/misc/BaseItemParticle.java
index 89cd1e55ae..b7bbc84757 100644
--- a/src/Java/gtPlusPlus/core/item/base/misc/BaseItemParticle.java
+++ b/src/Java/gtPlusPlus/core/item/base/misc/BaseItemParticle.java
@@ -30,7 +30,10 @@ public abstract class BaseItemParticle extends CoreItem {
public int getColorFromItemStack(final ItemStack stack, final int HEX_OxFFFFFF) {
return aColourMap.get(stack.getItemDamage());
}
-
+
+ public int getColorFromParentClass(ItemStack stack, int aaa) {
+ return super.getColorFromItemStack(stack, aaa);
+ }
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
diff --git a/src/Java/gtPlusPlus/core/item/chemistry/IonParticles.java b/src/Java/gtPlusPlus/core/item/chemistry/IonParticles.java
index ff5f67d2da..517a698e80 100644
--- a/src/Java/gtPlusPlus/core/item/chemistry/IonParticles.java
+++ b/src/Java/gtPlusPlus/core/item/chemistry/IonParticles.java
@@ -1,23 +1,42 @@
package gtPlusPlus.core.item.chemistry;
+import java.util.HashMap;
+import java.util.List;
+
import gregtech.api.enums.Materials;
import gtPlusPlus.core.item.base.misc.BaseItemParticle;
+import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.Utils;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.IIcon;
public class IonParticles extends BaseItemParticle {
+ public static HashMap<String, Integer> NameToMetaMap = new HashMap<String, Integer>();
+ public static HashMap<Integer, String> MetaToNameMap = new HashMap<Integer, String>();
+
+
public IonParticles() {
super("Ion", aElements.length, EnumRarity.rare);
}
private static final String[] aElements = new String[]{"Hydrogen", "Helium", "Lithium", "Beryllium", "Boron", "Carbon", "Nitrogen", "Oxygen", "Fluorine", "Neon", "Sodium", "Magnesium", "Aluminum", "Silicon", "Phosphorus", "Sulfur", "Chlorine", "Argon", "Potassium", "Calcium", "Scandium", "Titanium", "Vanadium", "Chromium", "Manganese", "Iron", "Cobalt", "Nickel", "Copper", "Zinc", "Gallium", "Germanium", "Arsenic", "Selenium", "Bromine", "Krypton", "Rubidium", "Strontium", "Yttrium", "Zirconium", "Niobium", "Molybdenum", "Technetium", "Ruthenium", "Rhodium", "Palladium", "Silver", "Cadmium", "Indium", "Tin", "Antimony", "Tellurium", "Iodine", "Xenon", "Cesium", "Barium", "Lanthanum", "Cerium", "Praseodymium", "Neodymium", "Promethium", "Samarium", "Europium", "Gadolinium", "Terbium", "Dysprosium", "Holmium", "Erbium", "Thulium", "Ytterbium", "Lutetium", "Hafnium", "Tantalum", "Tungsten", "Rhenium", "Osmium", "Iridium", "Platinum", "Gold", "Mercury", "Thallium", "Lead", "Bismuth", "Polonium", "Astatine", "Radon", "Francium", "Radium", "Actinium", "Thorium", "Protactinium", "Uranium", "Neptunium", "Plutonium", "Americium", "Curium", "Berkelium", "Californium", "Einsteinium", "Fermium", "Mendelevium", "Nobelium", "Lawrencium", "Rutherfordium", "Dubnium", "Seaborgium", "Bohrium", "Hassium", "Meitnerium", "Darmstadtium", "Roentgenium", "Copernicium", "Nihonium", "Flerovium", "Moscovium", "Livermorium", "Tennessine", "Oganesson"};
+
+ public static IIcon[] overlays = new IIcon[aElements.length];
+ public static IIcon baseTexture;
static {
//Generate Ions
int key = 0;
for (String s : aElements) {
+ //Map names to Meta
+ NameToMetaMap.put(Utils.sanitizeString(s.toLowerCase()), key);
+ MetaToNameMap.put(key, Utils.sanitizeString(s.toLowerCase()));
Materials m = Materials.get(s);
int aColour = 0;
if (m == null) {
@@ -45,5 +64,103 @@ public class IonParticles extends BaseItemParticle {
public String getUnlocalizedName(final ItemStack itemStack) {
return "item.particle.ion" + "." + aElements[itemStack.getItemDamage()];
}
+
+ private static boolean createNBT(ItemStack rStack){
+ final NBTTagCompound tagMain = new NBTTagCompound();
+ final NBTTagCompound tagNBT = new NBTTagCompound();
+ tagNBT.setLong("Charge", 0);
+ tagMain.setTag("Ion", tagNBT);
+ rStack.setTagCompound(tagMain);
+ return true;
+ }
+
+ public static final long getChargeState(final ItemStack aStack) {
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ if (aNBT != null) {
+ aNBT = aNBT.getCompoundTag("Ion");
+ if (aNBT != null) {
+ return aNBT.getLong("Charge");
+ }
+ }
+ else {
+ createNBT(aStack);
+ }
+ return 0L;
+ }
+
+ public static final boolean setChargeState(final ItemStack aStack, final long aCharge) {
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ if (aNBT != null) {
+ aNBT = aNBT.getCompoundTag("Ion");
+ if (aNBT != null) {
+ aNBT.setLong("Charge", aCharge);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public double getDurabilityForDisplay(ItemStack stack) {
+ if (stack.getTagCompound() == null){
+ createNBT(stack);
+ }
+ double chargeState = getChargeState(stack);
+ return chargeState;
+ }
+
+ @Override
+ public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
+ long aCharge = getChargeState(stack);
+ String aState = EnumChatFormatting.YELLOW+"Unknown"+EnumChatFormatting.GRAY;
+ //State not set
+ if (aCharge == 0) {
+ list.add(EnumChatFormatting.GRAY+"A "+MetaToNameMap.get(stack.getItemDamage())+" Ion with an "+aState+" charge state");
+ }
+ else {
+ if (aCharge > 0) {
+ aState = EnumChatFormatting.GREEN+"Positive"+EnumChatFormatting.GRAY;
+ }
+ else {
+ aState = EnumChatFormatting.RED+"Negative"+EnumChatFormatting.GRAY;
+ }
+
+ list.add(EnumChatFormatting.GRAY+"A "+MetaToNameMap.get(stack.getItemDamage())+" Ion with a "+aState+" charge state of "+aCharge+"");
+ }
+ super.addInformation(stack, player, list, bool);
+ }
+
+ @Override
+ public void registerIcons(IIconRegister reg) {
+ for (int i = 0; i < IonParticles.overlays.length; i++) {
+ IonParticles.overlays[i] = reg.registerIcon(CORE.MODID + ":" + "ion/"+i);
+ }
+ IonParticles.baseTexture = reg.registerIcon(CORE.MODID + ":" + "ion/IonBase");
+ }
+
+ @Override
+ public IIcon getIconFromDamage(int meta) {
+ return IonParticles.overlays[meta];
+ }
+
+ @Override
+ public boolean requiresMultipleRenderPasses() {
+ return true;
+ }
+
+ @Override
+ public IIcon getIconFromDamageForRenderPass(int aMeta, int aPass) {
+ if (aPass == 0) {
+ return IonParticles.baseTexture;
+ }
+ else {
+ return IonParticles.overlays[aMeta];
+ }
+ }
+
+ @Override
+ public int getRenderPasses(int metadata) {
+ return 2;
+ }
}
diff --git a/src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java b/src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java
index 9bd8a521ab..a516cb0639 100644
--- a/src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java
+++ b/src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java
@@ -404,7 +404,7 @@ public class RocketFuels {
480);
ItemStack aCell11dimethylhydrazine = ItemUtils.getItemStackOfAmountFromOreDict("cell1,1Dimethylhydrazine", 2);
- if (aCell11dimethylhydrazine != null && aCell11dimethylhydrazine.getItem() != ModItems.AAA_Broken) {
+ if (ItemUtils.checkForInvalidItems(aCell11dimethylhydrazine)) {
GT_Values.RA.addCentrifugeRecipe(
CI.getNumberedCircuit(23),
aCell11dimethylhydrazine,
diff --git a/src/Java/gtPlusPlus/core/item/chemistry/StandardBaseParticles.java b/src/Java/gtPlusPlus/core/item/chemistry/StandardBaseParticles.java
index dd07d41b3d..1e833a7b00 100644
--- a/src/Java/gtPlusPlus/core/item/chemistry/StandardBaseParticles.java
+++ b/src/Java/gtPlusPlus/core/item/chemistry/StandardBaseParticles.java
@@ -1,15 +1,26 @@
package gtPlusPlus.core.item.chemistry;
-import gregtech.api.enums.Materials;
+import java.util.HashMap;
+import java.util.List;
+
+import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.core.item.base.misc.BaseItemParticle;
+import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.material.Particle;
import gtPlusPlus.core.material.Particle.ElementaryGroup;
import gtPlusPlus.core.util.Utils;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.IIcon;
public class StandardBaseParticles extends BaseItemParticle {
+ public static HashMap<String, Integer> NameToMetaMap = new HashMap<String, Integer>();
+ public static HashMap<Integer, String> MetaToNameMap = new HashMap<Integer, String>();
+
public StandardBaseParticles() {
super("Base", aTypes.length, EnumRarity.rare);
}
@@ -17,13 +28,19 @@ public class StandardBaseParticles extends BaseItemParticle {
private static final String[] aTypes = new String[] { "Graviton", "Up", "Down", "Charm", "Strange", "Top",
"Bottom", "Electron", "Electron Neutrino", "Muon", "Muon Neutrino", "Tau", "Tau Neutrino", "Gluon",
"Photon", "Z Boson", "W Boson", "Higgs Boson", "Proton", "Neutron", "Lambda", "Omega", "Pion",
- "ETA Meson", };
+ "ETA Meson", "Unknown" };
+
+ public IIcon[] icons = new IIcon[aTypes.length];
static {
//Generate Ions
int key = 0;
+
+
for (String s : aTypes) {
- Particle p;
+ //Map names to Meta
+ NameToMetaMap.put(Utils.sanitizeString(s.toLowerCase()), key);
+ MetaToNameMap.put(key, Utils.sanitizeString(s.toLowerCase()));
for (Particle o : Particle.aMap) {
int aColour = 0;
if (o.mParticleName.toLowerCase().equals(s.toLowerCase())) {
@@ -73,5 +90,72 @@ public class StandardBaseParticles extends BaseItemParticle {
public String getUnlocalizedName(final ItemStack itemStack) {
return "item.particle.base" + "." + aTypes[itemStack.getItemDamage()];
}
+
+ public static Particle getParticle(ItemStack aStack) {
+ AutoMap<Particle> g = Particle.aMap;
+ for (Particle p : g) {
+ String aPartName = Utils.sanitizeString(p.mParticleName.toLowerCase());
+ String expectedPart = Utils.sanitizeString(aTypes[aStack.getItemDamage()].toLowerCase());
+ if (aPartName.equals(expectedPart)) {
+ return p;
+ }
+ }
+ return Particle.UNKNOWN;
+ }
+
+ @Override
+ public int getColorFromItemStack(final ItemStack stack, final int HEX_OxFFFFFF) {
+ //return Utils.rgbtoHexValue(200, 200, 200);
+ return super.getColorFromParentClass(stack, HEX_OxFFFFFF);
+ }
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @Override
+ public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
+ Particle aCharge = getParticle(stack);
+ EnumChatFormatting aColour = EnumChatFormatting.GRAY;
+ String aState = aColour+"Unknown"+EnumChatFormatting.RESET;
+ if (aCharge != null) {
+ String aGroup = aCharge.mParticleType.name().toLowerCase();
+ if (aGroup.toLowerCase().contains("quark")) {
+ aColour = EnumChatFormatting.LIGHT_PURPLE;
+ }
+ else if (aGroup.toLowerCase().contains("lepton")) {
+ aColour = EnumChatFormatting.GREEN;
+ }
+ else if (aCharge == Particle.HIGGS_BOSON) {
+ aColour = EnumChatFormatting.YELLOW;
+ }
+ else if (aGroup.toLowerCase().contains("boson")) {
+ aColour = EnumChatFormatting.RED;
+ }
+ else if (aGroup.toLowerCase().contains("baryon")) {
+ aColour = EnumChatFormatting.BLUE;
+ }
+ else if (aGroup.toLowerCase().contains("meson")) {
+ aColour = EnumChatFormatting.WHITE;
+ }
+ else {
+ aColour = EnumChatFormatting.GRAY;
+ }
+ String aFirstLet = aGroup.substring(0, 1).toUpperCase();
+ aGroup = aGroup.replaceFirst(aGroup.substring(0, 1), aFirstLet);
+ aState = aColour+aGroup+EnumChatFormatting.RESET;
+ list.add(EnumChatFormatting.GRAY + "Type: "+aState);
+ }
+ super.addInformation(stack, player, list, bool);
+ }
+
+ @Override
+ public void registerIcons(IIconRegister reg) {
+ for (int i = 0; i < this.icons.length; i++) {
+ this.icons[i] = reg.registerIcon(CORE.MODID + ":" + "particle/"+i);
+ }
+ }
+
+ @Override
+ public IIcon getIconFromDamage(int meta) {
+ return this.icons[meta];
+ }
}
diff --git a/src/Java/gtPlusPlus/core/item/general/BufferCore.java b/src/Java/gtPlusPlus/core/item/general/BufferCore.java
index d3c7d5112f..9b00d3d034 100644
--- a/src/Java/gtPlusPlus/core/item/general/BufferCore.java
+++ b/src/Java/gtPlusPlus/core/item/general/BufferCore.java
@@ -4,7 +4,7 @@ import java.util.List;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
-
+import gregtech.api.enums.GT_Values;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
@@ -21,7 +21,7 @@ public class BufferCore extends BaseItemWithDamageValue{
public BufferCore(final String unlocalizedName, final int i) {
super(unlocalizedName+i);
this.setTextureName(CORE.MODID + ":" + unlocalizedName);
- this.setMaxStackSize(2);
+ this.setMaxStackSize(32);
this.coreTier = i;
}
@@ -40,7 +40,7 @@ public class BufferCore extends BaseItemWithDamageValue{
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public void addInformation(final ItemStack stack, final EntityPlayer aPlayer, final List list, final boolean bool) {
- list.add(EnumChatFormatting.GRAY+"A key crafting component for making energy buffers.");
+ list.add(EnumChatFormatting.GRAY+"A key crafting component for "+GT_Values.VN[this.coreTier-1]+" Applicances");
}
public final int getCoreTier() {
@@ -48,51 +48,25 @@ public class BufferCore extends BaseItemWithDamageValue{
}
@Override
- public int getColorFromItemStack(final ItemStack stack, int HEX_OxFFFFFF) {
- //Figure Out Damage
- final String s = String.format("%X", HEX_OxFFFFFF);
- //Utils.LOG_INFO(s);
- //String rgb = Utils.hex2Rgb(s);
- //Utils.LOG_INFO(rgb);
- if (this.coreTier == 1){
- HEX_OxFFFFFF = 0x4d4d4d;
- }
- else if (this.coreTier == 2){
- HEX_OxFFFFFF = 0x666666;
- }
- else if (this.coreTier == 3){
- HEX_OxFFFFFF = 0x8c8c8c;
- }
- else if (this.coreTier == 4){
- HEX_OxFFFFFF = 0xa6a6a6;
- }
- else if (this.coreTier == 5){
- HEX_OxFFFFFF = 0xcccccc;
- }
- else if (this.coreTier == 6){
- HEX_OxFFFFFF = 0xe6e6e6;
- }
- else if (this.coreTier == 7){
- HEX_OxFFFFFF = 0xffffcc;
- }
- else if (this.coreTier == 8){
- HEX_OxFFFFFF = 0xace600;
- }
- else if (this.coreTier == 9){
- HEX_OxFFFFFF = 0xffff00;
- }
- /*else if (coreTier == 10){
- HEX_OxFFFFFF = 0xff0000;
- }*/
- else if (this.coreTier == 10){
- HEX_OxFFFFFF = Utils.rgbtoHexValue(MathUtils.randInt(220, 250), MathUtils.randInt(221, 251), MathUtils.randInt(220, 250));
- }
- else {
- HEX_OxFFFFFF = 0xffffff;
- }
+ public int getColorFromItemStack(final ItemStack stack, int HEX_OxFFFFFF) {
+ int[] mTierTypes = new int[] {
+ Utils.rgbtoHexValue(200, 180, 180),
+ Utils.rgbtoHexValue(142, 153, 161),
+ Utils.rgbtoHexValue(230, 121, 75),
+ Utils.rgbtoHexValue(215, 156, 70),
+ Utils.rgbtoHexValue(97, 97, 96), //EV
+ Utils.rgbtoHexValue(202, 202, 201),
+ Utils.rgbtoHexValue(247, 159, 157),
+ Utils.rgbtoHexValue(181, 223, 223),
+ Utils.rgbtoHexValue(187, 219, 185),
+ };
+
+ if (this.coreTier == 10){
+ return Utils.rgbtoHexValue(MathUtils.randInt(220, 250), MathUtils.randInt(221, 251), MathUtils.randInt(220, 250));
+ }
- return HEX_OxFFFFFF;
+ return mTierTypes[this.coreTier-1];
}
}
diff --git a/src/Java/gtPlusPlus/core/item/general/ItemControlCore.java b/src/Java/gtPlusPlus/core/item/general/ItemControlCore.java
index 8ad87c0ea8..eb22f8fa07 100644
--- a/src/Java/gtPlusPlus/core/item/general/ItemControlCore.java
+++ b/src/Java/gtPlusPlus/core/item/general/ItemControlCore.java
@@ -4,10 +4,13 @@ import java.util.List;
import cpw.mods.fml.common.registry.GameRegistry;
import gregtech.api.GregTech_API;
+import gregtech.api.enums.GT_Values;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
import gtPlusPlus.core.lib.CORE;
@@ -57,6 +60,14 @@ public class ItemControlCore extends Item {
public String getUnlocalizedName(ItemStack stack) {
return this.getUnlocalizedName() + "_" + stack.getItemDamage();
}
+
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ @Override
+ public void addInformation(final ItemStack stack, final EntityPlayer aPlayer, final List list, final boolean bool) {
+ list.add(EnumChatFormatting.GRAY+"Allows a Multiblock to function upto "+GT_Values.VN[stack.getItemDamage()]+"");
+ list.add(EnumChatFormatting.GRAY+"Required Tier is determined by the sum of the eu/t of all Energy Inputs");
+ list.add(EnumChatFormatting.GRAY+"Lower tiers may be used to underclock, which is useful in some situations");
+ }
@Override
public String getItemStackDisplayName(final ItemStack tItem) {
diff --git a/src/Java/gtPlusPlus/core/material/Material.java b/src/Java/gtPlusPlus/core/material/Material.java
index 1ee02a2654..03e50aa7dd 100644
--- a/src/Java/gtPlusPlus/core/material/Material.java
+++ b/src/Java/gtPlusPlus/core/material/Material.java
@@ -753,7 +753,7 @@ public class Material {
}
}
//Logger.MATERIALS("Unabled to find \"" + aKey + this.unlocalizedName + "\"");
- return ItemUtils.getErrorStack(stacksize);
+ return ItemUtils.getErrorStack(stacksize, (aKey + this.unlocalizedName+" x"+stacksize));
}
}
diff --git a/src/Java/gtPlusPlus/core/material/Particle.java b/src/Java/gtPlusPlus/core/material/Particle.java
index 6cc0f878d6..e93129ec58 100644
--- a/src/Java/gtPlusPlus/core/material/Particle.java
+++ b/src/Java/gtPlusPlus/core/material/Particle.java
@@ -1,6 +1,11 @@
package gtPlusPlus.core.material;
import gtPlusPlus.api.objects.data.AutoMap;
+import gtPlusPlus.core.item.ModItems;
+import gtPlusPlus.core.item.chemistry.IonParticles;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import net.minecraft.item.ItemStack;
public class Particle {
@@ -34,6 +39,8 @@ public class Particle {
public static final Particle PION;
public static final Particle ETA_MESON;
+ public static final Particle UNKNOWN;
+
public static final AutoMap<Particle> aMap = new AutoMap<Particle>();
static {
@@ -80,7 +87,11 @@ public class Particle {
//Mesons
PION = new Particle(ElementaryGroup.MESON, "Pion", new Particle[] {MUON, MUON_NEUTRINO});
- ETA_MESON = new Particle(ElementaryGroup.MESON, "ETA Meson", new Particle[] {PION, PION, PION});
+ ETA_MESON = new Particle(ElementaryGroup.MESON, "ETA Meson", new Particle[] {PION, PION, PION});
+
+
+ //Wildcard
+ UNKNOWN = new Particle(ElementaryGroup.UNKNOWN, "Unknown");
}
@@ -89,7 +100,8 @@ public class Particle {
LEPTON,
BOSON,
BARYON,
- MESON;
+ MESON,
+ UNKNOWN;
}
public final ElementaryGroup mParticleType;
@@ -107,4 +119,35 @@ public class Particle {
aMap.put(this);
}
+
+ public static ItemStack getIon(String aElementName, int aCharge) {
+ for (String g : gtPlusPlus.core.item.chemistry.IonParticles.NameToMetaMap.keySet()) {
+ if (g.toLowerCase().equals(Utils.sanitizeString(aElementName.toLowerCase()))){
+ Integer meta = gtPlusPlus.core.item.chemistry.IonParticles.NameToMetaMap.get(Utils.sanitizeString(aElementName.toLowerCase()));
+ if (meta == null) {
+ meta = 0;
+ }
+ ItemStack aIon = ItemUtils.simpleMetaStack(ModItems.itemIonParticleBase, meta, 1);
+ if (aCharge != 0) {
+ IonParticles.setChargeState(aIon, aCharge);
+ }
+ return aIon;
+ }
+ }
+ return null;
+ }
+
+ public static ItemStack getBaseParticle(Particle aParticle) {
+ String aPartName = Utils.sanitizeString(aParticle.mParticleName.toLowerCase());
+ for (String g : gtPlusPlus.core.item.chemistry.StandardBaseParticles.NameToMetaMap.keySet()) {
+ if (g.toLowerCase().equals(aPartName)){
+ Integer meta = gtPlusPlus.core.item.chemistry.StandardBaseParticles.NameToMetaMap.get(aPartName);
+ if (meta == null) {
+ meta = 0;
+ }
+ return ItemUtils.simpleMetaStack(ModItems.itemStandarParticleBase, meta, 1);
+ }
+ }
+ return null;
+ }
}
diff --git a/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java b/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java
index e2c69277f6..627c171a00 100644
--- a/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java
+++ b/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java
@@ -1,22 +1,25 @@
package gtPlusPlus.core.recipe;
-import net.minecraft.init.Blocks;
-import net.minecraft.init.Items;
-import net.minecraft.item.ItemStack;
-
-import static gtPlusPlus.core.util.minecraft.ItemUtils.getSimpleStack;
-
import gregtech.api.GregTech_API;
-import gregtech.api.enums.*;
-import gregtech.api.util.*;
-
+import gregtech.api.enums.ConfigCategories;
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.api.util.GT_Utility;
+import gregtech.api.util.HotFuel;
+import gregtech.api.util.ThermalFuel;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.core.item.ModItems;
+import gtPlusPlus.core.item.chemistry.IonParticles;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.material.ALLOY;
import gtPlusPlus.core.material.ELEMENT;
+import gtPlusPlus.core.material.Particle;
import gtPlusPlus.core.material.nuclear.FLUORIDES;
import gtPlusPlus.core.material.nuclear.NUCLIDE;
import gtPlusPlus.core.recipe.common.CI;
@@ -25,10 +28,12 @@ import gtPlusPlus.core.util.minecraft.EnchantingUtils;
import gtPlusPlus.core.util.minecraft.FluidUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.core.util.minecraft.MaterialUtils;
-import gtPlusPlus.core.util.minecraft.RecipeUtils;
import gtPlusPlus.core.util.reflect.AddGregtechRecipe;
import gtPlusPlus.everglades.dimension.Dimension_Everglades;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;
public class RECIPES_GREGTECH {
@@ -70,9 +75,42 @@ public class RECIPES_GREGTECH {
extruderRecipes();
cuttingSawRecipes();
breweryRecipes();
+ laserEngraverRecipes();
addFuels();
}
+ private static void laserEngraverRecipes() {
+
+ GT_Values.RA.addLaserEngraverRecipe(
+ GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Tungsten, 6L),
+ GregtechItemList.Laser_Lens_Special.get(0),
+ ELEMENT.STANDALONE.CELESTIAL_TUNGSTEN.getDust(1),
+ 20 * 60 * 3,
+ MaterialUtils.getVoltageForTier(ELEMENT.STANDALONE.CELESTIAL_TUNGSTEN.vTier));
+
+ GT_Values.RA.addLaserEngraverRecipe(
+ GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Titanium, 8L),
+ GregtechItemList.Laser_Lens_Special.get(0),
+ ELEMENT.STANDALONE.ASTRAL_TITANIUM.getDust(1),
+ 20 * 60 * 2,
+ MaterialUtils.getVoltageForTier(ELEMENT.STANDALONE.ASTRAL_TITANIUM.vTier));
+
+ GT_Values.RA.addLaserEngraverRecipe(
+ ALLOY.NITINOL_60.getBlock(2),
+ GregtechItemList.Laser_Lens_Special.get(0),
+ ELEMENT.STANDALONE.ADVANCED_NITINOL.getBlock(1),
+ 20 * 60 * 1,
+ MaterialUtils.getVoltageForTier(ELEMENT.STANDALONE.ADVANCED_NITINOL.vTier));
+
+ GT_Values.RA.addLaserEngraverRecipe(
+ GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Glass, 64L),
+ GregtechItemList.Laser_Lens_Special.get(0),
+ ELEMENT.STANDALONE.CHRONOMATIC_GLASS.getDust(1),
+ 20 * 60 * 5,
+ MaterialUtils.getVoltageForTier(ELEMENT.STANDALONE.CHRONOMATIC_GLASS.vTier));
+
+ }
+
private static void breweryRecipes() {
CORE.RA.addBrewingRecipe(14, EnchantingUtils.getMobEssence(100), EnchantingUtils.getLiquidXP(1332), 100, 120, false);
CORE.RA.addBrewingRecipe(14, EnchantingUtils.getLiquidXP(1332), EnchantingUtils.getMobEssence(100), 100, 120, false);
@@ -481,10 +519,9 @@ public class RECIPES_GREGTECH {
}
// Calcium Hydroxide
- if ((ItemUtils.getItemStackOfAmountFromOreDict("dustQuicklime", 1).getItem() != ModItems.AAA_Broken)
- || LoadedMods.IHL) {
+ if ((ItemUtils.checkForInvalidItems(ItemUtils.getItemStackOfAmountFromOreDict("dustQuicklime", 1))) || LoadedMods.IHL) {
try {
-
+
CORE.RA.addDehydratorRecipe(
new ItemStack[] { ItemUtils.getItemStackOfAmountFromOreDict("dustQuicklime", 10) }, // Item
FluidUtils.getFluidStack("water", 10000), // Fluid input
@@ -1261,39 +1298,218 @@ public class RECIPES_GREGTECH {
//Polonium
CORE.RA.addCyclotronRecipe(CI.getNumberedCircuit(0), FluidUtils.getFluidStack("molten.bismuth", 1),
- new ItemStack[] { GregtechItemList.Pellet_RTG_PO210.get(1) }, null, new int[] { 100 }, 20 * 300, 2040,
+ new ItemStack[] { GregtechItemList.Pellet_RTG_PO210.get(1) }, null, new int[] { 100 }, 20 * 300 * 100, 2040,
500 * 20);
//Americium
CORE.RA.addCyclotronRecipe(CI.getNumberedCircuit(0), FluidUtils.getFluidStack("molten.americium", 1),
- new ItemStack[] { GregtechItemList.Pellet_RTG_AM241.get(4) }, null, new int[] { 2500 }, 20 * 300, 1020,
+ new ItemStack[] { GregtechItemList.Pellet_RTG_AM241.get(4) }, null, new int[] { 2500 }, 20 * 300 * 100, 1020,
500 * 20); //PO Special Value
//Strontium u235
CORE.RA.addCyclotronRecipe(CI.getNumberedCircuit(0), FluidUtils.getFluidStack("molten.uranium235", 10),
- new ItemStack[] { GregtechItemList.Pellet_RTG_SR90.get(1) }, null, new int[] { 570 }, 20 * 300, 1020,
+ new ItemStack[] { GregtechItemList.Pellet_RTG_SR90.get(1) }, null, new int[] { 570 }, 20 * 300 * 100, 1020,
500 * 20); //PO Special Value
//Strontium u233
CORE.RA.addCyclotronRecipe(CI.getNumberedCircuit(0), FluidUtils.getFluidStack("molten.uranium233", 10),
- new ItemStack[] { GregtechItemList.Pellet_RTG_SR90.get(1) }, null, new int[] { 660 }, 20 * 300, 1020,
+ new ItemStack[] { GregtechItemList.Pellet_RTG_SR90.get(1) }, null, new int[] { 660 }, 20 * 300 * 100, 1020,
500 * 20); //PO Special Value
//Strontium pu239
CORE.RA.addCyclotronRecipe(CI.getNumberedCircuit(0), FluidUtils.getFluidStack("molten.plutonium239", 10),
- new ItemStack[] { GregtechItemList.Pellet_RTG_SR90.get(1) }, null, new int[] { 220 }, 20 * 300, 1020,
+ new ItemStack[] { GregtechItemList.Pellet_RTG_SR90.get(1) }, null, new int[] { 220 }, 20 * 300 * 100, 1020,
500 * 20); //PO Special Value
//Plutonium
CORE.RA.addCyclotronRecipe(CI.getNumberedCircuit(0), FluidUtils.getFluidStack("molten.plutonium238", 1),
- new ItemStack[] { GregtechItemList.Pellet_RTG_PU238.get(2) }, null, new int[] { 780 }, 20 * 300, 1020,
+ new ItemStack[] { GregtechItemList.Pellet_RTG_PU238.get(2) }, null, new int[] { 780 }, 20 * 300 * 100, 1020,
500 * 20); //PO Special Value
-
//Neptunium
CORE.RA.addCyclotronRecipe(new ItemStack[] {ELEMENT.getInstance().URANIUM238.getDust(1) }, FluidUtils.getFluidStack("deuterium", 400),
+ new ItemStack[] {ItemUtils.getSimpleStack(ModItems.dustNeptunium238)}, null, new int[] { 500 }, 20 * 5, 500,
+ 500 * 20); //PO Special Value
+
+
+ /**
+ * Particle Science
+ */
+
+
+ // Quark Smash
+ CORE.RA.addCyclotronRecipe(
+ CI.getNumberedCircuit(3),
+ FluidUtils.getFluidStack("plasma.hydrogen", 1000),
+ new ItemStack[] {
+ Particle.getBaseParticle(Particle.UP),
+ Particle.getBaseParticle(Particle.DOWN),
+ Particle.getBaseParticle(Particle.CHARM),
+ Particle.getBaseParticle(Particle.STRANGE),
+ Particle.getBaseParticle(Particle.TOP),
+ Particle.getBaseParticle(Particle.BOTTOM),
+ },
+ null,
+ new int[] { 50, 50, 50, 50, 50, 50 },
+ 20 * 300 * 38,
+ (int) GT_Values.V[7],
+ 750 * 20);
+
+ // Lepton Smash
+ CORE.RA.addCyclotronRecipe(
+ CI.getNumberedCircuit(6),
+ FluidUtils.getFluidStack("plasma.helium", 1500),
+ new ItemStack[] {
+ Particle.getBaseParticle(Particle.ELECTRON),
+ Particle.getBaseParticle(Particle.MUON),
+ Particle.getBaseParticle(Particle.TAU),
+ Particle.getBaseParticle(Particle.ELECTRON_NEUTRINO),
+ Particle.getBaseParticle(Particle.MUON_NEUTRINO),
+ Particle.getBaseParticle(Particle.TAU_NEUTRINO),
+ },
+ null,
+ new int[] { 60, 40, 20, 15, 10, 5 },
+ 20 * 300 * 38,
+ (int) GT_Values.V[7],
+ 750 * 20);
+
+ //Boson Smash
+ CORE.RA.addCyclotronRecipe(
+ CI.getNumberedCircuit(9),
+ FluidUtils.getFluidStack("plasma.helium", 1500),
+ new ItemStack[] {
+ Particle.getBaseParticle(Particle.GLUON),
+ Particle.getBaseParticle(Particle.PHOTON),
+ Particle.getBaseParticle(Particle.Z_BOSON),
+ Particle.getBaseParticle(Particle.W_BOSON),
+ Particle.getBaseParticle(Particle.HIGGS_BOSON),
+ },
+ null,
+ new int[] { 60, 60, 50, 50, 1 },
+ 20 * 300 * 38,
+ (int) GT_Values.V[7],
+ 750 * 20);
+
+
+ // Mixed Smash 1
+ CORE.RA.addCyclotronRecipe(
+ CI.getNumberedCircuit(12),
+ FluidUtils.getFluidStack("plasma.beryllium", 2500),
+ new ItemStack[] {
+ Particle.getBaseParticle(Particle.GRAVITON),
+ Particle.getBaseParticle(Particle.UP),
+ Particle.getBaseParticle(Particle.DOWN),
+ Particle.getBaseParticle(Particle.CHARM),
+ Particle.getBaseParticle(Particle.STRANGE),
+ Particle.getBaseParticle(Particle.TOP),
+ Particle.getBaseParticle(Particle.BOTTOM),
+ Particle.getBaseParticle(Particle.ELECTRON),
+ Particle.getBaseParticle(Particle.MUON),
+ Particle.getBaseParticle(Particle.TAU),
+ Particle.getBaseParticle(Particle.ELECTRON_NEUTRINO),
+ Particle.getBaseParticle(Particle.MUON_NEUTRINO),
+ Particle.getBaseParticle(Particle.TAU_NEUTRINO),
+ Particle.getBaseParticle(Particle.GLUON),
+ Particle.getBaseParticle(Particle.PHOTON),
+ Particle.getBaseParticle(Particle.Z_BOSON),
+ Particle.getBaseParticle(Particle.W_BOSON),
+ Particle.getBaseParticle(Particle.HIGGS_BOSON),
+ },
+ null,
+ new int[] { 5, 20, 20, 20, 20, 20, 20, 15, 15, 15, 10, 10, 10, 40, 40, 40, 40, 1 },
+ 20 * 300 * 134,
+ (int) GT_Values.V[8],
+ 750 * 20);
+
+ //Graviton Smash
+ CORE.RA.addCyclotronRecipe(
+ CI.getNumberedCircuit(15),
+ FluidUtils.getFluidStack("plasma.hydrogen", 10),
+ new ItemStack[] {
+ Particle.getBaseParticle(Particle.GRAVITON),
+ Particle.getBaseParticle(Particle.UNKNOWN)
+ },
+ null,
+ new int[] {15, 1000},
+ 20 * 30,
+ (int) GT_Values.V[6],
+ 1000 * 20);
+
+ //Quantum Anomaly
+ CORE.RA.addCyclotronRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(24),
+ Particle.getBaseParticle(Particle.UNKNOWN),
+ },
+ FluidUtils.getFluidStack("plasma.osmium", 3),
+ new ItemStack[] {
+ GregtechItemList.Laser_Lens_Special.get(1)
+ },
+ null,
+ new int[] {100},
+ 20 * 60,
+ (int) GT_Values.V[6],
+ 1000 * 20);
+
+ /*
+ * Ions
+ */
+
+ String[] aElementsTest = new String[] {
+ "Hydrogen", "Helium", "Lithium", "Beryllium", "Boron", "Carbon", "Nitrogen", "Oxygen", "Fluorine", "Neon", "Sodium", "Magnesium", "Aluminum", "Silicon", "Phosphorus", "Sulfur", "Chlorine", "Argon"
+ };
+
+ int IonCount = 2;
+ int tenCountA = 1;
+ int tenCountB = 0;
+ for (String y : IonParticles.MetaToNameMap.values()) {
+
+ if (tenCountB == 12) {
+ tenCountB = 0;
+ tenCountA++;
+ }
+ else {
+ tenCountB++;
+ }
+
+ FluidStack aPlasma = FluidUtils.getFluidStack("plasma."+y.toLowerCase(), 1);
+
+ // Ionize Plasma
+ if (aPlasma != null) {
+ CORE.RA.addCyclotronRecipe(
+ CI.getNumberedCircuit(1+(tenCountA-1)),
+ aPlasma,
+ new ItemStack[] {
+ Particle.getIon(y, 1),
+ Particle.getIon(y, 2),
+ Particle.getIon(y, 3),
+ Particle.getIon(y, -1),
+ Particle.getIon(y, -2),
+ Particle.getIon(y, -3),
+ Particle.getIon(y, 1),
+ Particle.getIon(y, 2),
+ Particle.getIon(y, -1),
+ },
+ null,
+ new int[] { 75, 50, 25, 75, 50, 25, 75, 50, 75},
+ 20 * 20 * (IonCount++) * tenCountA,
+ (int) GT_Values.V[7],
+ 1500 * 20 * tenCountA);
+ }
+ else {
+ Logger.INFO("Plasma for "+y+" does not exist, please report this to Alkalus.");
+ }
+ }
+
+
+
+
+
+ /*CORE.RA.addCyclotronRecipe(new ItemStack[] {ELEMENT.getInstance().URANIUM238.getDust(1) }, FluidUtils.getFluidStack("deuterium", 400),
ItemUtils.getSimpleStack(ModItems.dustNeptunium238), null, new int[] { 500 }, 20 * 5, 500,
500 * 20); //PO Special Value
+*/
+
}
diff --git a/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java b/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java
index 0040edfa99..27116ba125 100644
--- a/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java
+++ b/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java
@@ -208,6 +208,7 @@ public class RECIPES_Machines {
private static void run(){
initModItems();
controlCores();
+ energyCores();
}
private static void initModItems(){
@@ -338,109 +339,7 @@ public class RECIPES_Machines {
8000);
- //Buffer Core
- RecipeUtils.addShapedGregtechRecipe(
- CI.component_Plate[1], cableTier1, CI.component_Plate[1],
- "circuitPrimitive", "plateStaballoy", "circuitPrimitive",
- CI.component_Plate[1], cableTier1, CI.component_Plate[1],
- RECIPE_BufferCore_ULV);
- RecipeUtils.addShapedGregtechRecipe(
- CI.component_Plate[2], cableTier2, CI.component_Plate[2],
- RECIPE_BufferCore_ULV, CI.machineHull_HV, RECIPE_BufferCore_ULV,
- CI.component_Plate[2], cableTier2, CI.component_Plate[2],
- RECIPE_BufferCore_LV);
- RecipeUtils.addShapedGregtechRecipe(
- CI.component_Plate[3], cableTier3, CI.component_Plate[3],
- RECIPE_BufferCore_LV, CI.circuitTier2, RECIPE_BufferCore_LV,
- CI.component_Plate[3], cableTier3, CI.component_Plate[3],
- RECIPE_BufferCore_MV);
- RecipeUtils.addShapedGregtechRecipe(
- CI.component_Plate[4], cableTier4, CI.component_Plate[4],
- RECIPE_BufferCore_MV, CI.circuitTier3, RECIPE_BufferCore_MV,
- CI.component_Plate[4], cableTier4, CI.component_Plate[4],
- RECIPE_BufferCore_HV);
- RecipeUtils.addShapedGregtechRecipe(
- CI.component_Plate[5], cableTier5, CI.component_Plate[5],
- RECIPE_BufferCore_HV, CI.circuitTier4, RECIPE_BufferCore_HV,
- CI.component_Plate[5], cableTier5, CI.component_Plate[5],
- RECIPE_BufferCore_EV);
- RecipeUtils.addShapedGregtechRecipe(
- CI.component_Plate[6], cableTier6, CI.component_Plate[6],
- RECIPE_BufferCore_EV, CI.circuitTier5, RECIPE_BufferCore_EV,
- CI.component_Plate[6], cableTier6, CI.component_Plate[6],
- RECIPE_BufferCore_IV);
- RecipeUtils.addShapedGregtechRecipe(
- CI.component_Plate[7], cableTier7, CI.component_Plate[7],
- RECIPE_BufferCore_IV, CI.circuitTier6, RECIPE_BufferCore_IV,
- CI.component_Plate[7], cableTier7, CI.component_Plate[7],
- RECIPE_BufferCore_LuV);
- RecipeUtils.addShapedGregtechRecipe(
- CI.component_Plate[8], cableTier8, CI.component_Plate[8],
- RECIPE_BufferCore_LuV, CI.circuitTier7, RECIPE_BufferCore_LuV,
- CI.component_Plate[8], cableTier8, CI.component_Plate[8],
- RECIPE_BufferCore_ZPM);
- RecipeUtils.addShapedGregtechRecipe(
- CI.component_Plate[9], cableTier9, CI.component_Plate[9],
- RECIPE_BufferCore_ZPM, CI.circuitTier8, RECIPE_BufferCore_ZPM,
- CI.component_Plate[9], cableTier9, CI.component_Plate[9],
- RECIPE_BufferCore_UV);
- RecipeUtils.addShapedGregtechRecipe(
- CI.component_Plate[10], cableTier10, CI.component_Plate[10],
- RECIPE_BufferCore_UV, CI.circuitTier9, RECIPE_BufferCore_UV,
- CI.component_Plate[10], cableTier10, CI.component_Plate[10],
- RECIPE_BufferCore_MAX);
-
-
- RecipeUtils.addShapedGregtechRecipe(
- wireTier1, RECIPE_BufferCore_ULV, wireTier1,
- wireTier1, CI.machineCasing_ULV, wireTier1,
- CI.circuitPrimitive, CI.circuitTier1, CI.circuitPrimitive,
- RECIPE_Buffer_ULV);
- RecipeUtils.addShapedGregtechRecipe(
- wireTier2, RECIPE_BufferCore_LV, wireTier2,
- wireTier2, CI.machineCasing_LV, wireTier2,
- CI.circuitTier1, RECIPE_BufferCore_LV, CI.circuitTier1,
- RECIPE_Buffer_LV);
- RecipeUtils.addShapedGregtechRecipe(
- wireTier3, RECIPE_BufferCore_MV, wireTier3,
- wireTier3, CI.machineCasing_MV, wireTier3,
- CI.circuitTier2, RECIPE_BufferCore_MV, CI.circuitTier2,
- RECIPE_Buffer_MV);
- RecipeUtils.addShapedGregtechRecipe(
- wireTier4, RECIPE_BufferCore_HV, wireTier4,
- wireTier4, CI.machineCasing_HV, wireTier4,
- CI.circuitTier3, RECIPE_BufferCore_HV, CI.circuitTier3,
- RECIPE_Buffer_HV);
- RecipeUtils.addShapedGregtechRecipe(
- wireTier5, RECIPE_BufferCore_EV, wireTier5,
- wireTier5, CI.machineCasing_EV, wireTier5,
- CI.circuitTier4, RECIPE_BufferCore_EV, CI.circuitTier4,
- RECIPE_Buffer_EV);
- RecipeUtils.addShapedGregtechRecipe(
- wireTier6, RECIPE_BufferCore_IV, wireTier6,
- wireTier6, CI.machineCasing_IV, wireTier6,
- CI.circuitTier5, RECIPE_BufferCore_IV, CI.circuitTier5,
- RECIPE_Buffer_IV);
- RecipeUtils.addShapedGregtechRecipe(
- wireTier7, RECIPE_BufferCore_LuV, wireTier7,
- wireTier7, CI.machineCasing_LuV, wireTier7,
- CI.circuitTier6, RECIPE_BufferCore_LuV, CI.circuitTier6,
- RECIPE_Buffer_LuV);
- RecipeUtils.addShapedGregtechRecipe(
- wireTier8, RECIPE_BufferCore_ZPM, wireTier8,
- wireTier8, CI.machineCasing_ZPM, wireTier8,
- CI.circuitTier7, RECIPE_BufferCore_ZPM, CI.circuitTier7,
- RECIPE_Buffer_ZPM);
- RecipeUtils.addShapedGregtechRecipe(
- wireTier9, RECIPE_BufferCore_UV, wireTier9,
- wireTier9, CI.machineCasing_UV, wireTier9,
- CI.circuitTier8, RECIPE_BufferCore_UV, CI.circuitTier8,
- RECIPE_Buffer_UV);
- RecipeUtils.addShapedGregtechRecipe(
- CI.component_Plate[11], RECIPE_BufferCore_MAX, CI.component_Plate[11],
- wireTier10, CI.machineCasing_MAX, wireTier10,
- CI.circuitTier9, RECIPE_BufferCore_MAX, CI.circuitTier9,
- RECIPE_Buffer_MAX);
+
//Steam Condenser
if (CORE.ConfigSwitches.enableMachine_SteamConverter ){
@@ -1702,6 +1601,175 @@ public class RECIPES_Machines {
aOutput[i],
60 * 20 * 1 * (i+1),
MaterialUtils.getVoltageForTier(i));
+ }
+ }
+
+ private static void energyCores() {
+
+ //Simpler Recipes for normal Players, Force assembly crafting in GTNH
+ if (!GTNH) {
+ //Buffer Core
+ /*RecipeUtils.addShapedGregtechRecipe(
+ CI.component_Plate[1], cableTier1, CI.component_Plate[1],
+ "circuitPrimitive", "plateStaballoy", "circuitPrimitive",
+ CI.component_Plate[1], cableTier1, CI.component_Plate[1],
+ RECIPE_BufferCore_ULV);
+ RecipeUtils.addShapedGregtechRecipe(
+ CI.component_Plate[2], cableTier2, CI.component_Plate[2],
+ RECIPE_BufferCore_ULV, CI.machineHull_HV, RECIPE_BufferCore_ULV,
+ CI.component_Plate[2], cableTier2, CI.component_Plate[2],
+ RECIPE_BufferCore_LV);
+ RecipeUtils.addShapedGregtechRecipe(
+ CI.component_Plate[3], cableTier3, CI.component_Plate[3],
+ RECIPE_BufferCore_LV, CI.circuitTier2, RECIPE_BufferCore_LV,
+ CI.component_Plate[3], cableTier3, CI.component_Plate[3],
+ RECIPE_BufferCore_MV);
+ RecipeUtils.addShapedGregtechRecipe(
+ CI.component_Plate[4], cableTier4, CI.component_Plate[4],
+ RECIPE_BufferCore_MV, CI.circuitTier3, RECIPE_BufferCore_MV,
+ CI.component_Plate[4], cableTier4, CI.component_Plate[4],
+ RECIPE_BufferCore_HV);
+ RecipeUtils.addShapedGregtechRecipe(
+ CI.component_Plate[5], cableTier5, CI.component_Plate[5],
+ RECIPE_BufferCore_HV, CI.circuitTier4, RECIPE_BufferCore_HV,
+ CI.component_Plate[5], cableTier5, CI.component_Plate[5],
+ RECIPE_BufferCore_EV);
+ RecipeUtils.addShapedGregtechRecipe(
+ CI.component_Plate[6], cableTier6, CI.component_Plate[6],
+ RECIPE_BufferCore_EV, CI.circuitTier5, RECIPE_BufferCore_EV,
+ CI.component_Plate[6], cableTier6, CI.component_Plate[6],
+ RECIPE_BufferCore_IV);
+ RecipeUtils.addShapedGregtechRecipe(
+ CI.component_Plate[7], cableTier7, CI.component_Plate[7],
+ RECIPE_BufferCore_IV, CI.circuitTier6, RECIPE_BufferCore_IV,
+ CI.component_Plate[7], cableTier7, CI.component_Plate[7],
+ RECIPE_BufferCore_LuV);
+ RecipeUtils.addShapedGregtechRecipe(
+ CI.component_Plate[8], cableTier8, CI.component_Plate[8],
+ RECIPE_BufferCore_LuV, CI.circuitTier7, RECIPE_BufferCore_LuV,
+ CI.component_Plate[8], cableTier8, CI.component_Plate[8],
+ RECIPE_BufferCore_ZPM);
+ RecipeUtils.addShapedGregtechRecipe(
+ CI.component_Plate[9], cableTier9, CI.component_Plate[9],
+ RECIPE_BufferCore_ZPM, CI.circuitTier8, RECIPE_BufferCore_ZPM,
+ CI.component_Plate[9], cableTier9, CI.component_Plate[9],
+ RECIPE_BufferCore_UV);
+ RecipeUtils.addShapedGregtechRecipe(
+ CI.component_Plate[10], cableTier10, CI.component_Plate[10],
+ RECIPE_BufferCore_UV, CI.circuitTier9, RECIPE_BufferCore_UV,
+ CI.component_Plate[10], cableTier10, CI.component_Plate[10],
+ RECIPE_BufferCore_MAX);*/
+
+
+ /*RecipeUtils.addShapedGregtechRecipe(
+ wireTier1, RECIPE_BufferCore_ULV, wireTier1,
+ wireTier1, CI.machineCasing_ULV, wireTier1,
+ CI.circuitPrimitive, CI.circuitTier1, CI.circuitPrimitive,
+ RECIPE_Buffer_ULV);
+ RecipeUtils.addShapedGregtechRecipe(
+ wireTier2, RECIPE_BufferCore_LV, wireTier2,
+ wireTier2, CI.machineCasing_LV, wireTier2,
+ CI.circuitTier1, RECIPE_BufferCore_LV, CI.circuitTier1,
+ RECIPE_Buffer_LV);
+ RecipeUtils.addShapedGregtechRecipe(
+ wireTier3, RECIPE_BufferCore_MV, wireTier3,
+ wireTier3, CI.machineCasing_MV, wireTier3,
+ CI.circuitTier2, RECIPE_BufferCore_MV, CI.circuitTier2,
+ RECIPE_Buffer_MV);
+ RecipeUtils.addShapedGregtechRecipe(
+ wireTier4, RECIPE_BufferCore_HV, wireTier4,
+ wireTier4, CI.machineCasing_HV, wireTier4,
+ CI.circuitTier3, RECIPE_BufferCore_HV, CI.circuitTier3,
+ RECIPE_Buffer_HV);
+ RecipeUtils.addShapedGregtechRecipe(
+ wireTier5, RECIPE_BufferCore_EV, wireTier5,
+ wireTier5, CI.machineCasing_EV, wireTier5,
+ CI.circuitTier4, RECIPE_BufferCore_EV, CI.circuitTier4,
+ RECIPE_Buffer_EV);
+ RecipeUtils.addShapedGregtechRecipe(
+ wireTier6, RECIPE_BufferCore_IV, wireTier6,
+ wireTier6, CI.machineCasing_IV, wireTier6,
+ CI.circuitTier5, RECIPE_BufferCore_IV, CI.circuitTier5,
+ RECIPE_Buffer_IV);
+ RecipeUtils.addShapedGregtechRecipe(
+ wireTier7, RECIPE_BufferCore_LuV, wireTier7,
+ wireTier7, CI.machineCasing_LuV, wireTier7,
+ CI.circuitTier6, RECIPE_BufferCore_LuV, CI.circuitTier6,
+ RECIPE_Buffer_LuV);
+ RecipeUtils.addShapedGregtechRecipe(
+ wireTier8, RECIPE_BufferCore_ZPM, wireTier8,
+ wireTier8, CI.machineCasing_ZPM, wireTier8,
+ CI.circuitTier7, RECIPE_BufferCore_ZPM, CI.circuitTier7,
+ RECIPE_Buffer_ZPM);
+ RecipeUtils.addShapedGregtechRecipe(
+ wireTier9, RECIPE_BufferCore_UV, wireTier9,
+ wireTier9, CI.machineCasing_UV, wireTier9,
+ CI.circuitTier8, RECIPE_BufferCore_UV, CI.circuitTier8,
+ RECIPE_Buffer_UV);
+ RecipeUtils.addShapedGregtechRecipe(
+ CI.component_Plate[11], RECIPE_BufferCore_MAX, CI.component_Plate[11],
+ wireTier10, CI.machineCasing_MAX, wireTier10,
+ CI.circuitTier9, RECIPE_BufferCore_MAX, CI.circuitTier9,
+ RECIPE_Buffer_MAX);*/
+ }
+
+
+ ItemStack[] aBufferOutput = new ItemStack[] {
+ RECIPE_Buffer_ULV, RECIPE_Buffer_LV, RECIPE_Buffer_MV,
+ RECIPE_Buffer_HV, RECIPE_Buffer_EV, RECIPE_Buffer_IV,
+ RECIPE_Buffer_LuV, RECIPE_Buffer_ZPM, RECIPE_Buffer_UV, RECIPE_Buffer_MAX };
+
+
+
+ ItemStack[] aOutput = new ItemStack[] {
+ ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"1", 1),
+ ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"2", 1),
+ ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"3", 1),
+ ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"4", 1),
+ ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"5", 1),
+ ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"6", 1),
+ ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"7", 1),
+ ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"8", 1),
+ ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"9", 1),
+ ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"10", 1)
+ };
+
+ int aCostMultiplier = GTNH ? 4 : 1;
+
+ for (int i = 0; i < 10; i++) {
+
+ ItemStack aPrevTier = (i == 0 ? CI.getTieredMachineHull(4) : aOutput[i-1]);
+ aPrevTier.stackSize = GTNH ? 4 : 2;
+ int aTier = (i + 1);
+ CORE.RA.addSixSlotAssemblingRecipe(
+ new ItemStack[] {
+ aPrevTier,
+ CI.getTieredComponent(OrePrefixes.plate, aTier, 4 * aCostMultiplier),
+ CI.getTieredComponent(OrePrefixes.cableGt04, i, 2 * aCostMultiplier),
+ CI.getTieredComponent(OrePrefixes.circuit, aTier, 2 * aCostMultiplier),
+ CI.getTieredComponent(OrePrefixes.screw, aTier, 6 * aCostMultiplier),
+ CI.getTieredComponent(OrePrefixes.bolt, i, 12 * (GTNH ? 2 : 1)),
+ },
+ CI.getTieredFluid(i, (144 * 4 * aTier)), //Input Fluid
+ aOutput[i],
+ 45 * 10 * 1 * (aTier),
+ MaterialUtils.getVoltageForTier(i));
+
+ //Energy Buffer
+ CORE.RA.addSixSlotAssemblingRecipe(
+ new ItemStack[] {
+ ItemUtils.getSimpleStack(aOutput[i], 4),
+ CI.getTieredComponent(OrePrefixes.plate, aTier, 8 * aCostMultiplier),
+ CI.getTieredComponent(OrePrefixes.wireGt08, i, 4 * aCostMultiplier),
+ CI.getTieredComponent(OrePrefixes.circuit, i, 4 * aCostMultiplier),
+ CI.getTieredComponent(OrePrefixes.stickLong, aTier, 4 * aCostMultiplier),
+ CI.getTieredComponent(OrePrefixes.gearGt, i, 5 * (GTNH ? 2 : 1)),
+ },
+ CI.getTieredFluid(aTier, (144 * 16 * aTier)), //Input Fluid
+ aBufferOutput[i],
+ 45 * 20 * 1 * (aTier),
+ MaterialUtils.getVoltageForTier(i));
+
}
diff --git a/src/Java/gtPlusPlus/core/recipe/common/CI.java b/src/Java/gtPlusPlus/core/recipe/common/CI.java
index dc156c6f91..5f334cdc71 100644
--- a/src/Java/gtPlusPlus/core/recipe/common/CI.java
+++ b/src/Java/gtPlusPlus/core/recipe/common/CI.java
@@ -1,29 +1,31 @@
package gtPlusPlus.core.recipe.common;
-import net.minecraft.init.Blocks;
-import net.minecraft.init.Items;
-import net.minecraft.item.ItemStack;
-
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
import gregtech.api.util.GT_ModHandler;
-
+import gregtech.api.util.GT_Utility;
import gtPlusPlus.api.objects.Logger;
-import gtPlusPlus.core.item.ModItems;
import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.material.ALLOY;
+import gtPlusPlus.core.material.ELEMENT;
import gtPlusPlus.core.material.Material;
import gtPlusPlus.core.recipe.LOADER_Machine_Components;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.xmod.eio.material.MaterialEIO;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
import ic2.core.Ic2Items;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.FluidStack;
public class CI {
//null
- public static ItemStack _NULL = ItemUtils.getSimpleStack(ModItems.AAA_Broken);
+ public static ItemStack _NULL = ItemUtils.getErrorStack(1);
//bits
public static long bits = GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE
@@ -520,5 +522,265 @@ public class CI {
public static ItemStack emptyCells(int i) {
return ItemUtils.getEmptyCell(i);
}
+
+
+
+ /*
+ *
+ */
+
+ private static final Material[] aMaterial_Main = new Material[] {
+ MaterialEIO.REDSTONE_ALLOY,
+ ALLOY.POTIN,
+ ALLOY.ZIRCONIUM_CARBIDE,
+ ALLOY.EGLIN_STEEL,
+ ALLOY.INCONEL_792,
+ ALLOY.TUNGSTEN_TITANIUM_CARBIDE,
+ ALLOY.NITINOL_60,
+ ALLOY.ZERON_100,
+ ALLOY.PIKYONIUM,
+ ELEMENT.STANDALONE.ADVANCED_NITINOL,
+ ALLOY.ABYSSAL,
+ ALLOY.QUANTUM
+ };
+
+ private static final Material[] aMaterial_Secondary = new Material[] {
+ ELEMENT.getInstance().LEAD,
+ ALLOY.TUMBAGA,
+ ALLOY.SILICON_CARBIDE,
+ ALLOY.TUNGSTEN_CARBIDE,
+ ALLOY.INCONEL_690,
+ ALLOY.STELLITE,
+ ALLOY.ARCANITE,
+ ALLOY.LAFIUM,
+ ALLOY.CINOBITE,
+ ALLOY.TITANSTEEL,
+ ALLOY.OCTIRON,
+ ELEMENT.STANDALONE.CELESTIAL_TUNGSTEN
+ };
+
+ private static final Material[] aMaterial_Tertiary = new Material[] {
+ ELEMENT.getInstance().IRON,
+ ALLOY.STEEL,
+ ELEMENT.getInstance().ALUMINIUM,
+ ALLOY.STAINLESSSTEEL,
+ ELEMENT.getInstance().TUNGSTEN,
+ ALLOY.HASTELLOY_N,
+ ALLOY.ENERGYCRYSTAL,
+ ALLOY.TRINIUM_NAQUADAH_CARBON,
+ ALLOY.TRINIUM_REINFORCED_STEEL, //Arceus
+ ALLOY.TITANSTEEL,
+ ELEMENT.STANDALONE.ASTRAL_TITANIUM,
+ ELEMENT.STANDALONE.CELESTIAL_TUNGSTEN
+ };
+
+ private static final Materials[] aMaterial_Cables = new Materials[] {
+ (CORE.ConfigSwitches.enableCustom_Cables && LoadedMods.EnderIO) ? Materials.RedstoneAlloy : CORE.GTNH ? Materials.Lead : Materials.Tin,
+ Materials.Cobalt,
+ Materials.AnnealedCopper,
+ Materials.Gold,
+ Materials.Titanium,
+ Materials.Nichrome,
+ Materials.Platinum,
+ Materials.YttriumBariumCuprate,
+ Materials.Naquadah,
+ Materials.Duranium,
+ Materials.Superconductor,
+ };
+
+ private static final Materials[] aMaterial_Circuits = new Materials[] {
+ Materials.Primitive,
+ Materials.Basic,
+ Materials.Good,
+ Materials.Advanced,
+ Materials.Data,
+ Materials.Data,
+ Materials.Elite,
+ Materials.Master,
+ Materials.Ultimate,
+ Materials.Superconductor,
+ Materials.Infinite,
+ };
+
+ private static final Material[][] aMaster = new Material[][] {aMaterial_Main, aMaterial_Secondary, aMaterial_Tertiary};
+
+
+ public static FluidStack getTieredFluid(int aTier, int aAmount) {
+ ItemStack aCell = getTieredComponent(OrePrefixes.liquid, aTier, 1);
+ FluidStack a = GT_Utility.getFluidForFilledItem(aCell, true);
+ if (a == null) {
+ a = aMaster[0][aTier].getFluid(aAmount);
+ }
+ a.amount = aAmount;
+ return a;
+ }
+
+ public static ItemStack getTieredComponent(OrePrefixes aPrefix, int aTier, int aAmount) {
+ aTier = Math.max(0, aTier);
+
+ Material m = null;
+
+
+
+
+
+
+ if (aPrefix == OrePrefixes.liquid) {
+ int aMatID = (aTier == 0 || aTier == 2 || aTier == 5 || aTier == 8 ? 0 : (aTier == 1 || aTier == 3 || aTier == 6 || aTier == 9 ? 1 : 2));
+ ItemStack aCell = aMaster[aMatID][aTier].getCell(aAmount);
+ return aCell;
+ }
+
+ if (aPrefix == OrePrefixes.circuit) {
+ if (aTier == 4) {
+ return ItemUtils.getSimpleStack(CI.getDataStick(), aAmount);
+ }
+ else if (aTier == 5) {
+ return ItemUtils.getSimpleStack(CI.getDataOrb(), aAmount);
+ }
+ return ItemUtils.getOrePrefixStack(OrePrefixes.circuit, aMaterial_Circuits[aTier], aAmount);
+ }
+
+ //Check for Cables first, catch SuperConductor case and swap to wire.
+ if (aPrefix == OrePrefixes.cableGt01 || aPrefix == OrePrefixes.cableGt02 || aPrefix == OrePrefixes.cableGt04 || aPrefix == OrePrefixes.cableGt08 || aPrefix == OrePrefixes.cableGt12) {
+ //Special Handler
+ if (aTier == 10) {
+ if (aPrefix == OrePrefixes.cableGt01) {
+ aPrefix = OrePrefixes.wireGt02;
+ }
+ else if (aPrefix == OrePrefixes.cableGt02) {
+ aPrefix = OrePrefixes.wireGt04;
+ }
+ else if (aPrefix == OrePrefixes.cableGt04) {
+ aPrefix = OrePrefixes.wireGt08;
+ }
+ else if (aPrefix == OrePrefixes.cableGt08) {
+ aPrefix = OrePrefixes.wireGt12;
+ }
+ else if (aPrefix == OrePrefixes.cableGt12) {
+ aPrefix = OrePrefixes.wireGt16;
+ }
+ }
+ else {
+ return ItemUtils.getOrePrefixStack(aPrefix, aMaterial_Cables[aTier], aAmount);
+ }
+
+
+ }
+ if (aPrefix == OrePrefixes.wireGt01 || aPrefix == OrePrefixes.wireGt02 || aPrefix == OrePrefixes.wireGt04 || aPrefix == OrePrefixes.wireGt08 || aPrefix == OrePrefixes.wireGt12 || aPrefix == OrePrefixes.wireGt16) {
+ return ItemUtils.getOrePrefixStack(aPrefix, aMaterial_Cables[aTier], aAmount);
+ }
+
+ if (aPrefix == OrePrefixes.pipeTiny || aPrefix == OrePrefixes.pipeSmall || aPrefix == OrePrefixes.pipe || aPrefix == OrePrefixes.pipeMedium || aPrefix == OrePrefixes.pipeLarge || aPrefix == OrePrefixes.pipeHuge) {
+ if (aTier == 0) {
+ return ItemUtils.getOrePrefixStack(aPrefix, Materials.Lead, aAmount);
+ }
+ else if (aTier == 1) {
+ return ItemUtils.getOrePrefixStack(aPrefix, Materials.Steel, aAmount);
+ }
+ else if (aTier == 2) {
+ return ItemUtils.getOrePrefixStack(aPrefix, Materials.StainlessSteel, aAmount);
+ }
+ else if (aTier == 3) {
+ return ItemUtils.getOrePrefixStack(aPrefix, Materials.Tungsten, aAmount);
+ }
+ else if (aTier == 4) {
+ return ItemUtils.getOrePrefixStack(aPrefix, Materials.TungstenSteel, aAmount);
+ }
+ else if (aTier == 5) {
+ return ItemUtils.getOrePrefixStack(aPrefix, ALLOY.MARAGING350, aAmount);
+ }
+ else if (aTier == 6) {
+ return ItemUtils.getOrePrefixStack(aPrefix, ALLOY.STABALLOY, aAmount);
+ }
+ else if (aTier == 7) {
+ return ItemUtils.getOrePrefixStack(aPrefix, ALLOY.HASTELLOY_X, aAmount);
+ }
+ else if (aTier == 8) {
+ return ItemUtils.getOrePrefixStack(aPrefix, Materials.Ultimate, aAmount);
+ }
+ else if (aTier == 9) {
+ return ItemUtils.getOrePrefixStack(OrePrefixes.pipeMedium, Materials.Superconductor, aAmount);
+ }
+ else if (aTier == 10) {
+ return ItemUtils.getOrePrefixStack(aPrefix, Materials.Europium, aAmount);
+ }
+ else {
+ return ItemUtils.getOrePrefixStack(aPrefix, Materials.Titanium, aAmount);
+ }
+ }
+
+ ItemStack aTempStack = null;
+
+ if (aPrefix == OrePrefixes.gear || aPrefix == OrePrefixes.gearGt) {
+ m = aMaster[0][aTier];
+ }
+ else if (aPrefix == OrePrefixes.rod || aPrefix == OrePrefixes.stick) {
+ m = aMaster[0][aTier];
+ }
+ else if (aPrefix == OrePrefixes.stickLong) {
+ m = aMaster[1][aTier];
+ }
+ else if (aPrefix == OrePrefixes.bolt) {
+ m = aMaster[2][aTier];
+ }
+ else if (aPrefix == OrePrefixes.screw) {
+ m = aMaster[0][aTier];
+ }
+ else if (aPrefix == OrePrefixes.rotor) {
+ m = aMaster[1][aTier];
+ }
+ else if (aPrefix == OrePrefixes.frame || aPrefix == OrePrefixes.frameGt) {
+ m = aMaster[2][aTier];
+ }
+ else if (aPrefix == OrePrefixes.ingot) {
+ m = aMaster[1][aTier];
+ }
+ else if (aPrefix == OrePrefixes.plate) {
+ m = aMaster[0][aTier];
+ }
+ else if (aPrefix == OrePrefixes.plateDouble) {
+ m = aMaster[0][aTier];
+ }
+ else if (aPrefix == OrePrefixes.ring) {
+ m = aMaster[2][aTier];
+ }
+ else if (aPrefix == OrePrefixes.cell) {
+ m = aMaster[1][aTier];
+ }
+ else {
+ m = aMaterial_Main[aTier];
+ }
+
+ ItemStack aReturn = ItemUtils.getOrePrefixStack(aPrefix, m, aAmount);
+
+ //If Invalid, Try First Material
+ if (!ItemUtils.checkForInvalidItems(aReturn)) {
+ m = aMaster[0][aTier];
+ aReturn = ItemUtils.getOrePrefixStack(aPrefix, m, aAmount);
+
+ //If Invalid, Try Second Material
+ if (!ItemUtils.checkForInvalidItems(aReturn)) {
+ m = aMaster[1][aTier];
+ aReturn = ItemUtils.getOrePrefixStack(aPrefix, m, aAmount);
+
+ //If Invalid, Try Third Material
+ if (!ItemUtils.checkForInvalidItems(aReturn)) {
+ m = aMaster[2][aTier];
+ aReturn = ItemUtils.getOrePrefixStack(aPrefix, m, aAmount);
+
+ //All Invalid? Ok, shit.
+ //Let's add a special error ingot.
+ if (!ItemUtils.checkForInvalidItems(aReturn)) {
+ aReturn = ItemUtils.getErrorStack(1, (aPrefix.toString()+m.getLocalizedName()+" x"+aAmount));
+ }
+ }
+ }
+ }
+
+ return aReturn;
+
+
+ }
}
diff --git a/src/Java/gtPlusPlus/core/util/Utils.java b/src/Java/gtPlusPlus/core/util/Utils.java
index e2220f74f8..968de2f55a 100644
--- a/src/Java/gtPlusPlus/core/util/Utils.java
+++ b/src/Java/gtPlusPlus/core/util/Utils.java
@@ -485,7 +485,10 @@ public class Utils {
return true;
}
- public static File getMcDir() {
+ public static File getMcDir() {
+ if (Minecraft.getMinecraft() == null) {
+ return new File("testdir");
+ }
if ((MinecraftServer.getServer() != null) && MinecraftServer.getServer().isDedicatedServer()) {
return new File(".");
}
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java
index 425606dd8e..1cb2513e90 100644
--- a/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java
+++ b/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java
@@ -10,7 +10,9 @@ import net.minecraft.init.Items;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item;
import net.minecraft.item.Item.ToolMaterial;
+import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.StatCollector;
import gregtech.api.enums.ItemList;
@@ -315,7 +317,7 @@ public class ItemUtils {
return returnValue;
}
Logger.INFO("Failed to find `" + oredictName + "` in OD.");
- return getErrorStack(amount);
+ return getErrorStack(amount, oredictName+" x"+amount);
//return getItemStackOfAmountFromOreDictNoBroken(mTemp, amount);
}
@@ -366,8 +368,7 @@ public class ItemUtils {
public static ItemStack getGregtechDust(final Materials material, final int amount) {
final ItemStack returnValue = GT_OreDictUnificator.get(OrePrefixes.dust, material, 1L);
if (returnValue != null) {
- if ((returnValue.getItem().getClass() != ModItems.AAA_Broken.getClass())
- || (returnValue.getItem() != ModItems.AAA_Broken)) {
+ if (ItemUtils.checkForInvalidItems(returnValue)) {
return returnValue.copy();
}
}
@@ -762,23 +763,23 @@ public class ItemUtils {
if (aGtStack == null) {
Logger.INFO(
"Failed to find `" + mPrefix + MaterialUtils.getMaterialName(mMat) + "` in OD. [Prefix Search]");
- return getErrorStack(mAmount);
+ return getErrorStack(mAmount, (mPrefix.toString()+MaterialUtils.getMaterialName(mMat)+" x"+mAmount));
} else {
return aGtStack;
}
}
- public static ItemStack getErrorStack(int mAmount) {
- //System.exit(1);
- try {
- //new GregtechException("Logging - [Issue #999]");
- }
- catch (Throwable t) {
- t.printStackTrace();
- }
+ public static ItemStack getErrorStack(int mAmount) {
+ return getErrorStack(mAmount, null);
+ }
- return getSimpleStack(ModItems.AAA_Broken, mAmount);
- //return null;
+ public static ItemStack getErrorStack(int mAmount, String aName) {
+ ItemStack g = getSimpleStack(ModItems.AAA_Broken, 1);
+ NBTUtils.setString(g, "Lore", EnumChatFormatting.RED+aName);
+ if (aName != null) {
+ NBTUtils.setBookTitle(g, EnumChatFormatting.YELLOW+"Maybe Alkalus should know about this");
+ }
+ return g;
}
public static ItemStack[] getStackOfAllOreDictGroup(String oredictname) {
diff --git a/src/Java/gtPlusPlus/preloader/asm/AsmConfig.java b/src/Java/gtPlusPlus/preloader/asm/AsmConfig.java
index d68ba3c2a6..aa1e382278 100644
--- a/src/Java/gtPlusPlus/preloader/asm/AsmConfig.java
+++ b/src/Java/gtPlusPlus/preloader/asm/AsmConfig.java
@@ -76,7 +76,11 @@ public class AsmConfig {
prop = config.get("general", "enableGcFuelChanges", true);
prop.comment = "Enable/Disable changes to Galacticraft Rocket Fuels.";
prop.setLanguageKey("gtpp.enableGcFuelChanges").setRequiresMcRestart(true);
- enableGcFuelChanges = prop.getBoolean(true);
+
+ //Disabled because Broken
+ //enableGcFuelChanges = prop.getBoolean(true);
+ enableGcFuelChanges = false;
+
propOrder.add(prop.getName());
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
index def213ec7c..41bb0b0c26 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
@@ -96,6 +96,9 @@ public enum GregtechItemList implements GregtechItemContainer {
Carbyne_Tube_Finished,
Carbyne_Sheet_Finished,
+ //End Game Laser Engraver Lens
+ Laser_Lens_Special,
+
//----------------------------------------------------------------------------
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java b/src/Java/gtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java
index 4c7ea6d05d..df71432663 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java
@@ -135,7 +135,7 @@ public interface IGregtech_RecipeAdder {
public boolean addCyclotronRecipe(ItemStack aInput, FluidStack aFluidInput, ItemStack[] aOutputs,
FluidStack aFluidOutput, int[] aChances, int aDuration, int aEUt, int aSpecialValue);
- boolean addCyclotronRecipe(ItemStack[] aInputs, FluidStack aFluidInput, ItemStack aOutput, FluidStack aFluidOutput,
+ boolean addCyclotronRecipe(ItemStack[] aInputs, FluidStack aFluidInput, ItemStack[] aOutput, FluidStack aFluidOutput,
int[] aChances, int aDuration, int aEUt, int aSpecialValue);
public boolean addMixerRecipe(ItemStack aInput1, ItemStack aInput2, ItemStack aInput3, ItemStack aInput4,
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 bb822ec816..3e5c783a5c 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
@@ -1508,28 +1508,37 @@ GT_MetaTileEntity_MultiBlockBase {
public abstract boolean checkMultiblock(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack);
- public boolean isValidBlockForStructure(IGregTechTileEntity aBaseMetaTileEntity, int aCasingID, boolean canBeHatch, Block aFoundBlock, int aFoundMeta, Block aExpectedBlock, int aExpectedMeta) {
- boolean isHatch = false;
+ public boolean isValidBlockForStructure(IGregTechTileEntity aBaseMetaTileEntity, int aCasingID, boolean canBeHatch,
+ Block aFoundBlock, int aFoundMeta, Block aExpectedBlock, int aExpectedMeta) {
+ boolean isHatch = false;
if (aBaseMetaTileEntity != null) {
isHatch = this.addToMachineList(aBaseMetaTileEntity, aCasingID);
if (isHatch) {
return true;
}
+ else {
+ //Found a controller
+ if (aFoundMeta > 0 && aFoundMeta < 1000 && aFoundBlock == GregTech_API.sBlockMachines) {
+ return true;
+ }
+ }
}
if (!isHatch) {
- if (aFoundBlock != aExpectedBlock || aFoundMeta != aExpectedMeta) {
+ if (aFoundBlock == aExpectedBlock && aFoundMeta == aExpectedMeta) {
+ return true;
+ }
+ else if (aFoundBlock != aExpectedBlock) {
+ Logger.INFO("A1 - Found: "+aFoundBlock.getLocalizedName()+", Expected: "+aExpectedBlock.getLocalizedName());
return false;
}
- else {
- return true;
+ else if (aFoundMeta != aExpectedMeta) {
+ Logger.INFO("A2");
+ return false;
}
+
}
- else {
- return true;
- }
-
-
-
+ Logger.INFO("A3");
+ return false;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechItems.java b/src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechItems.java
index b54eb770ec..7f426f8abb 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechItems.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechItems.java
@@ -292,6 +292,7 @@ public class MetaGeneratedGregtechItems extends Gregtech_MetaItem_X32 {
GregtechItemList.NanoTube_Finished.set(this.addItem(102, "Carbon Nanotubes", "Multi-walled Zigzag nanotubes, possibly Carbon's final form", new Object[0]));
GregtechItemList.Carbyne_Tube_Finished.set(this.addItem(103, "Linear Acetylenic Carbon (LAC/Carbyne)", "LAC chains grown inside Multi-walled Carbon Nanotubes, highly stable", new Object[0]));
GregtechItemList.Carbyne_Sheet_Finished.set(this.addItem(104, "Carbyne Composite Panel", "Nanotubes which contain LAC, arranged side by side and compressed further", new Object[0]));
+ GregtechItemList.Laser_Lens_Special.set(this.addItem(105, "Quantum Anomaly", "Probably should shoot it with lasers", new Object[0]));
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java b/src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java
index 612defcb89..22ce41282f 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java
@@ -1,14 +1,45 @@
package gtPlusPlus.xmod.gregtech.common.render;
-import static gtPlusPlus.GTplusplus.*;
-
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.math.BigInteger;
+import java.net.URL;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.Base64;
+import java.util.Date;
import java.util.HashMap;
+import java.util.Map;
import java.util.UUID;
+import javax.crypto.Cipher;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+import javax.xml.bind.DatatypeConverter;
+
+import org.apache.commons.io.IOUtils;
import org.lwjgl.opengl.GL11;
import com.mojang.authlib.GameProfile;
+import gregtech.api.enums.GT_Values;
+import gregtech.api.util.GT_Log;
+import gregtech.api.util.GT_Utility;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.lib.CORE.ConfigSwitches;
+import gtPlusPlus.core.proxy.ClientProxy;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.data.FileUtils;
+import gtPlusPlus.core.util.sys.NetworkUtils;
import net.minecraft.client.entity.AbstractClientPlayer;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.renderer.entity.RenderManager;
@@ -17,110 +48,122 @@ import net.minecraft.potion.Potion;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
+import net.minecraftforge.client.event.RenderPlayerEvent;
-import gregtech.api.enums.GT_Values;
-import gregtech.api.util.GT_Log;
-import gregtech.api.util.GT_Utility;
+public class GTPP_CapeRenderer extends RenderPlayer {
-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.lib.CORE.ConfigSwitches;
-import net.minecraftforge.client.event.RenderPlayerEvent;
+ private final ResourceLocation[] mCapes = {
+ new ResourceLocation("miscutils:textures/OrangeHD.png"),
+ new ResourceLocation("miscutils:textures/FancyCapeHD.png"),
+ new ResourceLocation("miscutils:textures/TesterCapeHD.png"),
+ new ResourceLocation("miscutils:textures/DevCapeHD.png"),
+ new ResourceLocation("miscutils:textures/PatreonCapeHD.png") };
-public class GTPP_CapeRenderer
-extends RenderPlayer {
- private final ResourceLocation[] mCapes = {new ResourceLocation("miscutils:textures/OrangeHD.png"), new ResourceLocation("miscutils:textures/FancyCapeHD.png"), new ResourceLocation("miscutils:textures/TesterCapeHD.png"), new ResourceLocation("miscutils:textures/DevCapeHD.png"), new ResourceLocation("miscutils:textures/PatreonCapeHD.png")};
-
- private static final HashMap<String, ResourceLocation> mLocalClientPlayerCache;
+ private final ArrayList<String> mData;
- static {
- mLocalClientPlayerCache = new HashMap<String, ResourceLocation>();
- }
-
public GTPP_CapeRenderer() {
setRenderManager(RenderManager.instance);
- BuildCapeList();
+ downloadCapeList();
+ ArrayList<String> aTemp = new ArrayList<String>();
+ try {
+ aTemp = returnDatData();
+ }
+ catch (Throwable t) {
+ aTemp = new ArrayList<String>();
+ }
+ mData = aTemp;
}
private static boolean hasResourceChecked = false;
+ private boolean hasCape = false;
+ private ResourceLocation tResource = null;
public synchronized void receiveRenderSpecialsEvent(RenderPlayerEvent.Specials.Pre aEvent) {
AbstractClientPlayer aPlayer = (AbstractClientPlayer) aEvent.entityPlayer;
- ResourceLocation tResource = null;
- if (!ConfigSwitches.enableCustomCapes){
+ if (!ConfigSwitches.enableCustomCapes) {
aEvent.setCanceled(true);
- return ;
+ Logger.INFO("A1");
+ return;
+ }
+
+ if (hasResourceChecked) {
+ if (!hasCape && !CORE.DEVENV) {
+ aEvent.setCanceled(true);
+ Logger.INFO("A2");
+ return;
+ }
}
+ // Make sure we don't keep checking on clients who dont have capes.
+ if (!hasResourceChecked) {
- //Make sure we don't keep checking on clients who dont have capes.
- if (!hasResourceChecked) {
- AutoMap<Pair<String, ResourceLocation>> localGatherMap = new AutoMap<Pair<String, ResourceLocation>>();
- String mTemp = "";
- //If list's have not been built yet for some reason, we best do it now.
- if (mDevCapes.size() <= 1) {
- BuildCapeList();
- }
- //Iterates all players in all lists, caches result.
- for (Pair<String, String> mName : mOrangeCapes){
- mTemp = getPlayerName(mName.getKey(), mName.getValue());
- localGatherMap.put(new Pair<String, ResourceLocation>(mTemp, this.mCapes[0]));
- }
- for (Pair<String, String> mName : mMiscCapes){
- mTemp = getPlayerName(mName.getKey(), mName.getValue());
- localGatherMap.put(new Pair<String, ResourceLocation>(mTemp, this.mCapes[1]));
- }
- for (Pair<String, String> mName : mBetaTestCapes){
- mTemp = getPlayerName(mName.getKey(), mName.getValue());
- localGatherMap.put(new Pair<String, ResourceLocation>(mTemp, this.mCapes[2]));
+ // Time to Spliterate some data
+ Map<String, ResourceLocation> aPlayerData = new HashMap<String, ResourceLocation>();
+ Map<String, String> aNameMap = new HashMap<String, String>();
+ int i = 0;
+ for (String s : mData) {
+ String[] aSplit = s.split("@");
+ int a[] = new int[] { 0, mCapes.length - 1 };
+ int aID = Integer.parseInt(aSplit[1]);
+ String aPlayerName = this.getPlayerName("iteration-" + (i++), aSplit[0]);
+ aNameMap.put(aSplit[0], aPlayerName);
+ aPlayerData.put(aPlayerName, this.mCapes[Math.max(a[0], Math.min(aID, a[1]))]);
+ }
+
+ // Set flag to only render this event if player has a cape.
+ for (String s : aNameMap.values()) {
+ if (s.toLowerCase().equals(ClientProxy.playerName)) {
+ hasCape = true;
+ tResource = aPlayerData.get(ClientProxy.playerName);
+ break;
}
- for (Pair<String, String> mName : mDevCapes){
- mTemp = getPlayerName(mName.getKey(), mName.getValue());
- localGatherMap.put(new Pair<String, ResourceLocation>(mTemp, this.mCapes[3]));
+ }
+
+ // Dev capes for dev mode.
+ if (CORE.DEVENV) {
+ hasCape = true;
+ tResource = mCapes[3];
+ }
+
+ // Safety Check
+ if (tResource == null) {
+ if (aPlayerData.get(aPlayer.getDisplayName()) != null) {
+ tResource = aPlayerData.get(aPlayer.getDisplayName());
+ } else {
+ hasCape = false;
}
- for (Pair<String, String> mName : mPatreonCapes){
- mTemp = getPlayerName(mName.getKey(), mName.getValue());
- localGatherMap.put(new Pair<String, ResourceLocation>(mTemp, this.mCapes[4]));
- }
- if (localGatherMap.size() > 0) {
- for (Pair<String, ResourceLocation> p : localGatherMap) {
- if (p != null) {
- mLocalClientPlayerCache.put(p.getKey().toLowerCase(), p.getValue());
- }
- }
- }
- //Only run once.
+ }
+
+ // Only run once.
hasResourceChecked = true;
- }
-
- if (mLocalClientPlayerCache.size() > 0) {
- String name = aPlayer.getDisplayName().toLowerCase();
- if (mLocalClientPlayerCache.containsKey(name)) {
- tResource = mLocalClientPlayerCache.get(name);
- }
- }
-
- if (GT_Utility.getFullInvisibility(aPlayer) || aPlayer.isInvisible() || GT_Utility.getPotion(aPlayer, Integer.valueOf(Potion.invisibility.id).intValue())) {
+ }
+
+ if (GT_Utility.getFullInvisibility(aPlayer) || aPlayer.isInvisible()
+ || GT_Utility.getPotion(aPlayer, Integer.valueOf(Potion.invisibility.id).intValue())) {
aEvent.setCanceled(true);
+ Logger.INFO("A3");
return;
}
+
float aPartialTicks = aEvent.partialRenderTick;
- try {
+ try {
if (tResource == null && CORE.DEVENV) {
tResource = mCapes[3];
}
-
+
if ((tResource != null) && (!aPlayer.getHideCape())) {
bindTexture(tResource);
GL11.glPushMatrix();
GL11.glTranslatef(0.0F, 0.0F, 0.125F);
- double d0 = aPlayer.field_71091_bM + (aPlayer.field_71094_bP - aPlayer.field_71091_bM) * aPartialTicks - (aPlayer.prevPosX + (aPlayer.posX - aPlayer.prevPosX) * aPartialTicks);
- double d1 = aPlayer.field_71096_bN + (aPlayer.field_71095_bQ - aPlayer.field_71096_bN) * aPartialTicks - (aPlayer.prevPosY + (aPlayer.posY - aPlayer.prevPosY) * aPartialTicks);
- double d2 = aPlayer.field_71097_bO + (aPlayer.field_71085_bR - aPlayer.field_71097_bO) * aPartialTicks - (aPlayer.prevPosZ + (aPlayer.posZ - aPlayer.prevPosZ) * aPartialTicks);
- float f6 = aPlayer.prevRenderYawOffset + (aPlayer.renderYawOffset - aPlayer.prevRenderYawOffset) * aPartialTicks;
+ double d0 = aPlayer.field_71091_bM + (aPlayer.field_71094_bP - aPlayer.field_71091_bM) * aPartialTicks
+ - (aPlayer.prevPosX + (aPlayer.posX - aPlayer.prevPosX) * aPartialTicks);
+ double d1 = aPlayer.field_71096_bN + (aPlayer.field_71095_bQ - aPlayer.field_71096_bN) * aPartialTicks
+ - (aPlayer.prevPosY + (aPlayer.posY - aPlayer.prevPosY) * aPartialTicks);
+ double d2 = aPlayer.field_71097_bO + (aPlayer.field_71085_bR - aPlayer.field_71097_bO) * aPartialTicks
+ - (aPlayer.prevPosZ + (aPlayer.posZ - aPlayer.prevPosZ) * aPartialTicks);
+ float f6 = aPlayer.prevRenderYawOffset
+ + (aPlayer.renderYawOffset - aPlayer.prevRenderYawOffset) * aPartialTicks;
double d3 = MathHelper.sin(f6 * CORE.PI / 180.0F);
double d4 = -MathHelper.cos(f6 * CORE.PI / 180.0F);
float f7 = (float) d1 * 10.0F;
@@ -136,7 +179,9 @@ extends RenderPlayer {
f8 = 0.0F;
}
float f10 = aPlayer.prevCameraYaw + (aPlayer.cameraYaw - aPlayer.prevCameraYaw) * aPartialTicks;
- f7 += MathHelper.sin((aPlayer.prevDistanceWalkedModified + (aPlayer.distanceWalkedModified - aPlayer.prevDistanceWalkedModified) * aPartialTicks) * 6.0F) * 32.0F * f10;
+ f7 += MathHelper.sin((aPlayer.prevDistanceWalkedModified
+ + (aPlayer.distanceWalkedModified - aPlayer.prevDistanceWalkedModified) * aPartialTicks) * 6.0F)
+ * 32.0F * f10;
if (aPlayer.isSneaking()) {
f7 += 25.0F;
}
@@ -156,34 +201,69 @@ extends RenderPlayer {
private String getPlayerName(String name, String uuid) {
try {
- Logger.WORLD("[Capes++] Trying to UUID check "+name+".");
- if (uuid != null) {
- if (uuid.length() > 0) {
- UUID g = UUID.fromString(uuid);
- if (g != null) {
- Logger.WORLD("[Capes++] Mojang/Cache checking for "+name+".");
- GameProfile profile = MinecraftServer.getServer().func_152358_ax().func_152652_a(g);
+ Logger.WORLD("[Capes++] Trying to UUID check " + name + ".");
+ if (uuid != null) {
+ if (uuid.length() > 0) {
+ UUID g = UUID.fromString(uuid);
+ if (g != null) {
+ Logger.WORLD("[Capes++] Mojang/Cache checking for " + name + ".");
+ GameProfile profile = MinecraftServer.getServer().func_152358_ax().func_152652_a(g);
+ if (profile != null) {
+ Logger.INFO("[Capes++] Found for UUID check: " + profile.getName() + ".");
+ return profile.getName();
+ }
+ } else {
+ g = UUID.fromString(uuid.replace("-", ""));
+ if (g != null) {
+ Logger.WORLD("[Capes++] Mojang/Cache checking for " + name + ".");
+ GameProfile profile = MinecraftServer.getServer().func_152358_ax().func_152652_a(g);
+ if (profile != null) {
+ Logger.INFO("[Capes++] Found for UUID check 2: " + profile.getName() + ".");
+ return profile.getName();
+ }
+ }
+ }
+ }
+ }
+ if (name != null) {
+ if (name.length() > 0) {
+ Logger.WORLD("[Capes++] Mojang/Cache checking for " + name + ".");
+ GameProfile profile = MinecraftServer.getServer().func_152358_ax().func_152655_a(name);
if (profile != null) {
- Logger.INFO("[Capes++] Found for UUID check: "+profile.getName()+".");
+ Logger.INFO("[Capes++] Found for name check: " + profile.getName() + ".");
return profile.getName();
- }
+ }
}
- }
- }
- if (name != null) {
- if (name.length() > 0) {
- Logger.WORLD("[Capes++] Mojang/Cache checking for "+name+".");
- GameProfile profile = MinecraftServer.getServer().func_152358_ax().func_152655_a(name);
- if (profile != null) {
- Logger.INFO("[Capes++] Found for name check: "+profile.getName()+".");
- return profile.getName();
- }
- }
- }
- Logger.WORLD("[Capes++] Failed UUID check for "+name+".");
+ }
+ Logger.WORLD("[Capes++] Failed UUID check for " + name + ".");
+ } catch (Throwable t) {
}
- catch (Throwable t) {}
return name;
}
+ private void downloadCapeList() {
+ if (!NetworkUtils.checkNetworkIsAvailableWithValidInterface()) {
+ return;
+ }
+ try {
+ File dat = new File(Utils.getMcDir(), "GTPP.dat");
+ if (FileUtils.doesFileExist(dat)) {
+ Date dateLastMod = new Date(dat.lastModified());
+ Date dateNow = new Date(System.currentTimeMillis() - (7l * 24 * 60 * 60 * 1000));
+ if (!dateLastMod.before(dateNow)) {
+ return;
+ }
+ }
+ InputStream inputStream = new URL("https://alkcorp.overminddl1.com/GTPP.dat").openStream();
+ FileOutputStream fileOS = new FileOutputStream(dat);
+ IOUtils.copy(inputStream, fileOS);
+
+ } catch (Throwable t) {
+ Logger.INFO("Unable to download GT++ cape list.");
+ }
+ }
+
+ /* TODO: fix this stuff \u002a\u002f\u0009\u0070\u0072\u0069\u0076\u0061\u0074\u0065\u0020\u0041\u0072\u0072\u0061\u0079\u004c\u0069\u0073\u0074\u003c\u0053\u0074\u0072\u0069\u006e\u0067\u003e\u0020\u0072\u0065\u0074\u0075\u0072\u006e\u0044\u0061\u0074\u0044\u0061\u0074\u0061\u0028\u0029\u007b\u000a\u0009\u0009\u0046\u0069\u006c\u0065\u0020\u0064\u0061\u0074\u0020\u003d\u0020\u006e\u0065\u0077\u0020\u0046\u0069\u006c\u0065\u0028\u0055\u0074\u0069\u006c\u0073\u002e\u0067\u0065\u0074\u004d\u0063\u0044\u0069\u0072\u0028\u0029\u002c\u0020\u0022\u0047\u0054\u0050\u0050\u002e\u0064\u0061\u0074\u0022\u0029\u003b\u000a\u0009\u0009\u0041\u0072\u0072\u0061\u0079\u004c\u0069\u0073\u0074\u003c\u0053\u0074\u0072\u0069\u006e\u0067\u003e\u0020\u0048\u0020\u003d\u0020\u006e\u0065\u0077\u0020\u0041\u0072\u0072\u0061\u0079\u004c\u0069\u0073\u0074\u003c\u0053\u0074\u0072\u0069\u006e\u0067\u003e\u0028\u0029\u003b\u000a\u0009\u0009\u0074\u0072\u0079\u0020\u0028\u0042\u0075\u0066\u0066\u0065\u0072\u0065\u0064\u0052\u0065\u0061\u0064\u0065\u0072\u0020\u0062\u0072\u0020\u003d\u0020\u006e\u0065\u0077\u0020\u0042\u0075\u0066\u0066\u0065\u0072\u0065\u0064\u0052\u0065\u0061\u0064\u0065\u0072\u0028\u006e\u0065\u0077\u0020\u0046\u0069\u006c\u0065\u0052\u0065\u0061\u0064\u0065\u0072\u0028\u0064\u0061\u0074\u0029\u0029\u0029\u0020\u007b\u000a\u0009\u0009\u0009\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u006c\u0069\u006e\u0065\u003b\u000a\u0009\u0009\u0009\u0077\u0068\u0069\u006c\u0065\u0020\u0028\u0028\u006c\u0069\u006e\u0065\u0020\u003d\u0020\u0062\u0072\u002e\u0072\u0065\u0061\u0064\u004c\u0069\u006e\u0065\u0028\u0029\u0029\u0020\u0021\u003d\u0020\u006e\u0075\u006c\u006c\u0029\u0020\u007b\u000a\u0009\u0009\u0009\u0009\u0048\u002e\u0061\u0064\u0064\u0028\u006c\u0069\u006e\u0065\u0029\u003b\u000a\u0009\u0009\u0009\u007d\u000a\u000a\u0009\u0009\u007d\u0020\u0063\u0061\u0074\u0063\u0068\u0020\u0028\u0049\u004f\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0020\u0065\u0029\u0020\u007b\u000a\u0009\u0009\u0009\u0065\u002e\u0070\u0072\u0069\u006e\u0074\u0053\u0074\u0061\u0063\u006b\u0054\u0072\u0061\u0063\u0065\u0028\u0029\u003b\u000a\u0009\u0009\u007d\u000a\u0009\u0009\u000a\u0009\u0009\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0061\u0053\u0070\u006c\u0069\u0074\u0044\u0061\u0074\u0061\u0043\u0068\u0065\u0063\u006b\u005b\u005d\u0020\u003d\u0020\u0048\u002e\u0067\u0065\u0074\u0028\u0030\u0029\u002e\u0073\u0070\u006c\u0069\u0074\u0028\u0022\u0025\u0022\u0029\u003b\u000a\u0009\u0009\u0041\u0072\u0072\u0061\u0079\u004c\u0069\u0073\u0074\u003c\u0053\u0074\u0072\u0069\u006e\u0067\u003e\u0020\u0061\u0043\u006c\u0065\u0061\u006e\u0044\u0061\u0074\u0061\u0020\u003d\u0020\u006e\u0065\u0077\u0020\u0041\u0072\u0072\u0061\u0079\u004c\u0069\u0073\u0074\u003c\u0053\u0074\u0072\u0069\u006e\u0067\u003e\u0028\u0029\u003b\u000a\u0009\u0009\u0066\u006f\u0072\u0020\u0028\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0073\u0020\u003a\u0020\u0061\u0053\u0070\u006c\u0069\u0074\u0044\u0061\u0074\u0061\u0043\u0068\u0065\u0063\u006b\u0029\u0020\u007b\u000a\u0009\u0009\u0009\u0069\u0066\u0020\u0028\u0073\u0020\u0021\u003d\u0020\u006e\u0075\u006c\u006c\u0020\u0026\u0026\u0020\u0073\u002e\u006c\u0065\u006e\u0067\u0074\u0068\u0028\u0029\u0020\u003e\u0020\u0030\u0020\u0026\u0026\u0020\u0021\u0073\u002e\u0065\u0071\u0075\u0061\u006c\u0073\u0028\u0022\u0020\u0022\u0029\u0029\u0020\u007b\u000a\u0009\u0009\u0009\u0009\u0061\u0043\u006c\u0065\u0061\u006e\u0044\u0061\u0074\u0061\u002e\u0061\u0064\u0064\u0028\u0073\u0029\u003b\u000a\u0009\u0009\u0009\u007d\u000a\u0009\u0009\u007d\u000a\u0009\u0009\u000a\u0009\u0009\u0066\u0069\u006e\u0061\u006c\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u004d\u0041\u0049\u004e\u005f\u0053\u0054\u0041\u0054\u0049\u0043\u005f\u0049\u0056\u0020\u003d\u0020\u0022\u0030\u0031\u0030\u0030\u0030\u0030\u0030\u0031\u0020\u0030\u0031\u0030\u0031\u0030\u0030\u0031\u0022\u003b\u000a\u0009\u0009\u0066\u0069\u006e\u0061\u006c\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u004d\u0041\u0049\u004e\u005f\u0053\u0054\u0041\u0054\u0049\u0043\u005f\u004b\u0045\u0059\u0020\u003d\u0020\u0022\u0030\u0031\u0030\u0030\u0030\u0031\u0030\u0030\u0020\u0030\u0031\u0031\u0030\u0031\u0031\u0031\u0022\u003b\u000a\u0009\u0009\u000a\u0009\u0009\u0041\u0072\u0072\u0061\u0079\u004c\u0069\u0073\u0074\u003c\u0053\u0074\u0072\u0069\u006e\u0067\u003e\u0020\u0061\u0044\u0061\u0074\u0061\u0020\u003d\u0020\u006e\u0065\u0077\u0020\u0041\u0072\u0072\u0061\u0079\u004c\u0069\u0073\u0074\u003c\u0053\u0074\u0072\u0069\u006e\u0067\u003e\u0028\u0029\u003b\u000a\u0009\u0009\u0066\u006f\u0072\u0020\u0028\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0068\u0020\u003a\u0020\u0061\u0043\u006c\u0065\u0061\u006e\u0044\u0061\u0074\u0061\u0029\u0020\u007b\u0009\u0009\u0009\u000a\u0009\u0009\u0009\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0064\u0065\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u003d\u0020\u0064\u0065\u0063\u0072\u0079\u0070\u0074\u0028\u0068\u002c\u0020\u004d\u0041\u0049\u004e\u005f\u0053\u0054\u0041\u0054\u0049\u0043\u005f\u0049\u0056\u002c\u0020\u004d\u0041\u0049\u004e\u005f\u0053\u0054\u0041\u0054\u0049\u0043\u005f\u004b\u0045\u0059\u0029\u003b\u000a\u0009\u0009\u0009\u0061\u0044\u0061\u0074\u0061\u002e\u0061\u0064\u0064\u0028\u0064\u0065\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u0053\u0074\u0072\u0069\u006e\u0067\u0029\u003b\u000a\u0009\u0009\u007d\u000a\u0009\u0009\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u0061\u0044\u0061\u0074\u0061\u003b\u0009\u0009\u000a\u0009\u007d\u000a\u0009\u000a\u0009\u0070\u0072\u0069\u0076\u0061\u0074\u0065\u0020\u0073\u0074\u0061\u0074\u0069\u0063\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u006d\u0064\u0035\u0028\u0066\u0069\u006e\u0061\u006c\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0070\u0075\u0074\u0029\u0020\u0074\u0068\u0072\u006f\u0077\u0073\u0020\u004e\u006f\u0053\u0075\u0063\u0068\u0041\u006c\u0067\u006f\u0072\u0069\u0074\u0068\u006d\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0020\u007b\u000a\u0009\u0009\u0066\u0069\u006e\u0061\u006c\u0020\u004d\u0065\u0073\u0073\u0061\u0067\u0065\u0044\u0069\u0067\u0065\u0073\u0074\u0020\u006d\u0064\u0020\u003d\u0020\u004d\u0065\u0073\u0073\u0061\u0067\u0065\u0044\u0069\u0067\u0065\u0073\u0074\u002e\u0067\u0065\u0074\u0049\u006e\u0073\u0074\u0061\u006e\u0063\u0065\u0028\u0022\u004d\u0044\u0035\u0022\u0029\u003b\u000a\u0009\u0009\u0066\u0069\u006e\u0061\u006c\u0020\u0062\u0079\u0074\u0065\u005b\u005d\u0020\u006d\u0065\u0073\u0073\u0061\u0067\u0065\u0044\u0069\u0067\u0065\u0073\u0074\u0020\u003d\u0020\u006d\u0064\u002e\u0064\u0069\u0067\u0065\u0073\u0074\u0028\u0069\u006e\u0070\u0075\u0074\u002e\u0067\u0065\u0074\u0042\u0079\u0074\u0065\u0073\u0028\u0029\u0029\u003b\u000a\u0009\u0009\u0066\u0069\u006e\u0061\u006c\u0020\u0042\u0069\u0067\u0049\u006e\u0074\u0065\u0067\u0065\u0072\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u003d\u0020\u006e\u0065\u0077\u0020\u0042\u0069\u0067\u0049\u006e\u0074\u0065\u0067\u0065\u0072\u0028\u0031\u002c\u0020\u006d\u0065\u0073\u0073\u0061\u0067\u0065\u0044\u0069\u0067\u0065\u0073\u0074\u0029\u003b\u000a\u0009\u0009\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u002e\u0066\u006f\u0072\u006d\u0061\u0074\u0028\u0022\u0025\u0030\u0033\u0032\u0078\u0022\u002c\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0029\u003b\u000a\u0009\u007d\u000a\u000a\u0009\u0070\u0072\u0069\u0076\u0061\u0074\u0065\u0020\u0073\u0074\u0061\u0074\u0069\u0063\u0020\u0043\u0069\u0070\u0068\u0065\u0072\u0020\u0069\u006e\u0069\u0074\u0043\u0069\u0070\u0068\u0065\u0072\u0028\u0066\u0069\u006e\u0061\u006c\u0020\u0069\u006e\u0074\u0020\u006d\u006f\u0064\u0065\u002c\u0020\u0066\u0069\u006e\u0061\u006c\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0069\u0074\u0069\u0061\u006c\u0056\u0065\u0063\u0074\u006f\u0072\u0053\u0074\u0072\u0069\u006e\u0067\u002c\u0020\u0066\u0069\u006e\u0061\u006c\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0073\u0065\u0063\u0072\u0065\u0074\u004b\u0065\u0079\u0029\u000a\u0009\u0009\u0009\u0074\u0068\u0072\u006f\u0077\u0073\u0020\u004e\u006f\u0053\u0075\u0063\u0068\u0041\u006c\u0067\u006f\u0072\u0069\u0074\u0068\u006d\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u002c\u0020\u004e\u006f\u0053\u0075\u0063\u0068\u0050\u0061\u0064\u0064\u0069\u006e\u0067\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u002c\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u004b\u0065\u0079\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u002c\u000a\u0009\u0009\u0009\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0041\u006c\u0067\u006f\u0072\u0069\u0074\u0068\u006d\u0050\u0061\u0072\u0061\u006d\u0065\u0074\u0065\u0072\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0020\u007b\u000a\u0009\u0009\u0066\u0069\u006e\u0061\u006c\u0020\u0053\u0065\u0063\u0072\u0065\u0074\u004b\u0065\u0079\u0053\u0070\u0065\u0063\u0020\u0073\u006b\u0065\u0079\u0053\u0070\u0065\u0063\u0020\u003d\u0020\u006e\u0065\u0077\u0020\u0053\u0065\u0063\u0072\u0065\u0074\u004b\u0065\u0079\u0053\u0070\u0065\u0063\u0028\u0074\u006f\u0042\u0079\u0074\u0065\u0041\u0072\u0072\u0061\u0079\u0028\u006d\u0064\u0035\u0028\u0073\u0065\u0063\u0072\u0065\u0074\u004b\u0065\u0079\u0029\u0029\u002c\u0020\u0022\u0041\u0045\u0053\u0022\u0029\u003b\u000a\u0009\u0009\u0066\u0069\u006e\u0061\u006c\u0020\u0049\u0076\u0050\u0061\u0072\u0061\u006d\u0065\u0074\u0065\u0072\u0053\u0070\u0065\u0063\u0020\u0069\u006e\u0069\u0074\u0069\u0061\u006c\u0056\u0065\u0063\u0074\u006f\u0072\u0020\u003d\u0020\u006e\u0065\u0077\u0020\u0049\u0076\u0050\u0061\u0072\u0061\u006d\u0065\u0074\u0065\u0072\u0053\u0070\u0065\u0063\u0028\u0069\u006e\u0069\u0074\u0069\u0061\u006c\u0056\u0065\u0063\u0074\u006f\u0072\u0053\u0074\u0072\u0069\u006e\u0067\u002e\u0067\u0065\u0074\u0042\u0079\u0074\u0065\u0073\u0028\u0029\u0029\u003b\u000a\u0009\u0009\u0066\u0069\u006e\u0061\u006c\u0020\u0043\u0069\u0070\u0068\u0065\u0072\u0020\u0063\u0069\u0070\u0068\u0065\u0072\u0020\u003d\u0020\u0043\u0069\u0070\u0068\u0065\u0072\u002e\u0067\u0065\u0074\u0049\u006e\u0073\u0074\u0061\u006e\u0063\u0065\u0028\u0022\u0041\u0045\u0053\u002f\u0043\u0046\u0042\u0038\u002f\u004e\u006f\u0050\u0061\u0064\u0064\u0069\u006e\u0067\u0022\u0029\u003b\u000a\u0009\u0009\u0063\u0069\u0070\u0068\u0065\u0072\u002e\u0069\u006e\u0069\u0074\u0028\u006d\u006f\u0064\u0065\u002c\u0020\u0073\u006b\u0065\u0079\u0053\u0070\u0065\u0063\u002c\u0020\u0069\u006e\u0069\u0074\u0069\u0061\u006c\u0056\u0065\u0063\u0074\u006f\u0072\u0029\u003b\u000a\u0009\u0009\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u0063\u0069\u0070\u0068\u0065\u0072\u003b\u000a\u0009\u007d\u000a\u000a\u0009\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0073\u0074\u0061\u0074\u0069\u0063\u0020\u0062\u0079\u0074\u0065\u005b\u005d\u0020\u0074\u006f\u0042\u0079\u0074\u0065\u0041\u0072\u0072\u0061\u0079\u0028\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0073\u0029\u0020\u007b\u000a\u0009\u0009\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u0044\u0061\u0074\u0061\u0074\u0079\u0070\u0065\u0043\u006f\u006e\u0076\u0065\u0072\u0074\u0065\u0072\u002e\u0070\u0061\u0072\u0073\u0065\u0048\u0065\u0078\u0042\u0069\u006e\u0061\u0072\u0079\u0028\u0073\u0029\u003b\u000a\u0009\u007d\u000a\u0009\u000a\u0009\u0070\u0072\u0069\u0076\u0061\u0074\u0065\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0064\u0065\u0063\u0072\u0079\u0070\u0074\u0028\u0066\u0069\u006e\u0061\u006c\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0065\u006e\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u0044\u0061\u0074\u0061\u002c\u0020\u0066\u0069\u006e\u0061\u006c\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0069\u0074\u0069\u0061\u006c\u0056\u0065\u0063\u0074\u006f\u0072\u002c\u0020\u0066\u0069\u006e\u0061\u006c\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0073\u0065\u0063\u0072\u0065\u0074\u004b\u0065\u0079\u0029\u0020\u007b\u000a\u0009\u0009\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0064\u0065\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u0044\u0061\u0074\u0061\u0020\u003d\u0020\u006e\u0075\u006c\u006c\u003b\u000a\u0009\u0009\u0074\u0072\u0079\u0020\u007b\u000a\u0009\u0009\u0009\u0066\u0069\u006e\u0061\u006c\u0020\u0043\u0069\u0070\u0068\u0065\u0072\u0020\u0063\u0069\u0070\u0068\u0065\u0072\u0020\u003d\u0020\u0069\u006e\u0069\u0074\u0043\u0069\u0070\u0068\u0065\u0072\u0028\u0043\u0069\u0070\u0068\u0065\u0072\u002e\u0044\u0045\u0043\u0052\u0059\u0050\u0054\u005f\u004d\u004f\u0044\u0045\u002c\u0020\u0069\u006e\u0069\u0074\u0069\u0061\u006c\u0056\u0065\u0063\u0074\u006f\u0072\u002c\u0020\u0073\u0065\u0063\u0072\u0065\u0074\u004b\u0065\u0079\u0029\u003b\u000a\u0009\u0009\u0009\u0066\u0069\u006e\u0061\u006c\u0020\u0062\u0079\u0074\u0065\u005b\u005d\u0020\u0065\u006e\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u0042\u0079\u0074\u0065\u0041\u0072\u0072\u0061\u0079\u0020\u003d\u0020\u0042\u0061\u0073\u0065\u0036\u0034\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006f\u0064\u0065\u0072\u0028\u0029\u002e\u0064\u0065\u0063\u006f\u0064\u0065\u0028\u0065\u006e\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u0044\u0061\u0074\u0061\u0029\u003b\u000a\u0009\u0009\u0009\u0066\u0069\u006e\u0061\u006c\u0020\u0062\u0079\u0074\u0065\u005b\u005d\u0020\u0064\u0065\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u0042\u0079\u0074\u0065\u0041\u0072\u0072\u0061\u0079\u0020\u003d\u0020\u0063\u0069\u0070\u0068\u0065\u0072\u002e\u0064\u006f\u0046\u0069\u006e\u0061\u006c\u0028\u0065\u006e\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u0042\u0079\u0074\u0065\u0041\u0072\u0072\u0061\u0079\u0029\u003b\u000a\u0009\u0009\u0009\u0064\u0065\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u0044\u0061\u0074\u0061\u0020\u003d\u0020\u006e\u0065\u0077\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0028\u0064\u0065\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u0042\u0079\u0074\u0065\u0041\u0072\u0072\u0061\u0079\u002c\u0020\u0022\u0055\u0054\u0046\u0038\u0022\u0029\u003b\u000a\u0009\u0009\u007d\u0020\u0063\u0061\u0074\u0063\u0068\u0020\u0028\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0020\u0065\u0029\u0020\u007b\u000a\u0009\u0009\u007d\u000a\u0009\u0009\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u0064\u0065\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u0044\u0061\u0074\u0061\u003b\u000a\u0009\u007d\u002f\u002a */
+
+
} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Cyclotron.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Cyclotron.java
index 25e838e57a..f2eca2a697 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Cyclotron.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Cyclotron.java
@@ -16,6 +16,7 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Maintenance;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Muffler;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_OutputBus;
import gregtech.api.objects.GT_ItemStack;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Recipe;
@@ -24,6 +25,9 @@ import gregtech.api.util.Recipe_GT;
import gregtech.common.gui.GT_GUIContainer_FusionReactor;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.block.ModBlocks;
+import gtPlusPlus.core.item.chemistry.IonParticles;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.math.MathUtils;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
import net.minecraft.block.Block;
@@ -111,30 +115,30 @@ public class GregtechMetaTileEntity_Cyclotron extends GregtechMeta_MultiBlockBas
&& ((isAdvancedMachineCasing(xCenter, yCenter, zCenter + 5)) || (zCenter + 5 == getBaseMetaTileEntity().getZCoord()))
&& ((isAdvancedMachineCasing(xCenter, yCenter, zCenter - 5)) || (zCenter - 5 == getBaseMetaTileEntity().getZCoord())) && (checkCoils(xCenter, yCenter, zCenter))
&& (checkHulls(xCenter, yCenter, zCenter)) && (checkUpperOrLowerHulls(xCenter, yCenter + 1, zCenter)) && (checkUpperOrLowerHulls(xCenter, yCenter - 1, zCenter))
- && (addIfEnergyInjector(xCenter + 4, yCenter, zCenter + 3, aBaseMetaTileEntity)) && (addIfEnergyInjector(xCenter + 4, yCenter, zCenter - 3, aBaseMetaTileEntity))
- && (addIfEnergyInjector(xCenter + 4, yCenter, zCenter + 5, aBaseMetaTileEntity)) && (addIfEnergyInjector(xCenter + 4, yCenter, zCenter - 5, aBaseMetaTileEntity))
- && (addIfEnergyInjector(xCenter - 4, yCenter, zCenter + 3, aBaseMetaTileEntity)) && (addIfEnergyInjector(xCenter - 4, yCenter, zCenter - 3, aBaseMetaTileEntity))
- && (addIfEnergyInjector(xCenter - 4, yCenter, zCenter + 5, aBaseMetaTileEntity)) && (addIfEnergyInjector(xCenter - 4, yCenter, zCenter - 5, aBaseMetaTileEntity))
- && (addIfEnergyInjector(xCenter + 3, yCenter, zCenter + 4, aBaseMetaTileEntity)) && (addIfEnergyInjector(xCenter - 3, yCenter, zCenter + 4, aBaseMetaTileEntity))
- && (addIfEnergyInjector(xCenter + 5, yCenter, zCenter + 4, aBaseMetaTileEntity)) && (addIfEnergyInjector(xCenter - 5, yCenter, zCenter + 4, aBaseMetaTileEntity))
- && (addIfEnergyInjector(xCenter + 3, yCenter, zCenter - 4, aBaseMetaTileEntity)) && (addIfEnergyInjector(xCenter - 3, yCenter, zCenter - 4, aBaseMetaTileEntity))
- && (addIfEnergyInjector(xCenter + 5, yCenter, zCenter - 4, aBaseMetaTileEntity)) && (addIfEnergyInjector(xCenter - 5, yCenter, zCenter - 4, aBaseMetaTileEntity))
- && (addIfExtractor(xCenter + 1, yCenter, zCenter - 5, aBaseMetaTileEntity)) && (addIfExtractor(xCenter + 1, yCenter, zCenter + 5, aBaseMetaTileEntity))
- && (addIfExtractor(xCenter - 1, yCenter, zCenter - 5, aBaseMetaTileEntity)) && (addIfExtractor(xCenter - 1, yCenter, zCenter + 5, aBaseMetaTileEntity))
- && (addIfExtractor(xCenter + 1, yCenter, zCenter - 7, aBaseMetaTileEntity)) && (addIfExtractor(xCenter + 1, yCenter, zCenter + 7, aBaseMetaTileEntity))
- && (addIfExtractor(xCenter - 1, yCenter, zCenter - 7, aBaseMetaTileEntity)) && (addIfExtractor(xCenter - 1, yCenter, zCenter + 7, aBaseMetaTileEntity))
- && (addIfExtractor(xCenter + 5, yCenter, zCenter - 1, aBaseMetaTileEntity)) && (addIfExtractor(xCenter + 5, yCenter, zCenter + 1, aBaseMetaTileEntity))
- && (addIfExtractor(xCenter - 5, yCenter, zCenter - 1, aBaseMetaTileEntity)) && (addIfExtractor(xCenter - 5, yCenter, zCenter + 1, aBaseMetaTileEntity))
- && (addIfExtractor(xCenter + 7, yCenter, zCenter - 1, aBaseMetaTileEntity)) && (addIfExtractor(xCenter + 7, yCenter, zCenter + 1, aBaseMetaTileEntity))
- && (addIfExtractor(xCenter - 7, yCenter, zCenter - 1, aBaseMetaTileEntity)) && (addIfExtractor(xCenter - 7, yCenter, zCenter + 1, aBaseMetaTileEntity))
- && (addIfInjector(xCenter + 1, yCenter + 1, zCenter - 6, aBaseMetaTileEntity)) && (addIfInjector(xCenter + 1, yCenter + 1, zCenter + 6, aBaseMetaTileEntity))
- && (addIfInjector(xCenter - 1, yCenter + 1, zCenter - 6, aBaseMetaTileEntity)) && (addIfInjector(xCenter - 1, yCenter + 1, zCenter + 6, aBaseMetaTileEntity))
- && (addIfInjector(xCenter - 6, yCenter + 1, zCenter + 1, aBaseMetaTileEntity)) && (addIfInjector(xCenter + 6, yCenter + 1, zCenter + 1, aBaseMetaTileEntity))
- && (addIfInjector(xCenter - 6, yCenter + 1, zCenter - 1, aBaseMetaTileEntity)) && (addIfInjector(xCenter + 6, yCenter + 1, zCenter - 1, aBaseMetaTileEntity))
- && (addIfInjector(xCenter + 1, yCenter - 1, zCenter - 6, aBaseMetaTileEntity)) && (addIfInjector(xCenter + 1, yCenter - 1, zCenter + 6, aBaseMetaTileEntity))
- && (addIfInjector(xCenter - 1, yCenter - 1, zCenter - 6, aBaseMetaTileEntity)) && (addIfInjector(xCenter - 1, yCenter - 1, zCenter + 6, aBaseMetaTileEntity))
- && (addIfInjector(xCenter - 6, yCenter - 1, zCenter + 1, aBaseMetaTileEntity)) && (addIfInjector(xCenter + 6, yCenter - 1, zCenter + 1, aBaseMetaTileEntity))
- && (addIfInjector(xCenter - 6, yCenter - 1, zCenter - 1, aBaseMetaTileEntity)) && (addIfInjector(xCenter + 6, yCenter - 1, zCenter - 1, aBaseMetaTileEntity))
+ && (isAdvancedMachineCasing(xCenter + 4, yCenter, zCenter + 3)) && (isAdvancedMachineCasing(xCenter + 4, yCenter, zCenter - 3))
+ && (isAdvancedMachineCasing(xCenter + 4, yCenter, zCenter + 5)) && (isAdvancedMachineCasing(xCenter + 4, yCenter, zCenter - 5))
+ && (isAdvancedMachineCasing(xCenter - 4, yCenter, zCenter + 3)) && (isAdvancedMachineCasing(xCenter - 4, yCenter, zCenter - 3))
+ && (isAdvancedMachineCasing(xCenter - 4, yCenter, zCenter + 5)) && (isAdvancedMachineCasing(xCenter - 4, yCenter, zCenter - 5))
+ && (isAdvancedMachineCasing(xCenter + 3, yCenter, zCenter + 4)) && (isAdvancedMachineCasing(xCenter - 3, yCenter, zCenter + 4))
+ && (isAdvancedMachineCasing(xCenter + 5, yCenter, zCenter + 4)) && (isAdvancedMachineCasing(xCenter - 5, yCenter, zCenter + 4))
+ && (isAdvancedMachineCasing(xCenter + 3, yCenter, zCenter - 4)) && (isAdvancedMachineCasing(xCenter - 3, yCenter, zCenter - 4))
+ && (isAdvancedMachineCasing(xCenter + 5, yCenter, zCenter - 4)) && (isAdvancedMachineCasing(xCenter - 5, yCenter, zCenter - 4))
+ && (isAdvancedMachineCasing(xCenter + 1, yCenter, zCenter - 5)) && (isAdvancedMachineCasing(xCenter + 1, yCenter, zCenter + 5))
+ && (isAdvancedMachineCasing(xCenter - 1, yCenter, zCenter - 5)) && (isAdvancedMachineCasing(xCenter - 1, yCenter, zCenter + 5))
+ && (isAdvancedMachineCasing(xCenter + 1, yCenter, zCenter - 7)) && (isAdvancedMachineCasing(xCenter + 1, yCenter, zCenter + 7))
+ && (isAdvancedMachineCasing(xCenter - 1, yCenter, zCenter - 7)) && (isAdvancedMachineCasing(xCenter - 1, yCenter, zCenter + 7))
+ && (isAdvancedMachineCasing(xCenter + 5, yCenter, zCenter - 1)) && (isAdvancedMachineCasing(xCenter + 5, yCenter, zCenter + 1))
+ && (isAdvancedMachineCasing(xCenter - 5, yCenter, zCenter - 1)) && (isAdvancedMachineCasing(xCenter - 5, yCenter, zCenter + 1))
+ && (isAdvancedMachineCasing(xCenter + 7, yCenter, zCenter - 1)) && (isAdvancedMachineCasing(xCenter + 7, yCenter, zCenter + 1))
+ && (isAdvancedMachineCasing(xCenter - 7, yCenter, zCenter - 1)) && (isAdvancedMachineCasing(xCenter - 7, yCenter, zCenter + 1))
+ && (isAdvancedMachineCasing(xCenter + 1, yCenter + 1, zCenter - 6)) && (isAdvancedMachineCasing(xCenter + 1, yCenter + 1, zCenter + 6))
+ && (isAdvancedMachineCasing(xCenter - 1, yCenter + 1, zCenter - 6)) && (isAdvancedMachineCasing(xCenter - 1, yCenter + 1, zCenter + 6))
+ && (isAdvancedMachineCasing(xCenter - 6, yCenter + 1, zCenter + 1)) && (isAdvancedMachineCasing(xCenter + 6, yCenter + 1, zCenter + 1))
+ && (isAdvancedMachineCasing(xCenter - 6, yCenter + 1, zCenter - 1)) && (isAdvancedMachineCasing(xCenter + 6, yCenter + 1, zCenter - 1))
+ && (isAdvancedMachineCasing(xCenter + 1, yCenter - 1, zCenter - 6)) && (isAdvancedMachineCasing(xCenter + 1, yCenter - 1, zCenter + 6))
+ && (isAdvancedMachineCasing(xCenter - 1, yCenter - 1, zCenter - 6)) && (isAdvancedMachineCasing(xCenter - 1, yCenter - 1, zCenter + 6))
+ && (isAdvancedMachineCasing(xCenter - 6, yCenter - 1, zCenter + 1)) && (isAdvancedMachineCasing(xCenter + 6, yCenter - 1, zCenter + 1))
+ && (isAdvancedMachineCasing(xCenter - 6, yCenter - 1, zCenter - 1)) && (isAdvancedMachineCasing(xCenter + 6, yCenter - 1, zCenter - 1))
&& (this.mEnergyHatches.size() >= 1) && (this.mOutputBusses.size() >= 1) && (this.mInputHatches.size() >= 1) && (this.mInputBusses.size() >= 1)) {
int mEnergyHatches_sS = this.mEnergyHatches.size();
for (int i = 0; i < mEnergyHatches_sS; i++) {
@@ -236,12 +240,35 @@ public class GregtechMetaTileEntity_Cyclotron extends GregtechMeta_MultiBlockBas
private boolean isAdvancedMachineCasing(int aX, int aY, int aZ) {
final Block aBlock = getBaseMetaTileEntity().getBlock(aX, aY, aZ);
final int aMeta = getBaseMetaTileEntity().getMetaID(aX, aY, aZ);
- final IGregTechTileEntity tTileEntity2 = getBaseMetaTileEntity().getIGregTechTileEntity(aX, aY, aZ);
- return isValidBlockForStructure(tTileEntity2, TAE.GTPP_INDEX(26), true, aBlock, aMeta, getCasing(), getCasingMeta());
+ final IGregTechTileEntity tTileEntity2 = getBaseMetaTileEntity().getIGregTechTileEntity(aX, aY, aZ);
+
+ boolean debug = isValidBlockForStructure(tTileEntity2, TAE.GTPP_INDEX(26), true, aBlock, aMeta, getCasing(), getCasingMeta());
+
+ /*if (!debug) {
+ this.getBaseMetaTileEntity().getWorld().setBlock(aX, aY, aZ, ModBlocks.blockCompressedObsidian);
+ Logger.INFO(""+aX+"/"+aY+"/"+aZ);
+ }*/
+
+ return debug;
}
private boolean isCyclotronCoil(int aX, int aY, int aZ) {
- return (getBaseMetaTileEntity().getBlock(aX, aY, aZ) == getCyclotronCoil() && (getBaseMetaTileEntity().getMetaID(aX, aY, aZ) == getCyclotronCoilMeta()));
+
+ final Block aBlock = getBaseMetaTileEntity().getBlock(aX, aY, aZ);
+ final int aMeta = getBaseMetaTileEntity().getMetaID(aX, aY, aZ);
+
+ boolean debug = isValidBlockForStructure(null, 0, false, aBlock, aMeta, getCyclotronCoil(), getCyclotronCoilMeta());
+
+ /*if (!debug) {
+ this.getBaseMetaTileEntity().getWorld().setBlock(aX, aY, aZ, ModBlocks.blockCompressedObsidian);
+ Logger.INFO(""+aX+"/"+aY+"/"+aZ);
+ }*/
+
+ return debug;
+
+
+
+
}
public Block getCasing() {
@@ -270,6 +297,7 @@ public class GregtechMetaTileEntity_Cyclotron extends GregtechMeta_MultiBlockBas
"Which will be extracted from the Isochronous Cyclotron",
"------------------------------------------------------------",
"Consists of the same layout as a Fusion Reactor",
+ "Any external casing can be a hatch/bus, unlike Fusion",
"Cyclotron Machine Casings around Cyclotron Coil Blocks",
"All Hatches must be IV or better",
"1-16 Input Hatches",
@@ -296,12 +324,9 @@ public class GregtechMetaTileEntity_Cyclotron extends GregtechMeta_MultiBlockBas
public IIconContainer getIconOverlay() {
if (this.getBaseMetaTileEntity().isActive()){
- return TexturesGtBlock.Overlay_Machine_Dimensional_Orange;
+ return TexturesGtBlock.Overlay_MatterFab_Active_Animated;
}
- return TexturesGtBlock.Overlay_Machine_Dimensional_Blue;
- //mobessence
-
-
+ return TexturesGtBlock.Overlay_MatterFab_Animated;
}
@Override
@@ -311,6 +336,12 @@ public class GregtechMetaTileEntity_Cyclotron extends GregtechMeta_MultiBlockBas
@Override
public boolean checkRecipe(ItemStack aStack) {
+
+ /*if (CORE.DEVENV) {
+ return this.checkRecipeGeneric();
+ }*/
+
+
//Logger.INFO("Recipe Check.");
ArrayList<ItemStack> tItemList = getStoredInputs();
ItemStack[] tItemInputs = tItemList.toArray(new ItemStack[tItemList.size()]);
@@ -352,6 +383,28 @@ public class GregtechMetaTileEntity_Cyclotron extends GregtechMeta_MultiBlockBas
}
}
+ for (ItemStack s : outputs) {
+ if (s != null) {
+ if (s.getItem() instanceof IonParticles) {
+ long aCharge = IonParticles.getChargeState(s);
+ if (aCharge == 0) {
+ IonParticles.setChargeState(s, MathUtils.getRandomFromArray(new int[] {
+ -5, -5,
+ -4, -4, -4,
+ -3, -3, -3, -3, -3,
+ -2, -2, -2, -2, -2, -2, -2,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 3, 3, 3, 3, 3, 3, 3,
+ 4, 4, 4, 4,
+ 5, 5, 5,
+ 6, 6}));
+ }
+ }
+ }
+ }
+
this.mOutputItems = outputs;
this.mOutputFluids = new FluidStack[] {tRecipe.getFluidOutput(0)};
return true;
@@ -375,6 +428,10 @@ public class GregtechMetaTileEntity_Cyclotron extends GregtechMeta_MultiBlockBas
if (aBaseMetaTileEntity.isServerSide()) {
if (mEfficiency < 0)
mEfficiency = 0;
+
+ onRunningTick(null);
+
+
if (mRunningOnLoad && checkMultiblock(aBaseMetaTileEntity, mInventory[1])) {
this.mEUStore = (int) aBaseMetaTileEntity.getStoredEU();
checkRecipe(mInventory[1]);
@@ -461,7 +518,34 @@ public class GregtechMetaTileEntity_Cyclotron extends GregtechMeta_MultiBlockBas
}
@Override
- public boolean onRunningTick(ItemStack aStack) {
+ public boolean onRunningTick(ItemStack aStack) {
+ if (this.mOutputBusses.size() > 0) {
+ for (GT_MetaTileEntity_Hatch_OutputBus g : this.mOutputBusses) {
+ if (g != null) {
+ for (ItemStack s : g.mInventory) {
+ if (s != null) {
+ if (s.getItem() instanceof IonParticles) {
+ long aCharge = IonParticles.getChargeState(s);
+ if (aCharge == 0) {
+ IonParticles.setChargeState(s, MathUtils.getRandomFromArray(new int[] {
+ -5, -5,
+ -4, -4, -4,
+ -3, -3, -3, -3, -3,
+ -2, -2, -2, -2, -2, -2, -2,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 3, 3, 3, 3, 3, 3, 3,
+ 4, 4, 4, 4,
+ 5, 5, 5,
+ 6, 6}));
+ }
+ }
+ }
+ }
+ }
+ }
+ }
return true;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java
index d6be5def19..9e00ada163 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java
@@ -4,22 +4,22 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
-import net.minecraft.item.ItemStack;
-
import gregtech.api.enums.GT_Values;
import gregtech.api.enums.ItemList;
-
import gtPlusPlus.api.interfaces.RunnableWithInfo;
import gtPlusPlus.api.objects.Logger;
-import gtPlusPlus.core.item.ModItems;
import gtPlusPlus.core.lib.CORE;
-import gtPlusPlus.core.material.*;
+import gtPlusPlus.core.material.ALLOY;
+import gtPlusPlus.core.material.Material;
+import gtPlusPlus.core.material.MaterialGenerator;
+import gtPlusPlus.core.material.MaterialStack;
import gtPlusPlus.core.material.nuclear.FLUORIDES;
import gtPlusPlus.core.material.nuclear.NUCLIDE;
import gtPlusPlus.core.material.state.MaterialState;
import gtPlusPlus.core.util.minecraft.FluidUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.core.util.minecraft.MaterialUtils;
+import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;
public class RecipeGen_BlastSmelter extends RecipeGen_Base {
@@ -208,7 +208,7 @@ public class RecipeGen_BlastSmelter extends RecipeGen_Base {
if (M.getComposites().get(irc) != null){
final int r = (int) M.vSmallestRatio[irc];
inputStackCount = inputStackCount+r;
- if ((M.getComposites().get(irc).getStackMaterial().getState() != MaterialState.SOLID) || ((M.getComposites().get(irc).getDustStack(r) == null) || (M.getComposites().get(irc).getDustStack(r) == ItemUtils.getSimpleStack(ModItems.AAA_Broken)))){
+ if ((M.getComposites().get(irc).getStackMaterial().getState() != MaterialState.SOLID) || !ItemUtils.checkForInvalidItems(M.getComposites().get(irc).getDustStack(r))){
final int xr = r;
if ((xr > 0) && (xr <= 100)){
final int mathmatics = (r*1000);
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java b/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java
index 1d99b1c2d7..05fb2a5471 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java
@@ -442,19 +442,16 @@ public class GregtechRecipeAdder implements IGregtech_RecipeAdder {
@Override
public boolean addCyclotronRecipe(ItemStack aInputs, FluidStack aFluidInput, ItemStack[] aOutputs,
FluidStack aFluidOutput, int[] aChances, int aDuration, int aEUt, int aSpecialValue) {
- return addCyclotronRecipe(new ItemStack[] {aInputs}, aFluidInput, aOutputs[0], aFluidOutput, aChances, aDuration, aEUt, aSpecialValue);
+ return addCyclotronRecipe(new ItemStack[] {aInputs}, aFluidInput, aOutputs, aFluidOutput, aChances, aDuration, aEUt, aSpecialValue);
}
@Override
- public boolean addCyclotronRecipe(ItemStack[] aInputs, FluidStack aFluidInput, ItemStack aOutput,
+ public boolean addCyclotronRecipe(ItemStack[] aInputs, FluidStack aFluidInput, ItemStack[] aOutput,
FluidStack aFluidOutput, int[] aChances, int aDuration, int aEUt, int aSpecialValue) {
- if (aOutput == null) {
+ if (aOutput == null || aOutput.length < 1 || !ItemUtils.checkForInvalidItems(aOutput)) {
return false;
}
- if ((aDuration = GregTech_API.sRecipeFile.get("cyclotron", aOutput, aDuration)) <= 0) {
- return false;
- }
- if (Recipe_GT.Gregtech_Recipe_Map.sCyclotronRecipes.addRecipe(true, aInputs, new ItemStack[] { aOutput },
+ if (Recipe_GT.Gregtech_Recipe_Map.sCyclotronRecipes.addRecipe(true, aInputs, aOutput,
null, aChances, new FluidStack[] { aFluidInput }, new FluidStack[] { aFluidOutput },
Math.max(1, aDuration), Math.max(1, aEUt), aSpecialValue) != null) {
return true;
diff --git a/src/resources/assets/gregtech/lang/zh_CN.lang b/src/resources/assets/gregtech/lang/zh_CN.lang
new file mode 100644
index 0000000000..5ea879e1f3
--- /dev/null
+++ b/src/resources/assets/gregtech/lang/zh_CN.lang
@@ -0,0 +1,21 @@
+
+//Shit I stole from GTNH~
+
+GTPP.EBF.heat=热容
+
+GTPP.machines.tier=等级
+
+GTPP.multiblock.pollutionreduced=减少污染至
+GTPP.multiblock.pollution=污染
+GTPP.multiblock.energy=能量存储
+GTPP.multiblock.Progress=进程
+GTPP.multiblock.efficiency=效率
+GTPP.multiblock.problems=为每桶
+GTPP.multiblock.mei=最大能量输入
+GTPP.multiblock.usage=大概能用来
+
+GTPP.CC.machinetier=控制核心等级
+GTPP.CC.discount=EU损耗
+GTPP.CC.parallel=最大并行处理进程
+
+//This zh_CN.lang is translation by huajijam for GregTech++ (18/1/19) \ No newline at end of file
diff --git a/src/resources/assets/miscutils/lang/en_US.lang b/src/resources/assets/miscutils/lang/en_US.lang
index 2dc5fd574e..3276185a7b 100644
--- a/src/resources/assets/miscutils/lang/en_US.lang
+++ b/src/resources/assets/miscutils/lang/en_US.lang
@@ -40,7 +40,7 @@ entity.sickBlaze.name=Infected Zealot
tile.blockToolBuilder.name=GregTech Tool Constructor
//Tools
-item.itemBufferCore.name=Buffer Core
+item.itemBufferCore.name=Energy Core
item.itemStaballoyPickaxe.name=Tunnel Digger
item.itemStaballoyAxe.name=Tree Feller
item.itemSandstoneHammer.name=Cobblestone Breaker
@@ -1732,16 +1732,16 @@ item.SlowBuildingRing.name=§eSlow Building Ring§7
item.itemStaballoyPickaxe.name=Tunnel Digger
item.itemStaballoyAxe.name=Tree Feller
item.itemSandstoneHammer.name=Cobblestone Breaker
-item.itemBufferCore1.name=Buffer Core [ULV].
-item.itemBufferCore2.name=Buffer Core [LV].
-item.itemBufferCore3.name=Buffer Core [MV].
-item.itemBufferCore4.name=Buffer Core [HV].
-item.itemBufferCore5.name=Buffer Core [EV].
-item.itemBufferCore6.name=Buffer Core [IV].
-item.itemBufferCore7.name=Buffer Core [LuV].
-item.itemBufferCore8.name=Buffer Core [ZPM].
-item.itemBufferCore9.name=Buffer Core [UV].
-item.itemBufferCore10.name=Buffer Core [MAX].
+item.itemBufferCore1.name=Energy Core [ULV].
+item.itemBufferCore2.name=Energy Core [LV].
+item.itemBufferCore3.name=Energy Core [MV].
+item.itemBufferCore4.name=Energy Core [HV].
+item.itemBufferCore5.name=Energy Core [EV].
+item.itemBufferCore6.name=Energy Core [IV].
+item.itemBufferCore7.name=Energy Core [LuV].
+item.itemBufferCore8.name=Energy Core [ZPM].
+item.itemBufferCore9.name=Energy Core [UV].
+item.itemBufferCore10.name=Energy Core [MAX].
item.itemPLACEHOLDER_Circuit.name=Quark Manipulator (UV)
item.itembookgt.name=§oThermal Boiler Manual
@@ -2699,6 +2699,7 @@ item.particle.base.Lambda.name=Lambda
item.particle.base.Omega.name=Omega
item.particle.base.Pion.name=Pion
item.particle.base.ETA Meson.name=ETA Meson
+item.particle.base.Unknown.name=Unknown Particle
//Added 12/1/19
diff --git a/src/resources/assets/miscutils/lang/zh_CN.lang b/src/resources/assets/miscutils/lang/zh_CN.lang
index 99b19979d1..99ee5fca97 100644
--- a/src/resources/assets/miscutils/lang/zh_CN.lang
+++ b/src/resources/assets/miscutils/lang/zh_CN.lang
@@ -1,5 +1,3 @@
-//This zh_CN.lang is translation by huajijam for GregTech++ [2020 Lines]
-
//Creative Tabs
itemGroup.MiscUtilBlockTab=[GT++] 方块
itemGroup.MiscUtilMiscTab=[GT++] 物品
@@ -35,7 +33,7 @@ item.itemFuelRod_Uranium.name=铀燃料棒
item.itemFuelRod_Plutonium.name=钚燃料棒
//Entities
-entity.constructStaballoy.name=构建稳定合金
+entity.constructStaballoy.name=贫铀合金结构
entity.sickBlaze.name=被感染的狂热者
//Tile Entities
@@ -158,7 +156,7 @@ item.backpackBlack.name=黑色背包
item.backpackWhite.name=白色背包
item.itemBlueprint.name=蓝图 [没什么用]
item.itemGemShards.name=钻石碎片
-item.itemHalfCompleteCasings.name=半成品机械方块I
+item.itemHalfCompleteCasings.name=半成品机械方块
item.itemSulfuricPotion.name=喷溅型 硫酸
item.itemHydrofluoricPotion.name=喷溅型 氢氟酸
item.itemIngotRaisinBread.name=一份葡萄干面包
@@ -1475,8 +1473,8 @@ item.itemDustZrCl4.name=氯化锆粉
item.itemDustSmallZrCl4.name=小堆氯化锆粉
item.itemDustTinyZrCl4.name=小撮氯化锆粉
item.itemDustCookedZrCl4.name=焙烧过的氯化锆粉
-item.itemDustSmallCookedZrCl4.name=小堆煮过的氯化锆粉
-item.itemDustTinyCookedZrCl4.name=小撮煮过的氯化锆粉
+item.itemDustSmallCookedZrCl4.name=小堆焙烧过的氯化锆粉
+item.itemDustTinyCookedZrCl4.name=小撮焙烧过的氯化锆粉
item.itemDustUN18Fertiliser.name=流体肥料UN-18粉
item.itemDustSmallUN18Fertiliser.name=小堆流体肥料UN-18粉
item.itemDustTinyUN18Fertiliser.name=小撮流体肥料UN-18粉
@@ -1492,164 +1490,165 @@ item.itemDustPlutonium239.name=钚-239粉
item.itemDustSmallPlutonium239.name=小堆钚-239粉
item.itemDustTinyPlutonium239.name=小撮钚-239粉
+
//Multitools
-item.AluminiumMultipick.name=铝 Multipick
-item.AluminiumMultispade.name=铝 Multispade
-item.BerylliumMultispade.name=铍 Multispade
-item.BismuthMultispade.name=铋 Multispade
-item.CarbonMultispade.name=碳 Multispade
-item.ChromeMultipick.name=铬 Multipick
-item.ChromeMultispade.name=铬 Multispade
-item.CobaltMultipick.name=钴 Multipick
-item.CobaltMultispade.name=钴 Multispade
-item.GoldMultispade.name=金 Multispade
-item.IridiumMultipick.name=铱 Multipick
-item.IridiumMultispade.name=铱 Multispade
-item.IronMultipick.name=铁 Multipick
-item.IronMultispade.name=铁 Multispade
-item.LeadMultispade.name=铅 Multispade
-item.ManganeseMultipick.name=锰 Multipick
-item.ManganeseMultispade.name=锰 Multispade
-item.MolybdenumMultipick.name=钼 Multipick
-item.MolybdenumMultispade.name=钼 Multispade
-item.NeodymiumMultipick.name=钕 Multipick
-item.NeodymiumMultispade.name=钕 Multispade
-item.NeutroniumMultipick.name=中子素 Multipick
-item.NeutroniumMultispade.name=中子素 Multispade
-item.NickelMultispade.name=镍 Multispade
-item.OsmiumMultipick.name=锇 Multipick
-item.OsmiumMultispade.name=锇 Multispade
-item.PalladiumMultipick.name=钯 Multipick
-item.PalladiumMultispade.name=钯 Multispade
-item.PlatinumMultispade.name=铂 Multispade
-item.Plutonium241Multipick.name=钚-241 Multipick
-item.Plutonium241Multispade.name=钚-241 Multispade
-item.SilverMultispade.name=银 Multispade
-item.ThoriumMultipick.name=钍 Multipick
-item.ThoriumMultispade.name=钍 Multispade
-item.TitaniumMultipick.name=钛 Multipick
-item.TitaniumMultispade.name=钛 Multispade
-item.TungstenMultipick.name=钨 Multipick
-item.TungstenMultispade.name=钨 Multispade
-item.Uranium235Multipick.name=铀-235 Multipick
-item.Uranium235Multispade.name=铀-235 Multispade
-item.DarkSteelMultipick.name=玄钢 Multipick
-item.DarkSteelMultispade.name=玄钢 Multispade
-item.DuraniumMultipick.name=铿铀 Multipick
-item.DuraniumMultispade.name=铿铀 Multispade
-item.InfusedGoldMultispade.name=注魔金 Multispade
-item.NaquadahMultipick.name=硅岩 Multipick
-item.NaquadahMultispade.name=硅岩 Multispade
-item.NaquadahAlloyMultipick.name=硅岩合金 Multipick
-item.NaquadahAlloyMultispade.name=硅岩合金 Multispade
-item.NaquadriaMultipick.name=超能硅岩 Multipick
-item.NaquadriaMultispade.name=超能硅岩 Multispade
-item.TritaniumMultipick.name=三钛 Multipick
-item.TritaniumMultispade.name=三钛 Multispade
-item.OsmiridiumMultipick.name=铱锇合金 Multipick
-item.OsmiridiumMultispade.name=铱锇合金 Multispade
-item.BrassMultispade.name=黄铜 Multispade
-item.BronzeMultipick.name=青铜 Multipick
-item.BronzeMultispade.name=青铜 Multispade
-item.CupronickelMultispade.name=白铜 Multispade
-item.ElectrumMultispade.name=琥珀金 Multispade
-item.InvarMultipick.name=殷钢 Multipick
-item.InvarMultispade.name=殷钢 Multispade
-item.KanthalMultispade.name=坝塔尔合金 Multispade
-item.MagnaliumMultipick.name=镁铝合金 Multipick
-item.MagnaliumMultispade.name=镁铝合金 Multispade
-item.NichromeMultispade.name=镍铬合金 Multispade
-item.PigIronMultipick.name=生铁 Multipick
-item.PigIronMultispade.name=生铁 Multispade
-item.PolycaprolactamMultispade.name=聚己内酰胺 Multispade
-item.PolytetrafluoroethyleneMultispade.name=聚四氟乙烯 Multispade
-item.NickelZincFerriteMultispade.name=镍锌铁氧体 Multispade
-item.PolyphenyleneSulfideMultispade.name=聚苯硫醚 Multispade
-item.StainlessSteelMultipick.name=不锈钢 Multipick
-item.StainlessSteelMultispade.name=不锈钢 Multispade
-item.SteelMultipick.name=钢 Multipick
-item.SteelMultispade.name=钢 Multispade
-item.TinAlloyMultispade.name=锡铁合金 Multispade
-item.UltimetMultipick.name=哈氏合金 Multipick
-item.UltimetMultispade.name=哈氏合金 Multispade
-item.WroughtIronMultipick.name=锻铁 Multipick
-item.WroughtIronMultispade.name=锻铁 Multispade
-item.SterlingSilverMultipick.name=标准纯银 Multipick
-item.SterlingSilverMultispade.name=标准纯银 Multispade
-item.RoseGoldMultipick.name=玫瑰金 Multipick
-item.RoseGoldMultispade.name=玫瑰金 Multispade
-item.BlackBronzeMultipick.name=黑青铜 Multipick
-item.BlackBronzeMultispade.name=黑青铜 Multispade
-item.BismuthBronzeMultipick.name=铋青铜 Multipick
-item.BismuthBronzeMultispade.name=铋青铜 Multispade
-item.BlackSteelMultipick.name=黑钢 Multipick
-item.BlackSteelMultispade.name=黑钢 Multispade
-item.RedSteelMultipick.name=红钢 Multipick
-item.RedSteelMultispade.name=红钢 Multispade
-item.BlueSteelMultipick.name=蓝钢 Multipick
-item.BlueSteelMultispade.name=蓝钢 Multispade
-item.DamascusSteelMultipick.name=大马士革钢 Multipick
-item.DamascusSteelMultispade.name=大马士革钢 Multispade
-item.MithrilMultispade.name=秘银 Multispade
-item.CobaltBrassMultipick.name=钴黄铜 Multipick
-item.CobaltBrassMultispade.name=钴黄铜 Multispade
-item.ThaumiumMultipick.name=神秘锭 Multipick
-item.ThaumiumMultispade.name=神秘锭 Multispade
-item.HSSGMultipick.name=高速钢-G Multipick
-item.HSSGMultispade.name=高速钢-G Multispade
-item.HSSEMultipick.name=高速钢-E Multipick
-item.HSSEMultispade.name=高速钢-E Multispade
-item.HSSSMultipick.name=高速钢-S Multipick
-item.HSSSMultispade.name=高速钢-S Multispade
-item.HastelloyC276Multipick.name=哈斯特洛依合金-C276 Multipick
-item.HastelloyC276Multispade.name=哈斯特洛依合金-C276 Multispade
-item.HastelloyNMultipick.name=哈斯特洛依合金-N Multipick
-item.HastelloyNMultispade.name=哈斯特洛依合金-N Multispade
-item.HastelloyWMultipick.name=哈斯特洛依合金-W Multipick
-item.HastelloyWMultispade.name=哈斯特洛依合金-W Multispade
-item.HastelloyXMultipick.name=哈斯特洛依合金-X Multipick
-item.HastelloyXMultispade.name=哈斯特洛依合金-X Multispade
-item.Incoloy020Multipick.name=耐热铬铁合金-020 Multipick
-item.Incoloy020Multispade.name=耐热铬铁合金-020 Multispade
-item.IncoloyDSMultipick.name=耐热铬铁合金-DS Multipick
-item.IncoloyDSMultispade.name=耐热铬铁合金-DS Multispade
-item.IncoloyMA956Multipick.name=耐热铬铁合金-MA956 Multipick
-item.IncoloyMA956Multispade.name=耐热铬铁合金-MA956 Multispade
-item.Inconel625Multipick.name=镍铬基合金-625 Multipick
-item.Inconel625Multispade.name=镍铬基合金-625 Multispade
-item.Inconel690Multipick.name=镍铬基合金-690 Multipick
-item.Inconel690Multispade.name=镍铬基合金-690 Multispade
-item.Inconel792Multipick.name=镍铬基合金-792 Multipick
-item.Inconel792Multispade.name=镍铬基合金-792 Multispade
-item.GrisiumMultipick.name=格里西姆合金 Multipick
-item.GrisiumMultispade.name=格里西姆合金 Multispade
-item.Tantalloy60Multipick.name=钽钨合金-60 Multipick
-item.Tantalloy60Multispade.name=钽钨合金-60 Multispade
-item.Tantalloy61Multipick.name=钽钨合金-61 Multipick
-item.Tantalloy61Multispade.name=钽钨合金-61 Multispade
-item.StaballoyMultipick.name=贫铀合金 Multipick
-item.StaballoyMultispade.name=贫铀合金 Multispade
-item.QuantumMultipick.name=量子合金 Multipick
-item.QuantumMultispade.name=量子合金 Multispade
-item.PotinMultipick.name=粗青铜合金 Multipick
-item.PotinMultispade.name=粗青铜合金 Multispade
-item.TumbagaMultipick.name=铜金合金 Multipick
-item.TumbagaMultispade.name=铜金合金 Multispade
-item.TaloniteMultipick.name=铬钴磷酸盐合金 Multipick
-item.TaloniteMultispade.name=铬钴磷酸盐合金 Multispade
-item.StelliteMultipick.name=铬钴锰钛合金 Multipick
-item.StelliteMultispade.name=铬钴锰钛合金 Multispade
-item.TungstenCarbideMultipick.name=碳化钨 Multipick
-item.TungstenCarbideMultispade.name=碳化钨 Multispade
-item.TantalumCarbideMultipick.name=碳化钽 Multipick
-item.TantalumCarbideMultispade.name=碳化钽 Multispade
+item.AluminiumMultipick.name=铝复合稿
+item.AluminiumMultispade.name=铝复合铲
+item.BerylliumMultispade.name=铍复合铲
+item.BismuthMultispade.name=铋复合铲
+item.CarbonMultispade.name=碳复合铲
+item.ChromeMultipick.name=铬复合稿
+item.ChromeMultispade.name=铬复合铲
+item.CobaltMultipick.name=钴复合稿
+item.CobaltMultispade.name=钴复合铲
+item.GoldMultispade.name=金复合铲
+item.IridiumMultipick.name=铱复合稿
+item.IridiumMultispade.name=铱复合铲
+item.IronMultipick.name=铁复合稿
+item.IronMultispade.name=铁复合铲
+item.LeadMultispade.name=铅复合铲
+item.ManganeseMultipick.name=锰复合稿
+item.ManganeseMultispade.name=锰复合铲
+item.MolybdenumMultipick.name=钼复合稿
+item.MolybdenumMultispade.name=钼复合铲
+item.NeodymiumMultipick.name=钕复合镐
+item.NeodymiumMultispade.name=钕复合铲
+item.NeutroniumMultipick.name=中子素复合镐
+item.NeutroniumMultispade.name=中子素复合铲
+item.NickelMultispade.name=镍复合铲
+item.OsmiumMultipick.name=锇复合镐
+item.OsmiumMultispade.name=锇复合铲
+item.PalladiumMultipick.name=钯复合镐
+item.PalladiumMultispade.name=钯复合铲
+item.PlatinumMultispade.name=铂复合铲
+item.Plutonium241Multipick.name=钚-241复合镐
+item.Plutonium241Multispade.name=钚-241复合铲
+item.SilverMultispade.name=银复合铲
+item.ThoriumMultipick.name=钍复合镐
+item.ThoriumMultispade.name=钍复合铲
+item.TitaniumMultipick.name=钛复合镐
+item.TitaniumMultispade.name=钛复合铲
+item.TungstenMultipick.name=钨复合镐
+item.TungstenMultispade.name=钨复合铲
+item.Uranium235Multipick.name=铀-235复合镐
+item.Uranium235Multispade.name=铀-235复合铲
+item.DarkSteelMultipick.name=玄钢复合镐
+item.DarkSteelMultispade.name=玄钢复合铲
+item.DuraniumMultipick.name=铿铀复合镐
+item.DuraniumMultispade.name=铿铀复合铲
+item.InfusedGoldMultispade.name=注魔金复合铲
+item.NaquadahMultipick.name=硅岩复合镐
+item.NaquadahMultispade.name=硅岩复合铲
+item.NaquadahAlloyMultipick.name=硅岩合金复合镐
+item.NaquadahAlloyMultispade.name=硅岩合金复合铲
+item.NaquadriaMultipick.name=超能硅岩复合镐
+item.NaquadriaMultispade.name=超能硅岩复合铲
+item.TritaniumMultipick.name=三钛复合镐
+item.TritaniumMultispade.name=三钛复合铲
+item.OsmiridiumMultipick.name=铱锇合金复合镐
+item.OsmiridiumMultispade.name=铱锇合金复合铲
+item.BrassMultispade.name=黄铜复合铲
+item.BronzeMultipick.name=青铜复合镐
+item.BronzeMultispade.name=青铜复合铲
+item.CupronickelMultispade.name=白铜复合铲
+item.ElectrumMultispade.name=琥珀金复合铲
+item.InvarMultipick.name=殷钢复合镐
+item.InvarMultispade.name=殷钢复合铲
+item.KanthalMultispade.name=坝塔尔合金复合铲
+item.MagnaliumMultipick.name=镁铝合金复合镐
+item.MagnaliumMultispade.name=镁铝合金复合铲
+item.NichromeMultispade.name=镍铬合金复合铲
+item.PigIronMultipick.name=生铁复合镐
+item.PigIronMultispade.name=生铁复合铲
+item.PolycaprolactamMultispade.name=聚己内酰胺复合铲
+item.PolytetrafluoroethyleneMultispade.name=聚四氟乙烯复合铲
+item.NickelZincFerriteMultispade.name=镍锌铁氧体复合铲
+item.PolyphenyleneSulfideMultispade.name=聚苯硫醚复合铲
+item.StainlessSteelMultipick.name=不锈钢复合镐
+item.StainlessSteelMultispade.name=不锈钢复合铲
+item.SteelMultipick.name=钢复合镐
+item.SteelMultispade.name=钢复合铲
+item.TinAlloyMultispade.name=锡铁合金复合铲
+item.UltimetMultipick.name=哈氏合金复合镐
+item.UltimetMultispade.name=哈氏合金复合铲
+item.WroughtIronMultipick.name=锻铁复合镐
+item.WroughtIronMultispade.name=锻铁复合铲
+item.SterlingSilverMultipick.name=标准纯银复合镐
+item.SterlingSilverMultispade.name=标准纯银复合铲
+item.RoseGoldMultipick.name=玫瑰金复合镐
+item.RoseGoldMultispade.name=玫瑰金复合铲
+item.BlackBronzeMultipick.name=黑青铜复合镐
+item.BlackBronzeMultispade.name=黑青铜复合铲
+item.BismuthBronzeMultipick.name=铋青铜复合镐
+item.BismuthBronzeMultispade.name=铋青铜复合铲
+item.BlackSteelMultipick.name=黑钢复合镐
+item.BlackSteelMultispade.name=黑钢复合铲
+item.RedSteelMultipick.name=红钢复合镐
+item.RedSteelMultispade.name=红钢复合铲
+item.BlueSteelMultipick.name=蓝钢复合镐
+item.BlueSteelMultispade.name=蓝钢复合铲
+item.DamascusSteelMultipick.name=大马士革钢复合镐
+item.DamascusSteelMultispade.name=大马士革钢复合铲
+item.MithrilMultispade.name=秘银复合铲
+item.CobaltBrassMultipick.name=钴黄铜复合镐
+item.CobaltBrassMultispade.name=钴黄铜复合铲
+item.ThaumiumMultipick.name=神秘锭复合镐
+item.ThaumiumMultispade.name=神秘锭复合铲
+item.HSSGMultipick.name=高速钢-G复合镐
+item.HSSGMultispade.name=高速钢-G复合铲
+item.HSSEMultipick.name=高速钢-E复合镐
+item.HSSEMultispade.name=高速钢-E复合铲
+item.HSSSMultipick.name=高速钢-S复合镐
+item.HSSSMultispade.name=高速钢-S复合铲
+item.HastelloyC276Multipick.name=哈斯特洛依合金-C276复合镐
+item.HastelloyC276Multispade.name=哈斯特洛依合金-C276复合铲
+item.HastelloyNMultipick.name=哈斯特洛依合金-N复合镐
+item.HastelloyNMultispade.name=哈斯特洛依合金-N复合铲
+item.HastelloyWMultipick.name=哈斯特洛依合金-W复合镐
+item.HastelloyWMultispade.name=哈斯特洛依合金-W复合铲
+item.HastelloyXMultipick.name=哈斯特洛依合金-X复合镐
+item.HastelloyXMultispade.name=哈斯特洛依合金-X复合铲
+item.Incoloy020Multipick.name=耐热铬铁合金-020复合镐
+item.Incoloy020Multispade.name=耐热铬铁合金-020复合铲
+item.IncoloyDSMultipick.name=耐热铬铁合金-DS复合镐
+item.IncoloyDSMultispade.name=耐热铬铁合金-DS复合铲
+item.IncoloyMA956Multipick.name=耐热铬铁合金-MA956复合镐
+item.IncoloyMA956Multispade.name=耐热铬铁合金-MA956复合铲
+item.Inconel625Multipick.name=镍铬基合金-625复合镐
+item.Inconel625Multispade.name=镍铬基合金-625复合铲
+item.Inconel690Multipick.name=镍铬基合金-690复合镐
+item.Inconel690Multispade.name=镍铬基合金-690复合铲
+item.Inconel792Multipick.name=镍铬基合金-792复合镐
+item.Inconel792Multispade.name=镍铬基合金-792复合铲
+item.GrisiumMultipick.name=格里西姆合金复合镐
+item.GrisiumMultispade.name=格里西姆合金复合铲
+item.Tantalloy60Multipick.name=钽钨合金-60复合镐
+item.Tantalloy60Multispade.name=钽钨合金-60复合铲
+item.Tantalloy61Multipick.name=钽钨合金-61复合镐
+item.Tantalloy61Multispade.name=钽钨合金-61复合铲
+item.StaballoyMultipick.name=贫铀合金复合镐
+item.StaballoyMultispade.name=贫铀合金复合铲
+item.QuantumMultipick.name=量子合金复合镐
+item.QuantumMultispade.name=量子合金复合铲
+item.PotinMultipick.name=粗青铜合金复合镐
+item.PotinMultispade.name=粗青铜合金复合铲
+item.TumbagaMultipick.name=铜金合金复合镐
+item.TumbagaMultispade.name=铜金合金复合铲
+item.TaloniteMultipick.name=铬钴磷酸盐合金复合镐
+item.TaloniteMultispade.name=铬钴磷酸盐合金复合铲
+item.StelliteMultipick.name=铬钴锰钛合金复合镐
+item.StelliteMultispade.name=铬钴锰钛合金复合铲
+item.TungstenCarbideMultipick.name=碳化钨复合镐
+item.TungstenCarbideMultispade.name=碳化钨复合铲
+item.TantalumCarbideMultipick.name=碳化钽复合镐
+item.TantalumCarbideMultispade.name=碳化钽复合铲
//Items that Don't fit into another category
//Plates
-item.itemPlateClay.name=黏土板
-item.itemPlateDoubleClay.name=双重黏土板
+item.itemPlateClay.name=粘土板
+item.itemPlateDoubleClay.name=双重粘土板
item.itemPlateLithium.name=锂板
item.itemPlateDoubleEuropium.name=双重铕板
@@ -1659,7 +1658,7 @@ item.itemSmallGearWroughtIron.name=小型锻铁齿轮
//Misc
item.itemFoilUranium235.name=铀235箔
-item.itemBoilerChassis_0.name=高级锅炉底座 [Tier 1]
+item.itemBoilerChassis_0.name=高级锅炉底座 [1级]
item.itemDehydratorCoilWire_0.name=缠绕线圈 [EV]
item.itemDehydratorCoil_0.name=缠绕脱水器 [EV]
item.itemAirFilter_0.name=空气过滤器
@@ -1682,9 +1681,9 @@ item.itemDustTinyPhthalicAnhydride.name=小撮邻苯二甲酸酐粉
item.2Ethylanthraquinone.name=2-乙基蒽醌单元
item.2Ethylanthrahydroquinone.name=2-乙基氢蒽醌单元
item.HydrogenPeroxide.name=过氧化氢单元
-item.itemDustLithiumHydroperoxide.name=氢氧化锂粉
-item.itemDustSmallLithiumHydroperoxide.name=小堆氢氧化锂粉
-item.itemDustTinyLithiumHydroperoxide.name=小撮氢氧化锂粉
+item.itemDustLithiumHydroperoxide.name=过氧化氢锂粉
+item.itemDustSmallLithiumHydroperoxide.name=小堆过氧化氢锂粉
+item.itemDustTinyLithiumHydroperoxide.name=小撮过氧化氢锂粉
item.LithiumPeroxide.name=过氧化锂单元
item.itemPotionChilly.name=冰凉药水
item.itemKeyBig4000DC's.name=4000DC的大钥匙
@@ -1727,8 +1726,8 @@ item.itemPlateLudicrite.name=纯镥板
item.itemPlateVoid.name=虚空板
item.itemPlateDimensionShard.name=维度碎片板
item.rfEUBattery.name=通用充电电池
-item.personalCloakingDevice.name=§9个人隐形装置§7
-item.personalHealingDevice.name=§9个人治疗纳米加速器§r
+item.personalCloakingDevice.name=§9私人伪装装置§7
+item.personalHealingDevice.name=§9私人治疗纳米加速器§r
item.SlowBuildingRing.name=§e缓慢建筑指环§7
item.itemStaballoyPickaxe.name=隧道挖掘者
item.itemStaballoyAxe.name=树林砍伐者
@@ -1747,7 +1746,7 @@ item.itemPLACEHOLDER_Circuit.name=夸克操纵者 (UV)
item.itembookgt.name=§o热力锅炉手册
// Everglade Items
-item.everglades.trigger.name=§6Alkalus圆盘[§c已激活§6]
+item.everglades.trigger.name=§6Alkalus圆盘[§c激活§6]
@@ -1879,7 +1878,7 @@ tile.Block of Incoloy-MA956.name=耐热铬铁合金-MA956块
tile.Incoloy-MA956 Frame Box.name=耐热铬铁合金-MA956框架
tile.Block of Grisium.name=格里西姆合金块
tile.Grisium Frame Box.name=格里西姆合金框架
-tile.Block of Trinium.name=Trinium块
+tile.Block of Trinium.name=三元金属块
tile.Block of Refined Trinium.name=精制三元金属块
tile.Block of Trinium Titanium Alloy.name=三元钛合金块
tile.Trinium Titanium Alloy Frame Box.name=三元钛合金框架
@@ -1948,13 +1947,14 @@ tile.blockDarkWorldGround2.name=污染的土壤
tile.blockDarkWorldGround2.2.name=高度污染的土壤
tile.blockDarkWorldPortalFrame.name=遏制框架
+
//Added 1/4/18
tile.Block of Plutonium-239.name=钚-239块
-tile.Fluorite Ore [Old].name=氟石矿 [不可用的]
+tile.Fluorite Ore [Old].name=氟石矿[不可用的]
tile.blockMiningPipeFake.name=强化钢筋挖掘管道
tile.blockMiningHeadFake.name=基岩钻头
-item.itemCellLiFBeF2ThF4UF4.name=熔盐单元 [铀钍综合氟化物]
-item.itemCellLiFBeF2ZrF4UF4.name=熔盐单元 [铀综合氟化物]
+item.itemCellLiFBeF2ThF4UF4.name=熔盐单元[铀钍综合氟化物]
+item.itemCellLiFBeF2ZrF4UF4.name=熔盐单元[铀综合氟化物]
item.itemCellLiFBeF2ZrF4U235.name=熔盐单元[铀235复合氟化物]
item.itemPlateMeatRaw.name=生肉板
tile.Block of MeatRaw.name=生肉块
@@ -2014,9 +2014,699 @@ tile.blockMobSpawnerEx.15.name=刷怪笼
description.villager.profession.miscutils.banker=银行家
description.villager.profession.miscutils.technician=GT技术员
description.villager.profession.miscutils.trader=矿石交易员
-description.villager.profession.miscutils.aboriginal=澳大利亚原住民
+description.villager.profession.miscutils.aboriginal=澳大利亚土著
//Added 23/8/18
item.itemHatTinFoil.name=锡薄帽
-//This zh_CN.lang is translation by huajijam for GregTech++ [2020 Lines] \ No newline at end of file
+//Added 13/9/18
+entity.WiseVillager.name=聪明的村民
+entity.Aboriginal.name=澳大利亚土著
+entity.miscutils.constructStaballoy.name=贫铀合金结构
+entity.miscutils.sickBlaze.name=被感染的狂热者
+
+//Added 15/9/8
+item.ZirconiumTetrafluoride.name=四氟化锆单元
+item.Formaldehyde.name=甲醛单元
+item.RocketFuelMixA.name=H8N4C2O4火箭燃料单元
+item.RocketFuelMixB.name=RP-1火箭燃料单元
+item.RocketFuelMixC.name=CN3H7O3火箭燃料单元
+item.RocketFuelMixD.name=密集肼火箭燃料单元
+item.RP1Fuel.name=RP-1燃料单元
+item.Monomethylhydrazine.name=甲基肼单元
+item.Hydrazine.name=肼单元
+item.NitrogenTetroxide.name=四氧化二氮单元
+item.NitrousOxide.name=一氧化二氮单元
+item.AmmoniumNitrateSlurry.name=硝酸铵浆液单元
+item.Kerosene.name=煤油单元
+item.LiquidOxygen.name=液化氧单元[LOX]
+
+//Added 8/1/19
+
+//Ores
+
+tile.OreIrarsite.name=硫砷铱矿石
+item.crushedIrarsite.name=粉碎硫砷铱矿石
+item.crushedCentrifugedIrarsite.name=离心粉碎硫砷铱矿石
+item.crushedPurifiedIrarsite.name=纯净粉碎硫砷铱矿石
+item.dustImpureIrarsite.name=含杂硫砷铱粉
+item.dustPureIrarsite.name=纯净硫砷铱粉
+item.itemDustIrarsite.name=硫砷铱粉
+item.itemDustTinyIrarsite.name=小堆硫砷铱粉
+item.itemDustSmallIrarsite.name=小撮硫砷铱粉
+
+tile.OreMiessiite.name=硅灰石矿石
+item.crushedMiessiite.name=粉碎硅灰石矿石
+item.crushedCentrifugedMiessiite.name=离心粉碎硅灰石矿石
+item.crushedPurifiedMiessiite.name=纯净硅灰石矿石
+item.dustImpureMiessiite.name=含杂硅灰石粉
+item.dustPureMiessiite.name=纯净硅灰石粉
+item.itemDustMiessiite.name=硅灰石粉
+item.itemDustTinyMiessiite.name=小堆硅灰石粉
+item.itemDustSmallMiessiite.name=小撮硅灰石粉
+
+tile.OreComancheite.name=溴汞石矿石
+item.crushedComancheite.name=粉碎溴汞石矿石
+item.crushedCentrifugedComancheite.name=离心粉碎溴汞石矿石
+item.crushedPurifiedComancheite.name=纯净粉碎溴汞石矿石
+item.dustImpureComancheite.name=含杂溴汞石矿石
+item.dustPureComancheite.name=纯净溴汞石粉
+item.itemDustComancheite.name=溴汞石粉
+item.itemDustTinyComancheite.name=小堆溴汞石粉
+item.itemDustSmallComancheite.name=小撮溴汞石粉
+
+tile.OreKoboldite.name=妖金矿石
+item.crushedKoboldite.name=粉碎妖金矿石
+item.crushedCentrifugedKoboldite.name=离心粉碎妖金矿石
+item.crushedPurifiedKoboldite.name=纯净粉碎妖金矿石
+item.dustImpureKoboldite.name=含杂妖金粉
+item.dustPureKoboldite.name=纯净妖金粉
+item.itemDustKoboldite.name=妖金粉
+item.itemDustTinyKoboldite.name=小堆妖金粉
+item.itemDustSmallKoboldite.name=小撮妖金粉
+
+tile.OrePerroudite.name=溴硫银汞矿石
+item.crushedPerroudite.name=粉碎溴硫银汞矿石
+item.crushedCentrifugedPerroudite.name=离心溴硫银汞矿石
+item.crushedPurifiedPerroudite.name=纯净溴硫银汞矿石
+item.dustImpurePerroudite.name=含杂溴硫银汞粉
+item.dustPurePerroudite.name=纯净溴硫银汞粉
+item.itemDustPerroudite.name=溴硫银汞粉
+item.itemDustTinyPerroudite.name=小堆溴硫银汞粉
+item.itemDustSmallPerroudite.name=小撮溴硫银汞粉
+
+tile.OreDemicheleite.name=重闪石矿石
+item.crushedDemicheleite.name=粉碎重闪石矿石
+item.crushedCentrifugedDemicheleite.name=离心粉碎重闪石矿石
+item.crushedPurifiedDemicheleite.name=纯净粉碎重闪石矿石
+item.dustImpureDemicheleite.name=含杂重闪石粉
+item.dustPureDemicheleite.name=纯净重闪石粉
+item.itemDustDemicheleite.name=重闪石粉
+item.itemDustTinyDemicheleite.name=小堆重闪石粉
+item.itemDustSmallDemicheleite.name=小撮重闪石粉
+
+tile.OreAlburnite.name=铝尖晶石矿石
+item.crushedAlburnite.name=粉碎铝尖晶石矿石
+item.crushedCentrifugedAlburnite.name=离心粉碎铝尖晶石矿石
+item.crushedPurifiedAlburnite.name=纯净粉碎铝尖晶石矿石
+item.dustImpureAlburnite.name=含杂铝尖晶石粉
+item.dustPureAlburnite.name=纯净铝尖晶石粉
+item.itemDustAlburnite.name=铝尖晶石粉
+item.itemDustTinyAlburnite.name=小撮铝尖晶石粉
+item.itemDustSmallAlburnite.name=小堆铝尖晶石粉
+
+tile.OreLautarite.name=碘钙石矿石
+item.crushedLautarite.name=粉碎碘钙石矿石
+item.crushedCentrifugedLautarite.name=离心粉碎碘钙石矿石
+item.crushedPurifiedLautarite.name=纯净粉碎碘钙石矿石
+item.dustImpureLautarite.name=含杂碘钙石粉
+item.dustPureLautarite.name=纯净碘钙石粉
+item.itemDustLautarite.name=碘钙石粉
+item.itemDustTinyLautarite.name=小堆碘钙石粉
+item.itemDustSmallLautarite.name=小撮碘钙石粉
+
+tile.OreBariteRd.name=重晶石(Rd)矿石
+item.crushedBariteRd.name=粉碎重晶石(Rd)矿石
+item.crushedCentrifugedBariteRd.name=离心粉碎 重晶石(Rd)矿石
+item.crushedPurifiedBariteRd.name=纯净粉碎重晶石(Rd)矿石
+item.dustImpureBariteRd.name=含杂 重晶石(Rd)粉
+item.dustPureBariteRd.name=纯净 重晶石(Rd)粉
+item.itemDustBariteRd.name=重晶石(Rd)粉
+item.itemDustTinyBariteRd.name=小堆重晶石(Rd)粉
+item.itemDustSmallBariteRd.name=小撮重晶石(Rd)粉
+
+tile.OreHoneaite.name=碲化金铊矿石
+item.crushedHoneaite.name=粉碎碲化金铊矿石
+item.crushedCentrifugedHoneaite.name=离心粉碎碲化金铊矿石
+item.crushedPurifiedHoneaite.name=纯净粉碎碲化金铊矿石
+item.dustImpureHoneaite.name=含杂碲化金铊粉
+item.dustPureHoneaite.name=纯净碲化金铊粉
+item.itemDustHoneaite.name=碲化金铊粉
+item.itemDustTinyHoneaite.name=小堆碲化金铊粉
+item.itemDustSmallHoneaite.name=小撮碲化金铊粉
+
+tile.OreLafossaite.name=铊盐矿石
+item.crushedLafossaite.name=粉碎铊盐矿石
+item.crushedCentrifugedLafossaite.name=离心粉碎铊盐矿石
+item.crushedPurifiedLafossaite.name=纯净粉碎铊盐矿石
+item.dustImpureLafossaite.name=含杂铊盐粉
+item.dustPureLafossaite.name=纯净铊盐粉
+item.itemDustLafossaite.name=铊盐粉
+item.itemDustTinyLafossaite.name=小堆铊盐粉
+item.itemDustSmallLafossaite.name=小撮铊盐粉
+
+tile.OreKashinite.name=硫铑钛铜矿石
+item.crushedKashinite.name=粉碎硫铑钛铜矿石
+item.crushedCentrifugedKashinite.name=离心粉碎硫铑钛铜矿石
+item.crushedPurifiedKashinite.name=纯净粉碎硫铑钛铜矿石
+item.dustImpureKashinite.name=含杂硫铑钛铜粉
+item.dustPureKashinite.name=纯净硫铑钛铜粉
+item.itemDustKashinite.name=硫铑钛铜粉
+item.itemDustTinyKashinite.name=小堆硫铑钛铜粉
+item.itemDustSmallKashinite.name=小撮硫铑钛铜粉
+
+tile.OreRadioactiveMineralMix.name=奇异矿石
+item.crushedRadioactiveMineralMix.name=粉碎奇异矿石
+item.crushedCentrifugedRadioactiveMineralMix.name=离心粉碎奇异矿石
+item.crushedPurifiedRadioactiveMineralMix.name=纯净粉碎奇异矿石
+item.dustImpureRadioactiveMineralMix.name=含杂奇异粉
+item.dustPureRadioactiveMineralMix.name=纯净奇异粉
+item.itemDustRadioactiveMineralMix.name=奇异粉
+item.itemDustTinyRadioactiveMineralMix.name=小堆奇异粉
+item.itemDustSmallRadioactiveMineralMix.name=小撮奇异粉
+
+tile.OreDemicheleiteBr.name=重闪石(Br)矿石
+item.crushedDemicheleiteBr.name=粉碎重闪石(Br)矿石
+item.crushedCentrifugedDemicheleiteBr.name=离心粉碎重闪石(Br)矿石
+item.crushedPurifiedDemicheleiteBr.name=纯净粉碎重闪石(Br)矿石
+item.dustImpureDemicheleiteBr.name=含杂重闪石(Br)粉
+item.dustPureDemicheleiteBr.name=纯净重闪石(Br)粉
+item.itemDustDemicheleiteBr.name=重闪石(Br)粉
+
+
+//Materials
+
+item.itemIngotTitansteel.name=泰坦锻钢
+item.itemHotIngotTitansteel.name=热泰坦锻钢
+item.itemDustTitansteel.name=泰坦锻钢粉
+item.itemDustTinyTitansteel.name=小堆泰坦锻钢粉
+item.itemDustSmallTitansteel.name=小撮泰坦锻钢粉
+item.itemNuggetTitansteel.name=泰坦锻钢粒
+item.itemPlateTitansteel.name=泰坦锻钢板
+item.itemPlateDoubleTitansteel.name=双重泰坦锻钢板
+item.itemBoltTitansteel.name=泰坦锻钢螺栓
+item.itemRodTitansteel.name=泰坦锻钢杆
+item.itemRodLongTitansteel.name=泰坦锻钢长杆
+item.itemRingTitansteel.name=泰坦锻钢环
+item.itemScrewTitansteel.name=泰坦锻钢螺丝
+item.itemRotorTitansteel.name=泰坦锻钢转子
+item.itemGearTitansteel.name=泰坦锻钢齿轮
+item.itemCellTitansteel.name=泰坦锻钢单元
+tile.Block of Titansteel.name=泰坦锻钢块
+tile.Titansteel Frame Box.name=泰坦锻钢框架
+
+item.itemIngotOctiron.name=Octiron锭
+item.itemHotIngotOctiron.name=热Octiron锭
+item.itemDustOctiron.name=Octiron粉
+item.itemDustTinyOctiron.name=小堆Octiron粉
+item.itemDustSmallOctiron.name=小撮Octiron粉
+item.itemNuggetOctiron.name=Octiron粒
+item.itemPlateOctiron.name=Octiron板
+item.itemPlateDoubleOctiron.name=双重Octiron板
+item.itemBoltOctiron.name=Octiron螺栓
+item.itemRodOctiron.name=Octiron杆
+item.itemRodLongOctiron.name=Octiron长杆
+item.itemRingOctiron.name=Octiron环
+item.itemScrewOctiron.name=Octiron螺丝
+item.itemRotorOctiron.name=Octiron转子
+item.itemGearOctiron.name=Octiron齿轮
+item.itemCellOctiron.name=Octiron单元
+tile.Block of Octiron.name=Octiron块
+tile.Octiron Frame Box.name=Octiron框架
+
+item.itemIngotWatertightSteel.name=防水钢锭
+item.itemHotIngotWatertightSteel.name=热防水钢锭
+item.itemDustWatertightSteel.name=防水钢粉
+item.itemDustTinyWatertightSteel.name=小堆防水钢粉
+item.itemDustSmallWatertightSteel.name=小撮防水钢粉
+item.itemNuggetWatertightSteel.name=防水钢粒
+item.itemPlateWatertightSteel.name=防水钢板
+item.itemPlateDoubleWatertightSteel.name=双重防水钢板
+item.itemBoltWatertightSteel.name=防水钢螺栓
+item.itemRodWatertightSteel.name=防水钢杆
+item.itemRodLongWatertightSteel.name=防水钢长杆
+item.itemRingWatertightSteel.name=防水钢环
+item.itemScrewWatertightSteel.name=防水钢螺丝
+item.itemRotorWatertightSteel.name=防水钢转子
+item.itemGearWatertightSteel.name=防水钢齿轮
+item.itemCellWatertightSteel.name=防水钢单元
+tile.Block of Watertight Steel.name=防水钢块
+tile.Watertight Steel Frame Box.name=防水钢框架
+
+item.itemIngotCelestialTungsten.name=天体钨锭
+item.itemHotIngotCelestialTungsten.name=热天体钨锭
+item.itemDustCelestialTungsten.name=天体钨粉
+item.itemDustTinyCelestialTungsten.name=小堆天体钨粉
+item.itemDustSmallCelestialTungsten.name=小撮天体钨粉
+item.itemNuggetCelestialTungsten.name=天体钨粒
+item.itemPlateCelestialTungsten.name=天体钨板
+item.itemPlateDoubleCelestialTungsten.name=双重天体钨板
+item.itemBoltCelestialTungsten.name=天体钨螺栓
+item.itemRodCelestialTungsten.name=天体钨杆
+item.itemRodLongCelestialTungsten.name=天体钨长杆
+item.itemRingCelestialTungsten.name=天体钨环
+item.itemScrewCelestialTungsten.name=天体钨螺丝
+item.itemRotorCelestialTungsten.name=天体钨转子
+item.itemGearCelestialTungsten.name=天体钨齿轮
+item.itemCellCelestialTungsten.name=天体钨单元
+tile.Block of Celestial Tungsten.name=天体钨块
+tile.Celestial Tungsten Frame Box.name=天体钨框架
+
+item.itemIngotHypogen.name=Hypogen锭
+item.itemHotIngotHypogen.name=热Hypogen锭
+item.itemDustHypogen.name=Hypogen粉
+item.itemDustTinyHypogen.name=小堆Hypogen粉
+item.itemDustSmallHypogen.name=小撮Hypogen粉
+item.itemNuggetHypogen.name=Hypogen粒
+item.itemPlateHypogen.name=Hypogen板
+item.itemPlateDoubleHypogen.name=双重Hypogen板
+item.itemBoltHypogen.name=Hypogen螺栓
+item.itemRodHypogen.name=Hypogen杆
+item.itemRodLongHypogen.name=Hypogen长杆
+item.itemRingHypogen.name=Hypogen环
+item.itemScrewHypogen.name=Hypogen螺丝
+item.itemRotorHypogen.name=Hypogen转子
+item.itemGearHypogen.name=Hypogen齿轮
+item.itemCellHypogen.name=Hypogen单元
+tile.Block of Hypogen.name=Hypogen块
+tile.Hypogen Frame Box.name=Hypogen框架
+
+item.itemIngotArceusAlloy2B.name=阿塞俄斯合金2B锭
+item.itemHotIngotArceusAlloy2B.name=热阿塞俄斯合金2B锭
+item.itemDustArceusAlloy2B.name=阿塞俄斯合金2B粉
+item.itemDustTinyArceusAlloy2B.name=小堆阿塞俄斯合金2B粉
+item.itemDustSmallArceusAlloy2B.name=小撮阿塞俄斯合金2B粉
+item.itemNuggetArceusAlloy2B.name=阿塞俄斯合金2B粒
+item.itemPlateArceusAlloy2B.name=阿塞俄斯合金2B板
+item.itemPlateDoubleArceusAlloy2B.name=双重阿塞俄斯合金2B板
+item.itemBoltArceusAlloy2B.name=阿塞俄斯合金2B螺栓
+item.itemRodArceusAlloy2B.name=阿塞俄斯合金2B杆
+item.itemRodLongArceusAlloy2B.name=阿塞俄斯合金2B长杆
+item.itemRingArceusAlloy2B.name=阿塞俄斯合金2B环
+item.itemScrewArceusAlloy2B.name=阿塞俄斯合金2B螺丝
+item.itemRotorArceusAlloy2B.name=阿塞俄斯合金2B转子
+item.itemGearArceusAlloy2B.name=阿塞俄斯合金2B齿轮
+item.itemCellArceusAlloy2B.name=阿塞俄斯合金2B单元
+tile.Block of Arceus Alloy 2B.name=阿塞俄斯合金2B块
+tile.Arceus Alloy 2B Frame Box.name=阿塞俄斯合金2B框架
+
+item.itemIngotChromaticGlass.name=彩色玻璃锭
+item.itemHotIngotChromaticGlass.name=热彩色玻璃锭
+item.itemDustChromaticGlass.name=彩色玻璃粉
+item.itemDustTinyChromaticGlass.name=小堆彩色玻璃粉
+item.itemDustSmallChromaticGlass.name=小撮彩色玻璃粉
+item.itemNuggetChromaticGlass.name=彩色玻璃粒
+item.itemPlateChromaticGlass.name=彩色玻璃板
+item.itemPlateDoubleChromaticGlass.name=双重彩色玻璃板
+item.itemBoltChromaticGlass.name=彩色玻璃螺栓
+item.itemRodChromaticGlass.name=彩色玻璃杆
+item.itemRodLongChromaticGlass.name=彩色玻璃长杆
+item.itemRingChromaticGlass.name=彩色玻璃环
+item.itemScrewChromaticGlass.name=彩色玻璃螺丝
+item.itemRotorChromaticGlass.name=彩色玻璃转子
+item.itemGearChromaticGlass.name=彩色玻璃齿轮
+item.itemCellChromaticGlass.name=彩色玻璃单元
+tile.Block of Chromatic Glass.name=彩色玻璃块
+tile.Chromatic Glass Frame Box.name=彩色玻璃框架
+
+item.itemIngotAstralTitanium.name=星体钛锭
+item.itemHotIngotAstralTitanium.name=热星体钛锭
+item.itemDustAstralTitanium.name=星体钛粉
+item.itemDustTinyAstralTitanium.name=小堆星体钛粉
+item.itemDustSmallAstralTitanium.name=小撮星体钛粉
+item.itemNuggetAstralTitanium.name=星体钛粒
+item.itemPlateAstralTitanium.name=星体钛板
+item.itemPlateDoubleAstralTitanium.name=双重星体钛板
+item.itemBoltAstralTitanium.name=星体钛螺栓
+item.itemRodAstralTitanium.name=星体钛杆
+item.itemRodLongAstralTitanium.name=星体钛长杆
+item.itemRingAstralTitanium.name=星体钛环
+item.itemScrewAstralTitanium.name=星体钛螺丝
+item.itemRotorAstralTitanium.name=星体钛转子
+item.itemGearAstralTitanium.name=星体钛齿轮
+item.itemCellAstralTitanium.name=星体钛单元
+tile.Block of Astral Titanium.name=星体钛块
+tile.Astral Titanium Frame Box.name=星体钛框架
+
+item.itemIngotTungstenTitaniumCarbide.name=碳化钨钛合金锭
+item.itemHotIngotTungstenTitaniumCarbide.name=热碳化钨钛合金锭
+item.itemDustTungstenTitaniumCarbide.name=碳化钨钛合金粉
+item.itemDustTinyTungstenTitaniumCarbide.name=小堆碳化钨钛合金粉
+item.itemDustSmallTungstenTitaniumCarbide.name=小撮碳化钨钛合金粉
+item.itemNuggetTungstenTitaniumCarbide.name=碳化钨钛合金粒
+item.itemPlateTungstenTitaniumCarbide.name=碳化钨钛合金板
+item.itemPlateDoubleTungstenTitaniumCarbide.name=双重碳化钨钛合金板
+item.itemBoltTungstenTitaniumCarbide.name=碳化钨钛合金螺栓
+item.itemRodTungstenTitaniumCarbide.name=碳化钨钛合金杆
+item.itemRodLongTungstenTitaniumCarbide.name=碳化钨钛合金长杆
+item.itemRingTungstenTitaniumCarbide.name=碳化钨钛合金环
+item.itemScrewTungstenTitaniumCarbide.name=碳化钨钛合金螺丝
+item.itemRotorTungstenTitaniumCarbide.name=碳化钨钛合金转子
+item.itemGearTungstenTitaniumCarbide.name=碳化钨钛合金齿轮
+item.itemCellTungstenTitaniumCarbide.name=碳化钨钛合金单元
+tile.Block of Tungsten Titanium Carbide.name=碳化钨钛合金块
+tile.Tungsten Titanium Carbide Frame Box.name=碳化钨钛合金框架
+
+item.itemIngotNitinol60.name=镍钛诺60锭
+item.itemHotIngotNitinol60.name=热镍钛诺60锭
+item.itemDustNitinol60.name=镍钛诺60粉
+item.itemDustTinyNitinol60.name=小堆镍钛诺60粉
+item.itemDustSmallNitinol60.name=小撮镍钛诺60粉
+item.itemNuggetNitinol60.name=镍钛诺60粒
+item.itemPlateNitinol60.name=镍钛诺60板
+item.itemPlateDoubleNitinol60.name=双重镍钛诺60板
+item.itemBoltNitinol60.name=镍钛诺60螺栓
+item.itemRodNitinol60.name=镍钛诺60杆
+item.itemRodLongNitinol60.name=镍钛诺60长杆
+item.itemRingNitinol60.name=镍钛诺60环
+item.itemScrewNitinol60.name=镍钛诺60螺丝
+item.itemRotorNitinol60.name=镍钛诺60转子
+item.itemGearNitinol60.name=镍钛诺60齿轮
+item.itemCellNitinol60.name=镍钛诺60单元
+tile.Block of Nitinol 60.name=镍钛诺60块
+tile.Nitinol 60 Frame Box.name=镍钛诺60框架
+
+item.itemIngotAdvancedNitinol.name=进阶镍钛诺锭
+item.itemHotIngotAdvancedNitinol.name=热进阶镍钛诺锭
+item.itemDustAdvancedNitinol.name=进阶镍钛诺粉
+item.itemDustTinyAdvancedNitinol.name=小堆进阶镍钛诺粉
+item.itemDustSmallAdvancedNitinol.name=小撮进阶镍钛诺粉
+item.itemNuggetAdvancedNitinol.name=进阶镍钛诺粒
+item.itemPlateAdvancedNitinol.name=进阶镍钛诺板
+item.itemPlateDoubleAdvancedNitinol.name=双重进阶镍钛诺板
+item.itemBoltAdvancedNitinol.name=进阶镍钛诺螺栓
+item.itemRodAdvancedNitinol.name=进阶镍钛诺杆
+item.itemRodLongAdvancedNitinol.name=进阶镍钛诺长杆
+item.itemRingAdvancedNitinol.name=进阶镍钛诺环
+item.itemScrewAdvancedNitinol.name=进阶镍钛诺螺丝
+item.itemRotorAdvancedNitinol.name=进阶镍钛诺转子
+item.itemGearAdvancedNitinol.name=进阶镍钛诺齿轮
+item.itemCellAdvancedNitinol.name=进阶镍钛诺单元
+tile.Block of Advanced Nitinol.name=进阶镍钛诺块
+tile.Advanced Nitinol Frame Box.name=进阶镍钛诺框架
+
+item.itemIngotArcanite.name=单钾芒硝锭
+item.itemHotIngotArcanite.name=热单钾芒硝锭
+item.itemDustArcanite.name=单钾芒硝粉
+item.itemDustTinyArcanite.name=小堆单钾芒硝粉
+item.itemDustSmallArcanite.name=小撮单钾芒硝粉
+item.itemNuggetArcanite.name=单钾芒硝粒
+item.itemPlateArcanite.name=单钾芒硝板
+item.itemPlateDoubleArcanite.name=双重单钾芒硝板
+item.itemBoltArcanite.name=单钾芒硝螺栓
+item.itemRodArcanite.name=单钾芒硝杆
+item.itemRodLongArcanite.name=单钾芒硝长杆
+item.itemRingArcanite.name=单钾芒硝环
+item.itemScrewArcanite.name=单钾芒硝螺丝
+item.itemRotorArcanite.name=单钾芒硝转子
+item.itemGearArcanite.name=单钾芒硝齿轮
+item.itemCellArcanite.name=单钾芒硝单元
+tile.Block of Arcanite.name=单钾芒硝块
+tile.Arcanite Frame Box.name=单钾芒硝框架
+
+item.itemIngotPikyonium64B.name=Pikyonium 64B锭
+item.itemHotIngotPikyonium64B.name=热Pikyonium 64B锭
+item.itemDustPikyonium64B.name=Pikyonium 64B粉
+item.itemDustTinyPikyonium64B.name=小堆Pikyonium 64B粉
+item.itemDustSmallPikyonium64B.name=小撮Pikyonium 64B粉
+item.itemNuggetPikyonium64B.name=Pikyonium 64B粒
+item.itemPlatePikyonium64B.name=Pikyonium 64B板
+item.itemPlateDoublePikyonium64B.name=双重Pikyonium 64B板
+item.itemBoltPikyonium64B.name=Pikyonium 64B螺栓
+item.itemRodPikyonium64B.name=Pikyonium 64B杆
+item.itemRodLongPikyonium64B.name=Pikyonium 64B长杆
+item.itemRingPikyonium64B.name=Pikyonium 64B环
+item.itemScrewPikyonium64B.name=Pikyonium 64B螺丝
+item.itemRotorPikyonium64B.name=Pikyonium 64B转子
+item.itemGearPikyonium64B.name=Pikyonium 64B齿轮
+item.itemCellPikyonium64B.name=Pikyonium 64B单元
+tile.Block of Pikyonium 64B.name=Pikyonium 64B块
+tile.Pikyonium 64B Frame Box.name=Pikyonium 64B框架
+
+item.itemIngotCinobiteA243.name=Cinobite A243锭
+item.itemHotIngotCinobiteA243.name=热Cinobite A243锭
+item.itemDustCinobiteA243.name=Cinobite A243粉
+item.itemDustTinyCinobiteA243.name=小堆Cinobite A243粉
+item.itemDustSmallCinobiteA243.name=小撮Cinobite A243粉
+item.itemNuggetCinobiteA243.name=Cinobite A243粒
+item.itemPlateCinobiteA243.name=Cinobite A243板
+item.itemPlateDoubleCinobiteA243.name=双重Cinobite A243板
+item.itemBoltCinobiteA243.name=Cinobite A243螺栓
+item.itemRodCinobiteA243.name=Cinobite A243杆
+item.itemRodLongCinobiteA243.name=Cinobite A243长杆
+item.itemRingCinobiteA243.name=Cinobite A243环
+item.itemScrewCinobiteA243.name=Cinobite A243螺丝
+item.itemRotorCinobiteA243.name=Cinobite A243转子
+item.itemGearCinobiteA243.name=Cinobite A243齿轮
+item.itemCellCinobiteA243.name=Cinobite A243单元
+tile.Block of Cinobite A243.name=Cinobite A243块
+tile.Cinobite A243 Frame Box.name=Cinobite A243框架
+
+item.itemIngotLafiumCompound.name=Lafium化合物锭
+item.itemHotIngotLafiumCompound.name=热Lafium化合物锭
+item.itemDustLafiumCompound.name=Lafium化合物粉
+item.itemDustTinyLafiumCompound.name=小堆Lafium化合物粉
+item.itemDustSmallLafiumCompound.name=小撮Lafium化合物粉
+item.itemNuggetLafiumCompound.name=Lafium化合物粒
+item.itemPlateLafiumCompound.name=Lafium化合物板
+item.itemPlateDoubleLafiumCompound.name=双重Lafium化合物板
+item.itemBoltLafiumCompound.name=Lafium化合物螺栓
+item.itemRodLafiumCompound.name=Lafium化合物杆
+item.itemRodLongLafiumCompound.name=Lafium化合物长杆
+item.itemRingLafiumCompound.name=Lafium化合物环
+item.itemScrewLafiumCompound.name=Lafium化合物螺丝
+item.itemRotorLafiumCompound.name=Lafium化合物转子
+item.itemGearLafiumCompound.name=Lafium化合物齿轮
+item.itemCellLafiumCompound.name=Lafium化合物单元
+tile.Block of Lafium Compound.name=Lafium化合物块
+tile.Lafium Compound Frame Box.name=Lafium化合物框架
+
+item.itemIngotKoboldite.name=妖金锭
+item.itemHotIngotKoboldite.name=热妖金锭
+item.itemDustKoboldite.name=妖金粉
+item.itemDustTinyKoboldite.name=小堆妖金粉
+item.itemDustSmallKoboldite.name=小撮妖金粉
+item.itemNuggetKoboldite.name=妖金粒
+item.itemPlateKoboldite.name=妖金板
+item.itemPlateDoubleKoboldite.name=双重妖金板
+item.itemBoltKoboldite.name=妖金螺栓
+item.itemRodKoboldite.name=妖金杆
+item.itemRodLongKoboldite.name=妖金长杆
+item.itemRingKoboldite.name=妖金环
+item.itemScrewKoboldite.name=妖金螺丝
+item.itemRotorKoboldite.name=妖金转子
+item.itemGearKoboldite.name=妖金齿轮
+item.itemCellKoboldite.name=妖金单元
+tile.Block of Koboldite.name=妖金块
+tile.Koboldite Frame Box.name=妖金框架
+
+item.itemIngotAbyssalAlloy.name=深渊合金锭
+item.itemHotIngotAbyssalAlloy.name=热深渊合金锭
+item.itemDustAbyssalAlloy.name=深渊合金粉
+item.itemDustTinyAbyssalAlloy.name=小堆深渊合金粉
+item.itemDustSmallAbyssalAlloy.name=小撮深渊合金粉
+item.itemNuggetAbyssalAlloy.name=深渊合金粒
+item.itemPlateAbyssalAlloy.name=深渊合金板
+item.itemPlateDoubleAbyssalAlloy.name=双重深渊合金板
+item.itemBoltAbyssalAlloy.name=深渊合金螺栓
+item.itemRodAbyssalAlloy.name=深渊合金杆
+item.itemRodLongAbyssalAlloy.name=深渊合金长杆
+item.itemRingAbyssalAlloy.name=深渊合金环
+item.itemScrewAbyssalAlloy.name=深渊合金螺丝
+item.itemRotorAbyssalAlloy.name=深渊合金转子
+item.itemGearAbyssalAlloy.name=深渊合金齿轮
+item.itemCellAbyssalAlloy.name=深渊合金单元
+tile.Block of Abyssal Alloy.name=深渊合金块
+tile.Abyssal Alloy Frame Box.name=深渊合金框架
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//Radioactive
+item.dustTechnetium99M.name=锝99M粉
+item.dustTechnetium99.name=锝99粉
+item.dustMolybdenum99.name=钼99粉
+
+//Bags
+item.item.MysticBag.name=神秘袋
+item.item.Eatotron9000.name=Eatotronic 9000
+item.item.ToolBox.name=工人的工具箱
+
+//Cells
+item.Bromine.name=溴单元
+item.Krypton.name=氪单元
+item.cryotheum.name=凛冰单元
+item.pyrotheum.name=烈焰之炽焱单元
+item.GeneticMutagen.name=诱变剂单元
+
+//Ingots
+item.itemHotIngotIncoloy020.name=热耐热铬铁合金-020锭
+item.itemHotIngotIncoloyDS.name=热耐热铬铁合金-DS锭
+item.itemHotIngotTalonite.name=热铬钴磷酸盐合金锭
+item.itemHotIngotHastelloyX.name=热哈斯特洛依合金-X锭
+item.itemHotIngotHastelloyW.name=热哈斯特洛依合金-W碳化物锭
+
+//Railcraft Fix
+item.railcraft.part.plate.lead.name=铅板
+
+//Ions
+item.particle.ion.Hydrogen.name=氢离子
+item.particle.ion.Helium.name=氦离子
+item.particle.ion.Lithium.name=锂离子
+item.particle.ion.Beryllium.name=铍离子
+item.particle.ion.Boron.name=硼离子
+item.particle.ion.Carbon.name=碳离子
+item.particle.ion.Nitrogen.name=氮离子
+item.particle.ion.Oxygen.name=氧离子
+item.particle.ion.Fluorine.name=氟离子
+item.particle.ion.Neon.name=氖离子
+item.particle.ion.Sodium.name=钠离子
+item.particle.ion.Magnesium.name=镁离子
+item.particle.ion.Aluminum.name=铝离子
+item.particle.ion.Silicon.name=硅离子
+item.particle.ion.Phosphorus.name=磷离子
+item.particle.ion.Sulfur.name=硫离子
+item.particle.ion.Chlorine.name=氯离子
+item.particle.ion.Argon.name=氩离子
+item.particle.ion.Potassium.name=钾离子
+item.particle.ion.Calcium.name=钙离子
+item.particle.ion.Scandium.name=钪离子
+item.particle.ion.Titanium.name=钛离子
+item.particle.ion.Vanadium.name=钒离子
+item.particle.ion.Chromium.name=铬离子
+item.particle.ion.Manganese.name=锰离子
+item.particle.ion.Iron.name=铁离子
+item.particle.ion.Cobalt.name=钴离子
+item.particle.ion.Nickel.name=镍离子
+item.particle.ion.Copper.name=铜离子
+item.particle.ion.Zinc.name=锌离子
+item.particle.ion.Gallium.name=镓离子
+item.particle.ion.Germanium.name=锗离子
+item.particle.ion.Arsenic.name=砷离子
+item.particle.ion.Selenium.name=硒离子
+item.particle.ion.Bromine.name=溴离子
+item.particle.ion.Krypton.name=氪离子
+item.particle.ion.Rubidium.name=铷离子
+item.particle.ion.Strontium.name=锶离子
+item.particle.ion.Yttrium.name=钇离子
+item.particle.ion.Zirconium.name=锆离子
+item.particle.ion.Niobium.name=铌离子
+item.particle.ion.Molybdenum.name=钼离子
+item.particle.ion.Technetium.name=锝离子
+item.particle.ion.Ruthenium.name=钌离子
+item.particle.ion.Rhodium.name=铑离子
+item.particle.ion.Palladium.name=钯离子
+item.particle.ion.Silver.name=银离子
+item.particle.ion.Cadmium.name=镉离子
+item.particle.ion.Indium.name=铟离子
+item.particle.ion.Tin.name=锡离子
+item.particle.ion.Antimony.name=锑离子
+item.particle.ion.Tellurium.name=碲离子
+item.particle.ion.Iodine.name=碘离子
+item.particle.ion.Xenon.name=氙离子
+item.particle.ion.Cesium.name=铯离子
+item.particle.ion.Barium.name=钡离子
+item.particle.ion.Lanthanum.name=镧离子
+item.particle.ion.Cerium.name=铈离子
+item.particle.ion.Praseodymium.name=镨离子
+item.particle.ion.Neodymium.name=钕离子
+item.particle.ion.Promethium.name=钷离子
+item.particle.ion.Samarium.name=钐离子
+item.particle.ion.Europium.name=铕离子
+item.particle.ion.Gadolinium.name=钆离子
+item.particle.ion.Terbium.name=铽离子
+item.particle.ion.Dysprosium.name=镝离子
+item.particle.ion.Holmium.name=钬离子
+item.particle.ion.Erbium.name=铒离子
+item.particle.ion.Thulium.name=铥离子
+item.particle.ion.Ytterbium.name=镱离子
+item.particle.ion.Lutetium.name=镏离子
+item.particle.ion.Hafnium.name=铪离子
+item.particle.ion.Tantalum.name=钽离子
+item.particle.ion.Tungsten.name=钨离子
+item.particle.ion.Rhenium.name=铼离子
+item.particle.ion.Osmium.name=锇离子
+item.particle.ion.Iridium.name=铱离子
+item.particle.ion.Platinum.name=铂离子
+item.particle.ion.Gold.name=金离子
+item.particle.ion.Mercury.name=汞离子
+item.particle.ion.Thallium.name=铊离子
+item.particle.ion.Lead.name=铅离子
+item.particle.ion.Bismuth.name=铋离子
+item.particle.ion.Polonium.name=钋离子
+item.particle.ion.Astatine.name=砹离子
+item.particle.ion.Radon.name=氡离子
+item.particle.ion.Francium.name=钫离子
+item.particle.ion.Radium.name=镭离子
+item.particle.ion.Actinium.name=锕离子
+item.particle.ion.Thorium.name=钍离子
+item.particle.ion.Protactinium.name=镤离子
+item.particle.ion.Uranium.name=铀离子
+item.particle.ion.Neptunium.name=镎离子
+item.particle.ion.Plutonium.name=钚离子
+item.particle.ion.Americium.name=銤离子
+item.particle.ion.Curium.name=锔离子
+item.particle.ion.Berkelium.name=锫离子
+item.particle.ion.Californium.name=锎离子
+item.particle.ion.Einsteinium.name=锿离子
+item.particle.ion.Fermium.name=镄离子
+item.particle.ion.Mendelevium.name=钔离子
+item.particle.ion.Nobelium.name=锘离子
+item.particle.ion.Lawrencium.name=铹离子
+item.particle.ion.Rutherfordium.name=鈩离子
+item.particle.ion.Dubnium.name=𬭊离子
+item.particle.ion.Seaborgium.name=𨭎离子
+item.particle.ion.Bohrium.name=𬭛离子
+item.particle.ion.Hassium.name=𬭶离子
+item.particle.ion.Meitnerium.name=鿏离子
+item.particle.ion.Darmstadtium.name=𫟼离子
+item.particle.ion.Roentgenium.name=錀离子
+item.particle.ion.Copernicium.name=鎶离子
+item.particle.ion.Nihonium.name=鉨离子
+item.particle.ion.Flerovium.name=鈇离子
+item.particle.ion.Moscovium.name=Mc离子
+item.particle.ion.Livermorium.name=鉝离子
+item.particle.ion.Tennessine.name=Ts离子
+item.particle.ion.Oganesson.name=Og离子
+
+
+item.particle.base.Graviton.name=引力
+item.particle.base.Up.name=上夸克
+item.particle.base.Down.name=下夸克
+item.particle.base.Charm.name=魅力夸克
+item.particle.base.Strange.name=奇异夸克
+item.particle.base.Top.name=顶端夸克
+item.particle.base.Bottom.name=底部夸克
+item.particle.base.Electron.name=电子
+item.particle.base.Electron Neutrino.name=电子中微子
+item.particle.base.Muon.name=μ介子
+item.particle.base.Muon Neutrino.name=μ中微子
+item.particle.base.Tau.name=τ
+item.particle.base.Tau Neutrino.name=τ中微子
+item.particle.base.Gluon.name=胶子
+item.particle.base.Photon.name=光子
+item.particle.base.Z Boson.name=Z玻色子
+item.particle.base.W Boson.name=W玻色子
+item.particle.base.Higgs Boson.name=希格斯玻色子
+item.particle.base.Proton.name=质子
+item.particle.base.Neutron.name=中子
+item.particle.base.Lambda.name=λ
+item.particle.base.Omega.name=Ω
+item.particle.base.Pion.name=介子
+item.particle.base.ETA Meson.name=η介子
+
+//Added 12/1/19
+
+tile.playerDoorGlass.name=玻璃自动门
+tile.playerDoorCactus.name=仙人掌自动门
+tile.playerDoorIce.name=冰自动门
+tile.playerDoorIron.name=铁自动门
+tile.playerDoorWood.name=木自动门
+
+
+//This zh_CN.lang is translation by huajijam for GregTech++ (18/1/19) \ No newline at end of file
diff --git a/src/resources/assets/miscutils/textures/items/MU-metaitem.01/101.png b/src/resources/assets/miscutils/textures/items/MU-metaitem.01/101.png
new file mode 100644
index 0000000000..1ebe9648e6
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/MU-metaitem.01/101.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/MU-metaitem.01/105.png b/src/resources/assets/miscutils/textures/items/MU-metaitem.01/105.png
new file mode 100644
index 0000000000..f9ebf8c4a5
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/MU-metaitem.01/105.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/0.png b/src/resources/assets/miscutils/textures/items/ion/0.png
new file mode 100644
index 0000000000..c56a04238f
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/0.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/1.png b/src/resources/assets/miscutils/textures/items/ion/1.png
new file mode 100644
index 0000000000..174d2ad950
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/1.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/10.png b/src/resources/assets/miscutils/textures/items/ion/10.png
new file mode 100644
index 0000000000..8e3348f582
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/10.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/100.png b/src/resources/assets/miscutils/textures/items/ion/100.png
new file mode 100644
index 0000000000..3d92a39004
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/100.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/101.png b/src/resources/assets/miscutils/textures/items/ion/101.png
new file mode 100644
index 0000000000..85b8f58ad9
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/101.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/102.png b/src/resources/assets/miscutils/textures/items/ion/102.png
new file mode 100644
index 0000000000..6993d5e4cf
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/102.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/103.png b/src/resources/assets/miscutils/textures/items/ion/103.png
new file mode 100644
index 0000000000..a3faa8a260
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/103.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/104.png b/src/resources/assets/miscutils/textures/items/ion/104.png
new file mode 100644
index 0000000000..9c80b9d1f0
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/104.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/105.png b/src/resources/assets/miscutils/textures/items/ion/105.png
new file mode 100644
index 0000000000..2633689df4
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/105.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/106.png b/src/resources/assets/miscutils/textures/items/ion/106.png
new file mode 100644
index 0000000000..c368411d12
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/106.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/107.png b/src/resources/assets/miscutils/textures/items/ion/107.png
new file mode 100644
index 0000000000..fc8e4c2844
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/107.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/108.png b/src/resources/assets/miscutils/textures/items/ion/108.png
new file mode 100644
index 0000000000..d2b271526a
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/108.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/109.png b/src/resources/assets/miscutils/textures/items/ion/109.png
new file mode 100644
index 0000000000..585321db38
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/109.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/11.png b/src/resources/assets/miscutils/textures/items/ion/11.png
new file mode 100644
index 0000000000..72baf3d9e9
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/11.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/110.png b/src/resources/assets/miscutils/textures/items/ion/110.png
new file mode 100644
index 0000000000..82d73b7aca
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/110.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/111.png b/src/resources/assets/miscutils/textures/items/ion/111.png
new file mode 100644
index 0000000000..869435fd75
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/111.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/112.png b/src/resources/assets/miscutils/textures/items/ion/112.png
new file mode 100644
index 0000000000..bb14befcfe
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/112.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/113.png b/src/resources/assets/miscutils/textures/items/ion/113.png
new file mode 100644
index 0000000000..5aae8d7814
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/113.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/114.png b/src/resources/assets/miscutils/textures/items/ion/114.png
new file mode 100644
index 0000000000..ea4897286d
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/114.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/115.png b/src/resources/assets/miscutils/textures/items/ion/115.png
new file mode 100644
index 0000000000..815acfb339
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/115.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/116.png b/src/resources/assets/miscutils/textures/items/ion/116.png
new file mode 100644
index 0000000000..a335c2bb70
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/116.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/117.png b/src/resources/assets/miscutils/textures/items/ion/117.png
new file mode 100644
index 0000000000..f3d46e4bb6
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/117.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/12.png b/src/resources/assets/miscutils/textures/items/ion/12.png
new file mode 100644
index 0000000000..c2698ef286
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/12.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/13.png b/src/resources/assets/miscutils/textures/items/ion/13.png
new file mode 100644
index 0000000000..d9f17334f7
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/13.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/14.png b/src/resources/assets/miscutils/textures/items/ion/14.png
new file mode 100644
index 0000000000..0640a05827
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/14.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/15.png b/src/resources/assets/miscutils/textures/items/ion/15.png
new file mode 100644
index 0000000000..8b9a6c872e
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/15.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/16.png b/src/resources/assets/miscutils/textures/items/ion/16.png
new file mode 100644
index 0000000000..3e0dbe1143
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/16.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/17.png b/src/resources/assets/miscutils/textures/items/ion/17.png
new file mode 100644
index 0000000000..dfcb224a3e
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/17.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/18.png b/src/resources/assets/miscutils/textures/items/ion/18.png
new file mode 100644
index 0000000000..910712afc5
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/18.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/19.png b/src/resources/assets/miscutils/textures/items/ion/19.png
new file mode 100644
index 0000000000..63627d13a3
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/19.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/2.png b/src/resources/assets/miscutils/textures/items/ion/2.png
new file mode 100644
index 0000000000..ab4474425e
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/2.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/20.png b/src/resources/assets/miscutils/textures/items/ion/20.png
new file mode 100644
index 0000000000..c4c2b0da40
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/20.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/21.png b/src/resources/assets/miscutils/textures/items/ion/21.png
new file mode 100644
index 0000000000..ad8c2b6dbf
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/21.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/22.png b/src/resources/assets/miscutils/textures/items/ion/22.png
new file mode 100644
index 0000000000..ce4fcd3ff2
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/22.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/23.png b/src/resources/assets/miscutils/textures/items/ion/23.png
new file mode 100644
index 0000000000..fe75b049ce
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/23.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/24.png b/src/resources/assets/miscutils/textures/items/ion/24.png
new file mode 100644
index 0000000000..bb256ca2bb
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/24.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/25.png b/src/resources/assets/miscutils/textures/items/ion/25.png
new file mode 100644
index 0000000000..6d413674c2
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/25.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/26.png b/src/resources/assets/miscutils/textures/items/ion/26.png
new file mode 100644
index 0000000000..c93c306f5a
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/26.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/27.png b/src/resources/assets/miscutils/textures/items/ion/27.png
new file mode 100644
index 0000000000..f822d7a4bb
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/27.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/28.png b/src/resources/assets/miscutils/textures/items/ion/28.png
new file mode 100644
index 0000000000..1b65383965
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/28.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/29.png b/src/resources/assets/miscutils/textures/items/ion/29.png
new file mode 100644
index 0000000000..a3c412094e
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/29.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/3.png b/src/resources/assets/miscutils/textures/items/ion/3.png
new file mode 100644
index 0000000000..59ad76340c
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/3.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/30.png b/src/resources/assets/miscutils/textures/items/ion/30.png
new file mode 100644
index 0000000000..3ae749cc91
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/30.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/31.png b/src/resources/assets/miscutils/textures/items/ion/31.png
new file mode 100644
index 0000000000..6bb1f6c61f
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/31.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/32.png b/src/resources/assets/miscutils/textures/items/ion/32.png
new file mode 100644
index 0000000000..c8bc92a688
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/32.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/33.png b/src/resources/assets/miscutils/textures/items/ion/33.png
new file mode 100644
index 0000000000..5062c0c109
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/33.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/34.png b/src/resources/assets/miscutils/textures/items/ion/34.png
new file mode 100644
index 0000000000..bd1e33c191
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/34.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/35.png b/src/resources/assets/miscutils/textures/items/ion/35.png
new file mode 100644
index 0000000000..c2a42ac980
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/35.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/36.png b/src/resources/assets/miscutils/textures/items/ion/36.png
new file mode 100644
index 0000000000..403d45a66c
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/36.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/37.png b/src/resources/assets/miscutils/textures/items/ion/37.png
new file mode 100644
index 0000000000..89f011e548
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/37.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/38.png b/src/resources/assets/miscutils/textures/items/ion/38.png
new file mode 100644
index 0000000000..b00ab7f5fc
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/38.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/39.png b/src/resources/assets/miscutils/textures/items/ion/39.png
new file mode 100644
index 0000000000..9fc883c731
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/39.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/4.png b/src/resources/assets/miscutils/textures/items/ion/4.png
new file mode 100644
index 0000000000..122cd9e837
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/4.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/40.png b/src/resources/assets/miscutils/textures/items/ion/40.png
new file mode 100644
index 0000000000..371171fe61
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/40.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/41.png b/src/resources/assets/miscutils/textures/items/ion/41.png
new file mode 100644
index 0000000000..acc8d4df0b
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/41.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/42.png b/src/resources/assets/miscutils/textures/items/ion/42.png
new file mode 100644
index 0000000000..0f8432ea59
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/42.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/43.png b/src/resources/assets/miscutils/textures/items/ion/43.png
new file mode 100644
index 0000000000..1f62a1a4f9
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/43.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/44.png b/src/resources/assets/miscutils/textures/items/ion/44.png
new file mode 100644
index 0000000000..f26b23050a
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/44.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/45.png b/src/resources/assets/miscutils/textures/items/ion/45.png
new file mode 100644
index 0000000000..e2d6413dee
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/45.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/46.png b/src/resources/assets/miscutils/textures/items/ion/46.png
new file mode 100644
index 0000000000..50920e75b5
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/46.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/47.png b/src/resources/assets/miscutils/textures/items/ion/47.png
new file mode 100644
index 0000000000..c31a2ad43d
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/47.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/48.png b/src/resources/assets/miscutils/textures/items/ion/48.png
new file mode 100644
index 0000000000..90b6ab544e
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/48.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/49.png b/src/resources/assets/miscutils/textures/items/ion/49.png
new file mode 100644
index 0000000000..1c1ed02d40
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/49.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/5.png b/src/resources/assets/miscutils/textures/items/ion/5.png
new file mode 100644
index 0000000000..0f33a3363c
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/5.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/50.png b/src/resources/assets/miscutils/textures/items/ion/50.png
new file mode 100644
index 0000000000..c47f4a297e
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/50.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/51.png b/src/resources/assets/miscutils/textures/items/ion/51.png
new file mode 100644
index 0000000000..606a1e8ef4
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/51.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/52.png b/src/resources/assets/miscutils/textures/items/ion/52.png
new file mode 100644
index 0000000000..0a535c6158
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/52.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/53.png b/src/resources/assets/miscutils/textures/items/ion/53.png
new file mode 100644
index 0000000000..1fef4e5f2f
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/53.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/54.png b/src/resources/assets/miscutils/textures/items/ion/54.png
new file mode 100644
index 0000000000..663170c84d
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/54.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/55.png b/src/resources/assets/miscutils/textures/items/ion/55.png
new file mode 100644
index 0000000000..4519b12d97
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/55.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/56.png b/src/resources/assets/miscutils/textures/items/ion/56.png
new file mode 100644
index 0000000000..926b37bc80
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/56.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/57.png b/src/resources/assets/miscutils/textures/items/ion/57.png
new file mode 100644
index 0000000000..c80a29d94e
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/57.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/58.png b/src/resources/assets/miscutils/textures/items/ion/58.png
new file mode 100644
index 0000000000..e33f90d6bc
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/58.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/59.png b/src/resources/assets/miscutils/textures/items/ion/59.png
new file mode 100644
index 0000000000..14b48b0c39
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/59.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/6.png b/src/resources/assets/miscutils/textures/items/ion/6.png
new file mode 100644
index 0000000000..a8a9b906d2
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/6.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/60.png b/src/resources/assets/miscutils/textures/items/ion/60.png
new file mode 100644
index 0000000000..4d77e6d779
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/60.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/61.png b/src/resources/assets/miscutils/textures/items/ion/61.png
new file mode 100644
index 0000000000..42e2669011
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/61.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/62.png b/src/resources/assets/miscutils/textures/items/ion/62.png
new file mode 100644
index 0000000000..5b0ce84ee4
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/62.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/63.png b/src/resources/assets/miscutils/textures/items/ion/63.png
new file mode 100644
index 0000000000..372d256a0e
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/63.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/64.png b/src/resources/assets/miscutils/textures/items/ion/64.png
new file mode 100644
index 0000000000..61b6521d64
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/64.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/65.png b/src/resources/assets/miscutils/textures/items/ion/65.png
new file mode 100644
index 0000000000..66129d8bab
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/65.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/66.png b/src/resources/assets/miscutils/textures/items/ion/66.png
new file mode 100644
index 0000000000..5ec0a6c747
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/66.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/67.png b/src/resources/assets/miscutils/textures/items/ion/67.png
new file mode 100644
index 0000000000..09c9dd8b12
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/67.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/68.png b/src/resources/assets/miscutils/textures/items/ion/68.png
new file mode 100644
index 0000000000..d809bd3646
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/68.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/69.png b/src/resources/assets/miscutils/textures/items/ion/69.png
new file mode 100644
index 0000000000..9e0d0b0d75
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/69.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/7.png b/src/resources/assets/miscutils/textures/items/ion/7.png
new file mode 100644
index 0000000000..6d1f5c229c
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/7.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/70.png b/src/resources/assets/miscutils/textures/items/ion/70.png
new file mode 100644
index 0000000000..5bf9df2778
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/70.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/71.png b/src/resources/assets/miscutils/textures/items/ion/71.png
new file mode 100644
index 0000000000..f052e1c772
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/71.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/72.png b/src/resources/assets/miscutils/textures/items/ion/72.png
new file mode 100644
index 0000000000..044e445356
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/72.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/73.png b/src/resources/assets/miscutils/textures/items/ion/73.png
new file mode 100644
index 0000000000..24bf977862
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/73.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/74.png b/src/resources/assets/miscutils/textures/items/ion/74.png
new file mode 100644
index 0000000000..7768bd6f4e
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/74.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/75.png b/src/resources/assets/miscutils/textures/items/ion/75.png
new file mode 100644
index 0000000000..ed9961e54f
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/75.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/76.png b/src/resources/assets/miscutils/textures/items/ion/76.png
new file mode 100644
index 0000000000..9010680490
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/76.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/77.png b/src/resources/assets/miscutils/textures/items/ion/77.png
new file mode 100644
index 0000000000..007497b931
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/77.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/78.png b/src/resources/assets/miscutils/textures/items/ion/78.png
new file mode 100644
index 0000000000..36c2031937
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/78.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/79.png b/src/resources/assets/miscutils/textures/items/ion/79.png
new file mode 100644
index 0000000000..144e55beae
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/79.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/8.png b/src/resources/assets/miscutils/textures/items/ion/8.png
new file mode 100644
index 0000000000..0249fbcf3b
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/8.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/80.png b/src/resources/assets/miscutils/textures/items/ion/80.png
new file mode 100644
index 0000000000..ec7de9fda2
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/80.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/81.png b/src/resources/assets/miscutils/textures/items/ion/81.png
new file mode 100644
index 0000000000..9e19f0dbde
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/81.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/82.png b/src/resources/assets/miscutils/textures/items/ion/82.png
new file mode 100644
index 0000000000..f321ff1073
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/82.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/83.png b/src/resources/assets/miscutils/textures/items/ion/83.png
new file mode 100644
index 0000000000..c219309000
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/83.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/84.png b/src/resources/assets/miscutils/textures/items/ion/84.png
new file mode 100644
index 0000000000..c7be4342ad
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/84.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/85.png b/src/resources/assets/miscutils/textures/items/ion/85.png
new file mode 100644
index 0000000000..f0d9995742
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/85.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/86.png b/src/resources/assets/miscutils/textures/items/ion/86.png
new file mode 100644
index 0000000000..df5da1cc2e
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/86.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/87.png b/src/resources/assets/miscutils/textures/items/ion/87.png
new file mode 100644
index 0000000000..ec37e331ff
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/87.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/88.png b/src/resources/assets/miscutils/textures/items/ion/88.png
new file mode 100644
index 0000000000..9c53cfa885
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/88.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/89.png b/src/resources/assets/miscutils/textures/items/ion/89.png
new file mode 100644
index 0000000000..1e7f46a245
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/89.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/9.png b/src/resources/assets/miscutils/textures/items/ion/9.png
new file mode 100644
index 0000000000..946246b360
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/9.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/90.png b/src/resources/assets/miscutils/textures/items/ion/90.png
new file mode 100644
index 0000000000..023364b0fb
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/90.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/91.png b/src/resources/assets/miscutils/textures/items/ion/91.png
new file mode 100644
index 0000000000..44f463ff62
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/91.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/92.png b/src/resources/assets/miscutils/textures/items/ion/92.png
new file mode 100644
index 0000000000..ef1d21c530
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/92.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/93.png b/src/resources/assets/miscutils/textures/items/ion/93.png
new file mode 100644
index 0000000000..175f6bf84e
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/93.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/94.png b/src/resources/assets/miscutils/textures/items/ion/94.png
new file mode 100644
index 0000000000..544749b556
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/94.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/95.png b/src/resources/assets/miscutils/textures/items/ion/95.png
new file mode 100644
index 0000000000..a2d38fa96e
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/95.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/96.png b/src/resources/assets/miscutils/textures/items/ion/96.png
new file mode 100644
index 0000000000..12e545a65f
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/96.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/97.png b/src/resources/assets/miscutils/textures/items/ion/97.png
new file mode 100644
index 0000000000..ee9ed016dc
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/97.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/98.png b/src/resources/assets/miscutils/textures/items/ion/98.png
new file mode 100644
index 0000000000..aa8a1bf7ce
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/98.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/99.png b/src/resources/assets/miscutils/textures/items/ion/99.png
new file mode 100644
index 0000000000..b5ba289886
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/99.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/ion/IonBase.png b/src/resources/assets/miscutils/textures/items/ion/IonBase.png
new file mode 100644
index 0000000000..fd342f7db2
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/ion/IonBase.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemBufferCore.png b/src/resources/assets/miscutils/textures/items/itemBufferCore.png
index 668ad7d68e..3e41cfaa1c 100644
--- a/src/resources/assets/miscutils/textures/items/itemBufferCore.png
+++ b/src/resources/assets/miscutils/textures/items/itemBufferCore.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/0.PNG b/src/resources/assets/miscutils/textures/items/particle/0.PNG
new file mode 100644
index 0000000000..a0a32d4508
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/0.PNG
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/1.png b/src/resources/assets/miscutils/textures/items/particle/1.png
new file mode 100644
index 0000000000..4eddfa1727
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/1.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/10.PNG b/src/resources/assets/miscutils/textures/items/particle/10.PNG
new file mode 100644
index 0000000000..09eee049a9
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/10.PNG
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/11.PNG b/src/resources/assets/miscutils/textures/items/particle/11.PNG
new file mode 100644
index 0000000000..7f636919b6
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/11.PNG
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/12.PNG b/src/resources/assets/miscutils/textures/items/particle/12.PNG
new file mode 100644
index 0000000000..4e9504b03f
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/12.PNG
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/13.PNG b/src/resources/assets/miscutils/textures/items/particle/13.PNG
new file mode 100644
index 0000000000..d929480c16
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/13.PNG
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/14.PNG b/src/resources/assets/miscutils/textures/items/particle/14.PNG
new file mode 100644
index 0000000000..7338066c1a
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/14.PNG
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/15.PNG b/src/resources/assets/miscutils/textures/items/particle/15.PNG
new file mode 100644
index 0000000000..189a3127d9
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/15.PNG
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/16.PNG b/src/resources/assets/miscutils/textures/items/particle/16.PNG
new file mode 100644
index 0000000000..8824201ff3
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/16.PNG
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/17.PNG b/src/resources/assets/miscutils/textures/items/particle/17.PNG
new file mode 100644
index 0000000000..edea5115c0
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/17.PNG
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/18.PNG b/src/resources/assets/miscutils/textures/items/particle/18.PNG
new file mode 100644
index 0000000000..d3e63562d7
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/18.PNG
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/19.PNG b/src/resources/assets/miscutils/textures/items/particle/19.PNG
new file mode 100644
index 0000000000..43f9278b2c
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/19.PNG
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/2.png b/src/resources/assets/miscutils/textures/items/particle/2.png
new file mode 100644
index 0000000000..292207ae7e
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/2.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/20.PNG b/src/resources/assets/miscutils/textures/items/particle/20.PNG
new file mode 100644
index 0000000000..0e2ce23565
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/20.PNG
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/21.PNG b/src/resources/assets/miscutils/textures/items/particle/21.PNG
new file mode 100644
index 0000000000..758fa46941
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/21.PNG
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/22.PNG b/src/resources/assets/miscutils/textures/items/particle/22.PNG
new file mode 100644
index 0000000000..08bda97b66
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/22.PNG
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/23.PNG b/src/resources/assets/miscutils/textures/items/particle/23.PNG
new file mode 100644
index 0000000000..9ba21b22eb
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/23.PNG
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/24.PNG b/src/resources/assets/miscutils/textures/items/particle/24.PNG
new file mode 100644
index 0000000000..bc6aec8854
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/24.PNG
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/3.png b/src/resources/assets/miscutils/textures/items/particle/3.png
new file mode 100644
index 0000000000..d085b86507
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/3.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/4.png b/src/resources/assets/miscutils/textures/items/particle/4.png
new file mode 100644
index 0000000000..faf8db0576
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/4.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/5.png b/src/resources/assets/miscutils/textures/items/particle/5.png
new file mode 100644
index 0000000000..3a30274238
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/5.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/6.png b/src/resources/assets/miscutils/textures/items/particle/6.png
new file mode 100644
index 0000000000..8930ce52ef
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/6.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/7.PNG b/src/resources/assets/miscutils/textures/items/particle/7.PNG
new file mode 100644
index 0000000000..0581d47446
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/7.PNG
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/8.PNG b/src/resources/assets/miscutils/textures/items/particle/8.PNG
new file mode 100644
index 0000000000..6bd3c2c682
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/8.PNG
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/particle/9.PNG b/src/resources/assets/miscutils/textures/items/particle/9.PNG
new file mode 100644
index 0000000000..430f1aed3d
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/particle/9.PNG
Binary files differ
diff --git a/src/resources/assets/stevescarts/lang/zh_CN.lang b/src/resources/assets/stevescarts/lang/zh_CN.lang
new file mode 100644
index 0000000000..2c8f383f7b
--- /dev/null
+++ b/src/resources/assets/stevescarts/lang/zh_CN.lang
@@ -0,0 +1,2 @@
+item.SC2:crop_exotic_seeds.name=异域种子模块[GT++]
+//This zh_CN.lang is translation by huajijam for GregTech++ (18/1/19) \ No newline at end of file