Skip to content

Anvil-Dev/AnvilLib

Repository files navigation

AnvilLib 中文 | English

Minecraft Maven Central NeoForge License

AnvilLib 是一个由 Anvil Dev 开发的 NeoForge 模组库,为 Minecraft 模组开发者提供一系列实用的工具和框架。

特性

AnvilLib 采用模块化设计,包含以下功能模块:

模块 说明
Config 基于注解的配置系统
Integration 模组兼容性集成框架
Recipe 世界内配方系统
Moveable Entity Block 可被活塞推动的方块实体支持
Registrum 简化的注册系统

模块介绍

Config 模块

提供基于注解的配置管理系统,简化模组配置的定义和管理。

主要特性:

  • 使用 @Config 注解定义配置类
  • 使用 @Comment 添加配置注释
  • 使用 @BoundedDiscrete 定义数值范围
  • 使用 @CollapsibleObject 创建嵌套配置
  • 自动生成客户端配置界面

使用示例:

@Config(name = "my_mod", type = ModConfig.Type.COMMON)
public class MyModConfig {
    @Comment("启用调试模式")
    public boolean debugMode = false;

    @Comment("最大数量")
    @BoundedDiscrete(min = 1, max = 100)
    public int maxCount = 10;
}

// 注册配置
MyModConfig config = ConfigManager.register("my_mod", MyModConfig::new);

Integration 模块

提供模组间集成的框架,支持根据其他模组的存在与否自动加载集成代码。

主要特性:

  • 使用 @Integration 注解声明集成类
  • 支持版本范围匹配
  • 支持不同运行环境(CLIENT / DEDICATED_SERVER / DATA)

使用示例:

@Integration(value = "jei", version = "[19.0,)")
public class JEIIntegration {
    public void init() {
        // JEI 集成逻辑
    }
}

Recipe 模块

提供世界内配方系统,允许定义在世界中(而非工作台)执行的配方。

主要特性:

  • 支持自定义配方触发器 (Trigger)
  • 支持配方谓词 (Predicate) 进行条件判断
  • 支持多种配方结果 (Outcome)
  • 内置优先级系统
  • 完整的数据包支持

配方组成:

  • Trigger: 触发配方的条件(如物品落地、爆炸等)
  • Predicate: 配方匹配条件
  • Outcome: 配方执行结果(如生成物品、设置方块等)

Moveable Entity Block 模块

允许带有方块实体的方块被活塞推动,同时保留其数据。

使用示例:

public class MyBlock extends Block implements IMoveableEntityBlock {
    @Override
    public CompoundTag clearData(Level level, BlockPos pos) {
        // 返回需要保留的方块实体数据
        BlockEntity be = level.getBlockEntity(pos);
        return be != null ? be.saveWithoutMetadata(level.registryAccess()) : new CompoundTag();
    }

    @Override
    public void setData(Level level, BlockPos pos, CompoundTag nbt) {
        // 在新位置恢复方块实体数据
        BlockEntity be = level.getBlockEntity(pos);
        if (be != null) {
            be.loadAdditional(nbt, level.registryAccess());
        }
    }
}

Registrum 模块

基于 Registrate 的注册系统,简化物品、方块、实体等的注册流程。

主要特性:

  • 链式 API 设计
  • 自动生成语言文件
  • 自动生成数据包
  • 支持各类 Builder

使用示例:

public static final Registrum REGISTRUM = Registrum.create("my_mod");

public static final RegistryEntry<Item> MY_ITEM = REGISTRUM
    .item("my_item", Item::new)
    .properties(p -> p.stacksTo(16))
    .register();

依赖引入

Gradle (Groovy DSL)

repositories {
    mavenCentral() // 本项目已经上传至 Maven Central
}

dependencies {
    // 完整库
    implementation "dev.anvilcraft.lib:anvillib-neoforge-1.21.1:2.0.0"

    // 或按需引入单独模块
    implementation "dev.anvilcraft.lib:anvillib-config-neoforge-1.21.1:2.0.0"
    implementation "dev.anvilcraft.lib:anvillib-integration-neoforge-1.21.1:2.0.0"
    implementation "dev.anvilcraft.lib:anvillib-recipe-neoforge-1.21.1:2.0.0"
    implementation "dev.anvilcraft.lib:anvillib-moveable-entity-block-neoforge-1.21.1:2.0.0"
    implementation "dev.anvilcraft.lib:anvillib-registrum-neoforge-1.21.1:2.0.0"
}

Gradle (Kotlin DSL)

repositories {
    mavenCentral() // 本项目已经上传至 Maven Central
}

dependencies {
    implementation("dev.anvilcraft.lib:anvillib-neoforge-1.21.1:2.0.0")
}

构建项目

# 克隆仓库
git clone https://github.com/Anvil-Dev/AnvilLib.git
cd AnvilLib

# 构建
./gradlew build

环境要求

  • Java 21+
  • Minecraft 1.21.1
  • NeoForge 21.1.x

许可证

本项目采用 MIT License 许可证。

Registrum 模块部分代码基于 Registrate,遵循 Mozilla Public License 2.0。

作者

  • Gugle - 主要开发者

相关链接

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages