跳到主要内容

更新日志

1.2​

  • Dungeon Mob Spawn:新增 lootTable、spawnParticle、随玩家人数缩放(perExtraPlayer、maxCount、playerCountSource)、maxSimultaneous、waves,以及触发器 onWaveCleared 和 onCleared。
  • 新条目 Dungeon Loot Table:由箱子和怪物共用的一张战利品表。
  • Dungeon Loot Chest:新增 lootTableRef,以及可用一个条目放置多个箱子的 additionalLocations(在生成式地下城中被忽略)。
  • Loot Chest Trigger:新增 particleEffect,X、Y、Z 轴分开设置并带中心点。四个 triggerParticle 字段为旧版字段:仅当 particleEffect 未指定粒子时才生效。
  • 新事件 On Dungeon Mobs Cleared。
  • 新条目 Dungeon Restrictions,通过 restrictions 关联到 Dungeon Instance 或 Dungeon Room:禁止鞘翅、船和矿车、末影珍珠、紫颂果与激流三叉戟,可屏蔽命令,并可设置拒绝提示和绕过权限。
  • 需要 GUI(OmniGUI)0.20。 新的 Dungeon Leaderboard Source 使用 GUI 0.20 的排行榜来源约定:旧版 GUI 无法加载副本排行榜。请先更新 GUI。
  • 面向附加组件的 API 破坏性变更: DungeonArtifactData、DungeonStats 和 PlayerDungeonStats 移到了包 btcrenaud.dungeons.core,DungeonArtifactEntry.getPlayerStats 和 DungeonArtifactEntry.update 的签名也已更改。针对 Dungeon 1.1.x 编译的附加组件必须重新编译。在网页面板中搭建的副本不受影响。
  • 统计:每名玩家 22 项统计(造成和承受的伤害、击杀怪物数、死亡、游玩时间、已清理的房间和波次、纪录、单人通关和无死亡通关等)。它们在运行期间累计,按 artifact 为每名成员结算一次,并可跨多个 artifact 求总和。伤害指真正扣掉的生命值,上限为目标当时的生命值。
  • Dungeon Instance:statsMobScope 选择哪些怪物计入统计,MARKED_ONLY(默认,该次运行生成的怪物)或 ANY_MOB_IN_RUN_WORLD。
  • 新增 fact Player Dungeon Statistic,以及占位符 dungeon_stat_<key>(加 _raw 为纯数字)、dungeon_total_<key> 和 dungeon_inst_<id>_<key>。片段 content.dungeon_stats.duration_format 和 content.dungeon_stats.missing_value 决定它们的写法。
  • 新增条目 Dungeon Leaderboard Source,接入 GUI 排行榜的 source 字段(GUI 0.20):artifact、scope(LIFETIME 或 CURRENT_RUN)、rankBy、values、durationFormat、decimals、missingValue 和 unknownName。行标记:{value_<key>}、{value_<key>_raw} 和 {score_raw}。
  • Dungeon Instance:reconnectGrace(默认 2 分钟)。断线的成员在这段时间内保留自己的位置,及时回来就带着侧边栏、隐藏状态和游戏模式继续。超时后他离开运行,重新连接时回到入口位置。参见断线。
  • Dungeon Restrictions:gameMode(可选,例如 ADVENTURE;离开时归还玩家原本的模式;CREATIVE 和 SPECTATOR 会关闭战斗统计)、limitInteractions 配合 allowedInteractions(默认 CHEST、TRAPPED_CHEST 和 BARREL)与 protectedEntities(物品展示框、盔甲架、画),以及 messageRepeatDelay(2 秒)。limitInteractions 还会拒绝放置方块、桶、载具、刷怪蛋、火、骨粉以及对方块使用工具。
  • Dungeon Restrictions:激流和紫颂果现在在点击时就被拒绝,而不只是拒绝其效果。只有绕过权限能豁免玩家:除非该节点被明确设为 false,否则管理员(op)默认拥有它。
  • Dungeon Category:槽位字段 unlockedLore 和 lockedLore 现在是 unlockLore 和 lockLore。用旧名称保存的页面仍可读取;两者同时存在时,新的优先。
  • MMOProfiles:玩家选择档案后,会重新应用返回入口位置和原游戏模式的处理。
  • 修复:runs_left 不再统计让玩家离开运行的死亡(它仍计入 deaths);waves_cleared 只统计定义了 waves 的组;%typewriter_dungeon_stat_current_health% 在运行中显示实时生命值;统计写入器在出错后不会再停止保存;因重载时没有任何成员在线而被关闭的运行,会为缺席的成员统计游玩时间。
  • 现有地下城在使用这些字段之前不会有任何变化。关于击败所有怪物后出现箱子的做法,参见地下城中的实体。

