选区与保存(pos1 / pos2 / save / stage)
上一页:结构文件(.nbt / .schem / 标记块 / 地形融合) · 下一页:蓝图与目标(blueprint.yml)
把世界里已经盖好的建筑变成一座 QR 遗迹模板,靠的就是这一套命令:框选 → 存模板 → 预览投放 → 需要时还原。全程不碰 YAML(基础字段自动生成,回头再用 遗迹模板 完善)。
全部命令权限
qinhruins.admin。完整命令树见 命令大全。
1. 框选:/qr pos1 与 /qr pos2
站在世界里,看向一个方块,敲命令把它设为选区的一个角:
/qr pos1 ← 看向的方块设为第一个角
/qr pos2 ← 看向的方块设为第二个角要点:
- 靠准星选角:QR 取你视线命中的方块(约 100 格内),不是你脚下的方块。对着目标方块看再敲命令。
- 准星没指到任何方块(指向天空)会提示「请先看向一个方块」。
- 两个角组成一个长方体包围盒(含两端方块),无所谓谁在前谁在后、谁高谁低,QR 自动取 min/max。
- 选区是按玩家记住的,每个管理员各有自己的 pos1/pos2,互不干扰。
🖼️ [图片占位] 站在建筑外,准星分别指向对角两个方块设 pos1/pos2,选区高亮的示意图 · 建议
assets/selection-corners.png
2. 保存:/qr save
框好选区后,把它存成一座遗迹模板:
/qr save <遗迹id>QR 会:
- 扫描选区内的牌子标记和标记块——发现的刷怪点 / 奖励箱 / 核心 / 命令点写进
blueprint.yml,并把标记牌子换成对应的功能方块(如核心牌子→磁石、奖励箱牌子→箱子、刷怪牌子→清掉); - 用 Bukkit 原生 API 把选区 capture 成
structure.nbt; - 在
templates/<遗迹id>/下写出structure.nbt+ 一份默认template.yml+blueprint.yml(已存在则不覆盖)。 - 回报选区尺寸(宽 × 高 × 深)和扫到的标记数量。
之后:
- 默认生成的
template.yml里generation.enabled: false(先不自然生成),你按 遗迹模板 把它配好、开enabled、设weight等再/qr reload。 <遗迹id>有 Tab 补全(列已有模板 ID,方便覆盖更新)。
提示
更新一座已存在的遗迹:重新框选、/qr save <同一id>,structure.nbt 会被新选区覆盖,但已有的 template.yml / blueprint.yml 不会被覆盖(保住你手动配的字段)。想重置就先删那两个文件。
3. 预览暂存:/qr stage
存好模板后,/qr stage 让你在原地用幽灵方块预览结构怎么落地——只有你自己看得见、不真正改世界,满意了再确认放下。这是投放遗迹前的「试摆」利器。
/qr stage start <模板> 开始暂存:在准星位置摆出幽灵预览
/qr stage here 把暂存原点移到准星指向的方块
/qr stage move <dx> <dy> <dz> 按偏移微调位置
/qr stage rotate 循环旋转(NONE → 90 → 180 → 270)
/qr stage confirm 确认放下:真正生成这座遗迹锚点
/qr stage cancel 取消:清掉幽灵预览,不生成工作机制:
| 子命令 | 行为 |
|---|---|
start <模板> | 以你准星指向的方块为原点,发送幽灵方块(仅你可见)画出结构本体,并用粒子描出包围盒边框。 |
here | 把原点搬到当前准星位置,重画预览。 |
move <dx> <dy> <dz> | 在当前原点上按 XYZ 偏移微调(如 move 0 1 0 抬高一格)。 |
rotate | 朝向在四向间循环,预览跟着转。 |
confirm | 在预览位置真正生成锚点(落地、融地形、地基、刷怪点等全部生效),清掉幽灵。 |
cancel | 放弃,清掉幽灵,世界毫无改动。 |
要点:
- 幽灵方块是假的:预览只发给你本人的客户端,世界方块一点没动,
cancel后无痕。 - 预览方块上限
preview-cap(默认 12000):结构方块数超过此值,就只画粒子边框(发太多假方块会卡客户端)。想预览更大结构就调大config.yml的staging.preview-cap。 - 标记块在预览里不画(屏障 / 基岩),所见即放置后的实际样子。
- 预览只在你和原点同一世界时显示。
🖼️ [图片占位] 玩家面前悬浮着半透明幽灵方块预览 + 绿色粒子包围盒,rotate 后朝向变化的对比图 · 建议
assets/stage-preview.png
提示
stage vs spawn:/qr spawn <模板> 直接在脚下投放(无预览);/qr stage 先预览再确认,适合精挑位置和朝向。两者都需要 qinhruins.admin。
4. 牌子标记
/qr save 和 /qr import 会扫描选区里的告示牌当玩法标记。第一行写标签,后面几行写参数:
| 第一行标签 | 第二行 | 第三行 | 第四行 | 含义 |
|---|---|---|---|---|
[mob] / [spawn] | 怪物 ID | 数量*等级(如 3*5) | 阶段号 | 普通刷怪点 |
[mythicmob] / [mmob] | MM 怪名 | 数量*等级 | 阶段号 | MythicMobs 刷怪点(自动加 mm- 前缀) |
[chest] / [loot] | 战利品表名 | 解锁阶段 | — | 解锁式奖励箱 |
[core] | — | — | — | 秘境核心(钥石激活点) |
[command] / [cmd] | 命令第一段 | 第二段 | 第三段 | 生成时执行的命令点 |
保存后,标记牌子会被换成对应方块(刷怪 / 命令点→清掉,奖励箱→箱子,核心→磁石)。
完整蓝图字段(手写
blueprint.yml、阶段目标、变体)见 蓝图与目标;想用 GUI 标点而不是摆牌子,见 可视化建迹。
5. 移除与还原:/qr remove
把一座已生成的锚点回收掉,并尽量把地形还原成生成前的样子:
/qr remove <锚点id>QR 会:把该锚点从世界登记里移除、清掉它的刷怪 / 机关 / 容器战利品记录 / NPC,然后从快照还原原地形,最后回报「已还原」或「无快照(不还原)」。
<锚点id> 有 Tab 补全。配套查找命令:/qr tp <锚点id>(传送过去)、/qr markers <锚点id>(反扫标记)。
快照机制(决定 remove 能不能还原)
由 config.yml 的 cleanup 段控制:
cleanup:
snapshot-restore: true # 生成结构前快照原地形,/qr remove 时还原
max-snapshot-volume: 500000 # 快照体积上限(方块数)| 字段 | 默认 | 说明 |
|---|---|---|
snapshot-restore | true | 开:生成遗迹前先把原地形拍快照存到磁盘,remove / 消退再生时据此还原。关:省磁盘,但移除后不还原方块(留下个坑)。 |
max-snapshot-volume | 500000 | 快照体积上限(方块数)。超大结构(如百万级)同步快照会卡死主线程 → 看门狗杀服,所以超过此值就跳过快照(移除不还原,但不卡服)。0=不限(危险)。 |
注意
想让遗迹移除 / 自然消退后真正还原地形,必须保持 snapshot-restore: true。 关掉它,/qr remove 只摘登记不还方块。
打通的遗迹随时间「消退再生」也依赖快照,见 自然生成与预加载 的 director.regen-hours。
6. 完整流程示例:把一座塔变成会自然生成的遗迹
1. 站在塔外,准星指向塔的一个底角 → /qr pos1
2. 走到斜对角,准星指向塔顶另一角 → /qr pos2
3. (可选)在塔里摆 [mob]/[chest]/[core] 牌子标记
4. 存成模板 → /qr save ancient_tower
5. 预览它放在别处长啥样 → /qr stage start ancient_tower
微调位置 / 转向 → /qr stage move 0 1 0 / /qr stage rotate
满意就放下试看 → /qr stage confirm
6. 不要这个试放的实例了 → /qr remove <上一步给的锚点id>
7. 打开 templates/ancient_tower/template.yml,
开 generation.enabled、设 weight/biomes/y 等(见「遗迹模板」),
保存 → /qr reload,从此它会在世界里自然生成🖼️ [图片占位] 上述六步的流程缩略图(框选→存→预览→确认→还原→开启生成) · 建议
assets/save-workflow.png