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

カスタムアイテムと魔法武器

FMM は plugins/FreeMinecraftModels/models/ 内の YAML ファイルから手持ちアイテムを登録します。モデルと同じフォルダーに、拡張子を除いた名前が同じ .yml 定義を置けます。.bbmodel ファイルを使わず、バニラの見た目を使うアイテムも作成できます。

カスタムアイテム​

flame_blade.yml の例:

isEnabled: true
material: DIAMOND_SWORD
name: "&6Flame Blade"
lore:
- "&7Burns enemies on hit"
enchantments:
- "minecraft:fire_aspect,2"
- "minecraft:unbreaking,3"

FMM を再読み込みし、/fmm giveitem flame_blade を実行します。このコマンドには freeminecraftmodels.admin 権限が必要です。アイテム ID は表示名ではなく、ファイル名から拡張子を除いて小文字にしたものです。サブフォルダーが異なる場合も重複しない名前を使ってください。

革の防具を染色するには、EliteMobs の装備と同様に、素材の後に # なしで RGB の16進カラーを追加します:material: LEATHER_CHESTPLATE:ff8800。このサフィックスは LEATHER_ の素材でのみ機能します。すでにインベントリにあるアイテムは元の色のままです。

アイテムは作成時の表示モデルを保持します。FMM は、表示モデルを持たない FMM アイテムに登録済みの表示モデルを追加します。対象は、プレイヤーの参加時にはインベントリ内のそのようなアイテムすべて、持ち替え、両手の入れ替え、アイテムの拾得の後には手に持っているアイテムです。これにより、普通のブレイズロッドとして表示されていたワンドなど、モデルが存在する前に配布されたアイテムが修正されます。すでにモデルを指定しているアイテムには手を加えません。

エンチャントは小文字の namespace:id,level 形式で指定し、レベルには正の整数を使います。ネイティブエンチャントには minecraft:、FMM の効果には freeminecraftmodels:、EliteMobs が提供する効果には elitemobs: を使います。提供元プラグインがインストールされ、定義が利用可能である必要があります。コンテンツ用エンチャントを参照してください。アイテムセットのエンチャントを持つアイテムでは、$itemSetを含むロア行にセットのパーツが表示され、そのような行がない場合はロアの後に表示されます。

アイテムコンテンツの更新

装備アイテムの scripts: リストと、SHARPNESS,3 のような名前空間のない記述は廃止されました。FMM はこれらのアイテム定義をスキップし、理由をログに記録します。ファイルは変更しません。サーバーで利用できない素材を指定したアイテムもスキップします。これらの問題があっても、ほかのコンテンツの読み込みは続行されます。

プロップのスクリプトでは引き続き scripts: を使います。アイテムの効果には enchantments: を使います。新しい武器定義に古いアイテムスクリプトを追加しないでください。

同梱のワンドとスタッフ​

FMM は不足している既定コンテンツを models/fmm_default_magic/ にインストールします。既存の同梱ワンドまたはスタッフの定義に weapon.type がない場合、ほかの設定を維持しながら対応する WAND または STAFF 宣言を追加します。

アイテム ID素材操作
fmm_default_arcane_wandBLAZE_ROD左クリックで照準補助付きの魔法弾を発射
fmm_default_arcane_staffWOODEN_SPEAR左クリックで弱い近接攻撃、右クリックで範囲攻撃の火球を発射

/fmm giveitem <id> で入手できます。普通のブレイズロッドや槍が魔法武器になるわけではありません。スタッフには WOODEN_SPEAR を提供するサーバーバージョンが必要です。利用できない素材の定義はスキップされます。

どちらの武器にも専用のモデルと表示モデル JSON が同梱されています。ワンドには fmm_default_arcane_wand_particles.particle.json とそのテクスチャも同梱されており、held アニメーションによって、ワンドをどちらの手に持っている間も宝石の周りできらめくエフェクトがループ再生されます。パーティクルを参照してください。FMM は不足しているファイルだけをコピーするため、同梱の .yml をすでに編集しているサーバーではその内容が維持され、新しいモデルファイルが追加されます。

ワンドは前方の標的を探し、そこへ飛翔する弾を放ちます。標的を捉えても命中は保証されません。弾が標的まで到達する必要があり、ブロックに衝突することもあります。スタッフは着弾範囲を持つ、より遅い火球を発射します。

