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

FreeMinecraftModelsの設定

モデルの YAML 設定はコンテンツの再読み込み時にまとめて準備されます。プロップの YAML を編集したら、再読み込みが成功してから新しいプロップを作成してください。モデルの YAML には、すべてのモデルフォルダーを通じて一意のファイル名を付けてください。2つのファイルが同じファイル名を持つ場合(大文字・小文字は区別しません)、別のサブフォルダーにあっても、FMM は絶対パスの並び順で最初になるファイルを読み込み、他のファイルは Duplicate content filename の警告を出してスキップします。スキップされたコピーの値がすべて読み込まれたファイルと一致する場合は、警告なしでスキップされます。

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

ファイルの場所​

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

shop_config.ymlは初回実行時に生成されます。ショップ自体はオプトインするまで無効のままです。pets.ymlは初回実行時にCOSMETICモードで生成され、このモードでは野生のペットは夜の渡りにのみ現れます。ペットが実行するLuaモジュールはplugins/FreeMinecraftModels/pet_behaviors/にあります。ペット行動モジュールを参照してください。

最低サーバーバージョン

plugin.yml は api-version: 1.21.4 を宣言しているため、対応する最低サーバーバージョンは Minecraft 1.21.4 です。旧バージョンのサポートは終了しています。古い描画・出力処理はコードに残っていますが、プラグインをロードできるサーバーでは使用されません。

config.ymlの設定​

setupDone​

  • デフォルト:false
  • 初回セットアップガイドが完了したと見なされるかどうかを制御します
  • false の間、freeminecraftmodels.* を持つプレイヤーはログインの約10秒後に、まだオンラインなら毎回通知を受け取ります
  • /fmm setup を開くとサーバー全体で true が保存され、以後の通知が止まります。/fmm initialize の完了項目を選んでも保存されます。この値はパックのインストールやクライアントへの配信完了を証明しません

nightbreak.autoDownloadPluginUpdates​

  • デフォルト:false
  • 共通のMagmaCore設定(config.ymlのnightbreak:セクション内にあります)
  • trueの場合、FreeMinecraftModelsは起動時に利用可能なプラグインjar更新とコンテンツ更新ファイルを自動的にダウンロードします
  • ダウンロードされたプラグインとコンテンツの更新は、サーバー再起動後に適用されます。ただしnightbreak.applyPluginUpdatesWithoutRestartによって、プラグインの更新をそれより早く適用することもできます
  • プラグインの自動ダウンロードには、有効な Nightbreak アカウントトークンと有効な Patreon サポーターメンバーシップが必要です。両方が揃わない場合は false のままにし、ゲーム内の更新ボタンを使用してください
  • コンテンツの自動更新はインストール済みパッケージを対象にし、リロードを後回しにします。/fmm downloadall でアクセス可能な全パッケージをインストールする操作とは異なります。/fmm setup または設定ファイルで切り替えてください

nightbreak.applyPluginUpdatesWithoutRestart​

  • デフォルト:never
  • 共通のMagmaCore設定(config.ymlのnightbreak:セクション内にあります)。ダウンロードしたプラグイン更新を、再起動せずにいつ適用するかを決めます
  • never:更新は次回の再起動まで待機します。/fmm applypluginupdate で手動で適用することもできます
  • when-empty:次にオンラインのプレイヤーがいなくなったときに更新を適用します。FMM は30秒ごとに確認します
  • immediately:ダウンロードが完了した時点ですぐに更新を適用します
  • それ以外の値は never として扱われます
  • 更新を適用すると、FreeMinecraftModels とそれに依存するすべての MagmaGuy プラグインが無効化され、jar が置き換えられた後、再度読み込まれて有効化されます。進行中のボス、アリーナ、ダンジョンインスタンスは、それらのプラグインのリロード時に終了します
  • 他の作者のプラグインが FreeMinecraftModels に依存している場合は入れ替えが行われず、更新は再起動を待ちます。新しい jar の有効化に失敗した場合は以前の jar が再度読み込まれ、更新は次回の再起動まで待機状態のまま残ります。コマンドを参照してください

