aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/preloader/asm
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gtPlusPlus/preloader/asm')
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/AsmConfig.java13
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/ClassesToTransform.java37
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/Preloader_DummyContainer.java53
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java49
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/Preloader_SetupClass.java18
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java22
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_ChunkLoading.java2106
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_LWJGL_Keyboard.java8
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ItemWispEssence.java10
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TT_ThaumicRestorer.java769
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java14
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java138
12 files changed, 1168 insertions, 2069 deletions
diff --git a/src/main/java/gtPlusPlus/preloader/asm/AsmConfig.java b/src/main/java/gtPlusPlus/preloader/asm/AsmConfig.java
index 35684c267a..8cdc772c39 100644
--- a/src/main/java/gtPlusPlus/preloader/asm/AsmConfig.java
+++ b/src/main/java/gtPlusPlus/preloader/asm/AsmConfig.java
@@ -13,7 +13,6 @@ import gtPlusPlus.preloader.Preloader_Logger;
public class AsmConfig {
- public static boolean loaded;
public static Configuration config;
public static boolean enableOreDictPatch;
@@ -30,16 +29,14 @@ public class AsmConfig {
public static boolean disableAllLogging;
public static boolean debugMode;
- public AsmConfig(File file) {
- if (!loaded) {
- config = new Configuration(file);
- syncConfig(true);
- }
+ static {
+ config = new Configuration(new File("config/GTplusplus/asm.cfg"));
+ syncConfig(true);
}
public static void syncConfig(boolean load) {
- ArrayList<String> propOrder = new ArrayList<String>();
- ArrayList<String> propOrderDebug = new ArrayList<String>();
+ ArrayList<String> propOrder = new ArrayList<>();
+ ArrayList<String> propOrderDebug = new ArrayList<>();
try {
if (!config.isChild && load) {
diff --git a/src/main/java/gtPlusPlus/preloader/asm/ClassesToTransform.java b/src/main/java/gtPlusPlus/preloader/asm/ClassesToTransform.java
deleted file mode 100644
index d2a03b2522..0000000000
--- a/src/main/java/gtPlusPlus/preloader/asm/ClassesToTransform.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package gtPlusPlus.preloader.asm;
-
-public class ClassesToTransform {
-
- public static final String LWJGL_KEYBOARD = "org.lwjgl.input.Keyboard";
-
- public static final String MINECRAFT_GAMESETTINGS = "net.minecraft.client.settings.GameSettings";
- public static final String MINECRAFT_GAMESETTINGS_OBF = "bbj";
-
- public static final String FORGE_CHUNK_MANAGER = "net.minecraftforge.common.ForgeChunkManager";
- public static final String FORGE_ORE_DICTIONARY = "net.minecraftforge.oredict.OreDictionary";
-
- public static final String COFH_ORE_DICTIONARY_ARBITER = "cofh.core.util.oredict.OreDictionaryArbiter";
-
- public static final String THAUMCRAFT_ITEM_WISP_ESSENCE = "thaumcraft.common.items.ItemWispEssence";
- public static final String THAUMCRAFT_CRAFTING_MANAGER = "thaumcraft.common.lib.crafting.ThaumcraftCraftingManager";
- public static final String THAUMCRAFT_TILE_ALCHEMY_FURNACE = "thaumcraft.common.tiles.TileAlchemyFurnace";
- public static final String THAUMICTINKERER_TILE_REPAIRER = "thaumic.tinkerer.common.block.tile.TileRepairer";
-
- public static final String IC2_ITEM_ARMOUR_HAZMAT = "ic2.core.item.armor.ItemArmorHazmat";
- public static final String IC2_BLOCK_BASE_TILE_ENTITY = "ic2.core.block.BlockTileEntity";
- public static final String IC2_BLOCK_MACHINE1 = "ic2.core.block.machine.BlockMachine";
- public static final String IC2_BLOCK_MACHINE2 = "ic2.core.block.machine.BlockMachine2";
- public static final String IC2_BLOCK_MACHINE3 = "ic2.core.block.machine.BlockMachine3";
- public static final String IC2_BLOCK_KINETIC_GENERATOR = "ic2.core.block.kineticgenerator.block.BlockKineticGenerator";
- public static final String IC2_BLOCK_HEAT_GENERATOR = "ic2.core.block.heatgenerator.block.BlockHeatGenerator";
- public static final String IC2_BLOCK_GENERATOR = "ic2.core.block.generator.block.BlockGenerator";
- public static final String IC2_BLOCK_REACTOR_ACCESS_HATCH = "ic2.core.block.reactor.block.BlockReactorAccessHatch";
- public static final String IC2_BLOCK_REACTOR_CHAMBER = "ic2.core.block.reactor.block.BlockReactorChamber";
- public static final String IC2_BLOCK_REACTOR_FLUID_PORT = "ic2.core.block.reactor.block.BlockReactorFluidPort";
- public static final String IC2_BLOCK_REACTOR_REDSTONE_PORT = "ic2.core.block.reactor.block.BlockReactorRedstonePort";
- public static final String IC2_BLOCK_REACTOR_VESSEL = "ic2.core.block.reactor.block.BlockReactorVessel";
- public static final String IC2_BLOCK_PERSONAL = "ic2.core.block.personal.BlockPersonal.class";
- public static final String IC2_BLOCK_CHARGEPAD = "ic2.core.block.wiring.BlockChargepad.class";
- public static final String IC2_BLOCK_ELECTRIC = "ic2.core.block.wiring.BlockElectric.class";
- public static final String IC2_BLOCK_LUMINATOR = "ic2.core.block.wiring.BlockLuminator.class";
-}
diff --git a/src/main/java/gtPlusPlus/preloader/asm/Preloader_DummyContainer.java b/src/main/java/gtPlusPlus/preloader/asm/Preloader_DummyContainer.java
index 41cba8d85b..b157424e6e 100644
--- a/src/main/java/gtPlusPlus/preloader/asm/Preloader_DummyContainer.java
+++ b/src/main/java/gtPlusPlus/preloader/asm/Preloader_DummyContainer.java
@@ -4,7 +4,7 @@ import static gregtech.api.enums.Mods.GTPlusPlus;
import static gregtech.api.enums.Mods.GregTech;
import java.io.File;
-import java.util.Arrays;
+import java.util.Collections;
import net.minecraftforge.common.config.Configuration;
@@ -14,9 +14,6 @@ import com.google.common.eventbus.Subscribe;
import cpw.mods.fml.common.DummyModContainer;
import cpw.mods.fml.common.LoadController;
import cpw.mods.fml.common.ModMetadata;
-import cpw.mods.fml.common.event.FMLConstructionEvent;
-import cpw.mods.fml.common.event.FMLInitializationEvent;
-import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import gtPlusPlus.preloader.CORE_Preloader;
import gtPlusPlus.preloader.Preloader_Logger;
@@ -30,15 +27,9 @@ public class Preloader_DummyContainer extends DummyModContainer {
meta.name = CORE_Preloader.NAME;
meta.version = CORE_Preloader.VERSION;
meta.credits = "Roll Credits ...";
- meta.authorList = Arrays.asList("Alkalus");
- meta.description = "";
- meta.url = "";
- meta.updateUrl = "";
+ meta.authorList = Collections.singletonList("Alkalus");
meta.screenshots = new String[0];
- meta.logoFile = "";
meta.parent = GTPlusPlus.ID;
- // meta.dependencies = (List<ArtifactVersion>) CORE_Preloader.DEPENDENCIES;
- Preloader_Logger.INFO("Initializing DummyModContainer");
}
@Override
@@ -48,27 +39,12 @@ public class Preloader_DummyContainer extends DummyModContainer {
}
@Subscribe
- public void modConstruction(FMLConstructionEvent evt) {
- Preloader_Logger.INFO("Constructing DummyModContainer");
- }
-
- @Subscribe
public void preInit(FMLPreInitializationEvent event) {
Preloader_Logger.INFO("Loading " + CORE_Preloader.MODID + " V" + CORE_Preloader.VERSION);
// Handle GT++ Config
handleConfigFile(event);
}
- @Subscribe
- public void init(FMLInitializationEvent evt) {
- Preloader_Logger.INFO("Begin resource allocation for " + CORE_Preloader.MODID + " V" + CORE_Preloader.VERSION);
- }
-
- @Subscribe
- public void postInit(FMLPostInitializationEvent evt) {
- Preloader_Logger.INFO("Finished loading.");
- }
-
public static void handleConfigFile(final FMLPreInitializationEvent event) {
final Configuration config = new Configuration(
new File(event.getModConfigurationDirectory(), "GTplusplus/GTplusplus.cfg"));
@@ -91,29 +67,4 @@ public class Preloader_DummyContainer extends DummyModContainer {
"Restores circuits and their recipes from Pre-5.09.28 times.");
}
- public static boolean getConfig() {
- final Configuration config = new Configuration(
- new File(gtPlusPlus.preloader.CORE_Preloader.MC_DIR, "config/GTplusplus/GTplusplus.cfg"));
- if (config != null) {
- config.load();
- // Circuits
- CORE_Preloader.enableOldGTcircuits = config.getBoolean(
- "enableOldGTcircuits",
- GregTech.ID,
- false,
- "Restores circuits and their recipes from Pre-5.09.28 times.");
- CORE_Preloader.enableWatchdogBGM = config.getInt(
- "enableWatchdogBGM",
- "features",
- 0,
- 0,
- Short.MAX_VALUE,
- "Set to a value greater than 0 to reduce the ticks taken to delay between BGM tracks. Acceptable Values are 1-32767, where 0 is disabled. Vanilla Uses 12,000 & 24,000. 200 is 10s.");
-
- Preloader_Logger.INFO("Loaded the configuration file.");
- return true;
- }
- Preloader_Logger.INFO("Failed loading the configuration file.");
- return false;
- }
}
diff --git a/src/main/java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java b/src/main/java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java
index 16095d00e4..cdd25bb268 100644
--- a/src/main/java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java
+++ b/src/main/java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java
@@ -1,18 +1,12 @@
package gtPlusPlus.preloader.asm;
import java.io.File;
-import java.text.NumberFormat;
-import java.util.Locale;
import java.util.Map;
-import net.minecraft.launchwrapper.Launch;
-
import cpw.mods.fml.relauncher.IFMLLoadingPlugin;
import cpw.mods.fml.relauncher.IFMLLoadingPlugin.MCVersion;
import cpw.mods.fml.relauncher.IFMLLoadingPlugin.SortingIndex;
-import gtPlusPlus.core.util.reflect.ReflectionUtils;
import gtPlusPlus.preloader.CORE_Preloader;
-import gtPlusPlus.preloader.Preloader_Logger;
import gtPlusPlus.preloader.asm.transformers.Preloader_Transformer_Handler;
@SortingIndex(10097)
@@ -21,12 +15,6 @@ import gtPlusPlus.preloader.asm.transformers.Preloader_Transformer_Handler;
@IFMLLoadingPlugin.Name(CORE_Preloader.NAME)
public class Preloader_FMLLoadingPlugin implements IFMLLoadingPlugin {
- // -Dfml.coreMods.load=gtPlusPlus.preloader.asm.Preloader_FMLLoadingPlugin
-
- static {
- Preloader_Logger.INFO("Initializing IFMLLoadingPlugin");
- }
-
@Override
public String getAccessTransformerClass() {
return null;
@@ -34,61 +22,26 @@ public class Preloader_FMLLoadingPlugin implements IFMLLoadingPlugin {
@Override
public String[] getASMTransformerClass() {
- // This will return the name of the class
return new String[] { Preloader_Transformer_Handler.class.getName() };
}
@Override
public String getModContainerClass() {
- // This is the name of our dummy container
return Preloader_DummyContainer.class.getName();
}
@Override
public String getSetupClass() {
- // return Preloader_SetupClass.class.getName();
return null;
}
@Override
public void injectData(Map<String, Object> data) {
- boolean isDeObf = (boolean) data.get("runtimeDeobfuscationEnabled");
+ CORE_Preloader.DEV_ENVIRONMENT = !(boolean) data.get("runtimeDeobfuscationEnabled");
File mcDir = (File) data.get("mcLocation");
- // LaunchClassLoader classLoader = (LaunchClassLoader) data.get("classLoader");
- File coremodLocation = (File) data.get("coremodLocation");
- String deobfuscationFileName = (String) data.get("deobfuscationFileName");
if (mcDir != null && mcDir.exists()) {
CORE_Preloader.setMinecraftDirectory(mcDir);
- Preloader_Logger.INFO("Set McDir via Preloader_SetupClass");
- }
- Preloader_Logger.INFO("runtimeDeobfuscationEnabled: " + isDeObf);
- Preloader_Logger.INFO("deobfuscationFileName: " + deobfuscationFileName);
- if (coremodLocation != null && coremodLocation.exists()) {
- Preloader_Logger.INFO("coremodLocation: " + coremodLocation.getPath());
- } else {
- Preloader_Logger.INFO("coremodLocation: null");
- Preloader_Logger.ERROR("Unable to determine CoreMod location");
}
- CORE_Preloader.DEV_ENVIRONMENT = (Boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment");
CORE_Preloader.DEBUG_MODE = AsmConfig.debugMode;
- Preloader_Logger.INFO(
- "Running on " + gtPlusPlus.preloader.CORE_Preloader.JAVA_VERSION
- + " | Development Environment: "
- + CORE_Preloader.DEV_ENVIRONMENT);
- // Preloader_Logger.INFO("Is Client? "+Utils.isClient()+" | Is Server? "+Utils.isServer());
- Locale aDefaultLocale = Locale.getDefault();
- NumberFormat aFormat = NumberFormat.getInstance();
- Locale aDisplayLocale = ReflectionUtils
- .getFieldValue(ReflectionUtils.getField(Locale.class, "defaultDisplayLocale"));
- Locale aFormatLocale = ReflectionUtils
- .getFieldValue(ReflectionUtils.getField(Locale.class, "defaultFormatLocale"));
- Preloader_Logger.INFO(
- "Locale: " + aDefaultLocale
- + " | Test: "
- + aFormat.format(1000000000)
- + " | Display: "
- + aDisplayLocale
- + " | Format: "
- + aFormatLocale);
}
}
diff --git a/src/main/java/gtPlusPlus/preloader/asm/Preloader_SetupClass.java b/src/main/java/gtPlusPlus/preloader/asm/Preloader_SetupClass.java
deleted file mode 100644
index 28f28e783b..0000000000
--- a/src/main/java/gtPlusPlus/preloader/asm/Preloader_SetupClass.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package gtPlusPlus.preloader.asm;
-
-import java.util.Map;
-
-import cpw.mods.fml.relauncher.IFMLCallHook;
-import gtPlusPlus.preloader.Preloader_Logger;
-
-public class Preloader_SetupClass implements IFMLCallHook {
-
- @Override
- public Void call() throws Exception {
- Preloader_Logger.INFO("Executing IFMLCallHook");
- return null;
- }
-
- @Override
- public void injectData(Map<String, Object> data) {}
-}
diff --git a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java
index 29998800a0..84fecda974 100644
--- a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java
+++ b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java
@@ -29,7 +29,6 @@ import cpw.mods.fml.relauncher.FMLRelaunchLog;
import gnu.trove.map.TMap;
import gnu.trove.map.hash.THashMap;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
-import gtPlusPlus.preloader.DevHelper;
public class ClassTransformer_COFH_OreDictionaryArbiter {
@@ -75,14 +74,7 @@ public class ClassTransformer_COFH_OreDictionaryArbiter {
public void injectMethod(String aMethodName) {
- boolean isObfuscated;
- try {
- isObfuscated = Class.forName("net.minecraft.item.ItemStack") != null ? false : true;
- } catch (ClassNotFoundException e) {
- isObfuscated = true;
- }
- String aItemStack = isObfuscated ? DevHelper.getObfuscated("net/minecraft/item/ItemStack")
- : "net/minecraft/item/ItemStack";
+ String aItemStack = "net/minecraft/item/ItemStack";
MethodVisitor mv;
if (aMethodName.equals("registerOreDictionaryEntry")) {
FMLRelaunchLog.log(
@@ -158,9 +150,9 @@ public class ClassTransformer_COFH_OreDictionaryArbiter {
.getField(OreDictionaryArbiter.class, "stackNames").get(null);
} catch (Throwable t) {
oreIDs = HashBiMap.create();
- oreStacks = new THashMap<Integer, ArrayList<ItemStack>>();
- stackIDs = new THashMap<ItemWrapper, ArrayList<Integer>>();
- stackNames = new THashMap<ItemWrapper, ArrayList<String>>();
+ oreStacks = new THashMap<>();
+ stackIDs = new THashMap<>();
+ stackNames = new THashMap<>();
}
}
@@ -173,13 +165,13 @@ public class ClassTransformer_COFH_OreDictionaryArbiter {
int arg1 = OreDictionary.getOreID(arg0);
oreIDs.put(arg0, Integer.valueOf(arg1));
if (!oreStacks.containsKey(Integer.valueOf(arg1))) {
- oreStacks.put(Integer.valueOf(arg1), new ArrayList<ItemStack>());
+ oreStacks.put(Integer.valueOf(arg1), new ArrayList<>());
}
((ArrayList<ItemStack>) oreStacks.get(Integer.valueOf(arg1))).add(arg);
ItemWrapper arg2 = ItemWrapper.fromItemStack(arg);
if (!stackIDs.containsKey(arg2)) {
- stackIDs.put(arg2, new ArrayList<Integer>());
- stackNames.put(arg2, new ArrayList<String>());
+ stackIDs.put(arg2, new ArrayList<>());
+ stackNames.put(arg2, new ArrayList<>());
}
((ArrayList<Integer>) stackIDs.get(arg2)).add(Integer.valueOf(arg1));
((ArrayList<String>) stackNames.get(arg2)).add(arg0);
diff --git a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_ChunkLoading.java b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_ChunkLoading.java
index cda4384f7d..9b6ec4bb25 100644
--- a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_ChunkLoading.java
+++ b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_ChunkLoading.java
@@ -50,7 +50,6 @@ import org.objectweb.asm.Label;
import org.objectweb.asm.MethodVisitor;
import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gtPlusPlus.preloader.DevHelper;
public class ClassTransformer_Forge_ChunkLoading {
@@ -71,8 +70,8 @@ public class ClassTransformer_Forge_ChunkLoading {
public ClassTransformer_Forge_ChunkLoading(byte[] basicClass, boolean obfuscated) {
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
+ ClassReader aTempReader;
+ ClassWriter aTempWriter;
aTempReader = new ClassReader(basicClass);
aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
@@ -88,11 +87,9 @@ public class ClassTransformer_Forge_ChunkLoading {
if (reader != null && writer != null && !doesMethodAlreadyExist) {
- aChunkCoordIntPair = obfuscated ? DevHelper.getObfuscated("net/minecraft/world/ChunkCoordIntPair")
- : "net/minecraft/world/ChunkCoordIntPair";
- aWorld = obfuscated ? DevHelper.getObfuscated("net/minecraft/world/World") : "net/minecraft/world/World";
- aEntity = obfuscated ? DevHelper.getObfuscated("net/minecraft/entity/Entity")
- : "net/minecraft/entity/Entity";
+ aChunkCoordIntPair = "net/minecraft/world/ChunkCoordIntPair";
+ aWorld = "net/minecraft/world/World";
+ aEntity = "net/minecraft/entity/Entity";
injectMethod("forceChunk");
injectMethod("unforceChunk");
@@ -101,14 +98,6 @@ public class ClassTransformer_Forge_ChunkLoading {
}
}
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
public ClassWriter getWriter() {
return writer;
}
@@ -119,993 +108,1115 @@ public class ClassTransformer_Forge_ChunkLoading {
"[GT++ ASM] Chunkloading Patch",
Level.INFO,
"Injecting " + aMethodName + " into " + className + ".");
- if (aMethodName.equals("forceChunk")) {
+ switch (aMethodName) {
+ case "forceChunk" -> {
- mv = getWriter().visitMethod(
- ACC_PUBLIC + ACC_STATIC,
- "forceChunk",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;L" + aChunkCoordIntPair + ";)V",
- null,
- null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(730, l0);
- mv.visitVarInsn(ALOAD, 0);
- Label l1 = new Label();
- mv.visitJumpInsn(IFNULL, l1);
- mv.visitVarInsn(ALOAD, 1);
- Label l2 = new Label();
- mv.visitJumpInsn(IFNONNULL, l2);
- mv.visitLabel(l1);
- mv.visitLineNumber(732, l1);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitInsn(RETURN);
- mv.visitLabel(l2);
- mv.visitLineNumber(734, l2);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "access$500",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Lnet/minecraftforge/common/ForgeChunkManager$Type;",
- false);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/ForgeChunkManager$Type",
- "ENTITY",
- "Lnet/minecraftforge/common/ForgeChunkManager$Type;");
- Label l3 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l3);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "access$600",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)L" + aEntity + ";",
- false);
- mv.visitJumpInsn(IFNONNULL, l3);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(736, l4);
- mv.visitTypeInsn(NEW, "java/lang/RuntimeException");
- mv.visitInsn(DUP);
- mv.visitLdcInsn("Attempted to use an entity ticket to force a chunk, without an entity");
- mv.visitMethodInsn(INVOKESPECIAL, "java/lang/RuntimeException", "<init>", "(Ljava/lang/String;)V", false);
- mv.visitInsn(ATHROW);
- mv.visitLabel(l3);
- mv.visitLineNumber(738, l3);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKEVIRTUAL,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "isPlayerTicket",
- "()Z",
- false);
- Label l5 = new Label();
- mv.visitJumpInsn(IFEQ, l5);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/ForgeChunkManager",
- "playerTickets",
- "Lcom/google/common/collect/SetMultimap;");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "com/google/common/collect/SetMultimap",
- "containsValue",
- "(Ljava/lang/Object;)Z",
- true);
- Label l6 = new Label();
- mv.visitJumpInsn(IFNE, l6);
- Label l7 = new Label();
- mv.visitJumpInsn(GOTO, l7);
- mv.visitLabel(l5);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitFieldInsn(GETSTATIC, "net/minecraftforge/common/ForgeChunkManager", "tickets", "Ljava/util/Map;");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "world",
- "L" + aWorld + ";");
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;", true);
- mv.visitTypeInsn(CHECKCAST, "com/google/common/collect/Multimap");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "access$200",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/lang/String;",
- false);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "com/google/common/collect/Multimap",
- "containsEntry",
- "(Ljava/lang/Object;Ljava/lang/Object;)Z",
- true);
- mv.visitJumpInsn(IFNE, l6);
- mv.visitLabel(l7);
- mv.visitLineNumber(740, l7);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitLdcInsn(
- "The mod %s attempted to force load a chunk with an invalid ticket. This is not permitted.");
- mv.visitInsn(ICONST_1);
- mv.visitTypeInsn(ANEWARRAY, "java/lang/Object");
- mv.visitInsn(DUP);
- mv.visitInsn(ICONST_0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "access$200",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/lang/String;",
- false);
- mv.visitInsn(AASTORE);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "cpw/mods/fml/common/FMLLog",
- "severe",
- "(Ljava/lang/String;[Ljava/lang/Object;)V",
- false);
- Label l8 = new Label();
- mv.visitLabel(l8);
- mv.visitLineNumber(741, l8);
- mv.visitInsn(RETURN);
- mv.visitLabel(l6);
- mv.visitLineNumber(743, l6);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "access$700",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/util/LinkedHashSet;",
- false);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/LinkedHashSet", "add", "(Ljava/lang/Object;)Z", false);
- mv.visitInsn(POP);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(744, l9);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "gtPlusPlus/preloader/ChunkDebugger",
- "storeLoadChunkToCache",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;L" + aChunkCoordIntPair + ";)V",
- false);
- Label l10 = new Label();
- mv.visitLabel(l10);
- mv.visitLineNumber(745, l10);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/MinecraftForge",
- "EVENT_BUS",
- "Lcpw/mods/fml/common/eventhandler/EventBus;");
- mv.visitTypeInsn(NEW, "net/minecraftforge/common/ForgeChunkManager$ForceChunkEvent");
- mv.visitInsn(DUP);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(
- INVOKESPECIAL,
- "net/minecraftforge/common/ForgeChunkManager$ForceChunkEvent",
- "<init>",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;L" + aChunkCoordIntPair + ";)V",
- false);
- mv.visitMethodInsn(
- INVOKEVIRTUAL,
- "cpw/mods/fml/common/eventhandler/EventBus",
- "post",
- "(Lcpw/mods/fml/common/eventhandler/Event;)Z",
- false);
- mv.visitInsn(POP);
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLineNumber(747, l11);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "com/google/common/collect/ImmutableSetMultimap",
- "builder",
- "()Lcom/google/common/collect/ImmutableSetMultimap$Builder;",
- false);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/ForgeChunkManager",
- "forcedChunks",
- "Ljava/util/Map;");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "world",
- "L" + aWorld + ";");
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;", true);
- mv.visitTypeInsn(CHECKCAST, "com/google/common/collect/Multimap");
- mv.visitMethodInsn(
- INVOKEVIRTUAL,
- "com/google/common/collect/ImmutableSetMultimap$Builder",
- "putAll",
- "(Lcom/google/common/collect/Multimap;)Lcom/google/common/collect/ImmutableSetMultimap$Builder;",
- false);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKEVIRTUAL,
- "com/google/common/collect/ImmutableSetMultimap$Builder",
- "put",
- "(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableSetMultimap$Builder;",
- false);
- mv.visitMethodInsn(
- INVOKEVIRTUAL,
- "com/google/common/collect/ImmutableSetMultimap$Builder",
- "build",
- "()Lcom/google/common/collect/ImmutableSetMultimap;",
- false);
- mv.visitVarInsn(ASTORE, 2);
- Label l12 = new Label();
- mv.visitLabel(l12);
- mv.visitLineNumber(748, l12);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/ForgeChunkManager",
- "forcedChunks",
- "Ljava/util/Map;");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "world",
- "L" + aWorld + ";");
- mv.visitVarInsn(ALOAD, 2);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "java/util/Map",
- "put",
- "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
- true);
- mv.visitInsn(POP);
- Label l13 = new Label();
- mv.visitLabel(l13);
- mv.visitLineNumber(749, l13);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "access$800",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)I",
- false);
- Label l14 = new Label();
- mv.visitJumpInsn(IFLE, l14);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "access$700",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/util/LinkedHashSet;",
- false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/LinkedHashSet", "size", "()I", false);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "access$800",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)I",
- false);
- mv.visitJumpInsn(IF_ICMPLE, l14);
- Label l15 = new Label();
- mv.visitLabel(l15);
- mv.visitLineNumber(751, l15);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "access$700",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/util/LinkedHashSet;",
- false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/LinkedHashSet", "iterator", "()Ljava/util/Iterator;", false);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;", true);
- mv.visitTypeInsn(CHECKCAST, "" + aChunkCoordIntPair + "");
- mv.visitVarInsn(ASTORE, 3);
- Label l16 = new Label();
- mv.visitLabel(l16);
- mv.visitLineNumber(752, l16);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "net/minecraftforge/common/ForgeChunkManager",
- "unforceChunk",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;L" + aChunkCoordIntPair + ";)V",
- false);
- mv.visitLabel(l14);
- mv.visitLineNumber(754, l14);
- mv.visitFrame(F_APPEND, 1, new Object[] { "com/google/common/collect/ImmutableSetMultimap" }, 0, null);
- mv.visitInsn(RETURN);
- Label l17 = new Label();
- mv.visitLabel(l17);
- mv.visitLocalVariable("ticket", "Lnet/minecraftforge/common/ForgeChunkManager$Ticket;", null, l0, l17, 0);
- mv.visitLocalVariable("chunk", "L" + aChunkCoordIntPair + ";", null, l0, l17, 1);
- mv.visitLocalVariable(
- "newMap",
- "Lcom/google/common/collect/ImmutableSetMultimap;",
- "Lcom/google/common/collect/ImmutableSetMultimap<L" + aChunkCoordIntPair
- + ";Lnet/minecraftforge/common/ForgeChunkManager$Ticket;>;",
- l12,
- l17,
- 2);
- mv.visitLocalVariable("removed", "L" + aChunkCoordIntPair + ";", null, l16, l14, 3);
- mv.visitMaxs(5, 4);
- mv.visitEnd();
+ mv = getWriter().visitMethod(
+ ACC_PUBLIC + ACC_STATIC,
+ "forceChunk",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;L" + aChunkCoordIntPair + ";)V",
+ null,
+ null);
+ mv.visitCode();
+ Label l0 = new Label();
+ mv.visitLabel(l0);
+ mv.visitLineNumber(730, l0);
+ mv.visitVarInsn(ALOAD, 0);
+ Label l1 = new Label();
+ mv.visitJumpInsn(IFNULL, l1);
+ mv.visitVarInsn(ALOAD, 1);
+ Label l2 = new Label();
+ mv.visitJumpInsn(IFNONNULL, l2);
+ mv.visitLabel(l1);
+ mv.visitLineNumber(732, l1);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitInsn(RETURN);
+ mv.visitLabel(l2);
+ mv.visitLineNumber(734, l2);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "access$500",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Lnet/minecraftforge/common/ForgeChunkManager$Type;",
+ false);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "net/minecraftforge/common/ForgeChunkManager$Type",
+ "ENTITY",
+ "Lnet/minecraftforge/common/ForgeChunkManager$Type;");
+ Label l3 = new Label();
+ mv.visitJumpInsn(IF_ACMPNE, l3);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "access$600",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)L" + aEntity + ";",
+ false);
+ mv.visitJumpInsn(IFNONNULL, l3);
+ Label l4 = new Label();
+ mv.visitLabel(l4);
+ mv.visitLineNumber(736, l4);
+ mv.visitTypeInsn(NEW, "java/lang/RuntimeException");
+ mv.visitInsn(DUP);
+ mv.visitLdcInsn("Attempted to use an entity ticket to force a chunk, without an entity");
+ mv.visitMethodInsn(
+ INVOKESPECIAL,
+ "java/lang/RuntimeException",
+ "<init>",
+ "(Ljava/lang/String;)V",
+ false);
+ mv.visitInsn(ATHROW);
+ mv.visitLabel(l3);
+ mv.visitLineNumber(738, l3);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKEVIRTUAL,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "isPlayerTicket",
+ "()Z",
+ false);
+ Label l5 = new Label();
+ mv.visitJumpInsn(IFEQ, l5);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "playerTickets",
+ "Lcom/google/common/collect/SetMultimap;");
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "com/google/common/collect/SetMultimap",
+ "containsValue",
+ "(Ljava/lang/Object;)Z",
+ true);
+ Label l6 = new Label();
+ mv.visitJumpInsn(IFNE, l6);
+ Label l7 = new Label();
+ mv.visitJumpInsn(GOTO, l7);
+ mv.visitLabel(l5);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "tickets",
+ "Ljava/util/Map;");
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitFieldInsn(
+ GETFIELD,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "world",
+ "L" + aWorld + ";");
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "java/util/Map",
+ "get",
+ "(Ljava/lang/Object;)Ljava/lang/Object;",
+ true);
+ mv.visitTypeInsn(CHECKCAST, "com/google/common/collect/Multimap");
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "access$200",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/lang/String;",
+ false);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "com/google/common/collect/Multimap",
+ "containsEntry",
+ "(Ljava/lang/Object;Ljava/lang/Object;)Z",
+ true);
+ mv.visitJumpInsn(IFNE, l6);
+ mv.visitLabel(l7);
+ mv.visitLineNumber(740, l7);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitLdcInsn(
+ "The mod %s attempted to force load a chunk with an invalid ticket. This is not permitted.");
+ mv.visitInsn(ICONST_1);
+ mv.visitTypeInsn(ANEWARRAY, "java/lang/Object");
+ mv.visitInsn(DUP);
+ mv.visitInsn(ICONST_0);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "access$200",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/lang/String;",
+ false);
+ mv.visitInsn(AASTORE);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "cpw/mods/fml/common/FMLLog",
+ "severe",
+ "(Ljava/lang/String;[Ljava/lang/Object;)V",
+ false);
+ Label l8 = new Label();
+ mv.visitLabel(l8);
+ mv.visitLineNumber(741, l8);
+ mv.visitInsn(RETURN);
+ mv.visitLabel(l6);
+ mv.visitLineNumber(743, l6);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "access$700",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/util/LinkedHashSet;",
+ false);
+ mv.visitVarInsn(ALOAD, 1);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/LinkedHashSet", "add", "(Ljava/lang/Object;)Z", false);
+ mv.visitInsn(POP);
+ Label l9 = new Label();
+ mv.visitLabel(l9);
+ mv.visitLineNumber(744, l9);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 1);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "gtPlusPlus/preloader/ChunkDebugger",
+ "storeLoadChunkToCache",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;L" + aChunkCoordIntPair + ";)V",
+ false);
+ Label l10 = new Label();
+ mv.visitLabel(l10);
+ mv.visitLineNumber(745, l10);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "net/minecraftforge/common/MinecraftForge",
+ "EVENT_BUS",
+ "Lcpw/mods/fml/common/eventhandler/EventBus;");
+ mv.visitTypeInsn(NEW, "net/minecraftforge/common/ForgeChunkManager$ForceChunkEvent");
+ mv.visitInsn(DUP);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 1);
+ mv.visitMethodInsn(
+ INVOKESPECIAL,
+ "net/minecraftforge/common/ForgeChunkManager$ForceChunkEvent",
+ "<init>",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;L" + aChunkCoordIntPair + ";)V",
+ false);
+ mv.visitMethodInsn(
+ INVOKEVIRTUAL,
+ "cpw/mods/fml/common/eventhandler/EventBus",
+ "post",
+ "(Lcpw/mods/fml/common/eventhandler/Event;)Z",
+ false);
+ mv.visitInsn(POP);
+ Label l11 = new Label();
+ mv.visitLabel(l11);
+ mv.visitLineNumber(747, l11);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "com/google/common/collect/ImmutableSetMultimap",
+ "builder",
+ "()Lcom/google/common/collect/ImmutableSetMultimap$Builder;",
+ false);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "forcedChunks",
+ "Ljava/util/Map;");
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitFieldInsn(
+ GETFIELD,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "world",
+ "L" + aWorld + ";");
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "java/util/Map",
+ "get",
+ "(Ljava/lang/Object;)Ljava/lang/Object;",
+ true);
+ mv.visitTypeInsn(CHECKCAST, "com/google/common/collect/Multimap");
+ mv.visitMethodInsn(
+ INVOKEVIRTUAL,
+ "com/google/common/collect/ImmutableSetMultimap$Builder",
+ "putAll",
+ "(Lcom/google/common/collect/Multimap;)Lcom/google/common/collect/ImmutableSetMultimap$Builder;",
+ false);
+ mv.visitVarInsn(ALOAD, 1);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKEVIRTUAL,
+ "com/google/common/collect/ImmutableSetMultimap$Builder",
+ "put",
+ "(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableSetMultimap$Builder;",
+ false);
+ mv.visitMethodInsn(
+ INVOKEVIRTUAL,
+ "com/google/common/collect/ImmutableSetMultimap$Builder",
+ "build",
+ "()Lcom/google/common/collect/ImmutableSetMultimap;",
+ false);
+ mv.visitVarInsn(ASTORE, 2);
+ Label l12 = new Label();
+ mv.visitLabel(l12);
+ mv.visitLineNumber(748, l12);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "forcedChunks",
+ "Ljava/util/Map;");
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitFieldInsn(
+ GETFIELD,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "world",
+ "L" + aWorld + ";");
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "java/util/Map",
+ "put",
+ "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
+ true);
+ mv.visitInsn(POP);
+ Label l13 = new Label();
+ mv.visitLabel(l13);
+ mv.visitLineNumber(749, l13);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "access$800",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)I",
+ false);
+ Label l14 = new Label();
+ mv.visitJumpInsn(IFLE, l14);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "access$700",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/util/LinkedHashSet;",
+ false);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/LinkedHashSet", "size", "()I", false);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "access$800",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)I",
+ false);
+ mv.visitJumpInsn(IF_ICMPLE, l14);
+ Label l15 = new Label();
+ mv.visitLabel(l15);
+ mv.visitLineNumber(751, l15);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "access$700",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/util/LinkedHashSet;",
+ false);
+ mv.visitMethodInsn(
+ INVOKEVIRTUAL,
+ "java/util/LinkedHashSet",
+ "iterator",
+ "()Ljava/util/Iterator;",
+ false);
+ mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;", true);
+ mv.visitTypeInsn(CHECKCAST, "" + aChunkCoordIntPair + "");
+ mv.visitVarInsn(ASTORE, 3);
+ Label l16 = new Label();
+ mv.visitLabel(l16);
+ mv.visitLineNumber(752, l16);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 3);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "unforceChunk",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;L" + aChunkCoordIntPair + ";)V",
+ false);
+ mv.visitLabel(l14);
+ mv.visitLineNumber(754, l14);
+ mv.visitFrame(F_APPEND, 1, new Object[] { "com/google/common/collect/ImmutableSetMultimap" }, 0, null);
+ mv.visitInsn(RETURN);
+ Label l17 = new Label();
+ mv.visitLabel(l17);
+ mv.visitLocalVariable(
+ "ticket",
+ "Lnet/minecraftforge/common/ForgeChunkManager$Ticket;",
+ null,
+ l0,
+ l17,
+ 0);
+ mv.visitLocalVariable("chunk", "L" + aChunkCoordIntPair + ";", null, l0, l17, 1);
+ mv.visitLocalVariable(
+ "newMap",
+ "Lcom/google/common/collect/ImmutableSetMultimap;",
+ "Lcom/google/common/collect/ImmutableSetMultimap<L" + aChunkCoordIntPair
+ + ";Lnet/minecraftforge/common/ForgeChunkManager$Ticket;>;",
+ l12,
+ l17,
+ 2);
+ mv.visitLocalVariable("removed", "L" + aChunkCoordIntPair + ";", null, l16, l14, 3);
+ mv.visitMaxs(5, 4);
+ mv.visitEnd();
- } else if (aMethodName.equals("unforceChunk")) {
+ }
+ case "unforceChunk" -> {
- mv = getWriter().visitMethod(
- ACC_PUBLIC + ACC_STATIC,
- "unforceChunk",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;L" + aChunkCoordIntPair + ";)V",
- null,
- null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(781, l0);
- mv.visitVarInsn(ALOAD, 0);
- Label l1 = new Label();
- mv.visitJumpInsn(IFNULL, l1);
- mv.visitVarInsn(ALOAD, 1);
- Label l2 = new Label();
- mv.visitJumpInsn(IFNONNULL, l2);
- mv.visitLabel(l1);
- mv.visitLineNumber(783, l1);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitInsn(RETURN);
- mv.visitLabel(l2);
- mv.visitLineNumber(785, l2);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "access$700",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/util/LinkedHashSet;",
- false);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/LinkedHashSet", "remove", "(Ljava/lang/Object;)Z", false);
- mv.visitInsn(POP);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(786, l3);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "gtPlusPlus/preloader/ChunkDebugger",
- "removeLoadedChunkFromCache",
- "(L" + aChunkCoordIntPair + ";)V",
- false);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(787, l4);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/MinecraftForge",
- "EVENT_BUS",
- "Lcpw/mods/fml/common/eventhandler/EventBus;");
- mv.visitTypeInsn(NEW, "net/minecraftforge/common/ForgeChunkManager$UnforceChunkEvent");
- mv.visitInsn(DUP);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(
- INVOKESPECIAL,
- "net/minecraftforge/common/ForgeChunkManager$UnforceChunkEvent",
- "<init>",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;L" + aChunkCoordIntPair + ";)V",
- false);
- mv.visitMethodInsn(
- INVOKEVIRTUAL,
- "cpw/mods/fml/common/eventhandler/EventBus",
- "post",
- "(Lcpw/mods/fml/common/eventhandler/Event;)Z",
- false);
- mv.visitInsn(POP);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(788, l5);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/ForgeChunkManager",
- "forcedChunks",
- "Ljava/util/Map;");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "world",
- "L" + aWorld + ";");
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;", true);
- mv.visitTypeInsn(CHECKCAST, "com/google/common/collect/Multimap");
- mv.visitMethodInsn(
- INVOKESTATIC,
- "com/google/common/collect/LinkedHashMultimap",
- "create",
- "(Lcom/google/common/collect/Multimap;)Lcom/google/common/collect/LinkedHashMultimap;",
- false);
- mv.visitVarInsn(ASTORE, 2);
- Label l6 = new Label();
- mv.visitLabel(l6);
- mv.visitLineNumber(789, l6);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKEVIRTUAL,
- "com/google/common/collect/LinkedHashMultimap",
- "remove",
- "(Ljava/lang/Object;Ljava/lang/Object;)Z",
- false);
- mv.visitInsn(POP);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(790, l7);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "com/google/common/collect/ImmutableSetMultimap",
- "copyOf",
- "(Lcom/google/common/collect/Multimap;)Lcom/google/common/collect/ImmutableSetMultimap;",
- false);
- mv.visitVarInsn(ASTORE, 3);
- Label l8 = new Label();
- mv.visitLabel(l8);
- mv.visitLineNumber(791, l8);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/ForgeChunkManager",
- "forcedChunks",
- "Ljava/util/Map;");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "world",
- "L" + aWorld + ";");
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "java/util/Map",
- "put",
- "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
- true);
- mv.visitInsn(POP);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(792, l9);
- mv.visitInsn(RETURN);
- Label l10 = new Label();
- mv.visitLabel(l10);
- mv.visitLocalVariable("ticket", "Lnet/minecraftforge/common/ForgeChunkManager$Ticket;", null, l0, l10, 0);
- mv.visitLocalVariable("chunk", "L" + aChunkCoordIntPair + ";", null, l0, l10, 1);
- mv.visitLocalVariable(
- "copy",
- "Lcom/google/common/collect/LinkedHashMultimap;",
- "Lcom/google/common/collect/LinkedHashMultimap<L" + aChunkCoordIntPair
- + ";Lnet/minecraftforge/common/ForgeChunkManager$Ticket;>;",
- l6,
- l10,
- 2);
- mv.visitLocalVariable(
- "newMap",
- "Lcom/google/common/collect/ImmutableSetMultimap;",
- "Lcom/google/common/collect/ImmutableSetMultimap<L" + aChunkCoordIntPair
- + ";Lnet/minecraftforge/common/ForgeChunkManager$Ticket;>;",
- l8,
- l10,
- 3);
- mv.visitMaxs(5, 4);
- mv.visitEnd();
+ mv = getWriter().visitMethod(
+ ACC_PUBLIC + ACC_STATIC,
+ "unforceChunk",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;L" + aChunkCoordIntPair + ";)V",
+ null,
+ null);
+ mv.visitCode();
+ Label l0 = new Label();
+ mv.visitLabel(l0);
+ mv.visitLineNumber(781, l0);
+ mv.visitVarInsn(ALOAD, 0);
+ Label l1 = new Label();
+ mv.visitJumpInsn(IFNULL, l1);
+ mv.visitVarInsn(ALOAD, 1);
+ Label l2 = new Label();
+ mv.visitJumpInsn(IFNONNULL, l2);
+ mv.visitLabel(l1);
+ mv.visitLineNumber(783, l1);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitInsn(RETURN);
+ mv.visitLabel(l2);
+ mv.visitLineNumber(785, l2);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "access$700",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/util/LinkedHashSet;",
+ false);
+ mv.visitVarInsn(ALOAD, 1);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/LinkedHashSet", "remove", "(Ljava/lang/Object;)Z", false);
+ mv.visitInsn(POP);
+ Label l3 = new Label();
+ mv.visitLabel(l3);
+ mv.visitLineNumber(786, l3);
+ mv.visitVarInsn(ALOAD, 1);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "gtPlusPlus/preloader/ChunkDebugger",
+ "removeLoadedChunkFromCache",
+ "(L" + aChunkCoordIntPair + ";)V",
+ false);
+ Label l4 = new Label();
+ mv.visitLabel(l4);
+ mv.visitLineNumber(787, l4);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "net/minecraftforge/common/MinecraftForge",
+ "EVENT_BUS",
+ "Lcpw/mods/fml/common/eventhandler/EventBus;");
+ mv.visitTypeInsn(NEW, "net/minecraftforge/common/ForgeChunkManager$UnforceChunkEvent");
+ mv.visitInsn(DUP);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 1);
+ mv.visitMethodInsn(
+ INVOKESPECIAL,
+ "net/minecraftforge/common/ForgeChunkManager$UnforceChunkEvent",
+ "<init>",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;L" + aChunkCoordIntPair + ";)V",
+ false);
+ mv.visitMethodInsn(
+ INVOKEVIRTUAL,
+ "cpw/mods/fml/common/eventhandler/EventBus",
+ "post",
+ "(Lcpw/mods/fml/common/eventhandler/Event;)Z",
+ false);
+ mv.visitInsn(POP);
+ Label l5 = new Label();
+ mv.visitLabel(l5);
+ mv.visitLineNumber(788, l5);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "forcedChunks",
+ "Ljava/util/Map;");
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitFieldInsn(
+ GETFIELD,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "world",
+ "L" + aWorld + ";");
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "java/util/Map",
+ "get",
+ "(Ljava/lang/Object;)Ljava/lang/Object;",
+ true);
+ mv.visitTypeInsn(CHECKCAST, "com/google/common/collect/Multimap");
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "com/google/common/collect/LinkedHashMultimap",
+ "create",
+ "(Lcom/google/common/collect/Multimap;)Lcom/google/common/collect/LinkedHashMultimap;",
+ false);
+ mv.visitVarInsn(ASTORE, 2);
+ Label l6 = new Label();
+ mv.visitLabel(l6);
+ mv.visitLineNumber(789, l6);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitVarInsn(ALOAD, 1);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKEVIRTUAL,
+ "com/google/common/collect/LinkedHashMultimap",
+ "remove",
+ "(Ljava/lang/Object;Ljava/lang/Object;)Z",
+ false);
+ mv.visitInsn(POP);
+ Label l7 = new Label();
+ mv.visitLabel(l7);
+ mv.visitLineNumber(790, l7);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "com/google/common/collect/ImmutableSetMultimap",
+ "copyOf",
+ "(Lcom/google/common/collect/Multimap;)Lcom/google/common/collect/ImmutableSetMultimap;",
+ false);
+ mv.visitVarInsn(ASTORE, 3);
+ Label l8 = new Label();
+ mv.visitLabel(l8);
+ mv.visitLineNumber(791, l8);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "forcedChunks",
+ "Ljava/util/Map;");
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitFieldInsn(
+ GETFIELD,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "world",
+ "L" + aWorld + ";");
+ mv.visitVarInsn(ALOAD, 3);
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "java/util/Map",
+ "put",
+ "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
+ true);
+ mv.visitInsn(POP);
+ Label l9 = new Label();
+ mv.visitLabel(l9);
+ mv.visitLineNumber(792, l9);
+ mv.visitInsn(RETURN);
+ Label l10 = new Label();
+ mv.visitLabel(l10);
+ mv.visitLocalVariable(
+ "ticket",
+ "Lnet/minecraftforge/common/ForgeChunkManager$Ticket;",
+ null,
+ l0,
+ l10,
+ 0);
+ mv.visitLocalVariable("chunk", "L" + aChunkCoordIntPair + ";", null, l0, l10, 1);
+ mv.visitLocalVariable(
+ "copy",
+ "Lcom/google/common/collect/LinkedHashMultimap;",
+ "Lcom/google/common/collect/LinkedHashMultimap<L" + aChunkCoordIntPair
+ + ";Lnet/minecraftforge/common/ForgeChunkManager$Ticket;>;",
+ l6,
+ l10,
+ 2);
+ mv.visitLocalVariable(
+ "newMap",
+ "Lcom/google/common/collect/ImmutableSetMultimap;",
+ "Lcom/google/common/collect/ImmutableSetMultimap<L" + aChunkCoordIntPair
+ + ";Lnet/minecraftforge/common/ForgeChunkManager$Ticket;>;",
+ l8,
+ l10,
+ 3);
+ mv.visitMaxs(5, 4);
+ mv.visitEnd();
- } else if (aMethodName.equals("requestTicket")) {
+ }
+ case "requestTicket" -> {
- mv = getWriter().visitMethod(
- ACC_PUBLIC + ACC_STATIC,
- "requestTicket",
- "(Ljava/lang/Object;L" + aWorld
- + ";Lnet/minecraftforge/common/ForgeChunkManager$Type;)Lnet/minecraftforge/common/ForgeChunkManager$Ticket;",
- null,
- null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(656, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "net/minecraftforge/common/ForgeChunkManager",
- "getContainer",
- "(Ljava/lang/Object;)Lcpw/mods/fml/common/ModContainer;",
- false);
- mv.visitVarInsn(ASTORE, 3);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(657, l1);
- mv.visitVarInsn(ALOAD, 3);
- Label l2 = new Label();
- mv.visitJumpInsn(IFNONNULL, l2);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(659, l3);
- mv.visitFieldInsn(GETSTATIC, "org/apache/logging/log4j/Level", "ERROR", "Lorg/apache/logging/log4j/Level;");
- mv.visitLdcInsn("Failed to locate the container for mod instance %s (%s : %x)");
- mv.visitInsn(ICONST_3);
- mv.visitTypeInsn(ANEWARRAY, "java/lang/Object");
- mv.visitInsn(DUP);
- mv.visitInsn(ICONST_0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitInsn(AASTORE);
- mv.visitInsn(DUP);
- mv.visitInsn(ICONST_1);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "getClass", "()Ljava/lang/Class;", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Class", "getName", "()Ljava/lang/String;", false);
- mv.visitInsn(AASTORE);
- mv.visitInsn(DUP);
- mv.visitInsn(ICONST_2);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/System", "identityHashCode", "(Ljava/lang/Object;)I", false);
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;", false);
- mv.visitInsn(AASTORE);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "cpw/mods/fml/common/FMLLog",
- "log",
- "(Lorg/apache/logging/log4j/Level;Ljava/lang/String;[Ljava/lang/Object;)V",
- false);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(660, l4);
- mv.visitInsn(ACONST_NULL);
- mv.visitInsn(ARETURN);
- mv.visitLabel(l2);
- mv.visitLineNumber(662, l2);
- mv.visitFrame(F_APPEND, 1, new Object[] { "cpw/mods/fml/common/ModContainer" }, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "cpw/mods/fml/common/ModContainer",
- "getModId",
- "()Ljava/lang/String;",
- true);
- mv.visitVarInsn(ASTORE, 4);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(663, l5);
- mv.visitFieldInsn(GETSTATIC, "net/minecraftforge/common/ForgeChunkManager", "callbacks", "Ljava/util/Map;");
- mv.visitVarInsn(ALOAD, 4);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "containsKey", "(Ljava/lang/Object;)Z", true);
- Label l6 = new Label();
- mv.visitJumpInsn(IFNE, l6);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(665, l7);
- mv.visitLdcInsn("The mod %s has attempted to request a ticket without a listener in place");
- mv.visitInsn(ICONST_1);
- mv.visitTypeInsn(ANEWARRAY, "java/lang/Object");
- mv.visitInsn(DUP);
- mv.visitInsn(ICONST_0);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitInsn(AASTORE);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "cpw/mods/fml/common/FMLLog",
- "severe",
- "(Ljava/lang/String;[Ljava/lang/Object;)V",
- false);
- Label l8 = new Label();
- mv.visitLabel(l8);
- mv.visitLineNumber(666, l8);
- mv.visitTypeInsn(NEW, "java/lang/RuntimeException");
- mv.visitInsn(DUP);
- mv.visitLdcInsn("Invalid ticket request");
- mv.visitMethodInsn(INVOKESPECIAL, "java/lang/RuntimeException", "<init>", "(Ljava/lang/String;)V", false);
- mv.visitInsn(ATHROW);
- mv.visitLabel(l6);
- mv.visitLineNumber(669, l6);
- mv.visitFrame(F_APPEND, 1, new Object[] { "java/lang/String" }, 0, null);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "net/minecraftforge/common/ForgeChunkManager",
- "getMaxTicketLengthFor",
- "(Ljava/lang/String;)I",
- false);
- mv.visitVarInsn(ISTORE, 5);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(671, l9);
- mv.visitFieldInsn(GETSTATIC, "net/minecraftforge/common/ForgeChunkManager", "tickets", "Ljava/util/Map;");
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;", true);
- mv.visitTypeInsn(CHECKCAST, "com/google/common/collect/Multimap");
- mv.visitVarInsn(ALOAD, 4);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "com/google/common/collect/Multimap",
- "get",
- "(Ljava/lang/Object;)Ljava/util/Collection;",
- true);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Collection", "size", "()I", true);
- mv.visitVarInsn(ILOAD, 5);
- Label l10 = new Label();
- mv.visitJumpInsn(IF_ICMPLT, l10);
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLineNumber(673, l11);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/ForgeChunkManager",
- "warnedMods",
- "Ljava/util/Set;");
- mv.visitVarInsn(ALOAD, 4);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "contains", "(Ljava/lang/Object;)Z", true);
- Label l12 = new Label();
- mv.visitJumpInsn(IFNE, l12);
- Label l13 = new Label();
- mv.visitLabel(l13);
- mv.visitLineNumber(675, l13);
- mv.visitLdcInsn(
- "The mod %s has attempted to allocate a chunkloading ticket beyond it's currently allocated maximum : %d");
- mv.visitInsn(ICONST_2);
- mv.visitTypeInsn(ANEWARRAY, "java/lang/Object");
- mv.visitInsn(DUP);
- mv.visitInsn(ICONST_0);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitInsn(AASTORE);
- mv.visitInsn(DUP);
- mv.visitInsn(ICONST_1);
- mv.visitVarInsn(ILOAD, 5);
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;", false);
- mv.visitInsn(AASTORE);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "cpw/mods/fml/common/FMLLog",
- "info",
- "(Ljava/lang/String;[Ljava/lang/Object;)V",
- false);
- Label l14 = new Label();
- mv.visitLabel(l14);
- mv.visitLineNumber(676, l14);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/ForgeChunkManager",
- "warnedMods",
- "Ljava/util/Set;");
- mv.visitVarInsn(ALOAD, 4);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "add", "(Ljava/lang/Object;)Z", true);
- mv.visitInsn(POP);
- mv.visitLabel(l12);
- mv.visitLineNumber(678, l12);
- mv.visitFrame(F_APPEND, 1, new Object[] { INTEGER }, 0, null);
- mv.visitInsn(ACONST_NULL);
- mv.visitInsn(ARETURN);
- mv.visitLabel(l10);
- mv.visitLineNumber(680, l10);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitTypeInsn(NEW, "net/minecraftforge/common/ForgeChunkManager$Ticket");
- mv.visitInsn(DUP);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(
- INVOKESPECIAL,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "<init>",
- "(Ljava/lang/String;Lnet/minecraftforge/common/ForgeChunkManager$Type;L" + aWorld + ";)V",
- false);
- mv.visitVarInsn(ASTORE, 6);
- Label l15 = new Label();
- mv.visitLabel(l15);
- mv.visitLineNumber(681, l15);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "gtPlusPlus/preloader/ChunkDebugger",
- "storeTicketToCache",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;L" + aWorld + ";)V",
- false);
- Label l16 = new Label();
- mv.visitLabel(l16);
- mv.visitLineNumber(682, l16);
- mv.visitFieldInsn(GETSTATIC, "net/minecraftforge/common/ForgeChunkManager", "tickets", "Ljava/util/Map;");
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;", true);
- mv.visitTypeInsn(CHECKCAST, "com/google/common/collect/Multimap");
- mv.visitVarInsn(ALOAD, 4);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "com/google/common/collect/Multimap",
- "put",
- "(Ljava/lang/Object;Ljava/lang/Object;)Z",
- true);
- mv.visitInsn(POP);
- Label l17 = new Label();
- mv.visitLabel(l17);
- mv.visitLineNumber(683, l17);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitInsn(ARETURN);
- Label l18 = new Label();
- mv.visitLabel(l18);
- mv.visitLocalVariable("mod", "Ljava/lang/Object;", null, l0, l18, 0);
- mv.visitLocalVariable("world", "L" + aWorld + ";", null, l0, l18, 1);
- mv.visitLocalVariable("type", "Lnet/minecraftforge/common/ForgeChunkManager$Type;", null, l0, l18, 2);
- mv.visitLocalVariable("container", "Lcpw/mods/fml/common/ModContainer;", null, l1, l18, 3);
- mv.visitLocalVariable("modId", "Ljava/lang/String;", null, l5, l18, 4);
- mv.visitLocalVariable("allowedCount", "I", null, l9, l18, 5);
- mv.visitLocalVariable("ticket", "Lnet/minecraftforge/common/ForgeChunkManager$Ticket;", null, l15, l18, 6);
- mv.visitMaxs(6, 7);
- mv.visitEnd();
+ mv = getWriter().visitMethod(
+ ACC_PUBLIC + ACC_STATIC,
+ "requestTicket",
+ "(Ljava/lang/Object;L" + aWorld
+ + ";Lnet/minecraftforge/common/ForgeChunkManager$Type;)Lnet/minecraftforge/common/ForgeChunkManager$Ticket;",
+ null,
+ null);
+ mv.visitCode();
+ Label l0 = new Label();
+ mv.visitLabel(l0);
+ mv.visitLineNumber(656, l0);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "getContainer",
+ "(Ljava/lang/Object;)Lcpw/mods/fml/common/ModContainer;",
+ false);
+ mv.visitVarInsn(ASTORE, 3);
+ Label l1 = new Label();
+ mv.visitLabel(l1);
+ mv.visitLineNumber(657, l1);
+ mv.visitVarInsn(ALOAD, 3);
+ Label l2 = new Label();
+ mv.visitJumpInsn(IFNONNULL, l2);
+ Label l3 = new Label();
+ mv.visitLabel(l3);
+ mv.visitLineNumber(659, l3);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "org/apache/logging/log4j/Level",
+ "ERROR",
+ "Lorg/apache/logging/log4j/Level;");
+ mv.visitLdcInsn("Failed to locate the container for mod instance %s (%s : %x)");
+ mv.visitInsn(ICONST_3);
+ mv.visitTypeInsn(ANEWARRAY, "java/lang/Object");
+ mv.visitInsn(DUP);
+ mv.visitInsn(ICONST_0);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitInsn(AASTORE);
+ mv.visitInsn(DUP);
+ mv.visitInsn(ICONST_1);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "getClass", "()Ljava/lang/Class;", false);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Class", "getName", "()Ljava/lang/String;", false);
+ mv.visitInsn(AASTORE);
+ mv.visitInsn(DUP);
+ mv.visitInsn(ICONST_2);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "java/lang/System",
+ "identityHashCode",
+ "(Ljava/lang/Object;)I",
+ false);
+ mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;", false);
+ mv.visitInsn(AASTORE);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "cpw/mods/fml/common/FMLLog",
+ "log",
+ "(Lorg/apache/logging/log4j/Level;Ljava/lang/String;[Ljava/lang/Object;)V",
+ false);
+ Label l4 = new Label();
+ mv.visitLabel(l4);
+ mv.visitLineNumber(660, l4);
+ mv.visitInsn(ACONST_NULL);
+ mv.visitInsn(ARETURN);
+ mv.visitLabel(l2);
+ mv.visitLineNumber(662, l2);
+ mv.visitFrame(F_APPEND, 1, new Object[] { "cpw/mods/fml/common/ModContainer" }, 0, null);
+ mv.visitVarInsn(ALOAD, 3);
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "cpw/mods/fml/common/ModContainer",
+ "getModId",
+ "()Ljava/lang/String;",
+ true);
+ mv.visitVarInsn(ASTORE, 4);
+ Label l5 = new Label();
+ mv.visitLabel(l5);
+ mv.visitLineNumber(663, l5);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "callbacks",
+ "Ljava/util/Map;");
+ mv.visitVarInsn(ALOAD, 4);
+ mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "containsKey", "(Ljava/lang/Object;)Z", true);
+ Label l6 = new Label();
+ mv.visitJumpInsn(IFNE, l6);
+ Label l7 = new Label();
+ mv.visitLabel(l7);
+ mv.visitLineNumber(665, l7);
+ mv.visitLdcInsn("The mod %s has attempted to request a ticket without a listener in place");
+ mv.visitInsn(ICONST_1);
+ mv.visitTypeInsn(ANEWARRAY, "java/lang/Object");
+ mv.visitInsn(DUP);
+ mv.visitInsn(ICONST_0);
+ mv.visitVarInsn(ALOAD, 4);
+ mv.visitInsn(AASTORE);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "cpw/mods/fml/common/FMLLog",
+ "severe",
+ "(Ljava/lang/String;[Ljava/lang/Object;)V",
+ false);
+ Label l8 = new Label();
+ mv.visitLabel(l8);
+ mv.visitLineNumber(666, l8);
+ mv.visitTypeInsn(NEW, "java/lang/RuntimeException");
+ mv.visitInsn(DUP);
+ mv.visitLdcInsn("Invalid ticket request");
+ mv.visitMethodInsn(
+ INVOKESPECIAL,
+ "java/lang/RuntimeException",
+ "<init>",
+ "(Ljava/lang/String;)V",
+ false);
+ mv.visitInsn(ATHROW);
+ mv.visitLabel(l6);
+ mv.visitLineNumber(669, l6);
+ mv.visitFrame(F_APPEND, 1, new Object[] { "java/lang/String" }, 0, null);
+ mv.visitVarInsn(ALOAD, 4);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "getMaxTicketLengthFor",
+ "(Ljava/lang/String;)I",
+ false);
+ mv.visitVarInsn(ISTORE, 5);
+ Label l9 = new Label();
+ mv.visitLabel(l9);
+ mv.visitLineNumber(671, l9);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "tickets",
+ "Ljava/util/Map;");
+ mv.visitVarInsn(ALOAD, 1);
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "java/util/Map",
+ "get",
+ "(Ljava/lang/Object;)Ljava/lang/Object;",
+ true);
+ mv.visitTypeInsn(CHECKCAST, "com/google/common/collect/Multimap");
+ mv.visitVarInsn(ALOAD, 4);
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "com/google/common/collect/Multimap",
+ "get",
+ "(Ljava/lang/Object;)Ljava/util/Collection;",
+ true);
+ mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Collection", "size", "()I", true);
+ mv.visitVarInsn(ILOAD, 5);
+ Label l10 = new Label();
+ mv.visitJumpInsn(IF_ICMPLT, l10);
+ Label l11 = new Label();
+ mv.visitLabel(l11);
+ mv.visitLineNumber(673, l11);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "warnedMods",
+ "Ljava/util/Set;");
+ mv.visitVarInsn(ALOAD, 4);
+ mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "contains", "(Ljava/lang/Object;)Z", true);
+ Label l12 = new Label();
+ mv.visitJumpInsn(IFNE, l12);
+ Label l13 = new Label();
+ mv.visitLabel(l13);
+ mv.visitLineNumber(675, l13);
+ mv.visitLdcInsn(
+ "The mod %s has attempted to allocate a chunkloading ticket beyond it's currently allocated maximum : %d");
+ mv.visitInsn(ICONST_2);
+ mv.visitTypeInsn(ANEWARRAY, "java/lang/Object");
+ mv.visitInsn(DUP);
+ mv.visitInsn(ICONST_0);
+ mv.visitVarInsn(ALOAD, 4);
+ mv.visitInsn(AASTORE);
+ mv.visitInsn(DUP);
+ mv.visitInsn(ICONST_1);
+ mv.visitVarInsn(ILOAD, 5);
+ mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;", false);
+ mv.visitInsn(AASTORE);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "cpw/mods/fml/common/FMLLog",
+ "info",
+ "(Ljava/lang/String;[Ljava/lang/Object;)V",
+ false);
+ Label l14 = new Label();
+ mv.visitLabel(l14);
+ mv.visitLineNumber(676, l14);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "warnedMods",
+ "Ljava/util/Set;");
+ mv.visitVarInsn(ALOAD, 4);
+ mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "add", "(Ljava/lang/Object;)Z", true);
+ mv.visitInsn(POP);
+ mv.visitLabel(l12);
+ mv.visitLineNumber(678, l12);
+ mv.visitFrame(F_APPEND, 1, new Object[] { INTEGER }, 0, null);
+ mv.visitInsn(ACONST_NULL);
+ mv.visitInsn(ARETURN);
+ mv.visitLabel(l10);
+ mv.visitLineNumber(680, l10);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitTypeInsn(NEW, "net/minecraftforge/common/ForgeChunkManager$Ticket");
+ mv.visitInsn(DUP);
+ mv.visitVarInsn(ALOAD, 4);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitVarInsn(ALOAD, 1);
+ mv.visitMethodInsn(
+ INVOKESPECIAL,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "<init>",
+ "(Ljava/lang/String;Lnet/minecraftforge/common/ForgeChunkManager$Type;L" + aWorld + ";)V",
+ false);
+ mv.visitVarInsn(ASTORE, 6);
+ Label l15 = new Label();
+ mv.visitLabel(l15);
+ mv.visitLineNumber(681, l15);
+ mv.visitVarInsn(ALOAD, 6);
+ mv.visitVarInsn(ALOAD, 1);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "gtPlusPlus/preloader/ChunkDebugger",
+ "storeTicketToCache",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;L" + aWorld + ";)V",
+ false);
+ Label l16 = new Label();
+ mv.visitLabel(l16);
+ mv.visitLineNumber(682, l16);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "tickets",
+ "Ljava/util/Map;");
+ mv.visitVarInsn(ALOAD, 1);
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "java/util/Map",
+ "get",
+ "(Ljava/lang/Object;)Ljava/lang/Object;",
+ true);
+ mv.visitTypeInsn(CHECKCAST, "com/google/common/collect/Multimap");
+ mv.visitVarInsn(ALOAD, 4);
+ mv.visitVarInsn(ALOAD, 6);
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "com/google/common/collect/Multimap",
+ "put",
+ "(Ljava/lang/Object;Ljava/lang/Object;)Z",
+ true);
+ mv.visitInsn(POP);
+ Label l17 = new Label();
+ mv.visitLabel(l17);
+ mv.visitLineNumber(683, l17);
+ mv.visitVarInsn(ALOAD, 6);
+ mv.visitInsn(ARETURN);
+ Label l18 = new Label();
+ mv.visitLabel(l18);
+ mv.visitLocalVariable("mod", "Ljava/lang/Object;", null, l0, l18, 0);
+ mv.visitLocalVariable("world", "L" + aWorld + ";", null, l0, l18, 1);
+ mv.visitLocalVariable("type", "Lnet/minecraftforge/common/ForgeChunkManager$Type;", null, l0, l18, 2);
+ mv.visitLocalVariable("container", "Lcpw/mods/fml/common/ModContainer;", null, l1, l18, 3);
+ mv.visitLocalVariable("modId", "Ljava/lang/String;", null, l5, l18, 4);
+ mv.visitLocalVariable("allowedCount", "I", null, l9, l18, 5);
+ mv.visitLocalVariable(
+ "ticket",
+ "Lnet/minecraftforge/common/ForgeChunkManager$Ticket;",
+ null,
+ l15,
+ l18,
+ 6);
+ mv.visitMaxs(6, 7);
+ mv.visitEnd();
- } else if (aMethodName.equals("releaseTicket")) {
+ }
+ case "releaseTicket" -> {
- mv = getWriter().visitMethod(
- ACC_PUBLIC + ACC_STATIC,
- "releaseTicket",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)V",
- null,
- null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(693, l0);
- mv.visitVarInsn(ALOAD, 0);
- Label l1 = new Label();
- mv.visitJumpInsn(IFNONNULL, l1);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(695, l2);
- mv.visitInsn(RETURN);
- mv.visitLabel(l1);
- mv.visitLineNumber(697, l1);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKEVIRTUAL,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "isPlayerTicket",
- "()Z",
- false);
- Label l3 = new Label();
- mv.visitJumpInsn(IFEQ, l3);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/ForgeChunkManager",
- "playerTickets",
- "Lcom/google/common/collect/SetMultimap;");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "com/google/common/collect/SetMultimap",
- "containsValue",
- "(Ljava/lang/Object;)Z",
- true);
- Label l4 = new Label();
- mv.visitJumpInsn(IFNE, l4);
- Label l5 = new Label();
- mv.visitJumpInsn(GOTO, l5);
- mv.visitLabel(l3);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitFieldInsn(GETSTATIC, "net/minecraftforge/common/ForgeChunkManager", "tickets", "Ljava/util/Map;");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "world",
- "L" + aWorld + ";");
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;", true);
- mv.visitTypeInsn(CHECKCAST, "com/google/common/collect/Multimap");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "access$200",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/lang/String;",
- false);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "com/google/common/collect/Multimap",
- "containsEntry",
- "(Ljava/lang/Object;Ljava/lang/Object;)Z",
- true);
- mv.visitJumpInsn(IFNE, l4);
- mv.visitLabel(l5);
- mv.visitLineNumber(699, l5);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitInsn(RETURN);
- mv.visitLabel(l4);
- mv.visitLineNumber(701, l4);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "access$700",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/util/LinkedHashSet;",
- false);
- Label l6 = new Label();
- mv.visitJumpInsn(IFNULL, l6);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(703, l7);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "access$700",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/util/LinkedHashSet;",
- false);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "com/google/common/collect/ImmutableSet",
- "copyOf",
- "(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableSet;",
- false);
- mv.visitMethodInsn(
- INVOKEVIRTUAL,
- "com/google/common/collect/ImmutableSet",
- "iterator",
- "()Ljava/util/Iterator;",
- false);
- mv.visitVarInsn(ASTORE, 2);
- Label l8 = new Label();
- mv.visitJumpInsn(GOTO, l8);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitFrame(
- F_FULL,
- 3,
- new Object[] { "net/minecraftforge/common/ForgeChunkManager$Ticket", TOP, "java/util/Iterator" },
- 0,
- new Object[] {});
- mv.visitVarInsn(ALOAD, 2);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;", true);
- mv.visitTypeInsn(CHECKCAST, "" + aChunkCoordIntPair + "");
- mv.visitVarInsn(ASTORE, 1);
- Label l10 = new Label();
- mv.visitLabel(l10);
- mv.visitLineNumber(705, l10);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "net/minecraftforge/common/ForgeChunkManager",
- "unforceChunk",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;L" + aChunkCoordIntPair + ";)V",
- false);
- mv.visitLabel(l8);
- mv.visitLineNumber(703, l8);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z", true);
- mv.visitJumpInsn(IFNE, l9);
- mv.visitLabel(l6);
- mv.visitLineNumber(708, l6);
- mv.visitFrame(
- F_FULL,
- 1,
- new Object[] { "net/minecraftforge/common/ForgeChunkManager$Ticket" },
- 0,
- new Object[] {});
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "gtPlusPlus/preloader/ChunkDebugger",
- "removeTicketFromCache",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)V",
- false);
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLineNumber(709, l11);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKEVIRTUAL,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "isPlayerTicket",
- "()Z",
- false);
- Label l12 = new Label();
- mv.visitJumpInsn(IFEQ, l12);
- Label l13 = new Label();
- mv.visitLabel(l13);
- mv.visitLineNumber(711, l13);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/ForgeChunkManager",
- "playerTickets",
- "Lcom/google/common/collect/SetMultimap;");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "access$100",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/lang/String;",
- false);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "com/google/common/collect/SetMultimap",
- "remove",
- "(Ljava/lang/Object;Ljava/lang/Object;)Z",
- true);
- mv.visitInsn(POP);
- Label l14 = new Label();
- mv.visitLabel(l14);
- mv.visitLineNumber(712, l14);
- mv.visitFieldInsn(GETSTATIC, "net/minecraftforge/common/ForgeChunkManager", "tickets", "Ljava/util/Map;");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "world",
- "L" + aWorld + ";");
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;", true);
- mv.visitTypeInsn(CHECKCAST, "com/google/common/collect/Multimap");
- mv.visitLdcInsn("Forge");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "com/google/common/collect/Multimap",
- "remove",
- "(Ljava/lang/Object;Ljava/lang/Object;)Z",
- true);
- mv.visitInsn(POP);
- Label l15 = new Label();
- mv.visitLabel(l15);
- mv.visitLineNumber(713, l15);
- Label l16 = new Label();
- mv.visitJumpInsn(GOTO, l16);
- mv.visitLabel(l12);
- mv.visitLineNumber(716, l12);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitFieldInsn(GETSTATIC, "net/minecraftforge/common/ForgeChunkManager", "tickets", "Ljava/util/Map;");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "world",
- "L" + aWorld + ";");
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;", true);
- mv.visitTypeInsn(CHECKCAST, "com/google/common/collect/Multimap");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "net/minecraftforge/common/ForgeChunkManager$Ticket",
- "access$200",
- "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/lang/String;",
- false);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "com/google/common/collect/Multimap",
- "remove",
- "(Ljava/lang/Object;Ljava/lang/Object;)Z",
- true);
- mv.visitInsn(POP);
- mv.visitLabel(l16);
- mv.visitLineNumber(718, l16);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitInsn(RETURN);
- Label l17 = new Label();
- mv.visitLabel(l17);
- mv.visitLocalVariable("ticket", "Lnet/minecraftforge/common/ForgeChunkManager$Ticket;", null, l0, l17, 0);
- mv.visitLocalVariable("chunk", "L" + aChunkCoordIntPair + ";", null, l10, l8, 1);
- mv.visitMaxs(3, 3);
- mv.visitEnd();
+ mv = getWriter().visitMethod(
+ ACC_PUBLIC + ACC_STATIC,
+ "releaseTicket",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)V",
+ null,
+ null);
+ mv.visitCode();
+ Label l0 = new Label();
+ mv.visitLabel(l0);
+ mv.visitLineNumber(693, l0);
+ mv.visitVarInsn(ALOAD, 0);
+ Label l1 = new Label();
+ mv.visitJumpInsn(IFNONNULL, l1);
+ Label l2 = new Label();
+ mv.visitLabel(l2);
+ mv.visitLineNumber(695, l2);
+ mv.visitInsn(RETURN);
+ mv.visitLabel(l1);
+ mv.visitLineNumber(697, l1);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKEVIRTUAL,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "isPlayerTicket",
+ "()Z",
+ false);
+ Label l3 = new Label();
+ mv.visitJumpInsn(IFEQ, l3);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "playerTickets",
+ "Lcom/google/common/collect/SetMultimap;");
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "com/google/common/collect/SetMultimap",
+ "containsValue",
+ "(Ljava/lang/Object;)Z",
+ true);
+ Label l4 = new Label();
+ mv.visitJumpInsn(IFNE, l4);
+ Label l5 = new Label();
+ mv.visitJumpInsn(GOTO, l5);
+ mv.visitLabel(l3);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "tickets",
+ "Ljava/util/Map;");
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitFieldInsn(
+ GETFIELD,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "world",
+ "L" + aWorld + ";");
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "java/util/Map",
+ "get",
+ "(Ljava/lang/Object;)Ljava/lang/Object;",
+ true);
+ mv.visitTypeInsn(CHECKCAST, "com/google/common/collect/Multimap");
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "access$200",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/lang/String;",
+ false);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "com/google/common/collect/Multimap",
+ "containsEntry",
+ "(Ljava/lang/Object;Ljava/lang/Object;)Z",
+ true);
+ mv.visitJumpInsn(IFNE, l4);
+ mv.visitLabel(l5);
+ mv.visitLineNumber(699, l5);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitInsn(RETURN);
+ mv.visitLabel(l4);
+ mv.visitLineNumber(701, l4);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "access$700",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/util/LinkedHashSet;",
+ false);
+ Label l6 = new Label();
+ mv.visitJumpInsn(IFNULL, l6);
+ Label l7 = new Label();
+ mv.visitLabel(l7);
+ mv.visitLineNumber(703, l7);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "access$700",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/util/LinkedHashSet;",
+ false);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "com/google/common/collect/ImmutableSet",
+ "copyOf",
+ "(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableSet;",
+ false);
+ mv.visitMethodInsn(
+ INVOKEVIRTUAL,
+ "com/google/common/collect/ImmutableSet",
+ "iterator",
+ "()Ljava/util/Iterator;",
+ false);
+ mv.visitVarInsn(ASTORE, 2);
+ Label l8 = new Label();
+ mv.visitJumpInsn(GOTO, l8);
+ Label l9 = new Label();
+ mv.visitLabel(l9);
+ mv.visitFrame(
+ F_FULL,
+ 3,
+ new Object[] { "net/minecraftforge/common/ForgeChunkManager$Ticket", TOP,
+ "java/util/Iterator" },
+ 0,
+ new Object[] {});
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;", true);
+ mv.visitTypeInsn(CHECKCAST, "" + aChunkCoordIntPair + "");
+ mv.visitVarInsn(ASTORE, 1);
+ Label l10 = new Label();
+ mv.visitLabel(l10);
+ mv.visitLineNumber(705, l10);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 1);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "unforceChunk",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;L" + aChunkCoordIntPair + ";)V",
+ false);
+ mv.visitLabel(l8);
+ mv.visitLineNumber(703, l8);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z", true);
+ mv.visitJumpInsn(IFNE, l9);
+ mv.visitLabel(l6);
+ mv.visitLineNumber(708, l6);
+ mv.visitFrame(
+ F_FULL,
+ 1,
+ new Object[] { "net/minecraftforge/common/ForgeChunkManager$Ticket" },
+ 0,
+ new Object[] {});
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "gtPlusPlus/preloader/ChunkDebugger",
+ "removeTicketFromCache",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)V",
+ false);
+ Label l11 = new Label();
+ mv.visitLabel(l11);
+ mv.visitLineNumber(709, l11);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKEVIRTUAL,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "isPlayerTicket",
+ "()Z",
+ false);
+ Label l12 = new Label();
+ mv.visitJumpInsn(IFEQ, l12);
+ Label l13 = new Label();
+ mv.visitLabel(l13);
+ mv.visitLineNumber(711, l13);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "playerTickets",
+ "Lcom/google/common/collect/SetMultimap;");
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "access$100",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/lang/String;",
+ false);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "com/google/common/collect/SetMultimap",
+ "remove",
+ "(Ljava/lang/Object;Ljava/lang/Object;)Z",
+ true);
+ mv.visitInsn(POP);
+ Label l14 = new Label();
+ mv.visitLabel(l14);
+ mv.visitLineNumber(712, l14);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "tickets",
+ "Ljava/util/Map;");
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitFieldInsn(
+ GETFIELD,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "world",
+ "L" + aWorld + ";");
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "java/util/Map",
+ "get",
+ "(Ljava/lang/Object;)Ljava/lang/Object;",
+ true);
+ mv.visitTypeInsn(CHECKCAST, "com/google/common/collect/Multimap");
+ mv.visitLdcInsn("Forge");
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "com/google/common/collect/Multimap",
+ "remove",
+ "(Ljava/lang/Object;Ljava/lang/Object;)Z",
+ true);
+ mv.visitInsn(POP);
+ Label l15 = new Label();
+ mv.visitLabel(l15);
+ mv.visitLineNumber(713, l15);
+ Label l16 = new Label();
+ mv.visitJumpInsn(GOTO, l16);
+ mv.visitLabel(l12);
+ mv.visitLineNumber(716, l12);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitFieldInsn(
+ GETSTATIC,
+ "net/minecraftforge/common/ForgeChunkManager",
+ "tickets",
+ "Ljava/util/Map;");
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitFieldInsn(
+ GETFIELD,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "world",
+ "L" + aWorld + ";");
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "java/util/Map",
+ "get",
+ "(Ljava/lang/Object;)Ljava/lang/Object;",
+ true);
+ mv.visitTypeInsn(CHECKCAST, "com/google/common/collect/Multimap");
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKESTATIC,
+ "net/minecraftforge/common/ForgeChunkManager$Ticket",
+ "access$200",
+ "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/lang/String;",
+ false);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(
+ INVOKEINTERFACE,
+ "com/google/common/collect/Multimap",
+ "remove",
+ "(Ljava/lang/Object;Ljava/lang/Object;)Z",
+ true);
+ mv.visitInsn(POP);
+ mv.visitLabel(l16);
+ mv.visitLineNumber(718, l16);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitInsn(RETURN);
+ Label l17 = new Label();
+ mv.visitLabel(l17);
+ mv.visitLocalVariable(
+ "ticket",
+ "Lnet/minecraftforge/common/ForgeChunkManager$Ticket;",
+ null,
+ l0,
+ l17,
+ 0);
+ mv.visitLocalVariable("chunk", "L" + aChunkCoordIntPair + ";", null, l10, l8, 1);
+ mv.visitMaxs(3, 3);
+ mv.visitEnd();
+ }
}
FMLRelaunchLog.log("[GT++ ASM] Chunkloading Patch", Level.INFO, "Method injection complete.");
@@ -1125,8 +1236,7 @@ public class ClassTransformer_Forge_ChunkLoading {
FMLRelaunchLog.log("[GT++ ASM] Chunkloading Patch", Level.INFO, "Found method " + name + ", Patching.");
return null;
}
- MethodVisitor methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- return methodVisitor;
+ return super.visitMethod(access, name, desc, signature, exceptions);
}
}
}
diff --git a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_LWJGL_Keyboard.java b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_LWJGL_Keyboard.java
index 3f6de75f9d..f478a0f1f1 100644
--- a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_LWJGL_Keyboard.java
+++ b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_LWJGL_Keyboard.java
@@ -32,7 +32,7 @@ public class ClassTransformer_LWJGL_Keyboard {
private final ClassReader reader;
private final ClassWriter writer;
- private static final HashMap<String, String> mBadKeyCache = new HashMap<String, String>();
+ private static final HashMap<String, String> mBadKeyCache = new HashMap<>();
/**
* Gets a key's name
@@ -74,8 +74,7 @@ public class ClassTransformer_LWJGL_Keyboard {
GameSettings options = Minecraft.getMinecraft().gameSettings;
KeyBinding[] akeybinding = Minecraft.getMinecraft().gameSettings.keyBindings;
int i = akeybinding.length;
- for (int j = 0; j < i; ++j) {
- KeyBinding keybinding = akeybinding[j];
+ for (KeyBinding keybinding : akeybinding) {
if (keybinding != null && keybinding.getKeyCode() == aKey) {
options.setOptionKeyBinding(keybinding, 0);
FMLRelaunchLog.log(
@@ -113,8 +112,7 @@ public class ClassTransformer_LWJGL_Keyboard {
if (init()) {
try {
Object o = mKeyName.get(null);
- if (o instanceof String[]) {
- String[] y = (String[]) o;
+ if (o instanceof String[]y) {
return y;
}
} catch (IllegalArgumentException | IllegalAccessException e) {}
diff --git a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ItemWispEssence.java b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ItemWispEssence.java
index cb88d7bc07..98e1e7d473 100644
--- a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ItemWispEssence.java
+++ b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ItemWispEssence.java
@@ -41,7 +41,6 @@ import org.objectweb.asm.Label;
import org.objectweb.asm.MethodVisitor;
import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gtPlusPlus.preloader.DevHelper;
public class ClassTransformer_TC_ItemWispEssence {
@@ -52,17 +51,16 @@ public class ClassTransformer_TC_ItemWispEssence {
public ClassTransformer_TC_ItemWispEssence(byte[] basicClass, boolean obfuscated2) {
ClassReader aTempReader = null;
ClassWriter aTempWriter = null;
- boolean obfuscated = obfuscated2;
FMLRelaunchLog.log(
"[GT++ ASM] Thaumcraft WispEssence_Patch",
Level.INFO,
- "Are we patching obfuscated methods? " + obfuscated);
- String aGetColour = obfuscated ? DevHelper.getSRG("getColorFromItemStack") : "getColorFromItemStack";
+ "Are we patching obfuscated methods? " + obfuscated2);
+ String aGetColour = obfuscated2 ? "func_82790_a" : "getColorFromItemStack";
aTempReader = new ClassReader(basicClass);
aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
aTempReader.accept(new AddAdapter(aTempWriter, new String[] { "getAspects", aGetColour }), 0);
- injectMethod("getAspects", aTempWriter, obfuscated);
- injectMethod(aGetColour, aTempWriter, obfuscated);
+ injectMethod("getAspects", aTempWriter, obfuscated2);
+ injectMethod(aGetColour, aTempWriter, obfuscated2);
if (aTempReader != null && aTempWriter != null) {
isValid = true;
} else {
diff --git a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TT_ThaumicRestorer.java b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TT_ThaumicRestorer.java
deleted file mode 100644
index 9f48313f8f..0000000000
--- a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TT_ThaumicRestorer.java
+++ /dev/null
@@ -1,769 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static gregtech.api.enums.Mods.TinkerConstruct;
-import static org.objectweb.asm.Opcodes.AALOAD;
-import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
-import static org.objectweb.asm.Opcodes.ALOAD;
-import static org.objectweb.asm.Opcodes.ASM5;
-import static org.objectweb.asm.Opcodes.BIPUSH;
-import static org.objectweb.asm.Opcodes.D2F;
-import static org.objectweb.asm.Opcodes.DADD;
-import static org.objectweb.asm.Opcodes.DDIV;
-import static org.objectweb.asm.Opcodes.DUP;
-import static org.objectweb.asm.Opcodes.DUP_X1;
-import static org.objectweb.asm.Opcodes.GETFIELD;
-import static org.objectweb.asm.Opcodes.GETSTATIC;
-import static org.objectweb.asm.Opcodes.GOTO;
-import static org.objectweb.asm.Opcodes.I2D;
-import static org.objectweb.asm.Opcodes.IADD;
-import static org.objectweb.asm.Opcodes.ICONST_0;
-import static org.objectweb.asm.Opcodes.ICONST_1;
-import static org.objectweb.asm.Opcodes.IFEQ;
-import static org.objectweb.asm.Opcodes.IFLE;
-import static org.objectweb.asm.Opcodes.IFNE;
-import static org.objectweb.asm.Opcodes.IFNONNULL;
-import static org.objectweb.asm.Opcodes.IFNULL;
-import static org.objectweb.asm.Opcodes.IF_ICMPEQ;
-import static org.objectweb.asm.Opcodes.ILOAD;
-import static org.objectweb.asm.Opcodes.INVOKESTATIC;
-import static org.objectweb.asm.Opcodes.INVOKEVIRTUAL;
-import static org.objectweb.asm.Opcodes.IREM;
-import static org.objectweb.asm.Opcodes.ISTORE;
-import static org.objectweb.asm.Opcodes.ISUB;
-import static org.objectweb.asm.Opcodes.POP;
-import static org.objectweb.asm.Opcodes.PUTFIELD;
-import static org.objectweb.asm.Opcodes.RETURN;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-
-import net.minecraft.item.ItemStack;
-import net.minecraft.tileentity.TileEntity;
-
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.Label;
-import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
-
-import gtPlusPlus.core.util.reflect.ReflectionUtils;
-import gtPlusPlus.preloader.Preloader_Logger;
-
-public class ClassTransformer_TT_ThaumicRestorer {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- private static boolean mInit = false;
-
- private static Class mTileRepairerClass;
- private static Class mTTConfigHandler;
- private static Class mTinkersConstructCompat;
- private static Class mThaumicTinkerer;
- private static Class mTCProxy;
-
- private static Method mIsTcTool;
- private static Method mGetTcDamage;
- private static Method mFixTcDamage;
- private static Method mSparkle;
- private static Method mDrawEssentia;
-
- private static Field mRepairTiconTools;
- private static Field mTicksExisted;
- private static Field mInventory;
- private static Field mTookLastTick;
- private static Field mDamageLastTick;
- private static Field mProxyTC;
-
- private static boolean repairTConTools = false;
-
- // thaumic.tinkerer.common.block.tile.TileRepairer
-
- private static final boolean isTConstructTool(ItemStack aStack) {
- return ReflectionUtils.invoke(null, mIsTcTool, new Object[] { aStack });
- }
-
- private static final int getDamage(ItemStack aStack) {
- return (int) ReflectionUtils.invokeNonBool(null, mGetTcDamage, new Object[] { aStack });
- }
-
- private static final boolean fixDamage(ItemStack aStack, int aAmount) {
- return ReflectionUtils.invoke(null, mFixTcDamage, new Object[] { aStack, aAmount });
- }
-
- private static final int drawEssentia(TileEntity aTile) {
- return (int) ReflectionUtils.invokeNonBool(aTile, mDrawEssentia, new Object[] {});
- }
-
- private static final void sparkle(float a, float b, float c, int d) {
- ReflectionUtils.invokeVoid(ReflectionUtils.getFieldValue(mProxyTC), mSparkle, new Object[] { a, b, c, d });
- }
-
- public static void updateEntity(TileEntity aTile) {
- if (!mInit) {
- // Set the classes we need
- mTileRepairerClass = ReflectionUtils.getClass("thaumic.tinkerer.common.block.tile.TileRepairer");
- mTTConfigHandler = ReflectionUtils.getClass("thaumic.tinkerer.common.core.handler.ConfigHandler");
- mTinkersConstructCompat = ReflectionUtils.getClass("thaumic.tinkerer.common.compat.TinkersConstructCompat");
- mThaumicTinkerer = ReflectionUtils.getClass("thaumic.tinkerer.common.ThaumicTinkerer");
- mTCProxy = ReflectionUtils.getClass("thaumcraft.common.CommonProxy");
- // Set the methods we need
- mIsTcTool = ReflectionUtils
- .getMethod(mTinkersConstructCompat, "isTConstructTool", new Class[] { ItemStack.class });
- mGetTcDamage = ReflectionUtils
- .getMethod(mTinkersConstructCompat, "getDamage", new Class[] { ItemStack.class });
- mFixTcDamage = ReflectionUtils
- .getMethod(mTinkersConstructCompat, "fixDamage", new Class[] { ItemStack.class, int.class });
- mSparkle = ReflectionUtils
- .getMethod(mTCProxy, "sparkle", new Class[] { float.class, float.class, float.class, int.class });
- mDrawEssentia = ReflectionUtils.getMethod(mTileRepairerClass, "drawEssentia", new Class[] {});
- // Set the fields we need
- mRepairTiconTools = ReflectionUtils.getField(mTTConfigHandler, "repairTConTools");
- mTicksExisted = ReflectionUtils.getField(mTileRepairerClass, "ticksExisted");
- mInventory = ReflectionUtils.getField(mTileRepairerClass, "inventorySlots");
- mTookLastTick = ReflectionUtils.getField(mTileRepairerClass, "tookLastTick");
- mDamageLastTick = ReflectionUtils.getField(mTileRepairerClass, "dmgLastTick");
- mProxyTC = ReflectionUtils.getField(mThaumicTinkerer, "tcProxy");
- repairTConTools = ReflectionUtils.getFieldValue(mRepairTiconTools);
- mInit = true;
- }
- if (mInit) {
- if (mTileRepairerClass.isInstance(aTile)) {
- int ticksExisted = (int) ReflectionUtils.getFieldValue(mTicksExisted, aTile);
- ItemStack[] inventorySlots = (ItemStack[]) ReflectionUtils.getFieldValue(mInventory, aTile);
- boolean tookLastTick = (boolean) ReflectionUtils.getFieldValue(mTookLastTick, aTile);
- int dmgLastTick = (int) ReflectionUtils.getFieldValue(mDamageLastTick, aTile);
- ticksExisted++;
- ReflectionUtils.setField(aTile, mTicksExisted, ticksExisted);
- boolean aDidRun = false;
- if (ticksExisted % 10 == 0) {
- if (TinkerConstruct.isModLoaded() && repairTConTools
- && inventorySlots[0] != null
- && isTConstructTool(inventorySlots[0])) {
- final int dmg = getDamage(inventorySlots[0]);
- if (dmg > 0) {
- final int essentia = drawEssentia(aTile);
- fixDamage(inventorySlots[0], essentia);
- aTile.markDirty();
- if (dmgLastTick != 0 && dmgLastTick != dmg) {
- sparkle(
- (float) (aTile.xCoord + 0.25 + Math.random() / 2.0),
- (float) (aTile.yCoord + 1 + Math.random() / 2.0),
- (float) (aTile.zCoord + 0.25 + Math.random() / 2.0),
- 0);
- tookLastTick = true;
- } else {
- tookLastTick = false;
- }
- } else {
- tookLastTick = false;
- }
- dmgLastTick = ((inventorySlots[0] == null) ? 0 : getDamage(inventorySlots[0]));
- aDidRun = true;
- }
- if (inventorySlots[0] != null && inventorySlots[0].getItemDamage() > 0
- && inventorySlots[0].getItem().isRepairable()) {
- final int essentia2 = drawEssentia(aTile);
- final int dmg2 = inventorySlots[0].getItemDamage();
- inventorySlots[0].setItemDamage(Math.max(0, dmg2 - essentia2));
- aTile.markDirty();
- if (dmgLastTick != 0 && dmgLastTick != dmg2) {
- sparkle(
- (float) (aTile.xCoord + 0.25 + Math.random() / 2.0),
- (float) (aTile.yCoord + 1 + Math.random() / 2.0),
- (float) (aTile.zCoord + 0.25 + Math.random() / 2.0),
- 0);
- tookLastTick = true;
- } else {
- tookLastTick = false;
- }
- } else {
- tookLastTick = false;
- }
- dmgLastTick = ((inventorySlots[0] == null) ? 0 : inventorySlots[0].getItemDamage());
- aDidRun = true;
- }
- if (aDidRun) {
- ReflectionUtils.setField(aTile, mInventory, inventorySlots);
- ReflectionUtils.setField(aTile, mTookLastTick, tookLastTick);
- ReflectionUtils.setField(aTile, mDamageLastTick, dmgLastTick);
- }
- }
- }
- }
-
- public ClassTransformer_TT_ThaumicRestorer(byte[] basicClass) {
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
- boolean obfuscated = false;
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- AddAdapter aMethodStripper = new AddAdapter(aTempWriter);
- aTempReader.accept(aMethodStripper, 0);
- obfuscated = aMethodStripper.isObfuscated;
- String aUpdateEntity = obfuscated ? "func_145845_h" : "updateEntity";
- Preloader_Logger.LOG(
- "Thaumic Tinkerer RepairItem Patch",
- Level.INFO,
- "Patching: " + aUpdateEntity + ", Are we patching obfuscated methods? " + obfuscated);
- // injectMethod(aUpdateEntity, aTempWriter, obfuscated);
- injectMethodNew(aTempWriter, obfuscated);
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- } else {
- isValid = false;
- }
- Preloader_Logger.LOG("Thaumic Tinkerer RepairItem Patch", Level.INFO, "Valid? " + isValid + ".");
- reader = aTempReader;
- writer = aTempWriter;
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public boolean injectMethodNew(ClassWriter cw, boolean obfuscated) {
- MethodVisitor mv;
- boolean didInject = false;
- String aUpdateEntity = obfuscated ? "func_145845_h" : "updateEntity";
- String aTileEntity = obfuscated ? "aor" : "net/minecraft/tileentity/TileEntity";
- Preloader_Logger.LOG("Thaumic Tinkerer RepairItem Patch", Level.INFO, "Injecting " + aUpdateEntity + ".");
- mv = cw.visitMethod(ACC_PUBLIC, aUpdateEntity, "()V", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(60, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "gtPlusPlus/preloader/asm/transformers/ClassTransformer_TT_ThaumicRestorer",
- "updateEntity",
- "(L" + aTileEntity + ";)V",
- false);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(61, l1);
- mv.visitInsn(RETURN);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLocalVariable("this", "Lthaumic/tinkerer/common/block/tile/TileRepairer;", null, l0, l2, 0);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- didInject = true;
- Preloader_Logger.LOG(
- "Thaumic Tinkerer RepairItem Patch",
- Level.INFO,
- "Method injection complete. " + (obfuscated ? "Obfuscated" : "Non-Obfuscated"));
- return didInject;
- }
-
- public boolean injectMethod(String aMethodName, ClassWriter cw, boolean obfuscated) {
- MethodVisitor mv;
- boolean didInject = false;
- Preloader_Logger.LOG("Thaumic Tinkerer RepairItem Patch", Level.INFO, "Injecting " + aMethodName + ".");
-
- String aItemStack = obfuscated ? "add" : "net/minecraft/item/ItemStack";
- String aItem = obfuscated ? "adb" : "net/minecraft/item/Item";
- String aGetItemDamage = obfuscated ? "func_150976_a" : "getItemDamage";
- String aGetItem = obfuscated ? "func_77973_b" : "getItem";
- String aSetItemDamage = obfuscated ? "func_77964_b" : "setItemDamage";
- String aIsRepairable = obfuscated ? "func_82789_a" : "isRepairable";
-
- mv = cw.visitMethod(ACC_PUBLIC, aMethodName, "()V", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(59, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitInsn(DUP);
- mv.visitFieldInsn(GETFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "ticksExisted", "I");
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IADD);
- mv.visitInsn(DUP_X1);
- mv.visitFieldInsn(PUTFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "ticksExisted", "I");
- mv.visitIntInsn(BIPUSH, 10);
- mv.visitInsn(IREM);
- Label l1 = new Label();
- mv.visitJumpInsn(IFNE, l1);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(60, l2);
- mv.visitLdcInsn(TinkerConstruct.ID);
- mv.visitMethodInsn(INVOKESTATIC, "cpw/mods/fml/common/Loader", "isModLoaded", "(Ljava/lang/String;)Z", false);
- Label l3 = new Label();
- mv.visitJumpInsn(IFEQ, l3);
- mv.visitFieldInsn(GETSTATIC, "thaumic/tinkerer/common/core/handler/ConfigHandler", "repairTConTools", "Z");
- mv.visitJumpInsn(IFEQ, l3);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(61, l4);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "thaumic/tinkerer/common/block/tile/TileRepairer",
- "inventorySlots",
- "[L" + aItemStack + ";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- mv.visitJumpInsn(IFNULL, l3);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(62, l5);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "thaumic/tinkerer/common/block/tile/TileRepairer",
- "inventorySlots",
- "[L" + aItemStack + ";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "thaumic/tinkerer/common/compat/TinkersConstructCompat",
- "isTConstructTool",
- "(L" + aItemStack + ";)Z",
- false);
- mv.visitJumpInsn(IFEQ, l3);
- Label l6 = new Label();
- mv.visitLabel(l6);
- mv.visitLineNumber(63, l6);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "thaumic/tinkerer/common/block/tile/TileRepairer",
- "inventorySlots",
- "[L" + aItemStack + ";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "thaumic/tinkerer/common/compat/TinkersConstructCompat",
- "getDamage",
- "(L" + aItemStack + ";)I",
- false);
- mv.visitVarInsn(ISTORE, 1);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(64, l7);
- mv.visitVarInsn(ILOAD, 1);
- Label l8 = new Label();
- mv.visitJumpInsn(IFLE, l8);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(65, l9);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKEVIRTUAL,
- "thaumic/tinkerer/common/block/tile/TileRepairer",
- "drawEssentia",
- "()I",
- false);
- mv.visitVarInsn(ISTORE, 2);
- Label l10 = new Label();
- mv.visitLabel(l10);
- mv.visitLineNumber(66, l10);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "thaumic/tinkerer/common/block/tile/TileRepairer",
- "inventorySlots",
- "[L" + aItemStack + ";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "thaumic/tinkerer/common/compat/TinkersConstructCompat",
- "fixDamage",
- "(L" + aItemStack + ";I)Z",
- false);
- mv.visitInsn(POP);
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLineNumber(67, l11);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "thaumic/tinkerer/common/block/tile/TileRepairer", "markDirty", "()V", false);
- Label l12 = new Label();
- mv.visitLabel(l12);
- mv.visitLineNumber(68, l12);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "dmgLastTick", "I");
- Label l13 = new Label();
- mv.visitJumpInsn(IFEQ, l13);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "dmgLastTick", "I");
- mv.visitVarInsn(ILOAD, 1);
- mv.visitJumpInsn(IF_ICMPEQ, l13);
- Label l14 = new Label();
- mv.visitLabel(l14);
- mv.visitLineNumber(69, l14);
- mv.visitFieldInsn(
- GETSTATIC,
- "thaumic/tinkerer/common/ThaumicTinkerer",
- "tcProxy",
- "Lthaumcraft/common/CommonProxy;");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "xCoord", "I");
- mv.visitInsn(I2D);
- mv.visitLdcInsn(new Double("0.25"));
- mv.visitInsn(DADD);
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Math", "random", "()D", false);
- mv.visitLdcInsn(new Double("2.0"));
- mv.visitInsn(DDIV);
- mv.visitInsn(DADD);
- mv.visitInsn(D2F);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "yCoord", "I");
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IADD);
- mv.visitInsn(I2D);
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Math", "random", "()D", false);
- mv.visitLdcInsn(new Double("2.0"));
- mv.visitInsn(DDIV);
- mv.visitInsn(DADD);
- mv.visitInsn(D2F);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "zCoord", "I");
- mv.visitInsn(I2D);
- mv.visitLdcInsn(new Double("0.25"));
- mv.visitInsn(DADD);
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Math", "random", "()D", false);
- mv.visitLdcInsn(new Double("2.0"));
- mv.visitInsn(DDIV);
- mv.visitInsn(DADD);
- mv.visitInsn(D2F);
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "thaumcraft/common/CommonProxy", "sparkle", "(FFFI)V", false);
- Label l15 = new Label();
- mv.visitLabel(l15);
- mv.visitLineNumber(70, l15);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitInsn(ICONST_1);
- mv.visitFieldInsn(PUTFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "tookLastTick", "Z");
- Label l16 = new Label();
- mv.visitLabel(l16);
- mv.visitLineNumber(71, l16);
- Label l17 = new Label();
- mv.visitJumpInsn(GOTO, l17);
- mv.visitLabel(l13);
- mv.visitFrame(Opcodes.F_APPEND, 2, new Object[] { Opcodes.INTEGER, Opcodes.INTEGER }, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitInsn(ICONST_0);
- mv.visitFieldInsn(PUTFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "tookLastTick", "Z");
- Label l18 = new Label();
- mv.visitLabel(l18);
- mv.visitLineNumber(72, l18);
- mv.visitJumpInsn(GOTO, l17);
- mv.visitLabel(l8);
- mv.visitFrame(Opcodes.F_CHOP, 1, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitInsn(ICONST_0);
- mv.visitFieldInsn(PUTFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "tookLastTick", "Z");
- mv.visitLabel(l17);
- mv.visitLineNumber(73, l17);
- mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "thaumic/tinkerer/common/block/tile/TileRepairer",
- "inventorySlots",
- "[L" + aItemStack + ";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- Label l19 = new Label();
- mv.visitJumpInsn(IFNONNULL, l19);
- mv.visitInsn(ICONST_0);
- Label l20 = new Label();
- mv.visitJumpInsn(GOTO, l20);
- mv.visitLabel(l19);
- mv.visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] { "thaumic/tinkerer/common/block/tile/TileRepairer" });
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "thaumic/tinkerer/common/block/tile/TileRepairer",
- "inventorySlots",
- "[L" + aItemStack + ";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "thaumic/tinkerer/common/compat/TinkersConstructCompat",
- "getDamage",
- "(L" + aItemStack + ";)I",
- false);
- mv.visitLabel(l20);
- mv.visitFrame(
- Opcodes.F_FULL,
- 2,
- new Object[] { "thaumic/tinkerer/common/block/tile/TileRepairer", Opcodes.INTEGER },
- 2,
- new Object[] { "thaumic/tinkerer/common/block/tile/TileRepairer", Opcodes.INTEGER });
- mv.visitFieldInsn(PUTFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "dmgLastTick", "I");
- Label l21 = new Label();
- mv.visitLabel(l21);
- mv.visitLineNumber(74, l21);
- mv.visitInsn(RETURN);
- mv.visitLabel(l3);
- mv.visitLineNumber(78, l3);
- mv.visitFrame(Opcodes.F_CHOP, 1, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "thaumic/tinkerer/common/block/tile/TileRepairer",
- "inventorySlots",
- "[L" + aItemStack + ";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- Label l22 = new Label();
- mv.visitJumpInsn(IFNULL, l22);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "thaumic/tinkerer/common/block/tile/TileRepairer",
- "inventorySlots",
- "[L" + aItemStack + ";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- mv.visitMethodInsn(INVOKEVIRTUAL, "" + aItemStack + "", "" + aGetItemDamage + "", "()I", false);
- mv.visitJumpInsn(IFLE, l22);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "thaumic/tinkerer/common/block/tile/TileRepairer",
- "inventorySlots",
- "[L" + aItemStack + ";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- mv.visitMethodInsn(INVOKEVIRTUAL, "" + aItemStack + "", "" + aGetItem + "", "()L" + aItem + ";", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "" + aItem + "", "" + aIsRepairable + "", "()Z", false);
- mv.visitJumpInsn(IFEQ, l22);
- Label l23 = new Label();
- mv.visitLabel(l23);
- mv.visitLineNumber(79, l23);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKEVIRTUAL,
- "thaumic/tinkerer/common/block/tile/TileRepairer",
- "drawEssentia",
- "()I",
- false);
- mv.visitVarInsn(ISTORE, 1);
- Label l24 = new Label();
- mv.visitLabel(l24);
- mv.visitLineNumber(80, l24);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "thaumic/tinkerer/common/block/tile/TileRepairer",
- "inventorySlots",
- "[L" + aItemStack + ";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- mv.visitMethodInsn(INVOKEVIRTUAL, "" + aItemStack + "", "" + aGetItemDamage + "", "()I", false);
- mv.visitVarInsn(ISTORE, 2);
- Label l25 = new Label();
- mv.visitLabel(l25);
- mv.visitLineNumber(81, l25);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "thaumic/tinkerer/common/block/tile/TileRepairer",
- "inventorySlots",
- "[L" + aItemStack + ";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- mv.visitInsn(ICONST_0);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(ISUB);
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Math", "max", "(II)I", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "" + aItemStack + "", "" + aSetItemDamage + "", "(I)V", false);
- Label l26 = new Label();
- mv.visitLabel(l26);
- mv.visitLineNumber(82, l26);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "thaumic/tinkerer/common/block/tile/TileRepairer", "markDirty", "()V", false);
- Label l27 = new Label();
- mv.visitLabel(l27);
- mv.visitLineNumber(84, l27);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "dmgLastTick", "I");
- Label l28 = new Label();
- mv.visitJumpInsn(IFEQ, l28);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "dmgLastTick", "I");
- mv.visitVarInsn(ILOAD, 2);
- mv.visitJumpInsn(IF_ICMPEQ, l28);
- Label l29 = new Label();
- mv.visitLabel(l29);
- mv.visitLineNumber(85, l29);
- mv.visitFieldInsn(
- GETSTATIC,
- "thaumic/tinkerer/common/ThaumicTinkerer",
- "tcProxy",
- "Lthaumcraft/common/CommonProxy;");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "xCoord", "I");
- mv.visitInsn(I2D);
- mv.visitLdcInsn(new Double("0.25"));
- mv.visitInsn(DADD);
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Math", "random", "()D", false);
- mv.visitLdcInsn(new Double("2.0"));
- mv.visitInsn(DDIV);
- mv.visitInsn(DADD);
- mv.visitInsn(D2F);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "yCoord", "I");
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IADD);
- mv.visitInsn(I2D);
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Math", "random", "()D", false);
- mv.visitLdcInsn(new Double("2.0"));
- mv.visitInsn(DDIV);
- mv.visitInsn(DADD);
- mv.visitInsn(D2F);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "zCoord", "I");
- mv.visitInsn(I2D);
- mv.visitLdcInsn(new Double("0.25"));
- mv.visitInsn(DADD);
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Math", "random", "()D", false);
- mv.visitLdcInsn(new Double("2.0"));
- mv.visitInsn(DDIV);
- mv.visitInsn(DADD);
- mv.visitInsn(D2F);
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "thaumcraft/common/CommonProxy", "sparkle", "(FFFI)V", false);
- Label l30 = new Label();
- mv.visitLabel(l30);
- mv.visitLineNumber(86, l30);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitInsn(ICONST_1);
- mv.visitFieldInsn(PUTFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "tookLastTick", "Z");
- Label l31 = new Label();
- mv.visitLabel(l31);
- mv.visitLineNumber(87, l31);
- Label l32 = new Label();
- mv.visitJumpInsn(GOTO, l32);
- mv.visitLabel(l28);
- mv.visitFrame(Opcodes.F_APPEND, 2, new Object[] { Opcodes.INTEGER, Opcodes.INTEGER }, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitInsn(ICONST_0);
- mv.visitFieldInsn(PUTFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "tookLastTick", "Z");
- Label l33 = new Label();
- mv.visitLabel(l33);
- mv.visitLineNumber(88, l33);
- mv.visitJumpInsn(GOTO, l32);
- mv.visitLabel(l22);
- mv.visitFrame(Opcodes.F_CHOP, 2, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitInsn(ICONST_0);
- mv.visitFieldInsn(PUTFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "tookLastTick", "Z");
- mv.visitLabel(l32);
- mv.visitLineNumber(90, l32);
- mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "thaumic/tinkerer/common/block/tile/TileRepairer",
- "inventorySlots",
- "[L" + aItemStack + ";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- Label l34 = new Label();
- mv.visitJumpInsn(IFNONNULL, l34);
- mv.visitInsn(ICONST_0);
- Label l35 = new Label();
- mv.visitJumpInsn(GOTO, l35);
- mv.visitLabel(l34);
- mv.visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] { "thaumic/tinkerer/common/block/tile/TileRepairer" });
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETFIELD,
- "thaumic/tinkerer/common/block/tile/TileRepairer",
- "inventorySlots",
- "[L" + aItemStack + ";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- mv.visitMethodInsn(INVOKEVIRTUAL, "" + aItemStack + "", "" + aGetItemDamage + "", "()I", false);
- mv.visitLabel(l35);
- mv.visitFrame(
- Opcodes.F_FULL,
- 1,
- new Object[] { "thaumic/tinkerer/common/block/tile/TileRepairer" },
- 2,
- new Object[] { "thaumic/tinkerer/common/block/tile/TileRepairer", Opcodes.INTEGER });
- mv.visitFieldInsn(PUTFIELD, "thaumic/tinkerer/common/block/tile/TileRepairer", "dmgLastTick", "I");
- mv.visitLabel(l1);
- mv.visitLineNumber(92, l1);
- mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
- mv.visitInsn(RETURN);
- Label l36 = new Label();
- mv.visitLabel(l36);
- mv.visitLocalVariable("this", "Lthaumic/tinkerer/common/block/tile/TileRepairer;", null, l0, l36, 0);
- mv.visitLocalVariable("dmg", "I", null, l7, l3, 1);
- mv.visitLocalVariable("essentia", "I", null, l10, l18, 2);
- mv.visitLocalVariable("essentia", "I", null, l24, l33, 1);
- mv.visitLocalVariable("dmg", "I", null, l25, l33, 2);
- mv.visitMaxs(9, 3);
- mv.visitEnd();
- didInject = true;
- Preloader_Logger.LOG(
- "Thaumic Tinkerer RepairItem Patch",
- Level.INFO,
- "Method injection complete. " + (obfuscated ? "Obfuscated" : "Non-Obfuscated"));
- return didInject;
- }
-
- public class AddAdapter extends ClassVisitor {
-
- public AddAdapter(ClassVisitor cv) {
- super(ASM5, cv);
- this.cv = cv;
- }
-
- private final String[] aMethodsToStrip = new String[] { "updateEntity", "func_145845_h" };
- public boolean isObfuscated = false;
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
-
- MethodVisitor methodVisitor;
- boolean found = false;
-
- for (String s : aMethodsToStrip) {
- if (name.equals(s)) {
- found = true;
- if (s.equals(aMethodsToStrip[1])) {
- isObfuscated = true;
- }
- break;
- }
- }
- if (!found) {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- } else {
- methodVisitor = null;
- }
-
- if (found) {
- Preloader_Logger
- .LOG("Thaumic Tinkerer RepairItem Patch", Level.INFO, "Found method " + name + ", removing.");
- }
- return methodVisitor;
- }
- }
-}
diff --git a/src/main/java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java b/src/main/java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java
deleted file mode 100644
index 7e5f4d3f6f..0000000000
--- a/src/main/java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-public class Preloader_ClassTransformer2 {
-
- /**
- *
- * So what I'd try is something like patch a new field into BaseMetaTileEntity to hold the ItemNBT, then patch
- * GT_Block_Machines.breakBlock to store the ItemNBT into that field by calling setItemNBT, and then patch
- * BaseMetaTileEntity.getDrops to retrieve that field instead of calling setItemNBT But there's probably a simpler
- * solution if all you want to do is fix this for your super tanks rather than for all GT machines (which would only
- * include saving the output count for chest buffers and item distributors...)
- *
- */
-}
diff --git a/src/main/java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java b/src/main/java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
index 405a804329..30a5bae031 100644
--- a/src/main/java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
+++ b/src/main/java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
@@ -1,117 +1,56 @@
package gtPlusPlus.preloader.asm.transformers;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.COFH_ORE_DICTIONARY_ARBITER;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.FORGE_CHUNK_MANAGER;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.FORGE_ORE_DICTIONARY;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.IC2_BLOCK_BASE_TILE_ENTITY;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.IC2_BLOCK_CHARGEPAD;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.IC2_BLOCK_ELECTRIC;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.IC2_BLOCK_GENERATOR;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.IC2_BLOCK_HEAT_GENERATOR;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.IC2_BLOCK_KINETIC_GENERATOR;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.IC2_BLOCK_LUMINATOR;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.IC2_BLOCK_MACHINE1;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.IC2_BLOCK_MACHINE2;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.IC2_BLOCK_MACHINE3;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.IC2_BLOCK_PERSONAL;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.IC2_BLOCK_REACTOR_ACCESS_HATCH;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.IC2_BLOCK_REACTOR_CHAMBER;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.IC2_BLOCK_REACTOR_FLUID_PORT;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.IC2_BLOCK_REACTOR_REDSTONE_PORT;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.IC2_BLOCK_REACTOR_VESSEL;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.LWJGL_KEYBOARD;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.MINECRAFT_GAMESETTINGS;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.MINECRAFT_GAMESETTINGS_OBF;
-import static gtPlusPlus.preloader.asm.ClassesToTransform.THAUMCRAFT_ITEM_WISP_ESSENCE;
-
-import java.io.File;
-import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
import net.minecraft.launchwrapper.IClassTransformer;
-import net.minecraft.launchwrapper.Launch;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
-import cpw.mods.fml.relauncher.CoreModManager;
-import cpw.mods.fml.relauncher.ReflectionHelper;
-import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
-import gtPlusPlus.preloader.DevHelper;
+import gtPlusPlus.preloader.CORE_Preloader;
import gtPlusPlus.preloader.Preloader_Logger;
import gtPlusPlus.preloader.asm.AsmConfig;
import gtPlusPlus.preloader.asm.transformers.Preloader_ClassTransformer.OreDictionaryVisitor;
public class Preloader_Transformer_Handler implements IClassTransformer {
- public static final AsmConfig mConfig;
- public static final AutoMap<String> IC2_WRENCH_PATCH_CLASS_NAMES = new AutoMap<String>();
+ private static final Set<String> IC2_WRENCH_PATCH_CLASS_NAMES = new HashSet<>();
+ private static final String LWJGL_KEYBOARD = "org.lwjgl.input.Keyboard";
+ private static final String MINECRAFT_GAMESETTINGS = "net.minecraft.client.settings.GameSettings";
+ private static final String FORGE_CHUNK_MANAGER = "net.minecraftforge.common.ForgeChunkManager";
+ private static final String FORGE_ORE_DICTIONARY = "net.minecraftforge.oredict.OreDictionary";
+ private static final String COFH_ORE_DICTIONARY_ARBITER = "cofh.core.util.oredict.OreDictionaryArbiter";
+ private static final String THAUMCRAFT_ITEM_WISP_ESSENCE = "thaumcraft.common.items.ItemWispEssence";
static {
- mConfig = new AsmConfig(new File("config/GTplusplus/asm.cfg"));
- Preloader_Logger.INFO("Config Location: " + AsmConfig.config.getConfigFile().getAbsolutePath());
- Preloader_Logger.INFO("Is DevHelper Valid? " + DevHelper.mIsValidHelper);
- IC2_WRENCH_PATCH_CLASS_NAMES.add(IC2_BLOCK_BASE_TILE_ENTITY);
- IC2_WRENCH_PATCH_CLASS_NAMES.add(IC2_BLOCK_MACHINE1);
- IC2_WRENCH_PATCH_CLASS_NAMES.add(IC2_BLOCK_MACHINE2);
- IC2_WRENCH_PATCH_CLASS_NAMES.add(IC2_BLOCK_MACHINE3);
- IC2_WRENCH_PATCH_CLASS_NAMES.add(IC2_BLOCK_KINETIC_GENERATOR);
- IC2_WRENCH_PATCH_CLASS_NAMES.add(IC2_BLOCK_HEAT_GENERATOR);
- IC2_WRENCH_PATCH_CLASS_NAMES.add(IC2_BLOCK_GENERATOR);
- IC2_WRENCH_PATCH_CLASS_NAMES.add(IC2_BLOCK_REACTOR_ACCESS_HATCH);
- IC2_WRENCH_PATCH_CLASS_NAMES.add(IC2_BLOCK_REACTOR_CHAMBER);
- IC2_WRENCH_PATCH_CLASS_NAMES.add(IC2_BLOCK_REACTOR_FLUID_PORT);
- IC2_WRENCH_PATCH_CLASS_NAMES.add(IC2_BLOCK_REACTOR_REDSTONE_PORT);
- IC2_WRENCH_PATCH_CLASS_NAMES.add(IC2_BLOCK_REACTOR_VESSEL);
- IC2_WRENCH_PATCH_CLASS_NAMES.add(IC2_BLOCK_PERSONAL);
- IC2_WRENCH_PATCH_CLASS_NAMES.add(IC2_BLOCK_CHARGEPAD);
- IC2_WRENCH_PATCH_CLASS_NAMES.add(IC2_BLOCK_ELECTRIC);
- IC2_WRENCH_PATCH_CLASS_NAMES.add(IC2_BLOCK_LUMINATOR);
- }
-
- private static Boolean mObf = null;
-
- public boolean checkObfuscated() {
- if (mObf != null) {
- return mObf;
- }
- 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;
- }
- }
- mObf = obfuscated;
- return obfuscated;
+ IC2_WRENCH_PATCH_CLASS_NAMES.add("ic2.core.block.BlockTileEntity");
+ IC2_WRENCH_PATCH_CLASS_NAMES.add("ic2.core.block.machine.BlockMachine");
+ IC2_WRENCH_PATCH_CLASS_NAMES.add("ic2.core.block.machine.BlockMachine2");
+ IC2_WRENCH_PATCH_CLASS_NAMES.add("ic2.core.block.machine.BlockMachine3");
+ IC2_WRENCH_PATCH_CLASS_NAMES.add("ic2.core.block.kineticgenerator.block.BlockKineticGenerator");
+ IC2_WRENCH_PATCH_CLASS_NAMES.add("ic2.core.block.heatgenerator.block.BlockHeatGenerator");
+ IC2_WRENCH_PATCH_CLASS_NAMES.add("ic2.core.block.generator.block.BlockGenerator");
+ IC2_WRENCH_PATCH_CLASS_NAMES.add("ic2.core.block.reactor.block.BlockReactorAccessHatch");
+ IC2_WRENCH_PATCH_CLASS_NAMES.add("ic2.core.block.reactor.block.BlockReactorChamber");
+ IC2_WRENCH_PATCH_CLASS_NAMES.add("ic2.core.block.reactor.block.BlockReactorFluidPort");
+ IC2_WRENCH_PATCH_CLASS_NAMES.add("ic2.core.block.reactor.block.BlockReactorRedstonePort");
+ IC2_WRENCH_PATCH_CLASS_NAMES.add("ic2.core.block.reactor.block.BlockReactorVessel");
+ IC2_WRENCH_PATCH_CLASS_NAMES.add("ic2.core.block.personal.BlockPersonal.class");
+ IC2_WRENCH_PATCH_CLASS_NAMES.add("ic2.core.block.wiring.BlockChargepad.class");
+ IC2_WRENCH_PATCH_CLASS_NAMES.add("ic2.core.block.wiring.BlockElectric.class");
+ IC2_WRENCH_PATCH_CLASS_NAMES.add("ic2.core.block.wiring.BlockLuminator.class");
}
@Override
public byte[] transform(String name, String transformedName, byte[] basicClass) {
- // Is this environment obfuscated? (Extra checks just in case some weird stuff happens during the check)
- final boolean obfuscated = checkObfuscated();
-
// Fix LWJGL index array out of bounds on keybinding IDs
- if ((transformedName.equals(LWJGL_KEYBOARD) || transformedName.equals(MINECRAFT_GAMESETTINGS_OBF)
- || transformedName.equals(MINECRAFT_GAMESETTINGS)) && AsmConfig.enabledLwjglKeybindingFix
- // Do not transform if using lwjgl3
+ if ((transformedName.equals(LWJGL_KEYBOARD) || transformedName.equals(MINECRAFT_GAMESETTINGS))
+ && AsmConfig.enabledLwjglKeybindingFix
+ // Do not transform if using lwjgl3
&& !ReflectionUtils.doesClassExist("org.lwjgl.system.Platform")) {
- boolean isClientSettingsClass = false;
- if (!transformedName.equals("org.lwjgl.input.Keyboard")) {
- isClientSettingsClass = true;
- }
+ boolean isClientSettingsClass = !transformedName.equals("org.lwjgl.input.Keyboard");
Preloader_Logger.INFO("LWJGL Keybinding index out of bounds fix", "Transforming " + transformedName);
return new ClassTransformer_LWJGL_Keyboard(basicClass, isClientSettingsClass).getWriter().toByteArray();
}
@@ -131,25 +70,24 @@ public class Preloader_Transformer_Handler implements IClassTransformer {
}
// Fix the OreDictionary COFH
- if (transformedName.equals(COFH_ORE_DICTIONARY_ARBITER) && (AsmConfig.enableCofhPatch || !obfuscated)) {
+ if (transformedName.equals(COFH_ORE_DICTIONARY_ARBITER)
+ && (AsmConfig.enableCofhPatch || CORE_Preloader.DEV_ENVIRONMENT)) {
Preloader_Logger.INFO("COFH", "Transforming " + transformedName);
return new ClassTransformer_COFH_OreDictionaryArbiter(basicClass).getWriter().toByteArray();
}
- // Fix IC2 Wrench Harvesting
- for (String y : IC2_WRENCH_PATCH_CLASS_NAMES) {
- if (transformedName.equals(y)) {
- Preloader_Logger.INFO("IC2 getHarvestTool Patch", "Transforming " + transformedName);
- return new ClassTransformer_IC2_GetHarvestTool(basicClass, obfuscated, transformedName).getWriter()
- .toByteArray();
- }
+ if (IC2_WRENCH_PATCH_CLASS_NAMES.contains(transformedName)) {
+ Preloader_Logger.INFO("IC2 getHarvestTool Patch", "Transforming " + transformedName);
+ return new ClassTransformer_IC2_GetHarvestTool(basicClass, !CORE_Preloader.DEV_ENVIRONMENT, transformedName)
+ .getWriter().toByteArray();
}
// Fix Thaumcraft stuff
// Patching ItemWispEssence to allow invalid item handling
if (transformedName.equals(THAUMCRAFT_ITEM_WISP_ESSENCE) && AsmConfig.enableTcAspectSafety) {
Preloader_Logger.INFO("Thaumcraft WispEssence_Patch", "Transforming " + transformedName);
- return new ClassTransformer_TC_ItemWispEssence(basicClass, obfuscated).getWriter().toByteArray();
+ return new ClassTransformer_TC_ItemWispEssence(basicClass, !CORE_Preloader.DEV_ENVIRONMENT).getWriter()
+ .toByteArray();
}
return basicClass;