1.1.1​

  • Paper 26.x:WORLD_PER_RUN 模式的副本可能因 The server did not create world 'dungeon_classic_...' 而失败。模板的副本保留了模板的世界 ID(data/paper/metadata.dat),服务器因此将其视为重复世界而拒绝加载。现在副本会获得自己的 ID。

1.1​

  • 下方所述重构的公开版本。自 1.0 起的修复:WORLD_PER_RUN 现在会复制以 Paper 26.x 方式存储的模板世界(dimensions/minecraft/<name>)。

1.0​

这是围绕运行(run)模型对扩展所做的重构。在更新曾使用 0.10 的服务器之前,请参阅迁移说明。

运行与世界​

  • 每次运行现在都有自己的状态机、注册表和日志。启动运行是要么全部成功,要么完全不做:如果某一步失败,什么都不会保留,进入费用会被退还。
  • 三种隔离模式,按副本通过 isolation 设置:SLIME_CLONE、WORLD_PER_RUN、SHARED_WORLD_SLOTS,以及 AUTO(默认)。无法运行的模式会拒绝该次运行。参见运行与世界隔离。
  • 按 Paper 26.x 方式存放的世界(dimensions/minecraft/<name>)现在可被 SHARED_WORLD_SLOTS 找到,并可被 WORLD_PER_RUN 复制;世界准备过程中的问题只会在日志中记录一行,而不是完整的堆栈。
  • typewriter reload 或 Publish 会重新接管正在进行的运行。服务器重启则会干净地结束它们。
  • cooldownSeconds 现在是真正的时间限制:0 或留空表示无限制。
  • 孤立的运行世界会在启动时被清除,并带有保护措施(名称、标记文件、绝不清除已加载的世界)。
  • 统计数据会被写入:每个副本、每位玩家的尝试次数、完成次数和最佳用时。
  • damageMultiplier 和副本的 criteria 现在会生效。

生成型副本​

房间、事件与事实​

  • 菜单会实时刷新(autoRefreshTicks),并在任何大厅发生变化时刷新。
  • 等待计分板生效。DUNGEON_LOBBY_SLOT 标记点用于放置大厅。槽位的 criteria 会针对每位玩家评估。
  • 队伍菜单可以指定它的副本(dungeonInstance);为空的菜单服务所有没有被其他菜单指定的副本。
  • MMOCore、Parties 和 Typewriter 队伍扩展的队伍仅被读取。

箱子​

  • 每位玩家每个箱子一次抽取、visibility(AUTO、PER_PLAYER、SHARED)、onDisappear、lootSelection 和 weightedPicks、箱子动画、依据 yaw 的朝向、CraftEngine 和 Nexo 方块、重载后恢复箱子。

副本中的实体​

玩家文本与新字段​

  • 菜单、大厅、运行侧边栏、战利品箱和启动拒绝的文本是 snippet (content.dungeon_menu., content.dungeon_lobby., content.dungeon_run.sidebar., content.dungeon_chest., content.dungeon_launch.). 默认值不变。 /typewriter dungeon ... 命令的回复同样是 snippet(content.dungeon_command.)。
  • Dungeon Instance 上的新字段 lobbyIdleKickSeconds(默认 120)。
  • Loot Chest Trigger 上的新字段:triggerSoundVolume、triggerSoundPitch、triggerParticleCount、triggerParticleSpread、triggerParticleSpeed。broadcastMessage 接受颜色代码。

命令​

  • 移除了从未起过作用的 start 子命令。命令记录在索引页中。

已知限制​

  • 仅支持 Paper。不支持 Folia。
  • 生成型副本只使用 WORLD_PER_RUN。
  • 副本中的 MythicMobsNPC 过场动画尚未测试。

0.10​

独立构建。房间触发器、两个“in dungeon”事实、NPC 实例和统计已声明,但未生效。