生成地表区块
experimental
基于特征的地表构建器是一种功能,它能将多种方块组合在一起,为主世界地表增添多样性和装饰效果。本教程将详细说明创建该功能所需的各项参数,包括尺寸、生成频率、生成位置等!
单方块特征
单方块特征将作为我们地表构建器的基础。它们定义了我们将要使用的方块类型。在本教程中,我将使用粗土、灰化土和圆石作为示例。
了解更多关于单方块特征的信息请点击这里
粗土文件
BP/features/coarse_dirt_feature.json
json
{
"format_version": "1.13.0",
"minecraft:single_block_feature": {
"description": {
"identifier": "wiki:coarse_dirt_feature"
},
"places_block": {
//粗土与普通泥土共享相同标识符,需通过名称和状态设置
"name": "minecraft:dirt",
"states": {
"dirt_type": "coarse"
}
},
"enforce_survivability_rules": false,
"enforce_placement_rules": false,
"may_replace": [
"minecraft:grass" //该方块只能替换草方块
]
}
}灰化土文件
BP/features/podzol_feature.json
json
{
"format_version": "1.13.0",
"minecraft:single_block_feature": {
"description": {
"identifier": "wiki:podzol_feature"
},
"places_block": "minecraft:podzol", //灰化土可直接使用标识符定义
"enforce_survivability_rules": false,
"enforce_placement_rules": false,
"may_replace": [
"minecraft:grass" //该方块只能替换草方块
]
}
}圆石文件
BP/features/cobblestone_feature.json
json
{
"format_version": "1.13.0",
"minecraft:single_block_feature": {
"description": {
"identifier": "wiki:cobblestone_feature"
},
"places_block": "minecraft:cobblestone", //圆石可直接使用标识符定义
"enforce_survivability_rules": false,
"enforce_placement_rules": false,
"may_replace": [
"minecraft:grass" //该方块只能替换草方块
]
}
}权重随机特征
权重随机特征将作为我们的随机选择器,用于在不同类型的方块之间进行选择。
了解更多关于权重随机特征的信息请点击这里
BP/features/select_surface_block_feature.json
json
{
"format_version": "1.13.0",
"minecraft:weighted_random_feature": {
"description": {
"identifier": "wiki:select_surface_block_feature"
},
"features": [
[
"wiki:coarse_dirt_feature", //粗土权重为5
5
],
[
"wiki:podzol_feature", //灰化土权重为3
3
],
[
"wiki:cobblestone_feature", //圆石权重为2
2
]
]
}
}散布特征
散布特征是我们地表构建器的重要组成部分。它将决定每个区块中方块的大小、形状和数量。
了解更多关于散布特征的信息请点击这里
BP/features/scatter_surface_block_feature.json
json
{
"format_version": "1.13.0",
"minecraft:scatter_feature": {
"description": {
"identifier": "wiki:scatter_surface_block_feature"
},
"iterations": "math.random_integer(20,25)",
"x": {
"extent": [0, 8],
"distribution": "gaussian"
},
"z": {
"extent": [0, 8],
"distribution": "gaussian"
},
"y": "q.heightmap(v.worldx, v.worldz) -1",
"places_feature": "wiki:select_surface_block_feature" //权重随机特征的标识符
}
}iterations决定将放置多少个方块。这里使用Molang的math.random_integer函数来随机化方块数量。在本例中,方块数量将在20到25个之间。extent使用数组来确定区块的大小。[0, 8]表示区块在X和Z轴上的延伸范围为0到8个方块。因此,我们的区块在X和Z轴上的长度都是8个方块。此参数仅用于X和Z轴的分布。"y": "q.heightmap(v.worldx, v.worldz) -1表示方块将被放置在地表最高点的y坐标减1处。因此特征将始终生成在地表。distribution指定使用的分布类型。可用选项包括Gaussian(高斯分布)、Inverse Gaussian(逆高斯分布)、Uniform(均匀分布)、Fixed Grid(固定网格)和Jittered Grid(抖动网格)。
特征规则
这是我们地表构建器的最后一步。地表构建器的特征规则略有不同。
BP/feature_rules/overworld_surface_blocks_feature.json
json
{
"format_version": "1.13.0",
"minecraft:feature_rules": {
"description": {
"identifier": "wiki:overworld_surface_blocks_feature",
"places_feature": "wiki:scatter_surface_block_feature"
},
"conditions": {
"placement_pass": "surface_pass",
"minecraft:biome_filter": {
"test": "has_biome_tag",
"operator": "==",
"value": "overworld" //可将其更改为任意生物群系标签
}
},
"distribution": {
"iterations": 1,
"x": {
"extent": [0, 16],
"distribution": "uniform"
},
"y": 0,
"z": {
"extent": [0, 16],
"distribution": "uniform"
},
"scatter_chance": {
//区块生成每个斑块的几率
"numerator": 1,
"denominator": 5
}
}
}
}至此,我们的地表构建器就完成了!欢迎随意修改和调整参数!