ワンドの発射時には移動速度低下 I が 20 ティック付与されますが、既存のより強い、または長い移動速度低下は置き換えません。ワンドのダメージは、それ自身のネイティブなノックバックを抑制します。スタッフの火球が直撃したエンティティは、火球のダメージを全量受けます。爆発範囲内のほかの標的は、着弾点への視線が必要で、中心が着弾点から遠いほど受けるダメージが小さくなり、着弾点では全量、端では 35% です。Ignition はダメージが受理された後にのみ発動し、燃焼イベントに従います。

魔法の命中はバニラのダメージ無敵時間を無視するため、直前にパーティメンバーの剣などで攻撃された標的にも、ワンドの弾、スタッフの一撃、火球が命中します。FMM は後で標的の無敵時間を元に戻します。魔法の命中が発生する頻度は、武器自身のリロードによって制限されます。

ワンドやスタッフでモブを直接叩くと、左クリック攻撃として扱われます。FMM はバニラの近接攻撃をキャンセルし、代わりに武器の左クリック攻撃を実行します。プレイヤーがワンドやスタッフを持っている間に、EliteMobs のエンチャントダメージなど、プラグインが MagmaCore の明示的ダメージ経路を通じてプレイヤーとして与えるダメージには手を加えず、発動のきっかけにもなりません。攻撃のクールダウン中にクリックすると、小さなクリック音が鳴るだけで何も起きません。

クールダウンは発射または近接攻撃が正常に開始された後に始まります。コンテンツの再読み込み中は、定義の再構築が終わるまで新しい発射を停止します。発射済みの弾は、発射時の武器と補正を保持します。登録済みの戦闘リゾルバーを解除すると飛翔中の弾はキャンセルされ、途中で戦闘ルールが切り替わることを防ぎます。

魔法武器の定義​

通常のアイテム定義に weapon セクションを追加します。

isEnabled: true
material: BLAZE_ROD
name: "&dArcane Wand"
weapon:
type: WAND
enchantments:
- "freeminecraftmodels:multicast,1"

type は WAND または STAFF にします。調整用フィールドを省略すると、次の既定値が使われます。

設定ワンドスタッフ
projectileSpeed0.720.48
range1828
travelTicks2474
impactRadius02.75
aimAssistDegrees450

既定のワンドの捕捉範囲は、正面方向から左右それぞれ 45 度です。aimAssistDegrees は 0 から 180 を受け付けます。半径はゼロにできます。速度と射程は正の有限数、飛翔ティック数は正の整数でなければなりません。

攻撃basePowerreloadTicks
WAND_MISSILE0.67211
STAFF_MELEE0.4512
STAFF_FIREBALL1.2540

任意の weapon.attacks セクションを指定する場合は、その武器種の攻撃キーを過不足なく含め、各攻撃に両方のフィールドを指定します。

weapon:
type: STAFF
attacks:
STAFF_MELEE:
basePower: 0.45
reloadTicks: 12
STAFF_FIREBALL:
basePower: 1.25
reloadTicks: 40

不明な武器フィールドや不正な値は拒否されます。basePower は戦闘リゾルバーが解釈するダメージ係数であり、その数値分の体力ダメージを保証するものではありません。

魔法エンチャント​

ID用途
freeminecraftmodels:multicast弾ごとのダメージを調整した追加弾
freeminecraftmodels:blast_radiusスタッフの火球の着弾半径を補正
freeminecraftmodels:ignitionスタッフの火球を受けて生き残った標的を発火

YAML と Lua のファイルは plugins/FreeMinecraftModels/enchantments/ にあります。同梱カタログには、作成したコンテンツアイテム用の効果も含まれます。効果の定義だけをインストールしても、対応するアイテムやモデルパックがプレイヤーに与えられるわけではありません。

術者が身につけているアイテムセットも、すべてのパーツを装備している間は、ワンドとスタッフで機能します。セットのキャスト修正は、1回のキャストにつき1回だけ数えられます。魔法の命中が発生すると、スタッフの一撃ではセットの on_attack_entity フック、ワンドの弾や火球ではセットの on_projectile_hit フックが実行されます。

EliteMobs 連携​

EliteMobs がインストールされている場合、エリート戦闘のスケーリングとスキルへの帰属は EliteMobs が担当します。FMM は武器の識別、入力、弾の移動、着弾処理の要求を担当します。武器や戦闘状態が不正な場合、EliteMobs は発射または着弾を拒否できます。

Alpha Advanced Combat System の Spellcaster は FMM のスタッフとワンドを使います。クラス能力と魔法武器の攻撃は別々の入力です。F キーのクラス能力選択を処理した際に、手持ち武器まで発射してはいけません。

パック配信では FMM の出力を再生成し、ResourcePackManager に統合と配信を任せます。武器が登録されているだけでは、クライアントがそのモデルをダウンロード済みとは確認できません。