FreeMinecraftModelsの家具ショップ
FreeMinecraftModelsには、プレイヤーがゲーム内通貨でクラフタブルプロップを購入できるオプションのVault対応ショップが同梱されています。ショップはデフォルトで無効であり — 明示的に有効化され、かつVaultエコノミープロバイダが利用可能な場合にのみ自分自身を登録します。
クイックセットアップ
- Vaultと、Vault互換のエコノミープロバイダ(EssentialsX、CMIなど)をインストールします。
plugins/FreeMinecraftModels/shop_config.ymlが生成されるよう、サーバーを一度起動します。shop_config.ymlでenabled: trueを設定します。- サーバーを再起動します(ショップは起動時に登録されます)。
- ゲーム内で
/fmm shopを実行してメニューが開くことを確認します。
これらの前提条件のいずれかが欠けている場合、/fmm shopコマンドは未登録のままで、プレイヤーには設定可能な無効メッセージではなく「そのようなコマンドはない」エラーが表示されます。
仕組み
- ショップは
plugins/FreeMinecraftModels/recipes/からレシピを読み取ります。 isEnabled: trueかつshopEnabled: trueであるすべてのレシピがショップに表示されます。- 各エントリはレシピの出力アイテム(プロップの紙の配置アイテム)を、追加された2つのロア行(
Price:行とClick to purchaseプロンプト)と共に表示します。 - エントリをクリックすると
PurchaseHandlerが呼び出され、Vaultを介してプレイヤーの残高をチェックし、価格を引き出し、配置アイテムをプレイヤーに付与します。インベントリに収まらないアイテムはプレイヤーの足元にドロップされます。
権限
| 権限 | デフォルト | 説明 |
|---|---|---|
freeminecraftmodels.shop | true | ショップを開くために必要。デフォルトはtrueなので、すべてのプレイヤーが閲覧できます |
権限だけではショップを有効にできません — shop_config.ymlでのenabled: trueと、機能するエコノミープロバイダが引き続き必要です。
shop_config.yml
完全なキーリファレンスについては設定ページを参照してください。主なキーは以下です:
enabled— マスター切り替え(デフォルトfalse)defaultPrice— 独自のshopPriceを設定していないレシピファイルに書き込まれるmenuTitle、priceLoreFormat、clickToBuyLoreFormat— ビジュアルスタイルmessages.*— 5つのカスタマイズ可能なフィードバックメッセージ
すべてのメッセージ文字列は&カラーコードと、設定リファレンスに記載されているプレースホルダに対応しています。
レシピごとのフィールド
plugins/FreeMinecraftModels/recipes/<model_id>.yml内の各レシピには、ショップ固有の2つのフィールドがあります:
isEnabled: true
model_id: "wooden_chair"
shape:
- "L L"
- "LLL"
- "L L"
ingredients:
L: OAK_LOG
shopEnabled: true
shopPrice: 250.0
| フィールド | デフォルト | 挙動 |
|---|---|---|
shopEnabled | true | falseの場合、レシピはまだクラフト可能ですが、/fmm shopには決して表示されません |
shopPrice | shop_config.ymlのdefaultPrice | プレイヤーがアイテムをクリックしたときのVault通貨コスト |
/fmm craftifyビルダーは保存時に両方のフィールドを書き込むため、価格調整はレシピファイルでのテキスト編集と/fmm reloadだけで済みます。
購入結果
PurchaseHandlerは5つの結果を認識します。それぞれがshop_config.ymlの設定可能なメッセージにマップされます:
| 結果 | 発生する状況 | メッセージキー |
|---|---|---|
SUCCESS | 引き出しが成功し、アイテムがインベントリに収まった | messages.purchaseSuccess |
SUCCESS_WITH_OVERFLOW | 引き出しは成功したが、アイテムがプレイヤーの足元にドロップされなければならなかった | messages.purchaseSuccess + messages.inventoryFull |
INSUFFICIENT_FUNDS | プレイヤーの残高が価格を下回っているか、基底のエコノミープロバイダが引き出しを拒否した | messages.insufficientFunds |
NOT_FOR_SALE | レシピが無効、またはshopEnabled: false | messages.itemNotForSale |
SHOP_DISABLED | 実行時に強制無効化された(例:エコノミープロバイダが消失) | messages.shopDisabled |
トラブルシューティング
/fmm shopが存在しません。
ショップが未登録です。以下の3つすべてを確認してください:
- Vaultがインストールされている
- エコノミープロバイダが登録されている(
/balanceまたは/ecoを実行して応答するものがあるか確認) shop_config.ymlでenabled: true
その後、サーバーを再起動します。コマンドは起動時にのみ登録されます。
表示されると期待していたアイテムがメニューにありません。
plugins/FreeMinecraftModels/recipes/内のレシピファイルを開きます。isEnabledとshopEnabledの両方がtrueになっていることを確認します。編集後に/fmm reloadを実行してください。
プレイヤーが課金されたがアイテムを受け取りません。
サーバーコンソールでVaultのエラーを確認してください。ハンドラは残高チェックが成功した後にのみ通貨を消費しますが、ダウンストリームのエコノミープロバイダは実際の引き出しに失敗する可能性があります — ハンドラはそれをキャッチしてINSUFFICIENT_FUNDSを返します。引き出しが成功してアイテムのスポーンに失敗した場合、クリック前後の完全なコンソールログと共にバグレポートを提出してください。