FreeMinecraftModels
FreeMinecraftModelsは、カスタムモデルのランタイムであると同時に、開発者向けのAPIでもあります。
現在のプラグインは、もはや単なる「importsフォルダと/fmm reload」のワークフローではありません。現在のコードベースには以下が追加されています:
- 初回セットアップフローと、セットアップ完了とマークされるまで表示されるログイン時のリマインダー
- 公式モデルパックのインストールとアップデートのためのNightbreak対応セットアップメニュー
plugins/FreeMinecraftModels/output/FreeMinecraftModelsに生成されるリソースパックフォルダplugins/FreeMinecraftModels/output/FreeMinecraftModels.zipにあるZIP圧縮済みパック成果物- セットアップ、コンテンツ更新、スポーン、ディスガイズ、プロップ、デバッグのための拡張されたコマンド体系
- マウントポイントボーン — 名前が
m_で始まるボーンは、モデル上に乗車可能な座席ポイントを作成し、プレイヤーがカスタムエンティティに騎乗できるようにします - カスタムディスプレイモデルJSON —
.bbmodelの隣に兄弟.jsonファイル(Blockbenchのディスプレイアイテムエクスポート)を配置して、ゲーム内のアイテム外観を上書きします(1.21.4以降が必要) - カスタムスクリプタブルアイテム — YML設定で
material:を設定したモデルは、完全なLuaスクリプティングサポートと22個のアイテムフックを持つ保持可能なカスタムアイテムになります - 管理者コンテンツブラウザ(
/fmm admin) — 管理者がインストール済みパック、フォルダ、モデル、カスタムアイテムを閲覧するためのインベントリメニュー - プレイヤークラフタブルアイテムメニュー(
/fmm) — すべてのクラフタブルアイテムとそのレシピを表示するインベントリメニュー。アイテムをクリックすると、矢印と出力付きの3x3グリッドが表示されます - プレイヤーディスガイズシステム —
/fmm disguise <model> [player]、/fmm undisguise [player]、/fmm disguiselist、およびサードパーティプラグイン用の公開DisguiseAPI - 家具ショップ — オプションのVault対応
/fmm shop。クラフタブルプロップを販売でき、レシピごとにshopEnabled/shopPriceで設定可能 - プレイヤーUI API — Luaスクリプトはプレイヤーにボスバー、アクションバー、タイトルを表示できます
- LocationAPI — サードパーティプラグインがダンジョン検出器と保護プロバイダを登録でき、これがFMMのLua
em.location.is_in_dungeonおよびem.location.is_protected述語を駆動します
ここから始めましょう
Luaスクリプティング
FreeMinecraftModelsには、MagmaCore 2.0スクリプティングエンジンを利用した、プロップとカスタムアイテム両方のためのLuaスクリプティングサポートが含まれています。スクリプトはplugins/FreeMinecraftModels/scripts/に配置します。
プロップフック(8個)
プロップスクリプトは以下のフックに応答できます:
| フック | トリガー |
|---|---|
on_spawn | プロップがワールドにスポーンされたとき |
on_game_tick | プロップが生存している間、毎ゲームティック |
on_zone_enter | プレイヤーがプロップのインタラクションゾーンに入ったとき |
on_zone_leave | プレイヤーがプロップのインタラクションゾーンから出たとき |
on_destroy | プロップがワールドから削除されたとき |
on_left_click | プレイヤーがプロップを左クリックしたとき |
on_right_click | プレイヤーがプロップを右クリックしたとき |
on_projectile_hit | 飛び道具がプロップに命中したとき |
プロップスクリプトは、model_idやcurrent_locationなどのフィールド、およびplay_animation(name)やstop_animation()などのメソッドを持つcontext.propテーブルを受け取ります。
アイテムフック(22個)
カスタムアイテムスクリプト(YMLでmaterial:が設定されたモデル用)は、以下のフックに応答できます:
| フック | トリガー |
|---|---|
on_equip | アイテムが装備された(アクティブスロットに入った)とき |
on_unequip | アイテムが装備解除された(アクティブスロットから外れた)とき |
on_attack_entity | アイテムを持っている間にプレイヤーがエンティティを攻撃したとき |
on_kill_entity | アイテムを持っている間にプレイヤーがエンティティを倒したとき |
on_take_damage | アイテムを装備している間にプレイヤーがダメージを受けたとき |
on_shield_block | プレイヤーが盾でダメージをブロックしたとき |
on_shoot_bow | プレイヤーが弓を射ったとき |
on_projectile_hit | プレイヤーが発射した飛び道具が何かに命中したとき |
on_projectile_launch | プレイヤーが飛び道具を発射したとき |
on_right_click | アイテムを持っている間にプレイヤーが右クリックしたとき |
on_left_click | アイテムを持っている間にプレイヤーが左クリックしたとき |
on_shift_right_click | 保持中にShift + 右クリックしたとき |
on_shift_left_click | 保持中にShift + 左クリックしたとき |
on_interact_entity | 保持中にプレイヤーがエンティティを右クリックしたとき |
on_swap_hands | アイテムが両手間で持ち替えられたとき |
on_drop | プレイヤーがアイテムを落としたとき |
on_break_block | アイテムを持っている間にプレイヤーがブロックを壊したとき |
on_consume | アイテムが消費されたとき(食物/ポーション) |
on_item_damage | アイテムが耐久度ダメージを受けたとき |
on_fish | プレイヤーが釣り竿を使用したとき |
on_death | アイテムを装備している間にプレイヤーが死亡したとき |
on_game_tick | アイテムを装備している間、毎サーバーティック |
アイテムスクリプトは、保持中のアイテムおよびそれを持つプレイヤーに関連するフィールドとメソッドを持つcontext.itemテーブルを受け取ります。Luaスクリプトはまた、プレイヤーUI APIを使用してボスバー、アクションバー、タイトルを表示することもできます。
現在のメモ
- プラグインに組み込まれているNightbreak管理の公式パック:
Basic Furniture Pack、BetterStructures Prop Pack、EliteMobs Prop Pack、Craftenmine's Weapons Item Pack、Craftenmine Tools Item Pack。 - FreeMinecraftModelsは起動時と
/fmm reload時にリソースパック出力を再構築し、依存プラグインがモデル参照を再アタッチできるようFmmReloadedEventをディスパッチします。 - ResourcePackManagerは引き続き、生成されたパックを自動的にクライアントへ配布する推奨方法です。