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

FreeMinecraftModelsの設定

config.ymlregisterCraftingRecipes は既定で true です。購入専用にする場合は false にして再起動してください。レシピはメニューとショップに残りますが、Bukkit のクラフトレシピは削除されます。このページのクラフト手順には true が必要です。

このページでは、セットアップ、レンダリング、プレイヤーインタラクション、およびオプションの家具ショップに実質的に影響する現在のconfig.ymlshop_config.ymlの設定について説明します。

ファイルの場所

plugins/FreeMinecraftModels/config.yml
plugins/FreeMinecraftModels/shop_config.yml

shop_config.ymlは初回実行時に生成されます。ショップ自体はオプトインするまで無効のままです。

config.ymlの設定

setupDone

  • デフォルト:false
  • 初回セットアップガイドが完了したと見なされるかどうかを制御します
  • これがfalseのままの間、広範なFreeMinecraftModels権限を持つプレイヤーは/fmm setupを実行するようリマインダーを受け取ります
  • セットアップフローがこの値を切り替えるので、通常のオンボーディング中に手動で編集する必要はありません

nightbreak.autoDownloadPluginUpdates

  • デフォルト:false
  • 共通のMagmaCore設定(config.ymlnightbreak:セクション内にあります)
  • trueの場合、FreeMinecraftModelsは起動時に利用可能なプラグインjar更新コンテンツ更新ファイルを自動的にダウンロードします
  • ダウンロードされたプラグインとコンテンツの更新は、サーバー再起動後にのみ適用されます
  • これは起動のたびに/fmm downloadpluginupdate / /fmm downloadallを実行するのと同等の設定キーです。/fmm setupメニューから、または手動で切り替えてください

useDisplayEntitiesWhenPossible

  • デフォルト:true
  • サーバーとクライアント経路がサポートしている場合、FreeMinecraftModelsがディスプレイエンティティレンダリングを優先するよう指示します
  • ディスプレイエンティティが利用できない場合(1.19.4より古いまたはBedrock)、プラグインは引き続きアーマースタンドディスプレイにフォールバックします
  • Bedrockクライアントは特殊なケースなので、これがすべてのプレイヤーに同じレンダリング経路を強制するとは想定しないでください

maxModelViewDistance

  • デフォルト:60
  • モデル化されたエンティティが視聴者にどこまで送られるかを制限します
  • 値を低くすると、モデルが密集したエリアでのパケットおよびクライアントレンダリングの負荷が減少します
  • 個々のエンティティはModeledEntity.setViewDistanceOverride(int)を介して実行時にこれをオーバーライドできます -- APIガイドを参照

maxInteractionAndAttackDistance

  • デフォルト:3
  • 静的および動的なモデル化エンティティに適用されます
  • ランタイムインタラクションおよびヒット検出チェックで使用されます

maxInteractionAndAttackDistanceForProps

  • デフォルト:6
  • プロップエンティティに適用されます
  • これは静的/動的エンティティのインタラクション距離とは別です

sendCustomModelsToBedrockClientsV2

  • デフォルト:true
  • FreeMinecraftModelsがBedrockクライアントにカスタムモデルを送信しようとするかどうかを制御します
  • このキーは、デフォルトがfalseだった古いsendCustomModelsToBedrockClientsを置き換えます。V2への改名でデフォルトが反転し、Bedrockプレイヤーにもデフォルトでモデルが表示されるようになりました。以前に古いキーを明示的に設定していた場合は削除でき、新しいV2キーが引き継ぎます
  • 無効の場合、Bedrockプレイヤーは基となるバニラエンティティが存在すればそれにフォールバックします(ディスガイズは彼らには描画されません)
  • 有効にする場合は、Bedrock/Geyser/Floodgateのリソースパック経路がそれらのクライアント用に実際に準備できていることを確認してください
  • Bedrockディスプレイパイプラインのランタイム診断ログは設定キーではありません -- /fmm debug bedrock on|offを介してランタイムで切り替えるため、本番環境で誤って有効のままになることはありません。コマンドを参照

skipUnchangedBoneUpdates

  • デフォルト:true
  • trueの場合、モデルのボーンは、位置・回転・スケールが前ティックから実際に変化したときにのみ、ティックごとの移動/メタデータパケットをビューアーへ送信します
  • まったく動かないボーン(静的プロップ、モデルの静止している部分)は何も送信しないため、NPCハブや街のような密集エリアでクライアントあたりのパケット負荷を大きく削減できます
  • 定期的なフル再同期は引き続き実行されるため、まれに発生するクライアント側のズレは自己修復されます
  • 「毎ティックすべてのボーンを常に再送する」という旧来の挙動をデバッグのために戻したい場合にのみfalseに設定してください

