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

FreeMinecraftModels FAQ

ここに記載されていない質問がある場合は、サイドバーを確認して、その内容に特化したページがウィキにないか探してみてください!

はじめに

FreeMinecraftModelsのインストールと使い方は?​

情報

インストール:

  1. FreeMinecraftModels.jarをダウンロードしてpluginsフォルダに配置します
  2. サーバーを再起動してプラグインフォルダを生成します
  3. /fmm setupを実行して初回セットアップ/コンテンツ管理メニューを開きます
  4. 公式コンテンツパックを使用する場合は、/nightbreaklogin <token>でNightbreakをリンクします
  5. Nightbreak管理の公式コンテンツには/fmm setupまたは/fmm downloadallを使用します
  6. 単体モデルは小文字の拡張子.bbmodelで~/plugins/FreeMinecraftModels/imports/直下に配置し、/fmm reloadを実行します。付属ファイルがあるモデルには、有効なモデルフォルダかパッケージ形式のインポートが必要です。モデル作成の注意点を参照してください
  7. 生成されたリソースパックは~/plugins/FreeMinecraftModels/output/FreeMinecraftModels.zipにあります

リソースパックの配布:

以下のいずれかの方法を選択します:

  • オプションA(推奨):自動配布のためにResource Pack Managerをインストールします
  • オプションB:server.propertiesまたはホスティングサービスを介して手動で設定します

モデルのスポーン:

  • /fmm spawn static <id> - 一時的な装飾モデルをスポーン
  • /fmm spawn dynamic <id> - エンティティに付属するモデルをスポーン
  • /fmm spawn prop <id> - 永続的なワールドモデルをスポーン

管理:

  • /fmm - クラフタブルアイテムメニューを開く(freeminecraftmodels.menuが必要)
  • /fmm setup - コンテンツ管理/初回セットアップメニューを開く
  • /fmm recommendedplugins - FMMと相性の良いコンパニオンプラグインを閲覧
  • /fmm downloadall - 最新のプラグイン更新をダウンロードし、続いてアクセス可能な未導入または古いコンテンツを取得します。jarは再起動後または/fmm applypluginupdateの実行後に反映されます
  • /fmm downloadallcontent - プラグインjarを含めず、アクセス可能な未導入または古いコンテンツをダウンロードします
  • /fmm updatecontent - 古くなった公式コンテンツを更新
  • /fmm downloadpluginupdate - 最新のプラグインjar更新のみをダウンロード
  • /fmm applypluginupdate - ダウンロード済みのプラグイン更新を、サーバーを再起動せずに適用
  • /fmm forcereinstallcontent <package|all> - バージョンに関係なく選択したコンテンツを再取得します。完全に未導入のパックはslugを直接指定してください
  • /fmm reload - プラグインをリロードして新しいモデルを変換
  • /fmm version - プラグインのバージョンを表示
  • /fmm stats - エンティティ数の統計を表示
  • /nightbreaklogin <token> / /nightbreaklogout - Nightbreakアカウントトークンを保存・消去するMagmaCoreの共有トップレベルコマンド(権限:nightbreak.login)
  • /freeminecraftmodelschangelog [dismiss|disable] - 未読のFMMリリースノートをゲーム内で読む(管理者専用。参加時にクリック可能なプロンプトとしても提示されます)

プレイヤー機能:

  • /fmm disguise <modelID> [player] - 自分(または対象プレイヤー)の見た目をカスタムモデルに変身させる
  • /fmm undisguise [player] - プレイヤーの変装を解除する
  • /fmm disguiselist - 現在変装中のすべてのプレイヤーを一覧表示する
  • /fmm itemify <model> <material> - 指定したモデルをスポーンする配置可能アイテムを作成する
  • /fmm craftify <modelID> - プロップ用のクラフトレシピを作成するインタラクティブなレシピビルダーを開く
  • /fmm shop - オプションのVault対応家具ショップを開く(shop_config.ymlで有効化されている場合のみ)
  • /fmm mount <modelID> - カスタムモデルにディスガイズした騎乗可能な馬をスポーンする(実験的)

