Profiles
概要
Profiles は、同じアカウントで、各プレイヤーに複数の独立したキャラクターを提供します。プロファイルを切り替えると、プレイヤーのインベントリ、エンダーチェスト、経験値、体力、満腹度に加えて、TypeWriter のファクトも入れ替わるため、クエストの進行状況、アンロック、カウンターは、キャラクターごとに別々になります。BTC Sky などの他の BTC エクステンションは、独自のデータを有効なプロファイルに紐付けます。
プロファイルは、Web パネルで設計するメニューから作成し、選択します。サーバーは、プレイヤーが移動、建築、戦闘、チャットをする前に、プロファイルの選択を強制できます。データは、MySQL ブリッジが有効な場合はデータベースに保存され、ネットワーク内のすべてのサーバーでプロファイルを利用できるようになります。そうでない場合は、ファイルに保存されます。
このシステムは、サーバーのゲームモード(mysql.game-mode.current)に紐付いています。プレイヤーは、ゲームモードごとに別々のプロファイルのリストを持ちます。
機能
- 別々のキャラクター — プロファイルごとの、インベントリ、防具、オフハンド、エンダーチェスト、レベル、経験値、体力、満腹度、隠し満腹度。
- 別々のストーリー状態 — TypeWriter のファクトは、切り替え時に保存され、プロファイルに対して復元されます。
- プロファイルメニュー — プロファイルごとに 1 スロットを持つ GUI。有効、無効、空き、ロック済みのスロット用のテンプレートがあります。
- 強制選択 — プロファイルが有効になるまで、プレイヤーは、移動、インタラクト、破壊、設置、ドロップ、戦闘、チャットができません。
- ソロとコープ — プロファイルは、ソロまたはコープ(BTC Sky の共有アイランド)として作成され、コープのないゲームモードでは、この質問はスキップされます。
- 上限 — デフォルトの最大数と、パーミッションごとのより高い上限。
- 切り替えの保護 — 切り替え間のクールダウンと、他のエクステンションがキャンセルできるイベント。
- エントリー — メニューを開く、作成、切り替え、名前の変更、削除、保存のアクション、プロファイルの状態に関するファクト、イベント。
- サーバー間 — プロファイルとそのデータは、MySQL ブリッジを通じて共有されます。
- プレースホルダー — メニューと HUD 用の、名前、ID、数、上限、プロファイルごとの詳細。
インストール
- メニューを描画する GUI エクステンションをインストールします。Basic エクステンションは、依存関係として宣言されています。
- 推奨: MySQL エクステンションをインストールして、有効にします(
mysql.enabled: true)。ない場合、プロファイルはファイルに保存され、サーバー間では共有されません。 - Profiles の JAR を
plugins/Typewriter/extensions/に配置し、サーバーを再起動します。 plugins/Typewriter/mysql/config.ymlのprofilesセクションを編集します。設定を参照してください。Profiles は、データベースを使用しない場合でも、MySQL エクステンションの設定ファイルから設定を読み取ります。- はじめにで説明しているメニューエントリーを作成します。
はじめに
新規プレイヤーが完了しなければならない、プロファイル選択を設定します。
- TypeWriter の Web パネルでページを開き、Profile Menu Config エントリーを追加します。
/profileは、最初に見つかったものを開き、存在しない場合は何もしません。 inventoryTitle、inventoryRows、guiTypeを設定します。layoutPoolでレイアウトを構築し、mainLayoutIdを設定します。GUI ガイドを参照してください。- プロファイルを表示したい場所に、
buttonPrefixがprofile_button:、buttonTypeがPROFILE_SLOTのアイテムを配置します。各マーカーは 1 つのプロファイルを表示し、左から右、上から下の順に読み取られます。プレイヤーの上限内でプロファイルがないスロットにはcreateProfileTemplateが、上限を超えるスロットにはmaxProfilesTemplateが表示されます。 defaultMaxProfilesを設定し、必要に応じてpermissionLimitsも設定します。- 作成に使用する 2 つの GUI ページを、Open GUI エントリーとして、ID
profile_create_chooser(ソロまたはコープの選択)と、コープのないゲームモード用のprofile_create_soloで作成します。これらのページのボタンは、profile create soloまたはprofile create coopを実行し、ソロ専用のモードではprofile createだけを実行します。 plugins/Typewriter/mysql/config.ymlで、profiles.force-profile-selection(デフォルトはtrue)とprofiles.coop-supportedを確認します。- Publish してサーバーに参加し、プロファイルを選択または作成します。
NPC やアイテムからは、Switch Profile Action または Open Profile Menu Action を使用します。切り替えアクションや、入力したコマンドによる切り替えに反応するには、Profile Switched Event を使用します。
クライテリアで、Profile Count Fact と Is Profile Active Fact ファクトを使用します。たとえば、Can Create Profile Fact が 1 の間だけ、「プロファイルを作成」ボタンを表示します。
仕組み
切り替え時に、エクステンションはクールダウンを確認し、その後、キャンセル可能な切り替え前イベントを発火して、ゲームモードが拒否できるようにします(たとえば、戦争中やミニゲーム中)。次に、プレイヤーの現在の状態をキャプチャしてリポジトリに書き込み、プレイヤーの TypeWriter のファクトとインベントリをクリアして、対象のプロファイルのデータを復元します。有効なプロファイルの状態は、プレイヤーが退出するときにも保存されます。
保存される内容は、設定によって決まります。インベントリとエンダーチェスト(save-inventory、save-ender-chest)と、Minecraft の統計(save-statistics、サイズが大きいためデフォルトではオフ)です。レベル、経験値、体力、満腹度、TypeWriter のファクトは、常に保存されます。
ファクトが入れ替わるため、ファクトに保存されたものはすべて、プロファイルに属します。他のエクステンションのデータは、MySQL の設定にある、それぞれの profile-mode に従います。per-profile のデータはプロファイルごとに別々に保持され、shared のデータはすべてのプロファイルで共通です。
設定
Profiles には、独自の設定ファイルはありません。設定は、MySQL エクステンションが作成する plugins/Typewriter/mysql/config.yml の、profiles セクションにあります。
| キー | 同梱ファイルでのデフォルト | 意味 |
|---|---|---|
profiles.enabled | true | プロファイルシステムをオンにします。 |
profiles.max-profiles | 2 | Profile Menu Config エントリーがない場合の、プレイヤーごとの最大プロファイル数。エントリーの defaultMaxProfiles がこれを置き換えます。 |
profiles.default-profile-name | Principal | 自動作成されるプロファイルの名前。 |
profiles.save-statistics | true | Minecraft の統計をプロファイルごとに保存します。大量のストレージを使用します。 |
profiles.save-inventory | true | インベントリをプロファイルごとに入れ替えます。 |
profiles.save-ender-chest | true | エンダーチェストをプロファイルごとに入れ替えます。 |
profiles.require-permission | false | プロファイルの作成に typewriter.profiles.create を必須にします。 |
profiles.auto-create-default | true | 最初の参加時に、デフォルトのプロファイルを作成します。coop-supported が false の場合にのみ機能します。 |
profiles.force-profile-selection | true | プロファイルが有効になるまで、プレイヤーをブロックします。 |
profiles.switch-cooldown-seconds | 60 | プレイヤーの 2 回の切り替えの間の最小遅延。0 で無効になります。 |
profiles.coop-supported | true | このゲームモードにコープのプロファイルがあるかどうか。false の場合、ソロかコープかの質問はスキップされ、すべてのプロファイルがソロになります。 |
profiles.creation-menu-entry-id | 空 | プロファイルを作成するために開かれる GUI ページの ID。空の場合は、コープが対応しているときは profile_create_chooser、そうでなければ profile_create_solo になります。 |
上記の値は、同梱ファイルのものです。キーがない場合の組み込みのフォールバックは異なる(max-profiles は 5、save-statistics は true、auto-create-default は false)ため、ファイルにはキーを残してください。
ストレージ。 mysql.enabled: true かつ profiles.enabled: true の場合、プロファイルはテーブル typewriter_profiles に保存されます。そうでない場合は、アセットとして profiles/<game mode>/<player uuid>.json に保存されます。古い Profile Storage Artifact アーティファクトに保存されていたプロファイルは、起動時に自動的に新しいストレージにコピーされます。
メニュー
Profile Menu Config エントリーが、メニューを記述します。プロファイルをクリックするとそのプロファイルに切り替わり、Shift + 左クリックで削除され(deleteConfirmation がオフでない限り、先に確認画面が開きます)、空きスロットをクリックすると作成ページが開きます。プロファイルを作成するときは、金床で名前を入力します。タイトル、名前、ロアでは、{profile_name}、{profile_id}、{created_date}、{last_used}、{level}、{exp}、{health}、{food}、{profile_count}、{max_profiles} を使用できます。
buttonPrefix が profile_button: のボタンアイテムは、PROFILE_SLOT(1 つのプロファイル)と、マーカーの INFO と CLOSE に対応します。後者は、それぞれ profile info と gui:close を実行します。
スロットは、クリックしたプレイヤーとして、profile open、profile select <id>、profile create solo|coop、profile delete <id> を実行できます。
メニューのデフォルトのテキスト、メッセージ、クールダウンのメッセージは、フランス語です。メニューエントリーで変更してください。
コマンド
すべてのコマンドに profiles.use が必要です。エイリアス: /profil、/profiles。
| コマンド | 説明 |
|---|---|
/profile | プロファイルメニューを開きます。 |
/profile menu | プロファイルメニューを開きます。 |
/profile select <id> | プロファイルに切り替えます。 |
/profile create solo または coop | プロファイルを作成して有効にします。名前は金床で入力します。モードを指定しない場合は、コープのないゲームモードのみ。 |
/profile delete <id> [confirm] | 有効でないプロファイルを削除します。deleteConfirmation がオンの場合、confirm を付けない限り、先に確認画面が開きます。 |
/profile admin list <player> | オンラインのプレイヤーのプロファイルを一覧表示します(profiles.admin が必要)。 |
/profile admin create <player> <name> | プレイヤーのソロプロファイルを作成します。 |
/profile admin delete <player> <id> | プレイヤーのプロファイルを削除します。 |
/profile admin switch <player> <id> | プレイヤーをプロファイルに切り替えます。 |
/profile admin rename <player> <id> <name> | プロファイルの名前を変更します。 |
/profile headless list, select <id>, create <name> | メニューなしで、自分のプロファイルを管理します(profiles.headless が必要)。 |
メニューリスナーは、プレイヤーが入力した /profile を、コマンドツリーより先に処理します。select、create、delete、メニューを開く操作に対応し、それ以外は無視します。そのため、/profile admin ... と /profile headless ... は、コンソールから、または /profil と /profiles のエイリアスを通じて、確実に動作します。
パーミッション
| パーミッション | デフォルト | 許可される内容 |
|---|---|---|
profiles.use | 全員 | /profile コマンド。 |
profiles.admin | オペレーター | /profile admin。 |
profiles.headless | 誰にもなし | テストボットのような、画面のないクライアント向けの /profile headless。 |
profiles.switch.bypasscooldown | 誰にもなし | クールダウンなしで切り替えます。 |
typewriter.profiles.create | 誰にもなし | profiles.require-permission が true の場合に、プロファイルを作成します。 |
permissionLimits のパーミッション | 自分で決定 | プロファイルの上限を引き上げます。最も高い上限が優先されます。 |
プレースホルダー
MiniMessage テキスト用の MiniPlaceholders のタグです。参照は、リスト内の位置(数字、0 から)またはプロファイル ID です。
| プレースホルダー | 戻り値 |
|---|---|
<profile_active_id>, <profile_active_name> | 有効なプロファイルの ID と名前。 |
<profile_active> | プロファイルが有効な場合は 1。参照を付けた <profile_active:0> は、そのプロファイルが有効なものかどうかを示します。 |
<profile_count> | プロファイルの数。 |
<profile_max> | プレイヤーの最大プロファイル数。 |
<profile_can_create> | プレイヤーがもう 1 つプロファイルを作成できる場合は 1。 |
<profile_remaining> | 作成可能な残りのプロファイル数。 |
<profile_friend_count> | フレンドの数。Friend エクステンションがない場合は 0。 |
<profile_enabled> | システムがオンの場合は 1。 |
<profile_name:ref>, <profile_id:ref> | プロファイルの名前と ID。 |
<profile_created:ref>, <profile_last_used:ref> | dd/MM/yyyy HH:mm 形式の日付。 |
<profile_created_timestamp:ref>, <profile_last_used_timestamp:ref> | エポックミリ秒。 |
<profile_level:ref>, <profile_exp:ref> | レベルと、パーセンテージで表した経験値の進行状況。 |
<profile_health:ref>, <profile_food:ref> | 保存された体力と満腹度。 |
エントリー
20 件のエントリー(拡張機能のソースから生成)。
アクション6
- Create Profile ActionCreates a new profile for the player
- Delete Profile ActionDeletes a specific profile
- Open Profile Menu ActionOpens the profile selection menu for the player
- Rename Profile ActionRenames a specific profile
- Save Profile ActionSaves the current profile state
- Switch Profile ActionSwitches the player to a specific profile
イベント5
- Profile Created EventTriggered when a player creates a new profile
- Profile Deleted EventTriggered when a player deletes a profile
- Profile Loaded EventTriggered when a player's profile is loaded on join
- Profile Saved EventTriggered when a player's profile is saved
- Profile Switched EventTriggered when a player switches profiles
ファクト7
- Can Create Profile FactReturns 1 if player can create more profiles, 0 otherwise
- Has Active Profile FactReturns 1 if player has an active profile, 0 otherwise
- Is Profile Active FactReturns 1 if the specified profile is active, 0 otherwise
- Max Profiles FactReturns the maximum number of profiles allowed per player
- Profile Coop Enabled FactReturns 1 if the active profile was created as a coop profile
- Profile Count FactReturns the number of profiles a player has
- Profiles Enabled FactReturns 1 if the profile system is enabled, 0 otherwise
アーティファクト1
- Profile Storage ArtifactStores player profiles with separate inventories and data
マニフェスト1
- Profile Menu ConfigConfiguration for the profile selection menu
トラブルシューティング
/profile が何も起こさない。 Profile Menu Config エントリーがありません。作成して Publish してください。
新規プレイヤーが動けず、チャットもできない。 profiles.force-profile-selection が true で、有効なプロファイルがありません。プレイヤーは参加後に作成ページへ移動されます。GUI エントリー profile_create_chooser(または profile_create_solo、あるいは creation-menu-entry-id)が存在することを確認してください。ロックを無効にするには、このオプションを false にします。
"Choisissez d'abord Solo ou Coop dans le menu des profils." 強制中のプレイヤーが、コマンドを試みました。プロファイルが有効になるまで、/profile ... と作成ページのコマンドだけが許可されます。
"Vous devez attendre N s avant de changer à nouveau de profil." 切り替えのクールダウンが進行中です。profiles.switch-cooldown-seconds を下げるか、profiles.switch.bypasscooldown を付与してください。
最初の参加時に、デフォルトのプロファイルが作成されない。 auto-create-default が機能するのは、coop-supported が false の場合のみです。コープがある場合、プレイヤーはソロかコープを選ぶ必要があり、ログに "No implicit profile was created; disable the setting." と表示されます。
サーバー間でプロファイルが異なる。 すべてのサーバーで、同じデータベースとゲームモードで、MySQL エクステンションが有効(mysql.enabled: true)になっている必要があります。ない場合、プロファイルはローカルのファイルにあります。MySQL が有効でもデータソースがない場合、ログに "MySQL enabled for profiles but DataSource not found. Falling back to JSON." と表示されます。
切り替え後にプレイヤーがアイテムを失う。 save-inventory と save-ender-chest を確認してください。これらが false の場合、インベントリは入れ替えられず、クリアもされないため、アイテムはプロファイル間で共有されます。
切り替えがメッセージ付きで拒否される。 たとえば戦闘中やミニゲーム中に、他のエクステンションが、切り替え前イベントを通じてキャンセルしました。メッセージは、そのエクステンションが出したものです。