Changes

614 bytes added ,  23:38, 12 August 2021
Add information on member signatures. TODO: add a link to the Java specification on signatures
Line 18: Line 18:  
As Forge is loading, it scans the jar file for the META-INF/accesstransformers.cfg file. if it's found, it is parsed according to the specification:
 
As Forge is loading, it scans the jar file for the META-INF/accesstransformers.cfg file. if it's found, it is parsed according to the specification:
   −
<code ->NewAccessSpecifier MemberSignature # comment</code>
+
<code ->NewAccessSpecifier ClassSignature MemberSignature # comment</code>
   −
A random example to understand the syntax:
+
If you're targetting a class itself, you may omit the Member Signature.<br>
 +
However, it is required if you're targetting a class or field inside the class.<br>
 +
<code>MemberSignature</code>s use the Java specification for parts.<br>
 +
Importantly, classes are in the form <code>Lpath/to/Class;</code>, method descriptors are <code>name(parameters)return</code> and <code>V</code> is void.<br>
 +
 
 +
A couple random examples to understand the syntax:
 +
 
 +
<code>
 +
public net.minecraft.world.level.chunk.PaletteResize # makes the PaletteResize class public<br>
 +
protected net.minecraft.client.gui.Gui f_168667_ # COLOR_WHITE<br>
 +
public net.minecraft.client.renderer.GameRenderer m_109128_(Lnet/minecraft/resources/ResourceLocation;)V # loadEffect </code>
   −
<code ->public net.minecraft.world.level.chunk.PaletteResize # makes PaletteResize public</code>
      
If a valid entry is found on a line, Forge will look into the bytecode of the file where that member is defined, and change its access to whatever you desire it to be.
 
If a valid entry is found on a line, Forge will look into the bytecode of the file where that member is defined, and change its access to whatever you desire it to be.