デバッグ:

  • /fmm hitbox visualize [duration] - 近くのモデルのヒットボックスを、指定したティック数だけパーティクルで表示します(既定値100、0以下は100、最大1200)
  • /fmm location - 登録されている保護/ダンジョンプロバイダを報告し、現在地でそれらをテストする
  • /fmm debug bedrock [on|off] - 詳細な[FMM-BedrockDebug]ログの状態を設定します。状態を省略するとその状態を報告します。/fmm reload後も維持され、新しいサーバー起動時は無効です
  • /fmm debug props [on|off] - 起動時、エンティティ読み込み時、スポーン前の確認で重複プロップの診断を有効にするか、その状態を報告します。/fmm reload後も状態を維持し、新しいサーバー起動時にリセットします
  • /fmm packetdebug [ticks] - 指定したモデルクロックティック数(既定値1、範囲1~200、不正入力は1)のパケット負荷を測定し、ティック当たりの数、観察者別の配信量、受信量の多い観察者、種類別内訳を報告します
  • /fmm filmic [on|off] - ReplayModでの録画用に、チャンクを読み込んでいるすべてのプレイヤーにすべてのロード済みモデルを一時的に送信します。録画以外での使用はおすすめしません。フィルミックモードを参照してください

管理者向け:

  • /fmm deleteall [radius] - ロードされているすべてのモデル化エンティティとプロップを削除する(注意して使用 - 確認プロンプトなし)。オプションのプレイヤー専用[radius]を指定すると、その数ブロック以内に削除を限定する

権限:

  • freeminecraftmodels.*(デフォルト:OP) - freeminecraftmodels.admin、freeminecraftmodels.deleteall、freeminecraftmodels.disguise.self、freeminecraftmodels.disguise.others、freeminecraftmodels.bypassregionprotectionを付与するワイルドカード。また、/fmm reload、/fmm stats、/fmm spawn、/fmm itemify、/fmm craftify、/fmm mount、/fmm hitbox visualize、/fmm debug、/fmm packetdebug、/fmm filmic、/fmm location、/fmm setup、/fmm initialize、/fmm recommendedplugins、/fmm downloadall、/fmm downloadallcontent、/fmm updatecontent、/fmm downloadpluginupdate、/fmm applypluginupdate、/fmm forcereinstallcontentに必要な文字どおりの権限でもあります
  • freeminecraftmodels.admin(デフォルト:OP) - /fmm admin(管理者コンテンツブラウザ)と/fmm giveitem
  • freeminecraftmodels.disguise.self(デフォルト:OP) - プレイヤーが自分自身のみをディスガイズ/アンディスガイズできるようにします
  • 対象プレイヤーを指定する disguise と undisguise には、freeminecraftmodels.disguise.self と freeminecraftmodels.disguise.others の両方が必要です。disguiselist は .others のみを必要とします。
  • freeminecraftmodels.deleteall(デフォルト:OP) - /fmm deleteallに必要(ワイルドカードの子)
  • freeminecraftmodels.bypassregionprotection(デフォルト:OP) - FMMの領域保護チェックを迂回します。他のプラグインのすべてのイベント処理や、物理的な空き領域の確認を無効にするものではありません
  • freeminecraftmodels.menu(デフォルト:true) - すべてのプレイヤーが/fmmでクラフタブルアイテムブラウザを開けるようにします
  • freeminecraftmodels.shop(デフォルト:true) - すべてのプレイヤーが/fmm shopを開けるようにします(ショップが有効化されていることが引き続き条件)
  • nightbreak.login(デフォルト:OP) - plugin.ymlではなくMagmaCoreによって登録されます。/nightbreakloginと/nightbreaklogoutに必要です

別途記載がない限り、コマンドはデフォルトでOP専用です。必要に応じてこれらの権限を非OPプレイヤーに付与してください。

モデルの機能と制限

モデルのサイズと回転の制限は?​

情報

サイズ制限:

  • サイズはモデル全体ではなく、各ボーン内のキューブ全体で確認します
  • コンバーターはキューブ座標を0.4倍し、各ボーンを再中心化します。警告しきい値はこの変換後の座標で192です。192モデルピクセルまたは12ブロックという描画限界を検証した値ではありません
  • 警告だけではボーンを拒否・縮小しません。形状が正しく表示されない場合はキューブを縮小する、近づける、複数のボーンに分けるなどして、生成モデルを対象クライアントで確認してください
  • モデル全体は複数のボーンにまたがれます。サイズ警告がないことは、生成リソースパックの形状が有効である証明にはなりません

