• Forge论坛

导航页

  • 主页
  • 向文档做出贡献
  • 入门
    • 概述
    • 模组文件
    • 规划你的模组结构
    • 版本号
  • 核心概念
    • 注册表
    • 端位(Sides)
    • 事件
    • 模组生命周期
    • 资源
    • 国际化与本地化
  • 方块
    • 概述
    • 方块状态
  • 物品
    • 概述
      • 创建一个物品
      • 创造模式物品栏
      • 注册一个物品
    • BlockEntityWithoutLevelRenderer
  • 网络
    • 概述
    • SimpleImpl
    • 实体的同步
  • 方块实体
    • 概述
    • BlockEntityRenderer
  • 游戏特效
    • 粒子效果
    • 音效
  • 数据储存
    • Capabilities
    • Saved Data
    • 编解码器(Codecs)
  • 图形用户界面
    • 菜单(Menus)
    • 屏幕(Screens)
  • 渲染
    • 模型扩展
      • 概述
      • 根变换
      • 渲染类型
      • 部分可见度
      • 面数据
    • 模型加载器
      • 概述
      • 烘焙模型
      • 变换
      • 物品重载
  • 资源
    • 客户端资源(Assets)
      • 概述
      • 模型
        • 概述
        • 纹理色调
        • 物品属性
    • 服务端数据(Data)
      • 概述
      • 配方
        • 概述
        • 自定义配方
        • 原料
        • 非数据包配方
      • 战利品表
      • 全局战利品修改器
      • 标签
      • 进度
      • 条件性加载数据
  • 数据生成
    • 概述
    • 客户端资源(Assets)
      • 模型提供者
      • 语言提供者
      • 音效提供者
    • 服务端数据(Data)
      • 配方提供者
      • 战利品表提供者
      • 标签提供者
      • 进度提供者
      • 全局战利品修改器提供者
      • 数据包注册表对象提供者
  • 杂项功能
    • 配置
    • 键盘布局
    • 游戏测试
    • Forge更新检查器
    • 调试分析器
  • 进阶主题
    • 访问转换器
  • 向Forge做出贡献
    • 概述
    • Pull Request准则
  • 旧版本
    • 概述
    • 移植到当前版本

物品

与方块一样,物品也是大多数模组的关键组成部分。方块在构成了你身边的存档的同时,物品也存在于物品栏中。

创建一个物品

基础物品

对于不需要特殊功能的简单物品(比如木棍或糖),不必自定义一个类。你可以通过使用Item$Properties对象实例化Item类来创建一个物品。这个Item$Properties对象可以通过调用其构造函数生成并通过调用其方法进行自定义。例如:

方法 描述
requiredFeatures 设置在所添加到的CreativeModeTab中查看此物品所需的FeatureFlag。
durability 设置该物品的最大耐久。如果超过0,两个物品属性“damaged”和“damage”会被添加。
stacksTo 设置最大物品栈大小。你不能拥有一件既有耐久又可堆叠的物品。
setNoRepair 使此物品无法修复,即使它是有耐久的。
craftRemainder 设置该物品的容器物品,即熔岩桶在使用后将空桶还给你的方式。

上面的方法是可链接的,这意味着它们return this以便于串行调用它们。

进阶物品

如上所述设置物品属性的方式仅适用于简单物品。如果你想要更复杂的物品,你应该继承Item类并重写其方法。

创造模式物品栏

可以通过模组事件总线上的BuildCreativeModeTabContentsEvent将物品添加到CreativeModeTab。可以通过#accept添加物品,而无需任何其他配置。

// 已在模组事件总线上注册
// 假设我们有一个名为ITEM的RegistryObject<Item>和一个名为BLOCK的RegistryObject<Block>
@SubscribeEvent
public void buildContents(BuildCreativeModeTabContentsEvent event) {
  // 添加到ingredients创造模式物品栏
  if (event.getTabKey() == CreativeModeTabs.INGREDIENTS) {
    event.accept(ITEM);
    event.accept(BLOCK); // 接受一个ItemLike,假设方块已注册其物品
  }
}

你还可以通过FeatureFlagSet中的FeatureFlag或一个用于确定玩家是否有权查看管理员创造模式物品栏的boolean值来启用或禁用物品。

自定义创造模式物品栏

自定义CreativeModeTab必须已被注册。生成器可以通过CreativeModeTab#builder创建。选项卡可以设置标题、图标、默认物品和许多其他属性。此外,Forge还提供了额外的方法来定制标签的图像、标签和插槽颜色,以及选项卡的排序位置等。

// 假设我们有一个名为REGISTRAR的DeferredRegister<CreativeModeTab>
// 假设我们有一个名为ITEM的RegistryObject<Item>和一个名为BLOCK的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()
);

注册一个物品

物品必须经过注册后才能发挥作用。

Built with MkDocs using a custom theme. Hosted by Read the Docs.
Enable Dark Theme