# 生物定义文件

# 作者:境界

生物资源定义是在客户端中完成的,在这一类文件里,开发者可以定义生物的纹理、动画、模型、音效、粒子的短名称,在有需要的时候还能控制动画的播放时序。这种类型的文件称为生物定义文件,它位于RP/entity中,格式后缀为.json

{
    "format_version":"1.10.0",
    "minecraft:client_entity":{
        "description":{
            "identifier":"minecraft:pig",
            "materials":{
                "default":"pig"
            },
            "textures":{
                "default":"textures/entity/pig/pig",
                "saddled":"textures/entity/pig/pig_saddle"
            },
            "geometry":{
                "default":"geometry.pig"
            },
            "animations":{
                "setup":"animation.pig.setup.v1.0",
                "walk":"animation.quadruped.walk",
                "look_at_target":"animation.common.look_at_target",
                "baby_transform":"animation.pig.baby_transform"
            },
            "scripts":{
                "animate":[
                    "setup",
                    {
                        "walk":"query.modified_move_speed"
                    },
                    "look_at_target",
                    {
                        "baby_transform":"query.is_baby"
                    }
                ]
            },
            "render_controllers":[
                "controller.render.pig"
            ],
            "spawn_egg":{
                "texture":"spawn_egg",
                "texture_index":2
            }
        }
    }
}

# format_version

format_version是指代定义内容的版本号,目前有1.8.0和1.10.0两个选择。1.8.0和1.10.0是自定义生物功能实现的两个重大改变版本,在基岩版1.8.0首次实装了自定义生物的功能,而在1.10.0的版本里,基岩版再次重新整理了自定义生物的写法格式。一般情况下,使用最新的1.10.0的格式,是现在自定义生物的通用规范。

# identifier

identifier意为生物的标识符。它由命名空间和名称组成。在游戏中使用/summon召唤实体指令时,以minecraft:为开头的原版生物可以直接用它们的名称作为实体召唤的对象。而自定义生物就需要在名字前再添加一个命名空间,可以帮助游戏区分例如:两个组件都加入了一种名为duck的鸭子生物,区分它们来自哪个组件就是命名空间的工作。

# material

material意为材质,是控制实体的呈现方式。游戏中的一些生物带有发光、透明的纹理部分,需要指定贴图纹理的材质才能正常生效。

# texture

texture意为贴图纹理,它控制实体的纹理。例如木头的木纹理,鸡身上的羽毛等。

# geometry

geometry意为模型几何体。它控制实体长什么样子。

# animations

animations意为动画,这里会放置一系列的动画资源和控制动画播放时机的动画控制器。

# scripts/animate

scripts/animate意为播放根动画。动画或动画控制器会放置在这里。

# render_controller

render_controller意为渲染控制器。它是一种由开发者定义生物该如何渲染的方法。通过渲染控制器可以设置生物的几何体、材质、贴图、和部位隐藏显示等。注意:这里的几何体、材质、贴图等词,代表渲染生物需要哪些关键信息。如原版猪需要展示两种形态,根据放鞍或者不放鞍的状态显示带有鞍或者不带鞍的贴图,则可以在渲染控制器中进行切换,并由开发者定义入口,再由生物定义文件中指向完整的资源路径。

# particle_effects

particle_effects意为粒子效果。这里会放置一系列需要用到的粒子资源,开发者可以使用原版粒子亦或是自定义粒子。

# sound_effects

sound_effects意为音效效果。这里会放置一系列需要用到的音效资源,开发者可以使用原版音效亦或是自定义音效。

# spawn_egg

spawn_egg意为生物蛋,是我的世界召唤生物的一种方式。开发者可以定义生物蛋引用的贴图资源。

# enable_attachable

enable_attachable意为显示身上穿戴物。在玩家、部分凋零生物身上都有这个属性。

进阶

15分钟