キューブの回転制限:

  • Minecraft 1.21.6以降: 基本変換(0°、±90°、±180°を形状に適用)へ分解した後、±45°以内の任意の残余角を受け付けます。作成時の角度は通常の−180°~180°に収め、結果を確認してください。分解が受理されても描画の検証にはなりません
  • Minecraft 1.21.4 / 1.21.5: 残余角はMinecraftが対応する−45°、−22.5°、0°、22.5°、45°のいずれかである必要があります。したがって使用可能なのは0°、±22.5°、±45°、±67.5°、±90°、±112.5°、±135°、±157.5°、±180°という22.5°の倍数です
  • すべてのバージョンでキューブ回転は1軸のみです。ループはZからXへ走査し選択を上書きするため、X/Y/Z順で最初の非ゼロ軸が残ります
  • 例:[22.5, 0, 45]ではX回転が残り、Z回転は失われます
  • 分解できない角度はCould not decompose rotation angle ... for model name <model>と記録され、そのまま適用されます。通常は不正な見た目になります

ボーンの回転:

  • ボーンは任意の回転角度をサポートします
  • 多軸回転がサポートされています
  • 可視ボーンは観察者ごとの描画・パケット処理を増やします。構造用・メタデータ用ボーンのすべてが描画されるわけではありません

パフォーマンスに関するメモ:

可能な範囲で可視ボーン数と観察者数を抑えてください。Javaは可視ボーンをパケット上のエンティティで描画し、Bedrock側は別の表現を使います。ボーン数は通常のBukkitエンティティ数ではありません。

どのようなアニメーションがサポートされていますか?​

情報

FreeMinecraftModelsは5つのアニメーション名を自動的なランタイムステートに紐付けます:

ステートアニメーション:

  • spawn — モデル生成時に1回再生され、その後idleへ遷移します
  • idle — 基盤エンティティのXまたはZ速度が非ゼロになるまでループします
  • walk — 水平方向の移動中にループし、接地してXとZの速度がゼロになるとidleに戻ります
  • attack — 1回再生された後、idleに戻ります
  • death — removeWithDeathAnimation()による削除時に1回再生されます

モデル内のそれ以外のアニメーション名はカスタムアニメーションです。自動的に発火することはありませんが、APIまたはLuaから名前を指定して再生できます。

jumpについて

JUMPはAnimationStateType列挙型に存在し、walkステートもエンティティが地面を離れたときにそれを要求しますが、アニメーションマネージャにjumpステートが登録されていないため、この自動遷移は現在何も起こしません。それでも文字どおりjumpという名前のアニメーションは、自分でトリガーすれば動作します。単に他の名前と同じようにカスタムアニメーションの経路を通るだけです。

仕組み:

  • BlockBenchで上記の小文字の名前を使ってアニメーションを作成すると、FMMが対応するステートに自動バインドします
  • プラグインはインポート時に.bbmodelファイルからアニメーションのキーフレームを読み取り、ティックごとのフレームにベイクします
  • ステートアニメーションはエンティティの状態に基づいて自動的にトリガーされます
  • 開発者はModeledEntity上のplayAnimation(animationName, blend, loop)、またはLuaからcontext.prop:play_animation(name, blend, loop)を使用して、任意のアニメーションをプログラムからトリガーできます

プレイヤーディスガイズは異なります:

/fmm disguiseのモデルは、共有の再生エンジンが動く前に5つの名前(attack、jump、sneak、walk、idle)をこの優先順位で選びます。sneakとjumpは変装で自動発動し、通常モデルでもカスタムアニメーションとして明示的に再生できます。単発アニメーションはすべての新規選択を20ティック停止します。idleがないと警告を記録し、ほかの動作がないとき最後のフレームに留まる場合があります。プレイヤーディスガイズを参照してください。

ループモード、補間タイプ、キーフレームのタイミング、IKについてはアニメーションを参照してください。

特殊なケース:

エヴォーカーエンティティは近くのエヴォーカーの牙を検出し、攻撃アニメーションを自動的にトリガーします。

仮想ボーンとは何で、どのように機能しますか?​

情報

仮想ボーンは予約名を持つ特別なボーンで、モデルに機能を追加します:

ヒットボックスボーン:

  • 名前:hitbox(この名前そのもの。大文字小文字は区別しません)
  • インタラクションゾーンとコリジョンボックスを作成します
  • キューブが幅・奥行き・高さを定義し、XとZは異なっていても構いません。変装したプレイヤーのヒットボックスは変わりません
  • outliner上のトップレベルのボーンでなければなりません。別のグループの中に入れ子になったhitboxボーンは通常のボーンとして扱われます
  • キューブは1つにしてください。追加キューブはhas more than one value defining a hitbox! Only the first cube will be used、空グループはhas a hitbox bone but no hitbox cube!を記録し、空の場合は寸法がゼロのままです。キューブの位置・回転はヒットボックスをずらしません
  • アニメーションされず、描画もされず、Bedrockのジオメトリエクスポートからも除外されます

