Dungeon
Dungeon 拡張は、ポリゴンベースの部屋検出、グローバル/パーティメニュー、戦利品チェスト、パーティ同期を備えた、インスタンス化ダンジョンを作成・管理するための包括的なフレームワークを提供します。
機能
- インスタンス化ワールド — ダンジョンの各プレイごとに、テンプレートベースの生成で専用ワールドが作成されます。
- 部屋とトリガー — onEnter/onLeave トリガー、優先度、条件を備えたポリゴンベースの部屋。
- メニューシステム — グローバルなダンジョンブラウザー + パーティロビー。UI レイアウトを完全にカスタマイズできます。
- 戦利品チェスト — 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% | フォーマットされた最速クリアタイム(プレイヤーごとのアーティファクト)。 |