自定义生物群系
生物群系(Biome)定义了维度中不同区域的环境特征,包括温度、降雨、地形高度和地表方块。通过在行为包的 netease_biomes/ 目录中添加群系 JSON 文件,你可以创建全新的自定义群系,并结合维度配置中的 netease:biome_source 组件控制群系在维度中的分布。
概述
群系决定了一个区域的"气候"和"外貌"——它影响地形高度、地表材质、天气、雾色和水色。原版包含数十种群系(如 plains、desert、jungle 等),你可以在自定义维度中完全替换或补充这些群系。
关键概念:
- 行为包群系 JSON — 定义群系的气候参数、地形高度和生成规则
- 资源包 biome_client.json — 定义群系在客户端的雾色、水色等显示效果
- 维度配置 netease:biome_source — 控制群系在维度中的空间分布
术语表
| 术语 | 说明 |
|---|---|
| 基础生物群系 | 世界生成第一阶段分配的群系,后续会分化出变种 |
| 山地生物群系 | 基础群系在高地形区域的变种 |
| 突变生物群系 | 较低概率出现的基础群系变异版本 |
| 河流生物群系 | 河流穿过该基础群系时替换使用的群系 |
| 海岸生物群系 | 陆地与海洋交界处的过渡群系 |
| 陆地群系 | 生成在海平面以上的群系 |
| 海洋群系 | 生成在海平面处的群系 |
| 深海群系 | 生成在深海区域的群系 |
文件结构
群系 JSON 文件放在行为包的 netease_biomes/ 目录下,文件名可自由命名:
行为包/netease_biomes/my_ice_plains.json群系 JSON 格式
{
"format_version": "1.14.0",
"minecraft:biome": {
"description": {
"identifier": "mymod:ice_plains"
},
"components": {
// 群系组件
}
}
}组件一览
| 组件 | 类型 | 说明 |
|---|---|---|
minecraft:climate | object | 气候参数:温度、降雨、积雪 |
minecraft:overworld_height | object | 地形高度配置 |
minecraft:surface_parameters | object | 地表方块配置(表层、填充层、底层) |
minecraft:overworld_generation_rules | object | 群系变种生成规则(山地、突变、气候适配) |
tags | array(string) | 群系标签,用于特征规则的群系过滤 |
netease:height | object | 网易扩展高度系统,提供更精细的高度控制节点 |
minecraft:climate
控制群系的气候特征:
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
temperature | float | 0.5 | 温度值。影响降雪/降雨判定和草方块颜色 |
downfall | float | 0.5 | 降雨量。影响植被颜色和天气 |
snow_accumulation | array [min, max] | [0.0, 0.0] | 积雪厚度范围 |
minecraft:overworld_height
控制群系地形的基础高度和起伏:
| 字段 | 类型 | 说明 |
|---|---|---|
noise_type | string | 预设噪声类型(如 "default"、"ocean"、"mountains" 等),与 noise_params 二选一 |
noise_params | array [depth, scale] | 自定义高度参数:depth 控制基础海拔,scale 控制地形起伏 |
minecraft:surface_parameters
定义群系的地表方块材质:
| 字段 | 类型 | 说明 |
|---|---|---|
top_material | string | 最上层方块(如 "minecraft:grass") |
mid_material | string | 填充层方块(如 "minecraft:dirt") |
floor_material | string | 底层方块(如 "minecraft:stone") |
foundation_material | string | 基岩上方的填充方块 |
sea_material | string | 海平面方块(如 "minecraft:water") |
minecraft:overworld_generation_rules
控制群系在原版生成管线中的变种关系:
| 字段 | 类型 | 说明 |
|---|---|---|
hills_transformation | string 或 array | 对应的山地群系标识符 |
mutate_transformation | string 或 array | 对应的突变群系标识符 |
generate_for_climates | array | 该群系适配的气候类型及权重,如 [["medium", 3], ["cold", 1]] |
气候类型
原版气候类型包括:frozen(冰冻)、cold(寒冷)、medium(温和)、lukewarm(微温)、warm(温暖)。每种气候类型有一组对应的候选群系,权重越高被选中的概率越大。
客户端显示(biome_client.json)
群系在客户端的雾色、水色等视觉效果需要在资源包中配置 biome_client.json:
文件路径:资源包/biome_client.json
{
"biomes": {
"mymod:ice_plains": {
"fog_identifier": "mymod:ice_plains_fog",
"water_surface_color": "#3F76E4",
"water_fog_color": "#050533",
"water_surface_transparency": 0.65
}
}
}同时需要在资源包的 fogs/ 目录下定义对应的雾效果文件。
netease:height 扩展高度系统
原版 minecraft:overworld_height 只能指定一个固定的 depth/scale 参数对。网易扩展的 netease:height 组件支持通过控制节点定义更复杂的高度曲线:
"netease:height": {
"height_node": [
{ "x": 0, "y": 60 },
{ "x": 50, "y": 80 },
{ "x": 100, "y": 120 }
]
}每个节点定义了一个水平位置 x 到高度 y 的映射,引擎会在节点之间进行插值以生成平滑的地形过渡。
netease:biome_source(维度配置中)
netease:biome_source 是维度 JSON 中的组件,控制群系在维度中的空间分布。它是一个数组,包含多个节点配置。
节点类型
| 节点类型 | 说明 |
|---|---|
constant | 固定群系,整个维度只有一种群系 |
weighted_list | 加权随机列表,按权重选择群系 |
checkerboard | 棋盘格分布,群系按规则交替排列 |
climate | 基于温度/湿度的气候分布 |
continent | 大陆/海洋分布 |
constant 示例 — 整个维度使用单一群系:
"netease:biome_source": [
{
"type": "constant",
"biome": "mymod:ice_plains"
}
]weighted_list 示例 — 按权重混合多个群系:
"netease:biome_source": [
{
"type": "weighted_list",
"entries": [
{ "biome": "mymod:ice_plains", "weight": 3 },
{ "biome": "plains", "weight": 2 },
{ "biome": "forest", "weight": 1 }
]
}
]原版群系生成管线
原版主世界的群系生成经过 6 个阶段:
- 基础岛屿 — 生成大陆/海洋的基础噪声
- 缩放 — 放大地图分辨率
- 添加岛屿 — 在海洋中随机生成陆地
- 温度分配 — 为每个区域分配气候类型
- 群系分配 — 根据气候类型从候选群系中选取
- 缩放/河流/海岸 — 最终细化:添加河流、海岸、山地和突变变种
自定义群系通过 generate_for_climates 参与第 5 阶段的选取过程。
生成模式
群系支持两种生成模式:
- 2D 模式(默认):群系仅在水平方向变化,同一 XZ 坐标的整个 Y 轴使用同一群系
- 3D 模式:群系在三个方向上变化,可实现洞穴群系等效果
完整 JSON 示例
以下示例创建一个名为 mymod:frozen_highlands 的自定义群系,模拟冰雪覆盖的高原环境。
文件路径:行为包/netease_biomes/frozen_highlands.json
{
"format_version": "1.14.0",
"minecraft:biome": {
"description": {
"identifier": "mymod:frozen_highlands"
},
"components": {
"minecraft:climate": {
"temperature": 0.0,
"downfall": 0.5,
"snow_accumulation": [0.5, 1.0]
},
"minecraft:overworld_height": {
"noise_params": [1.0, 0.5]
},
"minecraft:surface_parameters": {
"top_material": "minecraft:snow",
"mid_material": "minecraft:dirt",
"floor_material": "minecraft:stone",
"foundation_material": "minecraft:stone",
"sea_material": "minecraft:ice"
},
"minecraft:overworld_generation_rules": {
"hills_transformation": "mymod:frozen_highlands_hills",
"generate_for_climates": [
["frozen", 5]
]
},
"tags": [
"frozen",
"highlands",
"mymod"
]
}
}
}在维度中使用此群系
在维度 JSON 的 netease:biome_source 中引用:
{
"format_version": "1.14.0",
"netease:dimension_info": {
"components": {
"netease:dimension_type": "minecraft:overworld",
"netease:generator_noise": {},
"netease:biome_source": [
{
"type": "weighted_list",
"entries": [
{ "biome": "mymod:frozen_highlands", "weight": 3 },
{ "biome": "plains", "weight": 2 }
]
}
],
"netease:spawn_biomes": [
"mymod:frozen_highlands",
"plains"
],
"netease:ban_vanilla_structure": {}
}
}
}客户端效果配置
文件路径:资源包/biome_client.json
{
"biomes": {
"mymod:frozen_highlands": {
"fog_identifier": "mymod:frozen_fog",
"water_surface_color": "#2B4A8C",
"water_fog_color": "#050533",
"water_surface_transparency": 0.5
}
}
}常见问题
自定义群系没有在维度中生成
排查步骤:
- 确认群系 JSON 文件放在
netease_biomes/目录下 - 确认维度配置中的
netease:biome_source正确引用了群系标识符 - 如果使用原版生成管线,检查
generate_for_climates中的气候类型和权重是否正确
群系的地表方块没有生效
确认 minecraft:surface_parameters 中的方块标识符拼写正确,使用完整的命名空间格式(如 minecraft:grass)。
群系在客户端没有自定义雾色/水色
检查资源包中是否配置了 biome_client.json,以及 fog_identifier 是否指向了有效的雾效果文件。
如何使用开发模板快速上手
官方提供了 CustomBiomesMod 示例工程,其中包含 tools/template 目录,可以帮助你快速生成群系配置文件的模板。
参考资源
- 官方 Demo:
CustomBiomesMod - Minecraft Wiki - 生物群系
