手册:制作附加包/物品

From Minecraft基岩版开发Wiki
物品
系列教程
所属系列
难度
初级
前置知识
适用版本
国际版
≥ 1.20.30
实践设备
WindowsAndroid
所需软件

引言[edit]

基岩版1.12更新中,Mojang正式向开发者提供了自定义物品的相关接口。但由于当时 Mojang在附加包方面的开发重心仍在于开放自定义实体的相关接口上,故物品接口在很长的一段时间里都处于“极不完善”的状态。

直至1.16.100.56 beta版本,自定义物品相关接口才得到了大幅增强,同时自该版本起,Mojang摒弃了资源包中的物品配置文件,使物品的定义更加便捷且架构更加合理。

因1.16.100以后的新版物品结构简单,定义方便,功能多样,故本教程仅介绍新版物品的定义方法。

在1.20.30正式版以后,随着物品事件逐渐被弃用,新的物品组件逐渐走出实验玩法以及脚本API中相关内容的完善,自定义物品部分功能的实现方式又发生了变化。

简介[edit]

一个完整的物品应该由两部分组成:

  • 物品资源(物品的纹理、名称)
  • 物品行为(物品的行为、属性、赋命名空间标识符等)

在本教程中,我们将创建一个简单的物品。在第一节中,我们将学习如何定义物品行为;在第二节中,我们将给这个物品分配纹理、名称。

物品行为[edit]

要定义一个物品的行为,你需要在行为包中的 items文件夹下新建JSON文件,并将其命名为<物品ID>.json

物品的基本架构如下:

{
  "format_version": "1.20.30",//格式版本
  "minecraft:item": {
    "description": {
    }, //描述
    "components": {
    }, //组件
    "events": {
    } //事件
  }
}

描述 (description) 对象储存了用于描述该物品的基础信息,其中最重要值的便是identifier,其定义了物品的赋命名空间标识符

其详细数据结构见此

格式版本(format_version)决定游戏以何种版本的规则读取文件,不同的格式版本的组件、事件写法可能不同。

组件(components)对象决定物品的行为,你可以选择并添加需要的组件属性,例如添加minecraft:glint组件可以让物品具有附魔光芒、添加minecraft:food组件可以让物品可以被食用。

完整的组件列表见此

事件(events)对象储存了该物品可能用到的所有事件,其可以由特定的触发器组件触发或者由组件内的触发器参数触发,对于初学者,可暂时忽略这部分。

添加新物品[edit]

首先我们在行为包文件根目录下新建一个名为items的文件夹,所有的物品文件将储存于此文件夹中,你也可以创建子文件夹以分类物品文件。

新建一个文本文档,将其后缀改为.json,并修改文件名称为标识符后半部分。在这之后,我们可以向其中写下这些内容以定义一个基础物品。

在你的物品JSON文件里添加以下内容:

{
    "format_version": "1.20.30",
    "minecraft:item": {
        "description": {
            "identifier":"wiki:custom_item",//该物品赋命名空间标识符,出现重复的标识符会被识别为同一物品。
            "menu_category": {
                "category": "items",
				"group": "itemGroup.name.custom"
            }//物品创造模式分类与分组,在不同格式版本写法不同
        },
        "components": {
            "minecraft:icon": {
                "texture": "wiki.custom_item"//定义纹理,填短名称
            }
        }
    }
}

进入游戏,你会发现自己的物品没有纹理且有一个奇怪的名称,这是因为我们还没有定义物品的资源。

物品资源[edit]

现在我们有了一个物品,本节我们将要给这个物品添加纹理与名称。

添加纹理[edit]

纹理存储在资源包中,为了方便访问,我们需要给纹理定义一个短名称。

首先,我们需要一个16×16的.png图片文件作为纹理,并将其放入资源包的textures/items文件夹中。

接着我们需要给这个纹理分配短名称,所有物品短名称都存储在资源包/textures/item_texture.json,其中包含短名称及其分配纹理的列表,添加以下内容:

{
	"resource_pack_name": "示例资源包",//资源包名称
	"texture_name": "atlas.items",//纹理类型,不可更改
	"texture_data": {
	    "wiki.custom_item": {//纹理短名称,应与minecraft:icon组件中填写的值相同
	       "textures": "textures/items/custom_item"//纹理路径,不带.png后缀
        }
	}
}

添加名称[edit]

最后,我们要为物品添加一个好听的名字。游戏会为这个物品分配一个形似item.<物品标识符>的翻译键,我们只需要在语言文件中定义它即可。

首先在资源包中新建名为texts的文件夹,在其中新建名为zh_CN.lang的文本文件,输入以下内容:

item.wiki:custom_item=自定义物品

更多信息见Manual:制作附加包/本地化

你知道吗[edit]

  • 自定义物品的Json文件名称并不要求必须与物品ID相同。
  • 物品纹理并不强制要求分辨率为16×16,但若不是专门制作高清资源包的话,建议物品贴图大小不要超过128*128,既节省精力,又节省空间和性能。

< 纹理 | 物品组件 >