View Issue Details

IDProjectCategoryView StatusLast Update
0000045Industrial-Craft²crossmod-compatibility / submodules / APIpublic2012-11-10 11:59
ReporterMyrathi Assigned ToRichardG  
PrioritynormalSeveritycrashReproducibilityalways
Status closedResolutionwon't fix 
PlatformWindowsOSVistaOS Version32-bit
Summary0000045: Crash (RuntimeException) when running/testing client/server from Eclipse
DescriptionPrior to 108.71-lf, testing addon-builds that use the IC2 API from within Eclipse worked just fine.

As of this release, running the client/server results in a fatal exception (see attached crashlog) and crash due to hard-coding of an obfuscated field-name ("field_82174_bp") that doesn't match the deobfuscated MCP mapping for Forge 354+ ("equipmentDropChances").
Steps To Reproduce1. Set up MCP+Forge (with my IC2 addon)
2. Put IC2 (deobf) jar into /jars/mods
3. Run Client/Server from Eclipse IDE
TagsNo tags attached.
Minecraft Version

Activities

Myrathi

2012-11-05 21:31

reporter  

IDE client-launch error.txt (4,033 bytes)   
--- BEGIN ERROR REPORT c193d6 --------
Generated 05/11/12 20:37

- Minecraft Version: 1.4.2
- Operating System: Windows Vista (x86) version 6.0
- Java Version: 1.6.0_35, Sun Microsystems Inc.
- Java VM Version: Java HotSpot(TM) Client VM (mixed mode), Sun Microsystems Inc.
- Memory: 982529680 bytes (937 MB) / 1067057152 bytes (1017 MB) up to 1067057152 bytes (1017 MB)
- JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
- AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
- FML: MCP v7.19 FML v4.2.18.433 Minecraft Forge 6.0.1.355 5 mods loaded, 5 mods active
	mcp [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized
	FML [Forge Mod Loader] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized
	Forge [Minecraft Forge] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized
	IC2 [IndustrialCraft 2] (industrialcraft-2_1.108.71-lf.jar) Unloaded->Constructed->Pre-initialized->Initialized->Errored
	ChargePads [@NAME@] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized
- LWJGL: 2.4.2
- OpenGL: AMD Radeon HD 7700 Series GL version 4.2.11762 Compatibility Profile Context, ATI Technologies Inc.
- Is Modded: Definitely; 'forge,fml'
- Type: Client
- Texture Pack: Default
- Profiler Position: N/A (disabled)
- Vec3 Pool Size: ~ERROR~ NullPointerException: null

java.lang.RuntimeException: java.lang.NoSuchFieldException: field_82174_bp
	at ic2.common.IC2.modsLoaded(IC2.java:793)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:440)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:69)
	at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
	at com.google.common.eventbus.EventBus.dispatch(EventBus.java:317)
	at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:300)
	at com.google.common.eventbus.EventBus.post(EventBus.java:268)
	at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:140)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:69)
	at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
	at com.google.common.eventbus.EventBus.dispatch(EventBus.java:317)
	at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:300)
	at com.google.common.eventbus.EventBus.post(EventBus.java:268)
	at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:83)
	at cpw.mods.fml.common.Loader.initializeMods(Loader.java:654)
	at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:196)
	at net.minecraft.client.Minecraft.startGame(Minecraft.java:465)
	at net.minecraft.client.Minecraft.run(Minecraft.java:752)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NoSuchFieldException: field_82174_bp
	at java.lang.Class.getDeclaredField(Class.java:1882)
	at ic2.common.IC2.modsLoaded(IC2.java:790)
	... 30 more
--- END ERROR REPORT f5ccb9a1 ----------
IDE client-launch error.txt (4,033 bytes)   

matjam

2012-11-05 22:06

reporter   ~0000089

Yeah, I get this too.

It's worth noting;

Minecraft Forge, Build 6.0.1.355
MCP 7.19, updatemcp.bat run.

The only method I have found that I can get to work is the following;

1) Set up MCP and install Forge the normal way for Forge development into mcp1

ie; unzip mcp, unzip forge source into mcp dir, install jars, run install.bat in forge dir.

2) Set up a second MCP directory (call it mcp2)

3) copy the contents of the Forge binary jar into mcp2\jars\bin\Minecraft.jar

4) open the ic2 jar and remove the NEI, cg and bc integration folders. This will mean you won't be able to use NEI while testing :(

5) copy the folders containing class files (I'm doing this from memory, don't remember the folder names)) into the mcp2\jars\bin\Minecraft.jar

6) Delete META-INF dir in mcp2\jars\bin\Minecraft.jar.

7) in mcp2\ dir, run decompile.bat

8) take the ic2 folder from the resulting mcp2\src drop it into mcp1\src

Fire up eclipse and point it to mcp1\eclipse

it will not build because a bunch of classes will refer to SomethingSomething$Foo.

9) Go through all of the ic2 source and fix import statements and class usage where appropriate

Miner.java wasn't fixable for me, I had to comment out a chunk of code.

Pretty much everything else was just a matter of putting a . instead of $ in the import statements, and removing everything leading up to and including a $ in most cases. This will require some intelligence however, blindly just removing some of it will screw things up.

Fixing classes that other classes inherit from will make the ones that inherit suddenly build. So, if you are modifying a class and it won't build and you don't know why, look at what it's inheriting from.

Obviously, this gives you decompiled ic2 source code. You shouldn't link your code to the private API. But at least you'll get a rough understanding of how ic2 works.

RawCode

2012-11-06 01:39

reporter   ~0000091

install proper version of forge...

Myrathi

2012-11-06 03:09

reporter   ~0000092

I only stated 354, above, as that's when the mapping for field_82174_bp was updated.

If you check the attachment, you'll see that I -am- using 355, as that's what the forum thread states is required.

matjam

2012-11-06 08:13

reporter   ~0000095

Myrathi, how are you deobfuscating the ic2 jar? Are you using BON?

Issue History

Date Modified Username Field Change
2012-11-05 21:31 Myrathi New Issue
2012-11-05 21:31 Myrathi Status new => assigned
2012-11-05 21:31 Myrathi Assigned To => RichardG
2012-11-05 21:31 Myrathi File Added: IDE client-launch error.txt
2012-11-05 22:06 matjam Note Added: 0000089
2012-11-06 01:39 RawCode Note Added: 0000091
2012-11-06 03:09 Myrathi Note Added: 0000092
2012-11-06 08:13 matjam Note Added: 0000095
2012-11-10 11:59 RichardG Status assigned => closed
2012-11-10 11:59 RichardG Resolution open => won't fix
2012-11-10 11:59 RichardG Fixed in Version => 1.108