物品
与方块一样,物品是大多数 Mod 的重要组成部分。方块构成周围的世界,物品则存在于物品栏中。
原创说明图,依据 Forge 1.21.x 官方文档 绘制。
创建物品
基础物品
不需要特殊功能的基础物品,例如木棍或糖,不需要自定义类。通过带有 Item$Properties 对象的构造函数实例化 Item 即可。使用构造函数创建 Item$Properties,并调用其方法自定义:
| 方法 | 说明 |
|---|---|
requiredFeatures |
设置在物品所属的 CreativeModeTab 中看到该物品所需的 FeatureFlag。 |
durability |
设置物品的最大损伤值。大于 0 时添加 damaged 和 damage 两个物品属性。 |
stacksTo |
设置最大堆叠数量。物品不能同时具有耐久和堆叠能力。 |
setNoRepair |
使物品无法修复,即使它有耐久。 |
craftRemainder |
设置容器物品,例如使用熔岩桶后返还空桶。 |
上述方法可以链式调用,即返回 this 以便连续调用。
高级物品
上述属性设置只适用于简单物品。更复杂的物品应继承 Item 并重写其方法。
创造模式标签页
通过Mod 事件总线上的 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,或表示玩家是否有权限看到管理员创造标签页的布尔值,启用或禁用添加物品。
自定义创造模式标签页
自定义 CreativeModeTab 必须注册。通过 CreativeModeTab#builder 创建构建器,可设置标题、图标、默认物品及其他属性。Forge 还提供方法自定义标签页图像、标签和槽位颜色、排序位置等。
// 假设有名为 REGISTRAR 的 DeferredRegister<CreativeModeTab>
// 假设有名为 ITEM 和 BLOCK 的 RegistryObject<Item> 和 RegistryObject<Block>
public static final RegistryObject<CreativeModeTab> EXAMPLE_TAB = REGISTRAR.register("example", () -> CreativeModeTab.builder()
// 设置标签页显示名称
.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()
);
注册物品
物品必须注册才能工作。
原文:Items。