在本指南中,你将制作一颗红宝石:一颗简单的闪亮宝石,最多可堆叠 64 个,会出现在创造模式物品栏中,并拥有自己的名称和图标。它暂时还没什么特别的功能,但你以后做的每一把剑、每一种食物、每一件盔甲,都是从这个文件开始的。
有两种做法。快捷方式在手机上几分钟就能搞定;手动方式会带你看遍每个文件,让你明白其中的原理。
快捷方式:GodCraft
GodCraft 会帮你生成物品文件、纹理、名称和包文件。你完全不用打开 JSON 文件。
- 打开工坊,在你的附加包中添加一个物品。
- 在像素编辑器中绘制图标,或者从原版纹理开始重新上色。
- 输入名称,选择你想要的设置,比如堆叠数量。
- 点击导出。GodCraft 会写好清单文件、UUID 和语言文件,并生成一个可以在 Minecraft 中打开的
.mcaddon。
好奇这个 .mcaddon 里面有什么?继续往下看。
手动制作
你需要一个已经搭建好的行为包(BP)和资源包(RP)。如果还没有,请先按照项目搭建操作。所有示例都使用命名空间 myname。请把它出现的每个地方都换成你自己的小写简称。
下面是你要创建或修改的文件:
| 文件 | 包 | 作用 |
|---|---|---|
items/ruby.json | BP | 声明物品存在以及它的行为 |
textures/items/ruby.png | RP | 图片 |
textures/item_texture.json | RP | 给图片起简称 |
texts/en_US.lang | RP | 玩家看到的名称 |
第 1 步:物品文件
在行为包中创建一个名为 items 的文件夹,并添加这个文件:
{
"format_version": "1.26.30",
"minecraft:item": {
"description": {
"identifier": "myname:ruby",
"menu_category": {
"category": "items"
}
},
"components": {
"minecraft:icon": {
"textures": {
"default": "myname_ruby"
}
},
"minecraft:display_name": {
"value": "item.myname:ruby.name"
},
"minecraft:max_stack_size": 64
}
}
}我们来逐部分看看。
format_version告诉游戏你的文件遵循哪个版本的物品规则。请使用较新的版本,这样所有新组件都能用。identifier是物品的唯一 ID,格式永远是namespace:name。新物品千万不要用minecraft命名空间:那是游戏自己的。menu_category决定物品在创造模式物品栏中的位置。category可以是construction、nature、equipment、items或none(隐藏)。你还可以加一个group,比如"minecraft:itemGroup.name.sword",把它放进已有的分组里。components是物品获得各种功能的地方。每个组件就是一项功能。
这里用到的三个组件:
minecraft:icon选择图片。default是你将在第 3 步的item_texture.json中定义的简称,不是文件路径。minecraft:display_name设置名称。这里它指向语言文件中的一个键,所以名称可以被翻译。minecraft:max_stack_size是一格能放多少个。使用 1 到 64 之间的数字。
一项功能,一个组件
想让物品像附魔书一样闪光?添加值为 true 的 minecraft:glint。想让它在岩浆中不被烧毁?添加 minecraft:fire_resistant。每个组件都有自己的参考页面,列出了它的所有字段。
第 2 步:纹理
画一张 16x16 像素的 PNG,保存到你的资源包中:
A 16x16 PNG with a transparent background背景要保持透明,否则图标会变成一个方块。如果你刚接触像素画,像素纹理里有让小图片更好看的技巧。
第 3 步:注册纹理
游戏不会通过路径从物品直接读取 PNG 文件。而是由 item_texture.json 给每张图片起个简称,物品再使用这个简称。创建(或打开)这个文件:
{
"resource_pack_name": "myname",
"texture_name": "atlas.items",
"texture_data": {
"myname_ruby": {
"textures": "textures/items/ruby"
}
}
}注意两点:
- 键
myname_ruby和物品图标组件中的default值一致。 - 路径末尾没有
.png。
以后添加更多物品时,把它们都作为额外的条目放进这个文件的 texture_data 中。不要再建第二个 item_texture.json。
第 4 步:名称
打开(或创建)英文语言文件,添加一行:
item.myname:ruby.name=Ruby= 前面的部分必须和 minecraft:display_name 的 value 完全一致。后面的部分就是玩家看到的名称。Lang 文件是纯文本:每行一个条目,不加引号,也不加逗号。
第 5 步:测试
/give @s myname:ruby 64你应该会得到一整组带有你的图标、名为“Ruby”的红宝石。在创造模式世界中,你还能在物品栏的物品标签页里找到它。
出问题时
| 你看到的现象 | 最可能的原因 |
|---|---|
/give 提示物品不存在 | 标识符有拼写错误,或行为包没有启用 |
| 物品图标是粉黑色的 | item_texture.json 中的键和图标不一致,或路径错误 |
名称显示成 item.myname:ruby.name | lang 键不一致,或 lang 文件不在 texts 中 |
| 包里的东西都没加载 | JSON 语法错误,比如少了逗号 |
在 Minecraft 的创作者设置中打开内容日志,就能看到准确的错误信息。更多解决方法见故障排查。
下一步?
你的红宝石还只是个普通物品。现在给它安排点用处吧:
想看看 Mojang 是怎么做自己的物品的,可以浏览原版物品。