【开发专区】自定义生物教程:JSON上(entities)

 

冒险家、开发者们:

突发奇想,如果让你自定义一个僵尸生物。

能超远追击村民,并且会搭方块、换僵尸皮肤,那阁下该如何应对呢?

【开发专区】自定义生物教程:JSON上(entities)

本周专题Week2将带你一起学习使用“自定义生物”

Let’s go !!!

【开发专区】自定义生物教程:JSON上(entities)

一、前言

首先,请收下这些网站,不妨请放到你浏览器的收藏夹,以便后续使用:

实体基础 | 我的世界开发者官网

微软MC国际版 – Entity Documentation – Component list

Minecraft基岩版文档

这些网站有更详细的案例代码,以及可供查询的开发文档

如果本教程未提及到,请自行去学习哦~

好的,我们继续重点内容!

【开发专区】自定义生物教程:JSON上(entities)

二、快速创建体验自定义生物

  1. 如果我们要快速创建?那就有请出我们的“网易我的世界开发者编辑器”
【开发专区】自定义生物教程:JSON上(entities)

2. 当我们选择好母体模板(原版生物)后就能开始自定义了

3. 在左侧,我们可以看到我们创建的生物配置文件(文件夹内文件格式为json)

4. 点击左侧的自定义生物配置文件后,右侧显示的就是我们能够修改的参数啦~

【开发专区】自定义生物教程:JSON上(entities)

5. 如果我们还要设置原版生物没有的行为,比如让村民攻击僵尸,那我们如何操作呢?

【开发专区】自定义生物教程:JSON上(entities)

在这里我们配置好这些参数即可实现,并且我们还能修改攻击伤害哦~

6. 这些完成后我们要进游戏调试,如何操作呢?

我们需要设置好基础属性

【开发专区】自定义生物教程:JSON上(entities)

让召唤生成打开,或者自然生成

这样我们在游戏内就能输入标识符(图中已显示),进行召唤了

/summon 标识符 位置x 位置y 位置z

【开发专区】自定义生物教程:JSON上(entities)

你以为到这就结束了吗??

哦哦,我的好兄弟,还没有over呢~

这只是皮毛的不能再皮毛的基础知识啦~

