用途
Minecraft Modding Skill 用于创建、修改、调试或迁移 Minecraft 模组,聚焦基于加载器的游戏玩法代码与加载器 API。它覆盖 NeoForge、Forge、Fabric 以及 Architectury 多加载器方案,帮助在正确的平台与版本上编写模组代码。
支持的平台
| 平台 | MC 版本 | Java | 构建系统 |
|---|---|---|---|
| NeoForge | 26.x 当前;保留 1.21.11 示例 | Java 25 当前;1.21.x 上为 Java 21 | Gradle + ModDevGradle |
| Forge | 1.20.1 旧版通道 | Java 17 | Gradle + ForgeGradle 6 |
| Fabric | 26.x 当前;保留 1.21.11 示例 | Java 25 当前;1.21.x 上为 Java 21 | Gradle + Fabric Loom |
| Architectury(多加载器) | 26.x 或 1.21.x | 与 Minecraft 匹配 | Gradle + Architectury Loom |
在编写任何模组专用代码前,始终从 gradle.properties 或 build.gradle 确认平台与 Minecraft 版本。
Minecraft 26.1 引入了 Java 25 和未混淆的游戏可执行文件。对于 26.x 项目,应从当前加载器生成器或示例模组开始,并保留其构建布局。不要将 1.21.11 的映射、Loom 插件、重映射任务或 Java 21 片段复制到 26.x 项目中。Fabric 26.x 使用非重映射的 Loom 路径和官方名称;NeoForge 26.x 应从当前 NeoForge 生成器开始。详细 API 参考覆盖旧版 1.21.x 示例,除非某节明确标注为 26.x。
路由边界
适用:任务是 Java/Kotlin 模组代码、注册表/事件工作、网络通信、数据生成接线和加载器 API。
不适用:任务是仅命令的原版逻辑(minecraft-commands-scripting)或纯数据包(minecraft-datapack)。
不适用:任务针对 Paper/Bukkit 插件(minecraft-plugin-dev)。
识别平台
可通过在 gradle.properties、build.gradle、settings.gradle 中搜索 net.neoforged、net.minecraftforge 或 fabric 来识别平台,并读取 mod ID 与版本。
各平台关键文件:
- NeoForge:src/main/resources/META-INF/neoforge.mods.toml,带 @Mod 注解的主类
- Forge 1.20.1:src/main/resources/META-INF/mods.toml,net.minecraftforge:forge 依赖
- Fabric:src/main/resources/fabric.mod.json,实现 ModInitializer 的类
- Architectury:common/、fabric/、neoforge/ 子项目
构建与测试命令
- ./gradlew build:构建模组 jar
- ./gradlew runClient:运行 Minecraft 客户端测试
- ./gradlew runServer:运行专用服务器测试
- ./gradlew runGameTestServer:运行游戏测试(NeoForge JUnit 风格游戏测试)
- ./gradlew runData:运行数据生成(自动生成 JSON 资源)
- ./gradlew clean:在全新重建前移除本项目生成的构建输出
- ./gradlew dependencyUpdates:检查依赖更新(可选)
./gradlew build 运行项目配置的构建任务。候选模组 jar 通常位于 build/libs/ 下,但任务名和文件名因项目而异。检查构建结果后,在发布前确认预期的可分发文件。
项目结构
技能给出了 NeoForge、Forge 1.20.1 和 Fabric 三种项目布局示例,涵盖 Java 源码目录(入口类、block、item、entity、menu、recipe、worldgen、datagen 等)与资源目录(META-INF 元数据、assets 下的 blockstates、models、items、textures、lang,以及 data 下的 recipe、loot_table、tags)。Forge 1.20.1 使用 mods.toml、net.minecraftforge.* 导入、Java 17 和 ForgeGradle 6 模式,不应与 NeoForge 混用。
核心概念
- 侧(Sides):物理客户端、物理服务器、逻辑客户端、逻辑服务器。使用 @OnlyIn(Dist.CLIENT)(NeoForge)或 @Environment(EnvType.CLIENT)(Fabric)装饰的代码绝不能在服务器上运行。
- 注册表(Registries):Minecraft 中的一切都在注册表中。始终注册对象,绝不在注册表调用之外的字段初始化时构造对象。技能给出了 Blocks、Items、Entity types、Block entity types、Menu/screen-handler types、Sound events、Biomes 在 NeoForge/Mojang 映射与 Fabric/Yarn 映射下的注册表常量对照。
- ResourceLocation / Identifier:每个注册表条目都需要命名空间 ID。26.x 官方名称使用 Identifier.fromNamespaceAndPath;旧版 Mojang 映射使用 ResourceLocation;旧版 Fabric Yarn 映射使用 Identifier.of。
快速模式
技能提供了 NeoForge 26.x、Forge 1.20.1 和 Fabric 的主类与方块注册示例代码,包括 @Mod 入口、DeferredRegister、DeferredBlock、RegistryObject、ResourceKey 等用法。Fabric 26.x 使用官方 Mojang 映射,需在构造对象前创建 key,以便属性在构造期间获得所需 id。
JSON 资源与数据生成
技能要求为每个注册的方块/物品提供匹配的 JSON 资源,并给出方块状态、方块模型、物品模型、战利品表、配方、语言文件、标签等模板的参考位置。数据生成方面,当前 NeoForge 使用 GatherDataEvent.Client / .Server 和 event.createProvider(...);Fabric 和旧版项目保留各自的 datagen 入口点和 Gradle 任务。
常见任务清单
技能给出了添加新方块、新物品、新实体时的检查清单,涵盖子类、注册、模型 JSON、物品定义、纹理、语言条目、战利品表、标签、创造模式标签页注册、配方、渲染器与模型类注册等步骤,并提醒不要混用 Forge 1.20.1 的复数服务端数据路径与 1.21.x 的单数路径。
开源约定
- 许可证:MIT 或 LGPL-3.0,包含 LICENSE 文件和 SPDX-License-Identifier 头
- 版本号:{mod_version}+{mc_version}(例如 2.0.0+1.21.11)
- 变更日志:保持 CHANGELOG.md 更新并附 semver 说明
- 发布:使用 gradle-modrinth 或 curseforgegradle 插件发布到 CurseForge / Modrinth
- CI:GitHub Actions 配合 ./gradlew build 和 ./gradlew runGameTestServer
- PR 约定:PR 限定于单一功能;Java 变更附带资源文件
参考
技能引用了 NeoForge API、Forge 1.20.1 API、Fabric API、通用模式等本地参考文件,以及 NeoForge 官方文档、Fabric 开发者文档、Architectury 文档和 Minecraft Wiki 数据格式页面。
限制
技能明确不适用于纯原版命令逻辑、纯数据包和 Paper/Bukkit 插件开发。具体收费、价格、平台支持范围等未在资料中提供。