ネームタグボーン:

  • 接頭辞:tag_
  • モデルの上にテキストを表示します
  • エンティティの名前付けに使用します
  • 作成者が指定する任意のアンカーです。なければヒットボックス上方の代替位置を使います。モデルに名前が表示されないのはなぜですか?を参照してください
  • このボーンにキューブは不要です。テキストディスプレイの位置を決めるアンカーにすぎず、通常は頭の上に配置します

頭部回転ボーン:

  • 接頭辞:h_
  • プレイヤー/エンティティの頭の位置に基づいて回転します
  • 頭の動きを自動的に追跡します

非表示/構造用ボーン:

  • 接頭辞:b_
  • Javaのボーン描画では非表示です。Bedrockの形状エクスポーターはb_ボーンを除外しません
  • ジオメトリを生成せずにスケルトン階層には参加させたい、構造用・整理用・メタデータ専用のボーンに使用してください

マウントポイントボーン:

  • 接頭辞:m_
  • 各m_ボーンはモデル上の乗車可能な座席位置になり、MountPointManagerによって管理されます
  • 座席はアニメーションを通じてボーンに追従します
  • 複数のm_ボーンで複数の座席が作成されます
  • Bedrockのジオメトリエクスポートからは除外されます
  • 後述のマウントポイントボーンとは何ですか?を参照してください

使い方:

BlockBenchでこれらの特別な名前のいずれかを持つボーンを作成すると、プラグインが対応する機能を自動的に適用します。

トラブルシューティングFAQ

カスタムモデルの代わりに、馬鎧しか見えません。​

情報

モデルの代わりに馬鎧が見えるのは、期待したカスタム外観が適用されていないためです。FMMがモデルを生成したか、現在のパックに含まれるか、クライアントがそのパックをダウンロードして受け入れたかを確認してください。マージ競合は考えられる原因の1つです。

MagmaGuyはResource Pack Manager(RSPM)というプラグインを開発しており、リソースパックを自動的にマージしてくれます。Spigotからこちらでダウンロードできます。

RSPMは生成パックのマージ・ホスティング・配布を行えます。セットアップガイドに従い、有効なパックソースとアクセス可能な配信アドレスを確認してから、クライアントを再接続しモデルの表示を確かめてください。

.bbmodelファイルを追加した後、モデルが見えないのはなぜですか?​

情報

モデルが表示されない場合は、以下のよくある問題を確認してください:

1. リロードを忘れている

.bbmodelをimportsフォルダに置いた後、/fmm reloadを実行してコンソールを確認してください。候補の検証に失敗すると現在のランタイムが維持されるため、コマンド実行だけでは新しい内容が適用された証拠になりません。

2. リソースパックが適用されていない

プレイヤーがモデルを見るには、FMMリソースパックが有効になっている必要があります。

  • 生成されたパックについて~/plugins/FreeMinecraftModels/output/FreeMinecraftModels.zipを確認してください
  • 自動配布のためにResource Pack Managerをインストールしてください
  • または、server.propertiesやホスティングサービスを介して手動で配布してください

3. ファイルの場所が間違っている

単体の.bbmodelは~/plugins/FreeMinecraftModels/imports/直下に置きます。この方法はソースを残すため、以降のリロードでも再変換できます。単体の付属YAMLは読み込まず、任意のサブフォルダも再帰走査しません。付属ファイルを持つモデルはmodels/に置くか、正しく構成したパッケージからインポートしてください。

代わりに公式コンテンツパックを使用している場合は、ファイルを手動でドロップするのではなく、/fmm setupまたは/fmm downloadallを使用してください。

4. モデルにエラーがある

/fmm reload中のエラーメッセージについてコンソールログを確認してください。よくある問題には、サポートされていない回転、サイズ超過のモデル、テクスチャの問題などがあります。

5. リソースパックのマージの問題

クライアントにパックがあるのに基本素材が表示される場合、生成定義とテクスチャパス、マージ出力、クライアントのパックバージョンを確認してください。RSPMはマージと配信を管理できますが、導入しただけでは成功を証明できません。

6. モデルIDの衝突

コンソールに [FMM Models] Rejected normalized model ID collision が出ていないか確認してください。2つ以上のモデルファイルが同じIDに正規化され、内容が異なるため、そのすべてが拒否されています。後述のモデルがID衝突で拒否されたのはなぜですか?を参照してください。

モデルがID衝突で拒否されたのはなぜですか?​

情報

FreeMinecraftModelsは、すべてのモデルファイル名をランタイムのモデルIDおよびリソースパックのファイル名として使う前に正規化します。まず小文字化し、続いて a-z、0-9、.、_、- 以外のすべての文字をアンダースコアに置き換えます。

