生物群系是世界中拥有自己的地面、天气、颜色和生物的一片区域。平原、沙漠和樱花树林都是生物群系。在这篇指南中,你将制作一个红宝石树林:一片温暖的草甸,草是偏红色的,它会替换掉平原中的一小部分区域。
和方块一样,生物群系也分布在两个包里:
- 行为包文件说明这片土地是如何构建的:它的气候、地面由哪些方块覆盖,以及它出现在哪里。
- 资源包文件(“客户端生物群系”)说明它看起来和听起来是什么样的:草的颜色、水的颜色、迷雾和音乐。
文件
BP/
biomes/
ruby_grove.biome.json
RP/
biomes/
ruby_grove.client_biome.json两个文件使用同一个 identifier:wiki:ruby_grove。游戏就是靠它知道这两个文件是一对的。
第 1 步:行为包生物群系
{
"format_version": "1.26.30",
"minecraft:biome": {
"description": {
"identifier": "wiki:ruby_grove"
},
"components": {
"minecraft:climate": {
"temperature": 0.9,
"downfall": 0.4,
"snow_accumulation": [0.0, 0.125]
},
"minecraft:overworld_height": {
"noise_type": "lowlands"
},
"minecraft:surface_builder": {
"builder": {
"type": "minecraft:overworld",
"top_material": "minecraft:grass_block",
"mid_material": "minecraft:dirt",
"foundation_material": "minecraft:stone",
"sea_floor_material": "minecraft:gravel",
"sea_material": "minecraft:water",
"sea_floor_depth": 7
}
},
"minecraft:replace_biomes": {
"replacements": [
{
"dimension": "minecraft:overworld",
"targets": ["plains"],
"amount": 0.25,
"noise_frequency_scale": 0.5
}
]
},
"minecraft:map_tints": {
"grass": { "type": "tint", "tint": "#c4504f" },
"foliage": "#b8433f"
},
"minecraft:tags": {
"tags": ["overworld", "animal", "monster", "plains", "ruby_grove"]
}
}
}
}这个文件分为两部分:
description里放的是identifier。使用小写字母和你自己的命名空间。这也是/locate biome使用的名称。components里放其他所有内容。每个组件开启生物群系的一项功能。
每个文件只放一个生物群系,并以生物群系的名字给文件命名(wiki:ruby_grove 对应 ruby_grove.biome.json)。
主要组件
下面是你最常用的组件。每一个都在生物群系组件中有自己的页面。
| 组件 | 作用 |
|---|---|
minecraft:climate | 温度和降雨。寒冷的生物群系会有雪和冰,downfall 为 0 表示完全不下雨。 |
minecraft:surface_builder | 地面由哪些方块构成:最上层、它下面的泥土、深处的石头以及海底。 |
minecraft:overworld_height | 地形有多高、多崎岖。选择一个预设,比如 lowlands、highlands 或 mountains。 |
minecraft:replace_biomes | 通过占据现有生物群系的部分区域,把你的生物群系放进世界中。 |
minecraft:map_tints | 游戏内地图上草和树叶的颜色。 |
minecraft:creature_spawn_probability | 区块首次生成时动物出现的频率(0 到 0.75)。 |
minecraft:village_type | 这里可以生成哪种风格的村庄:default、desert、ice、savanna 或 taiga。 |
minecraft:tags | 供其他文件检查的标签。见下文。 |
你的生物群系如何进入世界
单靠一个新的生物群系文件什么也不会发生。游戏只会放置那些告诉了它该去哪里的生物群系,所以自定义生物群系需要 minecraft:replace_biomes:
targets列出你要占据的生物群系。不要写命名空间(写plains,而不是minecraft:plains)。dimension是minecraft:overworld或minecraft:nether。amount大致表示你替换掉目标生物群系的多少,从略大于 0 到 1。noise_frequency_scale设置区块的大小。值越低,区块数量越少但面积越大;值越高,就会出现很多小块。
新的替换项要加在末尾
一旦玩家已经有了包含你的生物群系的世界,就只能在 replacements 列表的末尾添加新条目。把新条目放在前面会改变所有新区块的生成方式。
标签
标签是附加在生物群系上的普通单词。它们有两个用途:
- 其他文件会检查它们。 生成规则和地物规则会用
has_biome_tag之类的测试来决定生物在哪里生成,树木和矿石放在哪里。给你的生物群系加上overworld、animal和monster这样的标签,很多原版内容就会把它当作普通的主世界生物群系来对待。 - 有些标签有内置含义。 例如
cold或frozen会让村民穿上雪地服装,plains、forest、meadow和swamp决定长出哪些花,desert和mesa会让沙子播放环境音效。
再加上你自己的标签(这里是 ruby_grove)。这样你自己的地物和生物就可以只针对这个生物群系。
标签可以使用字母、数字、. 和 _。
第 2 步:客户端生物群系
资源包这边的结构相同,但根节点是 minecraft:client_biome:
{
"format_version": "1.21.120",
"minecraft:client_biome": {
"description": {
"identifier": "wiki:ruby_grove"
},
"components": {
"minecraft:grass_appearance": {
"color": "#c4504f"
},
"minecraft:foliage_appearance": {
"color": "#b8433f"
},
"minecraft:water_appearance": {
"surface_color": "#7a3fd1"
},
"minecraft:sky_color": {
"sky_color": "#ff9a8c"
},
"minecraft:fog_appearance": {
"fog_identifier": "wiki:ruby_fog"
},
"minecraft:biome_music": {
"music_definition": "cherry_grove"
}
}
}
}| 组件 | 作用 |
|---|---|
minecraft:grass_appearance | 草的颜色。 |
minecraft:foliage_appearance | 树叶和藤蔓的颜色。 |
minecraft:water_appearance | 水面颜色和透明程度。 |
minecraft:sky_color | 天空颜色。 |
minecraft:fog_appearance | 使用哪个迷雾文件。 |
minecraft:biome_music | 播放哪首音乐。 |
minecraft:ambient_sounds | 背景循环音和随机的额外音效。 |
光影视效还增加了四个组件,它们各自指向自己的文件:大气效果、光照、调色和水体。完整列表请看客户端生物群系组件。
所有组件都是可选的。你没写的部分都会使用默认值。
biomes_client.json 是旧做法
旧的包会把所有生物群系的颜色放在一个大大的 RP/biomes_client.json 中。较新的内容为每个生物群系使用一个 .client_biome.json 文件。游戏仍然会为其他包读取旧文件,但新的附加包应该使用按生物群系划分的文件。
测试
- 在一个新世界中开启两个包。生物群系只会出现在尚未生成的区块中。
- 运行
/locate biome wiki:ruby_grove来找到它。 - 飞过去检查草的颜色。如果还是普通的绿色,说明客户端生物群系的 identifier 不匹配。
找不到它?
测试时调高 amount、调低 noise_frequency_scale,让生物群系又大又常见。满意之后再把它们调回去。也要查看内容日志:方块名称中的一个拼写错误就会让整个生物群系无法加载。