跳到正文
1.5.0

随机副本支持文档

1.5.0 正式版同时提供内置副本和管理员自建副本。这里说明安装升级、生成与血量规则、准备速度,以及如何搭建和维护自己的副本。

下载与版本

当前正式版为 1.5.0,发布于 。 包含内置副本、管理员自建副本,以及怪物生成、血量同步和准备期间重复入场的修复。 插件页只保留一个最新版下载按钮。

版本包含内容配置兼容
正式版 1.5.0 内置三档副本 + 管理员自建副本 + 生成与稳定性修复 沿用现有配置,不需要迁移到新格式

完整更新记录和校验文件见 GitHub 正式发布页。 通过 83 项离线检查、视距与模拟距离均为 3 的隔离服 67 项自检,用户测试反馈良好; 不同服务端与插件组合仍应先在自己的测试环境验证。

安装与升级

  1. 备份旧 JAR 和 plugins/NWNDungeon/ 数据目录。
  2. 完整停止服务器,替换 JAR,并移走同插件的旧 JAR,避免重复加载。
  3. 启动服务器,确认插件版本为 1.5.0,核对「启动配置校验完成」及各难度首领血量。
  4. 执行 /nwd doctor,再验证一局清波、首领血量与血条、奖励和退出。

换 JAR 必须完整重启。/nwd reload只重载配置,不能把正在运行的旧插件代码换成新版。 每次启动都会从磁盘加载并校验配置;校验失败会停用副本功能并保留原文件,请先按日志修正再重新启动。

API 声明为 1.21,按 Java 21 目标编译;隔离服实测为 Purpur 26.1.2-2592 / Java 25。 具体 Java 要求以所用服务端为准,API 声明不等于所有小版本均已逐一测试。

怪物生成与首领血量

  • 到达当前关卡才生成怪物,后面的关卡不会提前刷怪;按实体体型检查落脚点、危险方块和碰撞。
  • 骷髅等怪物保留原版默认武器,自定义模板装备在原版初始化后覆盖。
  • 怪物失踪时优先加载实际区块、找回原实体;确认缺失后至少等待 5 秒再有限补刷,每只怪整局最多 3 次。
  • 普通怪恢复时保留装备和最近记录的剩余血量,每局每轮最多补刷 2 只;失踪不计击杀、不自动跳波。
  • 首领必须确认由本局玩家击杀才算胜利;恢复预算耗尽或生成持续失败时结束本局,退还实际扣除的体力,不发通关奖励。

首领血量写在哪里?

对象配置位置示例
内置铁级首领config.ymltiers.iron.boss.health: 160
自建副本首领dungeons.yml中对应副本的boss段health: 160
普通怪物模板mobs.yml中对应模板health: 40

血量单位是生命值点数,20 点 = 10 颗心,支持正数与小数。配置 160 时,真实最大血量应为 160, BossBar 显示当前血量 / 160;受伤、治疗后同步更新。运行中上限被改写时会校正上限并保留剩余血量。 服务器硬属性上限确实不足时会明确报错,请按错误检查 spigot.yml中的 settings.attribute.maxHealth.max。

修改后执行 /nwd reload并重新开局,回显会列出实际配置目录和新首领血量; 已有及准备中的内置局保留开局难度配置。只有开发权限的账号不会重载全局 config.yml,请使用管理员权限。

准备速度与进入倒计时

编辑 config.yml,下面是低配服务器优先的默认值:

trigger:
  cast-seconds: 3                   # 进入前倒计时;0 只取消倒计时

performance:
  max-active-runs: 2                # 内置/自建共享,准备中也占名额
  build-operations-per-tick: 2048   # 内置建造/清理操作数上限
  build-budget-ms: 2                # 达到时间预算后下个 tick 继续

「正在准备副本」是实际建造或复制过程,不能直接指定完成秒数。提高操作数和时间预算通常能加快内置副本准备, 也会增加主线程负担;例如 4096 / 4 ms 比默认预算更高,但不保证耗时减半。准备始终串行,重复按按钮不会重新开局。 修改后执行 /nwd reload。自建副本的模板复制耗时还受存档大小和磁盘速度影响。

