跳到主要内容

Dungeon

Dungeon 扩展提供了一个完整的框架,用于创建和管理实例化地牢,支持基于多边形的房间检测、全局/队伍菜单、战利品箱和队伍同步。

功能

  • 实例化世界 — 每次地牢开局都会创建专属世界,采用基于模板的生成。
    • 房间与触发器 — 基于多边形的房间,带 onEnter/onLeave 触发器、优先级和条件。
    • 菜单系统 — 全局地牢浏览器 + 队伍大厅,界面布局可完全自定义。
    • 战利品箱 — 随机箱子,带 NPC 锚点、手动触发器和客户端虚拟方块。
    • 队伍系统 — 内置带准备/未准备状态的大厅。可选择接入 MMOCore、Parties 的适配器。
    • 房间编辑器 — 游戏内可视化房间编辑器,带粒子边缘、节点操作和工具栏。

权限

Permission说明
typewriter.dungeon.admin管理地牢和房间编辑器。

依赖

Extension是否必需用途
GUI Extension必需所有菜单都使用 GUI 布局系统(layoutPoolmainLayoutId)。缺少它则任何菜单都无法打开。
QuestExtension必需任务集成的运行时依赖(Ref<QuestEntry>)。
PartyExtension可选外部队伍插件(Parties、MMOCore)。Dungeon 内置了可独立运行的大厅。
PlaceholderAPI可选用于消息中 @Placeholder 占位符的解析。

架构

条目

快速开始指南

第 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%已格式化的最佳完成时间(每位玩家的产物)。