つまり、以下はすべて同じID my_table に収束します:

My Table.bbmodel
my table.bbmodel
my_table.bbmodel
MY_TABLE.bbmodel

変換が始まる前に、FMMはモデルツリー全体をスキャンしてこの衝突を検出します。2つのコンテンツパッケージが同じモデルを同梱している場合など、衝突するファイルがすべてバイト単位で同一であれば、FMMは1つのコピーを読み込み、残りを警告なしでスキップします。それ以外の場合は、余分な方だけでなくすべての衝突ファイルが拒否されるため、「最後に読み込まれたものが勝つ」という予測不能な結果になることはありません。コンソールには次のように出力されます:

[FMM Models] Rejected normalized model ID collision '<id>'. These files normalize to the same ID: <paths>. Rename the files so every normalized model ID is unique; no colliding model was loaded.

対処法: 正規化後のIDが異なるようにファイル名を変更し、/fmm reload を実行してください。警告には関係するファイルの絶対パスが正確に列挙されます。

予防策: モデルツリー全体で一意な、小文字とアンダースコアのファイル名(stone_table.bbmodel)を使ってください。フォルダが違っても同じ基本名は重複し、別のファイル名が同じIDに正規化される場合もあります。

拒否されたモデルはあらゆる場所でスキップされます。Javaパックの出力にも、Bedrockのカスタムエンティティバンドルにも含まれません。

モデルに名前が表示されないのはなぜですか?​

現在のランタイムでは名前表示にtag_ボーンは必須ではありません。存在すればアルファベット順で最初のタグボーンを使い、なければモデルのヒットボックス上方に表示します。

モデルを管理するプラグインが空でない表示名を設定し、ネームプレートを隠していないか確認してください。位置が不適切ならヒットボックスを見直すか、Blockbenchでキューブを持たないtag_nameアンカーを追加します。複数のタグボーンで名前が繰り返されることはありません。名前表示の作成を参照してください。

ViaVersionによってリソースパックが正しく表示されないことがあります。​

情報

現在のFMMはMinecraft 1.21.4以降のサーバーを必要とします。プロトコル変換で新しいクライアントを接続できても、古いサーバーがFMMの対応環境になるわけではありません。

パックの診断ではまず、対応サーバーと同じバージョンのクライアントで再現してください。現在のパックをダウンロードし、そのアイテムモデル形式を描画できることを確認してから、プロトコル変換経由の接続と比較します。モデルが表示されない原因をすべてViaVersionと決めつけず、サーバー・クライアント・プロトコルプラグインのバージョンを記録してください。

モデルがラグやパフォーマンスの問題を引き起こすのはなぜですか?​

情報

可視ボーンが多いモデルは変換・パケット・クライアント描画の処理を増やします。観察者数も影響します。

最適化のヒント:

  • モデル内のボーン数を最小限に抑える
  • スポーンするモデルの数を制限する
  • 生きた基盤エンティティが不要ならStaticモデルを使う。Staticモデルでもアニメーションは可能です
  • ボーン数の多いモデルを互いに近接して大量にスポーンさせない

技術的な説明:

Java描画は非表示・メタデータ専用の表示経路を除き、ボーンごとにパケット上のエンティティを使います。Bedrock側はモデル全体をカスタムエンティティで表現できます。50ボーンのモデルが必ず通常のサーバーエンティティ50個を作ったり、すべてのクライアントに可視エンティティ50個を送ったりするわけではありません。

ベストプラクティス:

  • ボーン数を少なくしてモデルを設計する
  • 現実的なスポーン数でパフォーマンスをテストする
  • 新しいモデルを追加する際はサーバーのTPSを監視する

測定方法:

問題の場所で/fmm packetdebug 20を実行してください。次の20モデルクロックティックのパケット数と観察者別配信量、受信量の多い観察者、パケット種類を報告します。通信量の調査には役立ちますが、CPUプロファイルやクライアントが実際に描画した証拠ではありません。

組み込みのパケット最適化:

