Dungeon
Dungeon 扩展提供了一个完整的框架,用于创建和管理实例化地牢,支持基于多边形的房间检测、全局/队伍菜单、战利品箱和队伍同步。
功能
- 实例化世界 — 每次地牢开局都会创建专属世界,采用基于模板的生成。
- 房间与触发器 — 基于多边形的房间,带 onEnter/onLeave 触发器、优先级和条件。
- 菜单系统 — 全局地牢浏览器 + 队伍大厅,界面布局可完全自定义。
- 战利品箱 — 随机箱子,带 NPC 锚点、手动触发器和客户端虚拟方块。
- 队伍系统 — 内置带准备/未准备状态的大厅。可选择接入 MMOCore、Parties 的适配器。
- 房间编辑器 — 游戏内可视化房间编辑器,带粒子边缘、节点操作和工具栏。
权限
| Permission | 说明 |
|---|---|
typewriter.dungeon.admin | 管理地牢和房间编辑器。 |
依赖
| Extension | 是否必需 | 用途 |
|---|---|---|
| GUI Extension | 必需 | 所有菜单都使用 GUI 布局系统(layoutPool、mainLayoutId)。缺少它则任何菜单都无法打开。 |
| QuestExtension | 必需 | 任务集成的运行时依赖(Ref<QuestEntry>)。 |
| PartyExtension | 可选 | 外部队伍插件(Parties、MMOCore)。Dungeon 内置了可独立运行的大厅。 |
| PlaceholderAPI | 可选 | 用于消息中 @Placeholder 占位符的解析。 |
架构
条目
- 定义 — Dungeon Instance:规则、花费和队伍配置。Category:在菜单中分组地牢。Room:带进入/离开触发器的多边形占地。Room Config:房间集合 + 出生点。Loot Chest:随机奖励容器。
- 动作 — Global Menu:浏览所有地牢。Party Menu:大厅协调。Enter:玩家加入逻辑。Leave:玩家离开逻辑。Close:关闭实例。Loot Chest Trigger:手动激活箱子。
- 事实 — InDungeon Fact:检查玩家是否处于地牢中。InDungeonInstance Fact:检查特定地牢。
快速开始指南
第 1 步 — 定义房间
使用 /dungeon room my_room edit 进入可视化房间编辑器。放置节点以形成多边形边界。用青柠色染料保存。
dungeon_room:
id: "boss_room"
name: "Boss Arena"
nodes:
- {x: 10, y: 64, z: 10}
- {x: 20, y: 64, z: 10}
- {x: 20, y: 64, z: 20}
- {x: 10, y: 64, z: 20}
priority: 1
onEnter:
- "boss_spawn_trigger"
第 2 步 — 将房间分组到配置中
dungeon_room_config:
id: "dungeon_layout"
name: "Default Layout"
rooms:
- "boss_room"
- "entrance_room"
spawnPoint:
x: 15
y: 65
z: 15
world: "dungeon_template"
第 3 步 — 定义地牢实例
dungeon_instance:
id: "ancient_temple"
name: "Ancient Temple"
templateWorld: "dungeon_template"
roomConfigurations:
- "dungeon_layout"
minPartySize: 1
maxPartySize: 4
cooldownSeconds: 300
第 4 步 — 创建类别和菜单
dungeon_category:
id: "main_dungeons"
name: "Main Dungeons"
instances:
- dungeonInstance: "ancient_temple"
unlockedItem: STONE_BRICKS
unlockedName: "<gold>Ancient Temple</gold>"
unlockedLore:
- "<gray>Players: {players}/{max}"
dungeon_global_menu:
id: "dungeon_hub"
category: "main_dungeons"
inventoryTitle: "<bold><gold>⚔ Dungeons</gold></bold>"
layoutPool:
- id: "main"
type: simple
items: []
第 5 步 — 触发菜单
从任意动作、命令、NPC 对话或条目触发器:
action:
type: dungeon_global_menu
id: "open_dungeons"
globalMenu: "dungeon_hub"
或通过命令:/dungeon global-menu main_dungeons
命令
| 命令 | 说明 |
|---|---|
/dungeon global-menu <category> | 打开全局地牢浏览器 |
/dungeon party-menu <instance> | 打开特定实例的队伍大厅 |
/dungeon room <room> edit | 进入可视化房间编辑器 |
/dungeon room <room> addvertex | 在目标方块添加节点 |
/dungeon room <room> removevertexat <index> | 按索引移除节点 |
/dungeon room <room> save | 保存房间并退出编辑器 |
/dungeon room <room> cancel | 取消编辑 |
占位符
所有占位符都使用前缀 %typewriter_dungeon_%。
| 占位符 | 说明 |
|---|---|
%typewriter_dungeon_players% | 当前地牢中的玩家数量。 |
%typewriter_dungeon_attempts% | 该地牢的总尝试次数(每位玩家的产物)。 |
%typewriter_dungeon_completions% | 完成次数(每位玩家的产物)。 |
%typewriter_dungeon_best_time% | 已格式化的最佳完成时间(每位玩家的产物)。 |