入口权重如何理解?

入口保持两次抽选:符合条件的新区块先按 1 / generation.chance决定是否生成入口,默认为 1/400; 抽中后再按各候选入口的 weight / 总权重选择副本。权重 10 在总权重 100 时占 10%,总权重 110 时占 10/110, 并非固定 10%。自建副本开启随机入口后也会参与权重池。

这是什么

1.5.0 的定位是在原有内置副本之外,增加一套「管理员自建副本」体系,而不是替换内置副本。 两套入口共用同一棵命令树,互不影响。

对比项内置副本自建副本(1.5.0 新增)
由谁生成插件程序按 iron / gold / diamond 三档生成管理员在游戏内搭建
地形程序按槽位生成自建的模板世界,一局一个独立世界
入口自然生成的遗迹自建的门楼,或由命令贴出
命令/dungeon ...同一棵命令树(见下)

一局一个世界

开局时,插件把模板文件夹复制成 nwndinst_<slug>_<序号> 并加载, 结束时卸载并删除。因此同时开几局就会同时加载几个世界。 config.yml中的performance.max-active-runs是内置与自建副本共享的全局并发上限,准备中的局也计入。

命令与权限

三个命令名等价

/dungeon  =  /nwd  =  /nwmdungeon

只有一个根命令,按子命令名分发。test、spawn、list 等子命令两边同名, 因此按参数判断走哪一套:后面接内置难度名(iron / gold / diamond)走内置副本, 否则当作自建副本的名字。

权限节点

节点默认可执行的命令
nwd.use所有人使用副本入口,leave / locate / stamina
nwd.adminopspawn <难度>、test <难度>、list、tp、release、reload
nwd.devop自建副本创作工具:edit、new ...、test <副本名>、end、doctor 等

旧的 nwndungeon.use / nwndungeon.admin / nwndungeon.dev 同样声明,代码里两套都认,已经发到玩家手上的权限组不需要改。

玩家命令

命令说明
/dungeon leave离开当前副本,回到进本前的位置。副本内禁用其它命令,这条始终可用
/dungeon stamina查看自己的体力(即每日可进入的次数)
/dungeon locate [难度|any]查找离你最近的副本入口,给出方向与坐标;不写难度即不限

管理员命令

命令说明
/dungeon spawn <难度> [x y z [世界]]在指定位置生成一座副本入口;不写坐标即在你面前。难度为 iron / gold / diamond
/dungeon test <难度>生成一个内置副本槽位用于自测,打完自动释放
/dungeon list查看内置副本的槽位占用情况
/dungeon tp <槽位号>传送到指定槽位;槽位空着也能进,会送到它的原点
/dungeon release <槽位号|all>强制回收槽位,里面的人会被送回入口
/dungeon reload管理员重载全局配置和自建副本登记;先校验全部候选配置,成功后替换生效

创作命令(nwd.dev)

