Uploaded:2023/01/01 Latest-Update:2023/01/01

圧倒的パラメータの量!飛び道具エンティティを制御するコンポーネント「minecraft:projectile」

目次は右上の「≡」から!

古いほうのサイトから移植して読みやすいように改訂しました!

はじめに

アドオンでオリジナルのエンティティを作るなら、プロジェクタイルに触れる機会があると思います。

プロジェクタイルとは、「飛び道具」などと呼ばれる、遠距離攻撃で投げたり撃ったりするのことですね。

追加するエンティティをプロジェクタイルとして指定するコンポーネント「minecraft:projectile」は少々複雑なのに、 リファレンスに全てのパラメータの説明が載っていません。

さすがに不便なので、ここにまとめておきたいと思います。

コンポーネントの概形
"minecraft:projectile": { "on_hit": { "arrow_effect": {}, "catch_fire": {}, "definition_event": {}, "douse_fire": {}, "freeze_on_hit": {}, "grant_xp": {}, "impact_damage": {}, "mob_effect": {}, "particle_on_hit": {}, "remove_on_hit": {}, "spawn_aoe_cloud": {}, "spawn_chance": {}, "stick_in_ground": {}, "teleport_owner": {}, "thrown_potion": {} } // 他のパラメータ }
on_hitの中身

このコンポーネントのパラメータに「on_hit」というものがあり、それの中身がパラメータの中で最も大きいので別で紹介します。

中にはバニラで使われていないものもあるのでおもしろいですよ♪


allow_effect

矢のエフェクトに関するパラメータ。中身は空っぽにして使います。 おそらく持っている矢のエフェクトデータ値に応じてエフェクトを反映してくれるものだと思います。 内部システムに頼っているところがあるので、エフェクトがつくプロジェクタイルを作りたいのなら下にあるmob_effectでつけるのがいいでしょう。


catch_fire

空っぽでも使えます。 プロジェクタイルが地面に当たったときに火がつくかどうかを定義します。 エンティティに当たったときに燃えるかどうかはまた別(impact_damageの中身のcatch_fire参照)なので気をつけましょう。

・fire_affected_by_griefing [Bool]

「モブによる妨害」の設定に影響されるかどうか。falseにすると、設定がどうであれ地面に当たると火がつきます。


definition_event

プロジェクタイルが物にぶつかったときにイベントを起こす場合、このパラメータで定義します。 たとえば、ガストのファイアボールは地面に当たったときにイベントでminecraft:explodeコンポーネントを引き出して爆発しています。

・event_trigger

・event [Str]

引き起こすイベント名がはいります。

・target [Str]

イベントの引き起こし元です。よくわからなかっら"self"を入れましょう。


douse_fire

中身は空っぽにして使います。物に当たったとき、周囲の火を消します。水のスプラッシュポーションがそうですね。


freeze_on_hit

ふつうだと絶対見つからないパラメータ。物に当たったとき、周囲の水源を凍らせます。

・size [Float]

凍らせる範囲。

・shape [Str]

凍らせる範囲の形。"cube"しか見つかっていないのでそれしか使えないと思ってください。

・snap_to_block [Bool]

(効能不明)
(デフォルトはtrueなので困ったらそれにしておくといいでしょう)


grant_xp

経験値ビンがもっているパラメータ。物に当たったときに指定した数の経験値オーブを落とします。

・minXP [Int]

落とす経験値オーブの最小個数。「XP」は大文字なので注意!

・maxXP [Int]

落とす経験値オーブの最大個数。「XP」は大文字なので注意!


impact_damage

エンティティに当たったときに与えるダメージについての設定。いちばんよく使う?

・damage [Int]

ダメージの量。ハート1個分は2。

・knockback [Bool]

ノックバックするかどうか。

・semi_random_diff_damage [Bool]

プロジェクタイルの速さに比例してダメージをランダムに変えるかどうか。 たとえば、弓矢はちゃんと引かずに撃つとスピードが遅くなり、ダメージも少ないですよね。

・destroy_on_hit [Bool]

エンティティに当たったときにそのプロジェクタイルが消滅するかどうか。ブロックに当たったときの話はremove_on_hit参照。

・max_critical_damage [Int]

クリティカルダメージの最大値。semi_random_diff_damagetrueのときに使うのかも。

・min_critical_damage [Int]

クリティカルダメージの最小値。semi_random_diff_damagetrueのときに使うのかも。

・power_multiplier [Float]

(効能不明)

・should_bounce [Bool]

(効能不明)

・catch_fire [Bool]

エンティティが当たったときにそのエンティティが燃えるかどうか。

・filter [Str]

ダメージを与えられるエンティティのIDを書きます。たとえば雪玉なら"blaze"です。


mob_effect

ウィザーの頭のように、当たったら何かしらエフェクトをつけるというパラメータです。

・effect [Str]

エフェクト名がはいります。おそらくコマンドで打つ名前同じで大丈夫でしょう。

・durationeasy [Int]

イージーモードでのエフェクトの効能時間。

・durationnormal [Int]

ノーマルモードでのエフェクトの効能時間。

・duraationhard [Int]

ハードモードでのエフェクトの効能時間。

・amplifier [Int]

エフェクトの強さ。/effectコマンドでうつ2つ目の数字です。


particle_on_hit

物に当たったときのパーティクルの設定。

・particle_type [Str]

出すパーティクルの種類。使われているものでは、"iconcrack""snowballpoof"があります。 もしかしたらどんなパーティクルでも使えるというわけではないかもしれないのでそのつもりでいてください。

・num_particle [Int]

パーティクル作りを理解しているひとならわかりやすいと思いますが、「パーティクルの数」と言いようがありません。

・on_entity_hit [Bool]

エンティティに当たったときにパーティクルを出すかどうか。

・on_other_hit [Bool]

エンティティ以外──要するにブロック?──に当たったときにパーティクルを出すかどうか。


remove_on_hit

中身は空っぽにして使います。プロジェクタイルがブロックに当たったときに消滅するかどうか。 true/falseではなく、このパラメータを書くか書かないかで切り替えます。


spawn_aoe_cloud

物に当たったときに残留ポーションの雲をスポーンさせるかどうかを設定します。

・radius [Float]

残留ポーションの雲の半径──すなわち大きさ。

・radius_on_use [Float]

エンティティにヒットするたびにサイズの変更をする。

・potion [Int]

エフェクトのID。クリエイティブインベントリの順番と同じらしいですよ。

・particle [Str]

残留ポーションの雲を出現させると同時に出すパーティクル。使われてるものでは"dragonbreath"があります。 もしかしたらどんなパーティクルでも使えるというわけではないかもしれないのでそのつもりでいてください。

・duration [Int]

エフェクトの効能時間。

・clolor [Int-3]

残留ポーションの雲の色。それぞれの数字は整数で、0から255までで、RGBで指定します。

・affect_owner [Bool]

プロジェクタイルを飛ばした主がそのエフェクトを受けるかどうか。

・reapplication_delay [Int]

エフェクトを与える時の遅延。(名前からするに、エフェクトにもう一回かかるときの遅延だと思います。 ダメージポーションならダメージの間隔が広くなるのではないでしょうか)


spawn_chance

ニワトリのタマゴのように、物に当たるとエンティティがそこにスポーンするという効果を持たせます。

・first_spawn_chance [Int]

"first_spawn_count"でエンティティがスポーンする確率。

・second_spawn_chance [Int]

"second_spawn_count"でエンティティがスポーンする確率。"first_spawn_chance"が成功した場合のみ機能するらしいです。

・first_spawn_count [Int]

スポーンする数。(詳細不明)

・second_spawn_count [Int]

スポーンする数。(詳細不明)

・spawn_definition [Str]

何をスポーンさせるか。そのままIDがはいる。

・spawn_baby [Bool]

子どもの状態でスポーンするかどうか。子どもの状態が存在するエンティティでないとおそらく意味がありません。

・first_spawn_percent_chance [Float]

スポーンする確率。(詳細不明)


stick_in_ground

ブロックに刺さって残るかどうか。空っぽでも使える。

・shake_time [Float]

(効能不明)


teleport_owner

そのプロジェクタイルを飛ばした主を着地地点にテレポートさせるかどうか。中身は空っぽにして使います。


thrown_potion_effect

ポーションのエフェクトに関するパラメータ。中身は空っぽにして使います。 おそらく持っているポーションのエフェクトデータ値に応じてエフェクトを反映してくれるものだと思います。 内部システムに頼っているところがあるので、あまり使うことはないと思います。


on_hitと並列させるパラメータ

こちらはすべてリファレンスにあるようですが、せっかくなので載せておきます。

angle_offset [Float]

プロジェクタイルを射出する角度。

catch_fire [Bool]

そのプロジェクタイル自体が炎を帯びているかどうか。

crit_particle_on_hurt [Bool]

そのプロジェクタイルにダメージを与えたときにクリティカルヒットのパーティクルを出すかどうか。

destroy_on_hurt [Bool]

そのプロジェクタイルにダメージを与えた瞬間それが消滅するかどうか。

filter [Str]

そのプロジェクタイルによってダメージを受けないエンティティのID。

fire_affected_by_griefing [Bool]

(効能不明です)

gravity [Float]

このプロジェクタイルが受ける重力の大きさ(重力加速度とは少し違います)。

hit_sound [Str]

プロジェクタイルが当たったときの音。もしかしたらどんなサウンドでも使えるとは限らないかもしれません。

homing [Bool]

シュルカーの弾のように対象を追跡するかどうか。

inertia [Float]

空中での慣性の大きさ。1が普通、それより小さいと減速してボテっと落ち、大きいとなかなか減速しません。

is_dangerous [Bool]

(効能不明)

knockback [Bool]

ノックバックするかどうか。impact_damageパラメータの中にあったものと何が違うのかよく分かりません。

lightning [Boo]

着弾地点に雷を落とすかどうか。

liquid_inertia [Float]

水中での慣性の大きさ。上にあるinertiaの水中バージョン。

multiple_targets [Bool]

空中にいる間、複数のエンティティに当たることができるかどうか。

offset [Float-3]

プロジェクタイルを射出する位置。左から順番に前(x)、上(y)、右(z)で指定します。

on_fire_time [Float]

プロジェクタイルが当たったとき、エンティティに火がついた場合の、火がついている時間。

particle [Str]

物に当たったときに出るパーティクルの名前。もしかしたらどんなパーティクルでも使えるとは限らないかもしれません。

potion_effect [Int]

ポーションエフェクトの数値ID。クリエイティブインベントリの順番と同じらしいですよ。

power [Float]

プロジェクタイルの速さ。

reflect_on_hurt [Bool]

ガストのファイアボールのように、プロジェクタイルがダメージを与えられたときに反射するかどうか

semi_random_diff_damage [Bool]

プロジェクタイルの速さに比例してダメージをランダムに変えるかどうか。impact_damageパラメータの中にもありましたが、それとの違いはよく分かりません。

shoot_sound [Str]

プロジェクタイルを射出したときの音。もしかしたらどんなサウンドでも使えるとは限らないかもしれません。

shoot_target [Bool]

このプロジェクタイルが別のエンティティによってスポーンさせられたとき、スポーン主の向いている方向へ射出されるかどうか。たとえば、ウィザーの頭のこのパラメータをfalseにすると、飛ばずに空中に留まってしまいます。

should_bounce [Bool]

(効能不明)

splash_potion [Bool]

スプラッシュポーションであるかどうか。trueにすると挙動がスプラッシュポーションのようになるみたいです。

splash_range [Float]

(効能不明)

uncertainty_base [Float]

射出される向きのばらつきの基礎の値。

uncertainty_multiplier [Float]

難易度(イージー・ノーマル・ハード)によって射出される向きのばらつきの割合を変化させるにあたって決める定数。

こんな公式があるらしいです:
(射出される向きのばらつき) =
(uncertainty_base) - (difficultyLevel(難易度)) * (uncertainty_multiplier)
最後に

v1.13のものについて書かれた内容をそのまま書いてます。大きな変更はないはずですが、気が向いたら再び調査します......

©2023 Rinca Hayamine