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

FreeMinecraftModelsの家具ショップ

FreeMinecraftModelsには、プレイヤーがゲーム内通貨でクラフタブルプロップを購入できるオプションのVault対応ショップが同梱されています。ショップはデフォルトで無効であり — 明示的に有効化され、かつVaultエコノミープロバイダが利用可能な場合にのみ自分自身を登録します。

クイックセットアップ

  1. Vaultと、Vault互換のエコノミープロバイダ(EssentialsX、CMIなど)をインストールします。
  2. plugins/FreeMinecraftModels/shop_config.ymlが生成されるよう、サーバーを一度起動します。
  3. shop_config.ymlenabled: trueを設定します。
  4. サーバーを再起動します(ショップは起動時に登録されます)。
  5. ゲーム内で/fmm shopを実行してメニューが開くことを確認します。

これらの前提条件のいずれかが欠けている場合、/fmm shopコマンドは未登録のままで、プレイヤーには設定可能な無効メッセージではなく「そのようなコマンドはない」エラーが表示されます。

仕組み

  • ショップはplugins/FreeMinecraftModels/recipes/からレシピを読み取ります。
  • isEnabled: trueかつshopEnabled: trueであるすべてのレシピがショップに表示されます。
  • 各エントリはレシピの出力アイテム(プロップの紙の配置アイテム)を、追加された2つのロア行(Price:行とClick to purchaseプロンプト)と共に表示します。
  • エントリをクリックするとPurchaseHandlerが呼び出され、Vaultを介してプレイヤーの残高をチェックし、価格を引き出し、配置アイテムをプレイヤーに付与します。インベントリに収まらないアイテムはプレイヤーの足元にドロップされます。

権限

権限デフォルト説明
freeminecraftmodels.shoptrueショップを開くために必要。デフォルトはtrueなので、すべてのプレイヤーが閲覧できます

権限だけではショップを有効にできません — shop_config.ymlでのenabled: trueと、機能するエコノミープロバイダが引き続き必要です。

shop_config.yml

完全なキーリファレンスについては設定ページを参照してください。主なキーは以下です:

  • enabled — マスター切り替え(デフォルトfalse
  • defaultPrice — 独自のshopPriceを設定していないレシピファイルに書き込まれる
  • menuTitlepriceLoreFormatclickToBuyLoreFormat — ビジュアルスタイル
  • 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
フィールドデフォルト挙動
shopEnabledtruefalseの場合、レシピはまだクラフト可能ですが、/fmm shopには決して表示されません
shopPriceshop_config.ymldefaultPriceプレイヤーがアイテムをクリックしたときの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: falsemessages.itemNotForSale
SHOP_DISABLED実行時に強制無効化された(例:エコノミープロバイダが消失)messages.shopDisabled

トラブルシューティング

/fmm shopが存在しません。 ショップが未登録です。以下の3つすべてを確認してください:

  • Vaultがインストールされている
  • エコノミープロバイダが登録されている(/balanceまたは/ecoを実行して応答するものがあるか確認)
  • shop_config.ymlenabled: true

その後、サーバーを再起動します。コマンドは起動時にのみ登録されます。

表示されると期待していたアイテムがメニューにありません。 plugins/FreeMinecraftModels/recipes/内のレシピファイルを開きます。isEnabledshopEnabledの両方がtrueになっていることを確認します。編集後に/fmm reloadを実行してください。

プレイヤーが課金されたがアイテムを受け取りません。 サーバーコンソールでVaultのエラーを確認してください。ハンドラは残高チェックが成功した後にのみ通貨を消費しますが、ダウンストリームのエコノミープロバイダは実際の引き出しに失敗する可能性があります — ハンドラはそれをキャッチしてINSUFFICIENT_FUNDSを返します。引き出しが成功してアイテムのスポーンに失敗した場合、クリック前後の完全なコンソールログと共にバグレポートを提出してください。