命令说明
/nwd edit打开编辑器面板:不在编辑态时是副本列表,在编辑态里是标记面板
/nwd new world create <名字> [void|flat|normal]新建模板世界并进入编辑态(创造 + 飞行)。名字最多 24 字、不能含点号;生成器默认 void
/nwd new world save保存当前模板:落盘、卸载、把编辑世界搬成模板;旧模板自动备份
/nwd new start把「进本落点」记在脚下;未标则使用世界出生点
/nwd new stage <关卡号>切换「当前关卡」,之后的刷怪点记到该关;不写即第 1 关
/nwd new wave <波次号>切换「当前波次」
/nwd new spawner <波次号>把脚下记成当前关卡第 N 波的刷怪点;不写波次即用面板里当前选择的。刷什么怪写在 dungeons.yml
/nwd new gate [remove]看着一扇门登记关卡门;remove 为删除看着的那道
/nwd new exit [remove]看着一扇门登记出口门;remove 为清掉
/nwd new boss记下首领登场的位置;属性写在 dungeons.yml 的 boss:
/nwd new checkpoint把脚下记成检查点,同时记录脚下 3×3 方块的签名
/nwd new reward [supply|reward]看着一个箱子执行,记录位置并打开箱子界面放置物品,关闭界面即写入 loot.yml
/nwd new undo撤销最近打的一个标记(刷怪点 / 检查点 / 箱子)
/nwd new list查看当前标了多少、分了几关
/nwd new door搭入口时登记哪一格是门(材质照原样记录)
/nwd new trigger搭入口时登记触发点;按钮、压力板、拉杆都可用
/nwd new entrance create <副本名> / save / cancel进入入口搭建世界 / 保存入口结构 / 放弃本次搭建
/nwd list列出所有自建副本(名字、世界名、模板体积、落点是否已标)
/nwd test <名字>立刻开一局自建副本自测
/nwd spawn <名字>在你面前贴一座该副本的入口
/nwd end [名字]结束正在跑的自建副本;不写名字即结束全部
/nwd delete <名字>删除一个自建副本;模板文件夹会挪进 templates/_deleted/ 保留退路
/nwd doctor自检:建临时世界 → 放标记方块 → 保存 → 复制成新世界 → 检查方块是否还在 → 清理
/nwd reload三个命令名行为一致;仅有开发权限时只重载 dungeons.yml / registry.yml,不重载全局配置
/nwd help [页码|子命令]查看帮助;/nwd help new world create 可查单条

以游戏内帮助为准。帮助文本由插件的命令登记表生成,不会与实现漂移; 本文的表格是同一份内容的整理版。用 /nwd help <子命令> 可以查单条命令的参数、权限、示例与易错点。

快速上手

① /nwd edit                      → 打开副本列表面板
② 点「新建副本」→ 在聊天里输入名字   → 进入虚空搭建世界(创造模式 + 飞行 + 自动发编辑时钟)
③ 搭房间、放门、放箱子
④ /nwd edit(或右键编辑时钟)      → 打开标记面板
⑤ 依次标记:落点 → 刷怪点(选波次)→ 关卡门(看着门)→ 检查点 → 首领位 → 出口门(看着门)
⑥ 点「保存」                      → 落盘并搬成模板
⑦ /nwd test <名字>               → 自己进去打一局

编辑时钟

进入编辑态或入口搭建态时,插件会自动发一个时钟到快捷栏第一个空位, 右键即可打开对应面板,保存或放弃后自动收回。因此不必反复输入命令。

四个面板

面板 A · 副本列表(/nwd edit)

界面大小按内容决定:没有副本时 9 格一行;不超过 18 个副本时 27 格;更多时用 45 或 54 格。 按钮居中排在最后一行:新建副本 · 新建入口建筑 · 这套怎么用 · 关闭。

  • 左键副本图标 = 进入编辑
  • 右键副本图标 = 删除(二次确认,模板挪进 _deleted/)

面板 B · 标记面板(编辑态下的 /nwd edit)

一行一个主题,其余格子用黑玻璃板填满:

行图标(槽位号)
位置落点(1) · 首领位(3) · 传送到落点(5) · 传送到首领位(7)
关卡与波次关卡◀(10) 第 N 关(11) 关卡▶(12) · 波次◀(14) 第 N 波(15) 波次▶(16)
点位与箱子刷怪点(19) 检查点(20) 清本波(21) · 补给箱(23) 奖励箱(24) 撤销(26)
门关卡门(28) 删除关卡门(30) · 出口门(32) 删除出口门(34)
状态与辅助标记清单(37) 校验(39) 这个世界(41) 标记提示(43) 删除这个副本(44)
操作清空全部标记(45) 保存(46) 放弃(48) 返回列表(50) 说明(52) 关闭(53)
  • 标注「看着一扇门」的图标(关卡门、出口门、删除门),需要先用准星看着目标再点击
  • 关卡门:左键登记,右键删除你看着的那一道
  • 「删除这个副本」有二次确认;如果你正站在它的编辑世界里,会先按「放弃」把你送回主世界再删除

面板 C · 入口搭建(/nwd new entrance create)

