Pets
概要
Pets は、EcoPets にインスパイアされた、収集可能なコンパニオンを追加します。各ペットは、Web パネルで 1 度だけ定義し(Pet Definition)、各プレイヤーがそのコピーを所有します。ペットはトークンアイテムとして配られ、トークンを右クリックすると、プレイヤーのコンパニオンメニューにペットが追加されます。プレイヤーは、メニューから一度に 1 匹のペットを有効にでき、そのペットは、頭上に浮かぶ、隣を歩く、周囲を飛ぶ、のいずれかで付いてきます。
ペットは、飼い主がモブを倒したときや、ストーリーが経験値を付与したときに経験値を獲得し、自分で記述した式またはテーブルに従ってレベルアップします。ペットは、飼い主を攻撃したモブに反撃することができ、TypeWriter のクライテリアで解放される複数のスキンを持てます。
機能
- 3 つの表示モード —
HEADはプレイヤーの頭上に浮かび、GROUNDは隣を歩き、FLYは指定した高さでホバリングします。 - コンパニオンメニュー — 所有しているペットのグリッド、有効化、非表示と表示、詳細、スキンを備えた GUI。
- トークンアイテム — ペットは、レベル、経験値、モード、スキンを保持したアイテムとして、プレイヤー間を移動します。
- 経験値とレベル —
{level} * 100のような式、または明示的なテーブルと、最大レベル。 - 討伐経験値とストーリー経験値 — モブ討伐ごとの経験値と、任意のシーケンスから経験値を付与するアクション。
- 反撃 — 飼い主を傷つけたモブへの、任意の反撃。レベルごとにダメージを設定できます。
- スキン — ペットごとに複数の NPC スキン。それぞれにクライテリア、優先度、メニューアイコンがあります。
- スロットのパーミッション — メニューのスロットをパーミッションでロックして、追加のコンパニオンスロットを販売できます。
- プレースホルダー — 有効なペット、スロット、または任意のペットの、名前、レベル、経験値、状態、所有状況。
- モデル対応 — 地上ペットと飛行ペットは、ModelEngine のモデルを含む、任意のエンティティデフィニションを使用します。
インストール
- メニューを描画する GUI エクステンションをインストールします。
- 任意: ペットにアニメーション付きのモデルを使いたい場合は、ModelEngine と、そのモデルをエンティティデフィニションとして公開する TypeWriter エクステンションをインストールします。
- Pets の JAR を
plugins/Typewriter/extensions/に配置し、サーバーを再起動します。 - 所有しているペットが保存されるように、Pet Storage アーティファクトを作成します。はじめにを参照してください。
はじめに
最初のペットを作成して、プレイヤーに渡します。
- TypeWriter の Web パネルでスタティックページを開き、Pet Storage アーティファクトを追加します。ないと、エクステンションは "No pet_storage entry found" をログに記録し、何も永続化されません。
- Pet Definition を追加します。エントリー自身の
nameがペットの表示名で、そのidがペットの識別子です。 defaultModeを選択します。HEADの場合は、任意で、浮かぶ頭用の base64 のtextureを貼り付けます。GROUNDまたはFLYの場合は、npcに、プレイヤーの隣に生成されるエンティティデフィニションのエントリーを設定します。xpで、maxLevelを設定し、{level}を使ったformula(たとえば{level} * 100)またはlevelsリストのいずれかを設定します。討伐ごとの経験値には、killRewardを設定します。- 任意: 反撃を有効にするには
combat.enabledにチェックを入れ、token(アイテム、その名前とロア、輝き)をカスタマイズします。 - Pets Open Menu アクションを追加し、その
storageに Pet Storage アーティファクトを設定して、NPC、アイテム、コマンドからトリガーします。 - Publish してから、プレイヤーとして
/pets give <pet> 1を実行します。トークンを右クリックし、メニューを開いて、ペットをクリックして有効にします。
ストーリーから経験値を付与するには、amount を指定した Pets Add XP アクションを追加します。経験値は、プレイヤーの有効なペットに入ります。特定のペットを制御するには、pet と action を指定した Pets State を使用します。
ペットを直接解放するアクションはありません。ペットは、/pets give またはメニューの「アイテムに戻す」ボタンから、トークンアイテムとしてプレイヤーに届きます。クエストやショップのコンソールコマンドアクションからこのコマンドを実行すると、解放可能な報酬にできます。
仕組み
プレイヤーが所有できるのは、デフィニションごとに最大 1 匹のペットです。有効にできるペットは一度に 1 匹だけで、別のペットを有効にすると、最初のペットは無効になります。ペットは、バックグラウンドで Pet Storage アーティファクトに保存され、有効なペットは、プレイヤーの参加時に復元されます。
表示モード。
HEADは、headOffsetを適用して、プレイヤーの頭上にペットを表示します。npcが設定されている場合は、そのエンティティが使われます。そうでなければ、透明なアーマースタンドが、textureのプレイヤーヘッドを着用します。GROUNDは、npc(または選択したスキンの NPC)を、プレイヤーの数ブロック後ろに生成し、追従させます。swimModeは、液体の中を泳ぐかどうかを決めます。AUTOはエンティティの能力に従い、ALWAYSとNEVERは強制します。FLYはGROUNDと同じですが、ペットはプレイヤーのflightHeightブロック上空をホバリングします。
GROUND または FLY のペットに NPC がない(またはどのスキンも一致しない)場合、ペットは表示されず、警告がログに記録されます。有効なすべてのペットの上には、レベル付きの名前ラベルが表示されます。モードは、トークンが最初に作成されるときの defaultMode から決まり、そのペットのインスタンスに保持されます。
経験値とレベル。 ペットはレベル 1 から始まります。levels の各エントリーは、あるレベルに到達するために、ペットが累計で獲得している必要がある経験値を示します。たとえば、レベル 2 は 100 XP、レベル 3 は 250 XP です。明示的なエントリーは、式よりも優先されます。式は、{level} を到達すべきレベルに置き換えて評価され、+ - * /、括弧、小数に対応しています。次のレベルへの要件がまったくないペットは、レベルアップしません。
反撃。 combat.enabled の場合、有効で表示されているペットは、飼い主にダメージを与えたプレイヤー以外のモブに、短い遅延の後、攻撃者ごとに 1.5 秒のクールダウンで反撃します。ダメージは、ペットのレベル以下で最も高い levels エントリーの damage です。ない場合は、1.5 に、レベル 1 を超える分、1 レベルごとに 0.5 を加えた値になります。
スキン。 各 skins エントリーは、NPC デフィニション、priority、criteria を指します。ペットは、プレイヤーが選んだスキンのクライテリアが引き続き一致していればそれを使用し、そうでなければ、クライテリアが一致する中で最も優先度の高いスキンを使用します。デフィニションの npc フィールドが、フォールバックのスキンです。スキンエントリーには npc が必要で、ないと無視されます。
メニュー
Pets Open Menu アクションは、"Compagnons" というタイトルの、組み込みのコンパニオンメニューを開きます。所有している各ペットは、レベル、経験値の進行状況、状態を表示するプレイヤーヘッドのアイコンです。左クリックでペットを有効または無効にし、右クリックで詳細画面を開きます。詳細画面には、ステータスが表示され、プレイヤーは、有効化、スキンの選択(ペットに複数のスキンがある場合)、ペットのアイテムへの返却、戻る、を行えます。左下隅のボタンは、有効なペットの表示と非表示を切り替えます。
メニューの設定は、アクションの menu オブジェクトのフィールドです。
slots— ペットが表示されるインベントリのスロット番号。デフォルトは、3 行の 21 スロットです。lockedSlots—slotとpermissionのペア。プレイヤーがそのパーミッションを持っていないスロットには、ロックのマーカーが表示され、ペットを配置できません。maxSlots— 使用するスロット数の上限(デフォルト 21、最小 1)。slotsの先頭からmaxSlots個のエントリーだけが配置され、新しいペットを受け取れます。配置と、プレイヤーが入手できるペットの数を制限するものであり、すでに所有しているペットには影響しません。rows— メニューの高さ。1 から 6。storage— 使用する Pet Storage アーティファクト。
最後に開いたメニューのスロットレイアウトは、プレイヤーデータとともに保存され、トークンがどのスロットを埋められるかを決めます。プレイヤーがすでに maxSlots を超えるスロット(またはメニューの高さの外)に所有しているペットは、非表示にはなりません。メニューの空いているセルに表示され(表示/非表示ボタンの位置には置かれません)、クリックは引き続きそのペット自身のスロットに作用します。該当するペットが空きセルより多い場合、余りは所有されたままで、所有するすべてのペットを一覧表示する共有 Social メニューの Pets ページに表示されます。警告はプレイヤーごとに一度だけログに記録されます。
独自のメニューでの使用。 エクステンションは、任意の GUI メニュー向けに、pets_button: というボタンのプレフィックスを登録します。アイテムの buttonPrefix を pets_button: に、buttonType を次のいずれかに設定します。
buttonType | 表示内容 |
|---|---|
PET_ENTRY | プレイヤーのリストのその位置にあるペット。左クリックで切り替え、右クリックで詳細アイテム用に選択します。 |
PET_DETAIL_INFO | 選択したペットのレベル、経験値、モード。 |
PET_LEVEL_ENTRY | 選択したペットの 1 つのレベルと、その必要経験値および状態。 |
PET_DETAIL_REMOVE | 選択したペットをアイテムに戻すボタン。 |
PET_LIST_NAV, PET_DETAIL_NAV | ペットリストとレベルリスト用のページ矢印。 |
スロットは、pet_menu コマンドである pet_menu activate <slot>、pet_menu deactivate <slot>、pet_menu toggle_visibility、pet_menu details <slot>、pet_menu skins <slot>、pet_menu select_skin <pet> <skin>、pet_menu remove <slot> を実行することもできます。
UiCore がインストールされている場合は、プレイヤーのコンパニオンを読み取って、HUD やメニューページを描画できます。
メニューのテキスト、トークンのロア、ペットの上のラベルは、デフォルトではフランス語です(たとえば "Niveau"、"Compagnons")。トークンの name、lore、noSlotMessage は、ペットごとに編集してください。その他のメニューのテキストは、コード内で固定されています。
コマンド
すべてのサブコマンドに、パーミッション typewriter.pets と、表示されているパーミッションが必要です。ほとんどのサブコマンドは、引数の後に、任意のプレイヤーセレクター [target] を受け付け、他のプレイヤーに対して実行できます。指定しない場合は、実行者自身に対して実行されます。
| コマンド | パーミッション | 説明 |
|---|---|---|
/pets open [target] | typewriter.pets.open | コンパニオンメニューを開きます。 |
/pets activate <pet> [target] | typewriter.pets.activate | 所有しているペットを有効にします。 |
/pets deactivate [target] | typewriter.pets.deactivate | 有効なペットを下げます。 |
/pets show [target] | typewriter.pets.show | 有効なペットを再び表示します。 |
/pets hide [target] | typewriter.pets.hide | 有効なペットを非表示にします。 |
/pets remove <pet> [target] | typewriter.pets.remove | プレイヤーのメニューからペットを削除します。アイテムは返却されません。 |
/pets give <pet> <amount> [target] | typewriter.pets.give | 1 から 64 個のトークンアイテムを付与します。 |
<pet> は、Pet Definition エントリーの ID または名前です。このバージョンでは、引数なしの /pets は何もしません。/pets open を使用してください。
パーミッション
デフォルトで登録されているものはないため、パーミッションプラグインで付与しない限り、オペレーターのみが持っています。
| パーミッション | 許可される内容 |
|---|---|
typewriter.pets | /pets コマンドツリー。 |
typewriter.pets.open | /pets open。 |
typewriter.pets.activate | /pets activate。 |
typewriter.pets.deactivate | /pets deactivate。 |
typewriter.pets.show | /pets show。 |
typewriter.pets.hide | /pets hide。 |
typewriter.pets.remove | /pets remove。 |
typewriter.pets.give | /pets give。 |
lockedSlots のパーミッション | 対応するメニューのスロットを解放します。名前は自分で決めます。 |
プレースホルダー
Pets は、TypeWriter のプレースホルダーエントリー Pets Placeholder を 1 つ公開しています。1 度だけ作成してください。タグは <typewriter_ENTRY:...> で、ENTRY はそのエントリーの小文字の名前または ID です。たとえば、エントリー名が pets_placeholder の場合は <typewriter_pets_placeholder:active:name> になります。
| 引数のパス | 戻り値 |
|---|---|
active | 有効なペットの名前。ない場合は空。 |
active:name, active:id | 有効なペットの名前と ID。 |
active:level, active:xp, active:max_level | レベル、経験値、最大レベル。 |
active:next_xp | 次のレベルに必要な経験値。最高レベルでは Max。 |
active:damage | 現在のレベルでの反撃ダメージ。 |
active:status | active または inactive。 |
active:visibility | hidden または visible。 |
active:mode | head、ground、fly。 |
slot:<index>:name, id, level, xp, next_xp, max_level, damage, visibility, mode | そのメニュースロットにあるペットの、同じフィールド。 |
slot:<index>:status | active、inactive、empty。 |
pet:<id>:name, description, max_level, xp_per_kill, default_mode, combat, texture | Pet Definition のフィールド。 |
pet:<id>:owned | プレイヤーにとって true または false。 |
pet:<id>:level, xp, next_xp, visibility, mode, damage | そのペットの、プレイヤーのコピー。所有していない場合は空。 |
pet:<id>:status | active、inactive、unowned。 |
エントリー
6 件のエントリー(拡張機能のソースから生成)。
アクション3
- Pets Add XPGrant experience to a pet
- Pets Open MenuOpen the pet selection menu
- Pets StateChange the state of a pet
プレースホルダー1
- Pets PlaceholderExpose companion placeholders
アーティファクト1
- Pet StoragePersist companion data
マニフェスト1
- Pet DefinitionConfigure a companion pet
トラブルシューティング
再起動後にペットが失われる。 Pet Storage アーティファクトが存在しないか、メニューアクションに storage がありません。ログに "No pet_storage entry found. Companion data will not persist until one is created." と表示されます。
トークンで、メニューがいっぱいと表示される。 そのプレイヤーにとって、メニューのすべてのスロットが埋まっているか、ロックされています。slots にスロットを追加するか、ロックされたスロットのパーミッションを付与してください。メッセージは、トークンの noSlotMessage です。
"Ce familier est déjà présent dans ton menu." プレイヤーが所有できるのは、各ペットのコピー 1 つです。同じデフィニションの 2 つ目のトークンは使用できません。
GROUND または FLY のペットが現れない。 ログに "Unable to summon ground pet" と表示されます。デフィニションに npc を設定するか、少なくとも 1 つのスキンに、クライテリアがプレイヤーに一致する npc を設定してください。エンティティデフィニションのエントリーが存在することも確認してください。
ペットがレベルアップしない。 ペットには、次のレベルへの要件が必要です。levels のエントリーか formula のいずれかです。評価できない式は、要件なしとして扱われます。数値、{level}、+ - * /、括弧のみを使用していることを確認してください。
/pets が何も出力しない。 /pets open を使用してください。すべてのサブコマンドには typewriter.pets と、それぞれのパーミッションが必要で、これらのパーミッションはデフォルトでは付与されていません。
スキンがロックされている("???")と表示される。 その criteria がまだ一致していません。依存しているファクトやクエストを確認してください。