跳到主要内容

编辑模式

地图和点位都在游戏里做:/cd admin edit <副本> 进入编辑模式,盖好建筑、用工具点出出生点 / 出怪点 / 区域 / 门,/cd admin save 保存。 新副本用 /cd admin create <ID> [显示名称] 建立,建好会直接进入编辑模式。

点位摆好之后,右键点位上方的标签就能打开这个点位的编辑菜单:改名、移动、看谁用到它,还能直接编辑它的怪物组、触发、宝箱。怪物组、触发组、任务组、脚本组也都能在编辑菜单里改,不用打开 yml,见 右键编辑点位 与 菜单编辑器。

编辑世界​

  • 编辑模式在单独的虚空世界 cloud_dungeons_editor 里(名称见 config.yml 的 editor.world),和副本世界分开。
  • 每个副本在编辑世界有自己固定的一格,第一次编辑时分配,记在 plugins/CloudDungeon/editor.yml,之后每次都回到同一格。
  • 第一次进入时:已经保存过地图的,会把 map.schem 贴进编辑区;还没有地图的,在 Y=64 放一块 5×5 的玻璃平台让你站着(盖地图时拆掉或盖过去就好)。
  • 进入后会传送到出生点(没有出生点则传送到地图中央上方)。
  • 世界边界把你限制在这一格的建筑范围里:默认 896×896(world.slot-spacing 减去两边各 64 格的间隔)。地图的长宽不能超过这个范围。

进入时会发生什么​

  • 自动切换成创造模式、可以飞。
  • 背包换成 9 个编辑工具。原本的背包、位置、游戏模式、飞行状态先备份到 plugins/CloudDungeon/editor-backup/<UUID>.yml。
  • 离开编辑模式(保存离开、不保存离开、下线、停服)时全部还原。
  • 编辑到一半服务器崩溃:下次登录时会自动把背包、位置、游戏模式还给你,并提示「上次编辑模式没有正常离开」。
  • 被其他插件传送出编辑世界(例如 /spawn):自动结束编辑并还原背包与游戏模式,人留在新位置。

编辑中的限制​

  • 正在副本里不能进入编辑模式;正在编辑时不能用 /cd join 开副本(先 /cd admin save 或 /cd admin exit)。
  • 有人正在编辑的副本,玩家不能开始挑战,只有 /cd admin test 可以。
  • 正在编辑另一个副本时输入 /cd admin edit <别的副本>,会先不保存离开当前这个,再进入新的。

工具(快捷栏 1~9)​

工具点空气时,会以准星对着的方块(6 格内)为准。工具不能丢出、不能放置,点方块也不会把方块打掉。

格工具用法产生的点位
1铁锹 怪物点右键方块 → 在聊天栏输入怪物组名称mob,同一组可以点很多个位置;同一个方块已经有同一组的怪物点时会取代它,不会重复
2床 出生点右键方块 → 出生点设在这里,朝向 = 你面对的方向spawn(只会有一个,新的取代旧的)
3指南针 点位右键方块 → 输入名称;左键方块 = 显示这个方块的坐标(点一下复制)point
4金斧 区域左键 A 点、右键 B 点,蹲下右键 → 输入名称region
5铁栏杆 障碍(门)左键 A 点、右键 B 点,蹲下右键 → 输入名称;副手拿着的方块 = 关门时填的方块(没拿则是屏障)obstacle
6拉杆 互动点右键方块 → 输入名称interact
7村民蛋 NPC右键方块 → 输入 NPC IDnpc
8箱子 宝箱右键箱子 → 输入名称chest(loot.yml 用 point: 名称 设置战利品)
9下界之星 菜单右键 → 打开编辑菜单—
  • 任何工具蹲下左键 = 删除附近的点位:3 格内最近的一个点位,或包含这个方块的区域 / 障碍。
  • 点位的朝向会对齐到 45° 的倍数;怪物点、出生点、点位、NPC 放在被点方块的上方中央,互动点和宝箱就是被点的那个方块。
  • 点位一改就立刻写进 points.yml,不用另外保存。点位格式见 点位 points.yml。