槽位图标
10入口门(看着门点击)
12触发点(看着按钮 / 压力板 / 拉杆点击)
14保存入口(自动框选范围 → 存为结构 → 离开)
16放弃(删除本次搭建世界,已保存的结构不受影响)
22提示
24删除这份入口结构(二次确认,删除对应的 .nbt)

面板 D · 说明页(「这套怎么用」)

27 格界面:返回(19) · 关闭(23)。「返回」会按你从哪个面板进入而回到对应面板。

标记的语义与规则

标记含义规则
落点进本后玩家出现的位置未标则使用世界出生点
关卡门本关的出口,清完场才会开启关卡数 = 关卡门数 + 1,最后一关是首领区
刷怪点某一关某一波的刷怪位置用 ◀▶ 选择关卡与波次;刷什么怪写在 dungeons.yml 的 stages[].waves
检查点死亡后的复活位置记录坐标与脚下 3×3 方块签名;方块被拆则该检查点失效,照原样补回即恢复
首领位首领登场的位置属性写在 dungeons.yml 的 boss:;首领必须确认击杀,最多在标记处重生 3 次
出口门通关后右键它离开副本未标则在首领位放一扇默认木门兜底
补给箱打怪途中的补给看着箱子执行,在弹出的箱子界面中放置物品,关闭界面即写入 loot.yml
奖励箱通关奖励同上

五条关键规则

  1. 同一扇门不能既是关卡门又是出口门,两边都会拒绝并提示如何修改。
  2. 删除关卡门会自动重排关卡:删掉第 i 道门后,原第 i 关与第 i+1 关合并,后续关卡的刷怪点与补给箱会自动前移一位(不前移就会挂到错误的关卡上)。
  3. 门不记录材质:放的是什么门就存什么门,木门、铜门、铁门均可,命令里没有材质参数。
  4. 未清场时关卡门打不开:插件每 5 tick 强制关门,同时取消右键与门附近 3 格内的压力板 / 按钮。
  5. 「标记清单」会把所有标记逐条输出到聊天栏,「校验」会挑出缺失或失效的项。

入口建筑

流程

/nwd new entrance create <副本名>     → 进入虚空搭建世界
   搭一座门楼(放一扇门 + 一个按钮或压力板)
   在面板中点击「入口门」(看着门)→ 点击「触发点」(看着按钮)
   点击「保存入口」                     → 自动框选范围并保存为结构
/nwd spawn <名字>                   → 在你面前贴出一座,门与触发点一并登记好

实测行为

行为说明
结构粘贴不带门当前服务端版本的结构粘贴不会带上门方块,插件会按记录的材质、朝向与铰链自行补摆回去
结构粘贴不带箱子内的物品贴出来是空箱子。因此不要在入口结构的箱子里放东西,奖励与补给请用标记配合 loot.yml
入口登记写在区块数据里门是普通方块、无法存 NBT,因此记录挂在区块的持久化数据上
打掉那扇门 = 该入口永久失效登记项会被标记为失效,踩踏或按压都不再传送;记录仍保留在 entrances.yml 中

删除入口

目标做法
让一个入口失效把那扇门打掉
删除已保存的入口结构(重建一份干净的)入口面板 → 「删除这份入口结构」,或手动删除 templates/entrances/<slug>.nbt 与同名 .yml
删除入口登记记录目前没有对应命令,需要手动编辑 entrances.yml

已知问题:重复搭建会让入口越存越多。 重新进入入口搭建世界时,插件会把上次保存的入口贴回来供你修改。如果你在它旁边又搭了一座, 保存时自动框选会把两座一起框进去,之后每次 /nwd spawn 都会贴出两座。 处理办法:在入口面板点「删除这份入口结构」,再重新 new entrance create 搭一座并保存。

数据与文件

