跳到主要内容

进阶技术

Parchment

反混淆

Access Transformers

用于修改原版代码的访问修饰符

  1. 去掉build.gradle中accessTransformer前的注释符号
  2. 在META-INF文件夹下创建accesstransformer.cfg文件
  3. 获取MCP到SRG的映射
    • 运行Gradle任务createMcpToSrg
    • build/createMcpToSrg中找到对应映射名
      • IDEA中,在源代码中的字段右键菜单中点击Get SRG Name也可以得到
  4. accessTransformer.cfg填入AT指令
    • <访问修饰符> <类的全称> <字段名>(参数类型)<返回类型>
      • 新的访问修饰符,如果想要去除final,则加-f标记,例如public-f
      • 类的全名,例如net.minecraft.client.Minecraft
      • 字段或方法的Searge名(方法需要添加相应的方法签名),如field_54654_afunc_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文件夹下的内容