Cat_Anchor 发表于 2023-1-17 08:20:00

附加包教程:17.附着物

本帖最后由 Cat_Anchor 于 2023-1-18 08:26 编辑




前言



上期,我们学完了子包。接下来,我们即将学习附着物,就是attachables。



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


子包



首先要说明的是,附着物存放在资源包根目录下的attachables文件夹内。附着物经常用来显示盔甲,当然也有其他用途。如果你跟着物品那一节课做了一个盔甲,但是穿上它发现并没有显示出来,那是因为你没有添加附着物。
打开attachables文件夹,新建一个以你的盔甲名称为名称的文件。打开它,写以下代码。

{
"format_version": "1.8.0",
"minecraft:attachable": {
    "description": {
      "identifier": "supplementary:warden_boots", //你的盔甲名称。要用标准的命名空间ID,这样才能把这个附着物和你的物品关联起来。
      "materials": { //这里指定材质(不是纹理)
      "default": "armor",
      "enchanted": "armor_enchanted"
      },
      "textures": { //这里指定纹理。
      "default": "textures/models/armor/warden_1", //纹理图片的路径。需要注意的是,除了护腿以外,其他3件装备可以共用一个纹理。护腿因为模型问题要单独用另一个纹理,不然会有纹理上的冲突。
      "enchanted": "textures/misc/enchanted_item_glint" //默认指向原版的附魔闪光效果。
      },
      "geometry": {
      "default": "geometry.humanoid.armor.boots" //这个是默认的靴子模型。
      },
      "scripts": {
      "parent_setup": "variable.boot_layer_visible = 0.0;"
      },
      "render_controllers": [
      "controller.render.armor" //这是渲染控制器的ID。在这里是controller.render.armor。
      ]
    }
}
}

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

就这样草草结束不是什么好现象,所以我现在来演示:如何用这个附着物做刷子的动画。

{
"format_version": "1.10.0",
"minecraft:attachable": {
    "description": {
      "identifier": "supplementary:brush", //这是我的附加包中的刷子的ID,你要改成不一样的
      "materials": {
      "default": "entity_alphatest",
      "enchanted": "entity_alphatest_glint"
      },
      "textures": {
      "default": "textures/entity/brush", //为了匹配,这个要用一些特殊的方法制作纹理。如果直接指向刷子的物品纹理,那么刷子会错位。
      "enchanted": "textures/misc/enchanted_item_glint"
      },
      "geometry": {
      "default": "geometry.item" //模型,为了让刷子显示在正确位置
      },
      "animations": { //动画
      "holding": "animation.item.holding", //一个动画,是一个键值对,键是动画的短名,值是动画的ID。
      "holding_third": "animation.item.holding_third" //又一个动画
      },
      "scripts": {
      "animate": [
          {
            "holding": "q.main_hand_item_use_duration <= 0.0f && c.is_first_person" //控制这个动画要在什么时候使用。这里用的是Molang表达式。
          },
          {
            "holding_third": "q.main_hand_item_use_duration <= 0.0f && !c.is_first_person"
          }
      ]
      },
      "render_controllers": [
      "controller.render.item_default" //物品默认的渲染控制器。
      ]
    }
}
}

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



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


总结



这一期,我们学习了附着物,还提及到了动画和渲染控制器。下一期,我们将讲动画。





第十六期 第十七期 第十八期

指令凋灵 发表于 2023-1-17 09:12:26

@mc697 你要的教程
页: [1]
查看完整版本: 附加包教程:17.附着物