aboutsummaryrefslogtreecommitdiff
path: root/src/Java
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java')
-rw-r--r--src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java4
-rw-r--r--src/Java/gtPlusPlus/core/recipe/RECIPES_General.java6
-rw-r--r--src/Java/gtPlusPlus/preloader/DevHelper.java20
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TiConFluids.java123
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java42
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java63
7 files changed, 246 insertions, 14 deletions
diff --git a/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java b/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java
index 207e2b5bc8..2b442823b4 100644
--- a/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java
+++ b/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java
@@ -98,9 +98,9 @@ public class COMPAT_HANDLER {
GregtechSemiFluidgenerators.run();
GregtechAdvancedMixer.run();
GregtechWirelessChargers.run();
- //GregtechIndustrialGeneratorArray.run();
+ GregtechIndustrialGeneratorArray.run();
GregtechIndustrialCuttingFactory.run();
- //GregtechMiniRaFusion.run();
+ GregtechMiniRaFusion.run();
GregtechComponentAssembler.run();
GregtechTeslaTower.run();
GregtechSuperChests.run();
diff --git a/src/Java/gtPlusPlus/core/recipe/RECIPES_General.java b/src/Java/gtPlusPlus/core/recipe/RECIPES_General.java
index 243e169d48..70df48ed81 100644
--- a/src/Java/gtPlusPlus/core/recipe/RECIPES_General.java
+++ b/src/Java/gtPlusPlus/core/recipe/RECIPES_General.java
@@ -285,7 +285,7 @@ public class RECIPES_General {
}
private static void addHandPumpRecipes() {
- /*if (RecipeUtils.recipeBuilder(
+ if (RecipeUtils.recipeBuilder(
CI.electricPump_LV, "circuitBasic", null,
"ringBrass", CI.electricMotor_LV, "circuitBasic",
"plateSteel", "plateSteel", "rodBrass",
@@ -306,9 +306,9 @@ public class RECIPES_General {
if (RecipeUtils.recipeBuilder(
CI.electricPump_EV, "circuitElite", null,
"ringTitanium", CI.electricMotor_EV, "circuitElite",
- "plateStungstenSteel", "plateTungstenSteel", "rodTitanium",
+ "plateTungstenSteel", "plateTungstenSteel", "rodTitanium",
ItemUtils.simpleMetaStack(ModItems.itemGenericToken, 4, 1)))
- Logger.INFO("Added recipe for Hand Pump IV - true");*/
+ Logger.INFO("Added recipe for Hand Pump IV - true");
diff --git a/src/Java/gtPlusPlus/preloader/DevHelper.java b/src/Java/gtPlusPlus/preloader/DevHelper.java
index 5b6a92b8f5..1be486724a 100644
--- a/src/Java/gtPlusPlus/preloader/DevHelper.java
+++ b/src/Java/gtPlusPlus/preloader/DevHelper.java
@@ -1,5 +1,6 @@
package gtPlusPlus.preloader;
+import java.io.IOException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
@@ -7,6 +8,7 @@ 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 {
@@ -26,6 +28,24 @@ public class DevHelper {
public DevHelper() {
}
+
+
+
+ public 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 Method getForgeMethod(Class c, String s, Class... varags) {
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TiConFluids.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TiConFluids.java
new file mode 100644
index 0000000000..673df98c82
--- /dev/null
+++ b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TiConFluids.java
@@ -0,0 +1,123 @@
+package gtPlusPlus.preloader.asm.transformers;
+
+import static org.objectweb.asm.Opcodes.*;
+
+import java.io.IOException;
+
+import org.apache.logging.log4j.Level;
+import org.objectweb.asm.ClassReader;
+import org.objectweb.asm.ClassWriter;
+import org.objectweb.asm.Label;
+import org.objectweb.asm.MethodVisitor;
+
+import cpw.mods.fml.relauncher.FMLRelaunchLog;
+import gtPlusPlus.preloader.DevHelper;
+import gtPlusPlus.preloader.asm.transformers.Preloader_ClassTransformer.OreDictionaryVisitor;
+
+
+public class ClassTransformer_TiConFluids {
+
+
+ //Leftover Code, in case I ever want to inject interfaces.
+ //private static final String cloneableInterface = "java/lang/Cloneable";
+
+ //The qualified name of the class we plan to transform.
+ private static final String className = "tconstruct.smeltery.blocks.TConstructFluid";
+
+ private final boolean isValid;
+ private final boolean isObfuscated;
+ private final String methodName;
+ private final ClassReader reader;
+ private final ClassWriter writer;
+
+ public ClassTransformer_TiConFluids(String aMethodName, boolean obfuscated, byte[] basicClass) {
+ isObfuscated = obfuscated;
+ methodName = obfuscated ? DevHelper.getInstance().getSRG(aMethodName) : aMethodName;
+ ClassReader aTempReader = null;
+ ClassWriter aTempWriter = null;
+ try {
+ aTempReader = new ClassReader(className);
+ aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
+ new ClassReader(basicClass).accept(new OreDictionaryVisitor(aTempWriter), 0);
+ } catch (IOException e) {}
+ if (aTempReader != null && aTempWriter != null) {
+ isValid = true;
+ }
+ else {
+ isValid = false;
+ }
+ reader = aTempReader;
+ writer = aTempWriter;
+
+ if (reader != null && writer != null) {
+ injectMethod();
+ }
+
+ }
+
+ public boolean isValidTransformer() {
+ return isValid;
+ }
+
+ public ClassReader getReader() {
+ return reader;
+ }
+
+ public ClassWriter getWriter() {
+ return writer;
+ }
+
+ public void injectMethod() {
+ if (isValidTransformer()) {
+ FMLRelaunchLog.log("[GT++ ASM] Bright Fluids", Level.INFO, "Injecting "+methodName+" into "+className+". ["+(isObfuscated ? "Obfuscated" : "Unobfuscated")+"]");
+ //Account for Obfuscated constructor args.
+ String IBlockAccessName = isObfuscated ? "ahl" : "net/minecraft/world/IBlockAccess";
+ String aConstructorTypes = "(L"+IBlockAccessName+";III)I";
+
+ MethodVisitor mv = getWriter().visitMethod(ACC_PUBLIC, methodName, aConstructorTypes, null, null);
+ mv.visitCode();
+ Label l0 = new Label();
+ mv.visitLabel(l0);
+ mv.visitLineNumber(17, l0);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitFieldInsn(GETFIELD, "tconstruct/smeltery/blocks/TConstructFluid", "maxScaledLight", "I");
+ mv.visitVarInsn(ISTORE, 5);
+ Label l1 = new Label();
+ mv.visitLabel(l1);
+ mv.visitLineNumber(18, l1);
+ mv.visitVarInsn(ILOAD, 5);
+ Label l2 = new Label();
+ mv.visitJumpInsn(IFLE, l2);
+ Label l3 = new Label();
+ mv.visitLabel(l3);
+ mv.visitLineNumber(19, l3);
+ mv.visitVarInsn(ILOAD, 5);
+ mv.visitInsn(IRETURN);
+ mv.visitLabel(l2);
+ mv.visitLineNumber(21, l2);
+ mv.visitFrame(F_APPEND,1, new Object[] {INTEGER}, 0, null);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 1);
+ mv.visitVarInsn(ILOAD, 2);
+ mv.visitVarInsn(ILOAD, 3);
+ mv.visitVarInsn(ILOAD, 4);
+ //net.minecraftforge.fluids.BlockFluidClassic.getLightValue(IBlockAccess, int, int, int)
+ mv.visitMethodInsn(INVOKESPECIAL, "net/minecraftforge/fluids/BlockFluidClassic", methodName, aConstructorTypes, false);
+ mv.visitInsn(IRETURN);
+ Label l4 = new Label();
+ mv.visitLabel(l4);
+ mv.visitLocalVariable("this", "Ltconstruct/smeltery/blocks/TConstructFluid;", null, l0, l4, 0);
+ mv.visitLocalVariable("world", "L"+IBlockAccessName+";", null, l0, l4, 1);
+ mv.visitLocalVariable("x", "I", null, l0, l4, 2);
+ mv.visitLocalVariable("y", "I", null, l0, l4, 3);
+ mv.visitLocalVariable("z", "I", null, l0, l4, 4);
+ mv.visitLocalVariable("maxLight", "I", null, l1, l4, 5);
+ mv.visitMaxs(5, 6);
+ mv.visitEnd();
+ FMLRelaunchLog.log("[GT++ ASM] Bright Fluids", Level.INFO, "Method injection complete.");
+
+ }
+ }
+
+
+}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
index 9222014092..7d7e7b80ca 100644
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
+++ b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
@@ -1,13 +1,16 @@
package gtPlusPlus.preloader.asm.transformers;
+import java.io.IOException;
+
import org.apache.logging.log4j.Level;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
+import cpw.mods.fml.relauncher.CoreModManager;
import cpw.mods.fml.relauncher.FMLRelaunchLog;
-
+import cpw.mods.fml.relauncher.ReflectionHelper;
import net.minecraft.launchwrapper.IClassTransformer;
-
+import net.minecraft.launchwrapper.Launch;
import gtPlusPlus.preloader.asm.transformers.Preloader_ClassTransformer.OreDictionaryVisitor;
import gtPlusPlus.preloader.asm.transformers.Preloader_ClassTransformer2.GT_MetaTile_Visitor;
@@ -17,23 +20,50 @@ public class Preloader_Transformer_Handler implements IClassTransformer {
public byte[] transform(String name, String transformedName, byte[] basicClass) {
+
+ // Is this environment obfuscated? (Extra checks just in case some weird shit happens during the check)
+ boolean obfuscated = false;
+ try {
+ obfuscated = !(boolean) ReflectionHelper.findField(CoreModManager.class, "deobfuscatedEnvironment").get(null);
+ } catch (IllegalArgumentException | IllegalAccessException e) {
+ e.printStackTrace();
+ byte[] bs;
+ try {
+ bs = Launch.classLoader.getClassBytes("net.minecraft.world.World");
+ if (bs != null) {
+ obfuscated = false;
+ } else {
+ obfuscated = true;
+ }
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ obfuscated = false;
+ }
+ }
- if(transformedName.equals("net.minecraftforge.oredict.OreDictionary")) {
+ // Fix the OreDictionary
+ 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();
- }
+ }
+
+ // Fix Tinkers Fluids
+ if (transformedName.equals("tconstruct.smeltery.blocks.TConstructFluid")) {
+ FMLRelaunchLog.log("[GT++ ASM] Bright Fluids", Level.INFO, "Transforming %s", transformedName);
+ return new ClassTransformer_TiConFluids("getLightValue", obfuscated, basicClass).getWriter().toByteArray();
+ }
if (mEnabled) {
- if(transformedName.equals("gregtech.api.metatileentity.BaseMetaTileEntity")) {
+ if (transformedName.equals("gregtech.api.metatileentity.BaseMetaTileEntity")) {
FMLRelaunchLog.log("[GT++ ASM] NBTFixer", Level.INFO, "Transforming %s", transformedName);
ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
ClassReader x = new ClassReader(basicClass);
x.accept(new GT_MetaTile_Visitor(classWriter, false), ClassReader.EXPAND_FRAMES);
return classWriter.toByteArray();
}
- if(transformedName.equals("gregtech.common.blocks.GT_Block_Machines")) {
+ if (transformedName.equals("gregtech.common.blocks.GT_Block_Machines")) {
FMLRelaunchLog.log("[GT++ ASM] NBTFixer", Level.INFO, "Transforming %s", transformedName);
ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
ClassReader x = new ClassReader(basicClass);
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java b/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java
index d64fecb032..182d30e5c5 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java
@@ -121,7 +121,7 @@ public class HANDLER_GT {
long rotorDurabilityMax = GT_MetaGenerated_Tool.getToolMaxDamage(aI);
//Logger.INFO("Found "+aType+"Turbine made out of "+getMaterialName(aMainMaterial)+", using "+getMaterialName(aSecondaryMaterial));
if (rotorDurabilityMax < aCutoff) {
- Logger.INFO("[Turbine Cleanup] "+getMaterialName(aMainMaterial)+" "+aType+"Turbines have "+rotorDurabilityMax+", which is below the cutoff durability of "+aCutoff+", disabling.");
+ Logger.WARNING("[Turbine Cleanup] "+getMaterialName(aMainMaterial)+" "+aType+"Turbines have "+rotorDurabilityMax+", which is below the cutoff durability of "+aCutoff+", disabling.");
aG.mEnabled = false;
aG.mHidden = true;
aG.mCanBeBuffered = false;
diff --git a/src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java b/src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java
index 3ece2cc61d..501fe6579a 100644
--- a/src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java
+++ b/src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java
@@ -1,7 +1,13 @@
package gtPlusPlus.xmod.tinkers;
+import java.lang.reflect.Field;
+
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.core.lib.LoadedMods;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
import gtPlusPlus.xmod.tinkers.util.TinkersUtils;
+import net.minecraft.block.Block;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
@@ -27,8 +33,61 @@ public class HANDLER_Tinkers {
public static final void postInit() {
if (LoadedMods.TiCon) {
-
- }
+ Class aTinkersSmeltery = ReflectionUtils.getClassByName("tconstruct.smeltery.TinkerSmeltery");
+ AutoMap<Fluid> aTweakedFluids = new AutoMap<Fluid>();
+ if (aTinkersSmeltery != null) {
+ try {
+ Logger.INFO("Manipulating the light levels of fluids in TiCon. Molten 'metals' in world are now very luminescent!");
+ Field aFluidArrayField = ReflectionUtils.getField(aTinkersSmeltery, "fluids");
+ Field aBlockArrayField = ReflectionUtils.getField(aTinkersSmeltery, "fluidBlocks");
+ Fluid[] aTiconFluids = (Fluid[]) aFluidArrayField.get(null);
+ Block[] aTiconFluidBlocks = (Block[]) aBlockArrayField.get(null);
+ if (aTiconFluids != null && aTiconFluidBlocks != null) {
+ for (Fluid a : aTiconFluids) {
+ if (a == null) {
+ continue;
+ } else {
+ if (a.getLuminosity() <= 15) {
+ //if (a.getTemperature() >= 500) {
+ a.setLuminosity(16);
+ aTweakedFluids.put(a);
+ //}
+ } else {
+ aTweakedFluids.put(a);
+ continue;
+ }
+ }
+ }
+ for (Block a : aTiconFluidBlocks) {
+ if (a == null) {
+ continue;
+ } else {
+ Fluid f = FluidRegistry.lookupFluidForBlock(a);
+ boolean isHot = false;
+ if (f != null && f.getTemperature() >= 500) {
+ if (f.getLuminosity() <= 16 && !aTweakedFluids.containsValue(f)) {
+ f.setLuminosity(16);
+ }
+ isHot = true;
+ }
+ if (a.getLightValue() <= 16f) {
+ if (isHot) {
+ a.setLightLevel(16f);
+ } else {
+ if (a.getLightValue() <= 16f) {
+ a.setLightLevel(16f);
+ }
+ }
+ } else {
+ continue;
+ }
+ }
+ }
+ }
+ } catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) {
+ }
+ }
+ }
}
}