Quest Codex
概要
Quest Codex は、プレイヤーにクエストブックを提供します。メインメニューにはカテゴリー(メインストーリー、サイドクエスト、ダンジョンなど)が並び、各カテゴリーを開くとそのクエストの一覧が表示され、進行中のクエストをクリックすると追跡が始まります。クエスト自体は、公式の TypeWriter Quest エクステンションで作成したものです。Quest Codex は、それらを整理して表示するだけです。
画面はすべて自分で作成します。メニューは GUI エクステンションのレイアウトで、その中にマーカーアイテムを配置します。QUEST_SLOT マーカーはプレイヤーのクエストに、CATEGORY_SLOT マーカーはカテゴリーに、SORT_SLOT マーカーはソートボタンに置き換えられます。マーカーの周囲にあるもの(枠線、タイトル、ボタン、スクロール、ページ)は、すべて通常の GUI コンテンツです。
メニューに加えて、このエクステンションは、再接続後も保持される複数クエストの追跡、中断されたダイアログやシネマティックの復旧、クライアント側の GPS ウェイポイントとロケーターバーのドット、ページから付与できるカスタム Minecraft 実績、BlueMap 上のクエストアイコンを追加します。
機能
- カテゴリー — 順序、アイコン、表示可否、完了クライテリア、ステータスごとのメッセージを持つ、入れ子のカテゴリー。
- クエストの割り当て — クエストをカテゴリーに入れ、順序を設定し、アイコン、名前、ロア、表示可否をステータスごとにオーバーライドします。
- レイアウトプール — 各メニューは GUI レイアウトで設計し、codex が
QUEST_SLOT、CATEGORY_SLOT、TRACKED_QUEST_SLOT、SORT_SLOTのマーカーを埋めます。 - ソートボタン — すべて、未開始、進行中、完了を切り替え、モードごとにラベル、アイコン、ロアを設定できます。
- 複数追跡 — 進行中の複数のクエストを同時に追跡できます。最後のものが、公式 HUD トラッカーの主要クエストになります。
- 追跡中クエストのメニュー — プレイヤーが追跡しているクエスト専用のメニュー。
- ウェイポイント — 目標、座標、エンティティを指す、パケットのみで構成されたテキスト、ブロック、ビーコンのレイヤーと、バニラのロケーターバー版。
- インタラクションの復旧 — 切断後に、進行中だったダイアログやシネマティックを復元します。
- 実績 — パネルで Minecraft の実績タブを定義し、アクションで付与します。
- BlueMap アイコン — ポップアップ付きのクエストアイコンを BlueMap に配置します。
インストール
- Paper または Folia サーバーに TypeWriter をインストールし、Quest Codex が表示するクエストを定義する公式の Quest エクステンションも導入します。
- GUI エクステンション(バージョン 0.18 以降)をインストールします。
- 任意: ウェイポイント用に PacketEvents(TypeWriter ですでに必須)、マップアイコン用に BlueMap をインストールします。
- GitHub リリース(上のサマリーパネルのボタン)から Quest Codex の JAR をダウンロードし、
plugins/Typewriter/extensions/に配置して、サーバーを再起動します。 - プレイヤーに
typewriter.codex.openパーミッションを付与します。下の「パーミッション」を参照してください。
はじめに
カテゴリーが 1 つのクエストログを作成します。
- スタティックページに、Quest Codex Tracking Data エントリーを追加します。追跡中のクエストはここに保存されます。
- マニフェストページに、Quest Codex Global Settings エントリーを追加します。
trackingArtifactにアーティファクトを設定し、maxTrackedQuestsとサウンドを確認します。 categoryをmain_quests、titleを<gold>Main Storyなどに、そしてiconを設定した Quest Category エントリーを追加します。categoryをmain_questsにし、questRefsにクエストを指定した Quest Assignment エントリーを追加します。ordersは任意です。- レイアウトのコンテナとしてのみ使う Open GUI エントリーを 2 つ作成します。1 つ目の
main_guiには、idがmainのsimpleレイアウトを追加し、mainLayoutIdをmain、guiTypeをCUSTOM、sizeをSIZE_36に設定します。buttonPrefixをcodex_button:、buttonTypeをCATEGORY_SLOT、xを 1、yを 1、countを 7、directionをrightにしたアイテムを追加します。2 つ目のquests_guiでは、マーカーをQUEST_SLOTにして同じことを行い、最下段にCLOSEアイテムを追加します。 categoryを空、rowsを4、menuをmain_guiにした Category Menu を追加します。これがメインメニューです。categoryをmain_quests、rowsを4、menuをquests_guiにした 2 つ目の Category Menu を追加します。- Publish してから、ゲーム内で
/tw codexを実行します。カテゴリーをクリックし、続けて進行中のクエストをクリックして追跡します。
インベントリは、Open GUI の size ではなく、Category Menu の rows から構築されます。両者が異なる場合、小さい方の高さを超えるスロットは破棄され、起動時にコンソールで警告されます。
1 つのマーカースロットには、1 つのクエストが表示されます。マーカーをグリッド状に広げるには、count、direction、gap、repeatY を使用します。count 7、direction right、repeatY 3 なら、21 個のクエストスロットになります。direction がない場合、マーカーは 1 スロットのままです。クエストはマーカーを読み取り順に埋め、次のクエストのページへは PAGE_NEXT ボタンで移動します。
仕組み
起動時に、エクステンションはカテゴリー、アサインメント、メニューを読み込みます。プレイヤーがメニューを開くと、レイアウトが解析される前に、レイアウト内の各マーカーがインデックス付きマーカー(QUEST_SLOT#0、QUEST_SLOT#1、...)に書き換えられます。そのため、マーカーは scrollable、paginated、frame レイアウトの中でも、通常のスロットと同じように動作します。描画時に、各マーカーは n 番目のクエストまたはカテゴリーに置き換えられます。
メニュー
メニューを構成するエントリー
開くのは Category Menu エントリーです。その menu フィールドは、レイアウトプール、メインレイアウト、ウィンドウタイプ、サウンドだけを提供する Open GUI エントリーを指します。その Open GUI を自分でトリガーしないでください。
Category Menu の category | メニュー | 含める必要があるマーカー |
|---|---|---|
| 空 | ルートカテゴリーを一覧表示するメインメニュー | CATEGORY_SLOT |
| カテゴリー名 | そのカテゴリーのクエスト | QUEST_SLOT |
@tracked | プレイヤーが追跡しているクエスト | TRACKED_QUEST_SLOT |
定義したすべてのカテゴリーに Category Menu が必要です。ない場合、開いても何も起こらず、起動時にコンソールでその旨が通知されます。
マーカーとボタン
buttonPrefix を codex_button: に、buttonType を次のいずれかに設定します。
buttonType | 役割 |
|---|---|
CATEGORY_SLOT | カテゴリーのアイコン。タイトル、進捗 {completed}/{total}、クリックのヒント、ステータスメッセージが付きます。クリックするとカテゴリーが開きます。 |
QUEST_SLOT | クエスト。アイコンはステータスに従い、名前とロアは、クエスト、アサインメント、Quest Lore エントリーから取得されます。進行中のクエストをクリックすると、追跡または追跡解除されます。 |
TRACKED_QUEST_SLOT | @tracked メニュー内の追跡中クエスト。空のスロットは、自分で設定したアイテムを保持して無反応になるため、それが空の状態の表示になります。 |
SORT_SLOT | ソートボタン。各モードは、Category Menu の sortDisplay で設定します。 |
PAGE_NEXT, PAGE_PREV | クエストまたはカテゴリーの、次または前のページへ移動します。 |
SCROLL_UP, SCROLL_DOWN, SCROLL_LEFT, SCROLL_RIGHT | メニューをスクロールします。 |
BACK | メインメニューがあればそこへ、なければ mainMenuTrigger エントリーへ、それもなければ前のメニューへ戻り、それもなければ閉じます。 |
CLOSE | メニューを閉じます。 |
SORT | 通常のナビゲーションスロットとして配置するソートボタン。 |
ナビゲーションボタンは、設定したアイテム、名前、ロアを保持します。組み込みの矢印、バリア、ホッパーは、スロットにアイテムがない場合にのみ使用されます。
マーカーは、menu で参照する Open GUI に属する simple レイアウトに置いてください。他のレイアウトタイプや、共有シャーシのレイアウトにあるマーカーは、インデックス付けされず、非表示のままになります。
シャーシ、ビュー、タブ
タブ付きのクエストブックを作るには、Category Menu の baseMenuId を共有の Open GUI シェルに設定し、ビュー、タブ、継承と同じように、views、defaultViewId、breadcrumbSeparator を追加します。pushHistoryOnViewSwitch を使うと、「戻る」で前のタブに戻れます。ルートレイアウトに _extended バリアントがあるシャーシは、自動的に 10 行のキャンバスになります。
クエストの表示
- クエストのアイコンは、未開始、進行中、完了のそれぞれで、デフォルトでは本、時計、エメラルドになります。Quest Assignment(
notStartedItem、inProgressItem、completedItem)でステータスごとにオーバーライドできます。 notStartedName、inProgressName、completedNameはクエスト名を置き換え、対応するロアのフィールドは行を追加します。ステータスごとにクエストを非表示にするには、hideWhenNotStarted、hideWhenInProgress、hideWhenCompletedを使用します。- Quest Lore エントリーは、1 つのカテゴリー内または全カテゴリーで、クエストにステータスごとの行を追加します。
- クエストの順序は、まず
orders、次にquestRefsの順に従います。カテゴリーには、サブカテゴリーのクエストも一覧表示されます。 - メインメニューには、トップレベルのカテゴリー(
parentがないもの)のみが表示されます。サブカテゴリーは、/tw codex <category>か、codex:open <category>を実行するボタンで開きます。
設定
Quest Codex Global Settings エントリーには、メニューに紐付かないオプションが含まれます。作成するのは 1 つだけにしてください。ない場合はデフォルト値が使われます。
- サウンド —
soundOnOpen、soundOnSwitch、soundOnClick、soundOnTrack、soundOnUntrack。 - 追跡 —
multiTrackingEnabled、maxTrackedQuests(1 以上)、trackingArtifact。アーティファクトがない場合、追跡中のクエストはメモリ上にのみ保持され、起動時にコンソールで警告されます。アーティファクトはファイルであり、プレイヤーが使い始めたらartifactIdを変更してはいけません。 - 復旧 —
recoveryEnabled、recoveryArtifact、recoveryRetentionSeconds(10 から 86400)、recoveryRestoreDelayTicks(1 から 20)。ダイアログやシネマティックの最中にプレイヤーが退出すると、スナップショットが保存され、プレイヤーが再参加した直後に復元されます。アーティファクトがない場合、復旧は無効です。 - メッセージ —
nowTrackingMessage、stoppedTrackingMessage、questInactiveMessage、questCompletedMessage、trackingLimitMessage({quest}、{max})、categoryProgressMessage({completed}、{total})、およびカテゴリーとクエストのロアのヒント。 - ナビゲーションのラベル —
navLabelsは、組み込みの各ボタン(next、previous、up、down、left、right、back、close、sort)の名前を設定します。タグ付きスロットに独自のアイテムがない場合にのみ使用され、アイテムを持つスロットは独自の名前とロアを保持します。 - 並べ替えボタン —
sortTextsは、各並べ替えモードのラベル(allLabel、notStartedLabel、activeLabel、completedLabel)と、ロア行hintを設定します。sortDisplayでモードにlabelやloreを設定した Category Menu は、その設定を保持します。 - メニューのタイトル —
mainMenuTitleとtrackedQuestsTitleは、対応する Category Menu のtitleが空の場合に使われるタイトルです。 - コマンドエラー —
unknownCategoryMessageは、存在しないカテゴリに対して/tw codex <category>が表示するエラーです({category})。 - メインメニューのフォールバック — メインの Category Menu がない場合に
mainMenuTriggerがトリガーされます。たとえば、ボタンがcodex:open <category>を実行する、独自の Open GUI を指定できます。
ウェイポイントとロケーターバー
Quest Codex Waypoint はオーディエンスエントリーです。オーディエンスフィルターに接続して、誰に表示するかを選択します。その target は、固定座標、ロケート可能な目標、追跡中の目標(選択方式は HIGHEST_PRIORITY、FIRST、CLOSEST、ALL、ONE_PER_QUEST)、またはエンティティです。layers は、テキストレイヤー(プレースホルダー {icon}、{distance}、{distance_m}、{distance_km}、{elevation}、{direction}、{vertical_direction}、{target}、{world_name}、{height_diff}、{eta})、ブロックレイヤー、ビーコンレイヤーを組み合わせます。displayMode は HUD_LOCKED(デフォルト)、WORLD_DIRECTIONAL、TARGET_ANCHORED、ADAPTIVE のいずれかで、各レイヤーでオーバーライドできます。すべてパケットで送信され、エンティティがワールドに保存されることはありません。
Quest Codex Locator Bar は、同じターゲットを、バニラのロケーターバー上のドットとして表示します。これには Minecraft 1.21.6 以降が必要で、3D ウェイポイントと組み合わせて使用します。
実績と BlueMap
- Advancement Definition は実績を記述します。
parentがないものはタブになります。起動時に、ワールドフォルダー内のquestcodex_advancementsというデータパックに書き出され、内容が変更されたときにサーバーがデータをリロードするため、新しいデフィニションには再起動が必要です。実績は、Grant Advancement アクションでのみ獲得できます。 - BlueMap Icon は、起動時に、そのワールドの BlueMap マップに、ラベルとポップアップ付きのマーカーを配置します。
descriptionでは、<objectives>がクエストの目標に置き換えられます。
コマンド
すべてのコマンドは /typewriter のサブコマンドで、通常は /tw と入力し、typewriter.codex.open が必要です。
| コマンド | 説明 |
|---|---|
/tw codex | メインメニューを開きます。category が空の Category Menu、なければ mainMenuTrigger エントリーです。 |
/tw codex tracked | 追跡中のクエストのメニューを開きます。 |
/tw codex <category> | カテゴリーを開きます。タブ補完で、定義済みのカテゴリーが一覧表示されます。 |
メニューのボタンでは、次の内部コマンドも実行できます。codex:open <category>、codex:tracked、codex:quest <quest_id>、codex:nav <action>。独自の GUI メニューのボタンでは、codex:open と codex:tracked を使用してください。
パーミッション
| パーミッション | 許可される内容 |
|---|---|
typewriter.codex.open | すべての /tw codex コマンド。エクステンションはこれをオペレーターのみのデフォルトで宣言しており、パーミッションプラグインに表示されます。/tw codex を使えるグループに付与してください。 |
Category Menu のアクションやメニューボタンからメニューを開く場合、パーミッションは不要です。
プレースホルダー
typewriter エクスパンションを使う PlaceholderAPI のプレースホルダーです。プレイヤーが必要です。
| プレースホルダー | 戻り値 |
|---|---|
%typewriter_total_quests% | 全カテゴリーのクエスト数。 |
%typewriter_total_completed%, %typewriter_total_in_progress%, %typewriter_total_not_started% | プレイヤーにとっての、各ステータスのクエスト数。 |
%typewriter_total_progress% | 完了数と総数。たとえば 15/42。 |
%typewriter_category_<name>% | カテゴリー内のクエスト数。 |
%typewriter_category_<name>_completed%, _in_progress%, _not_started% | そのステータスにあるカテゴリーのクエスト数。 |
%typewriter_category_<name>_progress% | カテゴリーの完了数と総数。 |
%typewriter_codex_tracked_count%, _limit% | 追跡中のクエスト数と上限。 |
%typewriter_codex_tracked_multi_enabled%, _has_any% | true または false。 |
%typewriter_codex_tracked_ids%, _names%, _names_lines% | 追跡中のクエストの ID または名前。カンマ区切り、または 1 行に 1 つ。 |
%typewriter_codex_tracked_primary_id%, _primary_name% | 公式トラッカーが表示する主要クエスト。 |
%typewriter_codex_tracked_has_<quest_id>% | そのクエストが追跡されているかどうか。 |
%typewriter_codex_tracked_<n>_id%, _name%, _status%, _primary% | n 番目(1 から)の追跡中クエストの詳細。ない場合は空。 |
%typewriter_codex_tracked_<n>_objective_count%, _objectives%, _objectives_lines%, _priority% | n 番目の追跡中クエストの、表示対象の目標。 |
<name> はカテゴリー名で、大文字小文字は区別されずに照合されます。詳細は、プレースホルダー、コマンド、パーミッションを参照してください。
エントリー
12 件のエントリー(拡張機能のソースから生成)。
アクション2
- Category MenuCategory Menu Configuration
- Grant AdvancementGrant Advancement
オーディエンス2
- Quest Codex Locator BarQuest Codex Locator Bar
- Quest Codex WaypointQuest Codex Waypoint
アーティファクト2
- Quest Codex Recovery ArtifactQuest Codex Recovery Data
- Quest Codex Tracking ArtifactQuest Codex Tracking Data
マニフェスト6
- Advancement DefinitionAdvancement Definition
- Bluemap IconAdds an icon to BlueMap for a specific quest
- Quest AssignmentQuest Assignment to Category
- Quest CategoryQuest Category
- Quest CodexQuest Codex Global Settings
- Quest LoreQuest Additional Lore
トラブルシューティング
/tw codex が何も起こさない。 category が空の Category Menu がなく、mainMenuTrigger もありません。コンソールには、原因とともに Main menu could not open が記録されます。カテゴリーについては、Quest Category の category と同じ category を持つ Category Menu を作成してください。
メニューが空のまま開く。 起動時にコンソールで報告されます。参照先の Open GUI のどのスロットにも、メニューが必要とするマーカー(CATEGORY_SLOT、QUEST_SLOT、TRACKED_QUEST_SLOT)がない、menu が空か Open GUI でない、レイアウトプールが空、または mainLayoutId がその中にない、のいずれかです。マーカーには buttonPrefix codex_button: が必要です。
下の行のスロットがない。 Category Menu の rows が、Open GUI の size より小さくなっています。両方を同じ行数に設定してください。
クエストが、間に空きスロット 1 つではなく、隣り合って表示される。 gap は間隔のステップです。1 は隣接、2 は空きスロットが 1 つになります。Quest Codex 0.3.0 より前に作成したメニューは gap を余白として使用していたため、値を 2 倍にしてください。装飾との衝突は、Slot overlap の警告として報告されます。
複数のマーカーが 1 つのセルに重なる。 マーカーに count はあるが direction がないか、位置がグリッドの外に出ています。direction を設定してください。
カテゴリーからクエストが消えている。 現在のステータスに対する hideWhen... オプションで非表示になっているか、現在のソートモードでフィルタリングされているか、アサインメントがそれを解決できなかった(コンソールに Quest '...' could not be resolved)かのいずれかです。
再起動後に、追跡中のクエストが消える。 trackingArtifact が空か、その artifactId が変更されています。アクティブでなくなったクエストは、追跡リストから削除されます。
ウェイポイントが表示されない。 ウェイポイントエントリーは、プレイヤーが該当するオーディエンスの中にある必要があり、クエストが追跡中で、目標がロケート可能でなければなりません。{icon} を含むテキストレイヤーは、icon を設定するまで空のままです。
新しい実績がサーバーに認識されない。 デフィニションは起動時に書き出されるため、追加した後は再起動してください。アイコンがアイテムでないデフィニションは、警告とともにスキップされます。