パケット側の最適化は3つの config.yml キーで制御されます。いずれも最適化された挙動がデフォルトであり、別の設定はチューニングの推奨ではなくデバッグのために存在します:

  • skipUnchangedBoneUpdates(デフォルトtrue)— 色変更などで明示的に変更済みと記録された場合を除き、変化のない変換更新を省略します。モデル処理や観察者への通信をすべてなくすものではありません
  • useDeltaMetadataPackets(デフォルト true)— ティックごとのメタデータパケットは、アイテムディスプレイのブロブ全体を再シリアライズするのではなく、変化したトランスフォームだけを運びます
  • maxModelsForProximityOverride(デフォルト 25)— 10ブロック以内のモデルは通常常に表示され、ポップインを避けるため視線判定のレイトレースがスキップされます。ワールドがこの数のロード済みモデルを抱えると、そのワールドではオーバーライドが無効になり、至近距離でもオクルージョンカリングが実行されます。プレイヤーが別フロアのモデルのビューアーにされてしまう複数フロアのNPCハブでは、まずこのキーを確認してください

完全な説明は設定を参照してください。

高度な機能

Resource Pack Manager(RSPM)は必要ですか?​

情報

Resource Pack Manager(RSPM)はオプションですが強く推奨されます。

RSPMが行うこと:

  • 複数のプラグインからのリソースパックを自動的にマージします
  • リソースパックをホスティングします(外部ホスティング不要)
  • ログイン時にプレイヤーへパックを自動的に配布します
  • 手動のパック管理を減らします。ソース選択・ホスティング・クライアントの受け入れ確認は必要です

RSPMなしの場合:

手動で以下を行う必要があります:

  • FMMリソースパックを既存のサーバーリソースパックとマージする
  • マージしたパックを到達可能なダウンロードURLでホストする
  • server.propertiesまたは別のパック送信機能で、そのURLをプレイヤーに送る。server.properties自体はファイルをホストしません
  • 新しいモデルを追加するたびにパックを更新する

RSPMを使う理由:

RSPMはマージ・ホスティング・配信の共通手順を提供します。モデルが表示されないときは、生成出力と実際のクライアントを確認してください。

RSPMをダウンロード:https://www.spigotmc.org/resources/resource-pack-manager.118574/

FreeMinecraftModelsと同じ作者であるMagmaGuyが開発しています。

自分のプラグインでFreeMinecraftModelsを使用できますか?​

情報

はい、FreeMinecraftModelsは開発者向けのAPIを提供しています。

Maven/Gradle統合:

リポジトリ:https://repo.magmaguy.com/releases

アーティファクト:

  • GroupId:com.magmaguy
  • ArtifactId:FreeMinecraftModels
  • Scope:provided(サーバーにインストールする必要があり、シェードしないでください)

主要なAPIクラス:

  • ModeledEntity(基底クラス)
  • StaticEntity
  • DynamicEntity
  • PropEntity

使用例:

StaticEntity staticEntity = StaticEntity.create(id, location);
if (staticEntity == null) {
Bukkit.getLogger().warning("Failed to create model");
return;
}
staticEntity.setRightClickCallback(...);
staticEntity.remove();

重要:

FreeMinecraftModelsを自分のプラグインにシェードしないでください。サーバーに別途インストールする必要があります。

詳細なAPIドキュメントについては、公式READMEを参照してください。

プレイヤーをカスタムモデルにディスガイズするには?​

情報

/fmm disguiseコマンドは、プレイヤーの見た目を任意のカスタムモデルに変身させます。

コマンド:

/fmm disguise <modelID> [player]
/fmm undisguise [player]
/fmm disguiselist

仕組み:

  • プレイヤーを他のプレイヤーから見えなくします
  • プレイヤーの位置にカスタムモデルを重ねます
  • モデルがプレイヤーの動きに追従します
  • ロールプレイサーバーや特別なイベントに最適です

例:

/fmm disguise dragon              # Disguise yourself
/fmm disguise dragon Steve # Disguise another player
/fmm undisguise Steve # Undisguise Steve
/fmm disguiselist # List everyone currently disguised

要件:

  • 自分を対象とする場合:freeminecraftmodels.disguise.self(デフォルト:OP)
  • 対象プレイヤーを指定する disguise と undisguise には、freeminecraftmodels.disguise.self と freeminecraftmodels.disguise.others の両方が必要です。disguiselist は .others のみを必要とします。
  • プレイヤー名が指定されていれば、コンソールから対象指定形式を実行できます
  • modelIDは読み込み済みモデルと完全一致する必要があります
  • サードパーティプラグインは公開DisguiseAPI経由でディスガイズを駆動できます

メモ:

  • プレイヤーのヒットボックスは変更されません(同じコリジョンボックス)
  • 他のプレイヤーには、あなたのプレイヤースキンの代わりにカスタムモデルが見えます
  • すでに変装中に再度ディスガイズすると、以前のディスガイズがクリーンに置き換えられます
  • 関連する効果変更の後、FMMが透明化を復元するのは、この変装が最初に効果を追加した場合だけです。既存の効果は復元しません。プレイヤーディスガイズを参照してください