自动补上的设置​

  • 铁锹输入的怪物组名称在 monster.yml 里还没有时,会自动新增一组模板(3 只僵尸、auto-start: false),记得改成你要的怪。见 怪物组。
  • 拉杆新增的互动点,如果 trigger.yml 里还没有用到这个点位的触发,会自动新增一个 type: interact、once: true、script 为空的触发,只要在 script 写上点了之后要做什么。见 触发组。

聊天栏输入​

工具或菜单问名称、数值、脚本行时,直接在聊天栏打字回答(这句话不会发到公开频道):

  • 聊天栏会列出可点击的快速选项(例如已有的怪物组名称),点一下就等于输入;结尾带空格的选项只会把文字放进聊天栏,让你接着打完再送出。
  • 输入 取消(或 cancel、q)放弃这次输入。
  • 输入 清空 = 把这个值设成空的(例如清掉计分板目标)。
  • 名称不能有空白、逗号、分号、{}、<>、@、~、$,最长 32 字;输入不合法会要求重新输入。
  • 也可以用 /cd admin input <文字> 回答。

显示​

  • 每个点位上方有一个文字标签(☠ 怪物点、⚑ 出生点、▣ 区域……),只有正在编辑这个副本的管理员看得到,保存地图前会自动移除,不会被存进地图。
  • 标签最下面有一行灰色的「右键编辑」:右键标签(手上拿什么都可以,包括编辑工具)就会打开这个点位的编辑菜单,见 右键编辑点位。
  • 粒子:怪物点是火焰、其他点位是末地烛(48 格内);区域和障碍画出外框(64 格内);正在框选的 A/B 范围用绿色粒子显示。

编辑菜单​

快捷栏第 9 格的下界之星(或 /cd admin menu)。

按钮作用
副本信息地图范围、怪物点 / 点位 / 区域数量、怪物组 / 触发 / 任务数量、文件夹路径
保存并离开等同 /cd admin save
只保存(继续编辑)等同 /cd admin save stay
不保存离开点两下确认;方块不保存,但留在编辑世界
回到出生点传送到出生点
副本规则这个副本的副本限制与副本内能用的指令,见 副本规则菜单
重新读取设置手动改完这个副本的 yml 后点这里
存档并测试保存地图、离开编辑,约 3 秒后自动开一场测试
点位清单所有点位;左键传送,右键打开这个点位的编辑菜单,Shift+右键两次删除
怪物组每组有什么怪、出怪点数量、打完条件、打完之后做什么;左键打开怪物组编辑器,右键切换「自动开始」,Shift+点击传送到出怪点;「新增怪物组」输入名称建立新的一组
触发组每个触发的种类、参数、脚本前几行;点一下打开触发编辑器;「新增触发组」先选种类,再输入名称
任务组每个任务的时间轴;点一下打开任务编辑器;「新增任务组」
脚本组before.yml 的 script、start.yml、end.yml 的 clear / fail、before.yml 的 condition,以及每个脚本组;点一下用脚本编辑器编辑;「新增脚本组」
检查设置执行 /cd admin validate <副本>
重新拿工具再拿一套 1~9 格工具

快速设置​

菜单下半部分直接修改这个副本的 config.yml(保留注释),改完立刻重新读取:

设置点击方式对应设置
时间限制左键 +1 分、右键 -1 分,Shift 为 ±10 分(0 = 不限)time-limit
生命左键 +1、右键 -1(-1 = 无限),Shift+左键切换全队共用 / 每人各自lives.amount、lives.mode
人数左 / 右键:最多人数 ±1;Shift 左 / 右键:最少人数 ±1players.max、players.min
组队点击切换可以组队 / 只能单人party.allowed
开场倒数左键 +1 秒、右键 -1 秒countdown
天气点击轮换 晴 / 雨 / 雷雨environment.weather
时间点击轮换 早上 / 中午 / 晚上 / 午夜(1000 / 6000 / 13000 / 18000)environment.time
游戏模式点击切换 冒险 / 生存environment.gamemode
每日次数左键 +1、右键 -1(0 = 不限)requirements.daily-limit
冷却左键 +5 分、右键 -5 分requirements.cooldown
死亡不掉落点击切换environment.keep-inventory
队友救援点击切换lives.ally-revive.enabled
右侧计分板点击切换显示 / 隐藏scoreboard.enabled
显示名称点击后在聊天栏输入新名称(可用 & 色码)name

