/fill 与 /clone:32,768 方块上限及绕过它的各种模式
两条命令默认每次调用上限为 32,768 个方块,超出即拒绝执行。本文介绍 hollow、outline 和 replace 模式、clone 的遮罩,以及如何搬运超过上限的建筑,从 0 0 0 到 31 31 31 正好卡在上限的边缘。
/fill 与 /clone 共享一个由 max_block_modifications 游戏规则设定的上限: 默认每条命令 32,768 个方块,也就是 32×32×32。一旦超出,命令就会以 “Too many blocks in the specified area”错误拒绝执行——而在命令方块链中, 这个错误只会显示在该方块自身的输出里,看起来就像什么都没发生。如果你确实需要 更大的单条命令,就调高这条游戏规则。
判断是否超限
计数两端都包含在内,所以从 0 0 0 到 31 31 31 的区域正好是 32,768——恰好卡在上限。而从 0 0 0 到 32 32 32 是 35,937,会失败。
blocks = (|x2-x1|+1) × (|y2-y1|+1) × (|z2-z1|+1)
对于更大的区域,拆成若干薄层、分几条命令执行。按 Y 轴拆分通常最容易理清。
fill 模式
| 模式 | 作用 |
|---|---|
replace | 默认;可选地筛选为某一种方块 |
hollow | 填充外壳,内部清空为空气 |
outline | 填充外壳,内部保持原样 |
destroy | 先把原有方块掉落为物品 |
keep | 只填充空气,绝不覆盖 |
hollow 与 outline 是大家最容易搞混的一对。要在已有结构外面包一层玻璃盒子, 需要的是 outline;hollow 会把它内部的东西一并删掉。
keep 用于地形最安全——它不会吃掉任何已经放置的东西。
筛选形式把要替换的方块放在最后:
/fill ~ ~ ~ ~10 ~5 ~10 stone replace dirt
这样只会把泥土替换成石头,其余一切原封不动。
clone 的模式与遮罩
/clone 有两个互相独立的设置,而且顺序很重要:
遮罩(Mask)——replace(全部)、filtered <block>(仅该方块)或 masked (跳过源区域中的空气)。
模式(Mode)——normal、force(允许区域重叠),或 move(复制后 清空源区域)。
/clone <begin> <end> <destination> masked normal
把建筑盖到已有地形上时,你要的是 masked——源区域中的空气不会在目标处 打出空洞。
move 才是让人吃惊的那个:它会删除原建筑。而且无法撤销。
重叠需要 force
只要源区域与目标区域有任何重叠,normal 就会拒绝执行。force 允许重叠,但 结果取决于复制顺序,几乎不会是你想要的效果。先克隆到一块临时区域再克隆回来, 可预测性要高得多。
区块必须已加载
两条命令都只对已加载的区块生效。一个 /fill 或 /clone,只要其角落伸入 未加载的地形,就会被以“That position is not loaded”拒绝。对于脚本化建造,先 /forceload add 该区域, 事后再移除——否则同一条命令,你站在附近时能跑通,从出生点执行时却会失败。
在世界与方块命令生成器中,把参数按正确顺序填好、 并对照上限检查方块数量,就能生成上述任意一条命令。