开始前 / 开始后
一场副本开头的两个文件:
| 文件 | 什么时候执行 | 适合放 |
|---|---|---|
before.yml | 全员传送进场后马上执行,跑完才开始倒数 | 剧情、介绍、布置场景(NPC、全息字、关门) |
start.yml | 倒数结束、正式开始计时的那一刻执行 | 叫出第一个怪物组、设置目标、开始任务 |
完整顺序
从队长开始挑战到正式开始,依序是:
- 检查:队长
/cd join <副本>(或在菜单里点开始),检查人数、config.yml的入场条件、冷却、次数、门票,以及before.yml的condition。有任何一条不符合就不会开始,并把原因列出来。 - 押门票:门票与金钱先收起来「押着」。
- 贴地图:在后台把地图贴到一个空的副本格子(有
prewarm时直接用预先贴好的)。 - 传送进场:全员传送到
spawn点位。任何人传送失败 → 整场取消、门票全数退还。 - 扣门票:门票真正扣掉,记录冷却、每日 / 每周次数(
count-entry-on: start时)、扣体力。 - 套用环境:游戏模式、时间、天气、世界边界、药水效果,显示计分板与王条(目标栏显示「准备中」的介绍文字)。
- 执行
before.yml:从第一行跑到最后一行,包含所有delay。 - 倒数:
before.yml跑完后,倒数countdown秒(每秒显示倒数大字、播放countdown音效)。countdown: 0= 跳过倒数。 - 正式开始:
- 显示「挑战开始」大字(
notify.start-title)、播放start音效; - 开始计时(
time-limit从这一刻算起,{elapsed}从 0 开始); trigger.yml里auto-start: true(默认)的触发组生效;task.yml里auto-start: true的任务开始;monster.yml里auto-start: true的怪物组开始出怪;- 执行
start.yml。
- 显示「挑战开始」大字(
传送进场 ─▶ before.yml(剧情,含 delay)─▶ 倒数 countdown 秒 ─▶ 开始计时
├─ 自动开始的触发组 / 任务组 / 怪物组
└─ start.yml
开始前这段时间
before.yml 与倒数期间副本还没「正式开始」:
- 触发组都还没生效(踩区域、点方块都不会触发),计时也还没开始;
- 玩家可以走动,但不会受到时限压力;
- 想在剧情期 间不让玩家乱跑,可以在
before.yml用effect SLOWNESS或先把门关着(obstacle close)。
什么放哪里
| 想做的事 | 放在 | 例子 |
|---|---|---|
| 开场标题、剧情对话 | before.yml | title、message、delay |
| 生成 NPC、全息字 | before.yml | npc spawn …、hologram create … |
| 关门、布置场景 | before.yml | obstacle close 大门 |
| 叫出第一个怪物组 | start.yml | monstergroup 怪物组1 |
| 设置计分板目标 | start.yml(或怪物组的 objective) | objective &f击败前厅卫兵 |
开始一个没设 auto-start 的任务 | start.yml | task start 时间提醒 |
打开一个没设 auto-start 的触发组 | start.yml 或之后任何脚本 | trigger enable 启动祭坛 |
常见流程:先播开场,再出第一组怪
最常见的写法:before.yml 播开场的消息,跑完倒数,start.yml 的最后一行(通常也是唯一一行)叫出 怪物组1。
before.yml
script:
- "title &b&l霜烬古殿||&7寒气从四面八方涌来"
- "sound ENTITY_ELDER_GUARDIAN_CURSE 0.6 1"
- "npc spawn 长老 长老 minecraft:villager &e古殿长老"
- "hologram create 祭坛字 祭坛 &b冰之 祭坛||&7打倒前厅卫兵后才能启动"
- "delay 2"
- "message &7长老:「霜烬守卫就在最深处……」"
- "delay 2"
- "message &7长老:「先打倒前厅的卫兵,大门才会打开。」"
- "delay 1"
start.yml
script:
- "objective &f击败前厅卫兵"
- "monstergroup 怪物组1"
不想要倒数的话,config.yml 写 countdown: 0:before.yml 最后一行跑完就立刻执行 start.yml,
效果就是「先播放开始前的消息,最后一行 monstergroup 怪物组1」。
不建议把 monstergroup 写在 before.yml
before.yml 里也能叫怪物组,但那时计时还没开始、触发组也还没生效,而且倒数会和打怪同时进行。
出怪请放在 start.yml