Cat_Anchor 发表于 2023-1-10 07:52:17

附加包教程:6.物品(一)

本帖最后由 Cat_Anchor 于 2024-7-22 19:13 编辑




前言


上期,我们成功向附加包中添加了迷雾。这一期,我们将学习物品相关内容。



https://klpbbs.com/static/image/hrline/line5.png


准备


在行为包根目录下打开items文件夹,新建一个文件。命名就是你的物品的英文名,这样比较好管理。你也可以新建一个文件夹,把它命名英文名,把所有相关的文件都放进去,方便管理。这对于方块和实体也适用。



https://klpbbs.com/static/image/hrline/line2.png


第一个物品


现在就可以开始了。在你新建的文件里写以下代码。
{
"format_version": "1.16.100", //这个是格式版本,写物品时只能用这个版本能用的语法。如果这个版本号低于1.16.100,那就用不了新的功能。建议保持一个比较新的版本号,如1.21.0。
"minecraft:item": {
    "description": {
      "identifier": "以后这里我称为“命名空间ID”", //前面写一个附加包名称,加上英文冒号,后面写具体的这个物品的英文名(例如test_pack:test_item),这个要牢记。
      "menu_category": {
      "category": "items", //定义物品位于创造模式物品栏下的哪个标签页。construction是建筑,equipment是装备,items是物品,nature是自然,none是不在创造模式物品栏中显示。
      "group": "itemGroup.name.bed", //创造模式物品栏标签页下的组,填写物品组的本地化键名。找不到对应物品组时,不会放进任何物品组中。
      "is_hidden_in_commands": false //物品是否在命令列表中隐藏,例如是否可以通过命令获取。设为true后将不能用命令获得此物品。
      }
    },
    "components": { //这就是这个物品拥有的功能的列表,叫“组件”。
      "minecraft:icon": { //这个组件可以指定物品的纹理图标(就是这个物品长啥样)。
      "texture": "test_name" //要想指定纹理,首先确定纹理短名,短名可以随便起(英文名,建议与这个物品的命名空间ID保持一致)。每个短名都指代一个路径,而这个路径指向图片。简单地说,这个物品告诉基岩引擎,“我的纹理叫test_name!”基岩引擎就跑去登记表那里,问“test_name对应哪个路径?”登记表回答,“是textures/items/test路径!”基岩引擎就去这个路径指向的纹理,把纹理贴到物品上。
      }
    }
}
}
上面我给出的示例文档里描述的是一个命名空间是test_pack:test_item的物品,有两个组件,分别指定了图标和创造模式物品栏分类。如果想要创造功能更丰富的物品,就必须借助更多组件,甚至脚本的帮助。所以,以后我将列出所有可用的组件。使用时,直接复制,粘贴到与示例组件同级的位置就好了。



https://klpbbs.com/static/image/hrline/line1.png


渲染


这一期我们不仅会列出如何创建一个最基础的物品,还要谈到如何让这个物品有纹理。
打开资源包根目录下的textures文件夹,创建item_texture.json,把下面的代码粘贴进去。
{
"texture_data": {
    "test_name": { //这里写之前起的短名。
      "textures": "textures/items/test" //这里就是你的纹理的路径。不需要后缀,只需要保证它指向了一张正方形的图片即可。
    }
}
}
我之前在那个例子里提到过“登记表”,这个文件就相当于登记表。

在textures文件夹下新建items文件夹,打开,随便一张正方形图片扔进去,改名成你刚才写的名字(刚才的示例里是test,那就改成test.png)。其实这里没那么严格,照片格式只要是.png、.jpg中的一种就好了。然而我建议你把图片转换格式成.png。是转换格式,不是单纯改后缀!
在基岩版1.19.51.01中,物品纹理过大会导致渲染错误,需要用minecraft:render_offset组件改变渲染大小才能修复这个问题,例如64像素大小的物品需要0.01的scale值,所以建议避免过大的物品纹理。
在基岩版1.19.60.24中,物品纹理的大小可以大于16*16,而且不是正方形也没关系。这些物品在外观上会被缩放到一个适当的位置,然后像普通物品一样渲染。以后的版本中可能会再次出现此漏洞。
32*32的物品纹理示例:https://pic.imgdb.cn/item/63bcd948be43e0d30eef1966.jpg
1024*1024的物品纹理示例:https://pic.imgdb.cn/item/63bce548be43e0d30e057e72.png

打开游戏,你应该能找到你新增的物品,用着你刚才添加的图片,不过它的名字看起来像是乱码。如果要让它显示成正常名字,那就退出游戏,打开资源包根目录下的texts文件夹,创建一个叫zh_CN.lang的文件。
打开它,输入以下这行内容。
item.命名空间ID=物品名字
其中,命名空间ID就是上文提到的“test_pack:test_item”,物品名字随便写,可以用§改变格式,但是不能用\n换行。
一行代表一个本地化键名和物品名字的对应关系。如果要写注释,注释要以##开头,而且只会持续到这一行结束。

再次打开游戏,应该就能正常地看到一个物品了。


https://klpbbs.com/static/image/hrline/line1.png


总结


下一期,我们就开始讲物品组件。

本期文件下载:





第五期 第六期 第七期

MC平方 发表于 2024-10-2 10:00:59

你家被苦力怕给偷了,第七期被苦力怕炸毁了,你是不是忘记关生物破坏了呀?

youke1687 发表于 2024-8-10 11:08:27

本帖最后由 youke1687 于 2024-8-10 11:09 编辑

但是原版 zh_cn.lang 里面用的好像不是命名空间 id 诶
比如这个是唱片的

item.record_chirp.desc=C418 - chirp        #

没有冒号
请问大神是怎么回事

oeoeoe 发表于 2024-7-25 02:11:00

认真学习ing 感谢大佬的教程

夜雨星璃 发表于 2024-7-23 20:17:08

感谢大佬分享

不道 发表于 2023-1-10 11:39:51

Cat_Anchor 发表于 2023-1-10 11:26
感谢反馈,经过我在基岩版1.19.60.24的测试,更大的物品纹理不需要更改minecraft:render_offset,会正常 ...
而且你这个图,,怎么看都像bug,正常物品的旋转角度貌似不像这样。。。

不道 发表于 2023-1-10 11:34:14

Cat_Anchor 发表于 2023-1-10 11:26
感谢反馈,经过我在基岩版1.19.60.24的测试,更大的物品纹理不需要更改minecraft:render_offset,会正常 ...

然鹅在1.19.51.01最新正式版还是会有渲染偏移问题,为了避免误导建议修改下帖子,毕竟用测试版的只是少数,而且用渲染偏移也可以提升模组兼容性



Cat_Anchor 发表于 2023-1-10 11:26:23

不道 发表于 2023-1-10 08:05
感觉你还是漏讲了一些东西,,比如说,物品贴图不是只要是正方形的就行,游戏默认只支持16x16的贴图,更大 ...

感谢反馈,经过我在基岩版1.19.60.24的测试,更大的物品纹理不需要更改minecraft:render_offset,会正常显示,详情请看上面的图片

YesNewBee 发表于 2023-1-10 10:12:42

不道 发表于 2023-1-10 08:35
渲染偏移:addon中除了第一人称动画外最恶心的地方,没有之一(bushi

雀食()

不道 发表于 2023-1-10 08:35:34

Baka_Bee 发表于 2023-1-10 08:31
这一点确实很重要

某一个非16*16的贴图我调试了巨久都没能试出正常大小位置,简直恶心


渲染偏移:addon中除了第一人称动画外最恶心的地方,没有之一(bushi
页: [1]23
查看完整版本: 附加包教程:6.物品(一)