useDisplayEntitiesWhenPossible​

  • デフォルト:true
  • サーバーとクライアント経路がサポートしている場合、FreeMinecraftModelsがディスプレイエンティティレンダリングを優先するよう指示します
  • false にすると、Java クライアントのボーン描画にアーマースタンドを使用します。1.19.4 より前の処理が残っていても、旧サーバーが対応対象になるわけではありません
  • Bedrock モデルが有効で、ネイティブのカスタムエンティティ連携が利用できる場合、Bedrock プレイヤーにはその方式で表示します。それ以外のボーン描画ではアーマースタンドを使用します。この設定は全プレイヤーに同じ方式を強制しません

maxModelViewDistance​

  • デフォルト:60
  • 通常の表示距離の上限を設定します。モデルが少ないワールドでは10ブロック未満の近距離例外が距離制限と遮蔽判定を省略するため、10未満の値にしても厳密な上限にはなりません
  • 値を低くすると、モデルが密集したエリアでのパケットおよびクライアントレンダリングの負荷が減少します
  • 個々のエンティティは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 で切り替え、証拠を集めたら明示的にオフにしてください。/fmm reload ではリセットされず、サーバーの再起動でリセットされます。コマンドを参照

skipUnchangedBoneUpdates​

  • デフォルト:true
  • true の場合、追跡する変換が比較許容値を超えて変わっていなければ、ボーンの移動・メタデータ更新を省略します。ディスプレイのボーンは位置・回転・スケールを、アーマースタンドのボーンは位置・回転を追跡します
  • 静止したボーンは通常これらの更新を省略しますが、色の変更など明示的に変更済みとされた状態は再送を強制します
  • 定期的な完全再同期は引き続きクライアントのずれを補正します。この設定ですべてのモデルパケットが止まるわけではありません
  • 「毎ティックすべてのボーンを常に再送する」という旧来の挙動をデバッグのために戻したい場合にのみfalseに設定してください

useDeltaMetadataPackets​

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

displayBonesRideTheirEntity​

  • デフォルト:true
  • trueの場合、動的モデルのディスプレイボーンは、Java クライアントでそのエンティティに乗客として乗ります。クライアントは、エンティティとその乗り手に使うのと同じ補間済みの位置から、すべてのボーンを配置します。そのため、マウント、乗り手、動くモデルが遅れてついてくることなく一体で動き、ボーンは位置パケットを送りません
  • これは/fmm mountなどのマウントと、隠れたエンティティがmodelViewersTrackHiddenBodiesで追跡されているモデルに適用されます。ボーンが乗るのは、すべての Java ビューアーのクライアントがそのエンティティを追跡している間だけです。ビューアーは、サーバーがエンティティを追跡する距離より遠くのモデルを見られる場合があり(モデルはmaxModelViewDistance、デフォルト60ブロックまで表示されますが、Spigot はデフォルトでモンスターを48ブロックまで追跡します)、プラグインがビューアーからエンティティを隠すこともあります。そのような場合と、モデルが死亡する間は、ボーンはボーンごとのテレポートに戻ります
  • Bedrock プレイヤーには影響しません
  • すべてのモデルを従来のボーンごとのテレポートのままにするにはfalseに設定してください

riddenBoneInterpolationTicks​

  • デフォルト:1
  • Java クライアントが、乗っているボーンを次のアニメーションポーズへ滑らかに動かすのにかけるティック数です。0なら毎ティックスナップします。1なら1ティックかけて滑らかに動き、回転も滑らかになります
  • エンティティに乗っているボーンだけが使います。displayBonesRideTheirEntityを参照してください
  • /fmm boneglide <ticks>を使うと、このファイルを編集せずに、FMM がリロードされるまでの間、この値を変更できます。コマンドを参照してください