配置可能なモデルアイテムを作成するには?​

情報

/fmm itemifyコマンドは、プレイヤーがワールドにモデルを設置するために使用できる特別なアイテムを作成します。

コマンド:

/fmm itemify <model> <material>

パラメータ:

  • model - modelsフォルダ内の任意の有効なモデルID
  • material - 任意のMinecraftマテリアル(STICK、PAPER、DIAMONDなど)

例:

/fmm itemify lamp_post STICK

作成されるもの:

  • 金で装飾された整形済みの表示名を持つカスタムアイテム(例:「✦ Wolf ✦」)
  • アイテムを説明する説明的なロア
  • アイテムはインベントリに直接追加されます。あふれた分はドロップしないので空きを確保してください
  • メインハンドから右クリックすると、FMMの配置チェックに従ってプロップを設置します。クリエイティブ以外ではスポーン成功後にアイテムを消費します

使用例:

  • プレイヤーに建築物を装飾するためのアイテムを与える
  • 家具用のカスタム「スポーンエッグ」を作成する
  • 設定済みの保護チェックを維持しながら配置アイテムを配布する
  • クリエイティブ建築用のセットアップキット

要件:

  • 権限:freeminecraftmodels.*
  • プレイヤーがゲーム内にいる必要があります(コンソール不可)

モデルのヒットボックスをデバッグするには?​

情報

/fmm hitbox visualizeコマンドは、パーティクルを使ってモデルのヒットボックスを可視化します。

コマンド:

/fmm hitbox visualize [duration]

パラメータ:

  • durationは省略可能で、既定値は100ティックです。0以下は100ティック、上限は1200です
  • 20 tick = 1秒

例:

/fmm hitbox visualize 100      # Show for 5 seconds
/fmm hitbox visualize 200 # Show for 10 seconds

仕組み:

  • 自分から10ブロック以内のモデルを検索します
  • 向きのある境界ボックス(OBB)の境界をパーティクルで表示します
  • モデルとそのコリジョン境界の両方を表示します
  • ヒットボックスのサイズと回転の検証に役立ちます

投射物検出は追跡した位置の間の線分を調べ、薄いOBBの通過を検出します。前の位置がない場合は重なり判定を使います。近い命中から処理し、通常の投射物はモデル対象1体、貫通矢は異なるモデル対象pierce level + 1体に命中できます。モデルへの命中をキャンセルするとコールバックや標準ダメージを防ぎますが、対象数の枠は消費します。投射物APIを参照してください。

使用するタイミング:

  • ヒットボックスが視覚的なモデルと一致するかのテスト
  • インタラクションの問題のデバッグ
  • ヒットボックスの回転の検証
  • クリック検出のトラブルシューティング

要件:

  • 権限:freeminecraftmodels.*

メモ: FMMのヒットボックスは、標準のMinecraft AABBとは異なり、モデルと一緒に回転します。

騎乗可能なカスタムモデルを作成できますか?​

情報

はい、/fmm mountコマンドを使って騎乗可能なカスタムモデルを作成できます(実験的機能)。

コマンド:

/fmm mount <modelID>

動作内容:

  • 自分の位置に馬をスポーンします
  • 馬をカスタムモデルにディスガイズします
  • 馬を自動的に手懐けてサドルを追加します
  • 1ティック後に騎乗を試みます。マウントポイントがなければ馬に直接乗せ、ある場合はマーカー防具立てを介します

例:

/fmm mount dragon

要件:

  • 権限:freeminecraftmodels.*
  • 有効なモデルID

重要なメモ:

  • この機能は実験的としてマークされています
  • 手懐けた成馬を使い、移動速度の基本値は0.3、ジャンプ力の基本値は0.7です
  • 馬のヒットボックスは変更されません
  • 乗り物用に設計されたモデルで最も効果的に機能します

使用例:

  • ロールプレイサーバー用のカスタム乗り物
  • VIPプレイヤー用の特別な移動手段
  • アドベンチャーマップ用のユニークな騎乗可能クリーチャー

マウントポイントボーンとは何ですか?​

情報

マウントポイントを使うと、特別に名付けられたボーンを使ってモデル上に騎乗位置を直接定義できます。

マウントポイントの作成方法:

Blockbenchで、大文字小文字を区別する接頭辞m_(例:m_seat、m_back)をボーン名に付けます。それぞれがプレイヤー用に管理される座席位置になります。

