原文:MinecraftForge/Documentation · 目标版本:Forge 1.20.1
物品¶
与方块(Block)一样,物品(Item)也是大多数模组的关键组成部分。方块构成了你周围的世界,而物品则存在于物品栏与容器(inventory)之中。
创建物品¶
基础物品¶
不需要特殊功能的基础物品(比如木棍或糖)无需自定义类。你可以通过实例化 Item 类并传入一个 Item$Properties 对象来创建物品。这个 Item$Properties 对象可以通过其构造函数创建,并通过调用它的方法进行定制。例如:
| 方法 | 说明 |
|---|---|
requiredFeatures |
设置所需的 FeatureFlags,用于决定该物品是否显示在它所加入的 CreativeModeTab(创造模式标签页)中。 |
durability |
设置该物品的最大耐久值。如果大于 0,会额外添加 "damaged" 和 "damage" 两个物品属性。 |
stacksTo |
设置最大堆叠数量。一个物品不能既可损耗又可堆叠。 |
setNoRepair |
使该物品无法被修复,即使它是可损耗的。注意:该方法在 Forge 1.20.1 中尚不存在,属于后续版本新增的方法;在 1.20.1 中如需禁止修复,可以覆写(Override)Item#isValidRepairItem 并返回 false。 |
craftRemainder |
设置该物品的容器物品(container item),就像岩浆桶在使用后会给你留下一个空桶一样。 |
上述方法都支持链式调用(chainable),即它们会 return this,以便连续调用。
进阶物品¶
像上面那样设置物品属性只适用于简单物品。如果你想要更复杂的物品,就应该继承 Item 类并覆写它的方法。
创造模式标签页¶
可以通过模组事件总线上的 BuildCreativeModeTabContentsEvent 将物品添加到 CreativeModeTab 中。通过 #accept 可以无需任何额外配置地添加一个或多个物品。
// 注册在 MOD 事件总线上
// 假设我们有名为 ITEM 和 BLOCK 的 RegistryObject<Item> 和 RegistryObject<Block>
@SubscribeEvent
public void buildContents(BuildCreativeModeTabContentsEvent event) {
// 添加到“材料”标签页
if (event.getTabKey() == CreativeModeTabs.INGREDIENTS) {
event.accept(ITEM);
event.accept(BLOCK); // 接收 ItemLike,假定方块已注册了对应的物品
}
}
你还可以通过 FeatureFlagSet 中的 FeatureFlag,或通过一个决定玩家是否有权限查看管理员(operator)创造标签页的布尔值,来启用或禁用物品的添加。
自定义创造标签页¶
自定义的 CreativeModeTab 必须注册。可以通过 CreativeModeTab#builder 创建构建器(builder)。标签页可以设置标题、图标、默认物品以及许多其他属性。此外,Forge 还提供了额外的方法来自定义标签页的图像、标签和格子(slot)颜色、标签页的排列位置等。
// 假设我们有一个名为 REGISTRAR 的 DeferredRegister<CreativeModeTab>
// 假设我们有名为 ITEM 和 BLOCK 的 RegistryObject<Item> 和 RegistryObject<Block>
public static final RegistryObject<CreativeModeTab> EXAMPLE_TAB = REGISTRAR.register("example", () -> CreativeModeTab.builder(CreativeModeTab.Row.TOP, 0)
// 设置标签页显示的名称
.title(Component.translatable("item_group." + MOD_ID + ".example"))
// 设置创造标签页的图标
.icon(() -> new ItemStack(ITEM.get()))
// 向标签页添加默认物品
.displayItems((params, output) -> {
output.accept(ITEM.get());
output.accept(BLOCK.get());
})
.build()
);
注册物品¶
物品必须注册才能正常工作。
相关章节¶
- 想让物品有功能(右键使用、食物、工具、属性、提示)和动画(贴图逐帧、手持姿态、自定义渲染器):20. 物品进阶:功能与动画
- 方块:18. 方块注册、21. 方块进阶:交互与动画