快跟着下面学习更深度的知识(芝士 bushi

三、更深度的知识

刚刚我们上面给到了三个链接

(分别是:1我的世界实体基础教程 2微软实体开发文档与参数 3基岩版开发文档)

我们可以打开第一个链接,跟随网易的脚步直接学习更详细的课程。

但是作为更可靠的开发者小编,快用我的视角高效率的学习这些内容。

1. 找到自定义生物文件

自定义生物文件可分为3个部分:

① 行为包 | 自定义生物文件JSON

用于控制生物行为的,比如僵尸攻击和基础生命值

文件路径:behavior_packs/behavior_pack_xxx/entities/xxx.json

② 资源包 | 自定义生物文件JSON

用于绑定生物的皮肤、模型、动作等,生物贴图??

文件路径:resource_packs/resource_pack_xxx/entity/xxx.json

③ 资源包 | 自定义生物资源文件(贴图、模型等)

和上面的文件进行互相绑定,这样游戏内就能显示出来啦~

文件路径:resource_packs/resource_pack_xxx/textures/entity

2. 行为包的自定义生物文件(JSON格式学习)

这里推荐使用VSCODE进行编辑(微软官方的免费编辑器),如果大家没有可以自行下载:

https://code.visualstudio.com

我们打开行为包中的自定义生物文件

behavior_packs/behavior_pack_xxx/entities/xxx.json

【开发专区】自定义生物教程:JSON上(entities)

以下是重点内容!!!快拿起你的小本本记下来~

① JSON格式解析

【开发专区】自定义生物教程:JSON上(entities)

版本号:这个要根据当前客户端的来写,如果你是开发者编辑器创建的,就不要改了

子组件包(组):这个是总组件包后所属的子组件包,用于部分特殊的组件包自定义数据,或者一体式包,需要手动加载

!!!等下,这个怎么那么难理解呢??

其实很简单,比如你要吃饭,吃什么饭呢?盒饭里面有坤腿、坤蛋、坤菜

那这个子组件包就是一个盒饭,那里面的东西呢?

坤腿要含辣椒、酱油、鸡腿,我们的鸡腿是重要的内容,比如僵尸的攻击目标,那辣椒和酱油呢,你可以理解成僵尸攻击的距离范围、僵尸攻击的次要攻击目标

总组件包:这里面所有的内容,都会被自动加载,不存在手动,比如僵尸的生命值、攻击伤害、移动速度等

和上面子组件包不同的是,总组件包可以调用子组件包,就比如可以直接吃“坤坤饭套餐”

基本配置

  • 标识符:你让生物ID名字叫什么,比如villager_shop,但是一定要记得,带有前面的 : 分号,比如原版的Minecraft:,或者你自定义
  • 实验性玩法:这个是用于特殊配置,比如新版本特性等,这里不做介绍,需要了解的去刚刚上面提及的微软文档里面学习
  • 自然生成:会自动生成的,可以理解成和原版僵尸一起在夜晚生成
  • summon召唤:如果你要用指令summon召唤这个僵尸那你就需要开启
  • (更多的有runtime_identifier):这个是母版标识符,比如你只要修改原版村民,需要原版村民的特性,可以被游戏理解成村民生物。”runtime_identifier”: “minecraft:villager_v2”

事件:这个就和我们理解的网易主动请求一样,比如僵尸生成后会自动调用这个事件

常用的有:minecraft:as_adult(生物是大人)、minecraft:entity_spawned(生物生成)

ok,其实这个部分的内容很多很详细,如果你学习了就能自定义你想要的生物,比如让自定义僵尸拥有搭方块的内容,在1000格以外就开始追逐村民,可以用来村庄保卫战等。

下面给出了我在村庄保卫战自定义的僵尸行为JSON文件,大家可以下载学习

{
    "format_version": "1.20.10",
    "minecraft:entity": {
        "component_groups": {
            "minecraft:can_break_doors": {
                "minecraft:annotation.break_door": {

                }
            },
            "minecraft:can_have_equipment": {
                "minecraft:equipment": {
                    "table": "loot_tables/entities/zombie_equipment.json"
                }
            },
            "minecraft:convert_to_baby_drowned": {
                "minecraft:is_shaking": {

                },
                "minecraft:transformation": {
                    "delay": {
                        "value": 15
                    },
                    "drop_equipment": true,
                    "into": "minecraft:drowned<minecraft:as_baby>",
                    "transformation_sound": "convert_to_drowned"
                }
            },
            "minecraft:convert_to_drowned": {
                "minecraft:is_shaking": {

                },
                "minecraft:transformation": {
                    "delay": {
                        "value": 15
                    },
                    "drop_equipment": true,
                    "into": "minecraft:drowned<minecraft:as_adult>",
                    "transformation_sound": "convert_to_drowned"
                }
            },
            "minecraft:look_to_start_drowned_transformation": {
                "minecraft:environment_sensor": {
                    "triggers": {
                        "event": "minecraft:start_transforming",
                        "filters": {
                            "operator": "==",
                            "subject": "self",
                            "test": "is_underwater",
                            "value": true
                        }
                    }
                }
            },
            "minecraft:start_drowned_transformation": {
                "minecraft:environment_sensor": {
                    "triggers": {
                        "event": "minecraft:stop_transforming",
                        "filters": {
                            "operator": "==",
                            "subject": "self",
                            "test": "is_underwater",
                            "value": false
                        }
                    }
                },
                "minecraft:timer": {
                    "looping": false,
                    "time": 30,
                    "time_down_event": {
                        "event": "minecraft:convert_to_drowned"
                    }
                }
            },
            "minecraft:zombie_adult": {
                "minecraft:behavior.mount_pathing": {
                    "priority": 2,
                    "speed_multiplier": 1.25,
                    "target_dist": 0.0,
                    "track_target": true
                },
                "minecraft:movement": {
                    "value": 0.23
                },
                "minecraft:rideable": {
                    "family_types": [
                        "zombie"
                    ],
                    "seat_count": 1,
                    "seats": {
                        "lock_rider_rotation": 0,
                        "position": [
                            0.0,
                            1.1,
                            -0.35
                        ]
                    }
                }
            },
            "minecraft:zombie_baby": {
                "minecraft:is_baby": {

                },
                "minecraft:movement": {
                    "value": 0.35
                },
                "minecraft:scale": {
                    "value": 0.5
                }
            },
            "minecraft:zombie_jockey": {
                "minecraft:behavior.circle_around_anchor": {

                }
            }
        },
        "components": {
            "minecraft:attack": {
                "damage": 2
            },
            "minecraft:behavior.break_door": {
                "priority": 1
            },
            "minecraft:behavior.door_interact": {
                "priority": 1
            },
            "minecraft:behavior.equip_item": {
                "priority": 2
            },
            "minecraft:behavior.hurt_by_target": {
                "entity_types": {
                    "filters": {
                        "subject": "other",
                        "test": "is_family",
                        "value": "villager"
                    },
                    "max_dist": 1000
                },
                "priority": 1
            },
            "minecraft:behavior.melee_attack": {
                "priority": 3
            },
            "minecraft:behavior.nearest_prioritized_attackable_target": {
                "entity_types": {
                    "filters": {
                        "subject": "other",
                        "test": "is_family",
                        "value": "villager"
                    },
                    "max_dist": 1000,
                    "priority": 0
                },
                "priority": 0,
                "target_search_height": -1.0
            },
            "minecraft:behavior.open_door": {

            },
            "minecraft:can_climb": {

            },
            "minecraft:collision_box": {
                "height": 1.9,
                "width": 0.6
            },
            "minecraft:conditional_bandwidth_optimization": {

            },
            "minecraft:despawn": {
                "despawn_from_distance": {

                }
            },
            "minecraft:environment_sensor": {
                "triggers": {
                    "event": "minecraft:start_transforming",
                    "filters": {
                        "operator": "==",
                        "test": "is_underwater",
                        "value": true
                    }
                }
            },
            "minecraft:equip_item": {

            },
            "minecraft:follow_range": {
                "max": 1000,
                "value": 1000
            },
            "minecraft:health": {
                "max": 20,
                "value": 20
            },
            "minecraft:hurt_on_condition": {
                "damage_conditions": [
                    {
                        "cause": "lava",
                        "damage_per_tick": 4,
                        "filters": {
                            "operator": "==",
                            "subject": "self",
                            "test": "in_lava",
                            "value": true
                        }
                    }
                ]
            },
            "minecraft:is_hidden_when_invisible": {

            },
            "minecraft:jump.static": {

            },
            "minecraft:movement.basic": {

            },
            "minecraft:nameable": {

            },
            "minecraft:navigation.walk": {
                "can_break_doors": true,
                "can_pass_doors": true,
                "can_walk": true,
                "is_amphibious": true
            },
            "minecraft:persistent": {

            },
            "minecraft:physics": {

            },
            "minecraft:pushable": {
                "is_pushable": true,
                "is_pushable_by_piston": true
            },
            "minecraft:type_family": {
                "family": [
                    "zombie",
                    "undead",
                    "monster",
                    "mob"
                ]
            }
        },
        "description": {
            "identifier": "truol:zombie_attack",
            "is_experimental": false,
            "is_spawnable": false,
            "is_summonable": true,
            "runtime_identifier": "minecraft:zombie"
        },
        "events": {
            "find_gold_timeout": {
                "remove": {
                    "component_groups": [
                        "look_for_gold"
                    ]
                }
            },
            "minecraft:as_adult": {
                "add": {
                    "component_groups": [
                        "minecraft:zombie_adult"
                    ]
                }
            },
            "minecraft:as_baby": {
                "add": {
                    "component_groups": [
                        "minecraft:zombie_baby"
                    ]
                }
            },
            "minecraft:convert_to_drowned": {
                "sequence": [
                    {
                        "add": {
                            "component_groups": [
                                "minecraft:convert_to_drowned"
                            ]
                        },
                        "filters": {
                            "operator": "!=",
                            "test": "has_component",
                            "value": "minecraft:is_baby"
                        },
                        "remove": {
                            "component_groups": [
                                "minecraft:start_drowned_transformation"
                            ]
                        }
                    },
                    {
                        "add": {
                            "component_groups": [
                                "minecraft:convert_to_baby_drowned"
                            ]
                        },
                        "filters": {
                            "test": "has_component",
                            "value": "minecraft:is_baby"
                        },
                        "remove": {
                            "component_groups": [
                                "minecraft:start_drowned_transformation"
                            ]
                        }
                    }
                ]
            },
            "minecraft:entity_spawned": {
                "sequence": [
                    {
                        "randomize": [
                            {
                                "add": {
                                    "component_groups": [
                                        "minecraft:zombie_adult",
                                        "minecraft:can_have_equipment"
                                    ]
                                },
                                "remove": {

                                },
                                "weight": 380
                            },
                            {
                                "add": {
                                    "component_groups": [
                                        "minecraft:zombie_baby",
                                        "minecraft:can_have_equipment"
                                    ]
                                },
                                "remove": {

                                },
                                "weight": 17
                            },
                            {
                                "add": {
                                    "component_groups": [
                                        "minecraft:zombie_baby",
                                        "minecraft:zombie_jockey",
                                        "minecraft:can_have_equipment"
                                    ]
                                },
                                "remove": {

                                },
                                "weight": 3
                            }
                        ]
                    },
                    {
                        "add": {
                            "component_groups": [
                                "minecraft:can_break_doors"
                            ]
                        }
                    }
                ]
            },
            "minecraft:start_transforming": {
                "add": {
                    "component_groups": [
                        "minecraft:start_drowned_transformation"
                    ]
                },
                "remove": {
                    "component_groups": [
                        "minecraft:look_to_start_drowned_transformation"
                    ]
                }
            },
            "minecraft:stop_transforming": {
                "add": {
                    "component_groups": [
                        "minecraft:look_to_start_drowned_transformation"
                    ]
                },
                "remove": {
                    "component_groups": [
                        "minecraft:start_drowned_transformation"
                    ]
                }
            }
        }
    }
}

由于篇幅有限,下期我们将继续介绍这个自定义生物。

我们下期再见~ヾ( ̄▽ ̄)Bye~Bye~

开发专区通知公告

开发专区 训练营计划 持续更新啦~

2024-11-26 23:12:33

开发专区

【开发专区】自定义生物实战1:制作一个惊变同款僵尸

2024-12-8 3:33:36

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索