创建自定义物品
在《我的世界》中,我们可以创建自定义物品,这些物品可以像普通物品一样被丢弃、交易、合成和使用。该系统功能强大,能够制作食物、燃料和工具等各种物品。
在本教程中,我们将学习如何创建一个简单的“灵质”物品,稍后我们将用它作为幽灵实体的战利品掉落。

从概念上讲,物品由两部分组成:
- 视觉效果(纹理、名称)
- 行为(物品的行为方式)
首先,我们将学习如何创建一个新的简单物品并定义其行为。在下一节中,我们将为这个物品分配一个纹理,以便在游戏中看到它。
物品行为
要制作一个物品,我们需要一种方法来标识它并定义我们希望它如何行为。为此,我们将创建一个文件,告诉《我的世界》将某些行为应用到我们选择的特定物品上。
在本节结束时,我们将完全定义物品的行为。
组件
不同的物品有不同的行为;你可以吃猪排,附魔物品会发光,而鸡蛋只能堆叠到16个。这些都是物品行为的例子。我们可以通过使用行为组件来定义自定义物品的行为方式。
组件示例
"minecraft:food":
"minecraft:glint": true,
"minecraft:max_stack_size": 16组件包含告诉游戏我们的物品应该做什么的信息。例如,组件 "minecraft:glint" 决定了物品是否应该有附魔光效,因此将其设置为 true 会应用该效果。所有组件都有一个可以编辑的 value,以获得我们想要的行为。
对于我们的灵质,我们将设置其堆叠大小为16,类似于鸡蛋。为此,我们使用组件 "minecraft:max_stack_size" 并将其值设置为 16。
标识符
为了让游戏将正确的组件应用到正确的物品上,我们需要能够告诉游戏哪个物品是我们的。我们通过为物品定义一个标识符来实现这一点。
标识符是该物品独有的名称。对于原版《我的世界》中的鸡蛋,其标识符是 minecraft:egg。标识符由两部分组成:
- 命名空间(
minecraft) - ID(
egg)
命名空间是你的附加包独有的,你将在整个项目中使用它。这是为了减少在游戏中添加两个都包含灵质物品的包时出现的问题;命名空间减少了标识符相同的可能性。《我的世界》使用的命名空间是 minecraft。你的命名空间应该是你独有的,例如作者的缩写或包名的缩写。在我们的示例中,我们将使用命名空间 wiki;有关创建命名空间的更多信息,请查看我们的页面 这里。
ID 是你的物品的简短名称。在这里,我们将使用 ectoplasm。
因此,我们的自定义标识符变为 wiki:ectoplasm。注意,我们使用冒号 : 来分隔命名空间和 ID。当我们想要引用我们的物品时,我们将使用这个标识符,例如使用 /give 命令。
物品文件
现在我们有了组件和标识符,我们可以开始定义我们的物品了。我们通过在行为包中创建一个物品定义文件来定义物品。这里将包含我们所有的信息。
所有物品定义都放在 BP/items/ 中。文件的名称不会影响任何内容,但为了便于导航,建议将其命名为你的 ID。我们将创建一个文件 BP/items/ectoplasm.json。以下是文件的基本布局:
{
"format_version": "1.21.70",
"minecraft:item": {
"description": { ... },
"components": { ... }
}
}你的包中的大多数文件都有两个顶级定义:"format_version" 和 "minecraft:<file_type>"。格式版本定义了《我的世界》将使用哪个版本的附加包系统来读取此文件。对于我们的物品,我们将使用 1.21.70 以允许我们使用最新功能。有关格式版本的更多信息,请查看 这里。
第二个定义定义了文件的类型。在我们的例子中,由于这是一个物品定义,所以是 minecraft:item。在这里,我们将放置所有信息。这将始终包含一个 description 键。
让我们更详细地看看 "description":
"description": {
"identifier": "wiki:ectoplasm",
"menu_category": {
"category": "items"
}
},description 键包含 identifier 和任何其他必需的信息。identifier 允许文件知道将组件应用到哪个物品上。category 键定义了物品将显示在创造模式物品栏/配方书的哪个标签页中。有四个标签页可供选择:"construction"、"equipment"、"items" 和 "nature"。如果不包含此键,则物品不会显示在创造模式物品栏中,但你仍然可以通过 /give 命令获取物品。
现在,我们可以在 components 下实际定义物品的行为。在这里,我们只需放置我们希望物品拥有的任何组件。这将是我们 "minecraft:max_stack_size" 组件。有关你可以使用的其他组件,请查看我们更深入的物品指南 这里。
"components": {
"minecraft:max_stack_size": 16
}这样,我们现在已经完全定义了物品的行为。这是你当前文件应该看起来的样子。
{
"format_version": "1.21.70",
"minecraft:item": {
"description": {
"identifier": "wiki:ectoplasm",
"menu_category": {
"category": "items"
}
},
"components": {
"minecraft:max_stack_size": 16
}
}
}如果你打开一个包含你的附加包的世界,你的物品应该出现在正确的菜单中,但不可见且名称奇怪。
这是因为我们还没有定义视觉效果。然而,你应该看到它的堆叠行为符合预期。在下一节中,我们将定义物品的纹理并将其分配给我们的物品。
物品视觉效果
现在我们有了一个可以工作的物品,我们想为其添加纹理和名称。
纹理作为图像存储在资源包的 RP/textures 下。为了让《我的世界》知道在哪里使用哪个纹理,我们需要为其分配一个简称,以便我们可以访问它。
纹理
首先,我们需要一个物品的纹理。对于我们的灵质,我们将使用这张图片。

