• 0

    posted a message on Tutorial [1.6.2] Changing vanilla without editing base classes [coremods] and [events] very advanced!
    Quote from thislooksfun

    This might be your problem.
    Also, where are you getting '436' from?


    huh, I don't remember where I got that but I know it's not right and I don't know how to get the correct index location of the PUTFIELD Opcode. I probably should have mentioned this in the first post but what I don't understand is how in the tutorial when he tests for the FDIV, how will it find the correct operation? What if in the method there are multiple divisions? I assume that's why you get the index but what if another mod injects first? Won't the index location change?
    Posted in: Mapping and Modding Tutorials
  • 0

    posted a message on Tutorial [1.6.2] Changing vanilla without editing base classes [coremods] and [events] very advanced!
    Quote from thislooksfun

    Hmmm... Can I see the console output please? I think I might know what's happening, but I need a bit more evidence first.

    Sure thing,


    Aug 15, 2013 6:53:38 PM net.minecraft.launchwrapper.LogWrapper log
    INFO: Using tweak class name cpw.mods.fml.common.launcher.FMLTweaker
    2013-08-15 18:53:38 [INFO] [ForgeModLoader] Forge Mod Loader version 6.2.35.804 for Minecraft 1.6.2 loading
    2013-08-15 18:53:38 [INFO] [ForgeModLoader] Java is Java HotSpot(TM) 64-Bit Server VM, version 1.7.0_25, running on Windows 8:amd64:6.2, installed at C:\Program Files\Java\jre7
    2013-08-15 18:53:38 [INFO] [ForgeModLoader] Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
    2013-08-15 18:53:39 [WARNING] [ForgeModLoader] The coremod mod.ian25.AltSwitcher.ASFMLLoadingPlugin does not have a MCVersion annotation, it may cause issues with this version of Minecraft
    2013-08-15 18:53:39 [INFO] [STDOUT] Loaded 39 rules from AccessTransformer config file fml_at.cfg
    2013-08-15 18:53:39 [INFO] [STDOUT] Loaded 107 rules from AccessTransformer config file forge_at.cfg
    2013-08-15 18:53:40 [SEVERE] [ForgeModLoader] The binary patch set is missing. Either you are in a development environment, or things are not going to work!
    2013-08-15 18:53:40 [INFO] [ForgeModLoader] Launching wrapped minecraft
    2013-08-15 18:53:42 [INFO] [Minecraft-Client] Setting user: Player468
    2013-08-15 18:53:42 [INFO] [Minecraft-Client] (Session ID is null)
    2013-08-15 18:53:45 [INFO] [Minecraft-Client] LWJGL Version: 2.9.0
    2013-08-15 18:53:46 [INFO] [Minecraft-Client] Reloading ResourceManager: Default
    2013-08-15 18:53:47 [INFO] [STDOUT] 
    2013-08-15 18:53:47 [INFO] [STDOUT] Starting up SoundSystem...
    2013-08-15 18:53:47 [INFO] [STDOUT] Initializing LWJGL OpenAL
    2013-08-15 18:53:47 [INFO] [STDOUT]     (The LWJGL binding of OpenAL.  For more information, see http://www.lwjgl.org)
    2013-08-15 18:53:48 [INFO] [STDOUT] OpenAL initialized.
    2013-08-15 18:53:48 [INFO] [STDOUT] 
    2013-08-15 18:53:48 [INFO] [MinecraftForge] Attempting early MinecraftForge initialization
    2013-08-15 18:53:48 [INFO] [STDOUT] MinecraftForge v9.10.0.804 Initialized
    2013-08-15 18:53:48 [INFO] [ForgeModLoader] MinecraftForge v9.10.0.804 Initialized
    2013-08-15 18:53:48 [INFO] [STDOUT] Replaced 101 ore recipies
    2013-08-15 18:53:49 [INFO] [MinecraftForge] Completed early MinecraftForge initialization
    2013-08-15 18:53:49 [INFO] [ForgeModLoader] Reading custom logging properties from C:\Users\Public\Documents\Minecraft\Modding\forge\mcp\jars\config\logging.properties
    2013-08-15 18:53:49 [OFF] [ForgeModLoader] Logging level for ForgeModLoader logging is set to ALL
    2013-08-15 18:53:49 [INFO] [ForgeModLoader] Searching C:\Users\Public\Documents\Minecraft\Modding\forge\mcp\jars\mods for mods
    2013-08-15 18:53:59 [INFO] [ForgeModLoader] Forge Mod Loader has identified 4 mods to load
    2013-08-15 18:53:59 [INFO] [mcp] Activating mod mcp
    2013-08-15 18:53:59 [INFO] [FML] Activating mod FML
    2013-08-15 18:53:59 [INFO] [Forge] Activating mod Forge
    2013-08-15 18:53:59 [WARNING] [AltSwitcher] Mod AltSwitcher has been disabled through configuration
    2013-08-15 18:53:59 [INFO] [Minecraft-Client] Reloading ResourceManager: Default
    2013-08-15 18:53:59 [INFO] [STDOUT] 
    2013-08-15 18:53:59 [INFO] [STDOUT] SoundSystem shutting down...
    2013-08-15 18:53:59 [INFO] [STDOUT]     Author: Paul Lamb, www.paulscode.com
    2013-08-15 18:53:59 [INFO] [STDOUT] 
    2013-08-15 18:53:59 [INFO] [STDOUT] 
    2013-08-15 18:53:59 [INFO] [STDOUT] Starting up SoundSystem...
    2013-08-15 18:54:00 [INFO] [ForgeModLoader] FML has found a non-mod file AltSwitcher.jar in your mods directory. It will now be injected into your classpath. This could severe stability issues, it should be removed if possible.
    2013-08-15 18:54:00 [INFO] [ForgeModLoader] Registering Forge Packet Handler
    2013-08-15 18:54:00 [INFO] [ForgeModLoader] Succeeded registering Forge Packet Handler
    2013-08-15 18:54:00 [INFO] [ForgeModLoader] Configured a dormant chunk cache size of 0
    2013-08-15 18:54:00 [INFO] [STDOUT] Initializing LWJGL OpenAL
    2013-08-15 18:54:00 [INFO] [STDOUT]     (The LWJGL binding of OpenAL.  For more information, see http://www.lwjgl.org)
    2013-08-15 18:54:00 [INFO] [STDOUT] OpenAL initialized.
    2013-08-15 18:54:00 [INFO] [STDOUT] 
    2013-08-15 18:54:01 [INFO] [ForgeModLoader] Forge Mod Loader has successfully loaded 4 mods
    2013-08-15 18:54:01 [INFO] [Minecraft-Client] Reloading ResourceManager: Default
    2013-08-15 18:54:01 [INFO] [STDOUT] 
    2013-08-15 18:54:01 [INFO] [STDOUT] SoundSystem shutting down...
    2013-08-15 18:54:01 [INFO] [STDOUT]     Author: Paul Lamb, www.paulscode.com
    2013-08-15 18:54:01 [INFO] [STDOUT] 
    2013-08-15 18:54:01 [INFO] [STDOUT] 
    2013-08-15 18:54:01 [INFO] [STDOUT] Starting up SoundSystem...
    2013-08-15 18:54:01 [INFO] [STDOUT] **Inside NONOBFUSCATED GuiMultiplayer... About to patch: net.minecraft.client.gui.GuiMultiplayer
    2013-08-15 18:54:01 [INFO] [STDOUT] **Inside target method: initGuiControls**
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 0 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 1 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 2 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 3 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 4 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 5 currentNode.getOpcode() = 187
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 6 currentNode.getOpcode() = 89
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 7 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 8 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 9 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 10 currentNode.getOpcode() = 5
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 11 currentNode.getOpcode() = 108
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 12 currentNode.getOpcode() = 17
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 13 currentNode.getOpcode() = 100
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 14 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 15 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 16 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 17 currentNode.getOpcode() = 100
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 18 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 19 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 20 currentNode.getOpcode() = 18
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 21 currentNode.getOpcode() = 184
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 22 currentNode.getOpcode() = 183
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 23 currentNode.getOpcode() = 90
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 24 currentNode.getOpcode() = 181
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 25 currentNode.getOpcode() = 185
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 26 currentNode.getOpcode() = 87
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 27 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 28 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 29 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 30 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 31 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 32 currentNode.getOpcode() = 187
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 33 currentNode.getOpcode() = 89
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 34 currentNode.getOpcode() = 5
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 35 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 36 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 37 currentNode.getOpcode() = 5
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 38 currentNode.getOpcode() = 108
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 39 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 40 currentNode.getOpcode() = 100
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 41 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 42 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 43 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 44 currentNode.getOpcode() = 100
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 45 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 46 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 47 currentNode.getOpcode() = 18
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 48 currentNode.getOpcode() = 184
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 49 currentNode.getOpcode() = 183
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 50 currentNode.getOpcode() = 90
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 51 currentNode.getOpcode() = 181
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 52 currentNode.getOpcode() = 185
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 53 currentNode.getOpcode() = 87
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 54 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 55 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 56 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 57 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 58 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 59 currentNode.getOpcode() = 187
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 60 currentNode.getOpcode() = 89
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 61 currentNode.getOpcode() = 4
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 62 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 63 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 64 currentNode.getOpcode() = 5
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 65 currentNode.getOpcode() = 108
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 66 currentNode.getOpcode() = 17
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 67 currentNode.getOpcode() = 100
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 68 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 69 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 70 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 71 currentNode.getOpcode() = 100
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 72 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 73 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 74 currentNode.getOpcode() = 18
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 75 currentNode.getOpcode() = 184
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 76 currentNode.getOpcode() = 183
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 77 currentNode.getOpcode() = 90
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 78 currentNode.getOpcode() = 181
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 79 currentNode.getOpcode() = 185
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 80 currentNode.getOpcode() = 87
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 81 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 82 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 83 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 84 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 85 currentNode.getOpcode() = 187
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 86 currentNode.getOpcode() = 89
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 87 currentNode.getOpcode() = 7
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 88 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 89 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 90 currentNode.getOpcode() = 5
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 91 currentNode.getOpcode() = 108
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 92 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 93 currentNode.getOpcode() = 100
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 94 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 95 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 96 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 97 currentNode.getOpcode() = 100
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 98 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 99 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 100 currentNode.getOpcode() = 18
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 101 currentNode.getOpcode() = 184
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 102 currentNode.getOpcode() = 183
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 103 currentNode.getOpcode() = 185
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 104 currentNode.getOpcode() = 87
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 105 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 106 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 107 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 108 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 109 currentNode.getOpcode() = 187
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 110 currentNode.getOpcode() = 89
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 111 currentNode.getOpcode() = 6
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 112 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 113 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 114 currentNode.getOpcode() = 5
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 115 currentNode.getOpcode() = 108
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 116 currentNode.getOpcode() = 7
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 117 currentNode.getOpcode() = 96
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 118 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 119 currentNode.getOpcode() = 96
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 120 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 121 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 122 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 123 currentNode.getOpcode() = 100
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 124 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 125 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 126 currentNode.getOpcode() = 18
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 127 currentNode.getOpcode() = 184
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 128 currentNode.getOpcode() = 183
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 129 currentNode.getOpcode() = 185
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 130 currentNode.getOpcode() = 87
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 131 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 132 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 133 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 134 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 135 currentNode.getOpcode() = 187
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 136 currentNode.getOpcode() = 89
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 137 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 138 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 139 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 140 currentNode.getOpcode() = 5
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 141 currentNode.getOpcode() = 108
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 142 currentNode.getOpcode() = 7
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 143 currentNode.getOpcode() = 96
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 144 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 145 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 146 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 147 currentNode.getOpcode() = 100
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 148 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 149 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 150 currentNode.getOpcode() = 18
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 151 currentNode.getOpcode() = 184
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 152 currentNode.getOpcode() = 183
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 153 currentNode.getOpcode() = 185
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 154 currentNode.getOpcode() = 87
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 155 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 156 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 157 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 158 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 159 currentNode.getOpcode() = 187
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 160 currentNode.getOpcode() = 89
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 161 currentNode.getOpcode() = 3
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 162 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 163 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 164 currentNode.getOpcode() = 5
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 165 currentNode.getOpcode() = 108
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 166 currentNode.getOpcode() = 7
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 167 currentNode.getOpcode() = 96
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 168 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 169 currentNode.getOpcode() = 96
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 170 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 171 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 172 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 173 currentNode.getOpcode() = 100
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 174 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 175 currentNode.getOpcode() = 16
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 176 currentNode.getOpcode() = 18
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 177 currentNode.getOpcode() = 184
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 178 currentNode.getOpcode() = 183
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 179 currentNode.getOpcode() = 185
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 180 currentNode.getOpcode() = 87
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 181 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 182 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 183 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 184 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 185 currentNode.getOpcode() = 155
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 186 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 187 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 188 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 189 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 190 currentNode.getOpcode() = 182
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 191 currentNode.getOpcode() = 162
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 192 currentNode.getOpcode() = 4
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 193 currentNode.getOpcode() = 167
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 194 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 195 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 196 currentNode.getOpcode() = 3
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 197 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 198 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 199 currentNode.getOpcode() = 54
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 200 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 201 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 202 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 203 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 204 currentNode.getOpcode() = 21
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 205 currentNode.getOpcode() = 181
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 206 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 207 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 208 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 209 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 210 currentNode.getOpcode() = 21
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 211 currentNode.getOpcode() = 181
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 212 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 213 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 214 currentNode.getOpcode() = 25
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 215 currentNode.getOpcode() = 180
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 216 currentNode.getOpcode() = 21
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 217 currentNode.getOpcode() = 181
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 218 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 219 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 220 currentNode.getOpcode() = 177
    2013-08-15 18:54:01 [INFO] [STDOUT] ** Index : 221 currentNode.getOpcode() = -1
    2013-08-15 18:54:01 [INFO] [STDOUT] ********* target_index should be (436?) -> 217
    2013-08-15 18:54:01 [INFO] [STDOUT] Patching Complete!
    2013-08-15 18:54:01 [INFO] [STDOUT] Debug1
    2013-08-15 18:54:01 [INFO] [STDOUT] Debug2
    2013-08-15 18:54:01 [INFO] [STDOUT] ---- Minecraft Crash Report ----
    2013-08-15 18:54:01 [INFO] [STDOUT] // Uh... Did I do that?
    2013-08-15 18:54:01 [INFO] [STDOUT] 
    2013-08-15 18:54:01 [INFO] [STDOUT] Time: 8/15/13 6:54 PM
    2013-08-15 18:54:01 [INFO] [STDOUT] Description: Initializing game
    2013-08-15 18:54:01 [INFO] [STDOUT] 
    2013-08-15 18:54:01 [INFO] [STDOUT] java.lang.NoClassDefFoundError: net/minecraft/client/gui/GuiMultiplayer
    2013-08-15 18:54:01 [INFO] [STDOUT]  at net.minecraft.client.Minecraft.startGame(Minecraft.java:516)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:796)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at net.minecraft.client.main.Main.main(Main.java:93)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at java.lang.reflect.Method.invoke(Unknown Source)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at net.minecraft.launchwrapper.Launch.launch(Launch.java:57)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at net.minecraft.launchwrapper.Launch.main(Launch.java:18)
    2013-08-15 18:54:01 [INFO] [STDOUT] Caused by: java.lang.ClassNotFoundException: net.minecraft.client.gui.GuiMultiplayer
    2013-08-15 18:54:01 [INFO] [STDOUT]  at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:179)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at java.lang.ClassLoader.loadClass(Unknown Source)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at java.lang.ClassLoader.loadClass(Unknown Source)
    2013-08-15 18:54:01 [INFO] [STDOUT]  ... 9 more
    2013-08-15 18:54:01 [INFO] [STDOUT] Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 3
    2013-08-15 18:54:01 [INFO] [STDOUT]  at java.lang.String.charAt(Unknown Source)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at org.objectweb.asm.Type.getArgumentsAndReturnSizes(Type.java:413)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at org.objectweb.asm.Frame.pop(Frame.java:732)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at org.objectweb.asm.Frame.execute(Frame.java:1198)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at org.objectweb.asm.MethodWriter.visitMethodInsn(MethodWriter.java:818)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at org.objectweb.asm.tree.MethodInsnNode.accept(MethodInsnNode.java:102)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at org.objectweb.asm.tree.InsnList.accept(InsnList.java:162)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at org.objectweb.asm.tree.MethodNode.accept(MethodNode.java:585)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at org.objectweb.asm.tree.MethodNode.accept(MethodNode.java:515)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at org.objectweb.asm.tree.ClassNode.accept(ClassNode.java:340)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at mod.ian25.AltSwitcher.ASClassTransformer.patchClassASM(ASClassTransformer.java:144)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at mod.ian25.AltSwitcher.ASClassTransformer.transform(ASClassTransformer.java:37)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:267)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:165)
    2013-08-15 18:54:01 [INFO] [STDOUT]  ... 11 more
    2013-08-15 18:54:01 [INFO] [STDOUT] 
    2013-08-15 18:54:01 [INFO] [STDOUT] 
    2013-08-15 18:54:01 [INFO] [STDOUT] A detailed walkthrough of the error, its code path and all known details is as follows:
    2013-08-15 18:54:01 [INFO] [STDOUT] ---------------------------------------------------------------------------------------
    2013-08-15 18:54:01 [INFO] [STDOUT] 
    2013-08-15 18:54:01 [INFO] [STDOUT] -- Head --
    2013-08-15 18:54:01 [INFO] [STDOUT] Stacktrace:
    2013-08-15 18:54:01 [INFO] [STDOUT]  at net.minecraft.client.Minecraft.startGame(Minecraft.java:516)
    2013-08-15 18:54:01 [INFO] [STDOUT] 
    2013-08-15 18:54:01 [INFO] [STDOUT] -- Initialization --
    2013-08-15 18:54:01 [INFO] [STDOUT] Details:
    2013-08-15 18:54:01 [INFO] [STDOUT] Stacktrace:
    2013-08-15 18:54:01 [INFO] [STDOUT]  at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:796)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at net.minecraft.client.main.Main.main(Main.java:93)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at java.lang.reflect.Method.invoke(Unknown Source)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at net.minecraft.launchwrapper.Launch.launch(Launch.java:57)
    2013-08-15 18:54:01 [INFO] [STDOUT]  at net.minecraft.launchwrapper.Launch.main(Launch.java:18)
    2013-08-15 18:54:01 [INFO] [STDOUT] 
    2013-08-15 18:54:01 [INFO] [STDOUT] -- System Details --
    2013-08-15 18:54:01 [INFO] [STDOUT] Details:
    2013-08-15 18:54:01 [INFO] [STDOUT]  Minecraft Version: 1.6.2
    2013-08-15 18:54:01 [INFO] [STDOUT]  Operating System: Windows 8 (amd64) version 6.2
    2013-08-15 18:54:01 [INFO] [STDOUT]  Java Version: 1.7.0_25, Oracle Corporation
    2013-08-15 18:54:01 [INFO] [STDOUT]  Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    2013-08-15 18:54:01 [INFO] [STDOUT]  Memory: 802860680 bytes (765 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
    2013-08-15 18:54:01 [INFO] [STDOUT]  JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
    2013-08-15 18:54:01 [INFO] [STDOUT]  AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    2013-08-15 18:54:01 [INFO] [STDOUT]  Suspicious classes: FML and Forge are installed
    2013-08-15 18:54:01 [INFO] [STDOUT]  IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    2013-08-15 18:54:01 [INFO] [STDOUT]  FML: MCP v8.04 FML v6.2.35.804 Minecraft Forge 9.10.0.804 4 mods loaded, 3 mods active
    2013-08-15 18:54:01 [INFO] [STDOUT]  mcp{8.04} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available
    2013-08-15 18:54:01 [INFO] [STDOUT]  FML{6.2.35.804} [Forge Mod Loader] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available
    2013-08-15 18:54:01 [INFO] [STDOUT]  Forge{9.10.0.804} [Minecraft Forge] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available
    2013-08-15 18:54:01 [INFO] [STDOUT]  AltSwitcher{0.0} [AltSwitcher] (coremods) Unloaded->Disabled
    2013-08-15 18:54:01 [INFO] [STDOUT]  Launched Version: 1.6
    2013-08-15 18:54:01 [INFO] [STDOUT]  LWJGL: 2.9.0
    2013-08-15 18:54:01 [INFO] [STDOUT]  OpenGL: AMD Radeon HD 6770M GL version 4.2.11931 Compatibility Profile Context, ATI Technologies Inc.
    2013-08-15 18:54:01 [INFO] [STDOUT]  Is Modded: Definitely; Client brand changed to 'fml,forge'
    2013-08-15 18:54:01 [INFO] [STDOUT]  Type: Client (map_client.txt)
    2013-08-15 18:54:01 [INFO] [STDOUT]  Resource Pack: Default
    2013-08-15 18:54:01 [INFO] [STDOUT]  Current Language: English (US)
    2013-08-15 18:54:01 [INFO] [STDOUT]  Profiler Position: N/A (disabled)
    2013-08-15 18:54:01 [INFO] [STDOUT]  Vec3 Pool Size: ~~ERROR~~ NullPointerException: null
    2013-08-15 18:54:01 [INFO] [STDOUT] #@!@# Game crashed! Crash report saved to: #@!@# C:\Users\Public\Documents\Minecraft\Modding\forge\mcp\jars\.\crash-reports\crash-2013-08-15_18.54.01-client.txt

    Posted in: Mapping and Modding Tutorials
  • 0

    posted a message on Tutorial [1.6.2] Changing vanilla without editing base classes [coremods] and [events] very advanced!
    Quote from thislooksfun

    First off, please put all code in '[cde]' tags. It makes it much easier to read. Also, We will be able to help much more if you give us an error log.


    Ahh my bad, I fixed my first post. And here is the crash report.


    ---- Minecraft Crash Report ----
    // My bad.
    
    Time: 8/15/13 12:37 AM
    Description: Initializing game
    
    java.lang.NoClassDefFoundError: net/minecraft/client/gui/GuiMultiplayer
    at net.minecraft.client.Minecraft.startGame(Minecraft.java:516)
    at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:796)
    at net.minecraft.client.main.Main.main(Main.java:93)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:57)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:18)
    Caused by: java.lang.ClassNotFoundException: net.minecraft.client.gui.GuiMultiplayer
    at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:179)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 9 more
    Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 3
    at java.lang.String.charAt(Unknown Source)
    at org.objectweb.asm.Type.getArgumentsAndReturnSizes(Type.java:413)
    at org.objectweb.asm.Frame.pop(Frame.java:732)
    at org.objectweb.asm.Frame.execute(Frame.java:1198)
    at org.objectweb.asm.MethodWriter.visitMethodInsn(MethodWriter.java:818)
    at org.objectweb.asm.tree.MethodInsnNode.accept(MethodInsnNode.java:102)
    at org.objectweb.asm.tree.InsnList.accept(InsnList.java:162)
    at org.objectweb.asm.tree.MethodNode.accept(MethodNode.java:585)
    at org.objectweb.asm.tree.MethodNode.accept(MethodNode.java:515)
    at org.objectweb.asm.tree.ClassNode.accept(ClassNode.java:340)
    at mod.ian25.AltSwitcher.ASClassTransformer.patchClassASM(ASClassTransformer.java:129)
    at mod.ian25.AltSwitcher.ASClassTransformer.transform(ASClassTransformer.java:33)
    at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:267)
    at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:165)
    ... 11 more
    
    
    A detailed walkthrough of the error, its code path and all known details is as follows:
    ---------------------------------------------------------------------------------------
    
    -- Head --
    Stacktrace:
    at net.minecraft.client.Minecraft.startGame(Minecraft.java:516)
    
    -- Initialization --
    Details:
    Stacktrace:
    at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:796)
    at net.minecraft.client.main.Main.main(Main.java:93)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:57)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:18)
    
    -- System Details --
    Details:
    Minecraft Version: 1.6.2
    Operating System: Windows 8 (amd64) version 6.2
    Java Version: 1.7.0_25, Oracle Corporation
    Java VM Version: Java HotSpotâ„¢ 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 799616088 bytes (762 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
    JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
    AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    Suspicious classes: FML and Forge are installed
    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    FML: MCP v8.04 FML v6.2.35.804 Minecraft Forge 9.10.0.804 4 mods loaded, 3 mods active
    mcp{8.04} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available
    FML{6.2.35.804} [Forge Mod Loader] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available
    Forge{9.10.0.804} [Minecraft Forge] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available
    AltSwitcher{0.0} [AltSwitcher] (coremods) Unloaded->Disabled
    Launched Version: 1.6
    LWJGL: 2.9.0
    OpenGL: AMD Radeon HD 6770M GL version 4.2.11931 Compatibility Profile Context, ATI Technologies Inc.
    Is Modded: Definitely; Client brand changed to 'fml,forge'
    Type: Client (map_client.txt)
    Resource Pack: Default
    Current Language: English (US)
    Profiler Position: N/A (disabled)
    Vec3 Pool Size: ~~ERROR~~ NullPointerException: null

    Posted in: Mapping and Modding Tutorials
  • 0

    posted a message on Tutorial [1.6.2] Changing vanilla without editing base classes [coremods] and [events] very advanced!
    Alright, I've been struggling with this for a while now but I hope you guys can help.
    Since all of the alternate account switcher mods that I have found are outdated/inactive I wanted to make my own. I have successfully made one that lets me switch accounts by adding a button to GuiMultiplayer. It works great and I'm almost satisfied except I had to modify two base classes. GuiMultiplayer to add the button and the GuiButton action to open my login gui. And Minecraft to make the session public.
    Since I want to make this mod compatible with nearly all other mods I want to not have to modify those base classes.

    Now on to what I need help with.

    I followed the tutorial and I got my mod to stop explosions from destroying items. After, I changed the class to look for the GuiMultiplayer class and the initGuiControls method. It finds them no problem but I cannot for the life of me figure out how to add the button.

    ClassTransformer
    package mod.ian25.AltSwitcher;
    
    import java.util.Iterator;
    
    import net.minecraft.launchwrapper.IClassTransformer;
    
    import org.objectweb.asm.ClassReader;
    import org.objectweb.asm.ClassWriter;
    import org.objectweb.asm.Opcodes;
    import org.objectweb.asm.tree.AbstractInsnNode;
    import org.objectweb.asm.tree.ClassNode;
    import org.objectweb.asm.tree.FieldInsnNode;
    import org.objectweb.asm.tree.InsnList;
    import org.objectweb.asm.tree.InsnNode;
    import org.objectweb.asm.tree.IntInsnNode;
    import org.objectweb.asm.tree.LdcInsnNode;
    import org.objectweb.asm.tree.MethodInsnNode;
    import org.objectweb.asm.tree.MethodNode;
    import org.objectweb.asm.tree.TypeInsnNode;
    import org.objectweb.asm.tree.VarInsnNode;
    
    public class ASClassTransformer implements IClassTransformer {
    
    @Override
    public byte[] transform(String arg0, String arg1, byte[] arg2) {
    if(arg0.equals("avk")) {
    System.out.println("**Inside OBFUSCATED GuiMultiplayer... About to patch: " + arg0);
    return patchClassASM(arg0, arg2, true);
    }
    
    if(arg0.equals("net.minecraft.client.gui.GuiMultiplayer")) {
    System.out.println("**Inside NONOBFUSCATED GuiMultiplayer... About to patch: " + arg0);
    return patchClassASM(arg0, arg2, false);
    }
    return arg2;
    }
    
    public byte[] patchClassASM(String name, byte[] bytes, boolean obfuscated) {
    String targetMethodName = "";
    
    if(obfuscated) {
    targetMethodName = "g";
    } else if(!obfuscated) {
    targetMethodName = "initGuiControls";
    }
    
    ClassNode classNode = new ClassNode();
    ClassReader classReader = new ClassReader(bytes);
    classReader.accept(classNode, 0);
    
    Iterator<MethodNode> methods = classNode.methods.iterator();
    while(methods.hasNext())
    {
    MethodNode m = methods.next();
    int target_index = -1;
    if ((m.name.equals(targetMethodName) && m.desc.equals("()V")))
    {
    System.out.println("**Inside target method: " + m.name + "**");
    
    AbstractInsnNode currentNode = null;
    AbstractInsnNode targetNode = null;
    
    @SuppressWarnings("unchecked")
    Iterator<AbstractInsnNode> iter = m.instructions.iterator();
    
    int index = -1;
    
    while (iter.hasNext())
    {
    index++;
    currentNode = iter.next();
    System.out.println("** Index : " + index + " currentNode.getOpcode() = " + currentNode.getOpcode());
    
    if (currentNode.getOpcode() == Opcodes.PUTFIELD)
    {
    targetNode = currentNode;
    target_index = index;
    }
    }
    
    System.out.println("********* target_index should be (436?) -> " + target_index);
    
    if (targetNode == null)
    {
    System.out.println("Did not find all necessary target nodes! ABANDON CLASS!");
    return bytes;
    }
    
    if (target_index == -1)
    {
    System.out.println("Did not find all necessary target nodes! ABANDON CLASS!");
    return bytes;
    }
    
    //Code to add the button will go here
    
    System.out.println("Patching Complete!");
    break;
    }
    }
    
    System.out.println("Debug1");
    ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
    System.out.println("Debug2");
    classNode.accept(writer);
    System.out.println("Debug3");
    return writer.toByteArray();
    }
    
    }


    GuiMultiplayer- initGuiControls method (The last line is what I'm trying to add)
    public void initGuiControls()
    {
    this.buttonList.add(this.field_96289_p = new GuiButton(7, this.width / 2 - 154, this.height - 28, 70, 20, I18n.func_135053_a("selectServer.edit")));
    this.buttonList.add(this.buttonDelete = new GuiButton(2, this.width / 2 - 74, this.height - 28, 70, 20, I18n.func_135053_a("selectServer.delete")));
    this.buttonList.add(this.buttonSelect = new GuiButton(1, this.width / 2 - 154, this.height - 52, 100, 20, I18n.func_135053_a("selectServer.select")));
    this.buttonList.add(new GuiButton(4, this.width / 2 - 50, this.height - 52, 100, 20, I18n.func_135053_a("selectServer.direct")));
    this.buttonList.add(new GuiButton(3, this.width / 2 + 4 + 50, this.height - 52, 100, 20, I18n.func_135053_a("selectServer.add")));
    this.buttonList.add(new GuiButton(8, this.width / 2 + 4, this.height - 28, 70, 20, I18n.func_135053_a("selectServer.refresh")));
    this.buttonList.add(new GuiButton(0, this.width / 2 + 4 + 76, this.height - 28, 75, 20, I18n.func_135053_a("gui.cancel")));
    boolean flag = this.selectedServer >= 0 && this.selectedServer < this.serverSlotContainer.getSize();
    this.buttonSelect.enabled = flag;
    this.field_96289_p.enabled = flag;
    this.buttonDelete.enabled = flag;
    this.buttonList.add(new GuiButton(9, this.width / 2 - 214, this.height - 28, 50, 20, "Login"));
    }


    Now, although I'm having some trouble with the Eclipse Bytecode plugin I was able to get the bytecode for the method I want.
    (I only included a little bit of the method)
    L6
    LINENUMBER 131 L6
    ALOAD 0
    GETFIELD avk.i : Ljava/util/List;
    NEW auq
    DUP
    ICONST_0
    ALOAD 0
    GETFIELD avk.g : I
    ICONST_2
    IDIV
    ICONST_4
    IADD
    BIPUSH 76
    IADD
    ALOAD 0
    GETFIELD avk.h : I
    BIPUSH 28
    ISUB
    BIPUSH 75
    BIPUSH 20
    LDC "gui.cancel"
    INVOKESTATIC bjy.a(Ljava/lang/String;)Ljava/lang/String;
    INVOKESPECIAL auq.<init>(IIIIILjava/lang/String;)V
    INVOKEINTERFACE java/util/List.add(Ljava/lang/Object;)Z
    POP
    L7
    LINENUMBER 132 L7
    ALOAD 0
    GETFIELD avk.p : I
    IFLT L8
    ALOAD 0
    GETFIELD avk.p : I
    ALOAD 0
    GETFIELD avk.d : Lavl;
    INVOKEVIRTUAL avl.a()I
    IF_ICMPGE L8
    ICONST_1
    GOTO L9
    L8
    FRAME SAME
    ICONST_0
    L9
    FRAME SAME1 I
    ISTORE 1
    L10
    LINENUMBER 133 L10
    ALOAD 0
    GETFIELD avk.r : Lauq;
    ILOAD 1
    PUTFIELD auq.h : Z
    L11
    LINENUMBER 134 L11
    ALOAD 0
    GETFIELD avk.q : Lauq;
    ILOAD 1
    PUTFIELD auq.h : Z
    L12
    LINENUMBER 135 L12
    ALOAD 0
    GETFIELD avk.s : Lauq;
    ILOAD 1
    PUTFIELD auq.h : Z
    L13
    LINENUMBER 137 L13
    ALOAD 0
    GETFIELD avk.i : Ljava/util/List;
    NEW auq
    DUP
    BIPUSH 9
    ALOAD 0
    GETFIELD avk.g : I
    ICONST_2
    IDIV
    SIPUSH 214
    ISUB
    ALOAD 0
    GETFIELD avk.h : I
    BIPUSH 28
    ISUB
    BIPUSH 50
    BIPUSH 20
    LDC "Login"
    INVOKESPECIAL auq.<init>(IIIIILjava/lang/String;)V
    INVOKEINTERFACE java/util/List.add(Ljava/lang/Object;)Z
    POP
    L14
    LINENUMBER 138 L14
    RETURN
    L15
    LOCALVARIABLE this Lavk; L0 L15 0
    LOCALVARIABLE flag Z L10 L15 1
    MAXSTACK = 10
    MAXLOCALS = 2


    Line 13 is what I want to add. Now, this bytecode barley makes sense to me but I can see some method to the madness and I was able to come up with this.

    InsnList toInject = new InsnList();
    
    toInject.add(new VarInsnNode(Opcodes.ALOAD, 0));
    toInject.add(new FieldInsnNode(Opcodes.GETFIELD, "net/minecraft/client/gui/GuiMultiplayer.buttonList", "Ljava/util/List", "ARRAY"));
    toInject.add(new TypeInsnNode(Opcodes.NEW, "net/minecraft/client/gui/GuiButton"));
    toInject.add(new InsnNode(Opcodes.DUP));
    toInject.add(new IntInsnNode(Opcodes.BIPUSH, 9));
    toInject.add(new VarInsnNode(Opcodes.ALOAD, 0));
    toInject.add(new FieldInsnNode(Opcodes.GETFIELD, "net/minecraft/client/gui/GuiMultiplayer.width", "I", "INT"));
    toInject.add(new IntInsnNode(Opcodes.BIPUSH, 2));
    toInject.add(new InsnNode(Opcodes.IDIV));
    toInject.add(new IntInsnNode(Opcodes.SIPUSH, 214));
    toInject.add(new InsnNode(Opcodes.ISUB));
    toInject.add(new VarInsnNode(Opcodes.ALOAD, 0));
    toInject.add(new FieldInsnNode(Opcodes.GETFIELD, "net/minecraft/client/gui/GuiMultiplayer.height", "I", "INT"));
    toInject.add(new IntInsnNode(Opcodes.BIPUSH, 28));
    toInject.add(new InsnNode(Opcodes.ISUB));
    toInject.add(new IntInsnNode(Opcodes.BIPUSH, 50));
    toInject.add(new IntInsnNode(Opcodes.BIPUSH, 20));
    toInject.add(new LdcInsnNode("LoginASM"));
    toInject.add(new MethodInsnNode(Opcodes.INVOKESPECIAL, "net/minecraft/client/gui/GuiButton", "GuiButton", "()V"));
    toInject.add(new MethodInsnNode(Opcodes.INVOKEINTERFACE, "java/util/List", "add", "(Z)"));
    toInject.add(new InsnNode(Opcodes.POP));
    
    m.instructions.insert(toInject);


    I'm definitely doing something wrong because it crashes when I add that in.
    My final ClassTransformer looks like this.
    package mod.ian25.AltSwitcher;
    
    import java.util.Iterator;
    
    import net.minecraft.launchwrapper.IClassTransformer;
    
    import org.objectweb.asm.ClassReader;
    import org.objectweb.asm.ClassWriter;
    import org.objectweb.asm.Opcodes;
    import org.objectweb.asm.tree.AbstractInsnNode;
    import org.objectweb.asm.tree.ClassNode;
    import org.objectweb.asm.tree.FieldInsnNode;
    import org.objectweb.asm.tree.InsnList;
    import org.objectweb.asm.tree.InsnNode;
    import org.objectweb.asm.tree.IntInsnNode;
    import org.objectweb.asm.tree.LdcInsnNode;
    import org.objectweb.asm.tree.MethodInsnNode;
    import org.objectweb.asm.tree.MethodNode;
    import org.objectweb.asm.tree.TypeInsnNode;
    import org.objectweb.asm.tree.VarInsnNode;
    
    public class ASClassTransformer implements IClassTransformer {
    
    @Override
    public byte[] transform(String arg0, String arg1, byte[] arg2) {
    if(arg0.equals("avk")) {
    System.out.println("**Inside OBFUSCATED GuiMultiplayer... About to patch: " + arg0);
    return patchClassASM(arg0, arg2, true);
    }
    
    if(arg0.equals("net.minecraft.client.gui.GuiMultiplayer")) {
    System.out.println("**Inside NONOBFUSCATED GuiMultiplayer... About to patch: " + arg0);
    return patchClassASM(arg0, arg2, false);
    }
    return arg2;
    }
    
    public byte[] patchClassASM(String name, byte[] bytes, boolean obfuscated) {
    String targetMethodName = "";
    
    if(obfuscated) {
    targetMethodName = "g";
    } else if(!obfuscated) {
    targetMethodName = "initGuiControls";
    }
    
    ClassNode classNode = new ClassNode();
    ClassReader classReader = new ClassReader(bytes);
    classReader.accept(classNode, 0);
    
    Iterator<MethodNode> methods = classNode.methods.iterator();
    while(methods.hasNext())
    {
    MethodNode m = methods.next();
    int target_index = -1;
    if ((m.name.equals(targetMethodName) && m.desc.equals("()V")))
    {
    System.out.println("**Inside target method: " + m.name + "**");
    
    AbstractInsnNode currentNode = null;
    AbstractInsnNode targetNode = null;
    
    @SuppressWarnings("unchecked")
    Iterator<AbstractInsnNode> iter = m.instructions.iterator();
    
    int index = -1;
    
    while (iter.hasNext())
    {
    index++;
    currentNode = iter.next();
    System.out.println("** Index : " + index + " currentNode.getOpcode() = " + currentNode.getOpcode());
    
    if (currentNode.getOpcode() == Opcodes.PUTFIELD)
    {
    targetNode = currentNode;
    target_index = index;
    }
    }
    
    System.out.println("********* target_index should be (436?) -> " + target_index);
    
    if (targetNode == null)
    {
    System.out.println("Did not find all necessary target nodes! ABANDON CLASS!");
    return bytes;
    }
    
    if (target_index == -1)
    {
    System.out.println("Did not find all necessary target nodes! ABANDON CLASS!");
    return bytes;
    }
    
    InsnList toInject = new InsnList();
    
    toInject.add(new VarInsnNode(Opcodes.ALOAD, 0));
    toInject.add(new FieldInsnNode(Opcodes.GETFIELD, "net/minecraft/client/gui/GuiMultiplayer.buttonList", "Ljava/util/List", "ARRAY"));
    toInject.add(new TypeInsnNode(Opcodes.NEW, "net/minecraft/client/gui/GuiButton"));
    toInject.add(new InsnNode(Opcodes.DUP));
    toInject.add(new IntInsnNode(Opcodes.BIPUSH, 9));
    toInject.add(new VarInsnNode(Opcodes.ALOAD, 0));
    toInject.add(new FieldInsnNode(Opcodes.GETFIELD, "net/minecraft/client/gui/GuiMultiplayer.width", "I", "INT"));
    toInject.add(new IntInsnNode(Opcodes.BIPUSH, 2));
    toInject.add(new InsnNode(Opcodes.IDIV));
    toInject.add(new IntInsnNode(Opcodes.SIPUSH, 214));
    toInject.add(new InsnNode(Opcodes.ISUB));
    toInject.add(new VarInsnNode(Opcodes.ALOAD, 0));
    toInject.add(new FieldInsnNode(Opcodes.GETFIELD, "net/minecraft/client/gui/GuiMultiplayer.height", "I", "INT"));
    toInject.add(new IntInsnNode(Opcodes.BIPUSH, 28));
    toInject.add(new InsnNode(Opcodes.ISUB));
    toInject.add(new IntInsnNode(Opcodes.BIPUSH, 50));
    toInject.add(new IntInsnNode(Opcodes.BIPUSH, 20));
    toInject.add(new LdcInsnNode("LoginASM"));
    toInject.add(new MethodInsnNode(Opcodes.INVOKESPECIAL, "net/minecraft/client/gui/GuiButton", "GuiButton", "()V"));
    toInject.add(new MethodInsnNode(Opcodes.INVOKEINTERFACE, "java/util/List", "add", "(Z)"));
    toInject.add(new InsnNode(Opcodes.POP));
    
    m.instructions.insert(toInject);
    
    System.out.println("Patching Complete!");
    break;
    }
    }
    
    System.out.println("Debug1");
    ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
    System.out.println("Debug2");
    classNode.accept(writer);
    System.out.println("Debug3");
    return writer.toByteArray();
    }
    
    }


    I hope this made some sense to one of you guys and you'll be able to point out what I did wrong.
    Thanks in advance!
    Posted in: Mapping and Modding Tutorials
  • 0

    posted a message on Minecraft Capes! [Multiplayer Capes/Cloaks][www.MCCapes.com][Cape Gallery] + Transparent/Animated!
    Ian25 - I would love access to an animated cape.
    Posted in: Minecraft Mods
  • 0

    posted a message on Macro / Keybind Mod
    A while ago Mumfrey said that it's not possible to access the enchantment table level buttons. Is that still the case?


    Quote from urlci

    Is it possible to use enchantment table slots? I mean when I put the item in the slot on table GUI it should always enchant at level 30 (or the highest value).

    http://media-mcw.cur...anting_grid.png

    Quote from Mumfrey

    No that's not possible at the moment.
    Posted in: Minecraft Mods
  • To post a comment, please .