2021-08-102842次浏览
0评论
1收藏
0点赞
分享
《我的世界》高校开发者夏令营进行中!为了让大家更系统地学习,除课堂知识外,学习委员还将联合发发菌,为大家投放额外的干货补给。本期为第3期。
尸壳生成在草原中,铁傀儡跑得比小村民还快,牛的身上掉落生鸡肉……这样的世界你可以想象吗?
其实这些通过Add-on我们就可以实现~
今天学习委员和发发菌就来教大家如何“逆天而行”——修改生物生成规则和行为!话不多说,马上开课!
实体生成规则是用来控制任一实体在世界中生成的逻辑,目前常用于生物的生成。生物是实体这一理念的延伸,是自然界中生成的实体,因此鸡、牛、猪是实体也是生物,而矿车、船则只是实体不是生物。
我们现在以尸壳的生成为例,来教大家如何简单地改变原版的生物生成规则~
在原版的生成规则中,尸壳这一种攻击性生物只会出现在沙漠中。
我们现在希望它能生成在每个攻击性生物都会出现的地方,而不仅仅是沙漠~那该怎么操作呢?来看看下面的分析吧!(・ω<)☆
{
"format_version": "1.8.0",
"minecraft:spawn_rules": {
"description": {
"identifier": "minecraft:husk",
"population_control": "monster"
},
"conditions": [
{
"minecraft:spawns_on_surface": {},
"minecraft:brightness_filter": {
"min": 0,
"max": 7,
"adjust_for_weather": true
},
"minecraft:difficulty_filter": {
"min": "easy",
"max": "hard"
},
"minecraft:weight": {
"default": 240
},
"minecraft:herd": {
"min_size": 2,
"max_size": 4
},
"minecraft:biome_filter": {
"test": "has_biome_tag", "operator": "==", "value": "desert"
}
}
]
}
}
0,
0
]
},
"modules": [
{
"type": "resources",//type改为data时,则变为行为包的manifest
"uuid": "182664d3-80cc-476a-8043-183afad03acc",
"version": [
0,
0,
0
]
}
]
}
学习笔记
① 当前生物生成规则的format_version停留在1.8.0版本。
② identifier指向生物的名称,population_control是指由游戏引擎控制的生物数量,这里可以写上的字段有animal、underwater_animal、monster、ambient。因此在基岩版中,存在着4个无法直接确定生物数量的维度。
![]()
白天主要生成动物 ![]()
晚上主要生成怪物
③ 生物生成主要是由群系过滤器控制,biome_filter下接收一个或多个带有群系标签(has_biome_tag)的过滤条件,在尸壳的源文件中可以看到value值的参数是desert,因此将desert改为monster后,就可以让尸壳出现的规律和僵尸一样了。
接下来我们将以铁傀儡为例,教大家如何修改实体的基础属性~
学习过认识行为包的同学应该知道:通过游戏根目录/data/behavior_packs/vanilla/entities中可以找到原版铁傀儡的行为文件。
忘记了的开发者可以戳戳下面的链接复习之前的内容↓↓↓
通过调整对应文件,我们就可以修改铁傀儡的行为啦~
{
"format_version": "1.13.0",
"minecraft:entity": {
"description": {
},
"component_groups": {},
"components": {
"minecraft:collision_box": {
"width": 1.4,
"height": 2.9
},
"minecraft:health": {
"value": 100,
"max": 100
},
"minecraft:movement": {
"value": 0.25
}
},
"events": {
}
}
}
学习笔记
① minecraft:collision_box是控制一个生物碰撞盒子的组件。碰撞盒子决定其他生物距离该类生物多远会产生推挤碰撞,以及可以在多大范围内能伤害到这类生物。其中width决定这个碰撞盒子的宽度,height决定它的高度。
② minecraft:health是管理一个生物生命值的组件。value的参数代表生物的生命值,max代表生物的最大生命值。
③minecraft:movement是控制生物的速度组件。其中value的参数代表速度。《我的世界》基岩版速度换算公式为:
movement[速度值] * speed_multiplier[部分行为的速度加成] * friction[方块的摩擦力,默认是0.6] * 20 tick[游戏时间]
最后我们将以牛掉落鸡的掉落物为例,教大家如何修改实体的掉落物~
与修改铁傀儡基础属性的操作类似,在游戏根目录/data/behavior_packs/vanilla/entities中我们可以找到原版牛的行为文件。
{
"format_version": "1.16.0",
"minecraft:entity": {
"description": {
},
"component_groups": {
"minecraft:cow_adult": {
"minecraft:loot": {
"table": "loot_tables/entities/cow.json"
}
}
},
"components": {
},
"events": {}
}
}
学习笔记
① minecraft:loot是管理生物掉落物表的组件。table的参数指向loot_tables文件夹下的一个表文件路径。
② 根据路径提示打开loot_tables文件夹,再打开entities文件夹,可以看到里面存放了所有实体的掉落品文件,其中也包括生物鸡的掉落物品文件。
③将loot_tables/entities/cow.json改为loot_tables/entities/chicken.json即可完成把牛的掉落物修改为鸡的掉落物。
◎ 感谢开发者境界为本期课程提供的专业指导 ◎
今天的课就上到这里啦~大家快去动手实践一下吧!
通过Add-on,再不可思议的世界都可以被你创造出来~ԅ( ˘ω˘ ԅ)
(本文来源于公众号“我的世界Minecraft开发者”,作者发发菌)
网易游戏学院官方讨论QQ群:780916962
欢迎各位同学加群,与众多游戏爱好者一同学习交流~
评论 0