仕組み:

  • マウント位置はボーンの位置に追従し、アニメーションも含みます
  • 複数のm_ボーンは複数の座席を作成します
  • 座席マネージャーはAPIやLuaからプレイヤーを受け付け、最初の空席を選びます。座席はサイズゼロの一時的なInteractionエンティティを使い、乗車中に更新されます

テスト:

プロップの座席はプロップを生成・配置して右クリックするか、Luaのcontext.prop:mount(player)を呼んで確認します。/fmm mount <modelID>は馬を基盤にした実験的な乗り物を作る別の騎乗経路です。

使用例:

  • 複数座席の乗り物(ボート、馬車)
  • 特定の座席位置を持つ騎乗可能クリーチャー
  • 肩乗りのペットやコンパニオン

カスタムアイテム

カスタムアイテムとは何ですか?​

カスタムアイテムはモデルの隣のYAMLでmaterial:を定義した手持ちアイテムです。識別にはfmm_item_idを使い、/fmm itemifyのプロップ配置アイテムはmodel_idを使います。

モデルと同名のYAMLを作り、materialを設定します。必要に応じてname、lore、名前空間付きのenchantmentsを追加してください。

isEnabled: true
material: DIAMOND_SWORD
name: "&6Flame Blade"
enchantments:
- "minecraft:fire_aspect,2"

freeminecraftmodels.admin権限で/fmm giveitem <id>または/fmm adminを使ってください。

カスタムアイテムは今もLuaスクリプトを実行しますか?​

いいえ。従来の装備アイテム用ランタイムと22個のフックは廃止されました。空でないscripts:リストを持つ手持ちアイテム定義や、FIRE_ASPECT,2のような名前空間のない古いエンチャント指定はスキップされます。ファイルは変換・書き換えされません。プロップのLuaスクリプトは変更されていません。

アイテム効果にはプロバイダー管理のエンチャント、ワンドやスタッフには魔法武器定義を使ってください。

メニュー

FMMはどのようなメニューを提供しますか?​

情報

FMMは以下の2つの閲覧メニューに加え、別途セットアップ、レシピ作成、任意のショップメニューを提供します。

プレイヤーメニュー — /fmm

  • 権限:freeminecraftmodels.menu(デフォルト:true、全プレイヤーが使用可能)
  • クラフトレシピを正常に登録した項目のみを表示します。registerCraftingRecipes: falseではこの一覧から除かれます
  • アイテムをクリックすると、3x3クラフトグリッドのプレビューを含む詳細ビューが表示されます
  • 紙のプロップ配置アイテムのレシピを確認できます。作成者が定義する手持ちアイテムとは別です

管理者メニュー — /fmm admin

  • 権限:freeminecraftmodels.admin(デフォルト:OP)
  • 以下を表示する完全なコンテンツブラウザ:
    • 有効で、コンテンツが読み込まれたパッケージ
    • 未パッケージ化のモデルフォルダ
    • ルートレベルのモデル
    • 正常に登録されたカスタムアイテム
  • パッケージやフォルダの項目は一覧を開き、個別項目はアイテムを付与します。パッケージの有効化やダウンロードには/fmm setupを使ってください

ディスプレイモデル

ディスプレイモデルとは何ですか?​

情報

ディスプレイモデルを使うと、カスタムアイテムが、デフォルトのマテリアルの見た目の代わりに、プレイヤーのインベントリと手に3Dモデルを表示できます。

ディスプレイモデルのセットアップ方法:

  1. BlockbenchでFile > Export > Java Block/Itemを使って.jsonモデルファイルをエクスポートします
  2. .jsonファイルを同じベース名で.bbmodelファイルの隣に配置します(例:magic_sword.bbmodelの隣にmagic_sword.json)
  3. /fmm reloadを実行します

仕組み:

  • 登録済みディスプレイモデルは、クライアントが生成パックを受け入れると手持ち・インベントリの外観を置き換えられます
  • 名前空間のないテクスチャ参照は対応する数値キーを使い、見つからなければ利用可能な抽出済みテクスチャを使います。インデックス0になる保証はありません。名前空間付き参照は保持します
  • .jsonファイルが存在しない場合、アイテムはプレーンなマテリアルの見た目にフォールバックします
  • 現在のプラグインはMinecraft 1.21.4以降を必要とします。古い描画分岐があっても、古いサーバーが対応環境になるわけではありません

要件:

  • Minecraft 1.21.4以降を実行しているサーバー
  • モデルの隣に置いた有効なBlockbench「Java Block/Item」エクスポート(.json)。不正なJSONは登録されません。弓・クロスボウの状態グループには、対応するすべての状態モデルと表示JSONが必要です