Codex
概要
Codex は、発見の記録帳です。カテゴリ(モンスター図鑑、伝承の書、場所のリストなど)と、その中のアイテムを定義すると、各アイテムやカテゴリは、TypeWriter の criteria(ファクト、クエストの状態、権限など、criteria がチェックできるあらゆるもの)によって解放されます。ロック中のエントリも、独自のロアとともに表示されたままなので、プレイヤーは、まだ発見していないものを知ることができます。レシピカテゴリも追加でき、プレイヤーがレシピをクリックすると、バニラのクラフトレシピが、小さな作業台のビューで表示されます。
この拡張機能には、フラグメントのシステムも含まれます。プレイヤーが拾うことのできる収集アイテムで、セットにまとめられ、十分な数のフラグメントが集まると、シーケンスが 1 回発火します。すべては TypeWriter のエントリで、Web パネルで作成し、メニューは GUI 拡張機能によって描画されます。
この拡張機能は、BTC ビルドの TypeWriter(BTC Core、Paper/Folia)上で動作し、ここでは参考情報として文書化されています。
機能
- 発見カテゴリ — アイテムをグループ化します。
parentCategoryで、サブカテゴリを入れ子にできます。 - criteria による解放 — カテゴリとアイテムは criteria によって解放されます。ロック中のものには、独自のアイテムとロアを表示できます。
- 達成カウンター — 解放済み、ロック中、合計、パーセントが、カテゴリのアイコンと、プレースホルダーとして利用できます。
- レシピブック —
recipeKeyから、バニラのレシピの材料と完成品を表示します。 - 解放トリガー — カテゴリ、アイテム、レシピがプレイヤーに対して初めて解放されたときにトリガーを発火します。保存されるため、二度発火することはありません。
- 4 つのメニューレイアウト — カテゴリごとに、
PAGINATED、SCROLLABLE、FRAME、SIMPLE。 - グローバルな Codex メニュー — カテゴリのアイコンをマーカーで配置する GUI レイアウト。共通のメニューの土台を継承します。
- 収集可能なフラグメント — アイテムを拾ってフラグメントを集め、グループが完成したときにトリガーを発火します。
- 開くコマンドとアクション — コマンド、ダイアログ、任意のトリガーからカテゴリを開きます。
インストール
- GUI 拡張機能(BTC ビルドでは
GuiAndDialogs)と、TypeWriter の Basic 拡張機能をインストールします。これらがないと、Codex は読み込まれません。 - 任意: クエストの進行からエントリを解放したい場合は、Quest 拡張機能と Quest Codex 拡張機能をインストールします。
- Codex の JAR を
plugins/Typewriter/extensions/に置き、サーバーを再起動します。 - 解放トリガーを使う場合は Codex Unlock アーティファクトを、フラグメントを使う場合は Fragment Storage アーティファクトを追加します。
はじめに
2 つのアイテムを持つ「森の生き物」カテゴリを作成します。
- TypeWriter の Web パネルで manifest ページを開き、Discovery Codex Category エントリを追加します。
categoryにforest_creaturesのような一意の識別子を設定し、title、rows(たとえば3)、iconを設定します。itemSlotRangeに、埋めるスロット(たとえば10-16。番号は 1 から始まります)を設定し、guiLayoutを選びます。itemsに、アイテムを追加します。entryIdをwolf、解放時に表示されるitem、それ以前に表示されるlockedItem、そしてcriteriaに「プレイヤーがオオカミを見た」ことを意味するファクトを設定します。unlockedLoreとlockedLoreを追加します。- static または sequence ページのエントリとして、Open Discovery Codex アクションを追加し、
definitionに自分のカテゴリを設定して、NPC、アイテム、ダイアログの選択肢からトリガーします。/tw codex open forest_creaturesも使えます。 - パブリッシュして、図鑑を開きます。criteria を満たしていないアイテムは、ロックされたままです。
criteria のリストが空のアイテムは、常に解放されています。隠したいアイテムには、すべて criteria を追加してください。
仕組み
カテゴリは、サブカテゴリとレシピカテゴリ(他のカテゴリが、それを parentCategory に指定している場合)か、自身のアイテムのどちらかを表示します。カテゴリの criteria とアイテムの criteria は、プレイヤー向けにメニューが構築されるたびに評価されます。
メニュー
各 Discovery Codex Category は、rows 行(1〜6)を持つ、独立したインベントリメニューです。アイテムは、itemSlotRange(たとえば 1-25。1 から数えます)のスロット、または startSlot から行または列に沿って埋められます。ボタンにはデフォルトがあります。前のページはスロット 0、次のページはスロット 8、情報はスロット 4、戻るはスロット 44 です。デフォルトでは矢印と本を使い、previousButton、nextButton、infoButton、backButton で置き換えられます。戻るボタンは、カテゴリが親から開かれた場合にのみ表示されます。background アイテムは、空いているすべてのスロットを埋めます。
guiLayout フィールドは、アイテムが 1 ページに収まらない場合の配置方法を選びます。PAGINATED(ページボタン)、SCROLLABLE(スクロールボタン)、FRAME(1 行ごとに 1 フレーム)、SIMPLE(すべてを 1 画面に)です。
カテゴリのアイコンの名前とロア(iconName、iconLore、lockedIconLore)では、{unlocked}、{locked}、{total}、{percent} が使え、アイコンが親カテゴリやグローバルメニューに表示されるときに置き換えられます。その他のロアのフィールド(アイテム、情報、ナビゲーションのボタン)は、ヘルプのテキストにプレースホルダーが列挙されていても、書かれたとおりに表示されます。
entryId が Recipe Category の entryId と一致する末端のアイテムは、クリックするとレシピビューを開きます。レシピビューは、craftingGridSlots にクラフトのグリッドを、resultSlot に完成品を表示します。サーバーに登録されていないレシピは、「Recipe not found」という名前のバリアのアイテムを表示します。
Codex Global Menu アクションは、GUI のレイアウトプールから作られたハブを開きます。codex_button:CODEX_CATEGORY マーカーを配置し(繰り返すには count、gap、direction を使います)、各マーカーは、order でソートされたトップレベルのカテゴリで 1 つずつ埋められます。対応するマーカーのないカテゴリは表示されず、カテゴリのないマーカーは空のままになります。CODEX_BACK は戻り、CODEX_INFO、CODEX_PAGE_NEXT、CODEX_PAGE_PREV は、このバージョンでは単なる装飾用のアイテムです。
CODEX_RECIPE マーカーはレシピを表示します。レイアウト内での出現順で N 番目のマーカー(CODEX_CATEGORY と同様)が、N 番目のレシピのアイコンを表示します。すべての Recipe Categories のレシピは 1 つのフラットなリストにまとめられ、カテゴリは order で、レシピはそのリストの順に並びます。解放済みのレシピをクリックすると、詳細ビューが開きます。マーカーよりレシピが多い場合、余ったレシピは表示されません。レシピよりマーカーが多い場合、余ったマーカーは空のままです。
count マーカーでは、gap は間隔ではなくステップです。1 はスロットを並べて配置し、2 はその間に空きスロットを 1 つ入れます。Codex は、共通の GUI の計算式を使います。これは、Quest Codex 0.3.0 以降の Quest Codex マーカーに適用されるのと同じルールのため、古い Quest Codex のメニューからコピーしたレイアウトは、gap を 2 倍にする必要があるかもしれません。レイアウトのリファレンスは、GUI 拡張機能を参照してください。
カテゴリのメニュー自体は、baseMenuId が設定されている場合、共通の土台の中で開くことができます(コンテンツ領域に収まるよう、rows は 3 以下にしてください)。UiCore 拡張機能も、図鑑を表示できます。その Codex 画面は、トップレベルのカテゴリを、カテゴリの識別子と名前から fragment、place、region、item、recipe などのキーワードを探して、4 つのタブ(Bestiary、Items、Places、Fragments)に振り分け、それ以外のものはすべて Bestiary に入れます。
設定
この拡張機能には設定ファイルがありません。状態は 2 つのアーティファクトに保存され、どちらも、変更の数秒後と、TypeWriter がアンロードされるときに保存されます。
- Codex Unlock は、各プレイヤーについて、どの解放トリガーがすでに発火したかを記憶します。
- Fragment Storage は、各プレイヤーが集めたフラグメントを、グループごとに記憶します。
コマンド
| コマンド | 説明 |
|---|---|
/tw codex open <category> [targets] | その category 識別子のカテゴリを、自分または選択したプレイヤーに対して開きます。エイリアス: /tw dcx open。 |
このコマンドには、TypeWriter のコマンドへのアクセス以外に、独自の権限チェックはありません。criteria を満たしていないカテゴリは「This codex is locked」と応答し、不明な識別子は「Unknown category」と応答します。
この拡張機能は、メニューのクリックで使われる内部用の /codexmenu コマンド(category、recipecat、recipe)も登録します。プレイヤーに対してのみ動作し、手で入力するためのものではありません。
プレースホルダー
これらは、discoverycodex エクスパンションの MiniPlaceholders のタグで、プレースホルダーに対応する任意の MiniMessage テキストで使えます。cat を category の識別子に、item をアイテムの entryId に置き換えてください。識別子にはアンダースコアを含められます。
| プレースホルダー | 返す値 |
|---|---|
<discoverycodex_category_unlocked:cat> | プレイヤーにとって解放されている、カテゴリ内のアイテム数。 |
<discoverycodex_category_total:cat> | カテゴリ内のアイテム数。 |
<discoverycodex_category_locked:cat> | プレイヤーにとってロック中のアイテム数。 |
<discoverycodex_category_percent:cat> | 解放されたアイテムのパーセンテージ(0〜100)。 |
<discoverycodex_category_name:cat> | カテゴリエントリの名前。 |
<discoverycodex_item_unlocked:item> | そのアイテムについて true または false。 |
エントリ
10 件のエントリー(拡張機能のソースから生成)。
アクション2
- Codex Global MenuOpen a codex global menu
- Discovery Codex OpenOpen a discovery codex category
アーティファクト2
- Codex Unlock ArtifactStores which codex unlock triggers already fired for each player
- Fragment ArtifactStores player fragment collection data
マニフェスト6
- Discovery Codex CategoryDefines a discovery codex category
- Discovery Codex Recipe CategoryDefines a discovery codex recipe category
- Fragment Collection ConfigGlobal fragment collection settings
- Fragment DefinitionA collectible fragment piece definition
- Fragment GroupA set of fragments to collect together
- Treasure Hunt DefinitionA treasure hunt with progressive hints and compass guidance
トラブルシューティング
拡張機能が読み込まれない。 Codex には、Basic と GUI(GuiAndDialogs)の拡張機能が必要です。TypeWriter の起動ログで、不足している依存関係を確認してください。
解放トリガーがまったく発火しない。 ログに「No CodexUnlockArtifactEntry configured: skipping unlock triggers」と出ています。パブリッシュ済みのページに、Codex Unlock アーティファクトを 1 つ追加してください。これがないと、再起動のたびに報酬が再び与えられないよう、意図的にトリガーがスキップされます。
解放トリガーが 1 回発火したきり、二度と発火しない。 これは仕様です。各トリガーは、プレイヤーごとに 1 回発火し、その記録はアーティファクトに保存されます。もう一度テストするには、新しいプレイヤーを使うか、アーティファクトからそのデータを削除してください。
アイテムが間違ったスロットに入る、または最後のスロットが空になる。 itemSlotRange は 1 から数えます(1-25 は、インベントリのスロット 0〜24 を意味します)。メニューのサイズの外にあるスロットは無視され、スロット数を超えたアイテムは次のページに移ります。
レシピに「Recipe not found」と表示される。 recipeKey は、サーバーに登録されているレシピの、名前空間付きのキー(たとえば minecraft:iron_pickaxe)でなければなりません。他のプラグインが追加したレシピは、それぞれ独自の名前空間を使います。
フラグメントが収集されない。 プレイヤーはアイテムを拾う必要があります。アイテムは customItem(customItem が空の場合は displayItem)と一致している必要があり、ログに「No FragmentArtifactEntry found」と出ていてはいけません。Fragment Storage アーティファクトを追加してください。すでに収集されたフラグメントは、再び消費されません。
グループが完成しない。 requiredCount のデフォルトは 0 で、fragments に列挙されたすべてのフラグメントを意味します。リストの長さを超える数値は、リストの長さに丸められます。グループの groupId は、そのフラグメントの fragmentGroup と同じテキストでなければなりません。
グローバルメニューのマーカーが 1 スロットずつ離れている。 gap はステップなので、マーカーの間に空きスロットを 1 つ入れるには、gap を 2 にしてください。
関連する拡張機能
- GUI — メニューエンジン、レイアウト、マーカー。
- Quest Codex — クエストのメニュー。Codex は任意の相棒です。
- UiCore — 独自のインターフェースで図鑑を表示できます。