Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Deploying a mod with Gradle 10.12.0.2014


heaton84
 Share

Recommended Posts

I've successfully created and tested a mod with Gradle, but when it comes time to deploy I'm coming up stupid here.

 

Everything I've read has vaguely referenced editing build.gradle... I've done that (http://pastebin.com/N5WcAx8m), and ran gradlew build.

 

The problem I'm having is that the contents of bin are still accessing unobfuscated objects in Minecraft.

 

I found a folder build\tmp\reobf that has jars named reobfed###########.jar, but those too are unobfuscated.

 

What am I missing here?

Link to comment
Share on other sites

Thanks GotoLink, unfortunately I seem to be having the same problem with the jars found there. Namely, the bytecode in one of those jars runs:

 

ldc <Class net.minecraft.block.Block>

 

To spin up a new Block instance... which of course throws a ClassNotFound exception, and kills the minecraft. Pretty sure this should be along the lines of:

 

ldc <Class ahu>

 

Now, in /build/libs I have:

 

PaneInTheGlass-1.0.jar

PaneInTheGlass-deobf-1.0.jar

PaneInTheGlass-javadoc-1.0.jar

PaneInTheGlass-src-1.0.jar

 

I am assuming PaneInTheGlass-1.0.jar is the one I want to use.

 

(For those curious, I'm grabbing the type of the Block class to see if I should use obfuscated names in my transform class. If I bypass this check and force my obfuscation flag to true, my mod still blows up later when my mod code tries to test against Block.air... I get a field not found exception. Therefore I can only conclude that my mod isn't being reobfuscated.)

 

I feel like I'm missing a concept here.

Edit: Added logs: http://pastebin.com/vgUWQpJG

Link to comment
Share on other sites

ForgeGradle obfuscates to SRG names (which are func_*** / field_***). Also it doesn't change class names. Why? FML deobfuscates at runtime. That means: even though the minecraft jar contains classes like

bhv

or whatever they are transformed on the fly while being loaded to something like

net.minecraft.entity.Entity

. The method and field names are changed as well. That helps to preserve compatibility between minor versions (mods for Minecraft 1.6.2 still run on 1.6.4).

Link to comment
Share on other sites

ForgeGradle obfuscates to SRG names (which are func_*** / field_***). Also it doesn't change class names. Why? FML deobfuscates at runtime. That means: even though the minecraft jar contains classes like

bhv

or whatever they are transformed on the fly while being loaded to something like

net.minecraft.entity.Entity

. The method and field names are changed as well. That helps to preserve compatibility between minor versions (mods for Minecraft 1.6.2 still run on 1.6.4).

 

Oh, so my class transformer is getting in before this. I'm trying to be too clever with my obfuscation detector.

 

Mod is working now. Thanks!

Link to comment
Share on other sites

You can tell FML to run your Transformer after the runtime-deobfuscation by applying @SortingIndex to your IFMLLoadingPlugin class and setting it to a value > 1000 (that's the sorting index for the runtime deobfuscater, which is just an ordinary IClassTransformer itself).

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.