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

Party

招待、GUI メニュー、人数制限、パーティ全員のサーバーワープを備えた一時パーティ。

プライベートv0.2.0ソーシャル
必要TypeWriter0.9.0-beta-177 (BTC build)Quest (TypeWriter extension)GUI (TypeWriter extension)MySQL (TypeWriter extension)任意Redis or Valkey任意

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

概要​

Party を使うと、プレイヤーは短期間のグループを作れます。リーダーがパーティを作成して名前でプレイヤーを招待し、招待されたプレイヤーは /party join <leader> で承諾します。クエスト、ダンジョン、HUD のシステムは、「このプレイヤーと同じパーティにいるのは誰か」を問い合わせられるようになります。リーダーは、パーティ全員をネットワーク内の別のサーバーにワープさせることもできます。

パーティはデータベースには保存されません。メモリ上に存在し、Redis を通じて、ネットワーク内の他のサーバーに複製されます。切断したメンバーはパーティに残るため、サーバーを移動してもパーティは維持され、パーティが終了するのは、メンバーが退出する、キックされる、またはリーダーが解散したときだけです。すべてのサーバーを再起動すると、すべてのパーティが解消されます。

パーティメニューは、Web パネルで作る GUI のメニューです。メンバーはプレイヤーの頭として、保留中の招待はクリックできる頭として表示されます。

機能​

  • 作成、招待、参加、脱退、キック、解散 — コマンド、TypeWriter のアクション、メニューのボタンで利用できます。
  • パーティメニュー — メンバーと招待の画面、ページ送り、タブを備えた 1 つのエントリ。
  • 招待 — チャットでの名前入力、検索フィルター付きの参加画面、60 秒での失効。
  • サイズの制限 — デフォルトの最大人数と、typewriter.party.vip などの権限によるより高い上限。
  • サーバーへのワープ — リーダーが、ネットワーク内のどこにいても、全メンバーを別のバックエンドに送ります。
  • サーバー間のパーティ — 所属、招待、パーティチャットのメッセージが、グループ内のすべてのサーバーに届きます。
  • ストーリーのフック — ファクトで、プレイヤーがパーティにいるかがわかります。
  • プレースホルダー — HUD 向けの、リーダー、ロール、人数、メンバー名、メンバーの体力。
  • 連携 — 協力の島やダンジョンなど、BTC の他の拡張機能が、パーティを作成し、読み取ります。

インストール​

  1. メニューを描画する GUI 拡張機能と、Party が依存関係として宣言している Quest 拡張機能をインストールします。
  2. 任意、複数サーバーの場合: MySQL 拡張機能をインストールし、Redis(または Valkey)を有効にして、すべてのサーバーで同じ redis.group-id と、一意の redis.server-name を設定します。ワープには、プロキシが btc:bridge チャンネルを処理する必要があります。
  3. Party の JAR を plugins/Typewriter/extensions/ に置き、サーバーを再起動します。

party.use はデフォルトで全員に、party.admin はオペレーターに与えられます。

はじめに​

パーティメニューとサイズの制限を作成します。

  1. TypeWriter の Web パネルでページを開き、Party Menu Config エントリを追加します。使われるのはその制限だけです(設定を参照)。maxPartySize を設定し、必要に応じて maxPartySizePermissions も設定します。
  2. Party Menu エントリを追加します。/party は、最初に見つかったものを開きます。
  3. inventoryTitle、inventoryRows、guiType を設定し、layoutPool でレイアウトを作成して、mainLayoutId を設定します。GUI ガイドを参照してください。
  4. views で画面を宣言します(たとえば members と join)。メンバー画面の ID は memberListViewIds に、招待画面の ID は joinListViewIds に列挙します。
  5. buttonType を持つアイテムを追加します。PARTY_MEMBERS、PARTY_JOIN、PAGE_NAV、そして、コマンドを実行するボタンです(メニューを参照)。
  6. パブリッシュして、/party を実行します。

クエストからパーティを開始するには、Create Party アクションを使います。プレイヤーを集めるには、プレースホルダーを使える targetName を指定した Invite Player と、leaderName を指定した Join Party を使います。

