BE教程

附加包教程:17.附着物

Cat_A***Lv.4 高级会员 发表于 2023-1-17 · 最后回复 2023-1-17 IP:山西省 4,158 1
AI 速览2026-09-25 09:57 生成

附加包教程第17期:讲解附着物文件与盔甲模型显示

这是附加包系列教程的第十七期,主题是附着物(Attachables)。帖子说明了附着物存放在资源包根目录的 attachables 文件夹中,常用于让盔甲在穿戴后正常显示,并给出了头盔、胸甲、护腿、靴子对应的模型 ID 以及渲染控制器的处理方式。帖内还以刷子动画为例,演示了 1.20.0 及以上版本通过 minecraft:use_animation 设为 brush 实现原版效果,并提到需改动 entity 文件夹下的 player.json。适合正在学习附加包、遇到盔甲不显示问题的玩家参考。

  • 附着物文件需放在资源包根目录的 attachables 文件夹内
  • 刷子动画效果要求游戏版本为 1.20.0 及以上
  • 实现刷子动画还需修改 entity 文件夹下的 player.json
本卡片由 AI 阅读本帖后生成,可能存在疏漏,请以帖子正文为准。
本帖最后由 Cat_Anchor 于 2025-3-30 22:29 编辑

前言
上期,我们学完了子包。接下来,我们即将学习附着物(Attachables)。
附着物

首先要说明的是,附着物存放在资源包根目录下的 attachables 文件夹内。附着物经常用来显示盔甲,当然也有其他用途。如果你跟着物品那一节课做了一个盔甲,但是穿上它发现并没有显示出来,那是因为你没有添加附着物。
打开 attachables 文件夹,新建一个以你的盔甲名称为名称的文件。打开它,写以下代码。
  1. {
  2.   "format_version": "1.8.0", // 命名空间,如果要定义 scripts 字段下的 animate 字段,则需要设为 1.10.0。
  3.   "minecraft:attachable": {
  4.     "description": {
  5.       "identifier": "supplementary:warden_boots", // 物品名称。要用标准的命名空间 ID,这样才能把这个附着物和物品关联起来。
  6.       "materials": { // 这里指定材料,材料就是管理是否允许半透明、是否有闪光等等的工具
  7.         "default": "armor",
  8.         "enchanted": "armor_enchanted"
  9.       },
  10.       "textures": { // 这里指定纹理。
  11.         "default": "textures/models/armor/warden_1", // 纹理图片的路径。需要注意的是,除了护腿以外,其他3件装备可以共用一个纹理。护腿因为模型问题要单独用另一个纹理,不然会有纹理上的冲突。
  12.         "enchanted": "textures/misc/enchanted_item_glint" // 默认指向原版的附魔闪光效果。
  13.       },
  14.       "geometry": {
  15.         "default": "geometry.humanoid.armor.boots" // 这个是默认的靴子模型。
  16.       },
  17.       "scripts": {
  18.         "parent_setup": "v.boot_layer_visible = 0.0;"
  19.       },
  20.       "render_controllers": [
  21.         "controller.render.armor" // 这是渲染控制器的ID。在这里是controller.render.armor。
  22.       ]
  23.     }
  24.   }
  25. }
复制代码

附着物就是这样的文件。关于模型问题,如果是头盔,模型 ID 是 geometry.humanoid.armor.helmet,胸甲是 geometry.humanoid.armor.chestplate,护腿是 geometry.humanoid.armor.leggings,靴子是 geometry.humanoid.armor.boots。渲染控制器一般情况下不需要改。

就这样草草结束不是什么好现象,所以我现在来演示:如何用这个附着物做刷子的动画。如果是 1.20.0 及以上的版本,把 minecraft:use_animation 的值设为 brush 即可实现原版效果。
  1. {
  2.   "format_version": "1.10.0", // 注意这里为了指定动画,使用了 1.10.0。
  3.   "minecraft:attachable": {
  4.     "description": {
  5.       "identifier": "supplementary:brush", // 这是我的附加包中的刷子的 ID,需要改成不一样的
  6.       "materials": {
  7.         "default": "entity_alphatest",
  8.         "enchanted": "entity_alphatest_glint"
  9.       },
  10.       "textures": {
  11.         "default": "textures/entity/brush", // 为了匹配,这个要用一些特殊的方法制作纹理。如果直接指向刷子的物品纹理,那么刷子会错位。
  12.         "enchanted": "textures/misc/enchanted_item_glint"
  13.       },
  14.       "geometry": {
  15.         "default": "geometry.item" // 模型,为了让刷子显示在正确位置
  16.       },
  17.       "animations": { // 动画
  18.         "holding": "animation.item.holding", // 一个动画,是一个键值对,键是动画的短名,值是动画的 ID。
  19.         "holding_third": "animation.item.holding_third" // 又一个动画
  20.       },
  21.       "scripts": {
  22.         "animate": [
  23.           {
  24.             "holding": "q.main_hand_item_use_duration <= 0.0f && c.is_first_person" // 控制这个动画要在什么时候使用。这里用的是 Molang 表达式。
  25.           },
  26.           {
  27.             "holding_third": "q.main_hand_item_use_duration <= 0.0f && !c.is_first_person"
  28.           }
  29.         ]
  30.       },
  31.       "render_controllers": [
  32.         "controller.render.item_default" // 物品默认的渲染控制器。
  33.       ]
  34.     }
  35.   }
  36. }
复制代码

只有这些还是不行的,还需要在资源包根目录下 entity 文件夹下 player.json 里做一些改动。其中,核心部分就是 v.attack_time 这个内置的变量,用来控制动画是否播放。
之后我们还会单独出一期教程,来讲解如何实现刷子动画。
总结
这一期,我们学习了附着物,还提及到了动画和渲染控制器。下一期,我们将讲动画。


  • Jougu*** 铁粒 +66 我要这铁粒有何用
回复 1 最早 最新 只看楼主
您需要登录后才可以回帖 登录 | 立即注册
本版积分规则