进阶技术
Parchment
反混淆
Access Transformers
用于修改原版代码的访问修饰符
- 去掉build.gradle中
accessTransformer前的注释 符号 - 在META-INF文件夹下创建
accesstransformer.cfg文件 - 获取MCP到SRG的映射
- 运行Gradle任务
createMcpToSrg - 在
build/createMcpToSrg中找到对应映射名- IDEA中,在源代码中的字段右键菜单中点击
Get SRG Name也可以得到
- IDEA中,在源代码中的字段右键菜单中点击
- 运行Gradle任务
- 在
accessTransformer.cfg填入AT指令<访问修饰符> <类的全称> <字段名>(参数类型)<返回类型>- 新的访问修饰符,如果想要去除
final,则加-f标记,例如public-f - 类的全名,例如
net.minecraft.client.Minecraft - 字段或方法的Searge名(方法需要添加相应的方法签名),如
field_54654_a或func_4444_a()V
- 新的访问修饰符,如果想要去除
如下:
# accesstransformer.cfg
#Hook
protected net.minecraft.world.entity.projectile.FishingHook f_37089_ # nibble
protected net.minecraft.world.entity.projectile.FishingHook f_37094_ # hookedIn
public net.minecraft.world.entity.projectile.FishingHook$FishHookState
protected net.minecraft.world.entity.projectile.FishingHook f_37095_ # currentState
protected net.minecraft.world.entity.projectile.FishingHook f_37103_ # life
#Projectile
protected net.minecraft.world.entity.projectile.Projectile f_150164_ # hasBeenShot
protected net.minecraft.world.entity.projectile.Projectile f_37246_ # leftOwner
protected net.minecraft.world.entity.projectile.Projectile m_37276_()Z # checkLeftOwner
#Loot
public net.minecraft.world.level.storage.loot.BuiltInLootTables m_78769_(Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/resources/ResourceLocation; # register
#Other
public net.minecraft.client.gui.screens.Screen m_142437_()Ljava/util/List; #narratables
Mixin
通过注入自己的代码,达到对MC原版内容的修改
Data Generator
用于自动生成Resources文件夹下的内容