useDeltaMetadataPackets

  • デフォルト:true
  • trueの場合、ディスプレイエンティティ方式のモデルボーンに対するティックごとのメタデータパケットは、アイテムディスプレイのブロブ全体(アイテムモデル+カスタムモデルデータ)を毎ティック再シリアライズするのではなく、変化した値(ボーンのトランスフォーム)だけを送信します
  • プレイヤーが初めてモデルを見たときと、定期的な再同期時には、依然として完全な状態が送信されます
  • デバッグや比較のために、毎ティック完全なスナップショットを送る旧来の挙動へ戻すにはfalseに設定してください

maxModelsForProximityOverride

  • デフォルト:25
  • 近距離の可視性オーバーライドに対する簡易ロードバランサーです
  • 通常、プレイヤーから10ブロック以内のモデルは常に表示され、視線判定のレイトレースはスキップされます。これは、すぐ隣にあるモデルが遅れて現れる(ポップイン)のを防ぐためです
  • 密集エリア(例えば複数フロアのNPCハブ)では、このオーバーライドによって、プレイヤーには実際には見えない多数のモデル(別のフロアや壁の裏)が毎ティックパケットを送るビューアー扱いになってしまいます
  • ワールドがこの数以上のロード済みモデルを抱えると、そのワールドで近距離オーバーライドが無効になり、至近距離でもオクルージョンのレイトレースが実行されて、プレイヤーから見えないモデルがカリングされます。まばらなワールドではオーバーライドが維持されるため、ポップインしない挙動もそのまま保たれます
  • 判定はグローバルではなくワールド単位で行われるため、混雑したハブワールドが静かなワールドに悪影響を与えることはありません
  • 非常に大きな値にすれば実質的に常時オーバーライドの挙動に戻り、0にすれば常に視線を要求するようになります
  • 効果の測定には/fmm packetdebugが想定されたツールです — コマンドを参照

preventPropPlacementInProtectedRegions

  • デフォルト:true
  • trueの場合、FreeMinecraftModelsはMagmaCoreに登録された保護プロバイダに対して、この特定のプレイヤーがプロップの占めるセルで建築してよいかを問い合わせ、答えが「不可」なら設置を拒否します
  • freeminecraftmodels.bypassregionprotection権限(デフォルト:op)を持つプレイヤーはチェック自体をスキップし、決してブロックされません
  • 組み込みのプレイヤー対応プロバイダは現在WorldGuardGriefPreventionをカバーしています。他のプラグインもMagmaCoreの保護プロバイダを登録すれば同じように尊重されます。プロバイダが1つも登録されていない場合、このチェックは効果を持ちません
  • 拒否時のメッセージは You don't have permission to place a model here! です

このチェックはリージョン単位ではなくプレイヤー単位です。 以前のバージョンは「この位置は何らかの保護リージョン内か?」を尋ねて全員をブロックしていました。現在のチェックは「このプレイヤーはここで建築してよいか?」を尋ねるため、正当にクレームを所有しているプレイヤー、信頼されたメンバー、自分のWorldGuardリージョン内にいるプレイヤーは、そこに通常どおりプロップを設置できます。拒否されるのは、そのセルにバニラのブロックを置けないプレイヤーだけです。

すべての設置に対して単一セルのチェックが行われ、ボクセル化されたプロップにはさらに体積全体のチェックが行われます:

プロップの種類チェックされるセル
通常(自由配置)のプロップクリックしたブロック面に隣接する単一セル — プロップが占めるセル
voxelize: true のプロップまず同じ隣接セル、次にグリッド整列された設置点まわりの、回転後のフットプリント(幅×高さ×奥行き)に含まれるすべてのセル。その体積内に1つでも立ち入れないセルがあれば、設置全体が拒否されます

体積チェックが存在するのは、ボクセル化されたプロップが数ブロックの幅を持ちうるためです。クリックしたセルだけを判定していると、プレイヤーがクレーム境界をまたいで他人の建築物に大きなプロップを落とせてしまいます。このチェックは空きスペースのチェックの後に実行されるため、フットプリントが物理的に塞がれている場合は引き続き Not enough space to place this model! が優先されます。

注記

バイパス権限はプロバイダへの問い合わせより前にチェックされます。そのため、このキーをサーバー全体で無効化せずにスタッフがどこでもプロップを設置できるようにする正式な方法は、freeminecraftmodels.bypassregionprotection を付与することです。

