メインコンテンツまでスキップ

Codex

解放可能なカテゴリ、レシピブック、収集可能なフラグメントを備えた発見コーデックス。

プライベートv0.0.3クエストとストーリー
必要TypeWriter0.9BasicGUIQuest任意Quest Codex任意

BornToCraft ネットワーク向けに作られた拡張機能です。参照用にドキュメント化されており、配布されていません。

概要​

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 レイアウト。共通のメニューの土台を継承します。
  • 収集可能なフラグメント — アイテムを拾ってフラグメントを集め、グループが完成したときにトリガーを発火します。
  • 開くコマンドとアクション — コマンド、ダイアログ、任意のトリガーからカテゴリを開きます。

インストール​

  1. GUI 拡張機能(BTC ビルドでは GuiAndDialogs)と、TypeWriter の Basic 拡張機能をインストールします。これらがないと、Codex は読み込まれません。
  2. 任意: クエストの進行からエントリを解放したい場合は、Quest 拡張機能と Quest Codex 拡張機能をインストールします。
  3. Codex の JAR を plugins/Typewriter/extensions/ に置き、サーバーを再起動します。
  4. 解放トリガーを使う場合は Codex Unlock アーティファクトを、フラグメントを使う場合は Fragment Storage アーティファクトを追加します。

はじめに​

2 つのアイテムを持つ「森の生き物」カテゴリを作成します。

  1. TypeWriter の Web パネルで manifest ページを開き、Discovery Codex Category エントリを追加します。
  2. category に forest_creatures のような一意の識別子を設定し、title、rows(たとえば 3)、icon を設定します。
  3. itemSlotRange に、埋めるスロット(たとえば 10-16。番号は 1 から始まります)を設定し、guiLayout を選びます。
  4. items に、アイテムを追加します。entryId を wolf、解放時に表示される item、それ以前に表示される lockedItem、そして criteria に「プレイヤーがオオカミを見た」ことを意味するファクトを設定します。unlockedLore と lockedLore を追加します。
  5. static または sequence ページのエントリとして、Open Discovery Codex アクションを追加し、definition に自分のカテゴリを設定して、NPC、アイテム、ダイアログの選択肢からトリガーします。/tw codex open forest_creatures も使えます。
  6. パブリッシュして、図鑑を開きます。criteria を満たしていないアイテムは、ロックされたままです。
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
アーティファクト2
マニフェスト6

トラブルシューティング​

拡張機能が読み込まれない。 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 — 独自のインターフェースで図鑑を表示できます。