immibis / bearded-octo-nemesis

Now 99.9% fat free!
128 stars 31 forks source link

Incomplete Deobfuscation Issue #38

Closed FyberOptic closed 9 years ago

FyberOptic commented 9 years ago

I just keep bothering you!

I noticed a method not get deobfuscated from a 1.2.5 mod a few days ago, but I just created a temporary workaround in my code to call the right one. But now it's happened with another mod, and the problem is more pronounced. A wild guess is an inheritance issue based on my own experience with remapping, but who knows.

If you want examples, get buildcraft-client-B-transport-2.2.14.zip, look in BuildCraftTransport.initialize(), for:

pipeWaterproof = new ItemBuildCraftTexture(DefaultProps.PIPE_WATERPROOF_ID).e(33);

e is supposed to be setIconIndex.

The more pronounced one was RedPowerLogic-2.0pr5b2.zip, in eloraam.logic.BlockLogic. The constructor has three unmapped methods, and then down in the class itself is an actual method without a deobfuscated name.

I pulled these from Tekkit Classic, btw.

master801 commented 9 years ago

That issue actually may be from the mappings themselves. Of course this is just an assumption.

FyberOptic commented 9 years ago

I thought it might have been initially, but I actually used the mappings to determine what method it was, so I'm less inclined to think so.

master801 commented 9 years ago

@FyberOptic Hmm.... I'll have to try it myself, then.

EDIT: Ah, I know what the problem is. You're not de-obfuscating the mod with the parent mod(s).

Use the command line version of B.O.N. to access it.

FyberOptic commented 9 years ago

Holy crap that makes perfect sense, I can't believe I overlooked it.

Thanks for that. I'll give it a go.

EDIT: That seemed to fix it so far, so don't mind me, I'm just a derp.

immibis commented 9 years ago

@master801 is correct - without seeing BuildCraft Core, BON can't know whether ItemBuildCraftTexture.e(int) is an override of Item.e(int), or a completely separate method, or even an override of SomeOtherClass.e(int).