modelViewersTrackHiddenBodies​

  • デフォルト:true
  • trueの場合、エンティティが隠された動的モデルを見ることができる各 Java プレイヤーは、そのエンティティも、装備を取り除いた透明なボディとして受け取ります。これにより、displayBonesRideTheirEntityで説明したように、モデルのボーンがそれに乗れます
  • ほかのプレイヤーと Bedrock プレイヤーには、これまでどおりエンティティが隠されたままです
  • 隠れたエンティティを追跡せず、ボーンをボーンごとのテレポートのままにするにはfalseに設定してください

idleWalkBlendTicks​

  • デフォルト:5
  • 実験的。モデルがidleとwalkのアニメーションの間をクロスフェードするのにかけるティック数です。フェード中は両方のアニメーションが再生され続けます
  • 0なら、旧バージョンと同様に即座に切り替わります
  • Bedrock プレイヤーにも同じフェード時間が適用されます。この値は生成される Bedrock のアニメーションコントローラーに書き込まれるため、変更が反映されるのはリソースパックが再生成された後です
  • アニメーションのブレンドを参照してください

deathBlendTicks​

  • デフォルト:4
  • 実験的。モデルがそれまでのポーズからdeathアニメーションへフェードするのにかけるティック数です。0なら、旧バージョンと同様に即座に切り替わります
  • Bedrock プレイヤーにも、リソースパックが再生成された後に同じフェード時間が適用されます

weightedTurning​

  • デフォルト:true
  • 実験的。trueの場合、動的モデルはモブの向きに慣性をつけて向きを追います。加速し、上限のある速度で旋回し、行き過ぎることなく新しい向きに合わせて減速します。大きなモデルほどゆっくり旋回します
  • この旋回をするのはモデルだけです。モブ自体は、これまでとまったく同じように向きを変えて歩きます
  • プレイヤーがモブに直接乗っている間、またはモブのm_シートに座っている間は、モデルは瞬時に向きを変えます
  • 旧バージョンと同様に、モデルがモブと一緒に瞬時に向きを変えるようにするにはfalseに設定してください
  • サイズによって上限がどう変わるかは、旋回の慣性を参照してください

turnSpeedCap​

  • デフォルト:30
  • 実験的。サイズが1ブロックのモデルの、最高旋回速度(度/ティック)です
  • この上限はモデルのサイズの平方根で割られ、1ティックあたり90度を超えることはありません

turnAcceleration​

  • デフォルト:6
  • 実験的。サイズが1ブロックのモデルが、毎ティックに旋回速度を増減できる度数(度/ティック)です
  • モデルのサイズで割られるため、大きなモデルほど加速も減速もゆっくりになります
  • turnSpeedCapが0以下の場合と同様に、0以下の値にするとモデルは瞬時に向きを変えます

maxModelsForProximityOverride​

  • デフォルト:25
  • 近距離の可視性オーバーライドに対する簡易ロードバランサーです
  • 通常、プレイヤーから10ブロック未満のモデルは、表示対象を選ぶ距離・遮蔽判定を省略します。他の可視性ルールは引き続き適用されます
  • 密集エリア(例えば複数フロアのNPCハブ)では、このオーバーライドによって、プレイヤーには実際には見えない多数のモデル(別のフロアや壁の裏)が毎ティックパケットを送るビューアー扱いになってしまいます
  • ワールド内のロード済みモデル数がこの値以上になると、そのワールドでは近距離例外が無効になります。近くでも設定された距離・可視性判定を通る必要があります。可視性判定はモデルの中心とヒットボックスの角を調べ、ヒットボックスがなければ通過します。モデルが少ないワールドでは例外を維持します
  • 判定はグローバルではなくワールド単位で行われるため、混雑したハブワールドが静かなワールドに悪影響を与えることはありません
  • 非常に大きな値にすれば実質的に常時オーバーライドの挙動に戻り、0にすれば常に視線を要求するようになります
  • 効果の測定には/fmm packetdebugが想定されたツールです — コマンドを参照

