カスタムモデル
EliteMobs は Model Engine と FreeMineCraftModels を通じてカスタムモデルをサポートしています。
はじめに
EliteMobs の観点からは、カスタムモデルシステムは非常にシンプルです。管理者がやるべきことは、どのカスタムモデルを使用するかを指示する行を NPC またはカスタムボスの設定ファイルに追加するだけだからです。しかし、このシステムを完全に機能させるには、Model Engine と Minecraft で正しい手順を踏む必要があり、これらはそれほど簡単に取りかかれるものではありません。
このガイドは、Model Engine と Minecraft とのインターフェイスに関しては詳しく説明します。Blockbench を使ってカスタムボスを作成する方法は説明しませんし、Model Engine がどのように機能するかについても詳しく説明しません。それらの方法に関するガイドはすでにほかにたくさんありますし、それらのシステムについてもっと学びたい場合は、それらのドキュメントを直接見たほうがよいでしょう。
FreeMineCraft Models
FMM を使ってモデルを動作させる方法を学びたい場合は、こちらの wiki ページを確認して詳しく学べます。
現在の FreeMinecraftModels は、tag_head など作者が配置した tag_ ボーンがあれば使い、なければモデルのヒットボックス上方に名前を表示します。アンカーで表示位置を選べますが、名前表示の必須条件ではなくなりました。FMM は EliteMobs NPC の名前と役割の行を含め、ネームプレート全体を管理します。古い FMM ビルドではアンカーが必要な場合があります。
Bedrock(Geyser)対応
Bedrock のプレイヤー(Geyser/Floodgate を通じて接続)がカスタムモデルを見ることができるかどうかは、EliteMobs ではなく、完全にあなたのモデルプラグイン(ModelEngine または FreeMinecraftModels)とリソースパックのセットアップに依存します。EliteMobs は Bedrock クライアントを検出しますが、その情報はメニューの描画やネームタグの配置などに使用するのであって、別の Bedrock 互換モデルを生成したり提供したりはしません。Bedrock/Geyser のモデルサポートについては、あなたのモデルプラグインのドキュメントを参照してください。
LibsDisguises連携
EliteMobs はカスタムモデルの代替として LibsDisguises もサポートします。設定済みで利用可能なモデルが変装より優先され、使えるモデルが選択されていなければ設定した変装を使用できます。この連携は名前の表示状態を同期します。
LibsDisguises を使うには、customModel フィールドを指定せずにボス/NPC の変装を設定します。
アイテムモデルと魔法武器(FMM)
FMM によるアイテム表示には fmmItemModel を使います。作者が定義した魔法武器には weaponType: WANDS または weaponType: STAVES も指定します。EliteMobs は名前、ロア、エンチャント、レベルを維持し、FMM はモデルと、魔法武器の場合は攻撃定義を提供します。
従来の scriptedItem 連携は、定義済みアイテムの識別情報と表示用に残っています。装備アイテムの Lua スクリプトは実行せず、FMM は空でない scripts リストを含むアイテム定義を拒否します。作者定義の魔法武器と組み合わせないでください。
# Example EliteMobs custom item config
material: IRON_SWORD
name: "&cFlame Blade"
enchantments:
- "FIRE_ASPECT,2"
scalability: scalable
fmmItemModel: flame_blade
参照する FMM アイテムまたはモデルが存在する必要があります。表示モデルが見つからなければ、警告とともにバニラ素材の表示が残る場合があります。明示した weaponType が利用可能な定義済み武器と一致しなければ、アイテム生成は拒否されます。FMM の魔法武器とカスタムアイテム設定を参照してください。
最低要件
EliteMobs、互換性のある FreeMinecraftModels ビルドまたは ModelEngine 連携*、Blockbench**、Minecraft リソースパックが必要です。ModelEngine 連携は R3 API を対象とし、EliteMobs は ModelEngine が有効で、そのバージョンに R3 が含まれる場合にだけこれを選択します。新しいメジャーバージョンが自動的に対応するわけではありません。
* このプラグインにはさらなる依存関係があるかもしれません。それらの側のドキュメントを確認してください。
** カスタムモデルの作成と編集に必要です。コンテンツを変更せずにインストールするだけなら不要です。
ModelEngine と FreeMinecraftModels の両方がインストールされている場合、EliteMobs はデフォルトで FreeMinecraftModels を使用します。同時にアクティブになるカスタムモデルプラグインは 1 つだけです。
カスタムモデルを手動で設定する
注意: このガイドは、すでに有効なカスタムモデルを持っていることを前提としています。これらは Blockbench のファイル形式(.bbmodel)で提供されます。
EliteMobs は NPC とカスタムボスにカスタムモデルを使用できます。これを行うプロセスは両者で同じであり、次のとおりです:
ステップ1. EliteMobs設定を行う
変更したいカスタムボスまたは NPC の設定ファイルに移動し、次の行を追加します:
customModel: modelname
modelname をあなたのモデルの名前に置き換えてください。名前は、使用しているカスタムモデルファイルの名前です。例として、Test Boss のカスタムモデルファイルは showcase_boss.bbmodel です。したがって、設定オプションは次のようになります
customModel: showcase_boss
EliteMobs についてはこれで完了です! ここからが少しややこしくなります。
ステップ2. Model Engineデータの生成
以下のパスはアーカイブ済みの ModelEngine インポートガイドに基づきます。使用中の ModelEngine ビルドに合った手順に従ってください。
- カスタムモデルの Blockbench ファイル(
.bbmodel)を、ディレクトリ(yourServer)/plugins/ModelEngine/blueprintsに入れます。 - 使用中の ModelEngine バージョンのモデル再読み込みコマンドを実行します。アーカイブ済みガイドでは
/meg reload modelsです。読み込み済みレジストリにモデルが存在することと、コンソールのエラーを確認してください。
ステップ3. リソースパックの配布
サーバーにダウンロードを管理させたい場合、これがおそらく最もややこしい部分です。自動配布を検討する前に、クライアントにリソースパックを入れた状態でシステムが機能するかどうかを確認してみてください!
- ディレクトリ
(yourServer)/plugins/ModelEngine/resource packに移動し、そのデータを使ってリソースパックを作成するか、そこにあるassetsフォルダをあなたのリソースパックのassetsに追加します - リソースパックをプレイヤーに配布します。リソースパックを持っているプレイヤーだけがカスタムモデルを見ることができます。それ以外の全員には非常に奇妙で壊れたように見えます。これらを多用するつもりなら、リソースパックの使用を強制したいかもしれません。
- (任意)プレイヤーがログイン時にリソースパックをダウンロードできるようにするには、ファイルをどこかオンラインでホストし、server.properties の
resource-pack=フィールドをそのアドレスを指すように変更する必要があります。* - 自動ダウンロードでは、完成したZIPのSHA-1を
resource-pack-sha1=に設定します。PowerShellの(Get-FileHash -LiteralPath "pack.zip" -Algorithm SHA1).Hash.ToLowerInvariant()またはLinuxのsha1sum pack.zipでローカル計算できます。40文字のハッシュだけをコピーし、ZIPを変更するたびに更新してください。 - (任意)プレイヤーにリソースパックの使用を強制するには、server.properties で
require-resource-pack=trueオプションを使用します。*
- (任意)プレイヤーがログイン時にリソースパックをダウンロードできるようにするには、ファイルをどこかオンラインでホストし、server.properties の
server.properties を変更した場合は、再起動する必要があります!
* 注意: これらの手順で解決しない場合に、これを機能させる手助けをしてくれるガイドがオンラインにたくさんあります。
リソースパックの統合
パックは手動で統合するか、Nightbreak のパック運用に ResourcePackManager を使用できます。merge.elmakers などの外部ツールは ZIP を結合できますが、モデル ID の衝突を解決し、対象クライアントで統合パックを確認する必要があります。
ステップ4. モデルを確認する
モデルレジストリの読み込みとクライアントへの対応パックの適用が済んだら、実際のボスや NPC でモデルを確認します。次のコマンドはプレイヤーからの実行と対応する権限が必要です:
- カスタムボス:
/em spawn boss filename.yml—elitemobs.place.admin。見ている位置にスポーンします。 - NPC:
/em place npc filename.yml—elitemobs.place.npc。立っている位置に永続的な配置を保存します。
/em remove は削除モードを切り替えます。対象を殴って削除し、もう一度コマンドを実行してモードを終了します。配置した NPC をこの方法で削除すると、保存済みの配置も消えます。
EliteMobs用にカスタムモデルを作成・適応させる
選択したプロバイダーが対応し、正常に読み込めたモデルを使ってください。プロバイダーの互換性や対応するモデル機能の制限は引き続き適用されます。
しかし、アニメーションに関しては、ボスがアニメーションを使用できることを保証するために、特定の名前をアニメーションに使用することが必要です。
これらのアニメーション名は、Blockbench のアニメーションタブで設定するものです。いつでも名前を変更できるので、既存のあらゆるモデルを EliteMobs で動作するように後付けできます。
アニメーション
EliteMobs の自動フックには、次のアニメーション名を使用します。
idle
idle は一般的な待機アニメーション名です。EliteMobs は ModelEngine モデルを既定の待機状態で開始し、その後の待機・移動アニメーションの選択はモデルプロバイダーが担当します。
walk
walk は一般的な移動アニメーション名です。EliteMobs はモデルの取り付け時に walk を明示的に開始しません。移動アニメーションの選択は ModelEngine/FMM が担当します。
attack
攻撃アニメーションには 3 種類あります:
attack
attack は、ボスが攻撃するときの正しい汎用アニメーション名です。
attack_melee
attack_melee は、Bukkit のエンティティ間ダメージイベントでカスタムボスが直接の加害者になったとき、attack に優先します。再生要求はイベント処理中に行われ、攻撃を遅らせる予備動作ではありません。キャンセル済みイベントは無視しますが、後続のリスナーがダメージをキャンセルすることは可能です。短いアニメーションを使い、ダメージ発生時刻の制御には頼らないでください。
attack_ranged
attack_ranged は、発射物のスポーンイベントでカスタムボスが生体の発射者として識別されたとき、attack に優先します。発射物のスポーンに反応するもので、アニメーション終了まで発射を待たせるわけではありません。その発射者との関連付けがない発射物では、この自動フックは動きません。
アニメーション・フォールバックシステム
EliteMobs は攻撃アニメーションにフォールバックシステムを使用します:
attack_meleeが定義されていない場合、attackにフォールバックしますattack_rangedが定義されていない場合、attackにフォールバックします- FMM は再生前に
attackの存在を確認します。ModelEngine アダプターはこの代替名をアニメーションハンドラーに渡します
これにより、すべての攻撃タイプに対して機能する単一の攻撃アニメーションを作成することも、近接攻撃と遠隔攻撃用に特化したアニメーションを作成することもできます。
damaged
EliteMobs は自動の damaged アニメーションフックを登録しません。プロバイダーによる被ダメージ時の色変更やその他の表示は、この名前のアニメーション再生とは別です。
death
EliteMobDeathEvent で、EliteMobs はカスタムボスのモデルに death が存在すれば再生を要求します。削除やフェーズ変更は死亡イベントと同じではありません。再生とモデルの後片付けはプロバイダーのライフサイクルにも依存します。
powers
パワー名とモデルのアニメーション名を自動で対応付ける機能はありません。
名前の自動対応はありませんが、両方のスクリプトシステムから名前を指定して再生できます:
- EliteScript:
PLAY_ANIMATIONアクションの値にアニメーション名を指定します。各ターゲットをカスタムボスとして解決し、そのモデルで再生します。 - Lua:
context.boss:play_model_animation("animation_name")。
どちらも、その名前のアニメーションがモデルにない場合やボスにカスタムモデルがない場合は、通知せずにスキップします。
ダンジョンからカスタムモデルをインポートする
ステップ1. 通常のインポート
カスタムモデルを含むダンジョンパッケージャーの zip フォルダをインポートすると、カスタムモデルはインストールされているモデルプラグインへ移動されます。
- FreeMinecraftModels がインストールされている場合 — モデルは
(yourServer)/plugins/FreeMinecraftModels/models(旧来のModelsフォルダが既に存在する場合はそちら)へ移動され、.bbmodelファイルは移動時に.fmmodelへ変換されます。その後 EliteMobs がモデルインストールイベントを発火し、FMM がモデルレジストリを再構築します。 - ModelEngine のみの場合 — モデルは
(yourServer)/plugins/ModelEngine/blueprintsへ移動します。現在の共有インポーターは ModelEngine を自動で再読み込みしません。バージョンに合ったコマンドでモデルとリソースパックを再構築してください。
インポートで FMM のモデル再構築が始まると、EliteMobs は FMM が初期化済みになるまで最大 **300秒(5分)**待ちます。FMM の失敗・無効化、タイムアウト、待機の中断が発生すると、不完全なモデルやアイテムを読み込む前に EliteMobs の初期化を停止します。両プラグインのコンソールエラーを確認し、再構築の問題を解決してから再起動してください。これは一部のモデル付きエンティティだけを省略して正常起動する動作ではありません。
ステップ2. リソースパック
EliteMobs は起動時に組み込みパックを (yourServer)/plugins/EliteMobs/resource_pack/em_rsp_defaults へ出力し、親フォルダーに .rsp_checksum を保存します。同梱パックと保存済みのチェックサムが一致し、em_rsp_defaults が存在すればコピーを省略します。プラグインのバージョン変更だけでは強制出力されず、チェックサムの一致は各出力ファイルのローカル編集や削除を検査しません。置換は事前に用意したディレクトリとの交換で行います。独自のパック変更は、この生成フォルダーとは別に管理してください。
これらのリソースパックファイルを、Model Engine のリソースパックファイルと統合し、統合したリソースパックをプレイヤーに配布する必要があります。リソースパックを持っているプレイヤーだけがカスタムモデルを見ることができます。
トラブルシューティング
よくある問題:
-
モデルが見えない:
- 選択したプロバイダーのレジストリにモデルがあることを確認し、そのプロバイダーとバージョンの再読み込みコマンドを使う
- リソースパックがクライアントにインストールされていることを確認する
customModelが登録済みモデル ID(通常は拡張子なしのファイル名)と一致することを確認する
-
アニメーションが再生されない:
- Blockbench のアニメーション名が、ドキュメントに記載された名前と正確に一致していることを確認する
- 一度だけ再生すべきアニメーションがループに設定されていないことを確認する
- 選択したプロバイダーのコマンドで各アニメーションをテストする
-
両方のプラグインがインストールされている:
- 両方が存在する場合、EliteMobs は FreeMinecraftModels を使用します
- モデルごとのプロバイダー選択はありません。代わりに ModelEngine を使うには、FreeMinecraftModels を無効にし、R3 の ModelEngine ビルドを使用してください
-
ボスや NPC の名前が表示されない(FMM):
- まず
name、ボスのalwaysShowName、モデルの読み込みを確認してください。 - 現在の FMM は
tag_アンカーがなくてもヒットボックス上方に名前を表示します。位置がずれていれば、ヒットボックスの高さを確認するかアンカーを追加してください。 - FMM の再読み込み完了イベントで NPC モデルが再装着されます。再読み込み後に消える場合はコンソールの警告を確認してください。
- まず