Fabric-ASM 项目教程

Fabric-ASM 项目教程

Fabric-ASM Just what Asie never wanted Fabric-ASM 项目地址: 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 Fabric-ASM 项目地址: https://gitcode.com/gh_mirrors/fa/Fabric-ASM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钱勃骅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值