filmicMode​

警告

録画以外での使用はおすすめしません。フィルミックモードはすべてのプレイヤーにはるかに多くのパケットを送信し、サーバーにすべてのロード済みモデルをアニメーションさせます。混雑したサーバーではラグが発生すると考えてください。

  • デフォルト:false
  • ReplayMod などの録画Modでトレーラーや動画を録画するためのものです
  • 通常、プレイヤーがモデルを受信するのは、そのモデルがmaxModelViewDistanceの範囲内にあり、視線判定を通過している間だけです。隠れたモデルはそのクライアントから削除され、アニメーションも止まります。リプレイには録画したクライアントが受信したものしか含まれないため、リプレイのカメラでそれらのモデルを映すと、表示されなかったり静止していたりします
  • true の場合、すべてのプレイヤーが、自分の読み込み済みチャンクにあるすべてのロード済みモデルを受信し、壁の向こうやmaxModelViewDistanceの外側にあってもモデルはアニメーションし続けます。読み込み済みチャンクの範囲は、ワールドの描画距離(クライアントの描画距離が上限)に1チャンクを加えたものです。未ロードのチャンクにあるモデルは引き続き表示されません
  • 録画のときだけオンにするには、このファイルを編集する代わりに /fmm filmic on|off を使ってください。コマンドを参照

particleEffectsEnabled​

  • デフォルト:true
  • false の場合、モデル、プロップ、手持ちアイテムで Blockbench のパーティクルエフェクトは再生されません。モデルは通常どおり読み込まれ、アニメーションします
  • 変更は /fmm reload または再起動の後に反映されます。Java プレイヤーには FMM のリロード後に反映されます。Bedrock プレイヤーのエフェクトはリソースパックに含まれているため、再生成されたリソースパックを受け取った後に反映されます
  • パーティクルを参照してください

maxParticlesPerEmitter​

  • デフォルト:100
  • 1つのモデル上の1つのパーティクルエフェクトについて、同時に存在できるパーティクルの上限です。パーティクルファイル自体の max_particles のほうが低い場合はそちらが適用されます
  • Java プレイヤーに見える各パーティクルはパケットエンティティであるため、値を高くすると帯域幅を消費します

maxParticlesPerViewer​

  • デフォルト:400
  • 1人の Java プレイヤーに、すべてのモデルを合わせて表示される同時存在パーティクルの上限です
  • 上限を超えると、そのプレイヤー向けの新しいパーティクルは、古いものが消えるまでスキップされます。Bedrock プレイヤーは自分のクライアントでパーティクルを描画するため、カウントされません

preventPropPlacementInProtectedRegions​

  • デフォルト:true
  • trueの場合、FreeMinecraftModelsはMagmaCoreに登録された保護プロバイダに対して、この特定のプレイヤーがプロップの占めるセルで建築してよいかを問い合わせ、答えが「不可」なら設置を拒否します
  • freeminecraftmodels.bypassregionprotection権限(既定値:op)を持つプレイヤーは、このFMMの保護確認を省略します。空間の確認や他のプラグインの制限は引き続き適用されます
  • 組み込みのプレイヤー対応プロバイダは WorldGuard と GriefPrevention に対応しています。他のプラグインも登録できます。プロバイダの拒否やエラーは設置を拒否し、保護された位置の所有者が登録されている場所も MagmaCore が拒否します。拒否するプロバイダも保護された所有権もなければ、制限は追加されません
  • 拒否時のメッセージは You don't have permission to place a model here! です

プロバイダへの問い合わせは、このプレイヤーが建築できるかを調べるため、土地のメンバーであれば設置できる場合があります。保護された位置の所有権は別の判定で、プレイヤーごとの例外はありません。登録済み連携への問い合わせであり、バニラのブロック設置イベントの再現ではないため、全プラグインの設置ルールを網羅しません。

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

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

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

