Fabric-ASM 项目教程
Fabric-ASM Just what Asie never wanted 项目地址: https://gitcode.com/gh_mirrors/fa/Fabric-ASM
1. 项目介绍
Fabric-ASM 是一个用于 Minecraft Fabric 模组的工具,允许开发者直接对类进行 ASM 修改,类似于 Forge 的 coremod 功能。该项目由 Chocohead 开发,旨在为 Fabric 生态系统提供更强大的类修改能力。
Fabric-ASM 的主要功能包括:
- 通过访问转换器(Access Transformers)修改类的访问权限。
- 通过早期唤醒机制(Early Risers)在模组加载早期进行类扩展。
- 支持枚举扩展和类生成。
2. 项目快速启动
2.1 环境准备
确保你已经安装了以下工具:
- JDK 8 或更高版本
- Gradle
- Minecraft Fabric 模组开发环境
2.2 添加依赖
在你的 build.gradle
文件中添加 Fabric-ASM 依赖:
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
modImplementation 'com.github.Chocohead:Fabric-ASM:v1.0'
}
2.3 创建访问转换器
在 src/main/resources
目录下创建一个 META-INF/accesstransformer.cfg
文件,并添加你需要的访问转换规则。例如:
public net/minecraft/item/ItemStack
public net/minecraft/item/ItemStack <init>(Lnet/minecraft/item/ItemProvider;)V
2.4 配置早期唤醒机制
在你的 fabric.mod.json
文件中添加早期唤醒机制的配置:
{
"entrypoints": {
"mm:early_risers": [
"com.example.mod.MyEarlyRiser"
]
}
}
创建 MyEarlyRiser
类并实现 Runnable
接口:
package com.example.mod;
public class MyEarlyRiser implements Runnable {
@Override
public void run() {
// 在这里进行早期唤醒操作
}
}
2.5 构建和运行
使用 Gradle 构建你的模组:
./gradlew build
将生成的模组文件放入 Minecraft 的 mods
目录中,启动游戏并测试你的修改。
3. 应用案例和最佳实践
3.1 修改私有类和方法
假设你需要修改一个私有类 PrivateClass
的访问权限,使其可以被其他类访问。你可以在 accesstransformer.cfg
中添加如下规则:
public com/example/mod/PrivateClass
public com/example/mod/PrivateClass <init>()V
3.2 扩展枚举
假设你需要扩展 Minecraft 的 EnchantmentTarget
枚举,添加一个新的目标类型。你可以使用 ClassTinkerers
类来实现:
public class MyEarlyRiser implements Runnable {
@Override
public void run() {
ClassTinkerers.enumBuilder("net.minecraft.enchantment.EnchantmentTarget")
.addEnum("NEW_TARGET", () -> new Object[]{})
.build();
}
}
3.3 动态加载类
假设你需要在运行时动态加载一个类,可以使用 ClassTinkerers.define
方法:
public class MyEarlyRiser implements Runnable {
@Override
public void run() {
byte[] classBytes = generateClassBytes();
ClassTinkerers.define("com.example.mod.DynamicClass", classBytes);
}
private byte[] generateClassBytes() {
// 使用 ASM 生成类字节码
return new byte[0];
}
}
4. 典型生态项目
Fabric-ASM 在 Fabric 生态系统中被广泛应用于以下类型的项目:
- 核心模组开发:用于修改 Minecraft 的核心类,实现更深层次的定制。
- 扩展模组:用于扩展 Minecraft 的枚举和类,添加新的功能和特性。
- 性能优化:通过修改类的访问权限和方法,优化游戏性能。
通过 Fabric-ASM,开发者可以更灵活地定制和扩展 Minecraft,满足各种复杂的需求。
Fabric-ASM Just what Asie never wanted 项目地址: https://gitcode.com/gh_mirrors/fa/Fabric-ASM