UID82897性别保密经验 EP铁粒 粒回帖0主题精华在线时间 小时注册时间2021-7-23最后登录1970-1-1
| 本帖最后由 Cat_Anchor 于 2025-3-30 22:29 编辑
前言 | | 上期,我们学完了子包。接下来,我们即将学习附着物(Attachables)。 |  | 附着物 |
首先要说明的是,附着物存放在资源包根目录下的 attachables 文件夹内。附着物经常用来显示盔甲,当然也有其他用途。如果你跟着物品那一节课做了一个盔甲,但是穿上它发现并没有显示出来,那是因为你没有添加附着物。
打开 attachables 文件夹,新建一个以你的盔甲名称为名称的文件。打开它,写以下代码。
- {
- "format_version": "1.8.0", // 命名空间,如果要定义 scripts 字段下的 animate 字段,则需要设为 1.10.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": "v.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。渲染控制器一般情况下不需要改。
就这样草草结束不是什么好现象,所以我现在来演示:如何用这个附着物做刷子的动画。如果是 1.20.0 及以上的版本,把 minecraft:use_animation 的值设为 brush 即可实现原版效果。
- {
- "format_version": "1.10.0", // 注意这里为了指定动画,使用了 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 这个内置的变量,用来控制动画是否播放。
之后我们还会单独出一期教程,来讲解如何实现刷子动画。
|  | 总结 | | 这一期,我们学习了附着物,还提及到了动画和渲染控制器。下一期,我们将讲动画。 |
|
评分查看全部评分
|