完整设置说明见 副本设置 config.yml。

右键编辑点位​

每个点位的标签都带有一个看不见的点击框:右键标签(手上拿什么都可以,包括编辑工具)就会打开这个点位的编辑菜单。从编辑菜单的「点位清单」右键某个点位也会打开同一个菜单。

每个点位都有的按钮​

菜单最下面一排是所有点位共通的按钮,中间是「回主菜单」:

按钮适用作用
改名全部在聊天栏输入新名称。怪物点以外的点位改名时,trigger.yml 里 point / region / area / location / id 写着旧名称的、loot.yml 里 point 写着旧名称的,会自动改成新名称;脚本行里写到旧名称的不会改,菜单会告诉你还有几行用到旧名称(用「谁用到这个点位」找出来手动改)
移到我站的位置区域、障碍以外把点位移到你脚下,朝向也改成你面对的方向(对齐到 45°)
用目前的选取范围重设区域、障碍用你目前框选的 A 点 / B 点(金斧左键、右键点的两个角)重设范围
整个区域移到我脚下区域、障碍大小不变,整块搬过来,最小角放在你站的方块
朝向改成我面对的方向区域、障碍以外只改朝向,位置不变
传送过去全部传送到这个点位
复制坐标全部聊天栏显示坐标,点一下复制
谁用到这个点位全部列出这个副本的 yml 文件里含有这个名称的行(不含注释),最多 12 行
删除这个点位全部点两下确认

各种点位的专属按钮​

菜单上半部分依点位种类而不同:

点位种类专属按钮
☠ 怪物点 mob编辑怪物组:打开这个怪物组的怪物组编辑器;monster.yml 里还没有这一组时变成「建立怪物组」,用模板建立一组。预览生怪:在出怪点生成第 1 波的怪,发光、不会动,10 秒后自动移除。改成别的怪物组:怪物点的名称就是它属于哪个怪物组,换一个名称 = 归到另一组
互动点 interact列出最多 5 个用到这个点位的触发,点一下打开触发编辑器。新增触发:新增一个 interact 触发
区域 region同上列出触发。新增触发:先选种类 enter / leave / sneak / mob-enter / break / place
NPC npc同上列出触发。新增触发:新增一个 npc 触发
一般点位 point同上列出触发。新增触发:先选种类 enter / interact
障碍 obstacle关门时填的方块:主手拿着一个方块点一下,就换成那个方块(对应 points.yml 的 block)。脚本怎么开关:显示用到 obstacle open / obstacle close 这扇门的脚本行;点选项可以把 obstacle open 名称 加到 start.yml、某个怪物组的打完时(end)或某个脚本组的最后
宝箱 chest编辑宝箱组:打开宝箱编辑器;loot.yml 里还没有时变成「建立宝箱组」,会新增一组:point = 这个宝箱、personal、抽 3 次、一项钻石 1-3 个(权重 10)
出生点 spawn设为副本的出生点:把这个点位的名称写进副本 config.yml 的 spawn
  • 「列出触发」找的是 point / region / area / location / location-a / id / name 等于这个名称的触发。
  • 新增的触发命名为 点位名称_种类(例如 祭坛_interact),建好马上打开触发编辑器让你写脚本。

菜单编辑器​

所有菜单编辑器的共通规则:

  • 每改一次就立刻写进 yml(保留注释),并重新读取这个副本,不用另外保存。
  • 进行中的副本不受影响:已经开始的场次继续用开始时的设置,下一场才用新的。
  • 需要输入文字时用聊天栏输入:清空 = 设成空的,取消 = 不改。
  • 「删除」类的按钮都要点两下确认。

怪物组编辑器​

