Skip to content

Java 扩展 ​

MBD2 21.1.1

当整合包需要新的存储模型、配方内容类型、条件、机器子类或外部模组 capability 时使用 Java。MBD2 将面向编辑器的定义与运行时对象分离,也将配方内容与处理该内容的 Trait 分离。

MBD2 Add Trait 注册表包含内置和 Java 集成提供的 Trait definition type
Java TraitDefinitionType 注册成功后会成为编辑器条目;配方 capability 与 condition 使用各自注册表。

选择扩展点 ​

需求实现内容注册方式
从模组 JAR 加载编辑器生成的机器MBDRegistryEvent.Machine 监听器NeoForge mod event bus
添加新的机器项目/定义类别MachineDefinitionType<T> 和定义子类@LDLRegister 静态字段
添加存储、行为或方块 capabilityTraitDefinition + TraitTraitDefinitionType 静态字段
添加配方内容领域RecipeCapability<T> + IContentSerializer<T>RecipeCapability 静态字段
让 Trait 消耗/产出该内容IRecipeHandlerTrait<T> 或 RecipeHandlerTrait<T>由运行时 Trait 返回
添加环境/运行时前置条件RecipeCondition在条件类上添加注解
添加蓝图节点KilaGraph 的 Node 子类@NodeAttribute(graphTypes = MachineBlueprintGraph.class)

请先完成 Gradle 依赖配置,再阅读注册与生命周期。确认工作区能解析 MBD2 与 LDLib2 后,再依次完成自定义能力、自定义 Trait和自定义条件教程。

动手写 Java 之前

蓝图不需要模组就能触及每个机器事件、每个 Trait handler 和整个配方对象。只有需要一种新的东西——存储模型、内容类型、条件——时才用 Java,而不是用已有积木拼出来的新行为。

API 层级

这些页面对应 MBD2 21.1.1。MBD2 的构造工作完成后 registry 会冻结;不要在 common setup、服务器启动或 KubeJS server script 中注册这些对象。

Released under the MIT License.