🏗️ 生成(Generation)#
#bs.generation:help
Run a function over every position in a shaped region, spread across ticks.
“美是数的和谐。”
—佚名
观看演示
🔧 函数#
你可以在下方找到此模块中的所有可用函数。
在长方体上#
- #bs.generation:on_cuboid
遍历一个 3D 长方体,在每个位置执行回调。
- 输入:
执行
at <entity>或positioned <x> <y> <z>:形状的原点存储
bs:in generation.on_cuboid:遍历数据
run:每一步执行的回调
direction: 定义轴迭代顺序和方向的三字母字符串
e/w表示东/西,s/n表示南/北,u/d表示上/下(默认:eus,+x,+y,+z)on_finished: 在过程结束时,在最终方块位置执行的命令
width:沿 x 轴的大小(默认值:1)
height:沿 y 轴的大小(默认值:1)
depth:沿 z 轴的大小(默认值:1)
spacing:位置之间的间距(默认值:1)
limit:每个游戏刻最多执行的步数(默认值:256)。
- Lambda表达式:
分数
$generation.i bs.lambda:第一维度索引(0到size-1,与第一个方向字母绑定)分数
$generation.j bs.lambda:第二维度索引(0到size-1,与第二个方向字母绑定)分数
$generation.k bs.lambda:第三维度索引(0到size-1,与第三个方向字母绑定)- 输出:
State:回调在每个位置执行。
示例:使用set_block_type回调将云杉楼梯替换为橡木楼梯
data modify storage bs:in generation.on_cuboid set value { \
width:5, height:5, depth:5, \
run:'function #bs.generation:callback/set_block_type {type:"minecraft:oak_stairs",with:{masks:[{block:"minecraft:spruce_stairs"}]}}' \
}
function #bs.generation:on_cuboid
贡献者:Aksiome
矩形迭代#
- #bs.generation:on_rectangle
遍历一个2D矩形,在每个位置执行回调。
- 输入:
执行
at <entity>或positioned <x> <y> <z>:形状的原点存储
bs:in generation.on_rectangle:遍历数据
run:每一步执行的回调
direction:定义轴向迭代顺序和方向的2字母字符串
e/w表示东/西,s/n表示南/北,u/d表示上/下(默认:es,+x,+z)。on_finished: 在过程结束时,在最终方块位置执行的命令
width:沿 x 轴的大小(默认值:1)
height:沿 y 轴的大小(默认值:1)
depth:沿 z 轴的大小(默认值:1)
spacing:位置之间的间距(默认值:1)
limit:每个游戏刻最多执行的步数(默认值:256)。
- Lambda表达式:
分数
$generation.i bs.lambda:第一维度索引(0到size-1,与第一个方向字母绑定)分数
$generation.j bs.lambda:第二维度索引(0到size-1,与第二个方向字母绑定)- 输出:
State:回调在每个位置执行。
示例:使用分形噪声生成地形
# Once
data modify storage bs:in generation.on_rectangle set value { \
width:64, depth:64, limit: 64, \
run:'function #bs.generation:callback/fractal_noise_2d {run:"function mypack:generate",with:{}}' \
}
function #bs.generation:on_rectangle
# mypack:generate
execute store result storage bs:ctx y int .01 run scoreboard players add $generation.noise bs.lambda 1000
function mypack:fill with storage bs:ctx
# mypack:fill
$fill ~ ~ ~ ~ ~$(y) ~ stone
贡献者:Aksiome
↩️ 回调#
下面列出了此模块中所有可用的回调。
实现说明
这些不是简单的回调。它们钩入内部以注入优化的子回调。繁重的初始化运行一次,然后轻量级回调处理实际的迭代。
方块回调#
依赖项
set_block_type 和 set_random_block 回调需要安装 bs.block 模块。
- #bs.generation:callback/set_block {block:<value>,with:{}}
在每个位置放置特定方块。
- 输入:
函数宏:
参数
block: block to place (e.g.,
minecraft:stone)with:附加设置
mode: placement mode [destroy|keep|replace] (default:
replace)masks:用于过滤位置的掩码列表(以AND方式组合)
掩码条目
block: block to check (e.g.,
minecraft:stone,#minecraft:logs)negate:反转条件(默认:false)
x:x偏移(默认:0)
y:y偏移(默认:0)
z:z偏移(默认:0)
示例:用石头填充,仅替换空气
run:'function #bs.generation:callback/set_block {block:"minecraft:stone",with:{masks:[{block:"minecraft:air"}]}}'
- #bs.generation:callback/set_block_type {type:<value>,with:{}}
替换方块类型,同时保留状态和NBT数据。
- 输入:
函数宏:
参数
type: block type ID (e.g.,
minecraft:oak_stairs)with:附加设置
mode: placement mode [destroy|keep|replace] (default:
replace)masks:用于过滤位置的掩码列表(以AND方式组合)
掩码条目
block: block to check (e.g.,
minecraft:stone,#minecraft:logs)negate:反转条件(默认:false)
x:x偏移(默认:0)
y:y偏移(默认:0)
z:z偏移(默认:0)
示例:将云杉楼梯转换为橡木楼梯,保留朝向
run:'function #bs.generation:callback/set_block_type {type:"minecraft:oak_stairs",with:{masks:[{block:"minecraft:spruce_stairs"}]}}'
- #bs.generation:callback/set_random_block {blocks:[],with:{}}
从加权列表中放置随机选择的方块。
- 输入:
函数宏:
参数
blocks:加权方块列表
方块条目
block | type:完整的方块字符串或保留状态的类型
weight:选择权重(默认:1)
with:附加设置
mode: placement mode [destroy|keep|replace] (default:
replace)masks:用于过滤位置的掩码列表(以AND方式组合)
掩码条目
block: block to check (e.g.,
minecraft:stone,#minecraft:logs)negate:反转条件(默认:false)
x:x偏移(默认:0)
y:y偏移(默认:0)
z:z偏移(默认:0)
示例:创建混合矿脉
run:'function #bs.generation:callback/set_random_block { \
blocks:[{block:"minecraft:stone",weight:10},{block:"minecraft:coal_ore",weight:5},{block:"minecraft:iron_ore",weight:2}], \
with:{masks:[{block:"minecraft:air",negate:1b}]} \
}'
贡献者:Aksiome
噪声回调#
依赖项
噪声回调需要安装 bs.random 模块。
- #bs.generation:callback/fractal_noise_2d {run:<value>,with:{}}
计算分形噪声并以噪声值执行回调。组合多个八度的单纯形噪声以生成自然图案。
- 输入:
函数宏:
参数
run:接收噪声值并执行的回调函数。
with:噪声设置。
size:噪声粒度,数值越小细节越丰富(默认值:32)。
seed:用于复现结果的种子(默认值:随机)。
octaves:噪声层数(默认值:2)。
persistence:每层振幅乘数(默认值:0.5)。
lacunarity:每层的频率倍数(默认:2.0)。
- Lambda表达式:
分数
$generation.noise bs.lambda:噪声值,范围为 [-1000, 1000]。分数
$generation.i bs.lambda:第一维度索引(从迭代器继承)分数
$generation.j bs.lambda:第二维度索引(从迭代器继承)
- #bs.generation:callback/simplex_noise_2d {run:<value>,with:{}}
计算单纯形噪声并以噪声值执行回调。
- 输入:
函数宏:
参数
run:接收噪声值并执行的回调函数。
with:噪声设置。
size:噪声粒度,数值越小细节越丰富(默认值:32)。
seed:用于复现结果的种子(默认值:随机)。
- Lambda表达式:
分数
$generation.noise bs.lambda:噪声值,范围为 [-1000, 1000]。分数
$generation.i bs.lambda:第一维度索引(从迭代器继承)分数
$generation.j bs.lambda:第二维度索引(从迭代器继承)
贡献者:Aksiome
💬 这对你有帮助吗?
欢迎在下方留下你的问题和反馈!