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

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_idcurrent_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 PackBetterStructures Prop PackEliteMobs Prop PackCraftenmine's Weapons Item PackCraftenmine Tools Item Pack
  • FreeMinecraftModelsは起動時と/fmm reload時にリソースパック出力を再構築し、依存プラグインがモデル参照を再アタッチできるようFmmReloadedEventをディスパッチします。
  • ResourcePackManagerは引き続き、生成されたパックを自動的にクライアントへ配布する推奨方法です。