aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Java/gtPlusPlus/core/util/Utils.java9
-rw-r--r--src/Java/gtPlusPlus/preloader/Preloader_GT_OreDict.java54
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/Preloader_ClassTransformer.java149
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java2
4 files changed, 123 insertions, 91 deletions
diff --git a/src/Java/gtPlusPlus/core/util/Utils.java b/src/Java/gtPlusPlus/core/util/Utils.java
index 63137382ae..72124afae9 100644
--- a/src/Java/gtPlusPlus/core/util/Utils.java
+++ b/src/Java/gtPlusPlus/core/util/Utils.java
@@ -2,6 +2,7 @@ package gtPlusPlus.core.util;
import java.awt.Color;
import java.awt.Graphics;
+import java.io.File;
import java.lang.reflect.Method;
import java.util.*;
@@ -26,6 +27,7 @@ import ic2.core.Ic2Items;
import ic2.core.init.InternalName;
import ic2.core.item.resources.ItemCell;
import net.minecraft.block.Block;
+import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraft.item.ItemStack;
@@ -504,6 +506,13 @@ public class Utils {
}
return true;
}
+
+ public static File getMcDir(){
+ if (MinecraftServer.getServer() != null && MinecraftServer.getServer().isDedicatedServer()){
+ return new File(".");
+ }
+ return Minecraft.getMinecraft().mcDataDir;
+ }
private static short cellID = 15;
public static ItemStack createInternalNameAndFluidCell(final String s){
diff --git a/src/Java/gtPlusPlus/preloader/Preloader_GT_OreDict.java b/src/Java/gtPlusPlus/preloader/Preloader_GT_OreDict.java
index 62692f5814..e50e55b6d5 100644
--- a/src/Java/gtPlusPlus/preloader/Preloader_GT_OreDict.java
+++ b/src/Java/gtPlusPlus/preloader/Preloader_GT_OreDict.java
@@ -4,36 +4,38 @@ import gregtech.common.items.GT_MetaGenerated_Item_01;
import net.minecraft.item.ItemStack;
public class Preloader_GT_OreDict {
-
+
public static boolean shouldPreventRegistration(String string, ItemStack circuit) {
- int damageValue = circuit.getItemDamage() - 32000;
- if (circuit.getItem() instanceof GT_MetaGenerated_Item_01) { // 700-720
- if (damageValue >= 700 && damageValue <= 720) {
- return true;
+ if (CORE_Preloader.enableOldGTcircuits){
+ int damageValue = circuit.getItemDamage() - 32000;
+ if (circuit.getItem() instanceof GT_MetaGenerated_Item_01) { // 700-720
+ if (damageValue >= 700 && damageValue <= 720) {
+ return true;
+ }
}
- }
- else {
- try {
- if (Class.forName("gregtech.common.items.GT_MetaGenerated_Item_03") != null) { // 6/11/12/14/16/20/30-57/69-73/79-96
- Class<?> MetaItem03 = Class.forName("gregtech.common.items.GT_MetaGenerated_Item_03");
- if (isInstanceOf(MetaItem03, circuit.getItem())) {
- if (damageValue == 6 || damageValue == 7 || damageValue == 11 || damageValue == 12 || damageValue == 14
- || damageValue == 16 || damageValue == 20 || damageValue == 21 || damageValue == 22) {
- return true;
- }
- else if (damageValue >= 30 && damageValue <= 57) {
- return true;
- }
- else if (damageValue >= 69 && damageValue <= 73) {
- return true;
- }
- else if (damageValue >= 78 && damageValue <= 96) {
- return true;
+ else {
+ try {
+ if (Class.forName("gregtech.common.items.GT_MetaGenerated_Item_03") != null) { // 6/11/12/14/16/20/30-57/69-73/79-96
+ Class<?> MetaItem03 = Class.forName("gregtech.common.items.GT_MetaGenerated_Item_03");
+ if (isInstanceOf(MetaItem03, circuit.getItem())) {
+ if (damageValue == 6 || damageValue == 7 || damageValue == 11 || damageValue == 12 || damageValue == 14
+ || damageValue == 16 || damageValue == 20 || damageValue == 21 || damageValue == 22) {
+ return true;
+ }
+ else if (damageValue >= 30 && damageValue <= 57) {
+ return true;
+ }
+ else if (damageValue >= 69 && damageValue <= 73) {
+ return true;
+ }
+ else if (damageValue >= 78 && damageValue <= 96) {
+ return true;
+ }
}
}
}
- }
- catch (ClassNotFoundException e) {
+ catch (ClassNotFoundException e) {
+ }
}
}
return false;
@@ -43,5 +45,5 @@ public class Preloader_GT_OreDict {
private static boolean isInstanceOf(Class<?> clazz, Object obj) {
return clazz.isInstance(obj);
}
-
+
}
diff --git a/src/Java/gtPlusPlus/preloader/asm/Preloader_ClassTransformer.java b/src/Java/gtPlusPlus/preloader/asm/Preloader_ClassTransformer.java
index f9b1a07269..1d69cb04e7 100644
--- a/src/Java/gtPlusPlus/preloader/asm/Preloader_ClassTransformer.java
+++ b/src/Java/gtPlusPlus/preloader/asm/Preloader_ClassTransformer.java
@@ -2,79 +2,100 @@ package gtPlusPlus.preloader.asm;
import static org.objectweb.asm.Opcodes.*;
+import java.io.File;
+
import org.apache.logging.log4j.Level;
import org.objectweb.asm.*;
+import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.relauncher.FMLRelaunchLog;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.preloader.CORE_Preloader;
import net.minecraft.launchwrapper.IClassTransformer;
+import net.minecraftforge.common.config.Configuration;
public class Preloader_ClassTransformer implements IClassTransformer {
+ public boolean getConfig(){
+ final Configuration config = new Configuration( new File(Utils.getMcDir(), "config/GTplusplus/GTplusplus.cfg"));
+ if (config != null){
+ config.load();
+ // Circuits
+ CORE_Preloader.enableOldGTcircuits = config.getBoolean("enableOldGTcircuits", "gregtech", false,
+ "Restores circuits and their recipes from Pre-5.09.28 times.");
+ Utils.LOG_INFO("GT++ ASM - Loaded the configuration file.");
+ return CORE_Preloader.enableOldGTcircuits;
+ }
+ Utils.LOG_INFO("GT++ ASM - Failed loading the configuration file.");
+ return false;
+ }
+
+
@Override
- public byte[] transform(String name, String transformedName, byte[] basicClass) {
- if(transformedName.equals("net.minecraftforge.oredict.OreDictionary")) {
- FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Transforming %s", transformedName);
- ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
- new ClassReader(basicClass).accept(new OreDictionaryVisitor(classWriter), 0);
- return classWriter.toByteArray();
- }
- return basicClass;
- }
-
-private static final class OreDictionaryVisitor extends ClassVisitor {
-
- public OreDictionaryVisitor(ClassVisitor cv) {
- super(ASM5, cv);
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- MethodVisitor methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- if(name.equals("registerOreImpl") && desc.equals("(Ljava/lang/String;Lnet/minecraft/item/ItemStack;)V")) {
- FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Found target method.");
- return new RegisterOreImplVisitor(methodVisitor);
- }
- else if(name.equals("registerOreImpl") && desc.equals("(Ljava/lang/String;Ladd;)V")) {
- FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Found target method. [Obfuscated]");
- return new RegisterOreImplVisitor(methodVisitor);
- }
- else {
- //FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Dd not find target method.");
- //FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Found: "+name);
- //FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, ""+desc);
- //FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, ""+signature);
- //FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, ""+exceptions);
- }
- return methodVisitor;
- }
-
- }
-
- private static final class RegisterOreImplVisitor extends MethodVisitor {
-
- public RegisterOreImplVisitor(MethodVisitor mv) {
- super(ASM5, mv);
- }
-
- @SuppressWarnings("deprecation")
+ public byte[] transform(String name, String transformedName, byte[] basicClass) {
+ if(transformedName.equals("net.minecraftforge.oredict.OreDictionary")) {
+ FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Transforming %s", transformedName);
+ ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
+ new ClassReader(basicClass).accept(new OreDictionaryVisitor(classWriter), 0);
+ return classWriter.toByteArray();
+ }
+ return basicClass;
+ }
+
+ private static final class OreDictionaryVisitor extends ClassVisitor {
+
+ public OreDictionaryVisitor(ClassVisitor cv) {
+ super(ASM5, cv);
+ }
+
@Override
- public void visitCode() {
- FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Fixing Forge's poor attempt at an oreDictionary.");
- super.visitCode();
- super.visitVarInsn(ALOAD, 0);
- super.visitVarInsn(ALOAD, 1);
- super.visitMethodInsn(INVOKESTATIC,
- //"gtPlusPlus/preloader/Preloader_GT_OreDict", "removeCircuit", "(Lnet/minecraft/item/ItemStack;)Z, false");
- "gtPlusPlus/preloader/Preloader_GT_OreDict",
- "shouldPreventRegistration",
- "(Ljava/lang/String;Lnet/minecraft/item/ItemStack;)Z",
- false);
- Label endLabel = new Label();
- super.visitJumpInsn(IFEQ, endLabel);
- super.visitInsn(RETURN);
- super.visitLabel(endLabel);
- }
-
- }
+ public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
+ MethodVisitor methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
+ if(name.equals("registerOreImpl") && desc.equals("(Ljava/lang/String;Lnet/minecraft/item/ItemStack;)V")) {
+ FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Found target method.");
+ return new RegisterOreImplVisitor(methodVisitor);
+ }
+ else if(name.equals("registerOreImpl") && desc.equals("(Ljava/lang/String;Ladd;)V")) {
+ FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Found target method. [Obfuscated]");
+ return new RegisterOreImplVisitor(methodVisitor);
+ }
+ else {
+ //FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Dd not find target method.");
+ //FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Found: "+name);
+ //FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, ""+desc);
+ //FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, ""+signature);
+ //FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, ""+exceptions);
+ }
+ return methodVisitor;
+ }
+
+ }
+
+ private static final class RegisterOreImplVisitor extends MethodVisitor {
+
+ public RegisterOreImplVisitor(MethodVisitor mv) {
+ super(ASM5, mv);
+ }
+
+ @SuppressWarnings("deprecation")
+ @Override
+ public void visitCode() {
+ FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Fixing Forge's poor attempt at an oreDictionary.");
+ super.visitCode();
+ super.visitVarInsn(ALOAD, 0);
+ super.visitVarInsn(ALOAD, 1);
+ super.visitMethodInsn(INVOKESTATIC,
+ //"gtPlusPlus/preloader/Preloader_GT_OreDict", "removeCircuit", "(Lnet/minecraft/item/ItemStack;)Z, false");
+ "gtPlusPlus/preloader/Preloader_GT_OreDict",
+ "shouldPreventRegistration",
+ "(Ljava/lang/String;Lnet/minecraft/item/ItemStack;)Z",
+ false);
+ Label endLabel = new Label();
+ super.visitJumpInsn(IFEQ, endLabel);
+ super.visitInsn(RETURN);
+ super.visitLabel(endLabel);
+ }
+
+ }
}
diff --git a/src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java b/src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java
index 458dd5fdea..f6e5d49906 100644
--- a/src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java
+++ b/src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java
@@ -6,7 +6,7 @@ import cpw.mods.fml.relauncher.IFMLLoadingPlugin;
import cpw.mods.fml.relauncher.IFMLLoadingPlugin.MCVersion;
import cpw.mods.fml.relauncher.IFMLLoadingPlugin.SortingIndex;
-@SortingIndex(10000)
+@SortingIndex(10097)
@MCVersion(value = "1.7.10")
public class Preloader_FMLLoadingPlugin implements IFMLLoadingPlugin {