plugins/NWNDungeon/
├── config.yml            全局配置:规则、槽位、体力、触发、生成、世界名单
├── dungeons.yml          自建副本登记(含字段注释与示例)
├── registry.yml          副本名 → 世界 slug 的映射
├── loot.yml              掉落表(含 enchant-pool / enchant-levels)
├── mobs.yml              怪物模板
├── party.yml             组队相关
├── entrances.yml         世界入口登记(world / x / y / z / tier / alive / created)
├── pending-delete.txt    待删除清单(文件句柄释放后于下次启动删除)
├── stamina-refunds.yml   离线体力退款记录
├── diagnostics/
│   ├── failures.log          异常与恢复记录(含原因/堆栈)
│   └── failures.previous.log 上一份诊断日志(约1MB后轮转)
└── templates/
    ├── worlds/<slug>/                    模板世界(平时不加载)
    ├── entrances/<slug>.nbt + .yml       入口结构
    ├── _recovered/                       临时世界(重启时保存在里面的人的改动)
    ├── _deleted/                         已删除的副本模板(保留退路)
    └── _backup/                          被覆盖的旧模板(保存时自动备份)

世界维度

编辑与运行过程中的世界都以独立维度存在,命名如下:

  • nwndtpl_<slug> —— 正在编辑的临时模板世界
  • nwndinst_<slug>_<n> —— 正在运行的副本实例,结束后删除
  • nwndent_<slug> —— 入口搭建世界

当前的存档布局中,所有维度都在同一个存档里(world/dimensions/minecraft/<名字>/), 因此「复制一个世界」等于复制一个维度文件夹,通常不到 1 MB。维度名必须为 ASCII, 中文名只用于界面显示。

已知限制与注意事项

本版沿用现有配置,一个副本一个 YAML、数字房间 ID / 进入 Title、新的首领属性装备分区尚未完整落地; 每人独立通关奖励的完整接入也留在后续版本。以下边界需要服主了解:

现象原因与处理
记录检查点后又破坏该位置自建副本复活时尚未重新核验已记录检查点的签名与安全落脚点;运行中请保留检查点平台
玩家离线时副本结束或服务器重启进本前位置、模式与飞行状态的跨重启恢复尚未完整持久化;自建副本离线结束场景仍需完善
不同插件组合或大量并发长时间压力与全部第三方插件组合未完整验证;先在自己的测试环境验证,再按负载调整并发与预算
保存模板时报错,提示搬成模板失败 卸载世界后文件句柄尚未释放,重命名会失败。插件已改为「重命名失败则递归复制,并把源目录记入待删清单,下次启动清理」
进入服务器后出现在地底 原因为虚空世界的落点过低(位于世界底部附近)叠加服务器重启。新建的虚空世界落点已抬高,且重启前会把仍在编辑器中的人送回主世界。自救方式:/tp @s 0 120 0
结构里存了两座入口 见「入口建筑」一节的已知问题,用「删除这份入口结构」重建
人在编辑世界时服务器重启 该世界会被完整保留到 templates/_recovered/,数据不会丢失;目前没有界面可以恢复,需要手动把文件夹移回 templates/worlds/<slug>/
开本后门推不开 正常行为:本关未清完时门是锁定的
怪物刷到了别的关卡 通常是删除关卡门后没有重排;现已自动重排。若仍出现,请记录关卡号上报
保存后的模板体积异常大 自动框选把多余的东西也框了进去(例如两座入口建筑)。用「删除这份入口结构」重建后再保存

常见问题

问题回答
仍出现副本异常退出,控制台却没找到原因?查看 plugins/NWNDungeon/diagnostics/failures.log及上一份轮转日志。反馈时附版本、报错前后日志和配置片段,不要只贴“异常退出”的聊天提示
首领显示60,配置写了160?先确认完整重启已加载1.5.0,再核对启动或重载回显的配置路径与血量,并重新开局。若仍不一致,附诊断日志检查服务器属性上限与其他插件影响
/dungeon edit 提示已退役? 正常。早期的半成品编辑器已被 /nwd edit 取代
原来的 /dungeon 还能用吗? 能用。内置副本(iron / gold / diamond)保留不变,自建副本是新增的一套
执行 /nwd spawn A 后出现两座建筑 保存的入口结构里包含不止一座,用「删除这份入口结构」重建
自建副本能给玩家用吗? 可以。玩家通过入口进入,与内置副本共用体力、结算等规则