diff options
| author | Connor-Colenso <52056774+Connor-Colenso@users.noreply.github.com> | 2023-10-18 17:03:23 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-18 18:03:23 +0200 |
| commit | fbdbb388c369fae549cfde3eed38b536f7461d90 (patch) | |
| tree | b46f7fc949d7e4c6e3be910b81ed725e6dc1648e /src/main/java/gtPlusPlus/preloader/asm | |
| parent | b670446fdf49991093b485f0aa14050039632775 (diff) | |
| download | GT5-Unofficial-fbdbb388c369fae549cfde3eed38b536f7461d90.tar.gz GT5-Unofficial-fbdbb388c369fae549cfde3eed38b536f7461d90.tar.bz2 GT5-Unofficial-fbdbb388c369fae549cfde3eed38b536f7461d90.zip | |
Cleaning up (#767)
* Kill playerAPI
* Gut more events and compat that is now obsolete
* Remove commented out code
* Remove final modifier from methods
* Make more stuff final
* Remove slow building ring
* Protected -> private in final classes
* More cleaning
* More cleaning v2
* Purging
* Clean DevHelper
* Clean DevHelper 2
* delete DevHelper
* remove useless IFMLLoadingPlugin.MCVersion annotation from @Mod files
* check for obfuscation only once in the IFMLloadingPlugin.injectData
* don't instantiate the static class ASMConfig
* delete unused and empty implementation of IFMLCallHook
* delete empty class
* delete ClassesToTransform class that just holds the class names constants
* delete unused methods and unsless logging in dummymod container
* delete unused transformer ClassTransformer_TT_ThaumicRestorer
* spotless
* Clean
* Clean utils
* Build checkpoint
* Purge
* Stage 2
* Stage 3
* Stage 4
* Stage 5
* Stage 6
* Spotless
* Imports
* Stage idk
* Stage 1
* Fix issue
* Spotless
* Format numbers
---------
Co-authored-by: GTNH-Colen <54497873+GTNH-Colen@users.noreply.github.com>
Co-authored-by: Alexdoru <57050655+Alexdoru@users.noreply.github.com>
Co-authored-by: Connor Colenso <colen@CONNORSPC>
Diffstat (limited to 'src/main/java/gtPlusPlus/preloader/asm')
12 files changed, 1168 insertions, 2069 deletions
diff --git a/src/main/java/gtPlusPlus/preloader/asm/AsmConfig.java b/src/main/java/gtPlusPlus/preloader/asm/AsmConfig.java index 35684c267a..8cdc772c39 100644 --- a/src/main/java/gtPlusPlus/preloader/asm/AsmConfig.java +++ b/src/main/java/gtPlusPlus/preloader/asm/AsmConfig.java @@ -13,7 +13,6 @@ import gtPlusPlus.preloader.Preloader_Logger; public class AsmConfig { - public static boolean loaded; public static Configuration config; public static boolean enableOreDictPatch; @@ -30,16 +29,14 @@ public class AsmConfig { public static boolean disableAllLogging; public static boolean debugMode; - public AsmConfig(File file) { - if (!loaded) { - config = new Configuration(file); - syncConfig(true); - } + static { + config = new Configuration(new File("config/GTplusplus/asm.cfg")); + syncConfig(true); } public static void syncConfig(boolean load) { - ArrayList<String> propOrder = new ArrayList<String>(); - ArrayList<String> propOrderDebug = new ArrayList<String>(); + ArrayList<String> propOrder = new ArrayList<>(); + ArrayList<String> propOrderDebug = new ArrayList<>(); try { if (!config.isChild && load) { diff --git a/src/main/java/gtPlusPlus/preloader/asm/ClassesToTransform.java b/src/main/java/gtPlusPlus/preloader/asm/ClassesToTransform.java deleted file mode 100644 index d2a03b2522..0000000000 --- a/src/main/java/gtPlusPlus/preloader/asm/ClassesToTransform.java +++ /dev/null @@ -1,37 +0,0 @@ -package gtPlusPlus.preloader.asm; - -public class ClassesToTransform { - - public static final String LWJGL_KEYBOARD = "org.lwjgl.input.Keyboard"; - - public static final String MINECRAFT_GAMESETTINGS = "net.minecraft.client.settings.GameSettings"; - public static final String MINECRAFT_GAMESETTINGS_OBF = "bbj"; - - public static final String FORGE_CHUNK_MANAGER = "net.minecraftforge.common.ForgeChunkManager"; - public static final String FORGE_ORE_DICTIONARY = "net.minecraftforge.oredict.OreDictionary"; - - public static final String COFH_ORE_DICTIONARY_ARBITER = "cofh.core.util.oredict.OreDictionaryArbiter"; - - public static final String THAUMCRAFT_ITEM_WISP_ESSENCE = "thaumcraft.common.items.ItemWispEssence"; - public static final String THAUMCRAFT_CRAFTING_MANAGER = "thaumcraft.common.lib.crafting.ThaumcraftCraftingManager"; - public static final String THAUMCRAFT_TILE_ALCHEMY_FURNACE = "thaumcraft.common.tiles.TileAlchemyFurnace"; - public static final String THAUMICTINKERER_TILE_REPAIRER = "thaumic.tinkerer.common.block.tile.TileRepairer"; - - public static final String IC2_ITEM_ARMOUR_HAZMAT = "ic2.core.item.armor.ItemArmorHazmat"; - public static final String IC2_BLOCK_BASE_TILE_ENTITY = "ic2.core.block.BlockTileEntity"; - public static final String IC2_BLOCK_MACHINE1 = "ic2.core.block.machine.BlockMachine"; - public static final String IC2_BLOCK_MACHINE2 = "ic2.core.block.machine.BlockMachine2"; - public static final String IC2_BLOCK_MACHINE3 = "ic2.core.block.machine.BlockMachine3"; - public static final String IC2_BLOCK_KINETIC_GENERATOR = "ic2.core.block.kineticgenerator.block.BlockKineticGenerator"; - public static final String IC2_BLOCK_HEAT_GENERATOR = "ic2.core.block.heatgenerator.block.BlockHeatGenerator"; - public static final String IC2_BLOCK_GENERATOR = "ic2.core.block.generator.block.BlockGenerator"; - public static final String IC2_BLOCK_REACTOR_ACCESS_HATCH = "ic2.core.block.reactor.block.BlockReactorAccessHatch"; - public static final String IC2_BLOCK_REACTOR_CHAMBER = "ic2.core.block.reactor.block.BlockReactorChamber"; - public static final String IC2_BLOCK_REACTOR_FLUID_PORT = "ic2.core.block.reactor.block.BlockReactorFluidPort"; - public static final String IC2_BLOCK_REACTOR_REDSTONE_PORT = "ic2.core.block.reactor.block.BlockReactorRedstonePort"; - public static final String IC2_BLOCK_REACTOR_VESSEL = "ic2.core.block.reactor.block.BlockReactorVessel"; - public static final String IC2_BLOCK_PERSONAL = "ic2.core.block.personal.BlockPersonal.class"; - public static final String IC2_BLOCK_CHARGEPAD = "ic2.core.block.wiring.BlockChargepad.class"; - public static final String IC2_BLOCK_ELECTRIC = "ic2.core.block.wiring.BlockElectric.class"; - public static final String IC2_BLOCK_LUMINATOR = "ic2.core.block.wiring.BlockLuminator.class"; -} diff --git a/src/main/java/gtPlusPlus/preloader/asm/Preloader_DummyContainer.java b/src/main/java/gtPlusPlus/preloader/asm/Preloader_DummyContainer.java index 41cba8d85b..b157424e6e 100644 --- a/src/main/java/gtPlusPlus/preloader/asm/Preloader_DummyContainer.java +++ b/src/main/java/gtPlusPlus/preloader/asm/Preloader_DummyContainer.java @@ -4,7 +4,7 @@ import static gregtech.api.enums.Mods.GTPlusPlus; import static gregtech.api.enums.Mods.GregTech; import java.io.File; -import java.util.Arrays; +import java.util.Collections; import net.minecraftforge.common.config.Configuration; @@ -14,9 +14,6 @@ import com.google.common.eventbus.Subscribe; import cpw.mods.fml.common.DummyModContainer; import cpw.mods.fml.common.LoadController; import cpw.mods.fml.common.ModMetadata; -import cpw.mods.fml.common.event.FMLConstructionEvent; -import cpw.mods.fml.common.event.FMLInitializationEvent; -import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import gtPlusPlus.preloader.CORE_Preloader; import gtPlusPlus.preloader.Preloader_Logger; @@ -30,15 +27,9 @@ public class Preloader_DummyContainer extends DummyModContainer { meta.name = CORE_Preloader.NAME; meta.version = CORE_Preloader.VERSION; meta.credits = "Roll Credits ..."; - meta.authorList = Arrays.asList("Alkalus"); - meta.description = ""; - meta.url = ""; - meta.updateUrl = ""; + meta.authorList = Collections.singletonList("Alkalus"); meta.screenshots = new String[0]; - meta.logoFile = ""; meta.parent = GTPlusPlus.ID; - // meta.dependencies = (List<ArtifactVersion>) CORE_Preloader.DEPENDENCIES; - Preloader_Logger.INFO("Initializing DummyModContainer"); } @Override @@ -48,27 +39,12 @@ public class Preloader_DummyContainer extends DummyModContainer { } @Subscribe - public void modConstruction(FMLConstructionEvent evt) { - Preloader_Logger.INFO("Constructing DummyModContainer"); - } - - @Subscribe public void preInit(FMLPreInitializationEvent event) { Preloader_Logger.INFO("Loading " + CORE_Preloader.MODID + " V" + CORE_Preloader.VERSION); // Handle GT++ Config handleConfigFile(event); } - @Subscribe - public void init(FMLInitializationEvent evt) { - Preloader_Logger.INFO("Begin resource allocation for " + CORE_Preloader.MODID + " V" + CORE_Preloader.VERSION); - } - - @Subscribe - public void postInit(FMLPostInitializationEvent evt) { - Preloader_Logger.INFO("Finished loading."); - } - public static void handleConfigFile(final FMLPreInitializationEvent event) { final Configuration config = new Configuration( new File(event.getModConfigurationDirectory(), "GTplusplus/GTplusplus.cfg")); @@ -91,29 +67,4 @@ public class Preloader_DummyContainer extends DummyModContainer { "Restores circuits and their recipes from Pre-5.09.28 times."); } - public static boolean getConfig() { - final Configuration config = new Configuration( - new File(gtPlusPlus.preloader.CORE_Preloader.MC_DIR, "config/GTplusplus/GTplusplus.cfg")); - if (config != null) { - config.load(); - // Circuits - CORE_Preloader.enableOldGTcircuits = config.getBoolean( - "enableOldGTcircuits", - GregTech.ID, - false, - "Restores circuits and their recipes from Pre-5.09.28 times."); - CORE_Preloader.enableWatchdogBGM = config.getInt( - "enableWatchdogBGM", - "features", - 0, - 0, - Short.MAX_VALUE, - "Set to a value greater than 0 to reduce the ticks taken to delay between BGM tracks. Acceptable Values are 1-32767, where 0 is disabled. Vanilla Uses 12,000 & 24,000. 200 is 10s."); - - Preloader_Logger.INFO("Loaded the configuration file."); - return true; - } - Preloader_Logger.INFO("Failed loading the configuration file."); - return false; - } } diff --git a/src/main/java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java b/src/main/java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java index 16095d00e4..cdd25bb268 100644 --- a/src/main/java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java +++ b/src/main/java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java @@ -1,18 +1,12 @@ package gtPlusPlus.preloader.asm; import java.io.File; -import java.text.NumberFormat; -import java.util.Locale; import java.util.Map; -import net.minecraft.launchwrapper.Launch; - import cpw.mods.fml.relauncher.IFMLLoadingPlugin; import cpw.mods.fml.relauncher.IFMLLoadingPlugin.MCVersion; import cpw.mods.fml.relauncher.IFMLLoadingPlugin.SortingIndex; -import gtPlusPlus.core.util.reflect.ReflectionUtils; import gtPlusPlus.preloader.CORE_Preloader; -import gtPlusPlus.preloader.Preloader_Logger; import gtPlusPlus.preloader.asm.transformers.Preloader_Transformer_Handler; @SortingIndex(10097) @@ -21,12 +15,6 @@ import gtPlusPlus.preloader.asm.transformers.Preloader_Transformer_Handler; @IFMLLoadingPlugin.Name(CORE_Preloader.NAME) public class Preloader_FMLLoadingPlugin implements IFMLLoadingPlugin { - // -Dfml.coreMods.load=gtPlusPlus.preloader.asm.Preloader_FMLLoadingPlugin - - static { - Preloader_Logger.INFO("Initializing IFMLLoadingPlugin"); - } - @Override public String getAccessTransformerClass() { return null; @@ -34,61 +22,26 @@ public class Preloader_FMLLoadingPlugin implements IFMLLoadingPlugin { @Override public String[] getASMTransformerClass() { - // This will return the name of the class return new String[] { Preloader_Transformer_Handler.class.getName() }; } @Override public String getModContainerClass() { - // This is the name of our dummy container return Preloader_DummyContainer.class.getName(); } @Override public String getSetupClass() { - // return Preloader_SetupClass.class.getName(); return null; } @Override public void injectData(Map<String, Object> data) { - boolean isDeObf = (boolean) data.get("runtimeDeobfuscationEnabled"); + CORE_Preloader.DEV_ENVIRONMENT = !(boolean) data.get("runtimeDeobfuscationEnabled"); File mcDir = (File) data.get("mcLocation"); - // LaunchClassLoader classLoader = (LaunchClassLoader) data.get("classLoader"); - File coremodLocation = (File) data.get("coremodLocation"); - String deobfuscationFileName = (String) data.get("deobfuscationFileName"); if (mcDir != null && mcDir.exists()) { CORE_Preloader.setMinecraftDirectory(mcDir); - Preloader_Logger.INFO("Set McDir via Preloader_SetupClass"); - } - Preloader_Logger.INFO("runtimeDeobfuscationEnabled: " + isDeObf); - Preloader_Logger.INFO("deobfuscationFileName: " + deobfuscationFileName); - if (coremodLocation != null && coremodLocation.exists()) { - Preloader_Logger.INFO("coremodLocation: " + coremodLocation.getPath()); - } else { - Preloader_Logger.INFO("coremodLocation: null"); - Preloader_Logger.ERROR("Unable to determine CoreMod location"); } - CORE_Preloader.DEV_ENVIRONMENT = (Boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment"); CORE_Preloader.DEBUG_MODE = AsmConfig.debugMode; - Preloader_Logger.INFO( - "Running on " + gtPlusPlus.preloader.CORE_Preloader.JAVA_VERSION - + " | Development Environment: " - + CORE_Preloader.DEV_ENVIRONMENT); - // Preloader_Logger.INFO("Is Client? "+Utils.isClient()+" | Is Server? "+Utils.isServer()); - Locale aDefaultLocale = Locale.getDefault(); - NumberFormat aFormat = NumberFormat.getInstance(); - Locale aDisplayLocale = ReflectionUtils - .getFieldValue(ReflectionUtils.getField(Locale.class, "defaultDisplayLocale")); - Locale aFormatLocale = ReflectionUtils - .getFieldValue(ReflectionUtils.getField(Locale.class, "defaultFormatLocale")); - Preloader_Logger.INFO( - "Locale: " + aDefaultLocale - + " | Test: " - + aFormat.format(1000000000) - + " | Display: " - + aDisplayLocale - + " | Format: " - + aFormatLocale); } } diff --git a/src/main/java/gtPlusPlus/preloader/asm/Preloader_SetupClass.java b/src/main/java/gtPlusPlus/preloader/asm/Preloader_SetupClass.java deleted file mode 100644 index 28f28e783b..0000000000 --- a/src/main/java/gtPlusPlus/preloader/asm/Preloader_SetupClass.java +++ /dev/null @@ -1,18 +0,0 @@ -package gtPlusPlus.preloader.asm; - -import java.util.Map; - -import cpw.mods.fml.relauncher.IFMLCallHook; -import gtPlusPlus.preloader.Preloader_Logger; - -public class Preloader_SetupClass implements IFMLCallHook { - - @Override - public Void call() throws Exception { - Preloader_Logger.INFO("Executing IFMLCallHook"); - return null; - } - - @Override - public void injectData(Map<String, Object> data) {} -} diff --git a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java index 29998800a0..84fecda974 100644 --- a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java +++ b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java @@ -29,7 +29,6 @@ import cpw.mods.fml.relauncher.FMLRelaunchLog; import gnu.trove.map.TMap; import gnu.trove.map.hash.THashMap; import gtPlusPlus.core.util.reflect.ReflectionUtils; -import gtPlusPlus.preloader.DevHelper; public class ClassTransformer_COFH_OreDictionaryArbiter { @@ -75,14 +74,7 @@ public class ClassTransformer_COFH_OreDictionaryArbiter { public void injectMethod(String aMethodName) { - boolean isObfuscated; - try { - isObfuscated = Class.forName("net.minecraft.item.ItemStack") != null ? false : true; - } catch (ClassNotFoundException e) { - isObfuscated = true; - } - String aItemStack = isObfuscated ? DevHelper.getObfuscated("net/minecraft/item/ItemStack") - : "net/minecraft/item/ItemStack"; + String aItemStack = "net/minecraft/item/ItemStack"; MethodVisitor mv; if (aMethodName.equals("registerOreDictionaryEntry")) { FMLRelaunchLog.log( @@ -158,9 +150,9 @@ public class ClassTransformer_COFH_OreDictionaryArbiter { .getField(OreDictionaryArbiter.class, "stackNames").get(null); } catch (Throwable t) { oreIDs = HashBiMap.create(); - oreStacks = new THashMap<Integer, ArrayList<ItemStack>>(); - stackIDs = new THashMap<ItemWrapper, ArrayList<Integer>>(); - stackNames = new THashMap<ItemWrapper, ArrayList<String>>(); + oreStacks = new THashMap<>(); + stackIDs = new THashMap<>(); + stackNames = new THashMap<>(); } } @@ -173,13 +165,13 @@ public class ClassTransformer_COFH_OreDictionaryArbiter { int arg1 = OreDictionary.getOreID(arg0); oreIDs.put(arg0, Integer.valueOf(arg1)); if (!oreStacks.containsKey(Integer.valueOf(arg1))) { - oreStacks.put(Integer.valueOf(arg1), new ArrayList<ItemStack>()); + oreStacks.put(Integer.valueOf(arg1), new ArrayList<>()); } ((ArrayList<ItemStack>) oreStacks.get(Integer.valueOf(arg1))).add(arg); ItemWrapper arg2 = ItemWrapper.fromItemStack(arg); if (!stackIDs.containsKey(arg2)) { - stackIDs.put(arg2, new ArrayList<Integer>()); - stackNames.put(arg2, new ArrayList<String>()); + stackIDs.put(arg2, new ArrayList<>()); + stackNames.put(arg2, new ArrayList<>()); } ((ArrayList<Integer>) stackIDs.get(arg2)).add(Integer.valueOf(arg1)); ((ArrayList<String>) stackNames.get(arg2)).add(arg0); diff --git a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_ChunkLoading.java b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_ChunkLoading.java index cda4384f7d..9b6ec4bb25 100644 --- a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_ChunkLoading.java +++ b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_ChunkLoading.java @@ -50,7 +50,6 @@ import org.objectweb.asm.Label; import org.objectweb.asm.MethodVisitor; import cpw.mods.fml.relauncher.FMLRelaunchLog; -import gtPlusPlus.preloader.DevHelper; public class ClassTransformer_Forge_ChunkLoading { @@ -71,8 +70,8 @@ public class ClassTransformer_Forge_ChunkLoading { public ClassTransformer_Forge_ChunkLoading(byte[] basicClass, boolean obfuscated) { - ClassReader aTempReader = null; - ClassWriter aTempWriter = null; + ClassReader aTempReader; + ClassWriter aTempWriter; aTempReader = new ClassReader(basicClass); aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); @@ -88,11 +87,9 @@ public class ClassTransformer_Forge_ChunkLoading { if (reader != null && writer != null && !doesMethodAlreadyExist) { - aChunkCoordIntPair = obfuscated ? DevHelper.getObfuscated("net/minecraft/world/ChunkCoordIntPair") - : "net/minecraft/world/ChunkCoordIntPair"; - aWorld = obfuscated ? DevHelper.getObfuscated("net/minecraft/world/World") : "net/minecraft/world/World"; - aEntity = obfuscated ? DevHelper.getObfuscated("net/minecraft/entity/Entity") - : "net/minecraft/entity/Entity"; + aChunkCoordIntPair = "net/minecraft/world/ChunkCoordIntPair"; + aWorld = "net/minecraft/world/World"; + aEntity = "net/minecraft/entity/Entity"; injectMethod("forceChunk"); injectMethod("unforceChunk"); @@ -101,14 +98,6 @@ public class ClassTransformer_Forge_ChunkLoading { } } - public boolean isValidTransformer() { - return isValid; - } - - public ClassReader getReader() { - return reader; - } - public ClassWriter getWriter() { return writer; } @@ -119,993 +108,1115 @@ public class ClassTransformer_Forge_ChunkLoading { "[GT++ ASM] Chunkloading Patch", Level.INFO, "Injecting " + aMethodName + " into " + className + "."); - if (aMethodName.equals("forceChunk")) { + switch (aMethodName) { + case "forceChunk" -> { - mv = getWriter().visitMethod( - ACC_PUBLIC + ACC_STATIC, - "forceChunk", - "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;L" + aChunkCoordIntPair + ";)V", - null, - null); - mv.visitCode(); - Label l0 = new Label(); - mv.visitLabel(l0); - mv.visitLineNumber(730, l0); - mv.visitVarInsn(ALOAD, 0); - Label l1 = new Label(); - mv.visitJumpInsn(IFNULL, l1); - mv.visitVarInsn(ALOAD, 1); - Label l2 = new Label(); - mv.visitJumpInsn(IFNONNULL, l2); - mv.visitLabel(l1); - mv.visitLineNumber(732, l1); - mv.visitFrame(F_SAME, 0, null, 0, null); - mv.visitInsn(RETURN); - mv.visitLabel(l2); - mv.visitLineNumber(734, l2); - mv.visitFrame(F_SAME, 0, null, 0, null); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKESTATIC, - "net/minecraftforge/common/ForgeChunkManager$Ticket", - "access$500", - "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Lnet/minecraftforge/common/ForgeChunkManager$Type;", - false); - mv.visitFieldInsn( - GETSTATIC, - "net/minecraftforge/common/ForgeChunkManager$Type", - "ENTITY", - "Lnet/minecraftforge/common/ForgeChunkManager$Type;"); - Label l3 = new Label(); - mv.visitJumpInsn(IF_ACMPNE, l3); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKESTATIC, - "net/minecraftforge/common/ForgeChunkManager$Ticket", - "access$600", - "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)L" + aEntity + ";", - false); - mv.visitJumpInsn(IFNONNULL, l3); - Label l4 = new Label(); - mv.visitLabel(l4); - mv.visitLineNumber(736, l4); - mv.visitTypeInsn(NEW, "java/lang/RuntimeException"); - mv.visitInsn(DUP); - mv.visitLdcInsn("Attempted to use an entity ticket to force a chunk, without an entity"); - mv.visitMethodInsn(INVOKESPECIAL, "java/lang/RuntimeException", "<init>", "(Ljava/lang/String;)V", false); - mv.visitInsn(ATHROW); - mv.visitLabel(l3); - mv.visitLineNumber(738, l3); - mv.visitFrame(F_SAME, 0, null, 0, null); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKEVIRTUAL, - "net/minecraftforge/common/ForgeChunkManager$Ticket", - "isPlayerTicket", - "()Z", - false); - Label l5 = new Label(); - mv.visitJumpInsn(IFEQ, l5); - mv.visitFieldInsn( - GETSTATIC, - "net/minecraftforge/common/ForgeChunkManager", - "playerTickets", - "Lcom/google/common/collect/SetMultimap;"); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKEINTERFACE, - "com/google/common/collect/SetMultimap", - "containsValue", - "(Ljava/lang/Object;)Z", - true); - Label l6 = new Label(); - mv.visitJumpInsn(IFNE, l6); - Label l7 = new Label(); - mv.visitJumpInsn(GOTO, l7); - mv.visitLabel(l5); - mv.visitFrame(F_SAME, 0, null, 0, null); - mv.visitFieldInsn(GETSTATIC, "net/minecraftforge/common/ForgeChunkManager", "tickets", "Ljava/util/Map;"); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - "net/minecraftforge/common/ForgeChunkManager$Ticket", - "world", - "L" + aWorld + ";"); - mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;", true); - mv.visitTypeInsn(CHECKCAST, "com/google/common/collect/Multimap"); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKESTATIC, - "net/minecraftforge/common/ForgeChunkManager$Ticket", - "access$200", - "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/lang/String;", - false); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKEINTERFACE, - "com/google/common/collect/Multimap", - "containsEntry", - "(Ljava/lang/Object;Ljava/lang/Object;)Z", - true); - mv.visitJumpInsn(IFNE, l6); - mv.visitLabel(l7); - mv.visitLineNumber(740, l7); - mv.visitFrame(F_SAME, 0, null, 0, null); - mv.visitLdcInsn( - "The mod %s attempted to force load a chunk with an invalid ticket. This is not permitted."); - mv.visitInsn(ICONST_1); - mv.visitTypeInsn(ANEWARRAY, "java/lang/Object"); - mv.visitInsn(DUP); - mv.visitInsn(ICONST_0); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKESTATIC, - "net/minecraftforge/common/ForgeChunkManager$Ticket", - "access$200", - "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/lang/String;", - false); - mv.visitInsn(AASTORE); - mv.visitMethodInsn( - INVOKESTATIC, - "cpw/mods/fml/common/FMLLog", - "severe", - "(Ljava/lang/String;[Ljava/lang/Object;)V", - false); - Label l8 = new Label(); - mv.visitLabel(l8); - mv.visitLineNumber(741, l8); - mv.visitInsn(RETURN); - mv.visitLabel(l6); - mv.visitLineNumber(743, l6); - mv.visitFrame(F_SAME, 0, null, 0, null); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKESTATIC, - "net/minecraftforge/common/ForgeChunkManager$Ticket", - "access$700", - "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/util/LinkedHashSet;", - false); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/LinkedHashSet", "add", "(Ljava/lang/Object;)Z", false); - mv.visitInsn(POP); - Label l9 = new Label(); - mv.visitLabel(l9); - mv.visitLineNumber(744, l9); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn( - INVOKESTATIC, - "gtPlusPlus/preloader/ChunkDebugger", - "storeLoadChunkToCache", - "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;L" + aChunkCoordIntPair + ";)V", - false); - Label l10 = new Label(); - mv.visitLabel(l10); - mv.visitLineNumber(745, l10); - mv.visitFieldInsn( - GETSTATIC, - "net/minecraftforge/common/MinecraftForge", - "EVENT_BUS", - "Lcpw/mods/fml/common/eventhandler/EventBus;"); - mv.visitTypeInsn(NEW, "net/minecraftforge/common/ForgeChunkManager$ForceChunkEvent"); - mv.visitInsn(DUP); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn( - INVOKESPECIAL, - "net/minecraftforge/common/ForgeChunkManager$ForceChunkEvent", - "<init>", - "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;L" + aChunkCoordIntPair + ";)V", - false); - mv.visitMethodInsn( - INVOKEVIRTUAL, - "cpw/mods/fml/common/eventhandler/EventBus", - "post", - "(Lcpw/mods/fml/common/eventhandler/Event;)Z", - false); - mv.visitInsn(POP); - Label l11 = new Label(); - mv.visitLabel(l11); - mv.visitLineNumber(747, l11); - mv.visitMethodInsn( - INVOKESTATIC, - "com/google/common/collect/ImmutableSetMultimap", - "builder", - "()Lcom/google/common/collect/ImmutableSetMultimap$Builder;", - false); - mv.visitFieldInsn( - GETSTATIC, - "net/minecraftforge/common/ForgeChunkManager", - "forcedChunks", - "Ljava/util/Map;"); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - "net/minecraftforge/common/ForgeChunkManager$Ticket", - "world", - "L" + aWorld + ";"); - mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;", true); - mv.visitTypeInsn(CHECKCAST, "com/google/common/collect/Multimap"); - mv.visitMethodInsn( - INVOKEVIRTUAL, - "com/google/common/collect/ImmutableSetMultimap$Builder", - "putAll", - "(Lcom/google/common/collect/Multimap;)Lcom/google/common/collect/ImmutableSetMultimap$Builder;", - false); - mv.visitVarInsn(ALOAD, 1); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKEVIRTUAL, - "com/google/common/collect/ImmutableSetMultimap$Builder", - "put", - "(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableSetMultimap$Builder;", - false); - mv.visitMethodInsn( - INVOKEVIRTUAL, - "com/google/common/collect/ImmutableSetMultimap$Builder", - "build", - "()Lcom/google/common/collect/ImmutableSetMultimap;", - false); - mv.visitVarInsn(ASTORE, 2); - Label l12 = new Label(); - mv.visitLabel(l12); - mv.visitLineNumber(748, l12); - mv.visitFieldInsn( - GETSTATIC, - "net/minecraftforge/common/ForgeChunkManager", - "forcedChunks", - "Ljava/util/Map;"); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - "net/minecraftforge/common/ForgeChunkManager$Ticket", - "world", - "L" + aWorld + ";"); - mv.visitVarInsn(ALOAD, 2); - mv.visitMethodInsn( - INVOKEINTERFACE, - "java/util/Map", - "put", - "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", - true); - mv.visitInsn(POP); - Label l13 = new Label(); - mv.visitLabel(l13); - mv.visitLineNumber(749, l13); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKESTATIC, - "net/minecraftforge/common/ForgeChunkManager$Ticket", - "access$800", - "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)I", - false); - Label l14 = new Label(); - mv.visitJumpInsn(IFLE, l14); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKESTATIC, - "net/minecraftforge/common/ForgeChunkManager$Ticket", - "access$700", - "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)Ljava/util/LinkedHashSet;", - false); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/LinkedHashSet", "size", "()I", false); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKESTATIC, - "net/minecraftforge/common/ForgeChunkManager$Ticket", - "access$800", - "(Lnet/minecraftforge/common/ForgeChunkManager$Ticket;)I", - false); - mv.visitJumpInsn(IF_ICMPLE, l14); - Label l15 = new Label(); - mv.visitLabel(l15); - mv.visitLineNumber(751, l15); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKESTATIC, - |
