【MinecraftBE アドオン】イベント
イベントとは
イベントは、エンティティのコンポーネント グループを追加および削除するために使用されます。この例では、古いコンポーネント グループが削除され、2 つの新しいコンポーネント グループが追加されます。
code:sample.json
"events":{
"sample:example_event":{
"remove":{
"component_groups":[
"sample:group_a"
]
},
"add":{
"component_groups":[
"sample:group_b",
"sample:group_c"
]
}
}
}
イベントが発生する原因
エンティティ動作 JSON のアクティブ コンポーネント(\behavior_pack\entitiesのようなディレクトリに入っている、エンティティの動作を定義したコンポーネントのこと)
例えば、赤ちゃんモブの minecraft:ageable コンポーネントには grow_up プロパティがあり、そのイベントは同じエンティティで実行されます。Minecraft の牛の場合、このイベントは minecraft:ageable_grow_up と呼ばれ、minecraft:cow_baby コンポーネントグループを削除した後に minecraft:cow_adult コンポーネントグループを追加します。
エンティティ動作JSON上の他のイベント
イベントは別のイベントを実行することができます。例えば、Minecraft sheep の minecraft:entity_spawned イベントには randomize セクションがあり、spawn_adult または spawn_baby イベントを実行するトリガーを指定します。
ビヘイビアパックのアニメーションイベント
ビヘイビアパックのアニメーションは、@s example:event_nameのような文字列を使って、タイムラインからイベントを実行することができます。
他のエンティティからの振る舞いJSON
イベントは通常、所有するエンティティから実行されるが、他のエンティティから実行できる場合もある。その一例が wololo spell で、これは Evoker が近くの羊を青から赤に変えることができるものです。これは Evoker の minecraft:behavior.send_event ビヘイビアによって実行され、wololo イベントを近くにいる他の Sheep エンティティに送信します。
組み込みコードの動作
ほとんどのイベントはゲームの JSON ファイルで検出可能なものによって実行されますが、Minecraft のゲームコードから直接呼び出されるものもいくつかあります。その一例が minecraft:hive_full イベントで、これは蜂の巣から、空きスペースがないために蜂の巣に入ろうとしたが失敗した蜂に対して発生します。
eventコマンド
eventコマンドは、指定されたイベントを、同じ名前のイベントが定義されている対象エンティティに対して実行します。これらは、プレイヤーが手入力したもの、コマンドブロック、ビヘイビアパックアニメーション、関数、スクリプトなど、コマンドを実行できる場所であればどこからでも実行できます。
summonコマンド
/summoncommand は spawn イベントの引数を取ります。目的のエンティティが作成されると、minecraft:entity_spawned のような他のスポーンイベントの代わりに、指定されたスポーンイベントが実行されます。詳しくはこのページのスポーンイベントとはを参照してください。
ビルトインイベント
ゲームに直接組み込まれたイベント。
table:events
イベント名 説明
minecraft:entity_born エンティティが繁殖によってスポーンされたときに実行されます。
minecraft:entity_spawned エンティティがスポーンするたびに実行されます。
/summonコマンドで手動で実行した場合は実行されないことに注意してください。
minecraft:entity_transformed 別のエンティティがこのエンティティに変身するときに実行されます。
minecraft:on_prime エンティティが準備され、爆発する準備が整ったときに実行されます。
ランダマイザー
エンティティに追加するコンポーネント グループをランダム化する場合は、randomize 関数を使用できます。オブジェクトの配列を指定し、各オブジェクトでコンポーネント グループを追加および削除できます。ゲームはこれらのオブジェクトの 1 つをランダムに選択して実行します。必要に応じて、オプションに重みオプションを追加して、各オプションの確率を変更できます。すべての重みを組み合わせてカウントし、合計して100%にすることができます。次の例では、エンティティは20%(1〜5)の確率で赤ちゃんとしてスポーンしますが、それ以外の場合、コンポーネントグループは追加されません。
code:sample.json
"events":{
"minecraft:entity_spawned":{
"randomize":[
{
"weight":40
},
{
"weight":10,
"add":{
"component_groups":[
"baby"
]
}
}
]
}
}
シーケンス
このノードは、すべてのエントリを順番に実行する配列ノードです。場合によっては、同じイベントで複数のイベント インスタンスを 1 つずつ実行する必要があります。シーケンスはランダマイザーと同様に構成されていますが、リスト内の各項目は順番に実行されます。たとえば、エンティティの 2 つの側面 (色やマーク パターンなど) をランダム化できます。この場合、シーケンスを使用できます。
シーケンスとランダマイザーは無期限に入れ子にすることができます。
この例では、エンティティがスポーンされたときにグループイニシャルが追加されます。その後、前のセクションのように赤ちゃんコンポーネントがランダム化されます。
yamato3010.icon順番にイベントを発生させることができるってことだね!
code:sample.json
"events":{
"minecraft:entity_spawned":{
"sequence":[
{
"add":{
"component_groups":[
"initial"
]
}
},
{
"randomize":[
{
"weight":40
},
{
"weight":10,
"add":{
"component_groups":[
"baby"
]
}
}
]
}
]
}
}