aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/preloader
diff options
context:
space:
mode:
authorJohann Bernhardt <johann.bernhardt@tum.de>2021-12-12 19:38:06 +0100
committerJohann Bernhardt <johann.bernhardt@tum.de>2021-12-12 19:38:06 +0100
commit311ab89f93558233a40079f7cb16605b141b5346 (patch)
treec5f44ef47f441a57c5f57aa801f639c7879ed760 /src/main/java/gtPlusPlus/preloader
parent896143b96132f5ac54aa8d8f7386f27487e5e530 (diff)
downloadGT5-Unofficial-311ab89f93558233a40079f7cb16605b141b5346.tar.gz
GT5-Unofficial-311ab89f93558233a40079f7cb16605b141b5346.tar.bz2
GT5-Unofficial-311ab89f93558233a40079f7cb16605b141b5346.zip
Move sources and resources
Diffstat (limited to 'src/main/java/gtPlusPlus/preloader')
-rw-r--r--src/main/java/gtPlusPlus/preloader/CORE_Preloader.java33
-rw-r--r--src/main/java/gtPlusPlus/preloader/ChunkDebugger.java54
-rw-r--r--src/main/java/gtPlusPlus/preloader/CustomClassLoader.java57
-rw-r--r--src/main/java/gtPlusPlus/preloader/DevHelper.java7139
-rw-r--r--src/main/java/gtPlusPlus/preloader/Preloader_GT_OreDict.java173
-rw-r--r--src/main/java/gtPlusPlus/preloader/Preloader_Logger.java60
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/AsmConfig.java211
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/ClassesToTransform.java74
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/Preloader_DummyContainer.java95
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java84
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/Preloader_SetupClass.java23
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/helpers/MethodHelper_CC.java28
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/helpers/MethodHelper_GT.java25
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_CC_GuiContainerManager.java121
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java185
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_ChunkLoading.java684
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_EntityLivingBase_SetHealth.java130
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_EntityAutoRocket.java527
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FluidUtil.java242
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FuelLoader.java622
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements.java1896
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements_CrashFix.java218
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BaseMetaTileEntity.java158
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_MetaPipeEntity.java286
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_NBT.java193
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_CharcoalPit.java184
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Client.java410
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_EnergyHatchPatch.java317
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_ItemMachines_Tooltip.java139
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_MetaGenerated_Tool.java116
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Packet_TileEntity.java319
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Utility.java283
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_GetHarvestTool.java214
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_Hazmat.java147
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_LWJGL_Keyboard.java278
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_FluidCartHandling.java117
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_FluidHelper.java695
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_InvTools.java235
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ItemWispEssence.java278
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TT_ThaumicRestorer.java611
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TiConFluids.java164
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer.java79
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java16
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java286
-rw-r--r--src/main/java/gtPlusPlus/preloader/keyboard/BetterKeyboard.java132
45 files changed, 18338 insertions, 0 deletions
diff --git a/src/main/java/gtPlusPlus/preloader/CORE_Preloader.java b/src/main/java/gtPlusPlus/preloader/CORE_Preloader.java
new file mode 100644
index 0000000000..49209307f7
--- /dev/null
+++ b/src/main/java/gtPlusPlus/preloader/CORE_Preloader.java
@@ -0,0 +1,33 @@
+package gtPlusPlus.preloader;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import cpw.mods.fml.common.versioning.ArtifactVersion;
+
+public class CORE_Preloader {
+
+ public static final String NAME = "GT++ Preloader";
+ public static final String MODID = "GT++_Preloader";
+ public static final String VERSION = "0.5-Beta";
+ public static final List<ArtifactVersion> DEPENDENCIES;
+ public static final String JAVA_VERSION = System.getProperty("java.version");
+
+ public static File MC_DIR;
+ public static boolean DEV_ENVIRONMENT = false;
+ public static boolean DEBUG_MODE = false;
+ public static boolean enableOldGTcircuits = false;
+ public static int enableWatchdogBGM = 0;
+
+ public static void setMinecraftDirectory(File aDir) {
+ MC_DIR = aDir;
+ }
+
+ static {
+ ArrayList<ArtifactVersion> deps = new ArrayList<ArtifactVersion>();
+ //deps.add("required-before:gregtech;");
+ DEPENDENCIES = Collections.unmodifiableList(deps);
+ }
+}
diff --git a/src/main/java/gtPlusPlus/preloader/ChunkDebugger.java b/src/main/java/gtPlusPlus/preloader/ChunkDebugger.java
new file mode 100644
index 0000000000..06964d31fa
--- /dev/null
+++ b/src/main/java/gtPlusPlus/preloader/ChunkDebugger.java
@@ -0,0 +1,54 @@
+package gtPlusPlus.preloader;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.data.Pair;
+import net.minecraft.world.ChunkCoordIntPair;
+import net.minecraft.world.World;
+import net.minecraftforge.common.ForgeChunkManager.Ticket;
+
+public class ChunkDebugger {
+
+
+ public static final Map<Integer, Pair<String, String>> mChunkTicketsMap = new LinkedHashMap<Integer, Pair<String, String>>();
+ public static final Map<String, Pair<String, String>> mChunksLoadedByModsMap = new LinkedHashMap<String, Pair<String, String>>();
+
+ public static void storeTicketToCache(Ticket aTicket, World aWorld) {
+ mChunkTicketsMap.put(aTicket.hashCode(), new Pair<String, String>(aTicket.getModId(), ""+aTicket.world.provider.dimensionId));
+ Logger.REFLECTION("Ticket created by "+aTicket.getModId()+" for dimension "+aTicket.world.provider.dimensionId);
+ }
+
+ public static void storeLoadChunkToCache(Ticket aTicket, ChunkCoordIntPair aChunk) {
+ mChunksLoadedByModsMap.put(aChunk.toString(), new Pair<String, String>(aTicket.getModId(), aChunk.toString()));
+ Logger.REFLECTION("Chunk Loaded by "+aTicket.getModId()+" at position "+aChunk.toString()+" for dimension "+aTicket.world.provider.dimensionId);
+ }
+
+ public static void removeTicketFromCache(Ticket aTicket) {
+ Pair<String, String> aPair = mChunkTicketsMap.get(aTicket.hashCode());
+ String aKey = aPair.getKey();
+ if (aKey == null) {
+ aKey = "Invalid ModId";
+ }
+ Logger.REFLECTION("Ticket released by "+aKey+" for dimension "+aTicket.world.provider.dimensionId);
+ mChunkTicketsMap.remove(aTicket.hashCode());
+ }
+
+ public static void removeLoadedChunkFromCache(ChunkCoordIntPair aChunk) {
+ if (aChunk == null || aChunk.toString() == null) {
+ return;
+ }
+ Pair<String, String> aPair = mChunksLoadedByModsMap.get(aChunk.toString());
+ if (aPair == null) {
+ return;
+ }
+ String aKey = aPair.getKey();
+ String aValue = aPair.getValue();
+ if (aKey != null && aValue != null) {
+ Logger.REFLECTION("Chunk Unloaded by "+aKey+" at position "+aChunk.toString()+"");
+ }
+ mChunksLoadedByModsMap.remove(aChunk.toString());
+ }
+
+}
diff --git a/src/main/java/gtPlusPlus/preloader/CustomClassLoader.java b/src/main/java/gtPlusPlus/preloader/CustomClassLoader.java
new file mode 100644
index 0000000000..56394c11f0
--- /dev/null
+++ b/src/main/java/gtPlusPlus/preloader/CustomClassLoader.java
@@ -0,0 +1,57 @@
+package gtPlusPlus.preloader;
+
+import java.security.AllPermission;
+import java.security.CodeSource;
+import java.security.Permissions;
+import java.security.ProtectionDomain;
+import java.security.cert.Certificate;
+import java.util.HashMap;
+
+import org.objectweb.asm.ClassWriter;
+import org.objectweb.asm.tree.ClassNode;
+
+public class CustomClassLoader extends ClassLoader {
+
+ private HashMap<String, ClassNode> classes = new HashMap<String, ClassNode>();
+
+ @Override
+
+ public Class<?> loadClass(String name) throws ClassNotFoundException {
+ return findClass(name);
+ }
+
+ @Override
+
+ protected Class<?> findClass(String name) throws ClassNotFoundException {
+ ClassNode node = classes.get(name.replace('.', '/'));
+ if (node != null)
+ return nodeToClass(node);
+ else
+ return super.findClass(name);
+ }
+
+ public final void addNode(ClassNode node) {
+ classes.put(node.name, node);
+ }
+
+ private final Class<?> nodeToClass(ClassNode node) {
+ if (super.findLoadedClass(node.name) != null)
+ return findLoadedClass(node.name);
+ ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
+ node.accept(cw);
+ byte[] b = cw.toByteArray();
+ return defineClass(node.name.replace('/', '.'), b, 0, b.length, getDomain());
+ }
+
+ private final ProtectionDomain getDomain() {
+ CodeSource code = new CodeSource(null, (Certificate[]) null);
+ return new ProtectionDomain(code, getPermissions());
+ }
+
+ private final Permissions getPermissions() {
+ Permissions permissions = new Permissions();
+ permissions.add(new AllPermission());
+ return permissions;
+ }
+
+} \ No newline at end of file
diff --git a/src/main/java/gtPlusPlus/preloader/DevHelper.java b/src/main/java/gtPlusPlus/preloader/DevHelper.java
new file mode 100644
index 0000000000..70a3c53073
--- /dev/null
+++ b/src/main/java/gtPlusPlus/preloader/DevHelper.java
@@ -0,0 +1,7139 @@
+package gtPlusPlus.preloader;
+
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
+
+import gtPlusPlus.api.objects.data.Pair;
+import gtPlusPlus.api.objects.data.weakref.WeakAutoMap;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
+import net.minecraft.launchwrapper.Launch;
+
+public class DevHelper {
+
+ private static final DevHelper mInstance;
+ public static final boolean mIsValidHelper;
+
+ static {
+ mInstance = new DevHelper();
+ if (DevHelperInternals.init()) {
+ mIsValidHelper = true;
+ }
+ else {
+ mIsValidHelper = false;
+ }
+ }
+
+ public DevHelper() {
+
+ }
+
+
+
+ public static boolean isObfuscatedEnvironment() {
+ // Are we in a 'decompiled' environment?
+ boolean deobfuscatedEnvironment = false;
+ byte[] bs;
+ try {
+ bs = Launch.classLoader.getClassBytes("net.minecraft.world.World");
+ if (bs != null) {
+ deobfuscatedEnvironment = true;
+ } else {
+ deobfuscatedEnvironment = false;
+ }
+ } catch (IOException e) {
+ }
+ return !deobfuscatedEnvironment;
+ }
+
+ @SuppressWarnings("rawtypes")
+ public static Method getForgeMethod(Class c, String s, Class... varags) {
+ String s1, s2;
+ Method a, b;
+ s1 = s;
+ s2 = getSRG(s);
+ try {
+ a = ReflectionUtils.getMethod(c, s1, varags);
+ if (a != null) {
+ return a;
+ }
+ else {
+ b = ReflectionUtils.getMethod(c, s2, varags);
+ if (b != null) {
+ return b;
+ }
+ }
+ }
+ catch (Exception e) {}
+ return null;
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ private static synchronized final DevHelper getInstance() {
+ return mInstance;
+ }
+
+ public static synchronized final boolean isValidHelperObject() {
+ return mIsValidHelper;
+ }
+
+ public static String getSRG(String mForgeName) {
+ String aSRG = DevHelperInternals.forgeToSrg.get(mForgeName);
+ return aSRG != null ? aSRG : "BAD_SRG_NAME";
+ }
+
+ public static String getForge(String mSrgName) {
+ String aForgeName = DevHelperInternals.srgToForge.get(mSrgName);
+ return aForgeName != null ? aForgeName : "BAD_FORGE_NAME";
+ }
+
+ public static String getMinecraftClassName(String adeObName, boolean obfuscated) {
+ if (obfuscated) {
+ return getObfuscated(adeObName);
+ }
+ return adeObName;
+ }
+
+ public static String getObfuscated(String mDeob) {
+ String obfuscatedClassname = DevHelperInternals.deObToOb.get(mDeob);
+ obfuscatedClassname = obfuscatedClassname != null ? obfuscatedClassname : "BAD_OBFUSCATED_CLASS_NAME";
+ if (obfuscatedClassname.equals("BAD_OBFUSCATED_CLASS_NAME")) {
+ Preloader_Logger.INFO("[Fix] Failed to Get Deobfuscated name for "+mDeob);
+ }
+ return obfuscatedClassname;
+ }
+
+ public static String getDeobfuscated(String mOb) {
+ String deobfuscatedClassname = DevHelperInternals.obToDeOb.get(mOb);
+ return deobfuscatedClassname != null ? deobfuscatedClassname : "BAD_DEOBFUSCATED_CLASS_NAME";
+ }
+
+ public static class DevHelperInternals {
+ public static final Map<String, String> srgToForge = new HashMap<String, String>();
+ public static final Map<String, String> forgeToSrg = new HashMap<String, String>();
+ private static WeakAutoMap<Pair<String, String>> mInitMap = new WeakAutoMap<Pair<String, String>>();
+
+ //Obfuscation
+ public static final Map<String, String> obToDeOb = new HashMap<String, String>();
+ public static final Map<String, String> deObToOb = new HashMap<String, String>();
+ private static WeakAutoMap<Pair<String, String>> mObInitMap = new WeakAutoMap<Pair<String, String>>();
+
+ private static boolean init() {
+ init1();
+ init2();
+ init3();
+ init4();
+ if (mInitMap.size() > 0) {
+ for (Pair<String, String> p : mInitMap) {
+ if (p != null) {
+ String srg = p.getKey();
+ String forge = p.getValue();
+ srgToForge.put(srg, forge);
+ forgeToSrg.put(forge, srg);
+ }
+ }
+ }
+
+ if (mObInitMap.size() > 0) {
+ for (Pair<String, String> p : mObInitMap) {
+ if (p != null) {
+ String ob = p.getKey();
+ String deOb = p.getValue();
+ obToDeOb.put(ob, deOb);
+ deObToOb.put(deOb, ob);
+ }
+ }
+ }
+ Preloader_Logger.INFO("[DevHelper] mInitMap size: "+mInitMap.size());
+ Preloader_Logger.INFO("[DevHelper] mObInitMap size: "+mObInitMap.size());
+
+ Preloader_Logger.INFO("[DevHelper] srgToForge size: "+srgToForge.size());
+ Preloader_Logger.INFO("[DevHelper] forgeToSrg size: "+forgeToSrg.size());
+ Preloader_Logger.INFO("[DevHelper] obToDeOb size: "+obToDeOb.size());
+ Preloader_Logger.INFO("[DevHelper] deObToOb size: "+deObToOb.size());
+
+ if (srgToForge.size() > 0 && forgeToSrg.size() > 0 && obToDeOb.size() > 0 && deObToOb.size() > 0) {
+ if (srgToForge.size() == forgeToSrg.size() && obToDeOb.size() == deObToOb.size()) {
+ return true;
+ }
+ else {
+ if (srgToForge.size() != forgeToSrg.size()) {
+ int aKey1 = 0;
+ int aKey2 = 0;
+ HashMap<Integer, String> aMissingForgeNames = new HashMap<Integer, String>();
+ HashMap<Integer, String> aMissingSrgNames = new HashMap<Integer, String>();
+ Preloader_Logger.INFO("Mismatch between mapped Forge and Srg names, finding missing values.");
+ if (srgToForge.size() > forgeToSrg.size()) {
+ Preloader_Logger.INFO("More SRG Keys detected.");
+ for (String aKey : srgToForge.keySet()) {
+ if (!forgeToSrg.containsValue(aKey)) {
+ aMissingSrgNames.put(aKey1++, aKey);
+ }
+ }
+ }
+ else if (srgToForge.size() < forgeToSrg.size()) {
+ Preloader_Logger.INFO("More Forge Keys detected.");
+ for (String aKey : forgeToSrg.keySet()) {
+ if (!srgToForge.containsValue(aKey)) {
+ aMissingForgeNames.put(aKey2++, aKey);
+ }
+ }
+ }
+ if (!aMissingForgeNames.isEmpty()) {
+ for (String missingVal : aMissingForgeNames.values()) {
+ //Preloader_Logger.WARNING("Missing Forge value: "+missingVal);
+ }
+ }
+ if (!aMissingSrgNames.isEmpty()) {
+ for (String missingVal : aMissingSrgNames.values()) {
+ //Preloader_Logger.WARNING("Missing SRG value: "+missingVal);
+ }
+ }
+ }
+ if (obToDeOb.size() != deObToOb.size()) {
+ int aKey1 = 0;
+ int aKey2 = 0;
+ HashMap<Integer, String> aMissingObfNames = new HashMap<Integer, String>();
+ HashMap<Integer, String> aMissingDeObfNames = new HashMap<Integer, String>();
+ Preloader_Logger.INFO("Mismatch between mapped Obfuscated and Deobfuscated names, finding missing values.");
+ if (obToDeOb.size() > deObToOb.size()) {
+ Preloader_Logger.INFO("More Obfuscated Keys detected.");
+ for (String aKey : obToDeOb.keySet()) {
+ if (!deObToOb.containsValue(aKey)) {
+ aMissingObfNames.put(aKey1++, aKey);
+ }
+ }
+ }
+ else if (obToDeOb.size() < deObToOb.size()) {
+ Preloader_Logger.INFO("More Deobfuscated Keys detected.");
+ for (String aKey : deObToOb.keySet()) {
+ if (!obToDeOb.containsValue(aKey)) {
+ aMissingDeObfNames.put(aKey2++, aKey);
+ }
+ }
+ }
+ if (!aMissingObfNames.isEmpty()) {
+ for (String missingVal : aMissingObfNames.values()) {
+ Preloader_Logger.WARNING("Missing Obfuscated value: "+missingVal);
+ }
+ }
+ if (!aMissingDeObfNames.isEmpty()) {
+ for (String missingVal : aMissingDeObfNames.values()) {
+ Preloader_Logger.WARNING("Missing Deobfuscated value: "+missingVal);
+ }
+ }
+ }
+ }
+ }
+
+ // return true anyway as some keys will mismatch.
+ return true;
+ }
+
+ private static void init1() {
+ mInitMap.put(new Pair<String, String>("func_100011_g", "getIsPotionDurationMax"));
+ mInitMap.put(new Pair<String, String>("func_100012_b", "setPotionDurationMax"));
+ mInitMap.put(new Pair<String, String>("func_100015_a", "isKeyDown"));
+ mInitMap.put(new Pair<String, String>("func_102007_a", "canInsertItem"));
+ mInitMap.put(new Pair<String, String>("func_102008_b", "canExtractItem"));
+ mInitMap.put(new Pair<String, String>("func_104002_bU", "isNoDespawnRequired"));
+ mInitMap.put(new Pair<String, String>("func_104055_i", "setForceGamemode"));
+ mInitMap.put(new Pair<String, String>("func_104056_am", "getForceGamemode"));
+ mInitMap.put(new Pair<String, String>("func_104112_b", "saveExtraData"));
+ mInitMap.put(new Pair<String, String>("func_104140_m", "saveChunkData"));
+ mInitMap.put(new Pair<String, String>("func_110123_P", "onChunkLoad"));
+ mInitMap.put(new Pair<String, String>("func_110124_au", "getUniqueID"));
+ mInitMap.put(new Pair<String, String>("func_110125_a", "setParticleIcon"));
+ mInitMap.put(new Pair<String, String>("func_110128_b", "onBroken"));
+ mInitMap.put(new Pair<String, String>("func_110130_b", "getKnotForBlock"));
+ mInitMap.put(new Pair<String, String>("func_110131_b", "removeFrameFromMap"));
+ mInitMap.put(new Pair<String, String>("func_110138_aP", "getMaxHealth"));
+ mInitMap.put(new Pair<String, String>("func_110139_bj", "getAbsorptionAmount"));
+ mInitMap.put(new Pair<String, String>("func_110140_aT", "getAttributeMap"));
+ mInitMap.put(new Pair<String, String>("func_110142_aN", "getCombatTracker"));
+ mInitMap.put(new Pair<String, String>("func_110143_aJ", "getHealth"));
+ mInitMap.put(new Pair<String, String>("func_110144_aD", "getLastAttacker"));
+ mInitMap.put(new Pair<String, String>("func_110145_l", "dismountEntity"));
+ mInitMap.put(new Pair<String, String>("func_110147_ax", "applyEntityAttributes"));
+ mInitMap.put(new Pair<String, String>("func_110148_a", "getEntityAttribute"));
+ mInitMap.put(new Pair<String, String>("func_110149_m", "setAbsorptionAmount"));
+ mInitMap.put(new Pair<String, String>("func_110159_bB", "updateLeashedState"));
+ mInitMap.put(new Pair<String, String>("func_110160_i", "clearLeashed"));
+ mInitMap.put(new Pair<String, String>("func_110161_a", "onSpawnWithEgg"));
+ mInitMap.put(new Pair<String, String>("func_110162_b", "setLeashedToEntity"));
+ mInitMap.put(new Pair<String, String>("func_110163_bv", "enablePersistence"));
+ mInitMap.put(new Pair<String, String>("func_110164_bC", "allowLeashing"));
+ mInitMap.put(new Pair<String, String>("func_110165_bF", "recreateLeash"));
+ mInitMap.put(new Pair<String, String>("func_110166_bE", "getLeashedToEntity"));
+ mInitMap.put(new Pair<String, String>("func_110167_bD", "getLeashed"));
+ mInitMap.put(new Pair<String, String>("func_110171_b", "setHomeArea"));
+ mInitMap.put(new Pair<String, String>("func_110172_bL", "getHomePosition"));
+ mInitMap.put(new Pair<String, String>("func_110173_bK", "isWithinHomeDistanceCurrentPosition"));
+ mInitMap.put(new Pair<String, String>("func_110174_bM", "getMaximumHomeDistance"));
+ mInitMap.put(new Pair<String, String>("func_110175_bO", "hasHome"));
+ mInitMap.put(new Pair<String, String>("func_110176_b", "isWithinHomeDistance"));
+ mInitMap.put(new Pair<String, String>("func_110177_bN", "detachHome"));
+ mInitMap.put(new Pair<String, String>("func_110195_a", "addGrowth"));
+ mInitMap.put(new Pair<String, String>("func_110198_t", "increaseTemper"));
+ mInitMap.put(new Pair<String, String>("func_110199_f", "openGUI"));
+ mInitMap.put(new Pair<String, String>("func_110200_cJ", "canMate"));
+ mInitMap.put(new Pair<String, String>("func_110202_bQ", "getHorseVariant"));
+ mInitMap.put(new Pair<String, String>("func_110204_cc", "isEatingHaystack"));
+ mInitMap.put(new Pair<String, String>("func_110206_u", "setJumpPower"));
+ mInitMap.put(new Pair<String, String>("func_110207_m", "setChested"));
+ mInitMap.put(new Pair<String, String>("func_110208_b", "setHorseWatchableBoolean"));
+ mInitMap.put(new Pair<String, String>("func_110209_cd", "isRearing"));
+ mInitMap.put(new Pair<String, String>("func_110212_cp", "getVariantTexturePaths"));
+ mInitMap.put(new Pair<String, String>("func_110214_p", "setHorseType"));
+ mInitMap.put(new Pair<String, String>("func_110215_cj", "getHorseJumpStrength"));
+ mInitMap.put(new Pair<String, String>("func_110216_r", "spawnHorseParticles"));
+ mInitMap.put(new Pair<String, String>("func_110217_cl", "getAngrySoundName"));
+ mInitMap.put(new Pair<String, String>("func_110218_cm", "getMaxTemper"));
+ mInitMap.put(new Pair<String, String>("func_110219_q", "setRearing"));
+ mInitMap.put(new Pair<String, String>("func_110220_cK", "makeHorseRear"));
+ mInitMap.put(new Pair<String, String>("func_110221_n", "setHasReproduced"));
+ mInitMap.put(new Pair<String, String>("func_110222_cv", "isSterile"));
+ mInitMap.put(new Pair<String, String>("func_110223_p", "getRearingAmount"));
+ mInitMap.put(new Pair<String, String>("func_110224_ci", "dropChests"));
+ mInitMap.put(new Pair<String, String>("func_110227_p", "setEatingHaystack"));
+ mInitMap.put(new Pair<String, String>("func_110228_bR", "isAdultHorse"));
+ mInitMap.put(new Pair<String, String>("func_110229_cs", "canCarryChest"));
+ mInitMap.put(new Pair<String, String>("func_110231_cz", "makeHorseRearWithSound"));
+ mInitMap.put(new Pair<String, String>("func_110233_w", "getHorseWatchableBoolean"));
+ mInitMap.put(new Pair<String, String>("func_110234_j", "setHorseTamed"));
+ mInitMap.put(new Pair<String, String>("func_110235_q", "setHorseVariant"));
+ mInitMap.put(new Pair<String, String>("func_110238_s", "setTemper"));
+ mInitMap.put(new Pair<String, String>("func_110240_a", "dropItemsInChest"));
+ mInitMap.put(new Pair<String, String>("func_110243_cf", "getHasReproduced"));
+ mInitMap.put(new Pair<String, String>("func_110244_cA", "dropChestItems"));
+ mInitMap.put(new Pair<String, String>("func_110246_bZ", "isHorseJumping"));
+ mInitMap.put(new Pair<String, String>("func_110247_cG", "setHorseTexturePaths"));
+ mInitMap.put(new Pair<String, String>("func_110248_bS", "isTame"));
+ mInitMap.put(new Pair<String, String>("func_110249_cI", "openHorseMouth"));
+ mInitMap.put(new Pair<String, String>("func_110250_a", "getClosestHorse"));
+ mInitMap.put(new Pair<String, String>("func_110251_o", "setHorseSaddled"));
+ mInitMap.put(new Pair<String, String>("func_110252_cg", "getTemper"));
+ mInitMap.put(new Pair<String, String>("func_110254_bY", "getHorseSize"));
+ mInitMap.put(new Pair<String, String>("func_110255_k", "setHorseJumping"));
+ mInitMap.put(new Pair<String, String>("func_110256_cu", "isUndead"));
+ mInitMap.put(new Pair<String, String>("func_110257_ck", "isHorseSaddled"));
+ mInitMap.put(new Pair<String, String>("func_110258_o", "getGrassEatingAmount"));
+ mInitMap.put(new Pair<String, String>("func_110259_cr", "canWearArmor"));
+ mInitMap.put(new Pair<String, String>("func_110260_d", "getHorseArmorIndex"));
+ mInitMap.put(new Pair<String, String>("func_110261_ca", "isChested"));
+ mInitMap.put(new Pair<String, String>("func_110262_ch", "prepareChunkForSpawn"));