Vault連携
EliteMobsは内部の通貨残高の代わりに、Vaultの経済プロバイダーを利用できます。VaultAPI 1.7に対してコンパイルされているため、互換性のあるVaultと経済プラグインをサーバーにインストールしてください。
進行への影響
EliteMobsでは武器・防具スキル、戦利品、任意のクラス訓練を組み合わせて進行します。通常、プレイヤーはEliteMobsの戦闘で装備と通貨を獲得します。外部の経済から資金を持ち込むと、装備やサービスを購入できるまでの時間が変わります。
外部の経済を接続する前に、ショップ価格、戦利品の売却価格、有料サービスを見直してください。
スキル要件を有効にしている場合、その要件は引き続き適用されます。VaultはスキルXPの付与、クラスの解放、トレーナーの試練の省略を行いません。連携を有効にする場合は、外部収入が戦闘報酬を圧倒しないように、EliteMobsのショップとサービスの価格に合わせて経済を調整してください。
要件
Vault連携を使用するには、次のものが必要です。
- EliteMobsのVaultAPI呼び出しと互換性があり、有効になっているVaultプラグイン
- Vaultの
Economyサービスを登録する経済プラグイン - 両方のプラグインが適切に設定され、稼働していること
EliteMobsは初期化時に有効なVaultを検出し、useVaultがtrueならVaultの経済処理を選択します。検出されたことだけでは、経済プロバイダーが見つかったとは確認できません。
設定
Vault連携を有効にするには:
- サーバーにVaultプラグインがインストールされていることを確認する
- EliteMobsの初期化前に、経済プラグインがVaultプロバイダーを登録することを確認する
- EliteMobsプラグインフォルダ内の
EconomySettings.ymlを開く useVault: trueに設定する- サーバーを再起動する
設定例:
# Whether to use Vault for the economy instead of the built-in system.
# NOT RECOMMENDED! See: https://wiki.nightbreak.io/EliteMobs/vault
useVault: false
仕組み
Vault連携が有効で、プロバイダーが正常に動作している場合:
- 以後の通貨操作はVaultの経済プロバイダーを使用します。EliteMobsデータベース内の既存のエリートコインは自動変換・移行されません。
- プレイヤーはエリートモブを倒したときに、エリートコインの代わりにサーバーの経済通貨を獲得します
- ショップ取引や通貨を請求するサービスはサーバーの経済を使用します。修理には引き続きスクラップを消費します。
- 通貨残高はVaultが管理します。EliteMobsは引き続きギャンブルの負債を管理し、EliteMobsで得た収入から負債分を差し引いて残額を入金します。
通貨の操作:
- 入金:プレイヤーのVault残高にお金が追加されます
- 出金:プレイヤーのVault残高からお金が引かれます
- 残高確認:プレイヤーのVault残高を照会します
- 残高の直接設定:安全のため無効(経済プラグインを使用してください)
初期化時にVaultが有効でuseVault: trueの場合、プロバイダーを検索する前にVAULT_ENABLEDを設定します。そのため、プロバイダーが見つからなくても、利用可能な経済がないままVaultモードが有効になることがあります。この状態では残高照会が警告を出して0を返し、通常の入金・出金は失敗する可能性があり、結果を確認する購入ヘルパーは失敗を返します。新規起動時にVaultが存在しないか無効なら、内部経済を使用します。Vaultの初期設定で例外を捕捉した場合もVaultモードを無効にします。
Vaultモードが有効になった後は、実行時の自動フォールバックもプロバイダーの再取得もありません。取引を受け付ける前にプロバイダー登録を修正し、再起動してください。currencyNameは独立したEliteMobsの表示設定です。Vaultを有効にしても自動的には変わりません。
セキュリティ機能
セキュリティ上の理由から、EliteMobsはVaultを通じてプレイヤーの通貨残高を直接設定することをサポートしていません。そのような試みはすべてブロックされ、ログに記録されます。必要であれば、経済プラグインのコマンドを使って残高を直接設定してください。
例:シナリオ
報酬を100コイン、プレイヤーのギャンブルの負債を0と仮定します。この金額は説明用であり、レベル50のモブが必ず支払う固定額ではありません。
Vaultなし:
- プレイヤーがレベル50のエリートモブを倒す
- 100エリートコインを受け取る(EliteMobsのデータベースに保存)
- エリートコインをEliteMobsのショップやサービスで使用できる
Vaultあり:
- プレイヤーがレベル50のエリートモブを倒す
- 100[あなたの経済通貨]を受け取る(Vault/経済プラグインに保存)
- EliteMobsと、同じプロバイダーを使用する他のシステムでお金を使える
- 他のプレイヤーからの送金は経済プラグインの機能による
- 経済がすべてのプラグインで統合される
外部収入によって装備やサービスを早く利用できるようになります。スキル要件やクラス解放の条件は、それとは独立して適用されます。
トラブルシューティング
Vault連携が有効なのに機能しない場合:
-
サーバーログで次を確認する:"Vault detected."(EliteMobsのログ行の中)
- 見当たらない場合:Vaultプラグインがインストールされていないか、読み込まれていません
-
次の警告を確認する:"Vault preference detected. This is not the recommended setting."
- これはVault連携が有効なときに想定される動作です。エラーではなく、注意喚起です
- それでもVaultが機能しない場合は、経済プラグインがVaultに適切に登録されていることを確認してください
-
次を確認する:"Player tried to check currency when they had no economy entry"
- これは汎用的なnull参照の警告であり、プレイヤーのアカウントが存在しない証拠ではありません。保存された経済プロバイダー自体がnullの可能性があります。
- EliteMobsの初期化前にプロバイダーが登録されたか確認し、その後で経済プラグインのアカウント処理とログを調べてください。
-
有効にしているのにEliteMobsがまだエリートコインを使っている場合:
- 設定キーが正確に
useVault: trueであることを確認する - 設定変更後にサーバーを再起動する
- 経済プラグインがVaultに登録されていることを確認する
- 設定キーが正確に
-
検出メッセージがあるのに残高が0になる、または取引が失敗する場合:
- 初期化時にプロバイダーを利用できたか確認してください。検出メッセージが示すのはVault本体だけです。
- プロバイダーを復旧して再起動してください。EliteMobsは新しく登録されたプロバイダーに自動再接続しません。
開発者向け
アドオンや連携を開発している場合:
- Vaultの選択:
VaultCompatibility.VAULT_ENABLEDはプロバイダーの可用性を保証しません。getEconomy()がnullの場合があります - 経済API:
EconomyHandlerのメソッドを使用する(VaultCompatibilityを直接使わない) - サポートされる操作:add、subtract、check、結果を確認する入金、結果を確認する購入時の出金と購入返金(setは無効)
- 残高の変更はすべて、EliteMobsのデータが読み込まれているプレイヤー(
EconomyHandler.isReady)に対して、サーバースレッドで実行する必要があります。そうでない場合はIllegalStateExceptionをスローします。 tryCredit、tryWithdraw、refundPaymentは、負の金額または有限でない金額に対してIllegalArgumentExceptionをスローし、Vaultが取引を拒否した場合や、そのプレイヤーに対する別の変更がすでに進行中の場合はfalseを返します。tryCreditはまずギャンブルの負債を回収し、Vaultが入金を受け付けた後にだけ新しい負債額を保存します。refundPaymentは負債を回収しません。addCurrencyとsubtractCurrencyは、プロバイダーが変更を拒否した場合、何も知らせずに失敗するのではなくIllegalStateExceptionをスローします。- 通貨の精度:内部システムは小数点以下2桁を使用する
- 実行時のフォールバックなし:
VAULT_ENABLEDがtrueのとき、EconomyHandlerは常にVaultに委譲し、内部経済への自動的な切り戻しはありません
ソースコードの場所:
- src/main/java/com/magmaguy/elitemobs/economy/VaultCompatibility.java
- src/main/java/com/magmaguy/elitemobs/economy/EconomyHandler.java
EliteMobsは、VaultAPI 1.7をコンパイル時のみの依存関係として使用します。VaultプラグインのJARは、実行時にサーバー上に存在している必要があります。