検査する範囲はヒットボックスの各寸法を Math.round で丸め、最低1ブロックにします。パケットで送るバリアの範囲は ceil(size - 0.4) を使うため、異なる場合があります。設置判定はクライアントの衝突セルすべてと同じ範囲を検査する保証はありません。

注記

権限はプロバイダーへの問い合わせ前に確認します。freeminecraftmodels.bypassregionprotectionでスタッフをFMMの保護確認から除外し、他のプレイヤーには設定を有効にしておけます。必要な空間の確認や、他のプラグインによるイベントのキャンセルは回避しません。

registerCraftingRecipes​

  • デフォルト:true
  • 購入専用にするには false にして再起動します。有効で正常なレシピ項目はショップの一覧に残りますが、Bukkit のクラフトレシピは削除されます
  • プレイヤーの /fmm クラフト可能アイテムメニューとレシピ詳細には、実際に登録されたレシピが必要です。クラフトを無効にした項目は表示されません
  • 個別レシピの isEnabled: false はショップを含むロード済み一覧から削除します。shopEnabled: false は購入だけを非表示にします

shop_config.yml​

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

トップレベルキー​

キーデフォルト説明
enabledfalse/fmm shopのマスター切り替え。これがtrueでVault + エコノミープロバイダが両方存在する場合にのみコマンドが登録されます
defaultPrice100.0shopPrice がないレシピに使う価格。0以下なら 100.0 を使用します。この値を変えても保存済みの個別価格は変わりません
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 に表示するかどうか。false だけではクラフトを無効にしません。レシピの有効化と registerCraftingRecipes は引き続き適用されます
shopPriceshop_config.ymlのdefaultPriceこの特定のアイテムのVault通貨コスト

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

権限​

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

権限デフォルト説明
freeminecraftmodels.*opadmin、deleteall、自分・他人の変装、領域保護の回避、ペット管理の権限を付与するワイルドカード
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、/fmm packetdebug、/fmm filmic、/fmm boneglide、/fmm setup、/fmm initialize、/fmm recommendedplugins、/fmm downloadall、/fmm downloadallcontent、/fmm updatecontent、/fmm downloadpluginupdate、/fmm applypluginupdate、/fmm forcereinstallcontent)は freeminecraftmodels.* を確認します
freeminecraftmodels.deleteallopワイルドカードの子。/fmm deleteallへのアクセス
freeminecraftmodels.disguise.selfop送信者に対する/fmm disguise / /fmm undisguiseを許可
freeminecraftmodels.disguise.othersop対象指定のディスガイズ/アンディスガイズと/fmm disguiselistを許可
freeminecraftmodels.bypassregionprotectionoppreventPropPlacementInProtectedRegionsが有効でも、FMMの配置・操作の保護確認を省略。他のプラグインによるキャンセルや空間の条件は無効化しません
freeminecraftmodels.menutrue/fmmクラフタブルアイテムメニューへのアクセス
freeminecraftmodels.shoptrue/fmm shopへのアクセス
freeminecraftmodels.petstrue/fmm petsへのアクセス
freeminecraftmodels.pets.adminopワイルドカードの子。/fmm petadminと/fmm petmigrateへのアクセス
nightbreak.loginopplugin.yml ではなく MagmaCore が登録します。共通コマンド /nightbreaklogin と /nightbreaklogout に必要です
nightbreak.pluginsopplugin.yml ではなく MagmaCore が登録します。共通コマンド /nightbreak plugins に必要です

ペットのコマンドについてはペットで説明しています。

モデルYML設定​

モデルの付属 .yml ファイルは .bbmodel と同じ基本名・ディレクトリを使います。プロップと手持ちアイテムでは設定の使用箇所が異なります。

プロップ​