ダンジョンとインスタンス

targetServer に、プロキシが認識しているバックエンド名(たとえば dungeon-1)を設定した Warp Party to Server を使います。トリガーできるのは、リーダーだけです。In Party ファクトを criteria として組み合わせると、パーティにいるプレイヤーにだけワープを提供できます。

仕組み​

パーティの変更はすべて、他のサーバーに送られ、そちらはコピーを置き換えます。招待は 60 秒で失効しますが、チェックは 1 分に 1 回なので、招待が持続するのは 60〜120 秒です。リーダーが退出すると、残っている最初のメンバーがリーダーになります。メンバーのいないパーティは削除されます。

設定​

Party Menu Config エントリは任意です。保持するのはパーティのサイズ制限だけで、次のフィールドを使います。

  • maxPartySize — メンバーの最大数のデフォルト。デフォルトは 5 です。
  • maxPartySizePermissions — 権限と最大サイズの対応。リーダーが持つ、一致する最も高いサイズが適用されます。デフォルトは、typewriter.party.vip が 8、typewriter.party.mvp が 12 です。

このエントリがない場合、サイズの制限はありません。パーティメニュー自体はここでは設定せず、Party Menu エントリから提供されます。

Party Artifact は、このバージョンでは、パーティサービスによって読み書きされないため、作成する必要はありません。

Party Menu エントリは、次のようなパーティ固有の動作を持つ GUI のメニューです。

コンテンツパネル。 memberListViewIds に列挙された画面では、各メンバーが、ロールとオンライン状態を示すプレイヤーの頭として表示されます。リーダーの場合、他のメンバーを左クリックするとキックされます。joinListViewIds に列挙された画面では、保留中の各招待が、招待したリーダーの頭として表示されます。左クリックで参加し、右クリックで辞退します。パネルは、contentX(デフォルトは 5)、contentY、contentColumns(デフォルトは 4)、contentRows(デフォルトは 7)で配置します。

ボタン。 次の buttonType の値は、そのまま動作します。

buttonTypeクリック
PARTY_MEMBERSmembers 画面を開きます(party open members)。
PARTY_JOIN同じメニューの join ビューに切り替えます。
PAGE_NAV左クリックで進み、右クリックで戻ります。名前にはページのカウンターが表示されます。1 ページで足りる場合は非表示になります。

次の値は、アクションを割り当てません。自分でアイテムを設定し、コマンドを与えてください。PARTY_INFO、PARTY_CREATE、PARTY_LEAVE、PARTY_DISBAND、PARTY_INVITE、PARTY_CLOSE、PARTY_ACCEPT_INVITE、PARTY_DECLINE_INVITE。たとえば、対応するアイテムで、party create、party leave、party disband を実行します。招待ボタンには、入力された名前が必要です。onInputCommands で party invite {input} を実行する input ダイアログを設定してください。

スロットのコマンド。 アイテムは、party open [view]、party page next|prev|<number>、party info、party create、party leave、party disband、party kick <name>、party invite <name>、party join <leader>、party declineinvite <leader>、party joinsearch <text> を実行できます。これらは、クリックしたプレイヤーとして実行されます。

言語

頭のロアと、一部の管理者向けメッセージは、フランス語です。プレースホルダー <party_role> は、フランス語の Chef、Moderateur、Membre を返します。識別子の LEADER、MODERATOR、MEMBER が必要な場合は、<party_role_raw> を使ってください。

コマンド​

すべてのコマンドに party.use が必要です。エイリアス: /p。引数なしのコマンドは、最初の Party Menu を開き、存在しない場合は何も出力しません。