shop_config.yml

オプションのVault対応家具ショップは独自の設定ファイルにあり、メインプラグインの挙動とは独立して有効化や調整ができます。Vaultまたはエコノミープロバイダが欠けている場合、ショップは登録を拒否します。

トップレベルキー

キーデフォルト説明
enabledfalse/fmm shopのマスター切り替え。これがtrueでVault + エコノミープロバイダが両方存在する場合にのみコマンドが登録されます
defaultPrice100.0次回ロード時に独自のshopPriceを設定していないレシピファイルに書き込まれる価格
menuTitle&8FMM - Furniture Shopショップインベントリの上部に表示されるタイトル(&カラーコードに対応)
priceLoreFormat&7Price: &e{price}各ショップアイテムに価格を示すため追加されるロア行。プレースホルダ:{price}
clickToBuyLoreFormat&aClick to purchase購入を促すため各ショップアイテムに追加されるロア行

メッセージキー(messages.*

すべてのメッセージ文字列は&カラーコードに対応しています。

キーデフォルトプレースホルダ
messages.purchaseSuccess&aPurchased &f{item} &afor &e{price}&a. Balance: &e{balance}&a.{item}{price}{balance}
messages.insufficientFunds&cYou need &e{price} &cto buy &f{item}&c. Balance: &e{balance}&c.{item}{price}{balance}
messages.shopDisabled&cThe furniture shop is currently unavailable.なし
messages.itemNotForSale&cThat item is not currently for sale.{item}
messages.inventoryFull&eYour inventory was full; &f{item} &ehas been dropped at your feet.{item}

レシピごとのショップフィールド

plugins/FreeMinecraftModels/recipes/<model_id>.yml内の各レシピファイルには、2つの追加フィールドがあります:

フィールドデフォルト説明
shopEnabledtrueこのレシピが/fmm shopに表示されるかどうか。shopEnabled: falseのレシピは引き続きクラフト可能ですが、購入用にリストされることはありません
shopPriceshop_config.ymldefaultPriceこの特定のアイテムのVault通貨コスト

レシピビルダー(/fmm craftify)は保存時に両方のフィールドを書き込むため、価格調整はテキスト編集だけで済みます。

権限

plugin.ymlに登録されているもの

権限デフォルト説明
freeminecraftmodels.*opadmin、deleteall、self/othersディスガイズ権限を付与するワイルドカード
freeminecraftmodels.adminop/fmm admin(管理者コンテンツブラウザ)と/fmm giveitemへのアクセス。その他の管理/デバッグコマンド(/fmm location/fmm spawn/fmm mount/fmm itemify/fmm craftify/fmm reload/fmm stats/fmm hitbox visualize/fmm debug bedrock/fmm setup, /fmm initialize/fmm recommendedplugins/fmm downloadall/fmm downloadallcontent/fmm updatecontent/fmm downloadpluginupdate)は代わりにワイルドカードfreeminecraftmodels.*をチェックします
freeminecraftmodels.deleteallopワイルドカードの子。/fmm deleteallへのアクセス
freeminecraftmodels.disguise.selfop送信者に対する/fmm disguise / /fmm undisguiseを許可
freeminecraftmodels.disguise.othersop対象指定のディスガイズ/アンディスガイズと/fmm disguiselistを許可
freeminecraftmodels.bypassregionprotectionoppreventPropPlacementInProtectedRegionsが有効でも、他のプラグインが通常のブロック設置をブロックする場所でプロップの設置/操作を許可
freeminecraftmodels.menutrue/fmmクラフタブルアイテムメニューへのアクセス
freeminecraftmodels.shoptrue/fmm shopへのアクセス

モデルYML設定

.bbmodelファイルは、モデル固有の設定を制御するコンパニオン.ymlファイル(同じ名前、同じディレクトリ)を持つことができます。統合YMLフォーマットは以下のフィールドをサポートします:

isEnabled: true
voxelize: true
solidify: true
scripts:
- my_script.lua
material: DIAMOND_SWORD
name: "&bFrost Blade"
lore:
- "&7A sword forged in ice"
- "&7Deals frost damage"
enchantments:
- SHARPNESS,3
- UNBREAKING,2
フィールド説明
isEnabledbooleanモデルがロードされるかどうか(デフォルト:true
scripts文字列のリストplugins/FreeMinecraftModels/scripts/からアタッチするLuaスクリプトファイル名。分かりやすさのため.luaを含めてください。.luaなしの設定エントリも受け付けられ、.luaファイルに解決されます。
voxelizebooleantrueの場合、プロップは90度単位の回転に吸着し、配置時にブロックグリッドに揃えられます。フットプリントはモデルのヒットボックス寸法(整数ブロックに丸め)から計算されます。フットプリント内のすべてのブロックが非ソリッドであることを配置時にチェックします。
solidifybooleantrueの場合(voxelize: trueが必要)、プロップのフットプリントのすべてのブロックにパケット専用のバリアブロックが配置され、クライアント側のコリジョンを提供します。これらのバリアは不可視で、パケット内にのみ存在します -- ワールドには配置されません。プロップが拾い上げられたり破壊されたりすると、バリアは自動的に削除されます。
materialstringBukkitのマテリアル名(例:DIAMOND_SWORDPAPER)。設定すると、モデルはプレイヤーが保持・装備できるカスタムアイテムになります
namestringカスタムアイテムの表示名(&カラーコードに対応)
lore文字列のリストカスタムアイテムのロア行(&カラーコードに対応)
enchantments文字列のリストENCHANTMENT_NAME,LEVEL形式のエンチャント(例:SHARPNESS,3

materialが設定されると、モデルはカスタムアイテムとして登録されます。プレイヤーは/fmm giveitemで受け取ったり、レシピが設定されていればクラフトすることができ、22個すべてのLuaアイテムフックへのアクセスが付与されます。

プロップはscripts:にリストされたすべてのスクリプトを独立したインスタンスとして実行します。カスタムアイテムは現在、リスト内の最初の有効なスクリプトのみを使用します。最初の後の追加エントリは、アイテムのランタイムバインディングでは無視されます。

運用上のメモ

  • /fmm reloadはコンテンツを再インポートし、出力パックを再生成します。そのため、レンダリング挙動に影響する設定変更はリロード後に最も簡単に検証できます。リロードごとにFmmReloadedEventがディスパッチされ、依存プラグインがモデルアタッチメントを再バインドできます。
  • 生成されるパックはバイト単位で安定しているため、変更のないモデルセットから再生成すれば、まったく同じzipとSHA1が得られます。これが、ResourcePackManagerが不要な再アップロードをスキップできる理由です。リソースパック出力を参照してください。
  • FreeMinecraftModelsはリソースパックを生成するだけで、自分自身ではホスティングしません。
  • ResourcePackManagerはJavaクライアント向けの推奨配布経路として、また混在セットアップに対する最も安全な文書化された経路として、引き続き有効です。
  • WorldGuard、WorldEdit、GriefPrevention、Vault、floodgate、Geyser-Spigotはplugin.ymlsoftdependとして宣言されています -- どれもプラグイン起動には必須ではありませんが、存在する場合に特定の機能が解放されます:WorldGuard/WorldEdit/GriefPreventionは保護対応のLua述語とプレイヤーを考慮したプロップ設置チェックの両方に供給され、Vaultは家具ショップを、floodgate/Geyser-SpigotはBedrockレンダリングバックエンドを有効化します。

これらの値を変更するタイミング

この設定はランタイム挙動のチューニングに使用し、コンテンツパッケージ管理には使用しないでください。

  • 公式パッケージのライフサイクル作業には/fmm setup/fmm downloadall/fmm updatecontentを使用してください
  • 手動の.bbmodelやその他のローカルコンテンツインポート作業にはimportsフォルダを使用してください
  • レンダリングモード、可視距離、インタラクション距離、Bedrockの挙動、リージョン保護の強制、または自動更新ダウンロードを調整する必要がある場合はconfig.ymlを使用してください
  • モデルが密集したワールドでのパケット/帯域チューニングにはskipUnchangedBoneUpdatesuseDeltaMetadataPacketsmaxModelsForProximityOverrideを使用してください。3つとも最適化された挙動がデフォルトです。falseや極端に大きい値の設定は、推奨される本番設定ではなく、デバッグやA/B比較のために存在します
  • コードに触れずに家具ショップを調整するにはshop_config.yml(およびレシピごとのshopEnabled/shopPriceフィールド)を使用してください

既知の注意事項

  • Bedrockの挙動はsendCustomModelsToBedrockClientsV2と、より広範なFloodgate/Geyser/リソースパックのセットアップの両方に依存します。正確なスタックをテストしていない限り、控えめな主張に留めてください。
  • Vaultやエコノミープロバイダが欠けている場合、ショップは静かに自分自身を無効化します。/fmm shopが予期せず欠落している場合は、/fmm versionを使用し、起動時のコンソールを確認してください。