所有物品纹理都存储在 RP/textures/items/ 中。从这里,你可以创建任何你想要的子目录。最好用物品的 ID 命名你的纹理图像文件,在我们的例子中,它将是 ectoplasm.png。建议将图像保存为 .png 格式,大小为 16x16,尽管《我的世界》也接受其他格式,如 .jpg 或 .tga。
你的文件夹布局应该如下所示:
- 🖼️ectoplasm.png
简称
简称基本上是分配给纹理文件夹路径的名称,因此无论何时我们想在某个地方使用纹理,我们都会使用它的简称而不是文件夹路径。
所有物品的简称都存储在一个名为 item_texture.json 的文件中,该文件位于 RP/textures 中。这包含一个简称及其分配的纹理的列表。
{
"resource_pack_name": "Ghostly Guide",
"texture_name": "atlas.items",
"texture_data": { ... }
}这里有三个顶级定义,texture_data 是我们定义简称的地方,其他两个定义了文件的类型。resource_pack_name 只是我们的资源包的名称,texture_name 是这种纹理文件的类型。由于这是用于 物品 的,因此它将始终设置为 atlas.items。
在 texture_data 下是我们的物品简称定义列表。一个示例定义如下所示:
"wiki:ectoplasm": {
"textures": "textures/items/ectoplasm"
}这里 wiki:ectoplasm 是我们的简称,textures 下是我们物品的路径。请注意,这是相对于资源包的,并且不包括文件扩展名。你的简称应该简短且唯一。我们建议将其设置为我们要分配给的物品的命名空间和 ID。
现在,无论何时我们想引用我们的图像,我们都会使用简称 wiki:ectoplasm。
图标
为了最终将我们的纹理应用到我们的物品上,我们将 minecraft:icon 组件添加到我们的物品定义中,并将其值设置为我们的简称。
"components": {
"minecraft:max_stack_size": 16,
"minecraft:icon": "wiki:ectoplasm"
}现在,你的纹理应该出现在你的物品上。
物品名称
最后要添加的是为你的物品设置一个漂亮的名称。目前它看起来像 item.wiki:ectoplasm。这是你的物品名称的翻译键,用于支持 本地化。要设置它,我们只需要在我们的语言文件中定义它。
我们在创建 RP 和 BP 时已经创建了这些文件,所以我们只需要添加到它们。
item.wiki:ectoplasm=灵质现在,当你进入你的世界时,你的物品应该有一个名称。
概述
现在,你的第一个自定义物品——灵质——已经完成了!如果一切正确完成,该物品现在应该可以通过游戏中的 /give 命令获得,并出现在你的创造模式物品栏中。
你的文件夹结构应该如下所示:
- 📝item_texture.json
- 🖼️ectoplasm.png
- 🈵en_US.lang
- 📝languages.json
- 📝manifest.json
- 🖼️pack_icon.png
- 📝ectoplasm.json
- 🈵en_US.lang
- 📝languages.json
- 📝manifest.json
- 🖼️pack_icon.png
完整的 ectoplasm.json
{
"format_version": "1.21.70",
"minecraft:item": {
"description": {
"identifier": "wiki:ectoplasm",
"menu_category": {
"category": "items"
}
},
"components": {
"minecraft:max_stack_size": 16,
"minecraft:icon": "wiki:ectoplasm"
}
}
}完整的 item_texture.json
{
"resource_pack_name": "Ghostly Guide",
"texture_name": "atlas.items",
"texture_data": {
"wiki:ectoplasm": {
"textures": "textures/items/ectoplasm"
}
}
}如果你遇到了一些问题,请查看 故障排除页面。如果那没有帮助,请将你的结果与 示例文件 进行比较。












