物品简介

物品

与方块一样,物品是大多数 Mod 的重要组成部分。方块构成周围的世界,物品则存在于物品栏中。

Item.Properties 配置基础物品,注册后可在创造模式内容事件中调用 accept 加入目标标签页。

原创说明图,依据 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。