从编辑菜单的「怪物组」左键、或怪物点的「编辑怪物组」打开。用 DungeonPlus 清单写法(groups: 底下的 $mob 行)写的怪物组只能看,不能在菜单里改,请直接改 yml。

设置(最上面一排):

按钮对应设置操作
显示名称name聊天栏输入
自动开始auto-start点击切换
可以重复叫出repeat点击切换
整组发光glowing点击切换
出怪点point聊天栏输入点位名称
生成间隔interval左键 +0.5 秒、右键 -0.5 秒
时间限制time-limit左键 +30 秒、右键 -30 秒
计分板目标objective聊天栏输入,可用 {killed} / {total}
超时脚本timeout用脚本编辑器编辑

这一波的怪:每一行怪是一个图标,堆叠数量 = 只数。左键 +1 只、右键 -1 只,Shift+点击打开这一行的详细设置:

按钮作用
数量±1 / ±5
等级±1 / ±5
Boss切换 boss(王条显示它的血量)
发光切换 glow
出现概率点击轮换 100 → 75 → 50 → 25 → 10(%)
出怪点聊天栏输入点位名称(at=)
散开±1 格(spread=)
换成别的怪聊天栏输入新的怪物 ID
删除删掉这一行
  • 新增怪物:在聊天栏输入 MythicMobs 怪物 ID 或 minecraft:名称,快速选项会列出 MythicMobs 的怪物 ID。
  • 用手上的刷怪蛋新增:主手拿着刷怪蛋点一下,新增那种原版怪。
  • 菜单写回的怪物行一律是一行文字:"怪物 数量 level=… at=… spread=… chance=… boss glow"(只写有设置的部分)。原本写成对照表({ mob: …, amount: … })的那一行,在菜单里改过之后会换成这种一行写法。

脚本与条件:

按钮对应设置
打完条件condition(只有一波:组的;分波:这一波的),用条件编辑器;空 = 怪全部打完
出怪时 / 这一波开始时start(只有一波时叫「出怪时」,是组的 start;分波时叫「这一波开始时」,是这一波的 start)
打完时只有一波:组的 end;分波:这一波的 end
整组开始时分波才有:组的 start
全部波打完时分波才有:组的 end
预览这一波在出怪点生成这一波的怪,发光、不会动,10 秒后移除

最下面一排:

按钮作用
上一波 / 第 n / N 波 / 下一波切换正在编辑的波
新增一波在最后加一波。只有一波的怪物组会自动改成 waves 写法:原本的 mobs / monster / condition / start 变成第 1 波,end 留在组的 end
删除这一波分波才有,点两下确认
删除整个怪物组点两下确认

怪物组各设置的意思见 怪物组 monster.yml。

触发编辑器​

从编辑菜单的「触发组」点一下、或点位菜单的触发列表打开。

按钮对应设置操作
种类type选择种类
副本开始就生效auto-start点击切换
整场只触发一次once点击切换(会移除旧写法 first:)
冷却cooldown左键 +1 秒、右键 -1 秒,Shift 为 ±10 秒
额外条件condition条件编辑器
触发时执行script脚本编辑器
  • 参数:这个触发的每个参数(point、region、command……)是一张纸,左键修改值,Shift+右键两次删除。
  • 新增参数:聊天栏输入 名称=值,true / false 会存成是 / 否;快速选项会依种类列出可用的参数。
  • 说明图标列出这个种类有哪些参数。
  • 删除这个触发:点两下确认。

各种类的参数见 触发组 trigger.yml。

任务编辑器​

从编辑菜单的「任务组」点一下打开,或点「新增任务组」建立。

按钮对应设置操作
副本开始就跑auto-start点击切换
循环loop点击切换(会移除旧写法 mode:)
每隔 N 秒every只有用 every 写的任务才有
每次执行script只有用 every 写的任务才有,脚本编辑器
  • 时间轴:每个时间点是一个图标,点一下编辑那一刻要执行的脚本,Shift+右键两次删除这个时间点。
  • 新增时间点:聊天栏输入秒数,或 1m30s 这种写法。
  • 删除这个任务:点两下确认。

见 任务组 task.yml。

宝箱编辑器​