コマンド説明
/partyパーティメニューを開きます。
/party createパーティを作成し、そのリーダーになります。
/party inviteインベントリを閉じ、チャットにプレイヤー名を入力します。
/party invite <player>プレイヤーを招待します(リーダーのみ)。
/party join <leader>招待されている場合、そのリーダーのパーティに参加します。
/party accept <leader>join と同じです。
/party leave自分のパーティを脱退します。
/party kick <player>メンバーをキックします(リーダーのみ)。
/party disbandパーティを解散します(リーダーのみ)。
/party infoリーダーとメンバーを表示します。
/party admin listアクティブなすべてのパーティを一覧表示します(party.admin が必要)。
/party admin info <player>プレイヤーのパーティを表示します。
/party admin disband <player>プレイヤーのパーティを解散します。そのリーダーがオンラインである必要があります。
/party admin kick <player>プレイヤーを、そのパーティから外します。パーティのリーダーがオンラインである必要があります。

権限​

権限デフォルト許可される内容
party.use全員すべての /party コマンド。メニューのクリックは、これを確認せずに、同じアクションを実行します。
party.adminオペレーター/party admin コマンド。
typewriter.party.vip, typewriter.party.mvpなしより大きなパーティのサイズ。設定エントリの maxPartySizePermissions に列挙されている場合にのみ有効です。これらの名前はデフォルトで、変更できます。

プレースホルダー​

<party_leader> のような、MiniMessage テキスト用の MiniPlaceholders のタグです。インデックスは 0 から始まります。

プレースホルダー返す値
<party_in_party>プレイヤーがパーティにいる場合は 1、そうでなければ 0。
<party_leader>リーダーの名前。
<party_role>Chef、Moderateur、Membre のいずれか。
<party_role_raw>LEADER、MODERATOR、MEMBER のいずれか。
<party_size>メンバー数。
<party_members>メンバー数。
<party_members:index>その位置のメンバー名。
<party_members_exclude:index>その位置のメンバー名(閲覧者を除く)。
<party_list>カンマ区切りのメンバー名。
<party_member_name:index>その位置のメンバー名。
<party_member_uuid:index>そのメンバーの UUID。
<party_member_health:index>このサーバーにオンラインの場合の、そのメンバーの現在の体力。それ以外は 0.0。
<party_member_health_max:index>最大体力。不明な場合は 20.0。
<party_member_health_percent:index>パーセンテージでの体力。

エントリ​

10 件のエントリー(拡張機能のソースから生成)。

アクション7
ファクト1
アーティファクト1
マニフェスト1

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

/party が何もしない。 Party Menu エントリがパブリッシュされていません。/party create のようなサブコマンドは、それがなくても動作します。

「You do not have an invite to this party.」と出る。 招待が 60〜120 秒で失効したか、リーダーの名前のつづりが間違っています。リーダーにもう一度招待してもらい、/party join <leader> を使ってください。

「Party is full! Limit: N」と出る。 リーダーが、Party Menu Config の maxPartySize に達しました。引き上げるか、maxPartySizePermissions に列挙された権限をリーダーに付与してください。設定エントリがない場合、制限はありません。

他のサーバーのメンバーが表示されない。 すべてのサーバーに、空でない同じ redis.group-id、一意の redis.server-name、そして接続された Redis が必要です。group-id がないと、何もブロードキャストされません。

ワープが「Cross-server transport is unavailable.」で失敗する。 Redis が接続されていません。MySQL 拡張機能の設定を確認してください。targetServer は、プロキシが認識しているバックエンド名でなければならず、プロキシが btc:bridge チャンネルを受け付ける必要があります。

Party Menu Config の変更(スロット、ボタン、メッセージ)が効果を持たない。 それらのフィールドは、すでに登録されていない以前のメニューのものです。メニューを設計するには、Party Menu エントリを使ってください。

/party invite の次のチャットメッセージが表示されない。 これは仕様です。名前なしのコマンドは、1 件のチャットメッセージを待ち、それをプレイヤー名として使って、そのプレイヤーを招待します。名前が間違っていると、単にエラーになります。

関連する拡張機能​

  • MySQL — Redis メッセージングと、ワープに使われるプロキシ転送。
  • GUI — パーティメニューが使う、レイアウトとビュー。
  • Friend と Guild — 他のソーシャルシステム。
  • BTC Sky — 協力の島は、メンバーを同じパーティに入れます。
  • Dungeon — ダンジョンのインスタンスは、パーティを使ってプレイヤーをグループ化します。