isEnabled: true
name: "&6Oak Table"
lore:
- "&7Seats four"
voxelize: true
solidify: true
scripts:
- my_prop.lua
フィールド説明
isEnabled定義の有効・無効。デフォルトは true
nameプロップの設置用アイテムの表示名。カラーコードに対応します。指定しない場合、アイテムはモデル名にちなんだ名前になります(例:✦ Oak Table ✦)
lore設置用アイテムのロア。カラーコードに対応します。loreキーを指定すると、デフォルトのロア(設置と回収のヒントにモデル ID を加えたもの)が置き換えられ、空のリスト(lore: [])ならロアが除去されます
scriptsplugins/FreeMinecraftModels/scripts/ にある独立したプロップ用 Lua スクリプト
voxelizeブロックのグリッドと90度刻みの回転に合わせ、回転後の範囲全体に空きがあるか検査します
solidifyボクセル化と併用し、クライアントの衝突用にパケットだけのバリアブロックを送ります。ワールドのブロックではなく、プロップと一緒に除去されます

設置用アイテムのnameとloreは、FMM がそのアイテムを作成するあらゆる場面に適用されます。/fmm itemify、クラフトしたレシピの出力、ショップでの購入、管理者メニューから取り出したアイテムです。ショップの一覧や購入メッセージなどのメニュー項目には、引き続きモデル ID から作られた名前が表示されます。すでにインベントリにあるアイテムは、古い名前とロアのままです。

手持ちアイテム​

isEnabled: true
material: DIAMOND_SWORD
name: "&bFrost Blade"
lore:
- "&7A sword forged in ice"
enchantments:
- "minecraft:sharpness,3"
- "minecraft:unbreaking,2"

material は Bukkit の素材を選び、プロップではなく手持ちアイテムを登録します。name と lore はカラーコードに対応します。エンチャントには名前空間付きの小文字 ID と正の整数レベルを使います。エンチャントがアイテムセットの場合、アイテムのロアには、$itemSetを含むロア行にセットのパーツが表示され、そのような行がない場合はロアの後に表示されます。登録済みアイテムは /fmm giveitem <id> または管理者メニューで受け取ります。プロップのレシピ・ショップは設置用の紙アイテムを作り、ここで定義した手持ちアイテムは作りません。

革の防具を染色するには、EliteMobs の装備と同様に、素材の後に # なしで RGB の16進カラーを追加します:material: LEATHER_CHESTPLATE:ff8800。このサフィックスは、革の防具や革の馬鎧など、名前が LEATHER_ で始まる素材でのみ機能します。それ以外の素材にサフィックスを付けたり、1~6桁の16進数でない値を指定したりすると、アイテムカタログ全体が拒否されます。/fmm reload は現在のカタログを維持し、コンソールにそのファイル名が表示されます。すでにインベントリにあるアイテムは元の色のままです。

更新時の互換性

装備アイテムの Lua スクリプトは廃止されています。空でない scripts:、SHARPNESS,3 のような名前空間のない旧エンチャント、サーバーで使えない素材を持つ手持ちアイテム定義は診断を出してスキップします。作者のファイルは変更しません。旧アイテムスクリプトの指定を削除し、効果はエンチャント定義で作成してください。プロップスクリプトは引き続き対応しています。

杖には魔法武器定義を追加してください。武器の動作をプロップスクリプトや廃止されたアイテムフックに記述しないでください。

