aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/preloader/asm
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus/preloader/asm')
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/Modify_OreDict.java93
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/Preloader_DummyContainer.java5
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java1
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer.java7
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java36
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java9
6 files changed, 35 insertions, 116 deletions
diff --git a/src/Java/gtPlusPlus/preloader/asm/Modify_OreDict.java b/src/Java/gtPlusPlus/preloader/asm/Modify_OreDict.java
deleted file mode 100644
index b4a8bf5c00..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/Modify_OreDict.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package gtPlusPlus.preloader.asm;
-
-import java.lang.reflect.Field;
-import java.util.*;
-
-import com.google.common.collect.Lists;
-
-import cpw.mods.fml.common.FMLLog;
-import cpw.mods.fml.common.Loader;
-import cpw.mods.fml.common.registry.GameData;
-import gtPlusPlus.core.util.reflect.ReflectionUtils;
-import net.minecraft.item.ItemStack;
-import net.minecraftforge.common.MinecraftForge;
-import net.minecraftforge.oredict.OreDictionary;
-
-@SuppressWarnings("unchecked")
-public class Modify_OreDict extends OreDictionary{
-
- static Field stack;
- static Field id;
-
- private static Map<Integer, List<Integer>> stackToId; // Calculated from 128 * 0.75
- private static List<ArrayList<ItemStack>> idToStack; //ToDo: Unqualify to List when possible {1.8}
-
-
- static {
- try {
- stack = ReflectionUtils.getField(OreDictionary.class, "stackToId");
- id = ReflectionUtils.getField(OreDictionary.class, "idToStack");
- stackToId = (Map<Integer, List<Integer>>) stack.get(OreDictionary.class);
- idToStack = (List<ArrayList<ItemStack>>) stack.get(OreDictionary.class);
- }
- catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) {}
- }
-
- //Utils.LOG_INFO("O-"+(byte) nameField.get(clazz) + " | "+newValue);
-
- /**
- * Registers a ore item into the dictionary.
- * Raises the registerOre function in all registered handlers.
- *
- * @param name The name of the ore
- * @param id The ID of the ore
- * @param ore The ore's ItemStack
- */
- private static void registerOreImpl(String name, ItemStack ore)
- {
- if (name == null || name.isEmpty() || "Unknown".equals(name)) return; //prevent bad IDs.
- if (ore == null || ore.getItem() == null)
- {
- FMLLog.bigWarning("Invalid registration attempt for an Ore Dictionary item with name %s has occurred. The registration has been denied to prevent crashes. The mod responsible for the registration needs to correct this.", name);
- return; //prevent bad ItemStacks.
- }
-
- int oreID = getOreID(name);
- // HACK: use the registry name's ID. It is unique and it knows about substitutions. Fallback to a -1 value (what Item.getIDForItem would have returned) in the case where the registry is not aware of the item yet
- // IT should be noted that -1 will fail the gate further down, if an entry already exists with value -1 for this name. This is what is broken and being warned about.
- // APPARENTLY it's quite common to do this. OreDictionary should be considered alongside Recipes - you can't make them properly until you've registered with the game.
- String registryName = ore.getItem().delegate.name();
- int hash;
- if (registryName == null)
- {
- FMLLog.bigWarning("A broken ore dictionary registration with name %s has occurred. It adds an item (type: %s) which is currently unknown to the game registry. This dictionary item can only support a single value when"
- + " registered with ores like this, and NO I am not going to turn this spam off. Just register your ore dictionary entries after the GameRegistry.\n"
- + "TO USERS: YES this is a BUG in the mod "+Loader.instance().activeModContainer().getName()+" report it to them!", name, ore.getItem().getClass());
- hash = -1;
- }
- else
- {
- hash = GameData.getItemRegistry().getId(registryName);
- }
- if (ore.getItemDamage() != WILDCARD_VALUE)
- {
- hash |= ((ore.getItemDamage() + 1) << 16); // +1 so 0 is significant
- }
-
- //Add things to the baked version, and prevent duplicates
- List<Integer> ids = stackToId.get(hash);
- if (ids != null && ids.contains(oreID)) return;
- if (ids == null)
- {
- ids = Lists.newArrayList();
- stackToId.put(hash, ids);
- }
- ids.add(oreID);
-
- //Add to the unbaked version
- ore = ore.copy();
- idToStack.get(oreID).add(ore);
- MinecraftForge.EVENT_BUS.post(new OreRegisterEvent(name, ore));
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/Preloader_DummyContainer.java b/src/Java/gtPlusPlus/preloader/asm/Preloader_DummyContainer.java
index f5421e7fdd..c175d921b1 100644
--- a/src/Java/gtPlusPlus/preloader/asm/Preloader_DummyContainer.java
+++ b/src/Java/gtPlusPlus/preloader/asm/Preloader_DummyContainer.java
@@ -7,10 +7,13 @@ import java.util.List;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;
-import cpw.mods.fml.common.*;
+import cpw.mods.fml.common.DummyModContainer;
+import cpw.mods.fml.common.LoadController;
import cpw.mods.fml.common.Mod.EventHandler;
+import cpw.mods.fml.common.ModMetadata;
import cpw.mods.fml.common.event.*;
import cpw.mods.fml.common.versioning.ArtifactVersion;
+
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.preloader.CORE_Preloader;
import net.minecraftforge.common.config.Configuration;
diff --git a/src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java b/src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java
index 68aab74a0a..b208c2f8f0 100644
--- a/src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java
+++ b/src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java
@@ -5,6 +5,7 @@ import java.util.Map;
import cpw.mods.fml.relauncher.IFMLLoadingPlugin;
import cpw.mods.fml.relauncher.IFMLLoadingPlugin.MCVersion;
import cpw.mods.fml.relauncher.IFMLLoadingPlugin.SortingIndex;
+
import gtPlusPlus.preloader.asm.transformers.Preloader_Transformer_Handler;
@SortingIndex(10097)
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer.java b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer.java
index 535d1f778b..cba11d4e29 100644
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer.java
+++ b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer.java
@@ -5,9 +5,12 @@ import static org.objectweb.asm.Opcodes.*;
import java.io.File;
import org.apache.logging.log4j.Level;
-import org.objectweb.asm.*;
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.Label;
+import org.objectweb.asm.MethodVisitor;
import cpw.mods.fml.relauncher.FMLRelaunchLog;
+
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.preloader.CORE_Preloader;
@@ -15,7 +18,7 @@ import net.minecraftforge.common.config.Configuration;
public class Preloader_ClassTransformer {
- public boolean getConfig(){
+ public static boolean getConfig(){
final Configuration config = new Configuration( new File(Utils.getMcDir(), "config/GTplusplus/GTplusplus.cfg"));
if (config != null){
config.load();
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java
index c6edd94238..ebe1813e15 100644
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java
+++ b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java
@@ -3,38 +3,38 @@ package gtPlusPlus.preloader.asm.transformers;
import static org.objectweb.asm.Opcodes.*;
import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Random;
+import java.util.*;
import org.apache.logging.log4j.Level;
-import org.objectweb.asm.*;
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.FieldVisitor;
+import org.objectweb.asm.MethodVisitor;
import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gregtech.api.GregTech_API;
-import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
-import gregtech.api.metatileentity.BaseMetaTileEntity;
-import gregtech.api.metatileentity.MetaTileEntity;
-import gregtech.common.blocks.GT_Block_Machines;
-import gtPlusPlus.api.objects.Logger;
-import gtPlusPlus.api.objects.XSTR;
-import gtPlusPlus.core.util.array.BlockPos;
-import gtPlusPlus.core.util.item.ItemUtils;
-import gtPlusPlus.core.util.nbt.NBTUtils;
-import gtPlusPlus.core.util.reflect.ReflectionUtils;
+
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.init.Blocks;
-import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
+import gregtech.api.GregTech_API;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.metatileentity.BaseMetaTileEntity;
+import gregtech.api.metatileentity.MetaTileEntity;
+import gregtech.common.blocks.GT_Block_Machines;
+
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.minecraft.BlockPos;
+import gtPlusPlus.api.objects.random.XSTR;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.minecraft.NBTUtils;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
+
public class Preloader_ClassTransformer2 {
/**
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 9163b54709..9222014092 100644
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
+++ b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
@@ -5,21 +5,26 @@ import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
import cpw.mods.fml.relauncher.FMLRelaunchLog;
+
+import net.minecraft.launchwrapper.IClassTransformer;
+
import gtPlusPlus.preloader.asm.transformers.Preloader_ClassTransformer.OreDictionaryVisitor;
import gtPlusPlus.preloader.asm.transformers.Preloader_ClassTransformer2.GT_MetaTile_Visitor;
-import net.minecraft.launchwrapper.IClassTransformer;
public class Preloader_Transformer_Handler implements IClassTransformer {
private final boolean mEnabled = false;
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();
- }
+ }
+
if (mEnabled) {
if(transformedName.equals("gregtech.api.metatileentity.BaseMetaTileEntity")) {
FMLRelaunchLog.log("[GT++ ASM] NBTFixer", Level.INFO, "Transforming %s", transformedName);