从宝箱点位的「编辑宝箱组」打开。

按钮对应设置操作
模式mode点击切换 personal / shared
抽几次rolls左键 +1、右键 -1
箱子标题title聊天栏输入
打不开时的讯息locked-message聊天栏输入
开启条件condition条件编辑器
箱子点位point聊天栏输入点位名称

战利品:loot 的每一项是一个图标,会显示大约的抽中概率。

  • 左键 / 右键:权重 +1 / -1。
  • Shift+左键:修改数量(例如 1-3)。
  • Shift+右键两次:删除这一项。
  • 新增:手上的物品:记录主手物品的种类、数量、名称、lore、custom-model-data,有附魔就加 glow: true。附魔内容不会记录;MMOItems 之类的插件物品请用指令奖励。
  • 新增:指令奖励:聊天栏输入一条以控制台执行的指令,{player} = 打开宝箱的人。
  • 删除这个宝箱组:点两下确认。

见 宝箱组 loot.yml。

脚本 / 条件编辑器​

上面所有「脚本」「条件」按钮,以及编辑菜单「脚本组」里的每一项,都用这个编辑器。每一行是一个图标:

操作作用
左键修改:聊天栏会显示这一行目前的内容,点 [修改目前内容] 就把它放进聊天栏,改完送出
右键在这一行下面插入一行
Shift+左键往上移一行
Shift+右键删除(点两下确认)
  • 复原刚刚删掉的那行:删错了点这里放回原位。
  • 新增一行(加在最后)。
  • 说明图标列出常用动作(脚本)或常用条件(条件清单)。
  • if / then 这种条件区块显示成一本书:可以移动、删除,内容请直接改 yml。
  • 看不懂的动作名称(打错字)会标成红色,写入后也会在聊天栏警告。

动作与条件的写法见 脚本语法 与 条件。

盖地图​

  • 直接在编辑区里盖,或用 FAWE 的 //paste 贴建筑。
  • 已经有现成的地图(其他世界、旧插件的地图):
    • /cd admin import selection:先用 WorldEdit 在任何世界选好范围(//wand 或 //pos1 //pos2),这个范围会复制进编辑区,最小角放在这一格原点 +8 的位置,高度不变。
    • /cd admin import world <世界> [半径]:复制那个世界出生点周围 半径 格(默认 150,最大到建筑范围的一半)、从最低到最高的整块。不能从编辑世界或副本世界导入。
    • 长宽超过建筑范围(默认 896)会拒绝,调大 world.slot-spacing 才能放得下。
  • 导入后记得标好点位再保存。

保存​

/cd admin save(或菜单的「保存并离开」):

  1. 扫描这一格里实际盖了东西的范围,再把所有点位(例如飘在空中的出怪点)也包进去。
  2. 用 FAWE 在后台把这个范围存成 dungeons/<副本>/map.schem。
  3. 把地图范围写进 points.yml 的 map.origin / map.size。
  4. 丢弃已经预热好的旧版本地图,重新读取副本,并自动检查设置,最多列出 8 个问题。

需要安装 FastAsyncWorldEdit(或 WorldEdit),否则无法保存。编辑区里什么都没有时会提示先盖点东西。

  • 点位一直都是即时保存的;方块只有保存时才写进 map.schem。
  • 不保存离开(/cd admin exit)时,盖到一半的方块仍然留在编辑世界,下次 edit 回来可以继续盖。
  • 想放弃编辑区里没保存的修改,回到上次保存的版本:/cd admin edit <副本> reset。
  • 保存只影响之后开始的场次,进行中的副本不受影响。

多人同时编辑​

多位管理员可以同时 edit 同一个副本:大家在同一格、看到同样的标签,任何人新增或删除点位,其他人的标签马上更新。保存由执行保存的人完成,范围包含所有人盖的东西。

删除副本​

/cd admin delete <副本> confirm:整个副本文件夹移到 dungeons/.trash/<副本>-<时间戳>/,不会真的删除。要救回来,把文件夹搬回 dungeons/(改回原名)再 /cd admin reload。副本正在进行或有人在编辑时不能删除。