運用上のメモ​

  • /fmm reload は現在の一覧を有効に保ちながら、作成されたアイテム、エンチャント、プロップのレシピをインポート・検証します。検証失敗はリロードを拒否し、成功すると config.yml、shop_config.yml、pets.yml、レシピ、モデル、ペットの種族、ペット行動モジュール、パック出力を含む完全な再初期化に進みます。同時の初期化・リロード要求は拒否されます
  • 完全な初期化の成功後、依存プラグインの接続を復元する FmmReloadedEvent を40ティック後に予定します。インポーターによる範囲の狭いコンテンツリロードも成功時に発行します。このリロードはモデル、アイテム、エンチャント、プロップスクリプト、レシピを再構築しますが、config.yml や shop_config.yml は再読込しません。そのコンテンツ処理で稼働中の登録を消去した後に失敗すると FMM は無効になります。プロップレシピの失敗は例外です。FMM は Prop recipe catalog rejected をログに記録し、直前のレシピを有効なまま維持します。検証の拒否はリロード完了ではありません
  • ワールドのアンロード時、FMM はプロップの実行中モデルを除去し、永続的な基礎アーマースタンドを残します。それらのエンティティが再ロードされると重複を除いてプロップを復元します。これはプロップの恒久的な回収・破壊とは別の処理です
  • ZIPの固定タイムスタンプと順序を保持するモデルマップにより不要な変更は減りますが、ファイルシステムの走査順によっては、モデルを変更しなくてもZIPのバイト列やSHA1が変わります。同一の出力は保証されません。リソースパック出力を参照してください。
  • FreeMinecraftModelsはリソースパックを生成するだけで、自分自身ではホスティングしません。
  • ResourcePackManagerはJavaクライアント向けの推奨配布経路として、また混在セットアップに対する最も安全な文書化された経路として、引き続き有効です。
  • WorldGuard、WorldEdit、GriefPrevention、Vault、floodgate、Geyser-Spigot は plugin.yml に softdepend として記載されています。WorldGuard と GriefPrevention が組み込みの保護問い合わせを提供し、WorldEdit は別個の保護プロバイダではありません。Vault と経済プロバイダがショップを有効にします。Bedrock の該当表示方式には、クライアント検出・描画連携・パック配信のすべてが必要です

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

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

  • 公式パッケージのライフサイクル作業には/fmm setup、/fmm downloadall、/fmm updatecontentを使用してください
  • 手動の.bbmodelやその他のローカルコンテンツインポート作業にはimportsフォルダを使用してください
  • レンダリングモード、可視距離、インタラクション距離、Bedrockの挙動、リージョン保護の強制、または自動更新ダウンロードを調整する必要がある場合はconfig.ymlを使用してください
  • モデルが密集したワールドでのパケット/帯域チューニングにはskipUnchangedBoneUpdates、useDeltaMetadataPackets、maxModelsForProximityOverrideを使用してください。3つとも最適化された挙動がデフォルトです。falseや極端に大きい値の設定は、推奨される本番設定ではなく、デバッグやA/B比較のために存在します
  • filmicMode(または /fmm filmic on)は動画の録画中だけ使用し、終わったらオフに戻してください
  • モデルのアニメーションと旋回の挙動を調整するには、idleWalkBlendTicks、deathBlendTicks、weightedTurning、turnSpeedCap、turnAccelerationを使用してください。ブレンド時間を0、weightedTurningをfalseにすると、旧バージョンの瞬時の切り替えと旋回になります
  • displayBonesRideTheirEntityとmodelViewersTrackHiddenBodiesはデフォルトでオンです。falseにすると旧来のボーンごとのテレポートに戻り、動くモデルやマウントがエンティティから遅れてついてくることがあります
  • パーティクルの多いモデルが帯域幅を消費しすぎる場合は、maxParticlesPerEmitter と maxParticlesPerViewer を下げるか、particleEffectsEnabled: false を設定してください
  • コードに触れずに家具ショップを調整するにはshop_config.yml(およびレシピごとのshopEnabled/shopPriceフィールド)を使用してください

既知の注意事項​

  • Bedrockの挙動はsendCustomModelsToBedrockClientsV2と、より広範なFloodgate/Geyser/リソースパックのセットアップの両方に依存します。正確なスタックをテストしていない限り、控えめな主張に留めてください。
  • ショップが有効でも Vault や経済プロバイダがなければ利用できず、起動時に具体的な警告を記録します。/fmm version はプラグインのバージョンだけを表示します。/fmm shop がない場合はその警告を確認してください。