aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/preloader/asm
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus/preloader/asm')
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/AsmConfig.java211
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/ClassesToTransform.java74
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/Preloader_DummyContainer.java95
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java76
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/Preloader_SetupClass.java23
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/helpers/MethodHelper_CC.java28
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/helpers/MethodHelper_GT.java25
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_CC_GuiContainerManager.java121
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java185
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_ChunkLoading.java684
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_EntityLivingBase_SetHealth.java130
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_EntityAutoRocket.java527
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FluidUtil.java242
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FuelLoader.java622
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements.java1896
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements_CrashFix.java218
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BaseMetaTileEntity.java158
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_MetaPipeEntity.java286
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_NBT.java193
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_CharcoalPit.java184
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Client.java410
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_EnergyHatchPatch.java317
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_ItemMachines_Tooltip.java139
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_MetaGenerated_Tool.java116
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Packet_TileEntity.java319
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Utility.java283
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_GetHarvestTool.java214
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_Hazmat.java147
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_LWJGL_Keyboard.java278
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_FluidCartHandling.java117
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_FluidHelper.java695
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_InvTools.java235
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ItemWispEssence.java278
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TT_ThaumicRestorer.java611
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TiConFluids.java164
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer.java79
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java16
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java286
38 files changed, 0 insertions, 10682 deletions
diff --git a/src/Java/gtPlusPlus/preloader/asm/AsmConfig.java b/src/Java/gtPlusPlus/preloader/asm/AsmConfig.java
deleted file mode 100644
index a5981b15d9..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/AsmConfig.java
+++ /dev/null
@@ -1,211 +0,0 @@
-package gtPlusPlus.preloader.asm;
-
-import cpw.mods.fml.common.FMLLog;
-import gtPlusPlus.preloader.Preloader_Logger;
-
-import java.io.File;
-import java.util.ArrayList;
-import net.minecraftforge.common.config.Configuration;
-import net.minecraftforge.common.config.Property;
-import org.apache.logging.log4j.Level;
-
-public class AsmConfig {
-
- public static boolean loaded;
- public static Configuration config;
-
- public static boolean enableOreDictPatch;
- public static boolean enableTiConFluidLighting;
- public static boolean enableGtTooltipFix;
- public static boolean enableGtNbtFix;
- public static boolean enableGtCharcoalPitFix;
- public static boolean enableChunkDebugging;
- public static boolean enableCofhPatch;
- public static boolean enableGcFuelChanges;
- public static boolean enableRcFlowFix;
- public static int maxRailcraftTankProcessVolume;
- public static int maxRailcraftFluidLoaderFlow;
- public static int maxRailcraftFluidUnloaderFlow;
- public static boolean enableRcItemDupeFix;
- public static boolean enableTcAspectSafety;
- public static boolean enabledLwjglKeybindingFix;
- public static boolean enabledFixEntitySetHealth;
- public static boolean enableThaumicTinkererRepairFix;
-
- public static boolean disableAllLogging;
- public static boolean debugMode;
-
- public AsmConfig(File file) {
- if (!loaded) {
- config = new Configuration(file);
- syncConfig(true);
- }
-
- }
-
- public static void syncConfig(boolean load) {
- ArrayList<String> propOrder = new ArrayList<String>();
- ArrayList<String> propOrderDebug = new ArrayList<String>();
-
- try {
- if (!config.isChild && load) {
- config.load();
- }
-
- Property prop;
-
- //Debug
- prop = config.get("debug", "disableAllLogging", false);
- prop.comment = "Disables ALL logging from GT++.";
- prop.setLanguageKey("gtpp.disableAllLogging").setRequiresMcRestart(false);
- disableAllLogging = prop.getBoolean(false);
- propOrderDebug.add(prop.getName());
-
- prop = config.get("debug", "debugMode", false);
- prop.comment = "Enables all sorts of debug logging. (Don't use unless told to, breaks other things.)";
- prop.setLanguageKey("gtpp.debugMode").setRequiresMcRestart(false);
- debugMode = prop.getBoolean(false);
- propOrderDebug.add(prop.getName());
-
- prop = config.get("debug", "enabledFixEntitySetHealth", false);
- prop.comment = "Enable/Disable entity setHealth() fix.";
- prop.setLanguageKey("gtpp.enabledFixEntitySetHealth").setRequiresMcRestart(true);
- enabledFixEntitySetHealth = prop.getBoolean(false);
- propOrderDebug.add(prop.getName());
-
- prop = config.get("debug", "enableChunkDebugging", false);
- prop.comment = "Enable/Disable Chunk Debugging Features, Must Be enabled on Client and Server.";
- prop.setLanguageKey("gtpp.enableChunkDebugging").setRequiresMcRestart(true);
- enableChunkDebugging = prop.getBoolean(false);
- propOrderDebug.add(prop.getName());
-
- prop = config.get("debug", "enableGtNbtFix", true);
- prop.comment = "Enable/Disable GT NBT Persistency Fix";
- prop.setLanguageKey("gtpp.enableGtNbtFix").setRequiresMcRestart(true);
- enableGtNbtFix = prop.getBoolean(true);
- propOrderDebug.add(prop.getName());
-
- prop = config.get("debug", "enableCofhPatch", false);
- prop.comment = "Enable/Disable COFH OreDictionaryArbiter Patch (Useful for Development)";
- prop.setLanguageKey("gtpp.enableCofhPatch").setRequiresMcRestart(true);
- enableCofhPatch = prop.getBoolean(false);
- propOrderDebug.add(prop.getName());
-
- prop = config.get("debug", "enableOreDictPatch", false);
- prop.comment = "Enable/Disable Forge OreDictionary Patch (Useful for Development)";
- prop.setLanguageKey("gtpp.enableOreDictPatch").setRequiresMcRestart(true);
- enableOreDictPatch = prop.getBoolean(false);
- propOrderDebug.add(prop.getName());
-
- prop = config.get("debug", "enableThaumicTinkererRepairFix", false);
- prop.comment = "Enable/Disable Patch for Thaumic Repairer";
- prop.setLanguageKey("gtpp.enableThaumicTinkererRepairFix").setRequiresMcRestart(true);
- enableThaumicTinkererRepairFix = prop.getBoolean(false);
- propOrderDebug.add(prop.getName());
-
-
-
-
-
-
- //General Features
- prop = config.get("general", "enableTiConFluidLighting", true);
- prop.comment = "Enable/Disable Brightness Visuals for Tinkers Fluids, only required on the Client.";
- prop.setLanguageKey("gtpp.enableTiConFluidLighting").setRequiresMcRestart(true);
- enableTiConFluidLighting = prop.getBoolean(true);
- propOrder.add(prop.getName());
-
- prop = config.get("general", "enabledLwjglKeybindingFix", true);
- prop.comment = "Prevents the game crashing from having invalid keybinds. https://github.com/alkcorp/GTplusplus/issues/544";
- prop.setLanguageKey("gtpp.enabledLwjglKeybindingFix").setRequiresMcRestart(true);
- enabledLwjglKeybindingFix = prop.getBoolean(true);
- propOrder.add(prop.getName());
-
- prop = config.get("general", "enableGtTooltipFix", true);
- prop.comment = "Enable/Disable Custom GT Tooltips";
- prop.setLanguageKey("gtpp.enableGtTooltipFix").setRequiresMcRestart(true);
- enableGtTooltipFix = prop.getBoolean(true);
- propOrder.add(prop.getName());
-
-
-
- prop = config.get("general", "enableGtCharcoalPitFix", true);
- prop.comment = "Makes the Charcoal Pile Igniter work better.";
- prop.setLanguageKey("gtpp.enableGtCharcoalPitFix").setRequiresMcRestart(true);
- enableGtCharcoalPitFix = prop.getBoolean(true);
- propOrder.add(prop.getName());
-
- prop = config.get("general", "enableGcFuelChanges", true);
- prop.comment = "Enable/Disable changes to Galacticraft Rocket Fuels.";
- prop.setLanguageKey("gtpp.enableGcFuelChanges").setRequiresMcRestart(true);
- //Disabled because Broken
- //enableGcFuelChanges = prop.getBoolean(true);
- enableGcFuelChanges = false;
- propOrder.add(prop.getName());
-
-
- //Railcraft Tank fix
- prop = config.get("general", "enableRcFlowFix", true);
- prop.comment = "Allows Custom max IO rates on RC tanks";
- prop.setLanguageKey("gtpp.enableRcFlowFix").setRequiresMcRestart(true);
- enableRcFlowFix = prop.getBoolean(true);
- propOrder.add(prop.getName());
-
- prop = config.get("general", "maxRailcraftTankProcessVolume", 4000);
- prop.comment = "Max IO for RC fluid tanks (Not Carts). 'enableRcFlowFix' Must be enabled.";
- prop.setLanguageKey("gtpp.maxRailcraftTankProcessVolume").setRequiresMcRestart(true);
- maxRailcraftTankProcessVolume = prop.getInt(4000);
- propOrder.add(prop.getName());
-
- // Railcraft Loader Max flowrate
- prop = config.get("general", "maxRailcraftFluidLoaderFlow", 20);
- prop.comment = "Max Output rate for RC Fluid Loaders";
- prop.setLanguageKey("gtpp.maxRailcraftFluidLoaderFlow").setRequiresMcRestart(true);
- maxRailcraftFluidLoaderFlow = prop.getInt(20);
- propOrder.add(prop.getName());
-
- // Railcraft Unloader Max flowrate
- prop = config.get("general", "maxRailcraftFluidUnloaderFlow", 80);
- prop.comment = "Max Output rate for RC Fluid Unloaders";
- prop.setLanguageKey("gtpp.maxRailcraftFluidUnloaderFlow").setRequiresMcRestart(true);
- maxRailcraftFluidUnloaderFlow = prop.getInt(80);
- propOrder.add(prop.getName());
-
- //Railcraft Dupe Fix
- prop = config.get("general", "enableRcItemDupeFix", true);
- prop.comment = "Fixes possible negative itemstacks";
- prop.setLanguageKey("gtpp.enableRcItemDupeFix").setRequiresMcRestart(true);
- enableRcItemDupeFix = prop.getBoolean(true);
- propOrder.add(prop.getName());
-
-
- //TC Aspect Safety
- prop = config.get("general", "enableTcAspectSafety", true);
- prop.comment = "Fixes small oversights in Thaumcraft 4.";
- prop.setLanguageKey("gtpp.enableTcAspectSafety").setRequiresMcRestart(true);
- enableTcAspectSafety = prop.getBoolean(true);
- propOrder.add(prop.getName());
-
-
- config.setCategoryPropertyOrder("general", propOrder);
- config.setCategoryPropertyOrder("debug", propOrderDebug);
- if (config.hasChanged()) {
- config.save();
- }
-
- Preloader_Logger.INFO("Chunk Debugging - Enabled: "+enableChunkDebugging);
- Preloader_Logger.INFO("Gt Nbt Fix - Enabled: "+enableGtNbtFix);
- Preloader_Logger.INFO("TiCon Fluid Lighting - Enabled: "+enableTiConFluidLighting);
- Preloader_Logger.INFO("Gt Tooltip Fix - Enabled: "+enableGtTooltipFix);
- Preloader_Logger.INFO("COFH Patch - Enabled: "+enableCofhPatch);
- Preloader_Logger.INFO("Gc Fuel Changes Patch - Enabled: "+enableGcFuelChanges);
- Preloader_Logger.INFO("Railcraft Fluid Flow Patch - Enabled: "+enableRcFlowFix);
- Preloader_Logger.INFO("Thaumcraft Aspect Safety Patch - Enabled: "+enableTcAspectSafety);
- Preloader_Logger.INFO("Fix bad usage of EntityLivingBase.setHealth Patch - Enabled: "+enabledFixEntitySetHealth);
-
- } catch (Exception var3) {
- FMLLog.log(Level.ERROR, var3, "GT++ ASM had a problem loading it's config", new Object[0]);
- }
-
- }
-} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/preloader/asm/ClassesToTransform.java b/src/Java/gtPlusPlus/preloader/asm/ClassesToTransform.java
deleted file mode 100644
index 1dcbff439f..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/ClassesToTransform.java
+++ /dev/null
@@ -1,74 +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 TINKERS_FLUID_BLOCK = "tconstruct.smeltery.blocks.TConstructFluid";
-
-
- public static final String RAILCRAFT_FLUID_HELPER = "mods.railcraft.common.fluids.FluidHelper";
- public static final String RAILCRAFT_TILE_FLUID_LOADER = "mods.railcraft.common.blocks.machine.gamma.TileFluidLoader";
- public static final String RAILCRAFT_INVENTORY_TOOLS = "mods.railcraft.common.util.inventory.InvTools";
-
-
- public static final String GALACTICRAFT_FLUID_UTILS = "micdoodle8.mods.galacticraft.core.util.FluidUtil";
- public static final String GALACTICRAFT_TILE_ENTITY_FUEL_LOADER = "micdoodle8.mods.galacticraft.core.tile.TileEntityFuelLoader";
- public static final String GALACTICRAFT_ENTITY_AUTO_ROCKET = "micdoodle8.mods.galacticraft.api.prefab.entity.EntityAutoRocket";
-
-
- public static final String GT_UTILITY = "gregtech.api.util.GT_Utility";
- public static final String GT_ACHIEVEMENTS = "gregtech.loaders.misc.GT_Achievements";
- public static final String GT_CLIENT_PROXY = "gregtech.common.GT_Client";
- public static final String GT_PACKET_TILE_ENTITY = "gregtech.api.net.GT_Packet_TileEntity";
- public static final String GT_BASE_META_TILE_ENTITY = "gregtech.api.metatileentity.BaseMetaTileEntity";
- public static final String GT_MTE_CHARCOAL_PIT = "gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_Charcoal_Pit";
- public static final String GT_ITEM_MACHINES = "gregtech.common.blocks.GT_Item_Machines";
- public static final String GT_METAGENERATED_TOOL = "gregtech.api.items.GT_MetaGenerated_Tool";
- public static final String GT_BLOCK_MACHINES = "gregtech.common.blocks.GT_Block_Machines";
- public static final String GT_MTE_HATCH_ENERGY = "gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy";
- public static final String GT_METAPIPE_ITEM = "gregtech.api.metatileentity.implementations.GT_MetaPipeEntity_Item";
- public static final String GT_METAPIPE_FLUID = "gregtech.api.metatileentity.implementations.GT_MetaPipeEntity_Fluid";
- public static final String GT_METAPIPE_FRAME = "gregtech.api.metatileentity.implementations.GT_MetaPipeEntity_Frame";
-
-
- public static final String GTPP_MTE_HATCH_RTG = "gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy_RTG";
-
-
- 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/Java/gtPlusPlus/preloader/asm/Preloader_DummyContainer.java b/src/Java/gtPlusPlus/preloader/asm/Preloader_DummyContainer.java
deleted file mode 100644
index 2a0082754a..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/Preloader_DummyContainer.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package gtPlusPlus.preloader.asm;
-
-import java.io.File;
-import java.util.Arrays;
-
-import com.google.common.eventbus.EventBus;
-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;
-import net.minecraftforge.common.config.Configuration;
-
-public class Preloader_DummyContainer extends DummyModContainer {
-
- public Preloader_DummyContainer() {
- super(new ModMetadata());
- ModMetadata meta = getMetadata();
- meta.modId = CORE_Preloader.MODID;
- 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.screenshots = new String[0];
- meta.logoFile = "";
- //meta.dependencies = (List<ArtifactVersion>) CORE_Preloader.DEPENDENCIES;
- Preloader_Logger.INFO("Initializing DummyModContainer");
-
- }
-
- @Override
- public boolean registerBus(EventBus bus, LoadController controller) {
- bus.register(this);
- return true;
- }
-
- @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"));
- config.load();
-
- //BGM Watchdog
- 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.");
-
- // Circuits
- CORE_Preloader.enableOldGTcircuits = config.getBoolean("enableOldGTcircuits", "gregtech", false, "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", 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;
- }
-} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java b/src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java
deleted file mode 100644
index 8aa449df5d..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package gtPlusPlus.preloader.asm;
-
-import java.io.File;
-import java.util.Map;
-
-import cpw.mods.fml.relauncher.IFMLLoadingPlugin;
-import cpw.mods.fml.relauncher.IFMLLoadingPlugin.MCVersion;
-import cpw.mods.fml.relauncher.IFMLLoadingPlugin.SortingIndex;
-import gtPlusPlus.preloader.CORE_Preloader;
-import gtPlusPlus.preloader.Preloader_Logger;
-import gtPlusPlus.preloader.asm.transformers.Preloader_Transformer_Handler;
-import net.minecraft.launchwrapper.Launch;
-
-@SortingIndex(10097)
-@MCVersion(value = "1.7.10")
-@IFMLLoadingPlugin.TransformerExclusions("gtPlusPlus.preloader")
-@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;
- }
-
- @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");
- 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);
- }
-
-} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/preloader/asm/Preloader_SetupClass.java b/src/Java/gtPlusPlus/preloader/asm/Preloader_SetupClass.java
deleted file mode 100644
index a6d2b6c863..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/Preloader_SetupClass.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package gtPlusPlus.preloader.asm;
-
-import java.io.File;
-import java.util.Map;
-
-import cpw.mods.fml.relauncher.IFMLCallHook;
-import gtPlusPlus.preloader.CORE_Preloader;
-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/Java/gtPlusPlus/preloader/asm/helpers/MethodHelper_CC.java b/src/Java/gtPlusPlus/preloader/asm/helpers/MethodHelper_CC.java
deleted file mode 100644
index 664ffe7b2d..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/helpers/MethodHelper_CC.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package gtPlusPlus.preloader.asm.helpers;
-
-import codechicken.nei.guihook.GuiContainerManager;
-import codechicken.nei.guihook.IContainerInputHandler;
-import net.minecraft.client.gui.inventory.GuiContainer;
-
-public class MethodHelper_CC {
-
-
- public void mouseUp2(int mousex, int mousey, int button) {
- MethodHelper_CC.mouseUp(mousex, mousey, button);
- }
-
- public static void mouseUp(int mousex, int mousey, int button) {
- GuiContainerManager aManager = codechicken.nei.guihook.GuiContainerManager.getManager();
- if (aManager != null) {
- GuiContainer aWindow = aManager.window;
- for (IContainerInputHandler inputhander : GuiContainerManager.inputHandlers) {
- //Preloader_Logger.INFO("Found Handler: "+aWindow.getClass().getName() + " | "+inputhander.getClass().getName());
- }
- for (IContainerInputHandler inputhander : GuiContainerManager.inputHandlers) {
- //Preloader_Logger.INFO("Trying to handle events for "+aWindow.getClass().getName() + " | "+inputhander.getClass().getName());
- inputhander.onMouseUp(aWindow, mousex, mousey, button);
- }
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/helpers/MethodHelper_GT.java b/src/Java/gtPlusPlus/preloader/asm/helpers/MethodHelper_GT.java
deleted file mode 100644
index 8120df81fa..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/helpers/MethodHelper_GT.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package gtPlusPlus.preloader.asm.helpers;
-
-import java.util.List;
-
-import gregtech.api.enums.Materials;
-import gregtech.api.items.GT_MetaGenerated_Tool;
-import net.minecraft.creativetab.CreativeTabs;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-
-public class MethodHelper_GT {
-
- public static final void getSubItems(GT_MetaGenerated_Tool aTool, Item var1, CreativeTabs aCreativeTab, List aList) {
- for (int i = 0; i < 32766; i += 2) {
- if (aTool.getToolStats(new ItemStack(aTool, 1, i)) != null) {
- ItemStack tStack = new ItemStack(aTool, 1, i);
- aTool.isItemStackUsable(tStack);
- aList.add(tStack);
- aList.add(aTool.getToolWithStats(i,1,Materials.TungstenSteel,Materials.TungstenSteel,null));
- aList.add(aTool.getToolWithStats(i,1,Materials.Neutronium,Materials.Neutronium,null));
- }
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_CC_GuiContainerManager.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_CC_GuiContainerManager.java
deleted file mode 100644
index 8791d401c8..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_CC_GuiContainerManager.java
+++ /dev/null
@@ -1,121 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.*;
-
-import gtPlusPlus.preloader.Preloader_Logger;
-
-public class ClassTransformer_CC_GuiContainerManager {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- public ClassTransformer_CC_GuiContainerManager(byte[] basicClass) {
-
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- localClassVisitor aTempMethodRemover = new localClassVisitor(aTempWriter);
- aTempReader.accept(aTempMethodRemover, 0);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- } else {
- isValid = false;
- }
-
- Preloader_Logger.LOG("CodeChicken GuiContainerManager Patch", Level.INFO, "Valid patch? " + isValid + ".");
- reader = aTempReader;
- writer = aTempWriter;
-
- if (reader != null && writer != null) {
- Preloader_Logger.LOG("CodeChicken GuiContainerManager Patch", Level.INFO, "Attempting Method Injection.");
- injectMethod("mouseUp");
- }
-
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public boolean injectMethod(String aMethodName) {
- MethodVisitor mv;
- boolean didInject = false;
- String aClassName = "codechicken/nei/guihook/GuiContainerManager";
- ClassWriter cw = getWriter();
- if (aMethodName.equals("mouseUp")) {
- Preloader_Logger.LOG("CodeChicken GuiContainerManager Patch", Level.INFO, "Injecting " + aMethodName + ", static replacement call to "+aClassName+".");
- mv = cw.visitMethod(ACC_PUBLIC, "mouseUp", "(III)V", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(12, l0);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/helpers/MethodHelper_CC", "mouseUp", "(III)V", false);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(13, l1);
- mv.visitInsn(RETURN);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLocalVariable("this", "L+aClassName+;", null, l0, l2, 0);
- mv.visitLocalVariable("mousex", "I", null, l0, l2, 1);
- mv.visitLocalVariable("mousey", "I", null, l0, l2, 2);
- mv.visitLocalVariable("button", "I", null, l0, l2, 3);
- mv.visitMaxs(3, 4);
- mv.visitEnd();
- didInject = true;
- }
-
- Preloader_Logger.LOG("CodeChicken GuiContainerManager Patch", Level.INFO, "Method injection complete.");
- return didInject;
- }
-
- public final class localClassVisitor extends ClassVisitor {
-
- boolean obfuscated = false;
-
- public localClassVisitor(ClassVisitor cv) {
- super(ASM5, cv);
- }
-
- public boolean getObfuscatedRemoval() {
- return obfuscated;
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- MethodVisitor methodVisitor;
-
- if (name.equals("mouseUp")) {
- methodVisitor = null;
- }
- else {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
-
- if (methodVisitor == null) {
- Preloader_Logger.LOG("CodeChicken GuiContainerManager Patch", Level.INFO, "Found method " + name + ", removing.");
- Preloader_Logger.LOG("CodeChicken GuiContainerManager Patch", Level.INFO, "Descriptor: "+desc);
- }
- return methodVisitor;
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java
deleted file mode 100644
index 6f08dc4ff5..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java
+++ /dev/null
@@ -1,185 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
-import static org.objectweb.asm.Opcodes.ACC_STATIC;
-import static org.objectweb.asm.Opcodes.ALOAD;
-import static org.objectweb.asm.Opcodes.ASM5;
-import static org.objectweb.asm.Opcodes.INVOKESTATIC;
-import static org.objectweb.asm.Opcodes.RETURN;
-
-import java.util.ArrayList;
-
-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 com.google.common.base.Strings;
-import com.google.common.collect.BiMap;
-import com.google.common.collect.HashBiMap;
-
-import cofh.core.util.oredict.OreDictionaryArbiter;
-import cofh.lib.util.ItemWrapper;
-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;
-import net.minecraft.item.ItemStack;
-import net.minecraftforge.oredict.OreDictionary;
-
-public class ClassTransformer_COFH_OreDictionaryArbiter {
-
- //The qualified name of the class we plan to transform.
- private static final String className = "cofh.core.util.oredict.OreDictionaryArbiter";
- //cofh/core/util/oredict/OreDictionaryArbiter
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- public ClassTransformer_COFH_OreDictionaryArbiter(byte[] basicClass) {
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new localClassVisitor(aTempWriter), 0);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- }
- else {
- isValid = false;
- }
- reader = aTempReader;
- writer = aTempWriter;
-
- if (reader != null && writer != null) {
- injectMethod("registerOreDictionaryEntry");
- }
-
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- 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";
- MethodVisitor mv;
- if (aMethodName.equals("registerOreDictionaryEntry")) {
- FMLRelaunchLog.log("[GT++ ASM] COFH OreDictionaryArbiter Patch", Level.INFO, "Injecting "+aMethodName+" into "+className+". ItemStack: "+aItemStack);
- mv = getWriter().visitMethod(ACC_PUBLIC + ACC_STATIC, "registerOreDictionaryEntry", "(L"+aItemStack+";Ljava/lang/String;)V", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(61, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter$FixCOFH", "registerOreDictionaryEntry", "(L"+aItemStack+";Ljava/lang/String;)V", false);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(62, l1);
- mv.visitInsn(RETURN);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLocalVariable("arg", "L"+aItemStack+";", null, l0, l2, 0);
- mv.visitLocalVariable("arg0", "Ljava/lang/String;", null, l0, l2, 1);
- mv.visitMaxs(2, 2);
- mv.visitEnd();
- }
- FMLRelaunchLog.log("[GT++ ASM] COFH OreDictionaryArbiter Patch", Level.INFO, "Method injection complete.");
-
- }
-
- public static final class localClassVisitor extends ClassVisitor {
-
- public localClassVisitor(ClassVisitor cv) {
- super(ASM5, cv);
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- if (name.equals("registerOreDictionaryEntry")) {
- FMLRelaunchLog.log("[GT++ ASM] COFH OreDictionaryArbiter Patch", Level.INFO, "Removing method "+name);
- return null;
- }
- MethodVisitor methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- return methodVisitor;
- }
- }
-
-
-
-
- @SuppressWarnings("unchecked")
- public static class FixCOFH{
-
- private static BiMap<String, Integer> oreIDs;
- private static TMap<Integer, ArrayList<ItemStack>> oreStacks;
- private static TMap<ItemWrapper, ArrayList<Integer>> stackIDs;
- private static TMap<ItemWrapper, ArrayList<String>> stackNames;
-
- static {
- try {
- oreIDs = (BiMap<String, Integer>) ReflectionUtils.getField(OreDictionaryArbiter.class, "oreIDs").get(null);
- oreStacks = (TMap<Integer, ArrayList<ItemStack>>) ReflectionUtils.getField(OreDictionaryArbiter.class, "oreStacks").get(null);
- stackIDs = (TMap<ItemWrapper, ArrayList<Integer>>) ReflectionUtils.getField(OreDictionaryArbiter.class, "stackIDs").get(null);
- stackNames = (TMap<ItemWrapper, ArrayList<String>>) ReflectionUtils.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>>();
- }
- }
-
- public static void registerOreDictionaryEntry(ItemStack arg, String arg0) {
- try {
- if (arg == null) {
- return;
- }
- if (arg.getItem() != null && !Strings.isNullOrEmpty(arg0)) {
- 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>());
- }
- ((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>());
- }
- ((ArrayList<Integer>) stackIDs.get(arg2)).add(Integer.valueOf(arg1));
- ((ArrayList<String>) stackNames.get(arg2)).add(arg0);
- }
- }
- catch (Throwable t) {
- return;
- }
- }
- }
-
-
-
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_ChunkLoading.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_ChunkLoading.java
deleted file mode 100644
index 19648ae60c..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_ChunkLoading.java
+++ /dev/null
@@ -1,684 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import java.io.IOException;
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.Label;
-import org.objectweb.asm.MethodVisitor;
-
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gtPlusPlus.preloader.DevHelper;
-
-public class ClassTransformer_Forge_ChunkLoading {
-
- //The qualified name of the class we plan to transform.
- private static final String className = "net.minecraftforge.common.ForgeChunkManager";
- //net/minecraftforge/common/ForgeChunkManager
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- String aChunkCoordIntPair;
- String aItemStack;
- String aWorld;
- String aEntity;
-
- private static boolean doesMethodAlreadyExist = false;
-
- public ClassTransformer_Forge_ChunkLoading(byte[] basicClass, boolean obfuscated) {
-
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new localClassVisitor(aTempWriter), 0);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- }
- else {
- isValid = false;
- }
- reader = aTempReader;
- writer = aTempWriter;
-
- 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";
-
- injectMethod("forceChunk");
- injectMethod("unforceChunk");
- injectMethod("requestTicket");
- injectMethod("releaseTicket");
- }
-
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public void injectMethod(String aMethodName) {
- MethodVisitor mv;
- FMLRelaunchLog.log("[GT++ ASM] Chunkloading Patch", Level.INFO, "Injecting "+aMethodName+" into "+className+".");
- if (aMethodName.equals("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();
-
- }
- else if (aMethodName.equals("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();
-
- }
-
- else if (aMethodName.equals("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();
-
- }
-
-
- else if (aMethodName.equals("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();
-
- }
-
-
- FMLRelaunchLog.log("[GT++ ASM] Chunkloading Patch", Level.INFO, "Method injection complete.");
-
- }
-
- public static final class localClassVisitor extends ClassVisitor {
-
- public localClassVisitor(ClassVisitor cv) {
- super(ASM5, cv);
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- if (name.equals("forceChunk") || name.equals("unforceChunk") || name.equals("requestTicket") || name.equals("releaseTicket")) {
- 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;
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_EntityLivingBase_SetHealth.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_EntityLivingBase_SetHealth.java
deleted file mode 100644
index d56b9de059..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_EntityLivingBase_SetHealth.java
+++ /dev/null
@@ -1,130 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
-
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import net.minecraft.entity.EntityLivingBase;
-import net.minecraft.util.DamageSource;
-
-public class ClassTransformer_Forge_EntityLivingBase_SetHealth {
-
- private boolean isValid = false;
- private ClassReader mReader = null;
- private ClassWriter mWriter = null;
- private boolean didPatch = false;
-
- public ClassTransformer_Forge_EntityLivingBase_SetHealth(String aClassName, byte[] basicClass) {
- if (basicClass == null) {
- return;
- }
-
- ClassReader reader = new ClassReader(basicClass);
- ClassWriter writer = new ClassWriter(reader, ClassWriter.COMPUTE_MAXS);
- ClassVisitor visitor = writer;
- SetHealthVisitor aVisitor = new SetHealthVisitor(visitor);
- visitor = aVisitor;
- reader.accept(visitor, 0);
- if (reader != null && writer != null) {
- isValid = true;
- }
- else {
- isValid = false;
- }
- mReader = reader;
- mWriter = writer;
- didPatch = aVisitor.didPatchInternal;
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return mReader;
- }
-
- public ClassWriter getWriter() {
- return mWriter;
- }
-
-
- public static class SetHealthVisitor extends ClassVisitor {
- private String clsName = null;
- private boolean didPatchInternal = false;
- private static final String callbackOwner = org.objectweb.asm.Type.getInternalName(SetHealthVisitor.class);
-
- private SetHealthVisitor(ClassVisitor cv) {
- super(Opcodes.ASM5, cv);
- }
-
- @Override
- public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) {
- super.visit(
- version, access, name, signature, superName, interfaces
- );
- this.clsName = name;
- }
-
- @Override
- public MethodVisitor visitMethod(
- int mAccess, final String mName, final String mDesc, String mSignature, String[] mExceptions) {
- final boolean warn = !(clsName.equals(
- "net/minecraft/entity/EntityLivingBase"
- ));
-
- return new MethodVisitor(Opcodes.ASM5, super.visitMethod(mAccess, mName, mDesc, mSignature, mExceptions)) {
- @Override
- public void visitMethodInsn(
- int opcode, String owner, String name, String desc, boolean isIntf
- ) {
- if (owner.equals(
- "net/minecraft/entity/EntityLivingBase"
- ) && name.equals("setHealth") && desc.equals("(F)V")) {
- if (warn) {
- FMLRelaunchLog.warning(
- "============================================================="
- );
- FMLRelaunchLog.warning(
- "MOD HAS DIRECT REFERENCE Entity.setHealth() THIS IS NOT ALLOWED!"
- );
- FMLRelaunchLog.warning(
- "Offendor: %s.%s%s", SetHealthVisitor.this.clsName, mName, mDesc
- );
- FMLRelaunchLog.warning(
- "Use EntityLiving.attackEntityFrom(DamageSource, damageDealt) instead"
- );
- FMLRelaunchLog.warning(
- "============================================================="
- );
- }
- didPatchInternal = true;
- //opcode = Opcodes.INVOKESTATIC; // Set it static
- //owner = SetHealthVisitor.callbackOwner;
- //name = "setHealthGeneric"; // Replace the method name
- //desc = "(Lnet/minecraft/entity/EntityLivingBase;F)V"; // Replace the method desc
-
- }
- super.visitMethodInsn(opcode, owner, name, desc, isIntf);
- }
- };
- }
-
-
- private final static DamageSource mGenericDamageSource = new DamageSource("gtpp.generic");
-
- public static void setHealthGeneric(EntityLivingBase aEntity, float aValue) {
- aEntity.attackEntityFrom(mGenericDamageSource, aValue);
- }
-
- }
-
-
- public boolean didPatchClass() {
- return didPatch;
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_EntityAutoRocket.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_EntityAutoRocket.java
deleted file mode 100644
index 1e58cbbe9b..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_EntityAutoRocket.java
+++ /dev/null
@@ -1,527 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import java.io.IOException;
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.Label;
-import org.objectweb.asm.MethodVisitor;
-
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gtPlusPlus.preloader.DevHelper;
-
-
-public class ClassTransformer_GC_EntityAutoRocket {
-
- //The qualified name of the class we plan to transform.
- private static final String className = "micdoodle8.mods.galacticraft.api.prefab.entity.EntityAutoRocket";
- //micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
- private final boolean isObfuscated;
-
- public ClassTransformer_GC_EntityAutoRocket(byte[] basicClass, boolean obfuscated) {
-
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- isObfuscated = obfuscated;
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new localClassVisitor(aTempWriter), 0);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- }
- else {
- isValid = false;
- }
- reader = aTempReader;
- writer = aTempWriter;
-
- if (reader != null && writer != null) {
- injectMethod();
- }
- else {
- FMLRelaunchLog.log("[GT++ ASM] Galacticraft EntityAutoRocket Patch", Level.INFO, "Failed to Inject new code.");
- }
-
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public void injectMethod() {
-
- String aEntityPlayer = isObfuscated ? DevHelper.getObfuscated("net/minecraft/entity/player/EntityPlayer") : "net/minecraft/entity/player/EntityPlayer";
- String aEntityPlayerMP = isObfuscated ? DevHelper.getObfuscated("net/minecraft/entity/player/EntityPlayerMP") : "net/minecraft/entity/player/EntityPlayerMP";
- String aWorld = isObfuscated ? DevHelper.getObfuscated("net/minecraft/world/World") : "net/minecraft/world/World";
- String aItemStack = isObfuscated ? DevHelper.getObfuscated("net/minecraft/item/ItemStack") : "net/minecraft/item/ItemStack";
- String aEntity = isObfuscated ? DevHelper.getObfuscated("net/minecraft/entity/Entity") : "net/minecraft/entity/Entity";
- String aWorldClient = isObfuscated ? DevHelper.getObfuscated("net/minecraft/client/multiplayer/WorldClient") : "net/minecraft/client/multiplayer/WorldClient";
- String aDifficultyEnum = isObfuscated ? DevHelper.getObfuscated("net/minecraft/world/EnumDifficulty") : "net/minecraft/world/EnumDifficulty";
- String aWorldInfo = isObfuscated ? DevHelper.getObfuscated("net/minecraft/world/storage/WorldInfo") : "net/minecraft/world/storage/WorldInfo";
- String aItemInWorldManager = isObfuscated ? DevHelper.getObfuscated("net/minecraft/server/management/ItemInWorldManager") : "net/minecraft/server/management/ItemInWorldManager";
- String aWorldType = isObfuscated ? DevHelper.getObfuscated("net/minecraft/world/WorldType") : "net/minecraft/world/WorldType";
- String aGameType = isObfuscated ? DevHelper.getObfuscated("net/minecraft/world/WorldSettings$GameType") : "net/minecraft/world/WorldSettings$GameType";
-
- if (isValidTransformer()) {
- FMLRelaunchLog.log("[GT++ ASM] Galacticraft EntityAutoRocket Patch", Level.INFO, "Injecting decodePacketdata into "+className+".");
- MethodVisitor mv = getWriter().visitMethod(ACC_PUBLIC, "decodePacketdata", "(Lio/netty/buffer/ByteBuf;)V", null, null);
-
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(1027, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKESPECIAL, "micdoodle8/mods/galacticraft/api/prefab/entity/EntitySpaceshipBase", "decodePacketdata", "(Lio/netty/buffer/ByteBuf;)V", false);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(1029, l1);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/xmod/galacticraft/util/GalacticUtils", "getValidFuelForTier", "(L"+aEntity+";)Lnet/minecraftforge/fluids/FluidStack;", false);
- mv.visitVarInsn(ASTORE, 2);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(1030, l2);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readInt", "()I", false);
- mv.visitVarInsn(ISTORE, 3);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(1031, l3);
- mv.visitVarInsn(ALOAD, 2);
- Label l4 = new Label();
- mv.visitJumpInsn(IFNULL, l4);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(1032, l5);
- mv.visitTypeInsn(NEW, "net/minecraftforge/fluids/FluidStack");
- mv.visitInsn(DUP);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitMethodInsn(INVOKESPECIAL, "net/minecraftforge/fluids/FluidStack", "<init>", "(Lnet/minecraftforge/fluids/FluidStack;I)V", false);
- mv.visitVarInsn(ASTORE, 4);
- Label l6 = new Label();
- mv.visitLabel(l6);
- mv.visitLineNumber(1033, l6);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitJumpInsn(IFNULL, l4);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(1034, l7);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "fuelTank", "Lnet/minecraftforge/fluids/FluidTank;");
- mv.visitVarInsn(ALOAD, 4);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidTank", "setFluid", "(Lnet/minecraftforge/fluids/FluidStack;)V", false);
- mv.visitLabel(l4);
- mv.visitLineNumber(1038, l4);
- mv.visitFrame(F_APPEND,2, new Object[] {"net/minecraftforge/fluids/FluidStack", INTEGER}, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readBoolean", "()Z", false);
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "landing", "Z");
- Label l8 = new Label();
- mv.visitLabel(l8);
- mv.visitLineNumber(1039, l8);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readInt", "()I", false);
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "destinationFrequency", "I");
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(1041, l9);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readBoolean", "()Z", false);
- Label l10 = new Label();
- mv.visitJumpInsn(IFEQ, l10);
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLineNumber(1043, l11);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitTypeInsn(NEW, "micdoodle8/mods/galacticraft/api/vector/BlockVec3");
- mv.visitInsn(DUP);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readInt", "()I", false);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readInt", "()I", false);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readInt", "()I", false);
- mv.visitMethodInsn(INVOKESPECIAL, "micdoodle8/mods/galacticraft/api/vector/BlockVec3", "<init>", "(III)V", false);
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "targetVec", "Lmicdoodle8/mods/galacticraft/api/vector/BlockVec3;");
- mv.visitLabel(l10);
- mv.visitLineNumber(1046, l10);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readDouble", "()D", false);
- mv.visitLdcInsn(new Double("8000.0"));
- mv.visitInsn(DDIV);
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "motionX", "D");
- Label l12 = new Label();
- mv.visitLabel(l12);
- mv.visitLineNumber(1047, l12);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readDouble", "()D", false);
- mv.visitLdcInsn(new Double("8000.0"));
- mv.visitInsn(DDIV);
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "motionY", "D");
- Label l13 = new Label();
- mv.visitLabel(l13);
- mv.visitLineNumber(1048, l13);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readDouble", "()D", false);
- mv.visitLdcInsn(new Double("8000.0"));
- mv.visitInsn(DDIV);
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "motionZ", "D");
- Label l14 = new Label();
- mv.visitLabel(l14);
- mv.visitLineNumber(1049, l14);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readDouble", "()D", false);
- mv.visitLdcInsn(new Double("8000.0"));
- mv.visitInsn(DDIV);
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "lastMotionY", "D");
- Label l15 = new Label();
- mv.visitLabel(l15);
- mv.visitLineNumber(1050, l15);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readDouble", "()D", false);
- mv.visitLdcInsn(new Double("8000.0"));
- mv.visitInsn(DDIV);
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "lastLastMotionY", "D");
- Label l16 = new Label();
- mv.visitLabel(l16);
- mv.visitLineNumber(1052, l16);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "cargoItems", "[L"+aItemStack+";");
- Label l17 = new Label();
- mv.visitJumpInsn(IFNONNULL, l17);
- Label l18 = new Label();
- mv.visitLabel(l18);
- mv.visitLineNumber(1054, l18);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "getSizeInventory", "()I", false);
- mv.visitTypeInsn(ANEWARRAY, aItemStack);
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "cargoItems", "[L"+aItemStack+";");
- mv.visitLabel(l17);
- mv.visitLineNumber(1057, l17);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readBoolean", "()Z", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "setWaitForPlayer", "(Z)V", false);
- Label l19 = new Label();
- mv.visitLabel(l19);
- mv.visitLineNumber(1059, l19);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKESTATIC, "cpw/mods/fml/common/network/ByteBufUtils", "readUTF8String", "(Lio/netty/buffer/ByteBuf;)Ljava/lang/String;", false);
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "statusMessage", "Ljava/lang/String;");
- Label l20 = new Label();
- mv.visitLabel(l20);
- mv.visitLineNumber(1060, l20);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "statusMessage", "Ljava/lang/String;");
- mv.visitLdcInsn("");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l21 = new Label();
- mv.visitJumpInsn(IFEQ, l21);
- mv.visitInsn(ACONST_NULL);
- Label l22 = new Label();
- mv.visitJumpInsn(GOTO, l22);
- mv.visitLabel(l21);
- mv.visitFrame(F_SAME1, 0, null, 1, new Object[] {"micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket"});
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "statusMessage", "Ljava/lang/String;");
- mv.visitLabel(l22);
- mv.visitFrame(F_FULL, 4, new Object[] {"micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "io/netty/buffer/ByteBuf", "net/minecraftforge/fluids/FluidStack", INTEGER}, 2, new Object[] {"micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "java/lang/String"});
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "statusMessage", "Ljava/lang/String;");
- Label l23 = new Label();
- mv.visitLabel(l23);
- mv.visitLineNumber(1061, l23);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readInt", "()I", false);
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "statusMessageCooldown", "I");
- Label l24 = new Label();
- mv.visitLabel(l24);
- mv.visitLineNumber(1062, l24);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readInt", "()I", false);
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "lastStatusMessageCooldown", "I");
- Label l25 = new Label();
- mv.visitLabel(l25);
- mv.visitLineNumber(1063, l25);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readBoolean", "()Z", false);
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "statusValid", "Z");
- Label l26 = new Label();
- mv.visitLabel(l26);
- mv.visitLineNumber(1066, l26);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "worldObj", "L"+aWorld+";");
- mv.visitFieldInsn(GETFIELD, aWorld, "isRemote", "Z");
- Label l27 = new Label();
- mv.visitJumpInsn(IFEQ, l27);
- Label l28 = new Label();
- mv.visitLabel(l28);
- mv.visitLineNumber(1068, l28);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readInt", "()I", false);
- mv.visitVarInsn(ISTORE, 4);
- Label l29 = new Label();
- mv.visitLabel(l29);
- mv.visitLineNumber(1069, l29);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "riddenByEntity", "L"+aEntity+";");
- Label l30 = new Label();
- mv.visitJumpInsn(IFNONNULL, l30);
- Label l31 = new Label();
- mv.visitLabel(l31);
- mv.visitLineNumber(1071, l31);
- mv.visitVarInsn(ILOAD, 4);
- mv.visitInsn(ICONST_M1);
- mv.visitJumpInsn(IF_ICMPLE, l27);
- Label l32 = new Label();
- mv.visitLabel(l32);
- mv.visitLineNumber(1073, l32);
- mv.visitMethodInsn(INVOKESTATIC, "cpw/mods/fml/client/FMLClientHandler", "instance", "()Lcpw/mods/fml/client/FMLClientHandler;", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "cpw/mods/fml/client/FMLClientHandler", "getWorldClient", "()L"+aWorldClient+";", false);
- mv.visitVarInsn(ILOAD, 4);
- mv.visitMethodInsn(INVOKEVIRTUAL, ""+aWorldClient+"", "getEntityByID", "(I)L"+aEntity+";", false);
- mv.visitVarInsn(ASTORE, 5);
- Label l33 = new Label();
- mv.visitLabel(l33);
- mv.visitLineNumber(1074, l33);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitJumpInsn(IFNULL, l27);
- Label l34 = new Label();
- mv.visitLabel(l34);
- mv.visitLineNumber(1076, l34);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitFieldInsn(GETFIELD, ""+aEntity+"", "dimension", "I");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "dimension", "I");
- Label l35 = new Label();
- mv.visitJumpInsn(IF_ICMPEQ, l35);
- Label l36 = new Label();
- mv.visitLabel(l36);
- mv.visitLineNumber(1078, l36);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitTypeInsn(INSTANCEOF, ""+aEntityPlayer+"");
- mv.visitJumpInsn(IFEQ, l27);
- Label l37 = new Label();
- mv.visitLabel(l37);
- mv.visitLineNumber(1080, l37);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "dimension", "I");
- mv.visitVarInsn(ALOAD, 5);
- mv.visitFieldInsn(GETFIELD, ""+aEntity+"", "worldObj", "L"+aWorld+";");
- mv.visitFieldInsn(GETFIELD, aWorld, "difficultySetting", "L"+aDifficultyEnum+";");
- mv.visitMethodInsn(INVOKEVIRTUAL, ""+aDifficultyEnum+"", "getDifficultyId", "()I", false);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitFieldInsn(GETFIELD, ""+aEntity+"", "worldObj", "L"+aWorld+";");
- mv.visitMethodInsn(INVOKEVIRTUAL, aWorld, "getWorldInfo", "()L"+aWorldInfo+";", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, ""+aWorldInfo+"", "getTerrainType", "()L"+aWorldType+";", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, aWorldType, "getWorldTypeName", "()Ljava/lang/String;", false);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitTypeInsn(CHECKCAST, ""+aEntityPlayerMP+"");
- mv.visitFieldInsn(GETFIELD, ""+aEntityPlayerMP+"", "theItemInWorldManager", "L"+aItemInWorldManager+";");
- mv.visitMethodInsn(INVOKEVIRTUAL, ""+aItemInWorldManager+"", "getGameType", "()L"+aGameType+";", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, ""+aGameType+"", "getID", "()I", false);
- mv.visitMethodInsn(INVOKESTATIC, "micdoodle8/mods/galacticraft/core/util/WorldUtil", "forceRespawnClient", "(IILjava/lang/String;I)L"+aEntityPlayer+";", false);
- mv.visitVarInsn(ASTORE, 5);
- Label l38 = new Label();
- mv.visitLabel(l38);
- mv.visitLineNumber(1081, l38);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKEVIRTUAL, ""+aEntity+"", "mountEntity", "(L"+aEntity+";)V", false);
- Label l39 = new Label();
- mv.visitLabel(l39);
- mv.visitLineNumber(1083, l39);
- mv.visitJumpInsn(GOTO, l27);
- mv.visitLabel(l35);
- mv.visitLineNumber(1085, l35);
- mv.visitFrame(F_APPEND,2, new Object[] {INTEGER, ""+aEntity+""}, 0, null);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKEVIRTUAL, ""+aEntity+"", "mountEntity", "(L"+aEntity+";)V", false);
- Label l40 = new Label();
- mv.visitLabel(l40);
- mv.visitLineNumber(1088, l40);
- mv.visitJumpInsn(GOTO, l27);
- mv.visitLabel(l30);
- mv.visitLineNumber(1089, l30);
- mv.visitFrame(F_CHOP,1, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "riddenByEntity", "L"+aEntity+";");
- mv.visitMethodInsn(INVOKEVIRTUAL, ""+aEntity+"", "getEntityId", "()I", false);
- mv.visitVarInsn(ILOAD, 4);
- mv.visitJumpInsn(IF_ICMPEQ, l27);
- Label l41 = new Label();
- mv.visitLabel(l41);
- mv.visitLineNumber(1091, l41);
- mv.visitVarInsn(ILOAD, 4);
- mv.visitInsn(ICONST_M1);
- Label l42 = new Label();
- mv.visitJumpInsn(IF_ICMPNE, l42);
- Label l43 = new Label();
- mv.visitLabel(l43);
- mv.visitLineNumber(1093, l43);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "riddenByEntity", "L"+aEntity+";");
- mv.visitInsn(ACONST_NULL);
- mv.visitMethodInsn(INVOKEVIRTUAL, ""+aEntity+"", "mountEntity", "(L"+aEntity+";)V", false);
- Label l44 = new Label();
- mv.visitLabel(l44);
- mv.visitLineNumber(1094, l44);
- mv.visitJumpInsn(GOTO, l27);
- mv.visitLabel(l42);
- mv.visitLineNumber(1097, l42);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitMethodInsn(INVOKESTATIC, "cpw/mods/fml/client/FMLClientHandler", "instance", "()Lcpw/mods/fml/client/FMLClientHandler;", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "cpw/mods/fml/client/FMLClientHandler", "getWorldClient", "()L"+aWorldClient+";", false);
- mv.visitVarInsn(ILOAD, 4);
- mv.visitMethodInsn(INVOKEVIRTUAL, ""+aWorldClient+"", "getEntityByID", "(I)L"+aEntity+";", false);
- mv.visitVarInsn(ASTORE, 5);
- Label l45 = new Label();
- mv.visitLabel(l45);
- mv.visitLineNumber(1098, l45);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitJumpInsn(IFNULL, l27);
- Label l46 = new Label();
- mv.visitLabel(l46);
- mv.visitLineNumber(1100, l46);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitFieldInsn(GETFIELD, ""+aEntity+"", "dimension", "I");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "dimension", "I");
- Label l47 = new Label();
- mv.visitJumpInsn(IF_ICMPEQ, l47);
- Label l48 = new Label();
- mv.visitLabel(l48);
- mv.visitLineNumber(1102, l48);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitTypeInsn(INSTANCEOF, ""+aEntityPlayer+"");
- mv.visitJumpInsn(IFEQ, l27);
- Label l49 = new Label();
- mv.visitLabel(l49);
- mv.visitLineNumber(1104, l49);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "dimension", "I");
- mv.visitVarInsn(ALOAD, 5);
- mv.visitFieldInsn(GETFIELD, ""+aEntity+"", "worldObj", "L"+aWorld+";");
- mv.visitFieldInsn(GETFIELD, aWorld, "difficultySetting", "L"+aDifficultyEnum+";");
- mv.visitMethodInsn(INVOKEVIRTUAL, ""+aDifficultyEnum+"", "getDifficultyId", "()I", false);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitFieldInsn(GETFIELD, ""+aEntity+"", "worldObj", "L"+aWorld+";");
- mv.visitMethodInsn(INVOKEVIRTUAL, aWorld, "getWorldInfo", "()L"+aWorldInfo+";", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, ""+aWorldInfo+"", "getTerrainType", "()L"+aWorldType+";", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, aWorldType, "getWorldTypeName", "()Ljava/lang/String;", false);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitTypeInsn(CHECKCAST, ""+aEntityPlayerMP+"");
- mv.visitFieldInsn(GETFIELD, ""+aEntityPlayerMP+"", "theItemInWorldManager", "L"+aItemInWorldManager+";");
- mv.visitMethodInsn(INVOKEVIRTUAL, ""+aItemInWorldManager+"", "getGameType", "()L"+aGameType+";", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, ""+aGameType+"", "getID", "()I", false);
- mv.visitMethodInsn(INVOKESTATIC, "micdoodle8/mods/galacticraft/core/util/WorldUtil", "forceRespawnClient", "(IILjava/lang/String;I)L"+aEntityPlayer+";", false);
- mv.visitVarInsn(ASTORE, 5);
- Label l50 = new Label();
- mv.visitLabel(l50);
- mv.visitLineNumber(1105, l50);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKEVIRTUAL, ""+aEntity+"", "mountEntity", "(L"+aEntity+";)V", false);
- Label l51 = new Label();
- mv.visitLabel(l51);
- mv.visitLineNumber(1107, l51);
- mv.visitJumpInsn(GOTO, l27);
- mv.visitLabel(l47);
- mv.visitLineNumber(1109, l47);
- mv.visitFrame(F_APPEND,1, new Object[] {""+aEntity+""}, 0, null);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKEVIRTUAL, ""+aEntity+"", "mountEntity", "(L"+aEntity+";)V", false);
- mv.visitLabel(l27);
- mv.visitLineNumber(1114, l27);
- mv.visitFrame(F_CHOP,2, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKESTATIC, "cpw/mods/fml/common/network/ByteBufUtils", "readUTF8String", "(Lio/netty/buffer/ByteBuf;)Ljava/lang/String;", false);
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "statusColour", "Ljava/lang/String;");
- Label l52 = new Label();
- mv.visitLabel(l52);
- mv.visitLineNumber(1115, l52);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "statusColour", "Ljava/lang/String;");
- mv.visitLdcInsn("");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l53 = new Label();
- mv.visitJumpInsn(IFEQ, l53);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitInsn(ACONST_NULL);
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", "statusColour", "Ljava/lang/String;");
- mv.visitLabel(l53);
- mv.visitLineNumber(1116, l53);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitInsn(RETURN);
- Label l54 = new Label();
- mv.visitLabel(l54);
- mv.visitLocalVariable("this", "Lmicdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket;", null, l0, l54, 0);
- mv.visitLocalVariable("buffer", "Lio/netty/buffer/ByteBuf;", null, l0, l54, 1);
- mv.visitLocalVariable("g", "Lnet/minecraftforge/fluids/FluidStack;", null, l2, l54, 2);
- mv.visitLocalVariable("aBufferData", "I", null, l3, l54, 3);
- mv.visitLocalVariable("s", "Lnet/minecraftforge/fluids/FluidStack;", null, l6, l4, 4);
- mv.visitLocalVariable("shouldBeMountedId", "I", null, l29, l27, 4);
- mv.visitLocalVariable("e", "L"+aEntity+";", null, l33, l40, 5);
- mv.visitLocalVariable("e", "L"+aEntity+";", null, l45, l27, 5);
- mv.visitMaxs(6, 6);
- mv.visitEnd();
-
- }
- }
-
- public static final class localClassVisitor extends ClassVisitor {
-
- public localClassVisitor(ClassVisitor cv) {
- super(ASM5, cv);
- FMLRelaunchLog.log("[GT++ ASM] Galacticraft EntityAutoRocket Patch", Level.INFO, "Inspecting Class "+className);
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- if (name.equals("decodePacketdata")) {
- FMLRelaunchLog.log("[GT++ ASM] Galacticraft EntityAutoRocket Patch", Level.INFO, "Removing method "+name);
- return null;
- }
- MethodVisitor methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- return methodVisitor;
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FluidUtil.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FluidUtil.java
deleted file mode 100644
index 13681e7e3a..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FluidUtil.java
+++ /dev/null
@@ -1,242 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import java.io.IOException;
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.Label;
-import org.objectweb.asm.MethodVisitor;
-
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-
-
-public class ClassTransformer_GC_FluidUtil {
-
- //The qualified name of the class we plan to transform.
- private static final String className = "micdoodle8.mods.galacticraft.core.util.FluidUtil";
- //"micdoodle8/mods/galacticraft/core/util/FluidUtil
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- public ClassTransformer_GC_FluidUtil(byte[] basicClass, boolean obfuscated) {
-
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new localClassVisitor(aTempWriter), 0);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- }
- else {
- isValid = false;
- }
- reader = aTempReader;
- writer = aTempWriter;
-
- if (reader != null && writer != null) {
- injectMethod("testFuel");
- injectMethod("fillWithGCFuel");
- }
-
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public void injectMethod(String aMethodName) {
- MethodVisitor mv;
- if (aMethodName.equals("testFuel")) {
- FMLRelaunchLog.log("[GT++ ASM] Galacticraft FluidUtils Patch", Level.INFO, "Injecting "+aMethodName+" into "+className+".");
- mv = getWriter().visitMethod(ACC_PUBLIC + ACC_STATIC, "testFuel", "(Ljava/lang/String;)Z", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(37, l0);
- mv.visitFieldInsn(GETSTATIC, "gtPlusPlus/core/item/chemistry/RocketFuels", "mValidRocketFuelNames", "Ljava/util/HashSet;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/HashSet", "iterator", "()Ljava/util/Iterator;", false);
- mv.visitVarInsn(ASTORE, 2);
- Label l1 = new Label();
- mv.visitJumpInsn(GOTO, l1);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitFrame(F_FULL, 3, new Object[] {"java/lang/String", 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, "java/lang/String");
- mv.visitVarInsn(ASTORE, 1);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(38, l3);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- mv.visitJumpInsn(IFEQ, l1);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(39, l4);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l1);
- mv.visitLineNumber(37, l1);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z", true);
- mv.visitJumpInsn(IFNE, l2);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(42, l5);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(IRETURN);
- Label l6 = new Label();
- mv.visitLabel(l6);
- mv.visitLocalVariable("name", "Ljava/lang/String;", null, l0, l6, 0);
- mv.visitLocalVariable("aFuelname", "Ljava/lang/String;", null, l3, l1, 1);
- mv.visitMaxs(2, 3);
- mv.visitEnd();
- }
- else if (aMethodName.equals("fillWithGCFuel")) {
- mv = getWriter().visitMethod(ACC_PUBLIC + ACC_STATIC, "fillWithGCFuel", "(Lnet/minecraftforge/fluids/FluidTank;Lnet/minecraftforge/fluids/FluidStack;Z)I", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(46, l0);
- mv.visitVarInsn(ALOAD, 1);
- Label l1 = new Label();
- mv.visitJumpInsn(IFNULL, l1);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKESTATIC, "net/minecraftforge/fluids/FluidRegistry", "getFluidName", "(Lnet/minecraftforge/fluids/FluidStack;)Ljava/lang/String;", false);
- mv.visitMethodInsn(INVOKESTATIC, "micdoodle8/mods/galacticraft/core/util/FluidUtil", "testFuel", "(Ljava/lang/String;)Z", false);
- mv.visitJumpInsn(IFEQ, l1);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(47, l2);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidTank", "getFluid", "()Lnet/minecraftforge/fluids/FluidStack;", false);
- mv.visitVarInsn(ASTORE, 3);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(48, l3);
- mv.visitVarInsn(ALOAD, 3);
- Label l4 = new Label();
- mv.visitJumpInsn(IFNONNULL, l4);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(49, l5);
- mv.visitFieldInsn(GETSTATIC, "gtPlusPlus/core/item/chemistry/RocketFuels", "mValidRocketFuels", "Ljava/util/HashMap;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/HashMap", "values", "()Ljava/util/Collection;", false);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Collection", "iterator", "()Ljava/util/Iterator;", true);
- mv.visitVarInsn(ASTORE, 5);
- Label l6 = new Label();
- mv.visitJumpInsn(GOTO, l6);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitFrame(F_FULL, 6, new Object[] {"net/minecraftforge/fluids/FluidTank", "net/minecraftforge/fluids/FluidStack", INTEGER, "net/minecraftforge/fluids/FluidStack", TOP, "java/util/Iterator"}, 0, new Object[] {});
- mv.visitVarInsn(ALOAD, 5);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;", true);
- mv.visitTypeInsn(CHECKCAST, "net/minecraftforge/fluids/Fluid");
- mv.visitVarInsn(ASTORE, 4);
- Label l8 = new Label();
- mv.visitLabel(l8);
- mv.visitLineNumber(50, l8);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidStack", "getFluid", "()Lnet/minecraftforge/fluids/Fluid;", false);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitJumpInsn(IF_ACMPNE, l6);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(51, l9);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitTypeInsn(NEW, "net/minecraftforge/fluids/FluidStack");
- mv.visitInsn(DUP);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitMethodInsn(INVOKESPECIAL, "net/minecraftforge/fluids/FluidStack", "<init>", "(Lnet/minecraftforge/fluids/Fluid;I)V", false);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidTank", "fill", "(Lnet/minecraftforge/fluids/FluidStack;Z)I", false);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l6);
- mv.visitLineNumber(49, l6);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z", true);
- mv.visitJumpInsn(IFNE, l7);
- mv.visitLabel(l4);
- mv.visitLineNumber(55, l4);
- mv.visitFrame(F_FULL, 4, new Object[] {"net/minecraftforge/fluids/FluidTank", "net/minecraftforge/fluids/FluidStack", INTEGER, "net/minecraftforge/fluids/FluidStack"}, 0, new Object[] {});
- mv.visitVarInsn(ALOAD, 3);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidTank", "getCapacity", "()I", false);
- mv.visitJumpInsn(IF_ICMPGE, l1);
- Label l10 = new Label();
- mv.visitLabel(l10);
- mv.visitLineNumber(56, l10);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitTypeInsn(NEW, "net/minecraftforge/fluids/FluidStack");
- mv.visitInsn(DUP);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitMethodInsn(INVOKESPECIAL, "net/minecraftforge/fluids/FluidStack", "<init>", "(Lnet/minecraftforge/fluids/FluidStack;I)V", false);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidTank", "fill", "(Lnet/minecraftforge/fluids/FluidStack;Z)I", false);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l1);
- mv.visitLineNumber(59, l1);
- mv.visitFrame(F_CHOP,1, null, 0, null);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(IRETURN);
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLocalVariable("tank", "Lnet/minecraftforge/fluids/FluidTank;", null, l0, l11, 0);
- mv.visitLocalVariable("liquid", "Lnet/minecraftforge/fluids/FluidStack;", null, l0, l11, 1);
- mv.visitLocalVariable("doFill", "Z", null, l0, l11, 2);
- mv.visitLocalVariable("liquidInTank", "Lnet/minecraftforge/fluids/FluidStack;", null, l3, l1, 3);
- mv.visitLocalVariable("aFuelType", "Lnet/minecraftforge/fluids/Fluid;", null, l8, l6, 4);
- mv.visitMaxs(5, 6);
- mv.visitEnd();
- }
- FMLRelaunchLog.log("[GT++ ASM] Galacticraft FluidUtils Patch", Level.INFO, "Method injection complete.");
-
- }
-
- public static final class localClassVisitor extends ClassVisitor {
-
- public localClassVisitor(ClassVisitor cv) {
- super(ASM5, cv);
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- if (name.equals("testFuel")) {
- FMLRelaunchLog.log("[GT++ ASM] Galacticraft FluidUtils Patch", Level.INFO, "Removing method "+name);
- return null;
- }
- if (name.equals("fillWithGCFuel")) {
- FMLRelaunchLog.log("[GT++ ASM] Galacticraft FluidUtils Patch", Level.INFO, "Removing method "+name);
- return null;
- }
- MethodVisitor methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- return methodVisitor;
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FuelLoader.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FuelLoader.java
deleted file mode 100644
index 5ef5b75505..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FuelLoader.java
+++ /dev/null
@@ -1,622 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import java.io.IOException;
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.Label;
-import org.objectweb.asm.MethodVisitor;
-
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gtPlusPlus.preloader.DevHelper;
-
-
-public class ClassTransformer_GC_FuelLoader {
-
- //The qualified name of the class we plan to transform.
- private static final String className = "micdoodle8.mods.galacticraft.core.tile.TileEntityFuelLoader";
- //micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
- private final boolean isObfuscated;
-
- public ClassTransformer_GC_FuelLoader(byte[] basicClass, boolean obfuscated) {
-
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- isObfuscated = obfuscated;
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new localClassVisitor(aTempWriter), 0);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- }
- else {
- isValid = false;
- }
- reader = aTempReader;
- writer = aTempWriter;
-
- if (reader != null && writer != null) {
- injectMethod();
- }
- else {
- FMLRelaunchLog.log("[GT++ ASM] Galacticraft Fuel_Loader Patch", Level.INFO, "Failed to Inject new code.");
- }
-
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public void injectMethod() {
- String aWorld = isObfuscated ? DevHelper.getObfuscated("net/minecraft/world/World") : "net/minecraft/world/World";
- String aItemStack = isObfuscated ? DevHelper.getObfuscated("net/minecraft/item/ItemStack") : "net/minecraft/item/ItemStack";
- String aTileEntity = isObfuscated ? DevHelper.getObfuscated("net/minecraft/tileentity/TileEntity") : "net/minecraft/tileentity/TileEntity";
-
- if (isValidTransformer()) {
- FMLRelaunchLog.log("[GT++ ASM] Galacticraft Fuel_Loader Patch", Level.INFO, "Injecting updateEntity into "+className+".");
- MethodVisitor mv = getWriter().visitMethod(ACC_PUBLIC, "updateEntity", "()V", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(60, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESPECIAL, "micdoodle8/mods/galacticraft/core/energy/tile/TileBaseElectricBlockWithInventory", "updateEntity", "()V", false);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(61, l1);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "worldObj", "L"+aWorld+";");
- mv.visitFieldInsn(GETFIELD, ""+aWorld+"", "isRemote", "Z");
- Label l2 = new Label();
- mv.visitJumpInsn(IFNE, l2);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(62, l3);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitInsn(ICONST_0);
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "loadedFuelLastTick", "Z");
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(63, l4);
- mv.visitInsn(ACONST_NULL);
- mv.visitVarInsn(ASTORE, 1);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(66, l5);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "containingItems", "[L"+aItemStack+";");
- mv.visitInsn(ICONST_1);
- mv.visitInsn(AALOAD);
- Label l6 = new Label();
- mv.visitJumpInsn(IFNULL, l6);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(67, l7);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "containingItems", "[L"+aItemStack+";");
- mv.visitInsn(ICONST_1);
- mv.visitInsn(AALOAD);
- mv.visitMethodInsn(INVOKESTATIC, "net/minecraftforge/fluids/FluidContainerRegistry", "getFluidForFilledItem", "(L"+aItemStack+";)Lnet/minecraftforge/fluids/FluidStack;", false);
- mv.visitVarInsn(ASTORE, 1);
- Label l8 = new Label();
- mv.visitLabel(l8);
- mv.visitLineNumber(68, l8);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitJumpInsn(IFNULL, l6);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(69, l9);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKESTATIC, "net/minecraftforge/fluids/FluidRegistry", "getFluidName", "(Lnet/minecraftforge/fluids/FluidStack;)Ljava/lang/String;", false);
- mv.visitMethodInsn(INVOKESTATIC, "micdoodle8/mods/galacticraft/core/util/FluidUtil", "testFuel", "(Ljava/lang/String;)Z", false);
- mv.visitVarInsn(ISTORE, 4);
- Label l10 = new Label();
- mv.visitLabel(l10);
- mv.visitLineNumber(70, l10);
- mv.visitVarInsn(ILOAD, 4);
- mv.visitJumpInsn(IFEQ, l6);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "fuelTank", "Lnet/minecraftforge/fluids/FluidTank;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidTank", "getFluid", "()Lnet/minecraftforge/fluids/FluidStack;", false);
- Label l11 = new Label();
- mv.visitJumpInsn(IFNULL, l11);
- Label l12 = new Label();
- mv.visitLabel(l12);
- mv.visitLineNumber(71, l12);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "fuelTank", "Lnet/minecraftforge/fluids/FluidTank;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidTank", "getFluid", "()Lnet/minecraftforge/fluids/FluidStack;", false);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitVarInsn(ALOAD, 1);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitInsn(IADD);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "fuelTank", "Lnet/minecraftforge/fluids/FluidTank;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidTank", "getCapacity", "()I", false);
- mv.visitJumpInsn(IF_ICMPGT, l6);
- mv.visitLabel(l11);
- mv.visitLineNumber(73, l11);
- mv.visitFrame(F_FULL, 5, new Object[] {"micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "net/minecraftforge/fluids/FluidStack", TOP, TOP, INTEGER}, 0, new Object[] {});
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "fuelTank", "Lnet/minecraftforge/fluids/FluidTank;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidTank", "getFluid", "()Lnet/minecraftforge/fluids/FluidStack;", false);
- mv.visitVarInsn(ASTORE, 5);
- Label l13 = new Label();
- mv.visitLabel(l13);
- mv.visitLineNumber(74, l13);
- mv.visitInsn(ICONST_0);
- mv.visitVarInsn(ISTORE, 6);
- Label l14 = new Label();
- mv.visitLabel(l14);
- mv.visitLineNumber(75, l14);
- mv.visitVarInsn(ALOAD, 5);
- Label l15 = new Label();
- mv.visitJumpInsn(IFNONNULL, l15);
- Label l16 = new Label();
- mv.visitLabel(l16);
- mv.visitLineNumber(76, l16);
- mv.visitFieldInsn(GETSTATIC, "gtPlusPlus/core/item/chemistry/RocketFuels", "mValidRocketFuels", "Ljava/util/HashMap;");
- Label l17 = new Label();
- mv.visitLabel(l17);
- mv.visitLineNumber(77, l17);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/HashMap", "values", "()Ljava/util/Collection;", false);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Collection", "iterator", "()Ljava/util/Iterator;", true);
- mv.visitVarInsn(ASTORE, 8);
- Label l18 = new Label();
- mv.visitJumpInsn(GOTO, l18);
- Label l19 = new Label();
- mv.visitLabel(l19);
- mv.visitFrame(F_FULL, 9, new Object[] {"micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "net/minecraftforge/fluids/FluidStack", TOP, TOP, INTEGER, "net/minecraftforge/fluids/FluidStack", INTEGER, TOP, "java/util/Iterator"}, 0, new Object[] {});
- mv.visitVarInsn(ALOAD, 8);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;", true);
- mv.visitTypeInsn(CHECKCAST, "net/minecraftforge/fluids/Fluid");
- mv.visitVarInsn(ASTORE, 7);
- Label l20 = new Label();
- mv.visitLabel(l20);
- mv.visitLineNumber(78, l20);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidStack", "getFluid", "()Lnet/minecraftforge/fluids/Fluid;", false);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitJumpInsn(IF_ACMPNE, l18);
- Label l21 = new Label();
- mv.visitLabel(l21);
- mv.visitLineNumber(79, l21);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "fuelTank", "Lnet/minecraftforge/fluids/FluidTank;");
- mv.visitTypeInsn(NEW, "net/minecraftforge/fluids/FluidStack");
- mv.visitInsn(DUP);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitMethodInsn(INVOKESPECIAL, "net/minecraftforge/fluids/FluidStack", "<init>", "(Lnet/minecraftforge/fluids/Fluid;I)V", false);
- mv.visitInsn(ICONST_1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidTank", "fill", "(Lnet/minecraftforge/fluids/FluidStack;Z)I", false);
- Label l22 = new Label();
- mv.visitJumpInsn(IFLE, l22);
- mv.visitInsn(ICONST_1);
- Label l23 = new Label();
- mv.visitJumpInsn(GOTO, l23);
- mv.visitLabel(l22);
- mv.visitFrame(F_FULL, 9, new Object[] {"micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "net/minecraftforge/fluids/FluidStack", TOP, TOP, INTEGER, "net/minecraftforge/fluids/FluidStack", INTEGER, "net/minecraftforge/fluids/Fluid", "java/util/Iterator"}, 0, new Object[] {});
- mv.visitInsn(ICONST_0);
- mv.visitLabel(l23);
- mv.visitFrame(F_SAME1, 0, null, 1, new Object[] {INTEGER});
- mv.visitVarInsn(ISTORE, 6);
- mv.visitLabel(l18);
- mv.visitLineNumber(76, l18);
- mv.visitFrame(F_FULL, 9, new Object[] {"micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "net/minecraftforge/fluids/FluidStack", TOP, TOP, INTEGER, "net/minecraftforge/fluids/FluidStack", INTEGER, TOP, "java/util/Iterator"}, 0, new Object[] {});
- mv.visitVarInsn(ALOAD, 8);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z", true);
- mv.visitJumpInsn(IFNE, l19);
- Label l24 = new Label();
- mv.visitLabel(l24);
- mv.visitLineNumber(82, l24);
- Label l25 = new Label();
- mv.visitJumpInsn(GOTO, l25);
- mv.visitLabel(l15);
- mv.visitLineNumber(84, l15);
- mv.visitFrame(F_FULL, 7, new Object[] {"micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "net/minecraftforge/fluids/FluidStack", TOP, TOP, INTEGER, "net/minecraftforge/fluids/FluidStack", INTEGER}, 0, new Object[] {});
- mv.visitVarInsn(ALOAD, 5);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "fuelTank", "Lnet/minecraftforge/fluids/FluidTank;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidTank", "getCapacity", "()I", false);
- mv.visitJumpInsn(IF_ICMPGE, l25);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidStack", "isFluidEqual", "(Lnet/minecraftforge/fluids/FluidStack;)Z", false);
- mv.visitJumpInsn(IFEQ, l25);
- Label l26 = new Label();
- mv.visitLabel(l26);
- mv.visitLineNumber(85, l26);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "fuelTank", "Lnet/minecraftforge/fluids/FluidTank;");
- mv.visitTypeInsn(NEW, "net/minecraftforge/fluids/FluidStack");
- mv.visitInsn(DUP);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitMethodInsn(INVOKESPECIAL, "net/minecraftforge/fluids/FluidStack", "<init>", "(Lnet/minecraftforge/fluids/FluidStack;I)V", false);
- mv.visitInsn(ICONST_1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidTank", "fill", "(Lnet/minecraftforge/fluids/FluidStack;Z)I", false);
- Label l27 = new Label();
- mv.visitJumpInsn(IFLE, l27);
- mv.visitInsn(ICONST_1);
- Label l28 = new Label();
- mv.visitJumpInsn(GOTO, l28);
- mv.visitLabel(l27);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitInsn(ICONST_0);
- mv.visitLabel(l28);
- mv.visitFrame(F_SAME1, 0, null, 1, new Object[] {INTEGER});
- mv.visitVarInsn(ISTORE, 6);
- mv.visitLabel(l25);
- mv.visitLineNumber(88, l25);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ILOAD, 6);
- mv.visitJumpInsn(IFEQ, l6);
- Label l29 = new Label();
- mv.visitLabel(l29);
- mv.visitLineNumber(89, l29);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "containingItems", "[L"+aItemStack+";");
- mv.visitInsn(ICONST_1);
- mv.visitInsn(AALOAD);
- mv.visitInsn(DUP);
- mv.visitFieldInsn(GETFIELD, ""+aItemStack+"", "stackSize", "I");
- mv.visitInsn(ICONST_1);
- mv.visitInsn(ISUB);
- mv.visitFieldInsn(PUTFIELD, ""+aItemStack+"", "stackSize", "I");
- Label l30 = new Label();
- mv.visitLabel(l30);
- mv.visitLineNumber(90, l30);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "containingItems", "[L"+aItemStack+";");
- mv.visitInsn(ICONST_1);
- mv.visitInsn(AALOAD);
- mv.visitFieldInsn(GETFIELD, ""+aItemStack+"", "stackSize", "I");
- mv.visitJumpInsn(IFNE, l6);
- Label l31 = new Label();
- mv.visitLabel(l31);
- mv.visitLineNumber(91, l31);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "containingItems", "[L"+aItemStack+";");
- mv.visitInsn(ICONST_1);
- mv.visitInsn(ACONST_NULL);
- mv.visitInsn(AASTORE);
- mv.visitLabel(l6);
- mv.visitLineNumber(97, l6);
- mv.visitFrame(F_FULL, 2, new Object[] {"micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "net/minecraftforge/fluids/FluidStack"}, 0, new Object[] {});
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "ticks", "I");
- mv.visitIntInsn(BIPUSH, 100);
- mv.visitInsn(IREM);
- Label l32 = new Label();
- mv.visitJumpInsn(IFNE, l32);
- Label l33 = new Label();
- mv.visitLabel(l33);
- mv.visitLineNumber(98, l33);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitInsn(ACONST_NULL);
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "attachedFuelable", "Lmicdoodle8/mods/galacticraft/api/entity/IFuelable;");
- Label l34 = new Label();
- mv.visitLabel(l34);
- mv.visitLineNumber(99, l34);
- mv.visitFieldInsn(GETSTATIC, "net/minecraftforge/common/util/ForgeDirection", "VALID_DIRECTIONS", "[Lnet/minecraftforge/common/util/ForgeDirection;");
- mv.visitVarInsn(ASTORE, 4);
- Label l35 = new Label();
- mv.visitLabel(l35);
- mv.visitLineNumber(100, l35);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitInsn(ARRAYLENGTH);
- mv.visitVarInsn(ISTORE, 3);
- Label l36 = new Label();
- mv.visitLabel(l36);
- mv.visitLineNumber(102, l36);
- mv.visitInsn(ICONST_0);
- mv.visitVarInsn(ISTORE, 2);
- Label l37 = new Label();
- mv.visitLabel(l37);
- Label l38 = new Label();
- mv.visitJumpInsn(GOTO, l38);
- Label l39 = new Label();
- mv.visitLabel(l39);
- mv.visitLineNumber(103, l39);
- mv.visitFrame(F_APPEND,3, new Object[] {INTEGER, INTEGER, "[Lnet/minecraftforge/common/util/ForgeDirection;"}, 0, null);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitInsn(AALOAD);
- mv.visitVarInsn(ASTORE, 5);
- Label l40 = new Label();
- mv.visitLabel(l40);
- mv.visitLineNumber(104, l40);
- mv.visitTypeInsn(NEW, "micdoodle8/mods/galacticraft/api/vector/BlockVec3");
- mv.visitInsn(DUP);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESPECIAL, "micdoodle8/mods/galacticraft/api/vector/BlockVec3", "<init>", "(L"+aTileEntity+";)V", false);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "worldObj", "L"+aWorld+";");
- mv.visitVarInsn(ALOAD, 5);
- mv.visitMethodInsn(INVOKEVIRTUAL, "micdoodle8/mods/galacticraft/api/vector/BlockVec3", "getTileEntityOnSide", "(L"+aWorld+";Lnet/minecraftforge/common/util/ForgeDirection;)L"+aTileEntity+";", false);
- mv.visitVarInsn(ASTORE, 6);
- Label l41 = new Label();
- mv.visitLabel(l41);
- mv.visitLineNumber(105, l41);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitTypeInsn(INSTANCEOF, "micdoodle8/mods/galacticraft/core/tile/TileEntityMulti");
- Label l42 = new Label();
- mv.visitJumpInsn(IFEQ, l42);
- Label l43 = new Label();
- mv.visitLabel(l43);
- mv.visitLineNumber(106, l43);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitTypeInsn(CHECKCAST, "micdoodle8/mods/galacticraft/core/tile/TileEntityMulti");
- mv.visitMethodInsn(INVOKEVIRTUAL, "micdoodle8/mods/galacticraft/core/tile/TileEntityMulti", "getMainBlockTile", "()L"+aTileEntity+";", false);
- mv.visitVarInsn(ASTORE, 7);
- Label l44 = new Label();
- mv.visitLabel(l44);
- mv.visitLineNumber(107, l44);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitTypeInsn(INSTANCEOF, "micdoodle8/mods/galacticraft/api/entity/IFuelable");
- Label l45 = new Label();
- mv.visitJumpInsn(IFEQ, l45);
- Label l46 = new Label();
- mv.visitLabel(l46);
- mv.visitLineNumber(108, l46);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitTypeInsn(CHECKCAST, "micdoodle8/mods/galacticraft/api/entity/IFuelable");
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "attachedFuelable", "Lmicdoodle8/mods/galacticraft/api/entity/IFuelable;");
- Label l47 = new Label();
- mv.visitLabel(l47);
- mv.visitLineNumber(109, l47);
- mv.visitJumpInsn(GOTO, l32);
- mv.visitLabel(l42);
- mv.visitLineNumber(111, l42);
- mv.visitFrame(F_APPEND,2, new Object[] {"net/minecraftforge/common/util/ForgeDirection", ""+aTileEntity+""}, 0, null);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitTypeInsn(INSTANCEOF, "micdoodle8/mods/galacticraft/api/entity/IFuelable");
- mv.visitJumpInsn(IFEQ, l45);
- Label l48 = new Label();
- mv.visitLabel(l48);
- mv.visitLineNumber(112, l48);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitTypeInsn(CHECKCAST, "micdoodle8/mods/galacticraft/api/entity/IFuelable");
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "attachedFuelable", "Lmicdoodle8/mods/galacticraft/api/entity/IFuelable;");
- Label l49 = new Label();
- mv.visitLabel(l49);
- mv.visitLineNumber(113, l49);
- mv.visitJumpInsn(GOTO, l32);
- mv.visitLabel(l45);
- mv.visitLineNumber(102, l45);
- mv.visitFrame(F_CHOP,2, null, 0, null);
- mv.visitIincInsn(2, 1);
- mv.visitLabel(l38);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitJumpInsn(IF_ICMPLT, l39);
- mv.visitLabel(l32);
- mv.visitLineNumber(117, l32);
- mv.visitFrame(F_CHOP,3, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "fuelTank", "Lnet/minecraftforge/fluids/FluidTank;");
- mv.visitJumpInsn(IFNULL, l2);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "fuelTank", "Lnet/minecraftforge/fluids/FluidTank;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidTank", "getFluid", "()Lnet/minecraftforge/fluids/FluidStack;", false);
- mv.visitJumpInsn(IFNULL, l2);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "fuelTank", "Lnet/minecraftforge/fluids/FluidTank;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidTank", "getFluid", "()Lnet/minecraftforge/fluids/FluidStack;", false);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitJumpInsn(IFLE, l2);
- Label l50 = new Label();
- mv.visitLabel(l50);
- mv.visitLineNumber(118, l50);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "fuelTank", "Lnet/minecraftforge/fluids/FluidTank;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidTank", "getFluid", "()Lnet/minecraftforge/fluids/FluidStack;", false);
- mv.visitVarInsn(ASTORE, 4);
- Label l51 = new Label();
- mv.visitLabel(l51);
- mv.visitLineNumber(119, l51);
- mv.visitVarInsn(ALOAD, 4);
- Label l52 = new Label();
- mv.visitJumpInsn(IFNONNULL, l52);
- Label l53 = new Label();
- mv.visitLabel(l53);
- mv.visitLineNumber(120, l53);
- mv.visitFieldInsn(GETSTATIC, "gtPlusPlus/core/item/chemistry/RocketFuels", "mValidRocketFuels", "Ljava/util/HashMap;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/HashMap", "values", "()Ljava/util/Collection;", false);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Collection", "iterator", "()Ljava/util/Iterator;", true);
- mv.visitVarInsn(ASTORE, 6);
- Label l54 = new Label();
- mv.visitJumpInsn(GOTO, l54);
- Label l55 = new Label();
- mv.visitLabel(l55);
- mv.visitFrame(F_FULL, 7, new Object[] {"micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "net/minecraftforge/fluids/FluidStack", TOP, TOP, "net/minecraftforge/fluids/FluidStack", TOP, "java/util/Iterator"}, 0, new Object[] {});
- mv.visitVarInsn(ALOAD, 6);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;", true);
- mv.visitTypeInsn(CHECKCAST, "net/minecraftforge/fluids/Fluid");
- mv.visitVarInsn(ASTORE, 5);
- Label l56 = new Label();
- mv.visitLabel(l56);
- mv.visitLineNumber(121, l56);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "fuelTank", "Lnet/minecraftforge/fluids/FluidTank;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidTank", "getFluid", "()Lnet/minecraftforge/fluids/FluidStack;", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidStack", "getFluid", "()Lnet/minecraftforge/fluids/Fluid;", false);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitJumpInsn(IF_ACMPNE, l54);
- Label l57 = new Label();
- mv.visitLabel(l57);
- mv.visitLineNumber(122, l57);
- mv.visitTypeInsn(NEW, "net/minecraftforge/fluids/FluidStack");
- mv.visitInsn(DUP);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitInsn(ICONST_2);
- mv.visitMethodInsn(INVOKESPECIAL, "net/minecraftforge/fluids/FluidStack", "<init>", "(Lnet/minecraftforge/fluids/Fluid;I)V", false);
- mv.visitVarInsn(ASTORE, 1);
- mv.visitLabel(l54);
- mv.visitLineNumber(120, l54);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z", true);
- mv.visitJumpInsn(IFNE, l55);
- mv.visitLabel(l52);
- mv.visitLineNumber(126, l52);
- mv.visitFrame(F_FULL, 5, new Object[] {"micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "net/minecraftforge/fluids/FluidStack", TOP, TOP, "net/minecraftforge/fluids/FluidStack"}, 0, new Object[] {});
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "fuelTank", "Lnet/minecraftforge/fluids/FluidTank;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidTank", "getCapacity", "()I", false);
- Label l58 = new Label();
- mv.visitJumpInsn(IF_ICMPGE, l58);
- Label l59 = new Label();
- mv.visitLabel(l59);
- mv.visitLineNumber(127, l59);
- mv.visitTypeInsn(NEW, "net/minecraftforge/fluids/FluidStack");
- mv.visitInsn(DUP);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitInsn(ICONST_2);
- mv.visitMethodInsn(INVOKESPECIAL, "net/minecraftforge/fluids/FluidStack", "<init>", "(Lnet/minecraftforge/fluids/FluidStack;I)V", false);
- mv.visitVarInsn(ASTORE, 1);
- mv.visitLabel(l58);
- mv.visitLineNumber(130, l58);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitJumpInsn(IFNULL, l2);
- Label l60 = new Label();
- mv.visitLabel(l60);
- mv.visitLineNumber(131, l60);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "attachedFuelable", "Lmicdoodle8/mods/galacticraft/api/entity/IFuelable;");
- mv.visitJumpInsn(IFNULL, l2);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "hasEnoughEnergyToRun", "Z");
- mv.visitJumpInsn(IFEQ, l2);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "disabled", "Z");
- mv.visitJumpInsn(IFNE, l2);
- Label l61 = new Label();
- mv.visitLabel(l61);
- mv.visitLineNumber(132, l61);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "attachedFuelable", "Lmicdoodle8/mods/galacticraft/api/entity/IFuelable;");
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/xmod/galacticraft/util/GalacticUtils", "getRocketTier", "(Ljava/lang/Object;)I", false);
- mv.visitVarInsn(ISTORE, 5);
- Label l62 = new Label();
- mv.visitLabel(l62);
- mv.visitLineNumber(133, l62);
- mv.visitVarInsn(ILOAD, 5);
- mv.visitJumpInsn(IFLE, l2);
- Label l63 = new Label();
- mv.visitLabel(l63);
- mv.visitLineNumber(134, l63);
- mv.visitVarInsn(ILOAD, 5);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/xmod/galacticraft/util/GalacticUtils", "isFuelValidForTier", "(ILnet/minecraftforge/fluids/FluidStack;)Z", false);
- mv.visitJumpInsn(IFEQ, l2);
- Label l64 = new Label();
- mv.visitLabel(l64);
- mv.visitLineNumber(135, l64);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "attachedFuelable", "Lmicdoodle8/mods/galacticraft/api/entity/IFuelable;");
- mv.visitVarInsn(ALOAD, 1);
- mv.visitInsn(ICONST_1);
- mv.visitMethodInsn(INVOKEINTERFACE, "micdoodle8/mods/galacticraft/api/entity/IFuelable", "addFuel", "(Lnet/minecraftforge/fluids/FluidStack;Z)I", true);
- mv.visitVarInsn(ISTORE, 3);
- Label l65 = new Label();
- mv.visitLabel(l65);
- mv.visitLineNumber(136, l65);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ILOAD, 3);
- Label l66 = new Label();
- mv.visitJumpInsn(IFLE, l66);
- mv.visitInsn(ICONST_1);
- Label l67 = new Label();
- mv.visitJumpInsn(GOTO, l67);
- mv.visitLabel(l66);
- mv.visitFrame(F_FULL, 6, new Object[] {"micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "net/minecraftforge/fluids/FluidStack", TOP, INTEGER, "net/minecraftforge/fluids/FluidStack", INTEGER}, 1, new Object[] {"micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader"});
- mv.visitInsn(ICONST_0);
- mv.visitLabel(l67);
- mv.visitFrame(F_FULL, 6, new Object[] {"micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "net/minecraftforge/fluids/FluidStack", TOP, INTEGER, "net/minecraftforge/fluids/FluidStack", INTEGER}, 2, new Object[] {"micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", INTEGER});
- mv.visitFieldInsn(PUTFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "loadedFuelLastTick", "Z");
- Label l68 = new Label();
- mv.visitLabel(l68);
- mv.visitLineNumber(137, l68);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", "fuelTank", "Lnet/minecraftforge/fluids/FluidTank;");
- mv.visitVarInsn(ILOAD, 3);
- mv.visitInsn(ICONST_1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidTank", "drain", "(IZ)Lnet/minecraftforge/fluids/FluidStack;", false);
- mv.visitInsn(POP);
- mv.visitLabel(l2);
- mv.visitLineNumber(144, l2);
- mv.visitFrame(F_FULL, 1, new Object[] {"micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader"}, 0, new Object[] {});
- mv.visitInsn(RETURN);
- Label l69 = new Label();
- mv.visitLabel(l69);
- mv.visitLocalVariable("this", "Lmicdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader;", null, l0, l69, 0);
- mv.visitLocalVariable("liquid", "Lnet/minecraftforge/fluids/FluidStack;", null, l5, l2, 1);
- mv.visitLocalVariable("amount", "I", null, l37, l32, 2);
- mv.visitLocalVariable("filled", "I", null, l36, l32, 3);
- mv.visitLocalVariable("filled", "I", null, l65, l2, 3);
- mv.visitLocalVariable("isFuel", "Z", null, l10, l6, 4);
- mv.visitLocalVariable("liquidInTank", "Lnet/minecraftforge/fluids/FluidStack;", null, l13, l6, 5);
- mv.visitLocalVariable("didFill", "Z", null, l14, l6, 6);
- mv.visitLocalVariable("aFuelType", "Lnet/minecraftforge/fluids/Fluid;", null, l20, l18, 7);
- mv.visitLocalVariable("var8", "[Lnet/minecraftforge/common/util/ForgeDirection;", null, l35, l32, 4);
- mv.visitLocalVariable("dir", "Lnet/minecraftforge/common/util/ForgeDirection;", null, l40, l45, 5);
- mv.visitLocalVariable("pad", "L"+aTileEntity+";", null, l41, l45, 6);
- mv.visitLocalVariable("mainTile", "L"+aTileEntity+";", null, l44, l42, 7);
- mv.visitLocalVariable("liquidInTank", "Lnet/minecraftforge/fluids/FluidStack;", null, l51, l2, 4);
- mv.visitLocalVariable("aFuelType", "Lnet/minecraftforge/fluids/Fluid;", null, l56, l54, 5);
- mv.visitLocalVariable("aTier", "I", null, l62, l2, 5);
- mv.visitMaxs(5, 9);
- mv.visitEnd();
- }
- }
-
- public static final class localClassVisitor extends ClassVisitor {
-
- public localClassVisitor(ClassVisitor cv) {
- super(ASM5, cv);
- FMLRelaunchLog.log("[GT++ ASM] Galacticraft Fuel_Loader Patch", Level.INFO, "Inspecting Class "+className);
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- if (name.equals("updateEntity")) {
- FMLRelaunchLog.log("[GT++ ASM] Galacticraft Fuel_Loader Patch", Level.INFO, "Removing method "+name);
- return null;
- }
-
- MethodVisitor methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- return methodVisitor;
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements.java
deleted file mode 100644
index 2b9729a8a3..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements.java
+++ /dev/null
@@ -1,1896 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.AnnotationVisitor;
-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 cpw.mods.fml.common.FMLCommonHandler;
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import net.minecraftforge.common.MinecraftForge;
-
-public class ClassTransformer_GT_Achievements {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
- private static boolean mDidRemoveAssLineRecipeAdder = false;
-
- public ClassTransformer_GT_Achievements(byte[] basicClass) {
-
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
-
- aTempReader.accept(new MethodAdaptor(aTempWriter), 0);
-
- if (mDidRemoveAssLineRecipeAdder) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Patching GT .09");
- injectMethod(aTempWriter);
- patchOnItemPickup09(aTempWriter);
- }
- else {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Patching GT .08");
- patchOnItemPickup08(aTempWriter);
- }
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- }
- else {
- isValid = false;
- }
-
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements 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 injectMethod(ClassWriter cw) {
- MethodVisitor mv;
- boolean didInject = false;
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Injecting " + "registerAssAchievement" + ".");
-
- /**
- * Inject new, safer code
- */
-
-
- /*mv = cw.visitMethod(ACC_PUBLIC, "registerAssAchievement", "(Lgregtech/api/util/GT_Recipe;)Lnet/minecraft/stats/Achievement;", null, null);
- mv.visitCode();
- Label l0 = new Label();
- Label l1 = new Label();
- Label l2 = new Label();
- mv.visitTryCatchBlock(l0, l1, l2, "java/lang/Throwable");
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(291, l3);
- mv.visitVarInsn(ALOAD, 1);
- Label l4 = new Label();
- mv.visitJumpInsn(IFNONNULL, l4);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(292, l5);
- mv.visitLdcInsn("Someone tried to register an achievement for an invalid recipe. Please report this to Alkalus.");
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/api/objects/Logger", "INFO", "(Ljava/lang/String;)V", false);
- Label l6 = new Label();
- mv.visitLabel(l6);
- mv.visitLineNumber(293, l6);
- mv.visitInsn(ACONST_NULL);
- mv.visitInsn(ARETURN);
- mv.visitLabel(l4);
- mv.visitLineNumber(295, l4);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/util/GT_Recipe", "getOutput", "(I)Lnet/minecraft/item/ItemStack;", false);
- Label l7 = new Label();
- mv.visitJumpInsn(IFNONNULL, l7);
- Label l8 = new Label();
- mv.visitLabel(l8);
- mv.visitLineNumber(296, l8);
- mv.visitLdcInsn("Someone tried to register an achievement for a recipe with null output. Please report this to Alkalus.");
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/api/objects/Logger", "INFO", "(Ljava/lang/String;)V", false);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(297, l9);
- mv.visitInsn(ACONST_NULL);
- mv.visitInsn(ARETURN);
- mv.visitLabel(l7);
- mv.visitLineNumber(299, l7);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/util/GT_Recipe", "getOutput", "(I)Lnet/minecraft/item/ItemStack;", false);
- mv.visitVarInsn(ASTORE, 3);
- mv.visitLabel(l0);
- mv.visitLineNumber(301, l0);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitVarInsn(ASTORE, 2);
- mv.visitLabel(l1);
- mv.visitLineNumber(302, l1);
- Label l10 = new Label();
- mv.visitJumpInsn(GOTO, l10);
- mv.visitLabel(l2);
- mv.visitLineNumber(303, l2);
- mv.visitFrame(F_FULL, 4, new Object[] {"gregtech/loaders/misc/GT_Achievements", "gregtech/api/util/GT_Recipe", TOP, "net/minecraft/item/ItemStack"}, 1, new Object[] {"java/lang/Throwable"});
- mv.visitVarInsn(ASTORE, 4);
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLineNumber(304, l11);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/ItemUtils", "getUnlocalizedItemName", "(Lnet/minecraft/item/ItemStack;)Ljava/lang/String;", false);
- mv.visitVarInsn(ASTORE, 2);
- mv.visitLabel(l10);
- mv.visitLineNumber(306, l10);
- mv.visitFrame(F_FULL, 4, new Object[] {"gregtech/loaders/misc/GT_Achievements", "gregtech/api/util/GT_Recipe", "java/lang/String", "net/minecraft/item/ItemStack"}, 0, new Object[] {});
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/loaders/misc/GT_Achievements", "achievementList", "Ljava/util/concurrent/ConcurrentHashMap;");
- mv.visitVarInsn(ALOAD, 2);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/concurrent/ConcurrentHashMap", "get", "(Ljava/lang/Object;)Ljava/lang/Object;", false);
- Label l12 = new Label();
- mv.visitJumpInsn(IFNONNULL, l12);
- Label l13 = new Label();
- mv.visitLabel(l13);
- mv.visitLineNumber(307, l13);
- mv.visitFieldInsn(GETSTATIC, "gregtech/loaders/misc/GT_Achievements", "assReg", "I");
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IADD);
- mv.visitFieldInsn(PUTSTATIC, "gregtech/loaders/misc/GT_Achievements", "assReg", "I");
- Label l14 = new Label();
- mv.visitLabel(l14);
- mv.visitLineNumber(308, l14);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitIntInsn(BIPUSH, 11);
- mv.visitFieldInsn(GETSTATIC, "gregtech/loaders/misc/GT_Achievements", "assReg", "I");
- mv.visitInsn(ICONST_5);
- mv.visitInsn(IREM);
- mv.visitInsn(IADD);
- mv.visitInsn(INEG);
- mv.visitFieldInsn(GETSTATIC, "gregtech/loaders/misc/GT_Achievements", "assReg", "I");
- mv.visitInsn(ICONST_5);
- mv.visitInsn(IDIV);
- mv.visitIntInsn(BIPUSH, 8);
- mv.visitInsn(ISUB);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/util/GT_Recipe", "getOutput", "(I)Lnet/minecraft/item/ItemStack;", false);
- mv.visitFieldInsn(GETSTATIC, "net/minecraft/stats/AchievementList", "openInventory", "Lnet/minecraft/stats/Achievement;");
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "registerAchievement", "(Ljava/lang/String;IILnet/minecraft/item/ItemStack;Lnet/minecraft/stats/Achievement;Z)Lnet/minecraft/stats/Achievement;", false);
- mv.visitInsn(ARETURN);
- mv.visitLabel(l12);
- mv.visitLineNumber(310, l12);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitInsn(ACONST_NULL);
- mv.visitInsn(ARETURN);
- Label l15 = new Label();
- mv.visitLabel(l15);
- mv.visitLocalVariable("this", "Lgregtech/loaders/misc/GT_Achievements;", null, l3, l15, 0);
- mv.visitLocalVariable("recipe", "Lgregtech/api/util/GT_Recipe;", null, l3, l15, 1);
- mv.visitLocalVariable("aSafeUnlocalName", "Ljava/lang/String;", null, l1, l2, 2);
- mv.visitLocalVariable("aSafeUnlocalName", "Ljava/lang/String;", null, l10, l15, 2);
- mv.visitLocalVariable("aStack", "Lnet/minecraft/item/ItemStack;", null, l0, l15, 3);
- mv.visitLocalVariable("t", "Ljava/lang/Throwable;", null, l11, l10, 4);
- mv.visitMaxs(7, 5);
- mv.visitEnd();*/
-
- //Lets just static call my replacement function
- mv = cw.visitMethod(ACC_PUBLIC, "registerAssAchievement", "(Lgregtech/api/util/GT_Recipe;)Lnet/minecraft/stats/Achievement;", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(291, l0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/xmod/gregtech/loaders/misc/AssLineAchievements", "registerAssAchievement", "(Lgregtech/api/util/GT_Recipe;)Lnet/minecraft/stats/Achievement;", false);
- mv.visitInsn(ARETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("this", "Lgregtech/loaders/misc/GT_Achievements;", null, l0, l1, 0);
- mv.visitLocalVariable("recipe", "Lgregtech/api/util/GT_Recipe;", null, l0, l1, 1);
- mv.visitMaxs(1, 2);
- mv.visitEnd();
-
- didInject = true;
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Method injection complete.");
- return didInject;
- }
-
-
-
- public boolean patchOnItemPickup08(ClassWriter cw) {
- MethodVisitor mv;
- boolean didInject = false;
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Injecting " + "onItemPickup" + ".");
-
- AnnotationVisitor av0;
- mv = cw.visitMethod(ACC_PUBLIC, "onItemPickup", "(Lnet/minecraftforge/event/entity/player/EntityItemPickupEvent;)V", null, null);
- av0 = mv.visitAnnotation("Lcpw/mods/fml/common/eventhandler/SubscribeEvent;", true);
- av0.visitEnd();
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(418, l0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/event/entity/player/EntityItemPickupEvent", "entityPlayer", "Lnet/minecraft/entity/player/EntityPlayer;");
- mv.visitVarInsn(ASTORE, 2);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(419, l1);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/event/entity/player/EntityItemPickupEvent", "item", "Lnet/minecraft/entity/item/EntityItem;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/item/EntityItem", "getEntityItem", "()Lnet/minecraft/item/ItemStack;", false);
- mv.visitVarInsn(ASTORE, 3);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(420, l2);
- mv.visitVarInsn(ALOAD, 2);
- Label l3 = new Label();
- mv.visitJumpInsn(IFNULL, l3);
- mv.visitVarInsn(ALOAD, 3);
- Label l4 = new Label();
- mv.visitJumpInsn(IFNONNULL, l4);
- mv.visitLabel(l3);
- mv.visitLineNumber(421, l3);
- mv.visitFrame(F_APPEND,2, new Object[] {"net/minecraft/entity/player/EntityPlayer", "net/minecraft/item/ItemStack"}, 0, null);
- mv.visitInsn(RETURN);
- mv.visitLabel(l4);
- mv.visitLineNumber(424, l4);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKESTATIC, "gregtech/api/util/GT_OreDictUnificator", "getItemData", "(Lnet/minecraft/item/ItemStack;)Lgregtech/api/objects/ItemData;", false);
- mv.visitVarInsn(ASTORE, 4);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(425, l5);
- mv.visitVarInsn(ALOAD, 4);
- Label l6 = new Label();
- mv.visitJumpInsn(IFNULL, l6);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(426, l7);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "dust", "Lgregtech/api/enums/OrePrefixes;");
- Label l8 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l8);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(427, l9);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mMaterial", "Lgregtech/api/objects/MaterialStack;");
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/MaterialStack", "mMaterial", "Lgregtech/api/enums/Materials;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/Materials", "Lutetium", "Lgregtech/api/enums/Materials;");
- Label l10 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l10);
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLineNumber(428, l11);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("newmetal");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- mv.visitLabel(l10);
- mv.visitLineNumber(430, l10);
- mv.visitFrame(F_APPEND,1, new Object[] {"gregtech/api/objects/ItemData"}, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("cleandust");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l12 = new Label();
- mv.visitLabel(l12);
- mv.visitLineNumber(431, l12);
- mv.visitJumpInsn(GOTO, l6);
- mv.visitLabel(l8);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "ore", "Lgregtech/api/enums/OrePrefixes;");
- Label l13 = new Label();
- mv.visitJumpInsn(IF_ACMPEQ, l13);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "oreBlackgranite", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitJumpInsn(IF_ACMPEQ, l13);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "oreEndstone", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitJumpInsn(IF_ACMPEQ, l13);
- Label l14 = new Label();
- mv.visitLabel(l14);
- mv.visitLineNumber(432, l14);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "oreNetherrack", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitJumpInsn(IF_ACMPEQ, l13);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "oreRedgranite", "Lgregtech/api/enums/OrePrefixes;");
- Label l15 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l15);
- mv.visitLabel(l13);
- mv.visitLineNumber(433, l13);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitInsn(ICONST_0);
- mv.visitVarInsn(ISTORE, 5);
- Label l16 = new Label();
- mv.visitLabel(l16);
- Label l17 = new Label();
- mv.visitJumpInsn(GOTO, l17);
- Label l18 = new Label();
- mv.visitLabel(l18);
- mv.visitLineNumber(434, l18);
- mv.visitFrame(F_APPEND,1, new Object[] {INTEGER}, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/objects/ItemData", "getAllMaterialStacks", "()Ljava/util/ArrayList;", false);
- mv.visitVarInsn(ILOAD, 5);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "get", "(I)Ljava/lang/Object;", false);
- mv.visitTypeInsn(CHECKCAST, "gregtech/api/objects/MaterialStack");
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/MaterialStack", "mMaterial", "Lgregtech/api/enums/Materials;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/enums/Materials", "name", "()Ljava/lang/String;", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l19 = new Label();
- mv.visitLabel(l19);
- mv.visitLineNumber(435, l19);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/objects/ItemData", "getAllMaterialStacks", "()Ljava/util/ArrayList;", false);
- mv.visitVarInsn(ILOAD, 5);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "get", "(I)Ljava/lang/Object;", false);
- mv.visitTypeInsn(CHECKCAST, "gregtech/api/objects/MaterialStack");
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/MaterialStack", "mMaterial", "Lgregtech/api/enums/Materials;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/Materials", "AnyIron", "Lgregtech/api/enums/Materials;");
- Label l20 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l20);
- Label l21 = new Label();
- mv.visitLabel(l21);
- mv.visitLineNumber(436, l21);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("iron");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- mv.visitLabel(l20);
- mv.visitLineNumber(433, l20);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitIincInsn(5, 1);
- mv.visitLabel(l17);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ILOAD, 5);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/objects/ItemData", "getAllMaterialStacks", "()Ljava/util/ArrayList;", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "size", "()I", false);
- mv.visitJumpInsn(IF_ICMPLT, l18);
- Label l22 = new Label();
- mv.visitLabel(l22);
- mv.visitLineNumber(439, l22);
- mv.visitJumpInsn(GOTO, l6);
- mv.visitLabel(l15);
- mv.visitFrame(F_CHOP,1, null, 0, null);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "crushed", "Lgregtech/api/enums/OrePrefixes;");
- Label l23 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l23);
- Label l24 = new Label();
- mv.visitLabel(l24);
- mv.visitLineNumber(440, l24);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("crushed");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l25 = new Label();
- mv.visitLabel(l25);
- mv.visitLineNumber(441, l25);
- mv.visitJumpInsn(GOTO, l6);
- mv.visitLabel(l23);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "crushedPurified", "Lgregtech/api/enums/OrePrefixes;");
- Label l26 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l26);
- Label l27 = new Label();
- mv.visitLabel(l27);
- mv.visitLineNumber(442, l27);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("washing");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l28 = new Label();
- mv.visitLabel(l28);
- mv.visitLineNumber(443, l28);
- mv.visitJumpInsn(GOTO, l6);
- mv.visitLabel(l26);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "crushedCentrifuged", "Lgregtech/api/enums/OrePrefixes;");
- Label l29 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l29);
- Label l30 = new Label();
- mv.visitLabel(l30);
- mv.visitLineNumber(444, l30);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("spinit");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l31 = new Label();
- mv.visitLabel(l31);
- mv.visitLineNumber(445, l31);
- mv.visitJumpInsn(GOTO, l6);
- mv.visitLabel(l29);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mMaterial", "Lgregtech/api/objects/MaterialStack;");
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/MaterialStack", "mMaterial", "Lgregtech/api/enums/Materials;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/Materials", "Steel", "Lgregtech/api/enums/Materials;");
- Label l32 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l32);
- Label l33 = new Label();
- mv.visitLabel(l33);
- mv.visitLineNumber(446, l33);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "ingot", "Lgregtech/api/enums/OrePrefixes;");
- Label l34 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l34);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitFieldInsn(GETFIELD, "net/minecraft/item/ItemStack", "stackSize", "I");
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getMaxStackSize", "()I", false);
- mv.visitJumpInsn(IF_ICMPNE, l34);
- Label l35 = new Label();
- mv.visitLabel(l35);
- mv.visitLineNumber(447, l35);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("steel");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l36 = new Label();
- mv.visitLabel(l36);
- mv.visitLineNumber(448, l36);
- mv.visitJumpInsn(GOTO, l6);
- mv.visitLabel(l34);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "nugget", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitJumpInsn(IF_ACMPNE, l6);
- mv.visitLdcInsn("Thaumcraft");
- mv.visitMethodInsn(INVOKESTATIC, "cpw/mods/fml/common/Loader", "isModLoaded", "(Ljava/lang/String;)Z", false);
- mv.visitJumpInsn(IFEQ, l6);
- Label l37 = new Label();
- mv.visitLabel(l37);
- mv.visitLineNumber(449, l37);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/player/EntityPlayer", "getDisplayName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("GT_IRON_TO_STEEL");
- mv.visitMethodInsn(INVOKESTATIC, "thaumcraft/api/ThaumcraftApiHelper", "isResearchComplete", "(Ljava/lang/String;Ljava/lang/String;)Z", false);
- mv.visitJumpInsn(IFEQ, l6);
- Label l38 = new Label();
- mv.visitLabel(l38);
- mv.visitLineNumber(450, l38);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("steel");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l39 = new Label();
- mv.visitLabel(l39);
- mv.visitLineNumber(453, l39);
- mv.visitJumpInsn(GOTO, l6);
- mv.visitLabel(l32);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "circuit", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitJumpInsn(IF_ACMPNE, l6);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mMaterial", "Lgregtech/api/objects/MaterialStack;");
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/MaterialStack", "mMaterial", "Lgregtech/api/enums/Materials;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/Materials", "Advanced", "Lgregtech/api/enums/Materials;");
- mv.visitJumpInsn(IF_ACMPNE, l6);
- Label l40 = new Label();
- mv.visitLabel(l40);
- mv.visitLineNumber(454, l40);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("stepforward");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- mv.visitLabel(l6);
- mv.visitLineNumber(457, l6);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "startsWith", "(Ljava/lang/String;)Z", false);
- Label l41 = new Label();
- mv.visitJumpInsn(IFEQ, l41);
- Label l42 = new Label();
- mv.visitLabel(l42);
- mv.visitLineNumber(458, l42);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.02.32500");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l43 = new Label();
- mv.visitJumpInsn(IFEQ, l43);
- Label l44 = new Label();
- mv.visitLabel(l44);
- mv.visitLineNumber(459, l44);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("havestlead");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l45 = new Label();
- mv.visitLabel(l45);
- mv.visitLineNumber(460, l45);
- mv.visitJumpInsn(GOTO, l41);
- mv.visitLabel(l43);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.02.32501");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l46 = new Label();
- mv.visitJumpInsn(IFEQ, l46);
- Label l47 = new Label();
- mv.visitLabel(l47);
- mv.visitLineNumber(461, l47);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("havestsilver");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l48 = new Label();
- mv.visitLabel(l48);
- mv.visitLineNumber(462, l48);
- mv.visitJumpInsn(GOTO, l41);
- mv.visitLabel(l46);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.02.32503");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l49 = new Label();
- mv.visitJumpInsn(IFEQ, l49);
- Label l50 = new Label();
- mv.visitLabel(l50);
- mv.visitLineNumber(463, l50);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("havestiron");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l51 = new Label();
- mv.visitLabel(l51);
- mv.visitLineNumber(464, l51);
- mv.visitJumpInsn(GOTO, l41);
- mv.visitLabel(l49);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.02.32504");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l52 = new Label();
- mv.visitJumpInsn(IFEQ, l52);
- Label l53 = new Label();
- mv.visitLabel(l53);
- mv.visitLineNumber(465, l53);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("havestgold");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l54 = new Label();
- mv.visitLabel(l54);
- mv.visitLineNumber(466, l54);
- mv.visitJumpInsn(GOTO, l41);
- mv.visitLabel(l52);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.02.32530");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l55 = new Label();
- mv.visitJumpInsn(IFEQ, l55);
- Label l56 = new Label();
- mv.visitLabel(l56);
- mv.visitLineNumber(467, l56);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("havestcopper");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l57 = new Label();
- mv.visitLabel(l57);
- mv.visitLineNumber(468, l57);
- mv.visitJumpInsn(GOTO, l41);
- mv.visitLabel(l55);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.02.32540");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l58 = new Label();
- mv.visitJumpInsn(IFEQ, l58);
- Label l59 = new Label();
- mv.visitLabel(l59);
- mv.visitLineNumber(469, l59);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("havesttin");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l60 = new Label();
- mv.visitLabel(l60);
- mv.visitLineNumber(470, l60);
- mv.visitJumpInsn(GOTO, l41);
- mv.visitLabel(l58);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.02.32510");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l61 = new Label();
- mv.visitJumpInsn(IFEQ, l61);
- Label l62 = new Label();
- mv.visitLabel(l62);
- mv.visitLineNumber(471, l62);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("havestoil");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l63 = new Label();
- mv.visitLabel(l63);
- mv.visitLineNumber(472, l63);
- mv.visitJumpInsn(GOTO, l41);
- mv.visitLabel(l61);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.02.32511");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l64 = new Label();
- mv.visitJumpInsn(IFEQ, l64);
- Label l65 = new Label();
- mv.visitLabel(l65);
- mv.visitLineNumber(473, l65);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("havestemeralds");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l66 = new Label();
- mv.visitLabel(l66);
- mv.visitLineNumber(474, l66);
- mv.visitJumpInsn(GOTO, l41);
- mv.visitLabel(l64);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32706");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l67 = new Label();
- mv.visitJumpInsn(IFEQ, l67);
- Label l68 = new Label();
- mv.visitLabel(l68);
- mv.visitLineNumber(475, l68);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("energyflow");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l69 = new Label();
- mv.visitLabel(l69);
- mv.visitLineNumber(476, l69);
- mv.visitJumpInsn(GOTO, l41);
- mv.visitLabel(l67);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32702");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l70 = new Label();
- mv.visitJumpInsn(IFEQ, l70);
- Label l71 = new Label();
- mv.visitLabel(l71);
- mv.visitLineNumber(477, l71);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("bettercircuits");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l72 = new Label();
- mv.visitLabel(l72);
- mv.visitLineNumber(478, l72);
- mv.visitJumpInsn(GOTO, l41);
- mv.visitLabel(l70);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32707");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l73 = new Label();
- mv.visitJumpInsn(IFEQ, l73);
- Label l74 = new Label();
- mv.visitLabel(l74);
- mv.visitLineNumber(479, l74);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("datasaving");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l75 = new Label();
- mv.visitLabel(l75);
- mv.visitLineNumber(480, l75);
- mv.visitJumpInsn(GOTO, l41);
- mv.visitLabel(l73);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32597");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l76 = new Label();
- mv.visitJumpInsn(IFEQ, l76);
- Label l77 = new Label();
- mv.visitLabel(l77);
- mv.visitLineNumber(481, l77);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("orbs");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l78 = new Label();
- mv.visitLabel(l78);
- mv.visitLineNumber(482, l78);
- mv.visitJumpInsn(GOTO, l41);
- mv.visitLabel(l76);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32599");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l79 = new Label();
- mv.visitJumpInsn(IFEQ, l79);
- Label l80 = new Label();
- mv.visitLabel(l80);
- mv.visitLineNumber(483, l80);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("thatspower");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l81 = new Label();
- mv.visitLabel(l81);
- mv.visitLineNumber(484, l81);
- mv.visitJumpInsn(GOTO, l41);
- mv.visitLabel(l79);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32598");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l82 = new Label();
- mv.visitJumpInsn(IFEQ, l82);
- Label l83 = new Label();
- mv.visitLabel(l83);
- mv.visitLineNumber(485, l83);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("luck");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l84 = new Label();
- mv.visitLabel(l84);
- mv.visitLineNumber(486, l84);
- mv.visitJumpInsn(GOTO, l41);
- mv.visitLabel(l82);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32749");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l85 = new Label();
- mv.visitJumpInsn(IFEQ, l85);
- Label l86 = new Label();
- mv.visitLabel(l86);
- mv.visitLineNumber(487, l86);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("closeit");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l87 = new Label();
- mv.visitLabel(l87);
- mv.visitLineNumber(488, l87);
- mv.visitJumpInsn(GOTO, l41);
- mv.visitLabel(l85);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32730");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l88 = new Label();
- mv.visitJumpInsn(IFEQ, l88);
- Label l89 = new Label();
- mv.visitLabel(l89);
- mv.visitLineNumber(489, l89);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("manipulation");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l90 = new Label();
- mv.visitLabel(l90);
- mv.visitLineNumber(490, l90);
- mv.visitJumpInsn(GOTO, l41);
- mv.visitLabel(l88);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32729");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l91 = new Label();
- mv.visitJumpInsn(IFEQ, l91);
- Label l92 = new Label();
- mv.visitLabel(l92);
- mv.visitLineNumber(491, l92);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("filterregulate");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l93 = new Label();
- mv.visitLabel(l93);
- mv.visitLineNumber(492, l93);
- mv.visitJumpInsn(GOTO, l41);
- mv.visitLabel(l91);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32605");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l94 = new Label();
- mv.visitJumpInsn(IFEQ, l94);
- Label l95 = new Label();
- mv.visitLabel(l95);
- mv.visitLineNumber(493, l95);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("whatnow");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l96 = new Label();
- mv.visitLabel(l96);
- mv.visitLineNumber(494, l96);
- mv.visitJumpInsn(GOTO, l41);
- mv.visitLabel(l94);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.Thoriumcell");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- mv.visitJumpInsn(IFEQ, l41);
- Label l97 = new Label();
- mv.visitLabel(l97);
- mv.visitLineNumber(495, l97);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("newfuel");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- mv.visitLabel(l41);
- mv.visitLineNumber(498, l41);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitInsn(RETURN);
- Label l98 = new Label();
- mv.visitLabel(l98);
- mv.visitLocalVariable("this", "Lgregtech/loaders/misc/GT_Achievements;", null, l0, l98, 0);
- mv.visitLocalVariable("event", "Lnet/minecraftforge/event/entity/player/EntityItemPickupEvent;", null, l0, l98, 1);
- mv.visitLocalVariable("player", "Lnet/minecraft/entity/player/EntityPlayer;", null, l1, l98, 2);
- mv.visitLocalVariable("stack", "Lnet/minecraft/item/ItemStack;", null, l2, l98, 3);
- mv.visitLocalVariable("data", "Lgregtech/api/objects/ItemData;", null, l5, l98, 4);
- mv.visitLocalVariable("i", "I", null, l16, l22, 5);
- mv.visitMaxs(4, 6);
- mv.visitEnd();
-
-
- didInject = true;
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Method injection complete.");
- return didInject;
- }
-
-
- public boolean patchOnItemPickup09(ClassWriter cw) {
- MethodVisitor mv;
- boolean didInject = false;
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Injecting " + "onItemPickup" + ".");
-
- /**
- * Inject new, safer code
- */
- AnnotationVisitor av0;
- mv = cw.visitMethod(ACC_PUBLIC, "onItemPickup", "(Lnet/minecraftforge/event/entity/player/EntityItemPickupEvent;)V", null, null);
- av0 = mv.visitAnnotation("Lcpw/mods/fml/common/eventhandler/SubscribeEvent;", true);
- av0.visitEnd();
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(546, l0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/event/entity/player/EntityItemPickupEvent", "entityPlayer", "Lnet/minecraft/entity/player/EntityPlayer;");
- mv.visitVarInsn(ASTORE, 2);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(547, l1);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/event/entity/player/EntityItemPickupEvent", "item", "Lnet/minecraft/entity/item/EntityItem;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/item/EntityItem", "getEntityItem", "()Lnet/minecraft/item/ItemStack;", false);
- mv.visitVarInsn(ASTORE, 3);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(548, l2);
- mv.visitVarInsn(ALOAD, 2);
- Label l3 = new Label();
- mv.visitJumpInsn(IFNULL, l3);
- mv.visitVarInsn(ALOAD, 3);
- Label l4 = new Label();
- mv.visitJumpInsn(IFNONNULL, l4);
- mv.visitLabel(l3);
- mv.visitLineNumber(549, l3);
- mv.visitFrame(F_APPEND,2, new Object[] {"net/minecraft/entity/player/EntityPlayer", "net/minecraft/item/ItemStack"}, 0, null);
- mv.visitInsn(RETURN);
- mv.visitLabel(l4);
- mv.visitLineNumber(551, l4);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKESTATIC, "gregtech/api/util/GT_OreDictUnificator", "getItemData", "(Lnet/minecraft/item/ItemStack;)Lgregtech/api/objects/ItemData;", false);
- mv.visitVarInsn(ASTORE, 4);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(552, l5);
- mv.visitVarInsn(ALOAD, 4);
- Label l6 = new Label();
- mv.visitJumpInsn(IFNULL, l6);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitJumpInsn(IFNULL, l6);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(553, l7);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "dust", "Lgregtech/api/enums/OrePrefixes;");
- Label l8 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l8);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(554, l9);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mMaterial", "Lgregtech/api/objects/MaterialStack;");
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/MaterialStack", "mMaterial", "Lgregtech/api/enums/Materials;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/Materials", "Lutetium", "Lgregtech/api/enums/Materials;");
- Label l10 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l10);
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLineNumber(555, l11);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("newmetal");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- mv.visitLabel(l10);
- mv.visitLineNumber(557, l10);
- mv.visitFrame(F_APPEND,1, new Object[] {"gregtech/api/objects/ItemData"}, 0, null);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mMaterial", "Lgregtech/api/objects/MaterialStack;");
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/MaterialStack", "mMaterial", "Lgregtech/api/enums/Materials;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/Materials", "Gunpowder", "Lgregtech/api/enums/Materials;");
- mv.visitJumpInsn(IF_ACMPEQ, l6);
- Label l12 = new Label();
- mv.visitLabel(l12);
- mv.visitLineNumber(558, l12);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("cleandust");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l13 = new Label();
- mv.visitLabel(l13);
- mv.visitLineNumber(560, l13);
- mv.visitJumpInsn(GOTO, l6);
- mv.visitLabel(l8);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/enums/OrePrefixes", "name", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("ore");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "startsWith", "(Ljava/lang/String;)Z", false);
- Label l14 = new Label();
- mv.visitJumpInsn(IFEQ, l14);
- Label l15 = new Label();
- mv.visitLabel(l15);
- mv.visitLineNumber(561, l15);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/objects/ItemData", "getAllMaterialStacks", "()Ljava/util/ArrayList;", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "size", "()I", false);
- mv.visitVarInsn(ISTORE, 5);
- Label l16 = new Label();
- mv.visitLabel(l16);
- mv.visitLineNumber(562, l16);
- mv.visitInsn(ICONST_0);
- mv.visitVarInsn(ISTORE, 6);
- Label l17 = new Label();
- mv.visitLabel(l17);
- Label l18 = new Label();
- mv.visitJumpInsn(GOTO, l18);
- Label l19 = new Label();
- mv.visitLabel(l19);
- mv.visitLineNumber(563, l19);
- mv.visitFrame(F_APPEND,2, new Object[] {INTEGER, INTEGER}, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/objects/ItemData", "getAllMaterialStacks", "()Ljava/util/ArrayList;", false);
- mv.visitVarInsn(ILOAD, 6);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "get", "(I)Ljava/lang/Object;", false);
- mv.visitTypeInsn(CHECKCAST, "gregtech/api/objects/MaterialStack");
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/MaterialStack", "mMaterial", "Lgregtech/api/enums/Materials;");
- mv.visitFieldInsn(GETFIELD, "gregtech/api/enums/Materials", "mName", "Ljava/lang/String;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l20 = new Label();
- mv.visitLabel(l20);
- mv.visitLineNumber(564, l20);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/objects/ItemData", "getAllMaterialStacks", "()Ljava/util/ArrayList;", false);
- mv.visitVarInsn(ILOAD, 6);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "get", "(I)Ljava/lang/Object;", false);
- mv.visitTypeInsn(CHECKCAST, "gregtech/api/objects/MaterialStack");
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/MaterialStack", "mMaterial", "Lgregtech/api/enums/Materials;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/Materials", "Iron", "Lgregtech/api/enums/Materials;");
- Label l21 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l21);
- Label l22 = new Label();
- mv.visitLabel(l22);
- mv.visitLineNumber(565, l22);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("iron");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- mv.visitLabel(l21);
- mv.visitLineNumber(567, l21);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/objects/ItemData", "getAllMaterialStacks", "()Ljava/util/ArrayList;", false);
- mv.visitVarInsn(ILOAD, 6);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "get", "(I)Ljava/lang/Object;", false);
- mv.visitTypeInsn(CHECKCAST, "gregtech/api/objects/MaterialStack");
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/MaterialStack", "mMaterial", "Lgregtech/api/enums/Materials;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/Materials", "Copper", "Lgregtech/api/enums/Materials;");
- Label l23 = new Label();
- mv.visitJumpInsn(IF_ACMPEQ, l23);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/objects/ItemData", "getAllMaterialStacks", "()Ljava/util/ArrayList;", false);
- mv.visitVarInsn(ILOAD, 6);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "get", "(I)Ljava/lang/Object;", false);
- mv.visitTypeInsn(CHECKCAST, "gregtech/api/objects/MaterialStack");
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/MaterialStack", "mMaterial", "Lgregtech/api/enums/Materials;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/Materials", "Tin", "Lgregtech/api/enums/Materials;");
- Label l24 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l24);
- mv.visitLabel(l23);
- mv.visitLineNumber(568, l23);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/event/entity/player/EntityItemPickupEvent", "entityPlayer", "Lnet/minecraft/entity/player/EntityPlayer;");
- mv.visitLdcInsn("mineOre");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- mv.visitLabel(l24);
- mv.visitLineNumber(562, l24);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitIincInsn(6, 1);
- mv.visitLabel(l18);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ILOAD, 6);
- mv.visitVarInsn(ILOAD, 5);
- mv.visitJumpInsn(IF_ICMPLT, l19);
- Label l25 = new Label();
- mv.visitLabel(l25);
- mv.visitLineNumber(572, l25);
- mv.visitJumpInsn(GOTO, l6);
- mv.visitLabel(l14);
- mv.visitFrame(F_CHOP,2, null, 0, null);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "crushed", "Lgregtech/api/enums/OrePrefixes;");
- Label l26 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l26);
- Label l27 = new Label();
- mv.visitLabel(l27);
- mv.visitLineNumber(573, l27);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("crushed");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l28 = new Label();
- mv.visitLabel(l28);
- mv.visitLineNumber(574, l28);
- mv.visitJumpInsn(GOTO, l6);
- mv.visitLabel(l26);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "crushedPurified", "Lgregtech/api/enums/OrePrefixes;");
- Label l29 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l29);
- Label l30 = new Label();
- mv.visitLabel(l30);
- mv.visitLineNumber(575, l30);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("washing");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l31 = new Label();
- mv.visitLabel(l31);
- mv.visitLineNumber(576, l31);
- mv.visitJumpInsn(GOTO, l6);
- mv.visitLabel(l29);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "crushedCentrifuged", "Lgregtech/api/enums/OrePrefixes;");
- Label l32 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l32);
- Label l33 = new Label();
- mv.visitLabel(l33);
- mv.visitLineNumber(577, l33);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("spinit");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l34 = new Label();
- mv.visitLabel(l34);
- mv.visitLineNumber(578, l34);
- mv.visitJumpInsn(GOTO, l6);
- mv.visitLabel(l32);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mMaterial", "Lgregtech/api/objects/MaterialStack;");
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/MaterialStack", "mMaterial", "Lgregtech/api/enums/Materials;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/Materials", "Steel", "Lgregtech/api/enums/Materials;");
- mv.visitJumpInsn(IF_ACMPNE, l6);
- Label l35 = new Label();
- mv.visitLabel(l35);
- mv.visitLineNumber(579, l35);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "ingot", "Lgregtech/api/enums/OrePrefixes;");
- Label l36 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l36);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitFieldInsn(GETFIELD, "net/minecraft/item/ItemStack", "stackSize", "I");
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getMaxStackSize", "()I", false);
- mv.visitJumpInsn(IF_ICMPNE, l36);
- Label l37 = new Label();
- mv.visitLabel(l37);
- mv.visitLineNumber(580, l37);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("steel");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l38 = new Label();
- mv.visitLabel(l38);
- mv.visitLineNumber(581, l38);
- mv.visitJumpInsn(GOTO, l6);
- mv.visitLabel(l36);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "nugget", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitJumpInsn(IF_ACMPNE, l6);
- mv.visitLdcInsn("Thaumcraft");
- mv.visitMethodInsn(INVOKESTATIC, "cpw/mods/fml/common/Loader", "isModLoaded", "(Ljava/lang/String;)Z", false);
- mv.visitJumpInsn(IFEQ, l6);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/player/EntityPlayer", "getDisplayName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("GT_IRON_TO_STEEL");
- mv.visitMethodInsn(INVOKESTATIC, "thaumcraft/api/ThaumcraftApiHelper", "isResearchComplete", "(Ljava/lang/String;Ljava/lang/String;)Z", false);
- mv.visitJumpInsn(IFEQ, l6);
- Label l39 = new Label();
- mv.visitLabel(l39);
- mv.visitLineNumber(582, l39);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("steel");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- mv.visitLabel(l6);
- mv.visitLineNumber(589, l6);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "startsWith", "(Ljava/lang/String;)Z", false);
- Label l40 = new Label();
- mv.visitJumpInsn(IFEQ, l40);
- Label l41 = new Label();
- mv.visitLabel(l41);
- mv.visitLineNumber(590, l41);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.02.32500");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l42 = new Label();
- mv.visitJumpInsn(IFEQ, l42);
- Label l43 = new Label();
- mv.visitLabel(l43);
- mv.visitLineNumber(591, l43);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("havestlead");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l44 = new Label();
- mv.visitLabel(l44);
- mv.visitLineNumber(592, l44);
- Label l45 = new Label();
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l42);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.02.32501");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l46 = new Label();
- mv.visitJumpInsn(IFEQ, l46);
- Label l47 = new Label();
- mv.visitLabel(l47);
- mv.visitLineNumber(593, l47);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("havestsilver");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l48 = new Label();
- mv.visitLabel(l48);
- mv.visitLineNumber(594, l48);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l46);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.02.32503");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l49 = new Label();
- mv.visitJumpInsn(IFEQ, l49);
- Label l50 = new Label();
- mv.visitLabel(l50);
- mv.visitLineNumber(595, l50);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("havestiron");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l51 = new Label();
- mv.visitLabel(l51);
- mv.visitLineNumber(596, l51);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l49);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.02.32504");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l52 = new Label();
- mv.visitJumpInsn(IFEQ, l52);
- Label l53 = new Label();
- mv.visitLabel(l53);
- mv.visitLineNumber(597, l53);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("havestgold");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l54 = new Label();
- mv.visitLabel(l54);
- mv.visitLineNumber(598, l54);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l52);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.02.32530");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l55 = new Label();
- mv.visitJumpInsn(IFEQ, l55);
- Label l56 = new Label();
- mv.visitLabel(l56);
- mv.visitLineNumber(599, l56);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("havestcopper");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l57 = new Label();
- mv.visitLabel(l57);
- mv.visitLineNumber(600, l57);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l55);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.02.32540");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l58 = new Label();
- mv.visitJumpInsn(IFEQ, l58);
- Label l59 = new Label();
- mv.visitLabel(l59);
- mv.visitLineNumber(601, l59);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("havesttin");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l60 = new Label();
- mv.visitLabel(l60);
- mv.visitLineNumber(602, l60);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l58);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.02.32510");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l61 = new Label();
- mv.visitJumpInsn(IFEQ, l61);
- Label l62 = new Label();
- mv.visitLabel(l62);
- mv.visitLineNumber(603, l62);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("havestoil");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l63 = new Label();
- mv.visitLabel(l63);
- mv.visitLineNumber(604, l63);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l61);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.02.32511");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l64 = new Label();
- mv.visitJumpInsn(IFEQ, l64);
- Label l65 = new Label();
- mv.visitLabel(l65);
- mv.visitLineNumber(605, l65);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("havestemeralds");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l66 = new Label();
- mv.visitLabel(l66);
- mv.visitLineNumber(606, l66);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l64);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.03.32082");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l67 = new Label();
- mv.visitJumpInsn(IFEQ, l67);
- Label l68 = new Label();
- mv.visitLabel(l68);
- mv.visitLineNumber(607, l68);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("energyflow");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l69 = new Label();
- mv.visitLabel(l69);
- mv.visitLineNumber(608, l69);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l67);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32702");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l70 = new Label();
- mv.visitJumpInsn(IFEQ, l70);
- Label l71 = new Label();
- mv.visitLabel(l71);
- mv.visitLineNumber(609, l71);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("bettercircuits");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l72 = new Label();
- mv.visitLabel(l72);
- mv.visitLineNumber(610, l72);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l70);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32707");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l73 = new Label();
- mv.visitJumpInsn(IFEQ, l73);
- Label l74 = new Label();
- mv.visitLabel(l74);
- mv.visitLineNumber(611, l74);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("datasaving");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l75 = new Label();
- mv.visitLabel(l75);
- mv.visitLineNumber(612, l75);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l73);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32597");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l76 = new Label();
- mv.visitJumpInsn(IFEQ, l76);
- Label l77 = new Label();
- mv.visitLabel(l77);
- mv.visitLineNumber(613, l77);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("orbs");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l78 = new Label();
- mv.visitLabel(l78);
- mv.visitLineNumber(614, l78);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l76);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32599");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l79 = new Label();
- mv.visitJumpInsn(IFEQ, l79);
- Label l80 = new Label();
- mv.visitLabel(l80);
- mv.visitLineNumber(615, l80);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("thatspower");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l81 = new Label();
- mv.visitLabel(l81);
- mv.visitLineNumber(616, l81);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l79);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32598");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l82 = new Label();
- mv.visitJumpInsn(IFEQ, l82);
- Label l83 = new Label();
- mv.visitLabel(l83);
- mv.visitLineNumber(617, l83);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("luck");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l84 = new Label();
- mv.visitLabel(l84);
- mv.visitLineNumber(618, l84);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l82);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32749");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l85 = new Label();
- mv.visitJumpInsn(IFEQ, l85);
- Label l86 = new Label();
- mv.visitLabel(l86);
- mv.visitLineNumber(619, l86);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("closeit");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l87 = new Label();
- mv.visitLabel(l87);
- mv.visitLineNumber(620, l87);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l85);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32730");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l88 = new Label();
- mv.visitJumpInsn(IFEQ, l88);
- Label l89 = new Label();
- mv.visitLabel(l89);
- mv.visitLineNumber(621, l89);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("manipulation");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l90 = new Label();
- mv.visitLabel(l90);
- mv.visitLineNumber(622, l90);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l88);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32729");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l91 = new Label();
- mv.visitJumpInsn(IFEQ, l91);
- Label l92 = new Label();
- mv.visitLabel(l92);
- mv.visitLineNumber(623, l92);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("filterregulate");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l93 = new Label();
- mv.visitLabel(l93);
- mv.visitLineNumber(624, l93);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l91);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32605");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l94 = new Label();
- mv.visitJumpInsn(IFEQ, l94);
- Label l95 = new Label();
- mv.visitLabel(l95);
- mv.visitLineNumber(625, l95);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("whatnow");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l96 = new Label();
- mv.visitLabel(l96);
- mv.visitLineNumber(626, l96);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l94);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32736");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l97 = new Label();
- mv.visitJumpInsn(IFEQ, l97);
- Label l98 = new Label();
- mv.visitLabel(l98);
- mv.visitLineNumber(627, l98);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("zpmage");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l99 = new Label();
- mv.visitLabel(l99);
- mv.visitLineNumber(628, l99);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l97);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32737");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l100 = new Label();
- mv.visitJumpInsn(IFEQ, l100);
- Label l101 = new Label();
- mv.visitLabel(l101);
- mv.visitLineNumber(629, l101);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("uvage");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l102 = new Label();
- mv.visitLabel(l102);
- mv.visitLineNumber(630, l102);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l100);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.03.32030");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l103 = new Label();
- mv.visitJumpInsn(IFEQ, l103);
- Label l104 = new Label();
- mv.visitLabel(l104);
- mv.visitLineNumber(631, l104);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("gtmonosilicon");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l105 = new Label();
- mv.visitLabel(l105);
- mv.visitLineNumber(632, l105);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l103);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.03.32036");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l106 = new Label();
- mv.visitJumpInsn(IFEQ, l106);
- Label l107 = new Label();
- mv.visitLabel(l107);
- mv.visitLineNumber(633, l107);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("gtlogicwafer");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l108 = new Label();
- mv.visitLabel(l108);
- mv.visitLineNumber(634, l108);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l106);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32701");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l109 = new Label();
- mv.visitJumpInsn(IFEQ, l109);
- Label l110 = new Label();
- mv.visitLabel(l110);
- mv.visitLineNumber(635, l110);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("gtlogiccircuit");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l111 = new Label();
- mv.visitLabel(l111);
- mv.visitLineNumber(636, l111);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l109);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.03.32085");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l112 = new Label();
- mv.visitJumpInsn(IFEQ, l112);
- Label l113 = new Label();
- mv.visitLabel(l113);
- mv.visitLineNumber(637, l113);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("gtquantumprocessor");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l114 = new Label();
- mv.visitLabel(l114);
- mv.visitLineNumber(638, l114);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l112);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.03.32089");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l115 = new Label();
- mv.visitJumpInsn(IFEQ, l115);
- Label l116 = new Label();
- mv.visitLabel(l116);
- mv.visitLineNumber(639, l116);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("gtcrystalprocessor");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l117 = new Label();
- mv.visitLabel(l117);
- mv.visitLineNumber(640, l117);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l115);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.03.32092");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l118 = new Label();
- mv.visitJumpInsn(IFEQ, l118);
- Label l119 = new Label();
- mv.visitLabel(l119);
- mv.visitLineNumber(641, l119);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("gtwetware");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l120 = new Label();
- mv.visitLabel(l120);
- mv.visitLineNumber(642, l120);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l118);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.03.32095");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l121 = new Label();
- mv.visitJumpInsn(IFEQ, l121);
- Label l122 = new Label();
- mv.visitLabel(l122);
- mv.visitLineNumber(643, l122);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("gtwetmain");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l123 = new Label();
- mv.visitLabel(l123);
- mv.visitLineNumber(644, l123);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l121);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32736");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l124 = new Label();
- mv.visitJumpInsn(IFEQ, l124);
- Label l125 = new Label();
- mv.visitLabel(l125);
- mv.visitLineNumber(645, l125);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("zpmage");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l126 = new Label();
- mv.visitLabel(l126);
- mv.visitLineNumber(646, l126);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l124);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.metaitem.01.32737");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- mv.visitJumpInsn(IFEQ, l45);
- Label l127 = new Label();
- mv.visitLabel(l127);
- mv.visitLineNumber(647, l127);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("uvage");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l128 = new Label();
- mv.visitLabel(l128);
- mv.visitLineNumber(649, l128);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l40);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("gt.Thoriumcell");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l129 = new Label();
- mv.visitJumpInsn(IFEQ, l129);
- Label l130 = new Label();
- mv.visitLabel(l130);
- mv.visitLineNumber(650, l130);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("newfuel");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l131 = new Label();
- mv.visitLabel(l131);
- mv.visitLineNumber(651, l131);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l129);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getItem", "()Lnet/minecraft/item/Item;", false);
- mv.visitFieldInsn(GETSTATIC, "ic2/core/Ic2Items", "quantumBodyarmor", "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getItem", "()Lnet/minecraft/item/Item;", false);
- Label l132 = new Label();
- mv.visitJumpInsn(IF_ACMPEQ, l132);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getItem", "()Lnet/minecraft/item/Item;", false);
- mv.visitFieldInsn(GETSTATIC, "ic2/core/Ic2Items", "quantumBoots", "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getItem", "()Lnet/minecraft/item/Item;", false);
- mv.visitJumpInsn(IF_ACMPEQ, l132);
- Label l133 = new Label();
- mv.visitLabel(l133);
- mv.visitLineNumber(652, l133);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getItem", "()Lnet/minecraft/item/Item;", false);
- mv.visitFieldInsn(GETSTATIC, "ic2/core/Ic2Items", "quantumHelmet", "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getItem", "()Lnet/minecraft/item/Item;", false);
- mv.visitJumpInsn(IF_ACMPEQ, l132);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getItem", "()Lnet/minecraft/item/Item;", false);
- mv.visitFieldInsn(GETSTATIC, "ic2/core/Ic2Items", "quantumLeggings", "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getItem", "()Lnet/minecraft/item/Item;", false);
- Label l134 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l134);
- mv.visitLabel(l132);
- mv.visitLineNumber(653, l132);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("buildQArmor");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- Label l135 = new Label();
- mv.visitLabel(l135);
- mv.visitLineNumber(654, l135);
- mv.visitJumpInsn(GOTO, l45);
- mv.visitLabel(l134);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitLdcInsn("ic2.itemPartCircuitAdv");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- mv.visitJumpInsn(IFEQ, l45);
- Label l136 = new Label();
- mv.visitLabel(l136);
- mv.visitLineNumber(655, l136);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("stepforward");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
- mv.visitLabel(l45);
- mv.visitLineNumber(657, l45);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitInsn(RETURN);
- Label l137 = new Label();
- mv.visitLabel(l137);
- mv.visitLocalVariable("this", "Lgregtech/loaders/misc/GT_Achievements;", null, l0, l137, 0);
- mv.visitLocalVariable("event", "Lnet/minecraftforge/event/entity/player/EntityItemPickupEvent;", null, l0, l137, 1);
- mv.visitLocalVariable("player", "Lnet/minecraft/entity/player/EntityPlayer;", null, l1, l137, 2);
- mv.visitLocalVariable("stack", "Lnet/minecraft/item/ItemStack;", null, l2, l137, 3);
- mv.visitLocalVariable("data", "Lgregtech/api/objects/ItemData;", null, l5, l137, 4);
- mv.visitLocalVariable("data_getAllMaterialStacks_sS", "I", null, l16, l25, 5);
- mv.visitLocalVariable("i", "I", null, l17, l25, 6);
- mv.visitMaxs(4, 7);
- mv.visitEnd();
-
- didInject = true;
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Method injection complete.");
- return didInject;
- }
-
-
-
-
-
-
-
-
- public class MethodAdaptor extends ClassVisitor {
-
- public MethodAdaptor(ClassVisitor cv) {
- super(ASM5, cv);
- this.cv = cv;
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- MethodVisitor methodVisitor;
- if (name.equals("registerAssAchievement") || name.equals("onItemPickup")) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO,
- "Found method " + name + ", removing.");
- methodVisitor = null;
- if (name.equals("registerAssAchievement")) {
- mDidRemoveAssLineRecipeAdder = true;
- }
- } else {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
- return methodVisitor;
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements_CrashFix.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements_CrashFix.java
deleted file mode 100644
index fb297ed76e..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements_CrashFix.java
+++ /dev/null
@@ -1,218 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-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 cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gtPlusPlus.preloader.DevHelper;
-
-public class ClassTransformer_GT_Achievements_CrashFix {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
- private final boolean mObfuscated;
- private static boolean mDidRemoveAssLineRecipeAdder = false;
-
- public ClassTransformer_GT_Achievements_CrashFix(byte[] basicClass, boolean obfuscated) {
-
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
- mObfuscated = obfuscated;
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
-
- aTempReader.accept(new MethodAdaptor(aTempWriter), 0);
-
- if (mDidRemoveAssLineRecipeAdder) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Patching GT .09");
- injectMethod(aTempWriter);
- }
- else {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Patch not required, skipping.");
- }
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- }
- else {
- isValid = false;
- }
-
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements 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 injectMethod(ClassWriter cw) {
- MethodVisitor mv;
- boolean didInject = false;
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Injecting " + "registerAssAchievement" + ". Obfuscated? "+mObfuscated);
-
- /**
- * Inject new, safer code
- */
-
- mv = cw.visitMethod(ACC_PUBLIC, "registerAssAchievement", "(Lgregtech/api/util/GT_Recipe;)Lnet/minecraft/stats/Achievement;", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(293, l0);
- mv.visitVarInsn(ALOAD, 1);
- Label l1 = new Label();
- mv.visitJumpInsn(IFNONNULL, l1);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(294, l2);
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/util/GT_Log", "err", "Ljava/io/PrintStream;");
- mv.visitLdcInsn("GTPP_MOD: Someone tried to register an achievement for an invalid recipe. Please report this to Alkalus.");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(295, l3);
- mv.visitInsn(ACONST_NULL);
- mv.visitInsn(ARETURN);
- mv.visitLabel(l1);
- mv.visitLineNumber(297, l1);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/util/GT_Recipe", "getOutput", "(I)Lnet/minecraft/item/ItemStack;", false);
- Label l4 = new Label();
- mv.visitJumpInsn(IFNONNULL, l4);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(298, l5);
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/util/GT_Log", "err", "Ljava/io/PrintStream;");
- mv.visitLdcInsn("GTPP_MOD: Someone tried to register an achievement for a recipe with null output. Please report this to Alkalus.");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false);
- Label l6 = new Label();
- mv.visitLabel(l6);
- mv.visitLineNumber(299, l6);
- mv.visitInsn(ACONST_NULL);
- mv.visitInsn(ARETURN);
- mv.visitLabel(l4);
- mv.visitLineNumber(301, l4);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/util/GT_Recipe", "getOutput", "(I)Lnet/minecraft/item/ItemStack;", false);
- mv.visitVarInsn(ASTORE, 3);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(302, l7);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/ItemUtils", "getUnlocalizedItemName", "(Lnet/minecraft/item/ItemStack;)Ljava/lang/String;", false);
- mv.visitVarInsn(ASTORE, 2);
- Label l8 = new Label();
- mv.visitLabel(l8);
- mv.visitLineNumber(304, l8);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/loaders/misc/GT_Achievements", "achievementList", "Ljava/util/concurrent/ConcurrentHashMap;");
- mv.visitVarInsn(ALOAD, 2);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/concurrent/ConcurrentHashMap", "get", "(Ljava/lang/Object;)Ljava/lang/Object;", false);
- Label l9 = new Label();
- mv.visitJumpInsn(IFNONNULL, l9);
- Label l10 = new Label();
- mv.visitLabel(l10);
- mv.visitLineNumber(305, l10);
- mv.visitFieldInsn(GETSTATIC, "gregtech/loaders/misc/GT_Achievements", "assReg", "I");
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IADD);
- mv.visitFieldInsn(PUTSTATIC, "gregtech/loaders/misc/GT_Achievements", "assReg", "I");
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLineNumber(306, l11);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitIntInsn(BIPUSH, 11);
- mv.visitFieldInsn(GETSTATIC, "gregtech/loaders/misc/GT_Achievements", "assReg", "I");
- mv.visitInsn(ICONST_5);
- mv.visitInsn(IREM);
- mv.visitInsn(IADD);
- mv.visitInsn(INEG);
- mv.visitFieldInsn(GETSTATIC, "gregtech/loaders/misc/GT_Achievements", "assReg", "I");
- mv.visitInsn(ICONST_5);
- mv.visitInsn(IDIV);
- mv.visitIntInsn(BIPUSH, 8);
- mv.visitInsn(ISUB);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/util/GT_Recipe", "getOutput", "(I)Lnet/minecraft/item/ItemStack;", false);
- mv.visitLdcInsn("NO_REQUIREMENT");
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "registerAchievement", "(Ljava/lang/String;IILnet/minecraft/item/ItemStack;Ljava/lang/String;Z)Lnet/minecraft/stats/Achievement;", false);
- mv.visitVarInsn(ASTORE, 4);
- Label l12 = new Label();
- mv.visitLabel(l12);
- mv.visitLineNumber(307, l12);
- Label l13 = new Label();
- mv.visitJumpInsn(GOTO, l13);
- mv.visitLabel(l9);
- mv.visitLineNumber(309, l9);
- mv.visitFrame(F_APPEND,2, new Object[] {"java/lang/String", "net/minecraft/item/ItemStack"}, 0, null);
- mv.visitInsn(ACONST_NULL);
- mv.visitVarInsn(ASTORE, 4);
- mv.visitLabel(l13);
- mv.visitLineNumber(311, l13);
- mv.visitFrame(F_APPEND,1, new Object[] {"net/minecraft/stats/Achievement"}, 0, null);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitInsn(ARETURN);
- Label l14 = new Label();
- mv.visitLabel(l14);
- mv.visitLocalVariable("this", "Lgregtech/loaders/misc/GT_Achievements;", null, l0, l14, 0);
- mv.visitLocalVariable("recipe", "Lgregtech/api/util/GT_Recipe;", null, l0, l14, 1);
- mv.visitLocalVariable("aSafeUnlocalName", "Ljava/lang/String;", null, l8, l14, 2);
- mv.visitLocalVariable("aStack", "Lnet/minecraft/item/ItemStack;", null, l7, l14, 3);
- mv.visitLocalVariable("aYouDidSomethingInGT", "Lnet/minecraft/stats/Achievement;", null, l12, l9, 4);
- mv.visitLocalVariable("aYouDidSomethingInGT", "Lnet/minecraft/stats/Achievement;", null, l13, l14, 4);
- mv.visitMaxs(7, 5);
- mv.visitEnd();
-
- didInject = true;
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Method injection complete.");
- return didInject;
- }
-
-
-
- public class MethodAdaptor extends ClassVisitor {
-
- public MethodAdaptor(ClassVisitor cv) {
- super(ASM5, cv);
- this.cv = cv;
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- MethodVisitor methodVisitor;
- if (name.equals("registerAssAchievement")) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Found method " + name + ", removing.");
- methodVisitor = null;
- mDidRemoveAssLineRecipeAdder = true;
- } else {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
- return methodVisitor;
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BaseMetaTileEntity.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BaseMetaTileEntity.java
deleted file mode 100644
index da5859eb55..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BaseMetaTileEntity.java
+++ /dev/null
@@ -1,158 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-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 cpw.mods.fml.relauncher.FMLRelaunchLog;
-
-public class ClassTransformer_GT_BaseMetaTileEntity {
-
- //The qualified name of the class we plan to transform.
- //gregtech/common/blocks/GT_Block_Machines
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
-
- public ClassTransformer_GT_BaseMetaTileEntity(byte[] basicClass) {
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- FMLRelaunchLog.log("[GT++ ASM] Gregtech setMetaTileEntity Patch", Level.INFO, "Attempting to make setMetaTileEntity(IMetaTileEntity) safer.");
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new localClassVisitor(aTempWriter), 0);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- }
- else {
- isValid = false;
- }
- FMLRelaunchLog.log("[GT++ ASM] Gregtech setMetaTileEntity Patch", Level.INFO, "Valid patch? "+isValid+".");
- reader = aTempReader;
- writer = aTempWriter;
-
-
- if (reader != null && writer != null) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech setMetaTileEntity Patch", Level.INFO, "Attempting Method Injection.");
- injectMethod("setMetaTileEntity");
- }
-
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public boolean injectMethod(String aMethodName) {
- MethodVisitor mv;
- boolean didInject = false;
- FMLRelaunchLog.log("[GT++ ASM] Gregtech setMetaTileEntity Patch", Level.INFO, "Injecting "+aMethodName+".");
- if (aMethodName.equals("setMetaTileEntity")) {
-
- mv = getWriter().visitMethod(ACC_PUBLIC, "setMetaTileEntity", "(Lgregtech/api/interfaces/metatileentity/IMetaTileEntity;)V", null, null);
- mv.visitCode();
- Label l0 = new Label();
- Label l1 = new Label();
- Label l2 = new Label();
- mv.visitTryCatchBlock(l0, l1, l2, "java/lang/Throwable");
- mv.visitLabel(l0);
- mv.visitLineNumber(1568, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitTypeInsn(CHECKCAST, "gregtech/api/metatileentity/MetaTileEntity");
- mv.visitFieldInsn(PUTFIELD, "gregtech/api/metatileentity/BaseMetaTileEntity", "mMetaTileEntity", "Lgregtech/api/metatileentity/MetaTileEntity;");
- mv.visitLabel(l1);
- mv.visitLineNumber(1569, l1);
- Label l3 = new Label();
- mv.visitJumpInsn(GOTO, l3);
- mv.visitLabel(l2);
- mv.visitLineNumber(1570, l2);
- mv.visitFrame(F_SAME1, 0, null, 1, new Object[] {"java/lang/Throwable"});
- mv.visitVarInsn(ASTORE, 2);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(1571, l4);
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/util/GT_Log", "err", "Ljava/io/PrintStream;");
- mv.visitLdcInsn("[BMTE] Bad Tile Entity set in world, your game would have crashed if not for me!");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(1572, l5);
- mv.visitVarInsn(ALOAD, 1);
- Label l6 = new Label();
- mv.visitJumpInsn(IFNULL, l6);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(1573, l7);
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/util/GT_Log", "err", "Ljava/io/PrintStream;");
- mv.visitTypeInsn(NEW, "java/lang/StringBuilder");
- mv.visitInsn(DUP);
- mv.visitLdcInsn("Tile was of type: ");
- mv.visitMethodInsn(INVOKESPECIAL, "java/lang/StringBuilder", "<init>", "(Ljava/lang/String;)V", false);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEINTERFACE, "gregtech/api/interfaces/metatileentity/IMetaTileEntity", "getInventoryName", "()Ljava/lang/String;", true);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "toString", "()Ljava/lang/String;", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false);
- mv.visitLabel(l6);
- mv.visitLineNumber(1574, l6);
- mv.visitFrame(F_APPEND,1, new Object[] {"java/lang/Throwable"}, 0, null);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Throwable", "printStackTrace", "()V", false);
- mv.visitLabel(l3);
- mv.visitLineNumber(1576, l3);
- mv.visitFrame(F_CHOP,1, null, 0, null);
- mv.visitInsn(RETURN);
- Label l8 = new Label();
- mv.visitLabel(l8);
- mv.visitLocalVariable("this", "Lgregtech/api/metatileentity/BaseMetaTileEntity;", null, l0, l8, 0);
- mv.visitLocalVariable("aMetaTileEntity", "Lgregtech/api/interfaces/metatileentity/IMetaTileEntity;", null, l0, l8, 1);
- mv.visitLocalVariable("t", "Ljava/lang/Throwable;", null, l4, l3, 2);
- mv.visitMaxs(4, 3);
- mv.visitEnd();
-
- didInject = true;
- }
- FMLRelaunchLog.log("[GT++ ASM] Gregtech setMetaTileEntity Patch", Level.INFO, "Method injection complete.");
- return didInject;
- }
-
- public final class localClassVisitor extends ClassVisitor {
-
- public localClassVisitor(ClassVisitor cv) {
- super(ASM5, cv);
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- MethodVisitor methodVisitor;
- if (name.equals("setMetaTileEntity")) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech setMetaTileEntity Patch", Level.INFO, "Found method "+name+", removing.");
- methodVisitor = null;
- }
- else {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
- return methodVisitor;
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_MetaPipeEntity.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_MetaPipeEntity.java
deleted file mode 100644
index dce1fa15d2..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_MetaPipeEntity.java
+++ /dev/null
@@ -1,286 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
-import static org.objectweb.asm.Opcodes.ALOAD;
-import static org.objectweb.asm.Opcodes.ARETURN;
-import static org.objectweb.asm.Opcodes.ASM5;
-import static org.objectweb.asm.Opcodes.GETFIELD;
-import static org.objectweb.asm.Opcodes.ILOAD;
-import static org.objectweb.asm.Opcodes.INVOKESTATIC;
-import static org.objectweb.asm.Opcodes.IRETURN;
-
-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 cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gregtech.api.GregTech_API;
-import gregtech.api.enums.Materials;
-import gregtech.api.enums.SubTag;
-import gregtech.api.metatileentity.BaseMetaPipeEntity;
-import gtPlusPlus.xmod.gregtech.common.Meta_GT_Proxy;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.world.World;
-
-public class ClassTransformer_GT_BlockMachines_MetaPipeEntity {
-
- //The qualified name of the class we plan to transform.
- //gregtech/common/blocks/GT_Block_Machines
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- /**
- * Utility Functions
- */
-
- public static String getHarvestTool(int aMeta) {
- //FMLRelaunchLog.log("[GT++ ASM] Gregtech getTileEntityBaseType Patch", Level.INFO, "Attempting to call getHarvestTool. Meta: "+aMeta);
- if (aMeta >= 8 && aMeta <= 11) {
- return "cutter";
- }
- return "wrench";
- }
-
- /*
- * Used to patch the method in Fluid pipes, Frame Boxes and Item Pipes
- */
- /**
- * This determines the BaseMetaTileEntity belonging to this MetaTileEntity by using the Meta ID of the Block itself.
- * <p/>
- * 0 = BaseMetaTileEntity, Wrench lvl 0 to dismantle
- * 1 = BaseMetaTileEntity, Wrench lvl 1 to dismantle
- * <p/>
- * 2 = BaseMetaTileEntity, Wrench lvl 2 to dismantle
- * 3 = BaseMetaTileEntity, Wrench lvl 3 to dismantle
- * <p/>
- * 4 = BaseMetaPipeEntity, Wrench lvl 0 to dismantle
- * 5 = BaseMetaPipeEntity, Wrench lvl 1 to dismantle
- * <p/>
- * 6 = BaseMetaPipeEntity, Wrench lvl 2 to dismantle
- * 7 = BaseMetaPipeEntity, Wrench lvl 3 to dismantle
- * <p/>
- * 8 = BaseMetaPipeEntity, Cutter lvl 0 to dismantle
- * 9 = BaseMetaPipeEntity, Cutter lvl 1 to dismantle
- * <p/>
- * 10 = BaseMetaPipeEntity, Cutter lvl 2 to dismantle
- * 11 = BaseMetaPipeEntity, Cutter lvl 3 to dismantle
- * <p/>
- * == Reserved For Alkalus (Was previously used to allow axes on wooden blocks, but that's fucking stupid.)
- * <p/>
- * 12 = BaseCustomPower_MTE, Wrench lvl 0 to dismantle
- * 13 = BaseCustomTileEntity, Wrench lvl 1 to dismantle
- * <p/>
- * 14 = BaseCustomTileEntity, Wrench lvl 2 to dismantle
- * 15 = BaseCustomTileEntity, Wrench lvl 3 to dismantle
- */
- public static byte getTileEntityBaseType(Materials mMaterial) {
- byte mMetaID;
- //Modified code that should never return 12-15 for Wooden items.
- //mMetaID = (byte) (mMaterial == null ? 4 : (byte) (4) + Math.max(0, Math.min(3, mMaterial.mToolQuality)));
- //Original Code for debug purposes
- mMetaID = mMaterial == null ? 4 : (byte) ((mMaterial.contains(SubTag.WOOD) ? 4 : 4) + Math.max(0, Math.min(3, mMaterial.mToolQuality)));
- //FMLRelaunchLog.log("[GT++ ASM] Gregtech getTileEntityBaseType Patch", Level.INFO, "Attempting to call getTileEntityBaseType. Using Meta: "+mMetaID);
- return mMetaID;
- }
-
-
-
- /**
- * This determines the BaseMetaTileEntity belonging to this MetaTileEntity by using the Meta ID of the Block itself.
- * <p/>
- * 0 = BaseMetaTileEntity, Wrench lvl 0 to dismantle
- * 1 = BaseMetaTileEntity, Wrench lvl 1 to dismantle
- * <p/>
- * 2 = BaseMetaTileEntity, Wrench lvl 2 to dismantle
- * 3 = BaseMetaTileEntity, Wrench lvl 3 to dismantle
- * <p/>
- * 4 = BaseMetaPipeEntity, Wrench lvl 0 to dismantle
- * 5 = BaseMetaPipeEntity, Wrench lvl 1 to dismantle
- * <p/>
- * 6 = BaseMetaPipeEntity, Wrench lvl 2 to dismantle
- * 7 = BaseMetaPipeEntity, Wrench lvl 3 to dismantle
- * <p/>
- * 8 = BaseMetaPipeEntity, Cutter lvl 0 to dismantle
- * 9 = BaseMetaPipeEntity, Cutter lvl 1 to dismantle
- * <p/>
- * 10 = BaseMetaPipeEntity, Cutter lvl 2 to dismantle
- * 11 = BaseMetaPipeEntity, Cutter lvl 3 to dismantle
- * <p/>
- * == Reserved For Alkalus (Was previously used to allow axes on wooden blocks, but that's fucking stupid.)
- * <p/>
- * 12 = BaseCustomPower_MTE, Wrench lvl 2 to dismantle
- * 13 = BaseCustomTileEntity, Wrench lvl 2 to dismantle
- * <p/>
- * 14 = BaseCustomTileEntity, Wrench lvl 3 to dismantle
- * 15 = BaseCustomTileEntity, Wrench lvl 3 to dismantle
- */
- public static TileEntity createTileEntity(World aWorld, int aMeta) {
- //Logger.INFO("Creating Tile Entity with Meta of "+aMeta);
- if (aMeta < 4) {
- return GregTech_API.constructBaseMetaTileEntity();
- } else if (aMeta < 12) {
- return new BaseMetaPipeEntity();
- } else {
- //Because Wooden pipes/frames may exist in world, we try cast to the GT++ tile first, if tht fails, we cast a pipe..
- try {
- return Meta_GT_Proxy.constructCustomGregtechMetaTileEntityByMeta(aMeta);
- }
- catch (Throwable c) {
- //Returns a pipe entity, once this returns, it should correct itself and no longer error in future.
- return new BaseMetaPipeEntity();
- }
- }
- }
-
- public static TileEntity createTileEntity_Original(World aWorld, int aMeta) {
- // Logger.INFO("Creating Tile Entity with Meta of "+aMeta);
- if (aMeta < 4) {
- return GregTech_API.constructBaseMetaTileEntity();
- } else {
- return new BaseMetaPipeEntity();
- }
- }
-
- int mMode;
-
- public ClassTransformer_GT_BlockMachines_MetaPipeEntity(byte[] basicClass, int aMode) {
- mMode = aMode;
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- FMLRelaunchLog.log("[GT++ ASM] Gregtech getTileEntityBaseType Patch", Level.INFO, "Attempting to patch in mode "+aMode+".");
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new localClassVisitor(aTempWriter, mMode), 0);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- }
- else {
- isValid = false;
- }
- FMLRelaunchLog.log("[GT++ ASM] Gregtech getTileEntityBaseType Patch", Level.INFO, "Valid patch? "+isValid+".");
- reader = aTempReader;
- writer = aTempWriter;
-
-
- if (reader != null && writer != null) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech getTileEntityBaseType Patch", Level.INFO, "Attempting Method Injection.");
- if (aMode == 0) {
- injectMethod("getHarvestTool");
- injectMethod("createTileEntity");
- }
- else {
- injectMethod("getTileEntityBaseType");
- }
- }
-
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public boolean injectMethod(String aMethodName) {
- MethodVisitor mv;
- boolean didInject = false;
- FMLRelaunchLog.log("[GT++ ASM] Gregtech getTileEntityBaseType Patch", Level.INFO, "Injecting "+aMethodName+".");
- if (aMethodName.equals("getHarvestTool")) {
- mv = getWriter().visitMethod(ACC_PUBLIC, "getHarvestTool", "(I)Ljava/lang/String;", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(63, l0);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_MetaPipeEntity", "getHarvestTool", "(I)Ljava/lang/String;", false);
- mv.visitInsn(ARETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("this", "Lgregtech/common/blocks/GT_Block_Machines;", null, l0, l1, 0);
- mv.visitLocalVariable("aMeta", "I", null, l0, l1, 1);
- mv.visitMaxs(1, 2);
- mv.visitEnd();
- didInject = true;
- }
- else if (aMethodName.equals("createTileEntity")) {
- mv = getWriter().visitMethod(ACC_PUBLIC, "createTileEntity", "(Lnet/minecraft/world/World;I)Lnet/minecraft/tileentity/TileEntity;", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(442, l0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_MetaPipeEntity", "createTileEntity", "(Lnet/minecraft/world/World;I)Lnet/minecraft/tileentity/TileEntity;", false);
- mv.visitInsn(ARETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("this", "Lgregtech/common/blocks/GT_Block_Machines;", null, l0, l1, 0);
- mv.visitLocalVariable("aWorld", "Lnet/minecraft/world/World;", null, l0, l1, 1);
- mv.visitLocalVariable("aMeta", "I", null, l0, l1, 2);
- mv.visitMaxs(2, 3);
- mv.visitEnd();
- didInject = true;
-
- }
- else if (aMethodName.equals("getTileEntityBaseType")) {
-
- String aClassName = mMode == 1 ? "gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Item" : mMode == 2 ? "gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Frame" : "gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Fluid";
- mv = getWriter().visitMethod(ACC_PUBLIC, "getTileEntityBaseType", "()B", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(37, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, ""+aClassName+"", "mMaterial", "Lgregtech/api/enums/Materials;");
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_MetaPipeEntity", "getTileEntityBaseType", "(Lgregtech/api/enums/Materials;)B", false);
- mv.visitInsn(IRETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("this", "L"+aClassName+";", null, l0, l1, 0);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- didInject = true;
-
- }
- FMLRelaunchLog.log("[GT++ ASM] Gregtech getTileEntityBaseType Patch", Level.INFO, "Method injection complete.");
- return didInject;
- }
-
- public final class localClassVisitor extends ClassVisitor {
-
- private final int mMode;
-
- public localClassVisitor(ClassVisitor cv, int aMode) {
- super(ASM5, cv);
- mMode = aMode;
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- MethodVisitor methodVisitor;
- if ((mMode == 0 && (name.equals("createTileEntity") || name.equals("getHarvestTool"))) || (mMode > 0 && name.equals("getTileEntityBaseType"))) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech getTileEntityBaseType Patch", Level.INFO, "Found method "+name+", removing.");
- methodVisitor = null;
- }
- else {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
- return methodVisitor;
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_NBT.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_NBT.java
deleted file mode 100644
index 349bdc3e88..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_NBT.java
+++ /dev/null
@@ -1,193 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import java.io.IOException;
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.Label;
-import org.objectweb.asm.MethodVisitor;
-
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gtPlusPlus.core.lib.CORE;
-import gtPlusPlus.preloader.DevHelper;
-import gtPlusPlus.preloader.asm.AsmConfig;
-
-public class ClassTransformer_GT_BlockMachines_NBT {
-
- //The qualified name of the class we plan to transform.
- private static final String className = "gregtech.common.blocks.GT_Block_Machines";
- //gregtech/common/blocks/GT_Block_Machines
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- String aEntityPlayer;
- String aEntityPlayerMP;
- String aWorld;
-
- public static boolean isNbtPersistencyPatchAlreadyApplied = false;
-
- public ClassTransformer_GT_BlockMachines_NBT(byte[] basicClass, boolean obfuscated) {
-
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- FMLRelaunchLog.log("[GT++ ASM] Gregtech NBT Persistency Patch", Level.INFO, "Attempting to patch "+className+".");
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new localClassVisitor(aTempWriter), 0);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- }
- else {
- isValid = false;
- }
- FMLRelaunchLog.log("[GT++ ASM] Gregtech NBT Persistency Patch", Level.INFO, "Valid patch? "+isValid+".");
- reader = aTempReader;
- writer = aTempWriter;
-
- CORE.NBT_PERSISTENCY_PATCH_APPLIED = isNbtPersistencyPatchAlreadyApplied;
-
- if (reader != null && writer != null && !isNbtPersistencyPatchAlreadyApplied && AsmConfig.enableGtNbtFix) {
- aEntityPlayer = obfuscated ? DevHelper.getObfuscated("net/minecraft/entity/player/EntityPlayer") : "net/minecraft/entity/player/EntityPlayer";
- aEntityPlayerMP = obfuscated ? DevHelper.getObfuscated("net/minecraft/entity/player/EntityPlayerMP") : "net/minecraft/entity/player/EntityPlayerMP";
- aWorld = obfuscated ? DevHelper.getObfuscated("net/minecraft/world/World") : "net/minecraft/world/World";
- FMLRelaunchLog.log("[GT++ ASM] Gregtech NBT Persistency Patch", Level.INFO, "Attempting Method Injection.");
- if (injectMethod("removedByPlayer") && injectMethod("harvestBlock")) {
- CORE.NBT_PERSISTENCY_PATCH_APPLIED = true;
- }
- }
-
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public boolean injectMethod(String aMethodName) {
- MethodVisitor mv;
- boolean didInject = false;
- FMLRelaunchLog.log("[GT++ ASM] Gregtech NBT Persistency Patch", Level.INFO, "Injecting "+aMethodName+" into "+className+".");
- if (aMethodName.equals("removedByPlayer")) {
-
- mv = getWriter().visitMethod(ACC_PUBLIC, "removedByPlayer", "(L"+aWorld+";L"+aEntityPlayer+";IIIZ)Z", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(535, l0);
- mv.visitVarInsn(ILOAD, 6);
- Label l1 = new Label();
- mv.visitJumpInsn(IFEQ, l1);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(536, l2);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l1);
- mv.visitLineNumber(538, l1);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitVarInsn(ILOAD, 4);
- mv.visitVarInsn(ILOAD, 5);
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKESPECIAL, "gregtech/api/items/GT_Generic_Block", "removedByPlayer", "(L"+aWorld+";L"+aEntityPlayer+";IIIZ)Z", false);
- mv.visitInsn(IRETURN);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLocalVariable("this", "Lgregtech/common/blocks/GT_Block_Machines;", null, l0, l3, 0);
- mv.visitLocalVariable("aWorld", "L"+aWorld+";", null, l0, l3, 1);
- mv.visitLocalVariable("aPlayer", "L"+aEntityPlayer+";", null, l0, l3, 2);
- mv.visitLocalVariable("aX", "I", null, l0, l3, 3);
- mv.visitLocalVariable("aY", "I", null, l0, l3, 4);
- mv.visitLocalVariable("aZ", "I", null, l0, l3, 5);
- mv.visitLocalVariable("aWillHarvest", "Z", null, l0, l3, 6);
- mv.visitMaxs(7, 7);
- mv.visitEnd();
- didInject = true;
-
- }
- else if (aMethodName.equals("harvestBlock")) {
-
- mv = getWriter().visitMethod(ACC_PUBLIC, "harvestBlock", "(L"+aWorld+";L"+aEntityPlayer+";IIII)V", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(544, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitVarInsn(ILOAD, 4);
- mv.visitVarInsn(ILOAD, 5);
- mv.visitVarInsn(ILOAD, 6);
- mv.visitMethodInsn(INVOKESPECIAL, "gregtech/api/items/GT_Generic_Block", "harvestBlock", "(L"+aWorld+";L"+aEntityPlayer+";IIII)V", false);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(545, l1);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitVarInsn(ILOAD, 4);
- mv.visitVarInsn(ILOAD, 5);
- mv.visitMethodInsn(INVOKEVIRTUAL, ""+aWorld+"", "setBlockToAir", "(III)Z", false);
- mv.visitInsn(POP);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(546, l2);
- mv.visitInsn(RETURN);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLocalVariable("this", "Lgregtech/common/blocks/GT_Block_Machines;", null, l0, l3, 0);
- mv.visitLocalVariable("aWorld", "L"+aWorld+";", null, l0, l3, 1);
- mv.visitLocalVariable("aPlayer", "L"+aEntityPlayer+";", null, l0, l3, 2);
- mv.visitLocalVariable("aX", "I", null, l0, l3, 3);
- mv.visitLocalVariable("aY", "I", null, l0, l3, 4);
- mv.visitLocalVariable("aZ", "I", null, l0, l3, 5);
- mv.visitLocalVariable("aMeta", "I", null, l0, l3, 6);
- mv.visitMaxs(7, 7);
- mv.visitEnd();
- didInject = true;
-
- }
- FMLRelaunchLog.log("[GT++ ASM] Gregtech NBT Persistency Patch", Level.INFO, "Method injection complete.");
- return didInject;
- }
-
- public static final class localClassVisitor extends ClassVisitor {
-
- public localClassVisitor(ClassVisitor cv) {
- super(ASM5, cv);
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- if (name.equals("removedByPlayer")) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech NBT Persistency Patch", Level.INFO, "Found method "+name+", skipping patch.");
- isNbtPersistencyPatchAlreadyApplied = true;
- }
- if (name.equals("harvestBlock")) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech NBT Persistency Patch", Level.INFO, "Found method "+name+", skipping patch.");
- isNbtPersistencyPatchAlreadyApplied = true;
- }
- MethodVisitor methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- return methodVisitor;
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_CharcoalPit.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_CharcoalPit.java
deleted file mode 100644
index 1e54bd3632..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_CharcoalPit.java
+++ /dev/null
@@ -1,184 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import java.util.ArrayList;
-
-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 cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gregtech.api.enums.OrePrefixes;
-import gregtech.api.util.GT_Utility;
-import gtPlusPlus.core.util.minecraft.ItemUtils;
-import gtPlusPlus.core.util.reflect.ReflectionUtils;
-import net.minecraft.block.Block;
-import net.minecraft.item.ItemStack;
-import net.minecraftforge.oredict.OreDictionary;
-
-public class ClassTransformer_GT_CharcoalPit {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- public static boolean isWoodLog(Block log) {
- return isWoodLog(log, Short.MAX_VALUE);
- }
-
- public static boolean isWoodLog(Block log, int meta) {
- ItemStack aLogStack = ItemUtils.getSimpleStack(log, meta, 1);
- ArrayList<ItemStack> aData = OrePrefixes.log.mPrefixedItems;
- for (ItemStack aStack : aData) {
- if (GT_Utility.areStacksEqual(aStack, aLogStack)) {
- return true;
- }
- }
- aData.clear();
- aData = OreDictionary.getOres("logWood");
- for (ItemStack aStack : aData) {
- if (GT_Utility.areStacksEqual(aStack, aLogStack)) {
- return true;
- }
- }
- return false;
- }
-
- public ClassTransformer_GT_CharcoalPit(byte[] basicClass, boolean obfuscated) {
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
- boolean aBadTime = false;
- if (ReflectionUtils.doesClassExist("aji")) {
- obfuscated = true;
- }
- else {
- if (ReflectionUtils.doesClassExist("net.minecraft.block.Block")) {
- obfuscated = false;
- }
- else {
- // Bad... Like.. very bad..
- FMLRelaunchLog.log("[GT++ ASM] GT Charcoal Pit Fix", Level.INFO, "Unable to find Block.class/aji.class, this is BAD. Not Patching.");
- }
- }
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- if (!aBadTime) {
- aTempReader.accept(new CustomClassVisitor(aTempWriter), 0);
- injectMethod("isWoodLog", obfuscated, aTempWriter);
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- } else {
- isValid = false;
- }
- }
- else {
- isValid = false;
- }
- FMLRelaunchLog.log("[GT++ ASM] GT Charcoal Pit Fix", 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 injectMethod(String aMethodName, boolean obfuscated, ClassWriter cw) {
- MethodVisitor mv;
- boolean didInject = false;
- FMLRelaunchLog.log("[GT++ ASM] GT Charcoal Pit Fix", Level.INFO, "Injecting " + aMethodName + ".");
-
- String aBlockClassName = "net/minecraft/block/Block";
- if (obfuscated) {
- aBlockClassName = "aji";
- }
- if (aMethodName.equals("isWoodLog")) {
-
- // Inject original Method with only block arg.
- mv = cw.visitMethod(ACC_PUBLIC, "isWoodLog", "(L"+aBlockClassName+";)Z", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(197, l0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_CharcoalPit", "isWoodLog", "(L"+aBlockClassName+";)Z", false);
- mv.visitInsn(IRETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("this", "Lgregtech/common/tileentities/machines/multi/GT_MetaTileEntity_Charcoal_Pit;", null, l0, l1, 0);
- mv.visitLocalVariable("log", "L"+aBlockClassName+";", null, l0, l1, 1);
- mv.visitMaxs(1, 2);
- mv.visitEnd();
-
-
- // Inject better Method with block & meta arg.
- mv = cw.visitMethod(ACC_PUBLIC, "isWoodLog", "(L"+aBlockClassName+";I)Z", null, null);
- mv.visitCode();
- Label label0 = new Label();
- mv.visitLabel(label0);
- mv.visitLineNumber(201, label0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_CharcoalPit", "isWoodLog", "(L"+aBlockClassName+";I)Z", false);
- mv.visitInsn(IRETURN);
- Label label1 = new Label();
- mv.visitLabel(label1);
- mv.visitLocalVariable("this", "Lgregtech/common/tileentities/machines/multi/GT_MetaTileEntity_Charcoal_Pit;", null, label0, label1, 0);
- mv.visitLocalVariable("log", "L"+aBlockClassName+";", null, label0, label1, 1);
- mv.visitLocalVariable("meta", "I", null, label0, label1, 2);
- mv.visitMaxs(2, 3);
- mv.visitEnd();
-
- didInject = true;
-
- }
- FMLRelaunchLog.log("[GT++ ASM] GT Charcoal Pit Fix", Level.INFO, "Method injection complete.");
- return didInject;
- }
-
- public class CustomClassVisitor extends ClassVisitor {
-
- public CustomClassVisitor(ClassVisitor cv) {
- super(ASM5, cv);
- this.cv = cv;
- }
-
- private final String[] aMethodsToStrip = new String[] { "isWoodLog" };
-
- @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;
- break;
- }
- }
- if (!found) {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- } else {
- methodVisitor = null;
- }
- if (found) {
- FMLRelaunchLog.log("[GT++ ASM] GT Charcoal Pit Fix", Level.INFO, "Found method " + name + ", removing.");
- }
- return methodVisitor;
- }
-
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Client.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Client.java
deleted file mode 100644
index e2d34c38e7..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Client.java
+++ /dev/null
@@ -1,410 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-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.INVOKESPECIAL;
-import static org.objectweb.asm.Opcodes.INVOKESTATIC;
-import static org.objectweb.asm.Opcodes.RETURN;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.UUID;
-import java.util.jar.JarEntry;
-import java.util.jar.JarInputStream;
-
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.AnnotationVisitor;
-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 com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Maps;
-import com.google.common.reflect.ClassPath;
-import com.google.common.reflect.ClassPath.ClassInfo;
-
-import cpw.mods.fml.common.gameevent.TickEvent.Phase;
-import cpw.mods.fml.common.gameevent.TickEvent.PlayerTickEvent;
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gregtech.api.GregTech_API;
-import gregtech.api.util.GT_Log;
-import gregtech.api.util.GT_PlayedSound;
-import gregtech.api.util.GT_Recipe;
-import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
-import gregtech.api.util.GT_Utility;
-import gtPlusPlus.api.objects.Logger;
-import gtPlusPlus.core.util.minecraft.ItemUtils;
-import gtPlusPlus.xmod.gregtech.common.StaticFields59;
-import gtPlusPlus.xmod.gregtech.loaders.misc.AssLineAchievements;
-import net.minecraft.client.Minecraft;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.ItemStack;
-import net.minecraft.stats.StatFileWriter;
-
-public class ClassTransformer_GT_Client {
-
- private final boolean valid;
- private final ClassReader read;
- private final ClassWriter write;
- private boolean mModern = true;
- private boolean mObfuscated = true;
- private byte[] mTooledClass;
-
- public ClassTransformer_GT_Client(byte[] basicClass, boolean obfuscated) {
-
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- mObfuscated = obfuscated;
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
-
- /**
- * Let's just read the GT archive for some info
- */
- //mModern = findAssemblyLineClass();
- //FMLRelaunchLog.log("[GT++ ASM] Gregtech Client Proxy Patch", Level.INFO, "Found Assembly Line? "+mModern+".");
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Client Proxy Patch", Level.INFO, "Fixing Issues in vanilla GT.");
- if (mModern) {
- aTempReader.accept(new MethodAdaptor2(aTempWriter), 0);
- //FMLRelaunchLog.log("[GT++ ASM] Gregtech Client Proxy Patch", Level.INFO, "Patching Client handling of Assembly Line recipe visibility for GT 5.09");
- //injectMethod(aTempWriter, "onPlayerTickEventClient");
- injectMethod(aTempWriter, "onPostLoad");
- if (aTempReader != null && aTempWriter != null) {
- valid = true;
- mTooledClass = aTempWriter.toByteArray();
- }
- else {
- valid = false;
- }
- }
- else {
- mTooledClass = basicClass;
- valid = true;
- }
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Client Proxy Patch", Level.INFO, "Valid? "+valid+".");
- read = aTempReader;
- write = aTempWriter;
- }
-
- public boolean isValidTransformer() {
- return valid;
- }
-
- public ClassReader getReader() {
- return read;
- }
-
- public ClassWriter getWriter() {
- return write;
- }
-
- public boolean findAssemblyLineClass() {
- ClassLoader cl = getClass().getClassLoader();
- try {
- Set<ClassPath.ClassInfo> classesInPackage = ClassPath.from(cl).getTopLevelClassesRecursive("gregtech");
- if (classesInPackage != null && classesInPackage.size() > 0) {
- for (ClassInfo x : classesInPackage) {
- if (x.getResourceName().contains("GT_MetaTileEntity_AssemblyLine")) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Client Proxy Patch", Level.INFO,
- "Patchable class | " + x.getResourceName());
- return true;
- }
- }
- }
- } catch (IOException e) {
- }
-
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Client Proxy Patch", Level.INFO, "Failed to find Gregtech classes using prefered method, using backup.");
-
- cl = ClassLoader.getSystemClassLoader();
- ImmutableMap<File, ClassLoader> g = getClassPathEntries(cl);
- File aGregtech = null;
- if (g.size() > 0) {
- for (int i = 0; i < g.size(); i++) {
- String aName;
- try {
- File aF = g.keySet().asList().get(i);
- aName = aF.getName();
- if (aName != null && aName.length() > 0) {
- if (aName.toLowerCase().contains("gregtech")) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Client Proxy Patch", Level.INFO, "Patchable class | "+aName);
- aGregtech = aF;
- }
- }
- }
- catch (Throwable t) {}
- }
- }
-
- if (aGregtech != null) {
- File file = aGregtech;
- FileInputStream fis;
- JarInputStream jis;
- try {
- fis = new FileInputStream(file);
- jis = new JarInputStream(fis);
- System.out.println(jis.markSupported());
- JarEntry je;
- while((je=jis.getNextJarEntry())!=null){
- if (je.getName().contains("GT_MetaTileEntity_AssemblyLine")) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Client Proxy Patch", Level.INFO, "Patchable class | "+je.getName());
- jis.close();
- return true;
- }
- }
- if (jis != null) {
- jis.close();
- }
- return true;
- } catch (IOException e1) {
- }
- }
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Client Proxy Patch", Level.INFO, "Failed to find Gregtech classes using backup method, probably using GT 5.08");
-
- return false;
- }
-
- static ImmutableMap<File, ClassLoader> getClassPathEntries(ClassLoader classloader) {
- LinkedHashMap<File, ClassLoader> entries = Maps.newLinkedHashMap();
- // Search parent first, since it's the order ClassLoader#loadClass() uses.
- ClassLoader parent = classloader.getParent();
- if (parent != null) {
- entries.putAll(getClassPathEntries(parent));
- }
- if (classloader instanceof URLClassLoader) {
- URLClassLoader urlClassLoader = (URLClassLoader) classloader;
- for (URL entry : urlClassLoader.getURLs()) {
- if (entry.getProtocol().equals("file")) {
- File file = new File(entry.getFile());
- if (!entries.containsKey(file)) {
- entries.put(file, classloader);
- }
- }
- }
- }
- return ImmutableMap.copyOf(entries);
- }
-
- public boolean injectMethod(ClassWriter cw, String string) {
- MethodVisitor mv;
- boolean didInject = false;
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Client Proxy Patch", Level.INFO, "Injecting " + string + ". Obfuscated? "+mObfuscated);
-
- if (string.equals("onPlayerTickEventClient")) {
- /**
- * Inject new, safer code
- */
- AnnotationVisitor av0;
- /**
- * Static invocation of custom handler instead
- */
- mv = cw.visitMethod(ACC_PUBLIC, "onPlayerTickEventClient", "(Lcpw/mods/fml/common/gameevent/TickEvent$PlayerTickEvent;)V", null, null);
- av0 = mv.visitAnnotation("Lcpw/mods/fml/common/eventhandler/SubscribeEvent;", true);
- av0.visitEnd();
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(371, l0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Client", "onPlayerTickEventClient", "(Lcpw/mods/fml/common/gameevent/TickEvent$PlayerTickEvent;)V", false);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(372, l1);
- mv.visitInsn(RETURN);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLocalVariable("this", "Lgregtech/common/GT_Client;", null, l0, l2, 0);
- mv.visitLocalVariable("aEvent", "Lcpw/mods/fml/common/gameevent/TickEvent$PlayerTickEvent;", null, l0, l2, 1);
- mv.visitMaxs(1, 2);
- mv.visitEnd();
- didInject = true;
- }
- else if (string.equals("onPostLoad")) {
- mv = cw.visitMethod(ACC_PUBLIC, "onPostLoad", "()V", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(315, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESPECIAL, "gregtech/common/GT_Proxy", "onPostLoad", "()V", false);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(316, l1);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Client", "onPostLoad", "()V", false);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(317, l2);
- mv.visitInsn(RETURN);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLocalVariable("this", "Lgregtech/common/GT_Client;", null, l0, l3, 0);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- didInject = true;
- }
-
-
-
-
-
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Client Proxy Patch", Level.INFO, "Method injection complete.");
- return didInject;
-
- }
-
- public class MethodAdaptor2 extends ClassVisitor {
-
- public MethodAdaptor2(ClassVisitor cv) {
- super(ASM5, cv);
- this.cv = cv;
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- MethodVisitor methodVisitor;
- if (/*name.equals("onPlayerTickEventClient") || */name.equals("onPostLoad")) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Client Proxy Patch", Level.INFO,
- "Found method " + name + ", removing.");
- methodVisitor = null;
- }
- else {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
- return methodVisitor;
- }
- }
-
- public byte[] getByteArray() {
- if (mTooledClass != null) {
- return mTooledClass;
- }
- return getWriter().toByteArray();
- }
-
-
- private static final Map<UUID, Long> aTimeMap = new HashMap<UUID, Long>();
-
-
- public static void onPlayerTickEventClient(PlayerTickEvent aEvent) {
- if (aEvent.side.isClient() && aEvent.phase == Phase.END && !aEvent.player.isDead) {
- long aTime = 0;
- if (aTimeMap.get(aEvent.player.getUniqueID()) == null) {
- aTimeMap.put(aEvent.player.getUniqueID(), 0l);
- }
- else {
- aTime = aTimeMap.get(aEvent.player.getUniqueID()) + 1;
- aTimeMap.put(aEvent.player.getUniqueID(), aTime);
- }
- if (aTime >= 100L) {
- aTimeMap.put(aEvent.player.getUniqueID(), 0l);
- /**
- * Remove original handling
- */
- if (StaticFields59.mAssLineVisualMapNEI != null) {
- StatFileWriter tList = Minecraft.getMinecraft().thePlayer.getStatFileWriter();
- GT_Recipe_Map aAssLineNei;
- try {
- aAssLineNei = (GT_Recipe_Map) StaticFields59.mAssLineVisualMapNEI.get(null);
- for (GT_Recipe aFakeAssLineRecipe : aAssLineNei.mRecipeList) {
- String aSafeUnlocalName;
- if (aFakeAssLineRecipe.getOutput(0) == null) {
- Logger.INFO(
- "Someone tried to register an achievement for a recipe with null output. Please report this to Alkalus.");
- continue;
- }
- ItemStack aStack = aFakeAssLineRecipe.getOutput(0);
- try {
- aSafeUnlocalName = aStack.getUnlocalizedName();
- } catch (Throwable t) {
- aSafeUnlocalName = ItemUtils.getUnlocalizedItemName(aStack);
- }
- boolean aHidden = true;
- try {
- aHidden = tList.hasAchievementUnlocked(AssLineAchievements.getAchievement(aSafeUnlocalName));
- Logger.INFO("Found achievement for "+aSafeUnlocalName);
- }
- catch (NullPointerException rrr) {
- aHidden = true;
- //Logger.INFO("Exception handling achievement for "+aSafeUnlocalName);
- //rrr.printStackTrace();
- }
- aFakeAssLineRecipe.mHidden = !aHidden;
- }
- } catch (IllegalArgumentException | IllegalAccessException e) {
- }
- }
- }
-
- Iterator tKey;
- ArrayList arg5 = new ArrayList();
- tKey = GT_Utility.sPlayedSoundMap.entrySet().iterator();
-
- while (tKey.hasNext()) {
- Entry arg7 = (Entry) tKey.next();
- if (((Integer) arg7.getValue()).intValue() < 0) {
- arg5.add(arg7.getKey());
- } else {
- arg7.setValue(Integer.valueOf(((Integer) arg7.getValue()).intValue() - 1));
- }
- }
-
- Iterator arg8 = arg5.iterator();
-
- while (arg8.hasNext()) {
- GT_PlayedSound arg6 = (GT_PlayedSound) arg8.next();
- GT_Utility.sPlayedSoundMap.remove(arg6);
- }
-
- if (!GregTech_API.mServerStarted) {
- GregTech_API.mServerStarted = true;
- }
- }
- }
-
-
-
-
- /**
- * GT_Client's onPostLoad
- */
-
- public static void onPostLoad() {
- try {
- for (int i = 0; i < GregTech_API.METATILEENTITIES.length; i++) {
- try {
- if (GregTech_API.METATILEENTITIES[i] != null) {
- GregTech_API.METATILEENTITIES[i].getStackForm(1L).getTooltip((EntityPlayer) null, true);
- }
- }
- catch (Throwable t) {
- GT_Log.err.println("Error in MetaTileEntity with ID of "+i);
- t.printStackTrace(GT_Log.err);
- }
- }
- } catch (Throwable var2) {
- var2.printStackTrace();
- }
- }
-
-
-
-
-
-
-
-} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_EnergyHatchPatch.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_EnergyHatchPatch.java
deleted file mode 100644
index 83560eb6c3..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_EnergyHatchPatch.java
+++ /dev/null
@@ -1,317 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.*;
-
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gtPlusPlus.preloader.asm.ClassesToTransform;
-
-public class ClassTransformer_GT_EnergyHatchPatch {
-
- private static final String aRtgInputFormatted = ClassesToTransform.GTPP_MTE_HATCH_RTG.replace(".", "/");
- private static final String aEnergyFormatted = ClassesToTransform.GT_MTE_HATCH_ENERGY.replace(".", "/");
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
-
- public ClassTransformer_GT_EnergyHatchPatch(byte[] basicClass, String aClassName) {
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Energy Hatch Patch", Level.INFO, "Attempting to add slots capabilities to GT Energy Hatches.");
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Energy Hatch Patch", Level.INFO, "Patching "+aClassName+".");
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new localClassVisitor(aTempWriter, aClassName), 0);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- }
- else {
- isValid = false;
- }
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Energy Hatch Patch", Level.INFO, "Valid patch? "+isValid+".");
- reader = aTempReader;
- writer = aTempWriter;
-
-
- if (reader != null && writer != null) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Energy Hatch Patch", Level.INFO, "Attempting Method Injection.");
- injectMethod(aClassName);
- }
-
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
-
- public boolean injectMethod(String aClassName) {
-
- boolean didInject = false;
- MethodVisitor mv;
- ClassWriter cw = getWriter();
- int aConID = 1;
-
- //GT_MetaTileEntity_Hatch_Energy
- //Constructor
- if (aClassName.equals(ClassesToTransform.GT_MTE_HATCH_ENERGY)){
-
-
- //Constructor 1
- {
- mv = cw.visitMethod(ACC_PUBLIC, "<init>", "(ILjava/lang/String;Ljava/lang/String;II[Ljava/lang/String;)V", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(26, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitVarInsn(ILOAD, 4);
- mv.visitVarInsn(ILOAD, 5);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitInsn(ICONST_0);
- mv.visitTypeInsn(ANEWARRAY, "gregtech/api/interfaces/ITexture");
- mv.visitMethodInsn(INVOKESPECIAL, "gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch", "<init>", "(ILjava/lang/String;Ljava/lang/String;II[Ljava/lang/String;[Lgregtech/api/interfaces/ITexture;)V", false);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(27, l1);
- mv.visitInsn(RETURN);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLocalVariable("this", "Lgregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Energy;", null, l0, l2, 0);
- mv.visitLocalVariable("aID", "I", null, l0, l2, 1);
- mv.visitLocalVariable("aName", "Ljava/lang/String;", null, l0, l2, 2);
- mv.visitLocalVariable("aNameRegional", "Ljava/lang/String;", null, l0, l2, 3);
- mv.visitLocalVariable("aTier", "I", null, l0, l2, 4);
- mv.visitLocalVariable("aSlots", "I", null, l0, l2, 5);
- mv.visitLocalVariable("aDesc", "[Ljava/lang/String;", null, l0, l2, 6);
- mv.visitMaxs(8, 7);
- mv.visitEnd();
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Energy Hatch Patch", Level.INFO, "Injection new constructor "+(aConID++));
- }
-
- //Constructor 2
- {
- mv = cw.visitMethod(ACC_PUBLIC, "<init>", "(Ljava/lang/String;IILjava/lang/String;[[[Lgregtech/api/interfaces/ITexture;)V", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(30, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitMethodInsn(INVOKESPECIAL, "gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch", "<init>", "(Ljava/lang/String;IILjava/lang/String;[[[Lgregtech/api/interfaces/ITexture;)V", false);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(31, l1);
- mv.visitInsn(RETURN);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLocalVariable("this", "Lgregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Energy;", null, l0, l2, 0);
- mv.visitLocalVariable("aName", "Ljava/lang/String;", null, l0, l2, 1);
- mv.visitLocalVariable("aTier", "I", null, l0, l2, 2);
- mv.visitLocalVariable("aSlots", "I", null, l0, l2, 3);
- mv.visitLocalVariable("aDescription", "Ljava/lang/String;", null, l0, l2, 4);
- mv.visitLocalVariable("aTextures", "[[[Lgregtech/api/interfaces/ITexture;", null, l0, l2, 5);
- mv.visitMaxs(6, 6);
- mv.visitEnd();
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Energy Hatch Patch", Level.INFO, "Injection new constructor "+(aConID++));
- }
-
- //Third constructor with String[] for GT 5.09
- {
- mv = cw.visitMethod(ACC_PUBLIC, "<init>", "(Ljava/lang/String;II[Ljava/lang/String;[[[Lgregtech/api/interfaces/ITexture;)V", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(34, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitMethodInsn(INVOKESPECIAL, "gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch", "<init>", "(Ljava/lang/String;II[Ljava/lang/String;[[[Lgregtech/api/interfaces/ITexture;)V", false);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(35, l1);
- mv.visitInsn(RETURN);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLocalVariable("this", "Lgregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Energy;", null, l0, l2, 0);
- mv.visitLocalVariable("aName", "Ljava/lang/String;", null, l0, l2, 1);
- mv.visitLocalVariable("aTier", "I", null, l0, l2, 2);
- mv.visitLocalVariable("aSlots", "I", null, l0, l2, 3);
- mv.visitLocalVariable("aDescription", "[Ljava/lang/String;", null, l0, l2, 4);
- mv.visitLocalVariable("aTextures", "[[[Lgregtech/api/interfaces/ITexture;", null, l0, l2, 5);
- mv.visitMaxs(6, 6);
- mv.visitEnd();
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Energy Hatch Patch", Level.INFO, "Injection new constructor "+(aConID++));
- }
- didInject = true;
- }
-
- //GT_MetaTileEntity_Hatch_Energy_RTG
- //Constructor
- if (aClassName.equals(ClassesToTransform.GTPP_MTE_HATCH_RTG)){
-
- {
- mv = cw.visitMethod(ACC_PUBLIC, "<init>", "(ILjava/lang/String;Ljava/lang/String;II)V", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(38, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitVarInsn(ILOAD, 4);
- mv.visitVarInsn(ILOAD, 5);
- mv.visitInsn(ICONST_2);
- mv.visitTypeInsn(ANEWARRAY, "java/lang/String");
- mv.visitInsn(DUP);
- mv.visitInsn(ICONST_0);
- mv.visitLdcInsn("Energy Injector for Multiblocks");
- mv.visitInsn(AASTORE);
- mv.visitInsn(DUP);
- mv.visitInsn(ICONST_1);
- mv.visitLdcInsn("Accepts RTG pellets for Fuel");
- mv.visitInsn(AASTORE);
- mv.visitMethodInsn(INVOKESPECIAL, "gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Energy", "<init>", "(ILjava/lang/String;Ljava/lang/String;II[Ljava/lang/String;)V", false);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(39, l1);
- mv.visitInsn(RETURN);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLocalVariable("this", "LgtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Energy_RTG;", null, l0, l2, 0);
- mv.visitLocalVariable("aID", "I", null, l0, l2, 1);
- mv.visitLocalVariable("aName", "Ljava/lang/String;", null, l0, l2, 2);
- mv.visitLocalVariable("aNameRegional", "Ljava/lang/String;", null, l0, l2, 3);
- mv.visitLocalVariable("aTier", "I", null, l0, l2, 4);
- mv.visitLocalVariable("aSlots", "I", null, l0, l2, 5);
- mv.visitMaxs(10, 6);
- mv.visitEnd();
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Energy Hatch Patch", Level.INFO, "Injection new constructor "+(aConID++));
- }
- {
- mv = cw.visitMethod(ACC_PUBLIC, "<init>", "(Ljava/lang/String;IILjava/lang/String;[[[Lgregtech/api/interfaces/ITexture;)V", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(42, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitMethodInsn(INVOKESPECIAL, "gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Energy", "<init>", "(Ljava/lang/String;IILjava/lang/String;[[[Lgregtech/api/interfaces/ITexture;)V", false);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(43, l1);
- mv.visitInsn(RETURN);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLocalVariable("this", "LgtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Energy_RTG;", null, l0, l2, 0);
- mv.visitLocalVariable("aName", "Ljava/lang/String;", null, l0, l2, 1);
- mv.visitLocalVariable("aTier", "I", null, l0, l2, 2);
- mv.visitLocalVariable("aSlots", "I", null, l0, l2, 3);
- mv.visitLocalVariable("aDescription", "Ljava/lang/String;", null, l0, l2, 4);
- mv.visitLocalVariable("aTextures", "[[[Lgregtech/api/interfaces/ITexture;", null, l0, l2, 5);
- mv.visitMaxs(6, 6);
- mv.visitEnd();
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Energy Hatch Patch", Level.INFO, "Injection new constructor "+(aConID++));
- }
- {
- mv = cw.visitMethod(ACC_PUBLIC, "<init>", "(Ljava/lang/String;II[Ljava/lang/String;[[[Lgregtech/api/interfaces/ITexture;)V", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(46, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitMethodInsn(INVOKESPECIAL, "gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Energy", "<init>", "(Ljava/lang/String;II[Ljava/lang/String;[[[Lgregtech/api/interfaces/ITexture;)V", false);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(47, l1);
- mv.visitInsn(RETURN);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLocalVariable("this", "LgtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Energy_RTG;", null, l0, l2, 0);
- mv.visitLocalVariable("aName", "Ljava/lang/String;", null, l0, l2, 1);
- mv.visitLocalVariable("aTier", "I", null, l0, l2, 2);
- mv.visitLocalVariable("aSlots", "I", null, l0, l2, 3);
- mv.visitLocalVariable("aDescription", "[Ljava/lang/String;", null, l0, l2, 4);
- mv.visitLocalVariable("aTextures", "[[[Lgregtech/api/interfaces/ITexture;", null, l0, l2, 5);
- mv.visitMaxs(6, 6);
- mv.visitEnd();
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Energy Hatch Patch", Level.INFO, "Injection new constructor "+(aConID++));
- }
-
-
- didInject = true;
- }
-
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Energy Hatch Patch", Level.INFO, "Method injection complete. Successful? "+didInject);
- return didInject;
-
- }
-
- public final class localClassVisitor extends ClassVisitor {
-
- private final String mClassName;
-
- public localClassVisitor(ClassVisitor cv, String aClassName) {
- super(ASM5, cv);
- mClassName = aClassName;
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- MethodVisitor methodVisitor = null;
- if ((mClassName.equals(ClassesToTransform.GTPP_MTE_HATCH_RTG)) && access == ACC_PUBLIC && name.equals("<init>") && (desc.equals("(Ljava/lang/String;ILjava/lang/String;[[[Lgregtech/api/interfaces/ITexture;)V") || desc.equals("(Ljava/lang/String;I[Ljava/lang/String;[[[Lgregtech/api/interfaces/ITexture;)V"))) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Energy Hatch Patch", Level.INFO, "Found Constructor, "+"'"+access+"', "+"'"+name+"', "+"'"+desc+"', "+"'"+signature+"'");
- methodVisitor = null;
- }
- else {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
- if (methodVisitor == null) {
- if (mClassName.equals(ClassesToTransform.GT_MTE_HATCH_ENERGY)){
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Energy Hatch Patch", Level.INFO, "Removed method from "+mClassName);
- }
- else {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Energy Hatch Patch", Level.INFO, "Removed Constructor with descriptor '"+desc+"' from "+mClassName);
- }
- }
- return methodVisitor;
- }
- }
-
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_ItemMachines_Tooltip.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_ItemMachines_Tooltip.java
deleted file mode 100644
index 4b2a10df07..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_ItemMachines_Tooltip.java
+++ /dev/null
@@ -1,139 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import java.io.IOException;
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.Label;
-import org.objectweb.asm.MethodVisitor;
-
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gtPlusPlus.preloader.DevHelper;
-
-public class ClassTransformer_GT_ItemMachines_Tooltip {
-
- //The qualified name of the class we plan to transform.
- private static final String className = "gregtech.common.blocks.GT_Item_Machines";
- //gregtech/common/blocks/GT_Item_Machines
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- String aEntityPlayer;
- String aItemStack;
- String aWorld;
-
- private static boolean doesMethodAlreadyExist = false;
-
- public ClassTransformer_GT_ItemMachines_Tooltip(byte[] basicClass, boolean obfuscated) {
-
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new localClassVisitor(aTempWriter), 0);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- }
- else {
- isValid = false;
- }
- reader = aTempReader;
- writer = aTempWriter;
-
- if (reader != null && writer != null && !doesMethodAlreadyExist) {
- aEntityPlayer = obfuscated ? DevHelper.getObfuscated("net/minecraft/entity/player/EntityPlayer") : "net/minecraft/entity/player/EntityPlayer";
- aItemStack = obfuscated ? DevHelper.getObfuscated("net/minecraft/item/ItemStack") : "net/minecraft/item/ItemStack";
- aWorld = obfuscated ? DevHelper.getObfuscated("net/minecraft/world/World") : "net/minecraft/world/World";
-
- injectMethod("addInformation");
- }
-
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public void injectMethod(String aMethodName) {
- MethodVisitor mv;
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Tooltip Patch", Level.INFO, "Injecting "+aMethodName+" into "+className+".");
- if (aMethodName.equals("addInformation")) {
-
- mv = getWriter().visitMethod(ACC_PUBLIC, "addInformation", "(L"+aItemStack+";L"+aEntityPlayer+";Ljava/util/List;Z)V", null, null);
- mv.visitCode();
- Label l0 = new Label();
- Label l1 = new Label();
- Label l2 = new Label();
- mv.visitTryCatchBlock(l0, l1, l2, "java/lang/Throwable");
- mv.visitLabel(l0);
- mv.visitLineNumber(120, l0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitVarInsn(ILOAD, 4);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/xmod/gregtech/common/Meta_GT_Proxy", "conStructGtTileBlockTooltip", "(L"+aItemStack+";L"+aEntityPlayer+";Ljava/util/List;Z)V", false);
- mv.visitLabel(l1);
- mv.visitLineNumber(121, l1);
- Label l3 = new Label();
- mv.visitJumpInsn(GOTO, l3);
- mv.visitLabel(l2);
- mv.visitFrame(F_SAME1, 0, null, 1, new Object[] {"java/lang/Throwable"});
- mv.visitVarInsn(ASTORE, 5);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(122, l4);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/util/GT_Log", "err", "Ljava/io/PrintStream;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Throwable", "printStackTrace", "(Ljava/io/PrintStream;)V", false);
- mv.visitLabel(l3);
- mv.visitLineNumber(124, l3);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitInsn(RETURN);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLocalVariable("this", "Lgregtech/common/blocks/GT_Item_Machines;", null, l0, l5, 0);
- mv.visitLocalVariable("aStack", "L"+aItemStack+";", null, l0, l5, 1);
- mv.visitLocalVariable("aPlayer", "L"+aEntityPlayer+";", null, l0, l5, 2);
- mv.visitLocalVariable("aList", "Ljava/util/List;", null, l0, l5, 3);
- mv.visitLocalVariable("par4", "Z", null, l0, l5, 4);
- mv.visitLocalVariable("e", "Ljava/lang/Throwable;", null, l4, l3, 5);
- mv.visitMaxs(4, 6);
- mv.visitEnd();
-}
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Tooltip Patch", Level.INFO, "Method injection complete.");
-
- }
-
- public static final class localClassVisitor extends ClassVisitor {
-
- public localClassVisitor(ClassVisitor cv) {
- super(ASM5, cv);
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- if (name.equals("addInformation")) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Tooltip Patch", Level.INFO, "Found method "+name+", Patching.");
- return null;
- }
- MethodVisitor methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- return methodVisitor;
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_MetaGenerated_Tool.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_MetaGenerated_Tool.java
deleted file mode 100644
index b6cd9c8d67..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_MetaGenerated_Tool.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.ACC_FINAL;
-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.INVOKESTATIC;
-import static org.objectweb.asm.Opcodes.RETURN;
-
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.AnnotationVisitor;
-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 gtPlusPlus.preloader.Preloader_Logger;
-
-public class ClassTransformer_GT_MetaGenerated_Tool {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- public ClassTransformer_GT_MetaGenerated_Tool(byte[] basicClass) {
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new LocalClassVisitor(aTempWriter), 0);
- boolean completed = injectMethod("getSubItems", aTempWriter);
- if (aTempReader != null && aTempWriter != null && completed) {
- isValid = true;
- } else {
- isValid = false;
- }
- Preloader_Logger.LOG("GT Tool Fix", 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 injectMethod(String aMethodName, ClassWriter cw) {
- MethodVisitor mv;
- boolean didInject = false;
- Preloader_Logger.LOG("GT Tool Fix", Level.INFO, "Injecting " + aMethodName + ".");
- if (aMethodName.equals("getSubItems")) {
- {
- mv = cw.visitMethod(ACC_PUBLIC + ACC_FINAL, "getSubItems", "(Lnet/minecraft/item/Item;Lnet/minecraft/creativetab/CreativeTabs;Ljava/util/List;)V", null, null);
- {
- AnnotationVisitor av0 = mv.visitAnnotation("Lcpw/mods/fml/relauncher/SideOnly;", true);
- av0.visitEnum("value", "Lcpw/mods/fml/relauncher/Side;", "CLIENT");
- av0.visitEnd();
- }
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(321, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/helpers/MethodHelper_GT", "getSubItems", "(Lgregtech/api/items/GT_MetaGenerated_Tool;Lnet/minecraft/item/Item;Lnet/minecraft/creativetab/CreativeTabs;Ljava/util/List;)V", false);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(322, l1);
- mv.visitInsn(RETURN);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLocalVariable("this", "Lgregtech/api/items/GT_MetaGenerated_Tool;", null, l0, l2, 0);
- mv.visitLocalVariable("var1", "Lnet/minecraft/item/Item;", null, l0, l2, 1);
- mv.visitLocalVariable("aCreativeTab", "Lnet/minecraft/creativetab/CreativeTabs;", null, l0, l2, 2);
- mv.visitLocalVariable("aList", "Ljava/util/List;", null, l0, l2, 3);
- mv.visitMaxs(4, 4);
- mv.visitEnd();
- didInject = true;
- }
-
- }
- Preloader_Logger.LOG("GT Tool Fix", Level.INFO, "Method injection complete.");
- return didInject;
- }
-
- public final class LocalClassVisitor extends ClassVisitor {
-
- public LocalClassVisitor(ClassVisitor cv) {
- super(ASM5, cv);
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- MethodVisitor methodVisitor;
- if (name.equals("getSubItems") && desc.equals("(Lnet/minecraft/item/Item;Lnet/minecraft/creativetab/CreativeTabs;Ljava/util/List;)V")) {
- methodVisitor = null;
- Preloader_Logger.LOG("GT Tool Fix", Level.INFO, "Found method "+name+", removing.");
- }
- else {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
- return methodVisitor;
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Packet_TileEntity.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Packet_TileEntity.java
deleted file mode 100644
index 1f281ce492..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Packet_TileEntity.java
+++ /dev/null
@@ -1,319 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-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 cpw.mods.fml.relauncher.FMLRelaunchLog;
-
-public class ClassTransformer_GT_Packet_TileEntity {
-
- //The qualified name of the class we plan to transform.
- //gregtech/common/blocks/GT_Block_Machines
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
-
- public ClassTransformer_GT_Packet_TileEntity(byte[] basicClass, boolean obfuscated) {
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- FMLRelaunchLog.log("[GT++ ASM] Gregtech GT_Packet_TileEntity Patch", Level.INFO, "Attempting to make GT Packets safer.");
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new localClassVisitor(aTempWriter), 0);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- }
- else {
- isValid = false;
- }
- FMLRelaunchLog.log("[GT++ ASM] Gregtech GT_Packet_TileEntity Patch", Level.INFO, "Valid patch? "+isValid+".");
- reader = aTempReader;
- writer = aTempWriter;
-
-
- if (reader != null && writer != null) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech GT_Packet_TileEntity Patch", Level.INFO, "Attempting Method Injection.");
- injectMethod("process", obfuscated);
- }
-
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public boolean injectMethod(String aMethodName, boolean obfuscated) {
- MethodVisitor mv;
- boolean didInject = false;
- String aGetTile = obfuscated ? "func_147438_o" : "getTileEntity";
-
- FMLRelaunchLog.log("[GT++ ASM] Gregtech GT_Packet_TileEntity Patch", Level.INFO, "Injecting "+aMethodName+".");
- if (aMethodName.equals("process")) {
- mv = getWriter().visitMethod(ACC_PUBLIC, "process", "(Lnet/minecraft/world/IBlockAccess;)V", null, null);
- mv.visitCode();
- Label l0 = new Label();
- Label l1 = new Label();
- Label l2 = new Label();
- mv.visitTryCatchBlock(l0, l1, l2, "java/lang/Throwable");
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(93, l3);
- mv.visitVarInsn(ALOAD, 1);
- Label l4 = new Label();
- mv.visitJumpInsn(IFNULL, l4);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(94, l5);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mX", "I");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mY", "S");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mZ", "I");
- mv.visitMethodInsn(INVOKEINTERFACE, "net/minecraft/world/IBlockAccess", ""+aGetTile+"", "(III)Lnet/minecraft/tileentity/TileEntity;", true);
- mv.visitVarInsn(ASTORE, 2);
- Label l6 = new Label();
- mv.visitLabel(l6);
- mv.visitLineNumber(95, l6);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitJumpInsn(IFNULL, l4);
- mv.visitLabel(l0);
- mv.visitLineNumber(97, l0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitTypeInsn(INSTANCEOF, "gregtech/api/metatileentity/BaseMetaTileEntity");
- Label l7 = new Label();
- mv.visitJumpInsn(IFEQ, l7);
- Label l8 = new Label();
- mv.visitLabel(l8);
- mv.visitLineNumber(98, l8);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitTypeInsn(CHECKCAST, "gregtech/api/metatileentity/BaseMetaTileEntity");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mID", "S");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mC0", "I");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mC1", "I");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mC2", "I");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mC3", "I");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mC4", "I");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mC5", "I");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mTexture", "B");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mTexturePage", "B");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mUpdate", "B");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mRedstone", "B");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mColor", "B");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/metatileentity/BaseMetaTileEntity", "receiveMetaTileEntityData", "(SIIIIIIBBBBB)V", false);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(99, l9);
- mv.visitJumpInsn(GOTO, l4);
- mv.visitLabel(l7);
- mv.visitLineNumber(101, l7);
- mv.visitFrame(F_APPEND,1, new Object[] {"net/minecraft/tileentity/TileEntity"}, 0, null);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitTypeInsn(INSTANCEOF, "gregtech/api/metatileentity/BaseMetaPipeEntity");
- mv.visitJumpInsn(IFEQ, l4);
- Label l10 = new Label();
- mv.visitLabel(l10);
- mv.visitLineNumber(102, l10);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitTypeInsn(CHECKCAST, "gregtech/api/metatileentity/BaseMetaPipeEntity");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mID", "S");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mC0", "I");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mC1", "I");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mC2", "I");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mC3", "I");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mC4", "I");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mC5", "I");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mTexture", "B");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mUpdate", "B");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mRedstone", "B");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mColor", "B");
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/metatileentity/BaseMetaPipeEntity", "receiveMetaTileEntityData", "(SIIIIIIBBBB)V", false);
- mv.visitLabel(l1);
- mv.visitLineNumber(104, l1);
- mv.visitJumpInsn(GOTO, l4);
- mv.visitLabel(l2);
- mv.visitLineNumber(105, l2);
- mv.visitFrame(F_SAME1, 0, null, 1, new Object[] {"java/lang/Throwable"});
- mv.visitVarInsn(ASTORE, 3);
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLineNumber(106, l11);
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/util/GT_Log", "err", "Ljava/io/PrintStream;");
- mv.visitTypeInsn(NEW, "java/lang/StringBuilder");
- mv.visitInsn(DUP);
- mv.visitLdcInsn("[GTPTE] Bad Tile Entity set in world, your game would have crashed if not for me! Was Null? ");
- mv.visitMethodInsn(INVOKESPECIAL, "java/lang/StringBuilder", "<init>", "(Ljava/lang/String;)V", false);
- mv.visitVarInsn(ALOAD, 2);
- Label l12 = new Label();
- mv.visitJumpInsn(IFNONNULL, l12);
- mv.visitInsn(ICONST_1);
- Label l13 = new Label();
- mv.visitJumpInsn(GOTO, l13);
- mv.visitLabel(l12);
- mv.visitFrame(F_FULL, 4, new Object[] {"gregtech/api/net/GT_Packet_TileEntity", "net/minecraft/world/IBlockAccess", "net/minecraft/tileentity/TileEntity", "java/lang/Throwable"}, 2, new Object[] {"java/io/PrintStream", "java/lang/StringBuilder"});
- mv.visitInsn(ICONST_0);
- mv.visitLabel(l13);
- mv.visitFrame(F_FULL, 4, new Object[] {"gregtech/api/net/GT_Packet_TileEntity", "net/minecraft/world/IBlockAccess", "net/minecraft/tileentity/TileEntity", "java/lang/Throwable"}, 3, new Object[] {"java/io/PrintStream", "java/lang/StringBuilder", INTEGER});
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Z)Ljava/lang/StringBuilder;", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "toString", "()Ljava/lang/String;", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false);
- Label l14 = new Label();
- mv.visitLabel(l14);
- mv.visitLineNumber(107, l14);
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/util/GT_Log", "err", "Ljava/io/PrintStream;");
- mv.visitTypeInsn(NEW, "java/lang/StringBuilder");
- mv.visitInsn(DUP);
- mv.visitLdcInsn("Tile location [");
- mv.visitMethodInsn(INVOKESPECIAL, "java/lang/StringBuilder", "<init>", "(Ljava/lang/String;)V", false);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mX", "I");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(I)Ljava/lang/StringBuilder;", false);
- mv.visitLdcInsn("][");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;", false);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mY", "S");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(I)Ljava/lang/StringBuilder;", false);
- mv.visitLdcInsn("][");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;", false);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/net/GT_Packet_TileEntity", "mZ", "I");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(I)Ljava/lang/StringBuilder;", false);
- mv.visitLdcInsn("]");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "toString", "()Ljava/lang/String;", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false);
- Label l15 = new Label();
- mv.visitLabel(l15);
- mv.visitLineNumber(108, l15);
- mv.visitVarInsn(ALOAD, 2);
- Label l16 = new Label();
- mv.visitJumpInsn(IFNULL, l16);
- Label l17 = new Label();
- mv.visitLabel(l17);
- mv.visitLineNumber(109, l17);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitTypeInsn(INSTANCEOF, "gregtech/api/metatileentity/BaseMetaPipeEntity");
- Label l18 = new Label();
- mv.visitJumpInsn(IFEQ, l18);
- Label l19 = new Label();
- mv.visitLabel(l19);
- mv.visitLineNumber(110, l19);
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/util/GT_Log", "err", "Ljava/io/PrintStream;");
- mv.visitLdcInsn("Type: Pipe");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false);
- Label l20 = new Label();
- mv.visitLabel(l20);
- mv.visitLineNumber(111, l20);
- mv.visitJumpInsn(GOTO, l16);
- mv.visitLabel(l18);
- mv.visitLineNumber(112, l18);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitTypeInsn(INSTANCEOF, "gregtech/api/metatileentity/BaseMetaTileEntity");
- Label l21 = new Label();
- mv.visitJumpInsn(IFEQ, l21);
- Label l22 = new Label();
- mv.visitLabel(l22);
- mv.visitLineNumber(113, l22);
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/util/GT_Log", "err", "Ljava/io/PrintStream;");
- mv.visitLdcInsn("Type: Machine");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false);
- Label l23 = new Label();
- mv.visitLabel(l23);
- mv.visitLineNumber(114, l23);
- mv.visitJumpInsn(GOTO, l16);
- mv.visitLabel(l21);
- mv.visitLineNumber(116, l21);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/util/GT_Log", "err", "Ljava/io/PrintStream;");
- mv.visitLdcInsn("Type: Non-GT (Could be GT++/TT/BW)");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false);
- mv.visitLabel(l16);
- mv.visitLineNumber(119, l16);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Throwable", "printStackTrace", "()V", false);
- mv.visitLabel(l4);
- mv.visitLineNumber(123, l4);
- mv.visitFrame(F_CHOP,2, null, 0, null);
- mv.visitInsn(RETURN);
- Label l24 = new Label();
- mv.visitLabel(l24);
- mv.visitLocalVariable("this", "Lgregtech/api/net/GT_Packet_TileEntity;", null, l3, l24, 0);
- mv.visitLocalVariable("aWorld", "Lnet/minecraft/world/IBlockAccess;", null, l3, l24, 1);
- mv.visitLocalVariable("tTileEntity", "Lnet/minecraft/tileentity/TileEntity;", null, l6, l4, 2);
- mv.visitLocalVariable("t", "Ljava/lang/Throwable;", null, l11, l4, 3);
- mv.visitMaxs(13, 4);
- mv.visitEnd();
-
-
- didInject = true;
- }
- FMLRelaunchLog.log("[GT++ ASM] Gregtech GT_Packet_TileEntity Patch", Level.INFO, "Method injection complete.");
- return didInject;
- }
-
- public final class localClassVisitor extends ClassVisitor {
-
- public localClassVisitor(ClassVisitor cv) {
- super(ASM5, cv);
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- MethodVisitor methodVisitor;
- if (name.equals("process")) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech GT_Packet_TileEntity Patch", Level.INFO, "Found method "+name+", removing.");
- methodVisitor = null;
- }
- else {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
- return methodVisitor;
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Utility.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Utility.java
deleted file mode 100644
index fa711e5693..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Utility.java
+++ /dev/null
@@ -1,283 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-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 gtPlusPlus.core.util.Utils;
-import gtPlusPlus.preloader.Preloader_Logger;
-import ic2.core.IC2Potion;
-import ic2.core.item.armor.ItemArmorHazmat;
-import net.minecraft.entity.EntityLivingBase;
-import net.minecraft.entity.EnumCreatureAttribute;
-import net.minecraft.potion.Potion;
-import net.minecraft.potion.PotionEffect;
-
-public class ClassTransformer_GT_Utility {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
- private final String className;
-
-
-
- public ClassTransformer_GT_Utility(byte[] basicClass, String aClassName) {
-
- className = aClassName;
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new localClassVisitor(aTempWriter, className), 0);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- } else {
- isValid = false;
- }
-
- Preloader_Logger.LOG("Gregtech Utilities Patch", Level.INFO, "Valid patch? " + isValid + ".");
- reader = aTempReader;
- writer = aTempWriter;
-
- if (reader != null && writer != null) {
- Preloader_Logger.LOG("Gregtech Utilities Patch", Level.INFO, "Attempting Method Injection.");
- injectMethod("getTier");
- injectMethod("applyRadioactivity");
- injectMethod("isWearingFullFrostHazmat");
- injectMethod("isWearingFullHeatHazmat");
- injectMethod("isWearingFullBioHazmat");
- injectMethod("isWearingFullRadioHazmat");
- injectMethod("isWearingFullElectroHazmat");
- injectMethod("isWearingFullGasHazmat");
- }
-
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public boolean injectMethod(String aMethodName) {
- MethodVisitor mv;
- boolean didInject = false;
- ClassWriter cw = getWriter();
- String aClassNameFormatted = Utils.class.getName().replace(".", "/");
-
- if (aMethodName.equals("isWearingFullFrostHazmat")){
- Preloader_Logger.LOG("Gregtech Utilities Patch", Level.INFO, "Injecting " + aMethodName + ".");
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "isWearingFullFrostHazmat", "(Lnet/minecraft/entity/EntityLivingBase;)Z", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(1273, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/EntityUtils", "isWearingFullFrostHazmat", "(Lnet/minecraft/entity/EntityLivingBase;)Z", false);
- mv.visitInsn(IRETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l1, 0);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- didInject = true;
- }
-
- if (aMethodName.equals("isWearingFullHeatHazmat")){
- Preloader_Logger.LOG("Gregtech Utilities Patch", Level.INFO, "Injecting " + aMethodName + ".");
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "isWearingFullHeatHazmat", "(Lnet/minecraft/entity/EntityLivingBase;)Z", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(1277, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/EntityUtils", "isWearingFullHeatHazmat", "(Lnet/minecraft/entity/EntityLivingBase;)Z", false);
- mv.visitInsn(IRETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l1, 0);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- didInject = true;
- }
-
- if (aMethodName.equals("isWearingFullBioHazmat")){
- Preloader_Logger.LOG("Gregtech Utilities Patch", Level.INFO, "Injecting " + aMethodName + ".");
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "isWearingFullBioHazmat", "(Lnet/minecraft/entity/EntityLivingBase;)Z", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(1281, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/EntityUtils", "isWearingFullBioHazmat", "(Lnet/minecraft/entity/EntityLivingBase;)Z", false);
- mv.visitInsn(IRETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l1, 0);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- didInject = true;
- }
-
- if (aMethodName.equals("isWearingFullRadioHazmat")){
- Preloader_Logger.LOG("Gregtech Utilities Patch", Level.INFO, "Injecting " + aMethodName + ".");
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "isWearingFullRadioHazmat", "(Lnet/minecraft/entity/EntityLivingBase;)Z", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(1285, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/EntityUtils", "isWearingFullRadioHazmat", "(Lnet/minecraft/entity/EntityLivingBase;)Z", false);
- mv.visitInsn(IRETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l1, 0);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- didInject = true;
- }
-
- if (aMethodName.equals("isWearingFullElectroHazmat")){
- Preloader_Logger.LOG("Gregtech Utilities Patch", Level.INFO, "Injecting " + aMethodName + ".");
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "isWearingFullElectroHazmat", "(Lnet/minecraft/entity/EntityLivingBase;)Z", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(1289, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/EntityUtils", "isWearingFullElectroHazmat", "(Lnet/minecraft/entity/EntityLivingBase;)Z", false);
- mv.visitInsn(IRETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l1, 0);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- didInject = true;
- }
-
- if (aMethodName.equals("isWearingFullGasHazmat")){
- Preloader_Logger.LOG("Gregtech Utilities Patch", Level.INFO, "Injecting " + aMethodName + ".");
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "isWearingFullGasHazmat", "(Lnet/minecraft/entity/EntityLivingBase;)Z", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(1293, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/EntityUtils", "isWearingFullGasHazmat", "(Lnet/minecraft/entity/EntityLivingBase;)Z", false);
- mv.visitInsn(IRETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l1, 0);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- didInject = true;
- }
-
- if (aMethodName.equals("getTier")) {
- Preloader_Logger.LOG("Gregtech Utilities Patch", Level.INFO, "Injecting " + aMethodName + ", static replacement call to "+aClassNameFormatted+".");
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "getTier", "(J)B", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(23, l0);
- mv.visitVarInsn(LLOAD, 0);
- mv.visitMethodInsn(INVOKESTATIC, aClassNameFormatted, "getTier", "(J)B", false);
- mv.visitInsn(IRETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("l", "J", null, l0, l1, 0);
- mv.visitMaxs(2, 2);
- mv.visitEnd();
- didInject = true;
- }
-
- if (aMethodName.equals("applyRadioactivity")){
- Preloader_Logger.LOG("Gregtech Utilities Patch", Level.INFO, "Injecting " + aMethodName + ".");
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "applyRadioactivity", "(Lnet/minecraft/entity/EntityLivingBase;II)Z", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(1342, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/EntityUtils", "applyRadioactivity", "(Lnet/minecraft/entity/EntityLivingBase;II)Z", false);
- mv.visitInsn(IRETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l1, 0);
- mv.visitLocalVariable("aLevel", "I", null, l0, l1, 1);
- mv.visitLocalVariable("aAmountOfItems", "I", null, l0, l1, 2);
- mv.visitMaxs(3, 3);
- mv.visitEnd();
- didInject = true;
- }
-
- Preloader_Logger.LOG("Gregtech Utilities Patch", Level.INFO, "Method injection complete.");
- return didInject;
- }
-
- public final class localClassVisitor extends ClassVisitor {
-
- String aClassName;
-
- public localClassVisitor(ClassVisitor cv, String aName) {
- super(ASM5, cv);
- aClassName = aName;
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- MethodVisitor methodVisitor;
-
- if (name.equals("getTier")) {
- methodVisitor = null;
- }
- else if (name.equals("applyRadioactivity")){
- methodVisitor = null;
- }
- else if (name.equals("isWearingFullFrostHazmat")){
- methodVisitor = null;
- }
- else if (name.equals("isWearingFullHeatHazmat")){
- methodVisitor = null;
- }
- else if (name.equals("isWearingFullBioHazmat")){
- methodVisitor = null;
- }
- else if (name.equals("isWearingFullRadioHazmat")){
- methodVisitor = null;
- }
- else if (name.equals("isWearingFullElectroHazmat")){
- methodVisitor = null;
- }
- else if (name.equals("isWearingFullGasHazmat")){
- methodVisitor = null;
- }
- else {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
-
- if (methodVisitor == null) {
- Preloader_Logger.LOG("Gregtech Utilities Patch", Level.INFO, "Found method " + name + ", removing.");
- Preloader_Logger.LOG("Gregtech Utilities Patch", Level.INFO, "Descriptor: "+desc);
- }
- return methodVisitor;
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_GetHarvestTool.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_GetHarvestTool.java
deleted file mode 100644
index 6aad6831cb..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_GetHarvestTool.java
+++ /dev/null
@@ -1,214 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import java.util.Random;
-
-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 cpw.mods.fml.relauncher.FMLRelaunchLog;
-import net.minecraft.block.Block;
-import net.minecraft.item.Item;
-
-public class ClassTransformer_IC2_GetHarvestTool {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
- private final String className;
-
- private final String aName_getItemDropped;
- private final String aName_damageDropped;
-
- public static String getHarvestTool(int aMeta) {
- return "wrench";
- }
-
- public static Item getItemDropped(Block aBlock, int meta, Random random, int fortune) {
- return Item.getItemFromBlock(aBlock);
- }
-
- public static int damageDropped(int aMeta) {
- return aMeta;
- }
-
- public ClassTransformer_IC2_GetHarvestTool(byte[] basicClass, boolean obfuscated, String aClassName) {
- className = aClassName;
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- aName_getItemDropped = obfuscated ? "func_149650_a" : "getItemDropped";
- aName_damageDropped = obfuscated ? "func_149692_a" : "damageDropped";
-
- FMLRelaunchLog.log("[GT++ ASM] IC2 getHarvestTool Patch", Level.INFO,
- "Attempting to patch in mode " + className + ". Obfuscated? "+obfuscated);
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new localClassVisitor(aTempWriter, className), 0);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- } else {
- isValid = false;
- }
-
- FMLRelaunchLog.log("[GT++ ASM] IC2 getHarvestTool Patch", Level.INFO, "Valid patch? " + isValid + ".");
- reader = aTempReader;
- writer = aTempWriter;
-
- if (reader != null && writer != null) {
- FMLRelaunchLog.log("[GT++ ASM] IC2 getHarvestTool Patch", Level.INFO, "Attempting Method Injection.");
- injectMethod("getHarvestTool");
- if (aClassName.equals("ic2.core.block.machine.BlockMachine2")
- || aClassName.equals("ic2.core.block.machine.BlockMachine3")
- || aClassName.equals("ic2.core.block.wiring.BlockElectric")) {
- injectMethod(aName_getItemDropped);
- injectMethod(aName_damageDropped);
- }
- else if (aClassName.equals("ic2.core.block.generator.block.BlockGenerator")
- || aClassName.equals("ic2.core.block.machine.BlockMachine")) {
- injectMethod(aName_damageDropped);
- }
- }
-
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public boolean injectMethod(String aMethodName) {
- MethodVisitor mv;
- boolean didInject = false;
- String aFormattedClassName = className.replace('.', '/');
- ClassWriter cw = getWriter();
-
-
- FMLRelaunchLog.log("[GT++ ASM] IC2 getHarvestTool Patch", Level.INFO, "Injecting " + aMethodName + ".");
- if (aMethodName.equals("getHarvestTool")) {
- mv = getWriter().visitMethod(ACC_PUBLIC, "getHarvestTool", "(I)Ljava/lang/String;", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(63, l0);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitMethodInsn(INVOKESTATIC,
- "gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_GetHarvestTool", "getHarvestTool",
- "(I)Ljava/lang/String;", false);
- mv.visitInsn(ARETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("this", "L" + aFormattedClassName + ";", null, l0, l1, 0);
- mv.visitLocalVariable("aMeta", "I", null, l0, l1, 1);
- mv.visitMaxs(1, 2);
- mv.visitEnd();
- didInject = true;
- }
- else if (aMethodName.equals(aName_getItemDropped)) {
- mv = cw.visitMethod(ACC_PUBLIC, aName_getItemDropped, "(ILjava/util/Random;I)Lnet/minecraft/item/Item;", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(44, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_GetHarvestTool", "getItemDropped", "(Lnet/minecraft/block/Block;ILjava/util/Random;I)Lnet/minecraft/item/Item;", false);
- mv.visitInsn(ARETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("this", "L"+aFormattedClassName+";", null, l0, l1, 0);
- mv.visitLocalVariable("meta", "I", null, l0, l1, 1);
- mv.visitLocalVariable("random", "Ljava/util/Random;", null, l0, l1, 2);
- mv.visitLocalVariable("fortune", "I", null, l0, l1, 3);
- mv.visitMaxs(4, 4);
- mv.visitEnd();
- didInject = true;
- }
- else if (aMethodName.equals(aName_damageDropped)) {
- mv = cw.visitMethod(ACC_PUBLIC, aName_damageDropped, "(I)I", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(48, l0);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_GetHarvestTool", "damageDropped", "(I)I", false);
- mv.visitInsn(IRETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("this", "L"+aFormattedClassName+";", null, l0, l1, 0);
- mv.visitLocalVariable("meta", "I", null, l0, l1, 1);
- mv.visitMaxs(1, 2);
- mv.visitEnd();
- didInject = true;
- }
- FMLRelaunchLog.log("[GT++ ASM] IC2 getHarvestTool Patch", Level.INFO, "Method injection complete.");
- return didInject;
- }
-
- public final class localClassVisitor extends ClassVisitor {
-
- String aClassName;
-
- public localClassVisitor(ClassVisitor cv, String aName) {
- super(ASM5, cv);
- aClassName = aName;
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- MethodVisitor methodVisitor;
- if (aClassName.equals("ic2.core.block.machine.BlockMachine2")
- || aClassName.equals("ic2.core.block.machine.BlockMachine3")
- || aClassName.equals("ic2.core.block.wiring.BlockElectric")) {
- if (name.equals(aName_getItemDropped)) {
- methodVisitor = null;
- } else if (name.equals(aName_damageDropped)) {
- methodVisitor = null;
- } else if (name.equals("getHarvestTool")) {
- methodVisitor = null;
- } else {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
- }
- else if (aClassName.equals("ic2.core.block.generator.block.BlockGenerator")
- || aClassName.equals("ic2.core.block.machine.BlockMachine")) {
- if (name.equals(aName_damageDropped)) {
- methodVisitor = null;
- } else if (name.equals("getHarvestTool")) {
- methodVisitor = null;
- } else {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
- }
- else {
- if (name.equals("getHarvestTool")) {
- methodVisitor = null;
- } else {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
- }
- if (methodVisitor == null) {
- FMLRelaunchLog.log("[GT++ ASM] IC2 getHarvestTool Patch", Level.INFO,
- "Found method " + name + ", removing.");
- }
- return methodVisitor;
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_Hazmat.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_Hazmat.java
deleted file mode 100644
index 10f04e7a48..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_Hazmat.java
+++ /dev/null
@@ -1,147 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.*;
-
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gtPlusPlus.core.util.minecraft.HazmatUtils;
-import net.minecraft.entity.EntityLivingBase;
-
-public class ClassTransformer_IC2_Hazmat {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
- private final String className;
-
- public static boolean hasCompleteHazmat(EntityLivingBase living) {
- return HazmatUtils.hasCompleteHazmat(living);
- }
-
- public ClassTransformer_IC2_Hazmat(byte[] basicClass, String aClassName) {
- className = aClassName;
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- FMLRelaunchLog.log("[GT++ ASM] IC2 Hazmat Patch", Level.INFO, "Attempting to patch in mode " + className + ".");
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new localClassVisitor(aTempWriter, className), 0);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- } else {
- isValid = false;
- }
-
- FMLRelaunchLog.log("[GT++ ASM] IC2 Hazmat Patch", Level.INFO, "Valid patch? " + isValid + ".");
- reader = aTempReader;
- writer = aTempWriter;
-
- if (reader != null && writer != null) {
- FMLRelaunchLog.log("[GT++ ASM] IC2 Hazmat Patch", Level.INFO, "Attempting Method Injection.");
- injectMethod("hasCompleteHazmat");
- }
-
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public boolean injectMethod(String aMethodName) {
- MethodVisitor mv;
- boolean didInject = false;
- ClassWriter cw = getWriter();
-
- boolean isObf;
- try {
- isObf = Class.forName("net.minecraft.entity.EntityLivingBase") == null;
- } catch (ClassNotFoundException e) {
- isObf = true;
- }
- String aEntityLivingBase = "net/minecraft/entity/EntityLivingBase";
- if (isObf) {
- aEntityLivingBase = "sv";
- }
- FMLRelaunchLog.log("[GT++ ASM] IC2 Hazmat Patch", Level.INFO, "Method Handler: "+aEntityLivingBase);
-
-
- FMLRelaunchLog.log("[GT++ ASM] IC2 Hazmat Patch", Level.INFO, "Injecting " + aMethodName + ".");
- if (aMethodName.equals("hasCompleteHazmat")) {
-
- //Bad Local Variable - https://pastebin.com/TUCfdHqS
- /*mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "hasCompleteHazmat", "(L"+aEntityLivingBase+";)Z", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(23, l0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/HazmatUtils", "hasCompleteHazmat", "(L"+aEntityLivingBase+";)Z", false);
- mv.visitInsn(IRETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("this", "Lic2/core/item/armor/ItemArmorHazmat;", null, l0, l1, 0);
- mv.visitLocalVariable("living", "L"+aEntityLivingBase+";", null, l0, l1, 1);
- mv.visitMaxs(1, 2);
- mv.visitEnd();*/
-
-
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "hasCompleteHazmat", "(L"+aEntityLivingBase+";)Z", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(24, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/HazmatUtils", "hasCompleteHazmat", "(L"+aEntityLivingBase+";)Z", false);
- mv.visitInsn(IRETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("living", "L"+aEntityLivingBase+";", null, l0, l1, 0);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- didInject = true;
- }
- FMLRelaunchLog.log("[GT++ ASM] IC2 Hazmat Patch", Level.INFO, "Method injection complete.");
- return didInject;
- }
-
- public final class localClassVisitor extends ClassVisitor {
-
- String aClassName;
-
- public localClassVisitor(ClassVisitor cv, String aName) {
- super(ASM5, cv);
- aClassName = aName;
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- MethodVisitor methodVisitor;
-
- if (name.equals("hasCompleteHazmat")) {
- methodVisitor = null;
- } else {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
-
- if (methodVisitor == null) {
- FMLRelaunchLog.log("[GT++ ASM] IC2 Hazmat Patch", Level.INFO,
- "Found method " + name + ", removing.");
- }
- return methodVisitor;
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_LWJGL_Keyboard.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_LWJGL_Keyboard.java
deleted file mode 100644
index 3ec4426ec1..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_LWJGL_Keyboard.java
+++ /dev/null
@@ -1,278 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
-import static org.objectweb.asm.Opcodes.ACC_STATIC;
-import static org.objectweb.asm.Opcodes.ACC_SYNCHRONIZED;
-import static org.objectweb.asm.Opcodes.ARETURN;
-import static org.objectweb.asm.Opcodes.ASM5;
-import static org.objectweb.asm.Opcodes.ILOAD;
-import static org.objectweb.asm.Opcodes.INVOKESTATIC;
-
-import java.lang.reflect.Field;
-import java.util.HashMap;
-
-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 cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gtPlusPlus.core.util.Utils;
-import gtPlusPlus.core.util.reflect.ReflectionUtils;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.settings.GameSettings;
-import net.minecraft.client.settings.KeyBinding;
-
-public class ClassTransformer_LWJGL_Keyboard {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- private static final HashMap<String, String> mBadKeyCache = new HashMap<String, String>();
-
- /**
- * Gets a key's name
- *
- * @param key The key
- * @return a String with the key's human readable name in it or null if the key
- * is unnamed
- */
- public static synchronized String getKeyName(int key) {
- if (init()) {
- String[] aTemp = getKeyName();
- if (key < aTemp.length && key >= 0) {
- return aTemp[key];
- }
- }
- String aCachedValue = mBadKeyCache.get("key-"+key);
- if (aCachedValue == null) {
- FMLRelaunchLog.log("[GT++ ASM] LWJGL Keybinding index out of bounds fix", Level.INFO, "Unable to map key code "+key+" to LWJGL keymap.");
- FMLRelaunchLog.log("[GT++ ASM] LWJGL Keybinding index out of bounds fix", Level.INFO, "Caching key value to be empty.");
- //mBadKeyCache.put("key-"+key, getKeyName()[0x00]);
- aCachedValue = "FIX!";
- mBadKeyCache.put("key-"+key, aCachedValue);
- trySetClientKey(key);
- }
- return aCachedValue; // Return nothing
- }
-
- public static void trySetClientKey(int aKey) {
- if (Utils.isClient() && ReflectionUtils.doesClassExist("net.minecraft.client.Minecraft")) {
- FMLRelaunchLog.log("[GT++ ASM] LWJGL Keybinding index out of bounds fix", Level.INFO, "Trying to set key value to be empty.");
- 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];
- if (keybinding != null && keybinding.getKeyCode() == aKey) {
- options.setOptionKeyBinding(keybinding, 0);
- FMLRelaunchLog.log("[GT++ ASM] LWJGL Keybinding index out of bounds fix", Level.INFO, "Set keybind "+aKey+" to 0.");
- break;
- }
- }
- }
- }
-
- @SuppressWarnings("rawtypes")
- private static Class mKeyboard;
- private static Field mKeyName;
-
- @SuppressWarnings("rawtypes")
- private static boolean init() {
- if (mKeyName != null) {
- return true;
- }
- Class aKeyboard = ReflectionUtils.getClass("org.lwjgl.input.Keyboard");
- if (aKeyboard != null) {
- mKeyboard = aKeyboard;
- Field aKeyName = ReflectionUtils.getField(mKeyboard, "keyName");
- if (aKeyName != null) {
- mKeyName = aKeyName;
- }
- }
- return mKeyName != null;
- }
-
- private static String[] getKeyName() {
- if (init()) {
- try {
- Object o = mKeyName.get(null);
- if (o instanceof String[]) {
- String[] y = (String[]) o;
- return y;
- }
- } catch (IllegalArgumentException | IllegalAccessException e) {
- }
- }
- return new String[] {};
- }
-
- public ClassTransformer_LWJGL_Keyboard(byte[] basicClass, boolean isClientSettings) {
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- if (!isClientSettings) {
- //gtPlusPlus.preloader.keyboard.BetterKeyboard.init();
- aTempReader.accept(new PatchLWJGL(aTempWriter), 0);
- injectLWJGLPatch(aTempWriter);
- }
- else {
- //gtPlusPlus.preloader.keyboard.BetterKeyboard.init();
- aTempReader.accept(new PatchClientSettings(aTempWriter), 0);
- injectClientSettingPatch(aTempWriter);
- }
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- } else {
- isValid = false;
- }
- FMLRelaunchLog.log("[GT++ ASM] LWJGL Keybinding index out of bounds fix", Level.INFO, "Valid? " + isValid + ".");
- reader = aTempReader;
- writer = aTempWriter;
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- private boolean isClientSettingsObfuscated = false;
-
-
- public boolean injectLWJGLPatch(ClassWriter cw) {
- MethodVisitor mv;
- boolean didInject = false;
- FMLRelaunchLog.log("[GT++ ASM] LWJGL Keybinding index out of bounds fix", Level.INFO,
- "Injecting " + "getKeyName" + ".");
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC + ACC_SYNCHRONIZED, "getKeyName", "(I)Ljava/lang/String;", null,
- null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(49, l0);
- mv.visitVarInsn(ILOAD, 0);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/transformers/ClassTransformer_LWJGL_Keyboard",
- "getKeyName", "(I)Ljava/lang/String;", false);
- mv.visitInsn(ARETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("key", "I", null, l0, l1, 0);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- didInject = true;
-
- FMLRelaunchLog.log("[GT++ ASM] LWJGL Keybinding index out of bounds fix", Level.INFO, "Method injection complete.");
- return didInject;
- }
-
-
- public boolean injectClientSettingPatch(ClassWriter cw) {
- MethodVisitor mv;
- boolean didInject = false;
- String aMethodName = this.isClientSettingsObfuscated ? "func_74298_c" : "getKeyDisplayString";
- FMLRelaunchLog.log("[GT++ ASM] LWJGL Keybinding index out of bounds fix", Level.INFO, "Injecting " + aMethodName + ".");
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, aMethodName, "(I)Ljava/lang/String;", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(130, l0);
- mv.visitVarInsn(ILOAD, 0);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/keyboard/BetterKeyboard", "getKeyDisplayString", "(I)Ljava/lang/String;", false);
- mv.visitInsn(ARETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("p_74298_0_", "I", null, l0, l1, 0);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- didInject = true;
- FMLRelaunchLog.log("[GT++ ASM] LWJGL Keybinding index out of bounds fix", Level.INFO, "Method injection complete.");
- return didInject;
- }
-
-
-
- public class PatchClientSettings extends ClassVisitor {
-
- public PatchClientSettings(ClassVisitor cv) {
- super(ASM5, cv);
- this.cv = cv;
- }
-
- private final String[] aMethodsToStrip = new String[] { "func_74298_c", "getKeyDisplayString" };
-
- @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)) {
- if (name.equals(aMethodsToStrip[0])) {
- isClientSettingsObfuscated = true;
- }
- else {
- isClientSettingsObfuscated = false;
- }
- found = true;
- break;
- }
- }
- if (!found) {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- } else {
- methodVisitor = null;
- }
- if (found) {
- FMLRelaunchLog.log("[GT++ ASM] LWJGL Keybinding index out of bounds fix", Level.INFO, "Found method " + name + ", removing.");
- }
- return methodVisitor;
- }
-
- }
-
- public class PatchLWJGL extends ClassVisitor {
-
- public PatchLWJGL(ClassVisitor cv) {
- super(ASM5, cv);
- this.cv = cv;
- }
-
- private final String[] aMethodsToStrip = new String[] { "getKeyName" };
-
- @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;
- break;
- }
- }
- if (!found) {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- } else {
- methodVisitor = null;
- }
- if (found) {
- FMLRelaunchLog.log("[GT++ ASM] LWJGL Keybinding index out of bounds fix", Level.INFO,
- "Found method " + name + ", removing.");
- }
- return methodVisitor;
- }
-
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_FluidCartHandling.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_FluidCartHandling.java
deleted file mode 100644
index bf71582ae7..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_FluidCartHandling.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.ACC_FINAL;
-import static org.objectweb.asm.Opcodes.ACC_PRIVATE;
-import static org.objectweb.asm.Opcodes.ACC_STATIC;
-import static org.objectweb.asm.Opcodes.ASM5;
-
-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.FieldVisitor;
-
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gtPlusPlus.preloader.asm.AsmConfig;
-
-public class ClassTransformer_Railcraft_FluidCartHandling {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- //mods.railcraft.common.blocks.machine.gamma.TileFluidLoader
- //mods.railcraft.common.blocks.machine.gamma.TileFluidLoader.TRANSFER_RATE
-
- //mods.railcraft.common.blocks.machine.gamma.TileFluidUnloader
- //mods.railcraft.common.blocks.machine.gamma.TileFluidUnloader.TRANSFER_RATE
-
- public static final int TileFluidLoader_RATE = 20;
- public static final int TileFluidUnloader_RATE = 80;
-
- private static final int TYPE_LOADER = 0;
- private static final int TYPE_UNLOADER = 1;
-
- public ClassTransformer_Railcraft_FluidCartHandling(byte[] basicClass, boolean obfuscated, String aClassName) {
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
- boolean aLoader = aClassName.equals("mods.railcraft.common.blocks.machine.gamma.TileFluidLoader");
-
- FMLRelaunchLog.log("[GT++ ASM] Railcraft TRANSFER_RATE Patch", Level.INFO, "Attempting to patch field TRANSFER_RATE in "+aClassName+", default value is "+(aLoader ? 20 : 80));
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
-
- if (aLoader) {
- aTempReader.accept(new AddFieldAdapter(aTempWriter), 0);
- addField(ACC_PRIVATE + ACC_FINAL + ACC_STATIC, "TRANSFER_RATE", aTempWriter, TYPE_LOADER);
- }
- else {
- aTempReader.accept(new AddFieldAdapter(aTempWriter), 0);
- addField(ACC_PRIVATE + ACC_FINAL + ACC_STATIC, "TRANSFER_RATE", aTempWriter, TYPE_UNLOADER);
- }
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- FMLRelaunchLog.log("[GT++ ASM] Railcraft TRANSFER_RATE Patch", Level.INFO, "Valid? "+isValid+".");
- }
- else {
- isValid = false;
- }
- reader = aTempReader;
- writer = aTempWriter;
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public boolean addField(int access, String fieldName, ClassWriter cv, int aType) {
- int aValue = (aType == TYPE_LOADER ? AsmConfig.maxRailcraftFluidLoaderFlow : AsmConfig.maxRailcraftFluidUnloaderFlow);
- FMLRelaunchLog.log("[GT++ ASM] Railcraft TRANSFER_RATE Patch", Level.INFO, "Injecting " + fieldName + " with new value: "+aValue);
- FieldVisitor fv = cv.visitField(access, fieldName, "I", null, new Integer(aValue));
- if (fv != null) {
- fv.visitEnd();
- return true;
- }
- return false;
- }
-
-
-
-
- public class AddFieldAdapter extends ClassVisitor {
-
- public AddFieldAdapter(ClassVisitor cv) {
- super(ASM5, cv);
- this.cv = cv;
- }
-
- @Override
- public FieldVisitor visitField(
- int access, String name, String desc, String signature, Object value) {
- if (name.equals("TRANSFER_RATE") && desc.equals("I")) {
- FMLRelaunchLog.log("[GT++ ASM] Railcraft TRANSFER_RATE Patch", Level.INFO, "Removing "+"TRANSFER_RATE"+".");
- return null;
- }
- else {
- FMLRelaunchLog.log("[GT++ ASM] Railcraft TRANSFER_RATE Patch", Level.INFO, "Found Field "+name+" | "+desc);
- }
- return cv.visitField(access, name, desc, signature, value);
- }
-
- }
-
-
-
-
-
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_FluidHelper.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_FluidHelper.java
deleted file mode 100644
index 1249df0777..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_FluidHelper.java
+++ /dev/null
@@ -1,695 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import java.lang.reflect.Method;
-
-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.FieldVisitor;
-import org.objectweb.asm.Label;
-import org.objectweb.asm.MethodVisitor;
-
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gtPlusPlus.preloader.asm.AsmConfig;
-import net.minecraft.inventory.IInventory;
-
-public class ClassTransformer_Railcraft_FluidHelper {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- public static int PROCESS_VOLUME;
-
- public ClassTransformer_Railcraft_FluidHelper(byte[] basicClass, boolean obfuscated2) {
-
- PROCESS_VOLUME = AsmConfig.maxRailcraftTankProcessVolume;
-
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- FMLRelaunchLog.log("[GT++ ASM] Railcraft PROCESS_VOLUME Patch", Level.INFO, "Attempting to patch field PROCESS_VOLUME in mods.railcraft.common.fluids.FluidHelper with new value: "+PROCESS_VOLUME);
-
- boolean obfuscated = false;
- boolean a1 = false;
- boolean a2 = false;
-
- //Find Non-Obf method
- try {
- Method aGetStackInSlot = IInventory.class.getDeclaredMethod("getStackInSlot", int.class);
- if (aGetStackInSlot != null) {
- a1 = true;
- }
- } catch (NoSuchMethodException | SecurityException e) {}
-
- //Find Obf method
- try {
- Method aGetStackInSlotObf = IInventory.class.getDeclaredMethod("func_70301_a", int.class);
- if (aGetStackInSlotObf != null) {
- a2 = true;
- }
- } catch (NoSuchMethodException | SecurityException e) {}
-
-
- if (a1) {
- obfuscated = false;
- }
- else if (a2) {
- obfuscated = true;
- }
- else {
- //Fallback
- obfuscated = false;
- }
- FMLRelaunchLog.log("[GT++ ASM] Railcraft PROCESS_VOLUME Patch", Level.INFO, "Are we patching obfuscated methods? "+obfuscated);
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new AddFieldAdapter(aTempWriter), 0);
-
- addField(ACC_PUBLIC + ACC_FINAL + ACC_STATIC, "PROCESS_VOLUME", aTempWriter);
- injectMethod("fillContainers", aTempWriter, obfuscated);
- injectMethod("drainContainers", aTempWriter, obfuscated);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- }
- else {
- isValid = false;
- }
-
- FMLRelaunchLog.log("[GT++ ASM] Railcraft PROCESS_VOLUME 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 addField(int access, String fieldName, ClassWriter cv) {
- FMLRelaunchLog.log(
- "[GT++ ASM] Railcraft PROCESS_VOLUME Patch",
- Level.INFO,
- "Injecting " + fieldName + " with new value.");
- FieldVisitor fv = cv.visitField(access, fieldName, "I", null, PROCESS_VOLUME);
- if (fv != null) {
- fv.visitEnd();
- return true;
- }
- return false;
- }
-
- public boolean injectMethod(String aMethodName, ClassWriter cw, boolean obfuscated) {
- MethodVisitor mv;
- boolean didInject = false;
- FMLRelaunchLog.log("[GT++ ASM] Railcraft PROCESS_VOLUME Patch", Level.INFO, "Injecting " + aMethodName + ".");
-
- if (aMethodName.equals("fillContainers") && !obfuscated) {
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "fillContainers", "(Lnet/minecraftforge/fluids/IFluidHandler;Lnet/minecraft/inventory/IInventory;IILnet/minecraftforge/fluids/Fluid;)Z", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(126, l0);
- mv.visitVarInsn(ALOAD, 4);
- Label l1 = new Label();
- mv.visitJumpInsn(IFNONNULL, l1);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(127, l2);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l1);
- mv.visitLineNumber(128, l1);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitMethodInsn(INVOKEINTERFACE, "net/minecraft/inventory/IInventory", "getStackInSlot", "(I)Lnet/minecraft/item/ItemStack;", true);
- mv.visitVarInsn(ASTORE, 5);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(129, l3);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitMethodInsn(INVOKEINTERFACE, "net/minecraft/inventory/IInventory", "getStackInSlot", "(I)Lnet/minecraft/item/ItemStack;", true);
- mv.visitVarInsn(ASTORE, 6);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(130, l4);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitTypeInsn(NEW, "net/minecraftforge/fluids/FluidStack");
- mv.visitInsn(DUP);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitIntInsn(SIPUSH, PROCESS_VOLUME);
- mv.visitMethodInsn(INVOKESPECIAL, "net/minecraftforge/fluids/FluidStack", "<init>", "(Lnet/minecraftforge/fluids/Fluid;I)V", false);
- mv.visitMethodInsn(INVOKESTATIC, "mods/railcraft/common/fluids/FluidItemHelper", "fillContainer", "(Lnet/minecraft/item/ItemStack;Lnet/minecraftforge/fluids/FluidStack;)Lmods/railcraft/common/fluids/FluidItemHelper$FillReturn;", false);
- mv.visitVarInsn(ASTORE, 7);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(131, l5);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "container", "Lnet/minecraft/item/ItemStack;");
- Label l6 = new Label();
- mv.visitJumpInsn(IFNULL, l6);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "container", "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(INVOKESTATIC, "mods/railcraft/common/fluids/FluidHelper", "hasPlaceToPutContainer", "(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z", false);
- mv.visitJumpInsn(IFEQ, l6);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(132, l7);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETSTATIC, "net/minecraftforge/common/util/ForgeDirection", "UNKNOWN", "Lnet/minecraftforge/common/util/ForgeDirection;");
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "amount", "I");
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKEINTERFACE, "net/minecraftforge/fluids/IFluidHandler", "drain", "(Lnet/minecraftforge/common/util/ForgeDirection;IZ)Lnet/minecraftforge/fluids/FluidStack;", true);
- mv.visitVarInsn(ASTORE, 8);
- Label l8 = new Label();
- mv.visitLabel(l8);
- mv.visitLineNumber(133, l8);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitJumpInsn(IFNULL, l6);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "amount", "I");
- mv.visitJumpInsn(IF_ICMPNE, l6);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(134, l9);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitMethodInsn(INVOKESTATIC, "mods/railcraft/common/fluids/FluidItemHelper", "fillContainer", "(Lnet/minecraft/item/ItemStack;Lnet/minecraftforge/fluids/FluidStack;)Lmods/railcraft/common/fluids/FluidItemHelper$FillReturn;", false);
- mv.visitVarInsn(ASTORE, 7);
- Label l10 = new Label();
- mv.visitLabel(l10);
- mv.visitLineNumber(135, l10);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "container", "Lnet/minecraft/item/ItemStack;");
- Label l11 = new Label();
- mv.visitJumpInsn(IFNULL, l11);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "amount", "I");
- mv.visitVarInsn(ALOAD, 8);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitJumpInsn(IF_ICMPNE, l11);
- Label l12 = new Label();
- mv.visitLabel(l12);
- mv.visitLineNumber(136, l12);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETSTATIC, "net/minecraftforge/common/util/ForgeDirection", "UNKNOWN", "Lnet/minecraftforge/common/util/ForgeDirection;");
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "amount", "I");
- mv.visitInsn(ICONST_1);
- mv.visitMethodInsn(INVOKEINTERFACE, "net/minecraftforge/fluids/IFluidHandler", "drain", "(Lnet/minecraftforge/common/util/ForgeDirection;IZ)Lnet/minecraftforge/fluids/FluidStack;", true);
- mv.visitInsn(POP);
- Label l13 = new Label();
- mv.visitLabel(l13);
- mv.visitLineNumber(137, l13);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "container", "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(INVOKESTATIC, "mods/railcraft/common/fluids/FluidHelper", "storeContainer", "(Lnet/minecraft/inventory/IInventory;IILnet/minecraft/item/ItemStack;)V", false);
- mv.visitLabel(l11);
- mv.visitLineNumber(139, l11);
- mv.visitFrame(F_FULL, 9, new Object[] {"net/minecraftforge/fluids/IFluidHandler", "net/minecraft/inventory/IInventory", INTEGER, INTEGER, "net/minecraftforge/fluids/Fluid", "net/minecraft/item/ItemStack", "net/minecraft/item/ItemStack", "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "net/minecraftforge/fluids/FluidStack"}, 0, new Object[] {});
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l6);
- mv.visitLineNumber(142, l6);
- mv.visitFrame(F_CHOP,1, null, 0, null);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(IRETURN);
- Label l14 = new Label();
- mv.visitLabel(l14);
- mv.visitLocalVariable("drain", "Lnet/minecraftforge/fluids/FluidStack;", null, l8, l6, 8);
- mv.visitLocalVariable("fluidHandler", "Lnet/minecraftforge/fluids/IFluidHandler;", null, l0, l14, 0);
- mv.visitLocalVariable("inv", "Lnet/minecraft/inventory/IInventory;", null, l0, l14, 1);
- mv.visitLocalVariable("inputSlot", "I", null, l0, l14, 2);
- mv.visitLocalVariable("outputSlot", "I", null, l0, l14, 3);
- mv.visitLocalVariable("fluidToFill", "Lnet/minecraftforge/fluids/Fluid;", null, l0, l14, 4);
- mv.visitLocalVariable("input", "Lnet/minecraft/item/ItemStack;", null, l3, l14, 5);
- mv.visitLocalVariable("output", "Lnet/minecraft/item/ItemStack;", null, l4, l14, 6);
- mv.visitLocalVariable("fill", "Lmods/railcraft/common/fluids/FluidItemHelper$FillReturn;", null, l5, l14, 7);
- mv.visitMaxs(5, 9);
- mv.visitEnd();
- didInject = true;
- }
- else if (aMethodName.equals("fillContainers") && obfuscated) {
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "fillContainers", "(Lnet/minecraftforge/fluids/IFluidHandler;Lnet/minecraft/inventory/IInventory;IILnet/minecraftforge/fluids/Fluid;)Z", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(126, l0);
- mv.visitVarInsn(ALOAD, 4);
- Label l1 = new Label();
- mv.visitJumpInsn(IFNONNULL, l1);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(127, l2);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l1);
- mv.visitLineNumber(128, l1);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitMethodInsn(INVOKEINTERFACE, "net/minecraft/inventory/IInventory", "func_70301_a", "(I)Lnet/minecraft/item/ItemStack;", true);
- mv.visitVarInsn(ASTORE, 5);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(129, l3);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitMethodInsn(INVOKEINTERFACE, "net/minecraft/inventory/IInventory", "func_70301_a", "(I)Lnet/minecraft/item/ItemStack;", true);
- mv.visitVarInsn(ASTORE, 6);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(130, l4);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitTypeInsn(NEW, "net/minecraftforge/fluids/FluidStack");
- mv.visitInsn(DUP);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitIntInsn(SIPUSH, PROCESS_VOLUME);
- mv.visitMethodInsn(INVOKESPECIAL, "net/minecraftforge/fluids/FluidStack", "<init>", "(Lnet/minecraftforge/fluids/Fluid;I)V", false);
- mv.visitMethodInsn(INVOKESTATIC, "mods/railcraft/common/fluids/FluidItemHelper", "fillContainer", "(Lnet/minecraft/item/ItemStack;Lnet/minecraftforge/fluids/FluidStack;)Lmods/railcraft/common/fluids/FluidItemHelper$FillReturn;", false);
- mv.visitVarInsn(ASTORE, 7);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(131, l5);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "container", "Lnet/minecraft/item/ItemStack;");
- Label l6 = new Label();
- mv.visitJumpInsn(IFNULL, l6);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "container", "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(INVOKESTATIC, "mods/railcraft/common/fluids/FluidHelper", "hasPlaceToPutContainer", "(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z", false);
- mv.visitJumpInsn(IFEQ, l6);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(132, l7);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETSTATIC, "net/minecraftforge/common/util/ForgeDirection", "UNKNOWN", "Lnet/minecraftforge/common/util/ForgeDirection;");
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "amount", "I");
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKEINTERFACE, "net/minecraftforge/fluids/IFluidHandler", "drain", "(Lnet/minecraftforge/common/util/ForgeDirection;IZ)Lnet/minecraftforge/fluids/FluidStack;", true);
- mv.visitVarInsn(ASTORE, 8);
- Label l8 = new Label();
- mv.visitLabel(l8);
- mv.visitLineNumber(133, l8);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitJumpInsn(IFNULL, l6);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "amount", "I");
- mv.visitJumpInsn(IF_ICMPNE, l6);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(134, l9);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitMethodInsn(INVOKESTATIC, "mods/railcraft/common/fluids/FluidItemHelper", "fillContainer", "(Lnet/minecraft/item/ItemStack;Lnet/minecraftforge/fluids/FluidStack;)Lmods/railcraft/common/fluids/FluidItemHelper$FillReturn;", false);
- mv.visitVarInsn(ASTORE, 7);
- Label l10 = new Label();
- mv.visitLabel(l10);
- mv.visitLineNumber(135, l10);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "container", "Lnet/minecraft/item/ItemStack;");
- Label l11 = new Label();
- mv.visitJumpInsn(IFNULL, l11);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "amount", "I");
- mv.visitVarInsn(ALOAD, 8);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitJumpInsn(IF_ICMPNE, l11);
- Label l12 = new Label();
- mv.visitLabel(l12);
- mv.visitLineNumber(136, l12);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETSTATIC, "net/minecraftforge/common/util/ForgeDirection", "UNKNOWN", "Lnet/minecraftforge/common/util/ForgeDirection;");
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "amount", "I");
- mv.visitInsn(ICONST_1);
- mv.visitMethodInsn(INVOKEINTERFACE, "net/minecraftforge/fluids/IFluidHandler", "drain", "(Lnet/minecraftforge/common/util/ForgeDirection;IZ)Lnet/minecraftforge/fluids/FluidStack;", true);
- mv.visitInsn(POP);
- Label l13 = new Label();
- mv.visitLabel(l13);
- mv.visitLineNumber(137, l13);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "container", "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(INVOKESTATIC, "mods/railcraft/common/fluids/FluidHelper", "storeContainer", "(Lnet/minecraft/inventory/IInventory;IILnet/minecraft/item/ItemStack;)V", false);
- mv.visitLabel(l11);
- mv.visitLineNumber(139, l11);
- mv.visitFrame(F_FULL, 9, new Object[] {"net/minecraftforge/fluids/IFluidHandler", "net/minecraft/inventory/IInventory", INTEGER, INTEGER, "net/minecraftforge/fluids/Fluid", "net/minecraft/item/ItemStack", "net/minecraft/item/ItemStack", "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "net/minecraftforge/fluids/FluidStack"}, 0, new Object[] {});
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l6);
- mv.visitLineNumber(142, l6);
- mv.visitFrame(F_CHOP,1, null, 0, null);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(IRETURN);
- Label l14 = new Label();
- mv.visitLabel(l14);
- mv.visitLocalVariable("drain", "Lnet/minecraftforge/fluids/FluidStack;", null, l8, l6, 8);
- mv.visitLocalVariable("fluidHandler", "Lnet/minecraftforge/fluids/IFluidHandler;", null, l0, l14, 0);
- mv.visitLocalVariable("inv", "Lnet/minecraft/inventory/IInventory;", null, l0, l14, 1);
- mv.visitLocalVariable("inputSlot", "I", null, l0, l14, 2);
- mv.visitLocalVariable("outputSlot", "I", null, l0, l14, 3);
- mv.visitLocalVariable("fluidToFill", "Lnet/minecraftforge/fluids/Fluid;", null, l0, l14, 4);
- mv.visitLocalVariable("input", "Lnet/minecraft/item/ItemStack;", null, l3, l14, 5);
- mv.visitLocalVariable("output", "Lnet/minecraft/item/ItemStack;", null, l4, l14, 6);
- mv.visitLocalVariable("fill", "Lmods/railcraft/common/fluids/FluidItemHelper$FillReturn;", null, l5, l14, 7);
- mv.visitMaxs(5, 9);
- mv.visitEnd();
- didInject = true;
- }
- else if (aMethodName.equals("drainContainers") && !obfuscated) {
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "drainContainers", "(Lnet/minecraftforge/fluids/IFluidHandler;Lnet/minecraft/inventory/IInventory;II)Z", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(146, l0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitMethodInsn(INVOKEINTERFACE, "net/minecraft/inventory/IInventory", "getStackInSlot", "(I)Lnet/minecraft/item/ItemStack;", true);
- mv.visitVarInsn(ASTORE, 4);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(147, l1);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitMethodInsn(INVOKEINTERFACE, "net/minecraft/inventory/IInventory", "getStackInSlot", "(I)Lnet/minecraft/item/ItemStack;", true);
- mv.visitVarInsn(ASTORE, 5);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(148, l2);
- mv.visitVarInsn(ALOAD, 4);
- Label l3 = new Label();
- mv.visitJumpInsn(IFNULL, l3);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(149, l4);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitIntInsn(SIPUSH, PROCESS_VOLUME);
- mv.visitMethodInsn(INVOKESTATIC, "mods/railcraft/common/fluids/FluidItemHelper", "drainContainer", "(Lnet/minecraft/item/ItemStack;I)Lmods/railcraft/common/fluids/FluidItemHelper$DrainReturn;", false);
- mv.visitVarInsn(ASTORE, 6);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(150, l5);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "fluidDrained", "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitJumpInsn(IFNULL, l3);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "container", "Lnet/minecraft/item/ItemStack;");
- Label l6 = new Label();
- mv.visitJumpInsn(IFNULL, l6);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "container", "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(INVOKESTATIC, "mods/railcraft/common/fluids/FluidHelper", "hasPlaceToPutContainer", "(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z", false);
- mv.visitJumpInsn(IFEQ, l3);
- mv.visitLabel(l6);
- mv.visitLineNumber(151, l6);
- mv.visitFrame(F_APPEND,3, new Object[] {"net/minecraft/item/ItemStack", "net/minecraft/item/ItemStack", "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn"}, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETSTATIC, "net/minecraftforge/common/util/ForgeDirection", "UNKNOWN", "Lnet/minecraftforge/common/util/ForgeDirection;");
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "fluidDrained", "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKEINTERFACE, "net/minecraftforge/fluids/IFluidHandler", "fill", "(Lnet/minecraftforge/common/util/ForgeDirection;Lnet/minecraftforge/fluids/FluidStack;Z)I", true);
- mv.visitVarInsn(ISTORE, 7);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(152, l7);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "isAtomic", "Z");
- Label l8 = new Label();
- mv.visitJumpInsn(IFEQ, l8);
- mv.visitVarInsn(ILOAD, 7);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "fluidDrained", "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- Label l9 = new Label();
- mv.visitJumpInsn(IF_ICMPEQ, l9);
- mv.visitLabel(l8);
- mv.visitFrame(F_APPEND,1, new Object[] {INTEGER}, 0, null);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "isAtomic", "Z");
- mv.visitJumpInsn(IFNE, l3);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "fluidDrained", "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitJumpInsn(IFLE, l3);
- mv.visitLabel(l9);
- mv.visitLineNumber(153, l9);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETSTATIC, "net/minecraftforge/common/util/ForgeDirection", "UNKNOWN", "Lnet/minecraftforge/common/util/ForgeDirection;");
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "fluidDrained", "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitInsn(ICONST_1);
- mv.visitMethodInsn(INVOKEINTERFACE, "net/minecraftforge/fluids/IFluidHandler", "fill", "(Lnet/minecraftforge/common/util/ForgeDirection;Lnet/minecraftforge/fluids/FluidStack;Z)I", true);
- mv.visitInsn(POP);
- Label l10 = new Label();
- mv.visitLabel(l10);
- mv.visitLineNumber(154, l10);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "container", "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(INVOKESTATIC, "mods/railcraft/common/fluids/FluidHelper", "storeContainer", "(Lnet/minecraft/inventory/IInventory;IILnet/minecraft/item/ItemStack;)V", false);
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLineNumber(155, l11);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l3);
- mv.visitLineNumber(159, l3);
- mv.visitFrame(F_CHOP,2, null, 0, null);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(IRETURN);
- Label l12 = new Label();
- mv.visitLabel(l12);
- mv.visitLocalVariable("used", "I", null, l7, l3, 7);
- mv.visitLocalVariable("drain", "Lmods/railcraft/common/fluids/FluidItemHelper$DrainReturn;", null, l5, l3, 6);
- mv.visitLocalVariable("fluidHandler", "Lnet/minecraftforge/fluids/IFluidHandler;", null, l0, l12, 0);
- mv.visitLocalVariable("inv", "Lnet/minecraft/inventory/IInventory;", null, l0, l12, 1);
- mv.visitLocalVariable("inputSlot", "I", null, l0, l12, 2);
- mv.visitLocalVariable("outputSlot", "I", null, l0, l12, 3);
- mv.visitLocalVariable("input", "Lnet/minecraft/item/ItemStack;", null, l1, l12, 4);
- mv.visitLocalVariable("output", "Lnet/minecraft/item/ItemStack;", null, l2, l12, 5);
- mv.visitMaxs(4, 8);
- mv.visitEnd();
- didInject = true;
- }
- else if (aMethodName.equals("drainContainers") && obfuscated) {
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "drainContainers", "(Lnet/minecraftforge/fluids/IFluidHandler;Lnet/minecraft/inventory/IInventory;II)Z", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(146, l0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitMethodInsn(INVOKEINTERFACE, "net/minecraft/inventory/IInventory", "func_70301_a", "(I)Lnet/minecraft/item/ItemStack;", true);
- mv.visitVarInsn(ASTORE, 4);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(147, l1);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitMethodInsn(INVOKEINTERFACE, "net/minecraft/inventory/IInventory", "func_70301_a", "(I)Lnet/minecraft/item/ItemStack;", true);
- mv.visitVarInsn(ASTORE, 5);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(148, l2);
- mv.visitVarInsn(ALOAD, 4);
- Label l3 = new Label();
- mv.visitJumpInsn(IFNULL, l3);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(149, l4);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitIntInsn(SIPUSH, PROCESS_VOLUME);
- mv.visitMethodInsn(INVOKESTATIC, "mods/railcraft/common/fluids/FluidItemHelper", "drainContainer", "(Lnet/minecraft/item/ItemStack;I)Lmods/railcraft/common/fluids/FluidItemHelper$DrainReturn;", false);
- mv.visitVarInsn(ASTORE, 6);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(150, l5);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "fluidDrained", "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitJumpInsn(IFNULL, l3);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "container", "Lnet/minecraft/item/ItemStack;");
- Label l6 = new Label();
- mv.visitJumpInsn(IFNULL, l6);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "container", "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(INVOKESTATIC, "mods/railcraft/common/fluids/FluidHelper", "hasPlaceToPutContainer", "(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z", false);
- mv.visitJumpInsn(IFEQ, l3);
- mv.visitLabel(l6);
- mv.visitLineNumber(151, l6);
- mv.visitFrame(F_APPEND,3, new Object[] {"net/minecraft/item/ItemStack", "net/minecraft/item/ItemStack", "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn"}, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETSTATIC, "net/minecraftforge/common/util/ForgeDirection", "UNKNOWN", "Lnet/minecraftforge/common/util/ForgeDirection;");
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "fluidDrained", "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKEINTERFACE, "net/minecraftforge/fluids/IFluidHandler", "fill", "(Lnet/minecraftforge/common/util/ForgeDirection;Lnet/minecraftforge/fluids/FluidStack;Z)I", true);
- mv.visitVarInsn(ISTORE, 7);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(152, l7);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "isAtomic", "Z");
- Label l8 = new Label();
- mv.visitJumpInsn(IFEQ, l8);
- mv.visitVarInsn(ILOAD, 7);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "fluidDrained", "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- Label l9 = new Label();
- mv.visitJumpInsn(IF_ICMPEQ, l9);
- mv.visitLabel(l8);
- mv.visitFrame(F_APPEND,1, new Object[] {INTEGER}, 0, null);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "isAtomic", "Z");
- mv.visitJumpInsn(IFNE, l3);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "fluidDrained", "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitJumpInsn(IFLE, l3);
- mv.visitLabel(l9);
- mv.visitLineNumber(153, l9);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETSTATIC, "net/minecraftforge/common/util/ForgeDirection", "UNKNOWN", "Lnet/minecraftforge/common/util/ForgeDirection;");
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "fluidDrained", "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitInsn(ICONST_1);
- mv.visitMethodInsn(INVOKEINTERFACE, "net/minecraftforge/fluids/IFluidHandler", "fill", "(Lnet/minecraftforge/common/util/ForgeDirection;Lnet/minecraftforge/fluids/FluidStack;Z)I", true);
- mv.visitInsn(POP);
- Label l10 = new Label();
- mv.visitLabel(l10);
- mv.visitLineNumber(154, l10);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "container", "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(INVOKESTATIC, "mods/railcraft/common/fluids/FluidHelper", "storeContainer", "(Lnet/minecraft/inventory/IInventory;IILnet/minecraft/item/ItemStack;)V", false);
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLineNumber(155, l11);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l3);
- mv.visitLineNumber(159, l3);
- mv.visitFrame(F_CHOP,2, null, 0, null);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(IRETURN);
- Label l12 = new Label();
- mv.visitLabel(l12);
- mv.visitLocalVariable("used", "I", null, l7, l3, 7);
- mv.visitLocalVariable("drain", "Lmods/railcraft/common/fluids/FluidItemHelper$DrainReturn;", null, l5, l3, 6);
- mv.visitLocalVariable("fluidHandler", "Lnet/minecraftforge/fluids/IFluidHandler;", null, l0, l12, 0);
- mv.visitLocalVariable("inv", "Lnet/minecraft/inventory/IInventory;", null, l0, l12, 1);
- mv.visitLocalVariable("inputSlot", "I", null, l0, l12, 2);
- mv.visitLocalVariable("outputSlot", "I", null, l0, l12, 3);
- mv.visitLocalVariable("input", "Lnet/minecraft/item/ItemStack;", null, l1, l12, 4);
- mv.visitLocalVariable("output", "Lnet/minecraft/item/ItemStack;", null, l2, l12, 5);
- mv.visitMaxs(4, 8);
- mv.visitEnd();
- didInject = true;
- }
-
- FMLRelaunchLog.log("[GT++ ASM] Railcraft PROCESS_VOLUME Patch", Level.INFO, "Method injection complete. "+(obfuscated ? "Obfuscated" : "Non-Obfuscated"));
- return didInject;
- }
-
-
-
-
-
-
-
-
-
- public class AddFieldAdapter extends ClassVisitor {
-
- public AddFieldAdapter(ClassVisitor cv) {
- super(ASM5, cv);
- this.cv = cv;
- }
-
- @Override
- public FieldVisitor visitField(
- int access, String name, String desc, String signature, Object value) {
- if (name.equals("PROCESS_VOLUME") && desc.equals("I")) {
- FMLRelaunchLog.log("[GT++ ASM] Railcraft PROCESS_VOLUME Patch", Level.INFO, "Removing "+"PROCESS_VOLUME"+".");
- return null;
- }
- return cv.visitField(access, name, desc, signature, value);
- }
-
-
- private final String[] aMethodsToStrip = new String[] {"fillContainers", "drainContainers"};
-
-
- @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;
- break;
- }
- }
- if (!found) {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
- else {
- methodVisitor = null;
- }
-
- if (found) {
- FMLRelaunchLog.log("[GT++ ASM] Railcraft PROCESS_VOLUME Patch", Level.INFO,
- "Found method " + name + ", removing.");
- }
- return methodVisitor;
- }
-
-
- }
-
-
-
-
-
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_InvTools.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_InvTools.java
deleted file mode 100644
index 75896c1c0f..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_InvTools.java
+++ /dev/null
@@ -1,235 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
-import static org.objectweb.asm.Opcodes.ACC_STATIC;
-import static org.objectweb.asm.Opcodes.ALOAD;
-import static org.objectweb.asm.Opcodes.ARETURN;
-import static org.objectweb.asm.Opcodes.ASM5;
-import static org.objectweb.asm.Opcodes.INVOKESTATIC;
-
-import java.lang.reflect.Method;
-
-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 cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gregtech.api.enums.GT_Values;
-import gtPlusPlus.core.util.minecraft.ItemUtils;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.item.ItemStack;
-
-public class ClassTransformer_Railcraft_InvTools {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
- private boolean obfuscated = true;
-
-
- public static ItemStack depleteItem(ItemStack stack) {
- if (stack == null) {
- return GT_Values.NI;
- } else {
- if (stack.stackSize == 0) {
- return GT_Values.NI;
- }
- else if (stack.stackSize == 1) {
- ItemStack container = stack.getItem().getContainerItem(stack);
- if (container != null) {
- return container;
- } else {
- return GT_Values.NI;
- }
- }
- else {
- return ItemUtils.depleteStack(stack);
- }
- }
- }
-
- public ClassTransformer_Railcraft_InvTools(byte[] basicClass, boolean obfuscated2) {
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- boolean devEnv = false;
- boolean a1 = false;
- boolean a2 = false;
-
- //Find Non-Obf method
- try {
- Method aGetStackInSlot = IInventory.class.getDeclaredMethod("getStackInSlot", int.class);
- if (aGetStackInSlot != null) {
- a1 = true;
- }
- } catch (NoSuchMethodException | SecurityException e) {}
-
- //Find Obf method
- try {
- Method aGetStackInSlotObf = IInventory.class.getDeclaredMethod("func_70301_a", int.class);
- if (aGetStackInSlotObf != null) {
- a2 = true;
- }
- } catch (NoSuchMethodException | SecurityException e) {}
-
-
- if (a1) {
- devEnv = false;
- }
- else if (a2) {
- devEnv = true;
- }
- else {
- //Fallback
- devEnv = false;
- }
-
- if (obfuscated && devEnv) {
-
- }
- else {
-
-
- }
-
-
-
- FMLRelaunchLog.log("[GT++ ASM] Railcraft negative ItemStack Fix", Level.INFO, "Are we patching obfuscated method? "+obfuscated);
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new AddFieldAdapter(aTempWriter), 0);
-
- injectMethod("depleteItem", aTempWriter, obfuscated);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- }
- else {
- isValid = false;
- }
-
- FMLRelaunchLog.log("[GT++ ASM] Railcraft negative ItemStack Fix", 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 injectMethod(String aMethodName, ClassWriter cw, boolean obfuscated) {
- MethodVisitor mv;
- boolean didInject = false;
- FMLRelaunchLog.log("[GT++ ASM] Railcraft negative ItemStack Fix", Level.INFO, "Injecting " + aMethodName + ".");
- if (aMethodName.equals("depleteItem") && !obfuscated) {
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "depleteItem", "(Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack;", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(36, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_InvTools", "depleteItem", "(Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack;", false);
- mv.visitInsn(ARETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("stack", "Lnet/minecraft/item/ItemStack;", null, l0, l1, 0);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- didInject = true;
- }
- else if (aMethodName.equals("depleteItem") && obfuscated) {
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "depleteItem", "(Ladd;)Ladd;", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(36, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_InvTools", "depleteItem", "(Ladd;)Ladd;", false);
- mv.visitInsn(ARETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("stack", "Ladd;", null, l0, l1, 0);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- didInject = true;
- }
- FMLRelaunchLog.log("[GT++ ASM] Railcraft negative ItemStack Fix", Level.INFO, "Method injection complete. "+(obfuscated ? "Obfuscated" : "Non-Obfuscated"));
- return didInject;
- }
-
-
-
-
-
-
-
-
-
- public class AddFieldAdapter extends ClassVisitor {
-
- public AddFieldAdapter(ClassVisitor cv) {
- super(ASM5, cv);
- this.cv = cv;
- }
-
- private final String[] aMethodsToStrip = new String[] {"depleteItem"};
-
-
- @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;
- break;
- }
- }
- if (!found) {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
- else {
- if (desc.equals("(Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack;")) {
- obfuscated = false;
- }
- else if (desc.equals("(Ladd;)Ladd;")) {
- obfuscated = true;
- }
- else {
- obfuscated = false;
- }
- FMLRelaunchLog.log("[GT++ ASM] Railcraft negative ItemStack Fix", Level.INFO,
- "Method desc " + desc + ", using "+(obfuscated ? "obfuscated method handler" : "deobfuscated method handler"));
- methodVisitor = null;
- }
-
- if (found) {
- FMLRelaunchLog.log("[GT++ ASM] Railcraft negative ItemStack Fix", Level.INFO,
- "Found method " + name + ", removing.");
- }
- return methodVisitor;
- }
-
-
- }
-
-
-
-
-
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ItemWispEssence.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ItemWispEssence.java
deleted file mode 100644
index 8f65709478..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ItemWispEssence.java
+++ /dev/null
@@ -1,278 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.AALOAD;
-import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
-import static org.objectweb.asm.Opcodes.ACONST_NULL;
-import static org.objectweb.asm.Opcodes.ALOAD;
-import static org.objectweb.asm.Opcodes.ARETURN;
-import static org.objectweb.asm.Opcodes.ARRAYLENGTH;
-import static org.objectweb.asm.Opcodes.ASM5;
-import static org.objectweb.asm.Opcodes.ASTORE;
-import static org.objectweb.asm.Opcodes.DUP;
-import static org.objectweb.asm.Opcodes.F_APPEND;
-import static org.objectweb.asm.Opcodes.F_CHOP;
-import static org.objectweb.asm.Opcodes.F_SAME;
-import static org.objectweb.asm.Opcodes.F_SAME1;
-import static org.objectweb.asm.Opcodes.GETSTATIC;
-import static org.objectweb.asm.Opcodes.GOTO;
-import static org.objectweb.asm.Opcodes.I2L;
-import static org.objectweb.asm.Opcodes.ICONST_0;
-import static org.objectweb.asm.Opcodes.IFEQ;
-import static org.objectweb.asm.Opcodes.IFLE;
-import static org.objectweb.asm.Opcodes.IFNONNULL;
-import static org.objectweb.asm.Opcodes.IFNULL;
-import static org.objectweb.asm.Opcodes.ILOAD;
-import static org.objectweb.asm.Opcodes.INVOKESPECIAL;
-import static org.objectweb.asm.Opcodes.INVOKESTATIC;
-import static org.objectweb.asm.Opcodes.INVOKEVIRTUAL;
-import static org.objectweb.asm.Opcodes.IRETURN;
-import static org.objectweb.asm.Opcodes.ISTORE;
-import static org.objectweb.asm.Opcodes.L2I;
-import static org.objectweb.asm.Opcodes.LDIV;
-import static org.objectweb.asm.Opcodes.LREM;
-import static org.objectweb.asm.Opcodes.NEW;
-
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.AnnotationVisitor;
-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 cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gtPlusPlus.preloader.DevHelper;
-
-public class ClassTransformer_TC_ItemWispEssence {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- 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";
- 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);
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- }
- else {
- isValid = false;
- }
- FMLRelaunchLog.log("[GT++ ASM] Thaumcraft WispEssence_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 injectMethod(String aMethodName, ClassWriter cw, boolean obfuscated) {
- MethodVisitor mv;
- boolean didInject = false;
- FMLRelaunchLog.log("[GT++ ASM] Thaumcraft WispEssence_Patch", Level.INFO, "Injecting " + aMethodName + ".");
-
- String aGetColour = obfuscated ? "func_82790_a" : "getColorFromItemStack";
- String aHasTagCompound = obfuscated ? "func_77942_o" : "hasTagCompound";
- String aGetTagCompound = obfuscated ? "func_77978_p" : "getTagCompound";
-
- if (aMethodName.equals("getAspects")) {
- mv = cw.visitMethod(ACC_PUBLIC, "getAspects", "(Lnet/minecraft/item/ItemStack;)Lthaumcraft/api/aspects/AspectList;", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(141, l0);
- mv.visitVarInsn(ALOAD, 1);
- Label l1 = new Label();
- mv.visitJumpInsn(IFNONNULL, l1);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(142, l2);
- mv.visitInsn(ACONST_NULL);
- mv.visitInsn(ARETURN);
- mv.visitLabel(l1);
- mv.visitLineNumber(144, l1);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", aHasTagCompound, "()Z", false);
- Label l3 = new Label();
- mv.visitJumpInsn(IFEQ, l3);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(145, l4);
- mv.visitTypeInsn(NEW, "thaumcraft/api/aspects/AspectList");
- mv.visitInsn(DUP);
- mv.visitMethodInsn(INVOKESPECIAL, "thaumcraft/api/aspects/AspectList", "<init>", "()V", false);
- mv.visitVarInsn(ASTORE, 2);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(146, l5);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", aGetTagCompound, "()Lnet/minecraft/nbt/NBTTagCompound;", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "thaumcraft/api/aspects/AspectList", "readFromNBT", "(Lnet/minecraft/nbt/NBTTagCompound;)V", false);
- Label l6 = new Label();
- mv.visitLabel(l6);
- mv.visitLineNumber(147, l6);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitMethodInsn(INVOKEVIRTUAL, "thaumcraft/api/aspects/AspectList", "size", "()I", false);
- Label l7 = new Label();
- mv.visitJumpInsn(IFLE, l7);
- mv.visitVarInsn(ALOAD, 2);
- Label l8 = new Label();
- mv.visitJumpInsn(GOTO, l8);
- mv.visitLabel(l7);
- mv.visitFrame(F_APPEND,1, new Object[] {"thaumcraft/api/aspects/AspectList"}, 0, null);
- mv.visitInsn(ACONST_NULL);
- mv.visitLabel(l8);
- mv.visitFrame(F_SAME1, 0, null, 1, new Object[] {"thaumcraft/api/aspects/AspectList"});
- mv.visitInsn(ARETURN);
- mv.visitLabel(l3);
- mv.visitLineNumber(149, l3);
- mv.visitFrame(F_CHOP,1, null, 0, null);
- mv.visitInsn(ACONST_NULL);
- mv.visitInsn(ARETURN);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLocalVariable("this", "LgtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ItemWispEssence;", null, l0, l9, 0);
- mv.visitLocalVariable("itemstack", "Lnet/minecraft/item/ItemStack;", null, l0, l9, 1);
- mv.visitLocalVariable("aspects", "Lthaumcraft/api/aspects/AspectList;", null, l5, l3, 2);
- mv.visitMaxs(2, 3);
- mv.visitEnd();
- didInject = true;
- }
- else if (aMethodName.equals(aGetColour)) {
-
- //thaumcraft/common/items/ItemWispEssence
- mv = cw.visitMethod(ACC_PUBLIC, aGetColour, "(Lnet/minecraft/item/ItemStack;I)I", null, null);
- AnnotationVisitor av0;
- {
- av0 = mv.visitAnnotation("Lcpw/mods/fml/relauncher/SideOnly;", true);
- av0.visitEnum("value", "Lcpw/mods/fml/relauncher/Side;", "CLIENT");
- av0.visitEnd();
- }
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(197, l0);
- mv.visitVarInsn(ALOAD, 1);
- Label l1 = new Label();
- mv.visitJumpInsn(IFNONNULL, l1);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(198, l2);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l1);
- mv.visitLineNumber(200, l1);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "thaumcraft/common/items/ItemWispEssence", "getAspects", "(Lnet/minecraft/item/ItemStack;)Lthaumcraft/api/aspects/AspectList;", false);
- Label l3 = new Label();
- mv.visitJumpInsn(IFNULL, l3);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(201, l4);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "thaumcraft/common/items/ItemWispEssence", "getAspects", "(Lnet/minecraft/item/ItemStack;)Lthaumcraft/api/aspects/AspectList;", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "thaumcraft/api/aspects/AspectList", "getAspects", "()[Lthaumcraft/api/aspects/Aspect;", false);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- mv.visitMethodInsn(INVOKEVIRTUAL, "thaumcraft/api/aspects/Aspect", "getColor", "()I", false);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l3);
- mv.visitLineNumber(203, l3);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/System", "currentTimeMillis", "()J", false);
- mv.visitLdcInsn(new Long(500L));
- mv.visitInsn(LDIV);
- mv.visitFieldInsn(GETSTATIC, "thaumcraft/common/items/ItemWispEssence", "displayAspects", "[Lthaumcraft/api/aspects/Aspect;");
- mv.visitInsn(ARRAYLENGTH);
- mv.visitInsn(I2L);
- mv.visitInsn(LREM);
- mv.visitInsn(L2I);
- mv.visitVarInsn(ISTORE, 3);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(204, l5);
- mv.visitFieldInsn(GETSTATIC, "thaumcraft/common/items/ItemWispEssence", "displayAspects", "[Lthaumcraft/api/aspects/Aspect;");
- mv.visitVarInsn(ILOAD, 3);
- mv.visitInsn(AALOAD);
- mv.visitMethodInsn(INVOKEVIRTUAL, "thaumcraft/api/aspects/Aspect", "getColor", "()I", false);
- mv.visitInsn(IRETURN);
- Label l6 = new Label();
- mv.visitLabel(l6);
- mv.visitLocalVariable("this", "Lthaumcraft/common/items/ItemWispEssence;", null, l0, l6, 0);
- mv.visitLocalVariable("stack", "Lnet/minecraft/item/ItemStack;", null, l0, l6, 1);
- mv.visitLocalVariable("par2", "I", null, l0, l6, 2);
- mv.visitLocalVariable("idx", "I", null, l5, l6, 3);
- mv.visitMaxs(4, 4);
- mv.visitEnd();
- didInject = true;
- }
-
- FMLRelaunchLog.log("[GT++ ASM] Thaumcraft WispEssence_Patch", Level.INFO, "Method injection complete. "+(obfuscated ? "Obfuscated" : "Non-Obfuscated"));
- return didInject;
- }
-
- public class AddAdapter extends ClassVisitor {
-
- public AddAdapter(ClassVisitor cv, String[] aMethods) {
- super(ASM5, cv);
- this.cv = cv;
- this.aMethodsToStrip = aMethods;
- }
-
- private final String[] aMethodsToStrip;
-
-
- @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;
- break;
- }
- }
- if (!found) {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
- else {
- methodVisitor = null;
- }
-
- if (found) {
- FMLRelaunchLog.log("[GT++ ASM] Thaumcraft WispEssence_Patch", Level.INFO,
- "Found method " + name + ", removing.");
- }
- return methodVisitor;
- }
-
- }
-
-
-
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TT_ThaumicRestorer.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TT_ThaumicRestorer.java
deleted file mode 100644
index 05b8054ff8..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TT_ThaumicRestorer.java
+++ /dev/null
@@ -1,611 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.*;
-
-import cpw.mods.fml.common.Loader;
-import gtPlusPlus.core.util.reflect.ReflectionUtils;
-import gtPlusPlus.preloader.Preloader_Logger;
-import net.minecraft.item.ItemStack;
-import net.minecraft.tileentity.TileEntity;
-
-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 = (boolean) 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 (Loader.isModLoaded("TConstruct") && 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("TConstruct");
- 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/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TiConFluids.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TiConFluids.java
deleted file mode 100644
index 083041050d..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TiConFluids.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import java.io.IOException;
-
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.Label;
-import org.objectweb.asm.MethodVisitor;
-
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gtPlusPlus.preloader.DevHelper;
-
-
-public class ClassTransformer_TiConFluids {
-
-
- //Leftover Code, in case I ever want to inject interfaces.
- //private static final String cloneableInterface = "java/lang/Cloneable";
-
- //The qualified name of the class we plan to transform.
- private static final String className = "tconstruct.smeltery.blocks.TConstructFluid";
-
- private final boolean isValid;
- private final boolean isObfuscated;
- private final String methodName;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- public ClassTransformer_TiConFluids(String aMethodName, boolean obfuscated, byte[] basicClass) {
- isObfuscated = obfuscated;
-
- methodName = obfuscated ? DevHelper.getSRG(aMethodName) : aMethodName;
-
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new localClassVisitir(aTempWriter, isObfuscated), 0);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- }
- else {
- isValid = false;
- }
- reader = aTempReader;
- writer = aTempWriter;
-
- if (reader != null && writer != null) {
- injectMethod();
- }
-
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public void injectMethod() {
- if (isValidTransformer()) {
- FMLRelaunchLog.log("[GT++ ASM] Bright Fluids", Level.INFO, "Injecting "+methodName+" into "+className+". ["+(isObfuscated ? "Obfuscated" : "Unobfuscated")+"]");
- //Account for Obfuscated constructor args.
- String IBlockAccessName = isObfuscated ? "ahl" : "net/minecraft/world/IBlockAccess";
- String aConstructorTypes = "(L"+IBlockAccessName+";III)I";
-
- MethodVisitor mv = getWriter().visitMethod(ACC_PUBLIC, methodName, aConstructorTypes, null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(17, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "tconstruct/smeltery/blocks/TConstructFluid", "maxScaledLight", "I");
- mv.visitVarInsn(ISTORE, 5);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(18, l1);
- mv.visitVarInsn(ILOAD, 5);
- Label l2 = new Label();
- mv.visitJumpInsn(IFLE, l2);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(19, l3);
- mv.visitVarInsn(ILOAD, 5);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l2);
- mv.visitLineNumber(21, l2);
- mv.visitFrame(F_APPEND,1, new Object[] {INTEGER}, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitVarInsn(ILOAD, 4);
- //net.minecraftforge.fluids.BlockFluidClassic.getLightValue(IBlockAccess, int, int, int)
- mv.visitMethodInsn(INVOKESPECIAL, "net/minecraftforge/fluids/BlockFluidClassic", methodName, aConstructorTypes, false);
- mv.visitInsn(IRETURN);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLocalVariable("this", "Ltconstruct/smeltery/blocks/TConstructFluid;", null, l0, l4, 0);
- mv.visitLocalVariable("world", "L"+IBlockAccessName+";", null, l0, l4, 1);
- mv.visitLocalVariable("x", "I", null, l0, l4, 2);
- mv.visitLocalVariable("y", "I", null, l0, l4, 3);
- mv.visitLocalVariable("z", "I", null, l0, l4, 4);
- mv.visitLocalVariable("maxLight", "I", null, l1, l4, 5);
- mv.visitMaxs(5, 6);
- mv.visitEnd();
- FMLRelaunchLog.log("[GT++ ASM] Bright Fluids", Level.INFO, "Method injection complete.");
-
- }
- }
-
- public final class localClassVisitir extends ClassVisitor {
-
- private final boolean mIsObfuscated;
-
- public localClassVisitir(ClassVisitor cv, boolean obfuscated) {
- super(ASM5, cv);
- mIsObfuscated = obfuscated;
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- String IBlockAccessName = isObfuscated ? "ahl" : "net/minecraft/world/IBlockAccess";
- String aConstructorTypes = "(L"+IBlockAccessName+";III)I";
- MethodVisitor methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- if(name.equals(methodName) && desc.equals(aConstructorTypes)) {
- FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Found target method. ["+mIsObfuscated+"]");
- return new localMethodVisitor(methodVisitor, mIsObfuscated);
- }
- return methodVisitor;
- }
-
- }
-
- private final class localMethodVisitor extends MethodVisitor {
-
- private final boolean mObfuscated;
-
- public localMethodVisitor(MethodVisitor mv, boolean obfuscated) {
- super(ASM5, mv);
- this.mObfuscated = obfuscated;
- }
-
- @Override
- public void visitCode() {
-
- }
-
- }
-
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer.java b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer.java
deleted file mode 100644
index 05a476c1c8..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.ALOAD;
-import static org.objectweb.asm.Opcodes.ASM5;
-import static org.objectweb.asm.Opcodes.IFEQ;
-import static org.objectweb.asm.Opcodes.INVOKESTATIC;
-import static org.objectweb.asm.Opcodes.RETURN;
-
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.Label;
-import org.objectweb.asm.MethodVisitor;
-
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-
-public class Preloader_ClassTransformer {
-
- public static final class OreDictionaryVisitor extends ClassVisitor {
-
- public OreDictionaryVisitor(ClassVisitor cv) {
- super(ASM5, cv);
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- MethodVisitor methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- if(name.equals("registerOreImpl") && desc.equals("(Ljava/lang/String;Lnet/minecraft/item/ItemStack;)V")) {
- FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Found target method. [Unobfuscated]");
- return new RegisterOreImplVisitor(methodVisitor, false);
- }
- else if(name.equals("registerOreImpl") && desc.equals("(Ljava/lang/String;Ladd;)V")) {
- FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Found target method. [Obfuscated]");
- return new RegisterOreImplVisitor(methodVisitor, true);
- }
- return methodVisitor;
- }
-
- }
-
- private static final class RegisterOreImplVisitor extends MethodVisitor {
-
- private final boolean mObfuscated;
-
- public RegisterOreImplVisitor(MethodVisitor mv, boolean obfuscated) {
- super(ASM5, mv);
- this.mObfuscated = obfuscated;
- }
-
- @Override
- public void visitCode() {
- FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Fixing Forge's poor attempt at an oreDictionary.");
- super.visitCode();
- super.visitVarInsn(ALOAD, 0);
- super.visitVarInsn(ALOAD, 1);
- if (!mObfuscated){
- FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Injecting target method. [Unobfuscated]");
- super.visitMethodInsn(INVOKESTATIC,
- "gtPlusPlus/preloader/Preloader_GT_OreDict",
- "shouldPreventRegistration",
- "(Ljava/lang/String;Lnet/minecraft/item/ItemStack;)Z",
- false);
- }
- else {
- FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Injecting target method. [Obfuscated]");
- super.visitMethodInsn(INVOKESTATIC,
- "gtPlusPlus/preloader/Preloader_GT_OreDict",
- "shouldPreventRegistration",
- "(Ljava/lang/String;Ladd;)Z",
- false);
- }
- Label endLabel = new Label();
- super.visitJumpInsn(IFEQ, endLabel);
- super.visitInsn(RETURN);
- super.visitLabel(endLabel);
- }
-
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java
deleted file mode 100644
index 443337bd35..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java
+++ /dev/null
@@ -1,16 +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/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
deleted file mode 100644
index 698edf0b56..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
+++ /dev/null
@@ -1,286 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import cpw.mods.fml.relauncher.CoreModManager;
-import cpw.mods.fml.relauncher.ReflectionHelper;
-import gtPlusPlus.api.objects.data.AutoMap;
-import gtPlusPlus.preloader.CORE_Preloader;
-import gtPlusPlus.preloader.DevHelper;
-import gtPlusPlus.preloader.Preloader_Logger;
-import gtPlusPlus.preloader.asm.AsmConfig;
-import gtPlusPlus.preloader.asm.transformers.Preloader_ClassTransformer.OreDictionaryVisitor;
-import net.minecraft.launchwrapper.IClassTransformer;
-import net.minecraft.launchwrapper.Launch;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassWriter;
-
-import java.io.File;
-import java.io.IOException;
-
-import static gtPlusPlus.preloader.asm.ClassesToTransform.*;
-
-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>();
-
- 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;
- }
-
- public byte[] transform(String name, String transformedName, byte[] basicClass) {
- /*
- * Here we patch all instances of entity.setHealth and replace them with a static function.
- * Only EntityLivingBase is left untouched, as nothing else truly needs to be calling this method and avoiding forge hooks.
- * May exclude all vanilla/forge class if this causes issues though.
- */
- /* PatchForge : if (AsmConfig.enabledFixEntitySetHealth && !transformedName.contains("gtPlusPlus.preloader")) {
-
- //Skip Vanilla/Forge Classes
- if (transformedName.contains("net.minecraft.") || transformedName.contains("cpw.")) {
- //break PatchForge;
- }
-
- ClassTransformer_Forge_EntityLivingBase_SetHealth aForgeHealthFix = new ClassTransformer_Forge_EntityLivingBase_SetHealth(transformedName, basicClass);
- if (aForgeHealthFix.isValidTransformer() && aForgeHealthFix.didPatchClass()) {
- Preloader_Logger.INFO("Fix EntityLivingBase.setHealth misuse", "Transforming "+transformedName);
- basicClass = aForgeHealthFix.getWriter().toByteArray();
- }
- }*/
-
- // Is this environment obfuscated? (Extra checks just in case some weird shit 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) {
- boolean isClientSettingsClass = false;
- if (!transformedName.equals("org.lwjgl.input.Keyboard")) {
- isClientSettingsClass = true;
- }
- Preloader_Logger.INFO("LWJGL Keybinding index out of bounds fix", "Transforming "+transformedName);
- return new ClassTransformer_LWJGL_Keyboard(basicClass, isClientSettingsClass).getWriter().toByteArray();
- }
-
- //Enable mapping of Tickets and loaded chunks. - Forge
- if (transformedName.equals(FORGE_CHUNK_MANAGER) && AsmConfig.enableChunkDebugging) {
- Preloader_Logger.INFO("Chunkloading Patch", "Transforming "+transformedName);
- return new ClassTransformer_Forge_ChunkLoading(basicClass, false).getWriter().toByteArray();
- }
-
- // Fix the OreDictionary - Forge
- if (transformedName.equals(FORGE_ORE_DICTIONARY) && AsmConfig.enableOreDictPatch) {
- Preloader_Logger.INFO("OreDictTransformer", "Transforming "+transformedName);
- ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
- new ClassReader(basicClass).accept(new OreDictionaryVisitor(classWriter), 0);
- return classWriter.toByteArray();
- }
-
- // Log Handling of CodeChicken
- if (transformedName.equals("codechicken.nei.guihook.GuiContainerManager")) {
- Preloader_Logger.INFO("CodeChicken GuiContainerManager Patch", "Transforming "+transformedName);
- return new ClassTransformer_CC_GuiContainerManager(basicClass).getWriter().toByteArray();
- }
- // Fix the OreDictionary COFH
- if (transformedName.equals(COFH_ORE_DICTIONARY_ARBITER) && (AsmConfig.enableCofhPatch || !obfuscated)) {
- Preloader_Logger.INFO("COFH", "Transforming "+transformedName);
- return new ClassTransformer_COFH_OreDictionaryArbiter(basicClass).getWriter().toByteArray();
- }
-
- // Fix Tinkers Fluids
- if (transformedName.equals(TINKERS_FLUID_BLOCK) && AsmConfig.enableTiConFluidLighting) {
- Preloader_Logger.INFO("Bright Fluids", "Transforming "+transformedName);
- return new ClassTransformer_TiConFluids("getLightValue", obfuscated, basicClass).getWriter().toByteArray();
- }
-
- //Fix RC stuff
- //Patching PROCESS_VOLUME to allow more transfer limits
- if (transformedName.equals(RAILCRAFT_FLUID_HELPER) && (AsmConfig.enableRcFlowFix && AsmConfig.maxRailcraftTankProcessVolume != 4000)) {
- Preloader_Logger.INFO("Railcraft PROCESS_VOLUME Patch", "Transforming "+transformedName);
- return new ClassTransformer_Railcraft_FluidHelper(basicClass, obfuscated).getWriter().toByteArray();
- }
- //Patching TRANSFER_RATE in Fluid Loaders/Unloaders
- if ((transformedName.equals(RAILCRAFT_TILE_FLUID_LOADER) && AsmConfig.maxRailcraftFluidLoaderFlow != 20) || (transformedName.equals("mods.railcraft.common.blocks.machine.gamma.TileFluidUnloader") && AsmConfig.maxRailcraftFluidUnloaderFlow != 80)) {
- Preloader_Logger.INFO("Railcraft TRANSFER_RATE Patch", "Transforming "+transformedName);
- return new ClassTransformer_Railcraft_FluidCartHandling(basicClass, obfuscated, transformedName).getWriter().toByteArray();
- }
- //Fix Weird glitch involving negative itemstacks.
- if (transformedName.equals(RAILCRAFT_INVENTORY_TOOLS) && AsmConfig.enableRcItemDupeFix) {
- Preloader_Logger.INFO("Railcraft negative ItemStack Fix", "Transforming "+transformedName);
- return new ClassTransformer_Railcraft_InvTools(basicClass, obfuscated).getWriter().toByteArray();
- }
-
- //Fix GC stuff
- if (AsmConfig.enableGcFuelChanges) {
- if (transformedName.equals(GALACTICRAFT_FLUID_UTILS)) {
- Preloader_Logger.INFO("Galacticraft FluidUtils Patch", "Transforming "+transformedName);
- return new ClassTransformer_GC_FluidUtil(basicClass, false).getWriter().toByteArray();
- }
- if (transformedName.equals(GALACTICRAFT_TILE_ENTITY_FUEL_LOADER)) {
- Preloader_Logger.INFO("Galacticraft Fuel_Loader Patch", "Transforming "+transformedName);
- return new ClassTransformer_GC_FuelLoader(basicClass, false).getWriter().toByteArray();
- }
- if (transformedName.equals(GALACTICRAFT_ENTITY_AUTO_ROCKET)) {
- Preloader_Logger.INFO("Galacticraft EntityAutoRocket Patch", "Transforming "+transformedName);
- return new ClassTransformer_GC_EntityAutoRocket(basicClass, false).getWriter().toByteArray();
- }
- }
-
-
- /**
- * Gregtech ASM Patches
- */
-
-// if (transformedName.equals(GT_UTILITY)) {
-// Preloader_Logger.INFO("Gregtech Utilities Patch", "Transforming "+transformedName);
-// return new ClassTransformer_GT_Utility(basicClass, transformedName).getWriter().toByteArray();
-// }
- //Inject Custom constructors for RTG Hatches
- if (transformedName.equals(GT_MTE_HATCH_ENERGY) || transformedName.equals(GTPP_MTE_HATCH_RTG)) {
- Preloader_Logger.INFO("Gregtech RTG Patch", "Transforming " + transformedName);
- return new ClassTransformer_GT_EnergyHatchPatch(basicClass, transformedName).getWriter().toByteArray();
- }
- //Try patch achievements
- if (transformedName.equals(GT_ACHIEVEMENTS)) {
- Preloader_Logger.INFO("Gregtech Achievements Patch", "Transforming " + transformedName);
- return new ClassTransformer_GT_Achievements_CrashFix(basicClass, obfuscated).getWriter().toByteArray();
- }
-
- //Fix bad handling of a loop left from original decompilation
- //Also Fix Achievements, although currently disabled.
- if (transformedName.equals(GT_CLIENT_PROXY)) {
- Preloader_Logger.INFO("Gregtech Client Proxy Patch", "Transforming " + transformedName);
- return new ClassTransformer_GT_Client(basicClass, obfuscated).getByteArray();
- }
-
- //Make GT packets safer, fill them with debug info.
- if (transformedName.equals(GT_PACKET_TILE_ENTITY)) {
- Preloader_Logger.INFO("Gregtech GT_Packet_TileEntity Patch", "Transforming "+transformedName);
- return new ClassTransformer_GT_Packet_TileEntity(basicClass, obfuscated).getWriter().toByteArray();
- }
- //Make the setting of GT Tiles safer, so as not to crash the client.
- if (transformedName.equals(GT_BASE_META_TILE_ENTITY)) {
- Preloader_Logger.INFO("Gregtech setMetaTileEntity Patch", "Transforming "+transformedName);
- return new ClassTransformer_GT_BaseMetaTileEntity(basicClass).getWriter().toByteArray();
- }
- //Add extra tools if we're in a dev environment.
- if (transformedName.equals(GT_METAGENERATED_TOOL) && CORE_Preloader.DEV_ENVIRONMENT) {
- Preloader_Logger.INFO("Gregtech Additional Tools Patch", "Transforming "+transformedName);
- return new ClassTransformer_GT_MetaGenerated_Tool(basicClass).getWriter().toByteArray();
- }
- //Fix log handling on the charcoal pit
- if (transformedName.equals(GT_MTE_CHARCOAL_PIT) && AsmConfig.enableGtCharcoalPitFix) {
- Preloader_Logger.INFO("GT Charcoal Pit Fix", "Transforming "+transformedName);
- return new ClassTransformer_GT_CharcoalPit(basicClass, obfuscated).getWriter().toByteArray();
- }
-
-
-
-
- //Patching Meta Tile Tooltips
- if (transformedName.equals(GT_ITEM_MACHINES) && AsmConfig.enableGtTooltipFix) {
- Preloader_Logger.INFO("Gregtech Tooltip Patch", "Transforming "+transformedName);
- return new ClassTransformer_GT_ItemMachines_Tooltip(basicClass, false).getWriter().toByteArray();
- }
-
-
- if (transformedName.equals(GT_BLOCK_MACHINES)) {
- //Fix GT NBT Persistency issue
- Preloader_Logger.INFO("Gregtech NBT Persistency Patch", "Transforming "+transformedName);
- byte[] g = new ClassTransformer_GT_BlockMachines_NBT(basicClass, false).getWriter().toByteArray();
- Preloader_Logger.INFO("Gregtech getTileEntityBaseType Patch", "Transforming "+transformedName);
- return new ClassTransformer_GT_BlockMachines_MetaPipeEntity(g, 0).getWriter().toByteArray();
- }
- if (transformedName.equals(GT_METAPIPE_ITEM) || transformedName.equals(GT_METAPIPE_FRAME) || transformedName.equals(GT_METAPIPE_FLUID)) {
- Preloader_Logger.INFO("Gregtech getTileEntityBaseType Patch", "Transforming "+transformedName);
- int mode = 0;
- if (transformedName.equals(GT_METAPIPE_ITEM)) {
- mode = 1;
- }
- else if (transformedName.equals(GT_METAPIPE_FRAME)) {
- mode = 2;
- }
- else {
- mode = 3;
- }
- return new ClassTransformer_GT_BlockMachines_MetaPipeEntity(basicClass, mode).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();
- }
- }
-
- //This is breaking IC2 Hazmat, moved to hodgepodge
-// if (transformedName.equals(IC2_ITEM_ARMOUR_HAZMAT)) {
-// Preloader_Logger.INFO("IC2 Hazmat Patch", "Transforming "+transformedName);
-// return new ClassTransformer_IC2_Hazmat(basicClass, transformedName).getWriter().toByteArray();
-// }
-
- //Fix Thaumcraft Shit
- //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();
- }
- //Fix Thaumic Tinkerer Shit
- if (transformedName.equals(THAUMICTINKERER_TILE_REPAIRER) && AsmConfig.enableThaumicTinkererRepairFix) {
- //Preloader_Logger.INFO("Thaumic Tinkerer RepairItem Patch", "Transforming "+transformedName);
- //return new ClassTransformer_TT_ThaumicRestorer(basicClass).getWriter().toByteArray();
- }
-
-
- return basicClass;
- }
-
-
-
-}