アドオン:汎用コンポーネントの解説

サムネイル アドオンチュートリアル編

今回はエンティティでよく使うコンポーネントを解説していきます。HPなどの能力を指定する物が多いので比較的簡単な内容になっています。

ステータスを設定するコンポーネント

minecraft:health

      "minecraft:health": {
           "value": 20,
           "max":20,
           "min":1
      },

このコンポーネントは名前の通りHPを設定する時に使います。
valueとmaxは合わせておくと良いでしょう。また、minに関しては書くことによりその値よりHPが下がらなくなります。絶対に死なないようにしたい場合書くといいでしょう。ただし、何をしても死ななくなるため注意しましょう

minecraft:attack

            "minecraft:attack": {
                "damage": 4,
	       "effect_name": "poison",
	        "effect_duration": 12
            },

このコンポーネントは攻撃力を指定する事ができます。damageの値がそのまま攻撃力になります。
また、effect_nameを追加する事で攻撃した時にエフェクトを付与させる事ができるようになります。
effect_durationはエフェクトの秒数を指定します。ただし、強さを指定する事はできません。また、プレイヤーに使用しても効果がありません。

minecraft:movement

            "minecraft:movement": {
                "value": 0.33
            },

このコンポーネントは移動速度を設定できます。0.1変更するだけでかなり変わります。

minecraft:knockback_resistance

	"minecraft:knockback_resistance":{
             "value": 0.0
        },

このコンポーネントはノックバックに対する強さ…ではなくノックバックしない確率を設定できます。
0.1で10%になり1で100%になります。確率でノックバックしないので使い時はあまりなさそうです。

■ 広告 ■

基本的なコンポーネント

minecraft:collision_box

            "minecraft:collision_box": {
                "width": 1,
                "height": 2
            },

このコンポーネントは当たり判定を設定できます。コリジョンの設定ですね。
widthで横幅、heightで立幅を設定できます。正し、0,0にしても完璧に無くなる訳ではありません。

minecraft:physics

            "minecraft:physics": {}

このコンポーネントは重力(?)に関して設定できます。このコンポーネントを付けていないと衝撃が加わった時にそのまま真上に上昇し続けてしまうので必須コンポーネントです。
オプションとしてhas_gravityとhas_collisionがあるようです。(このオプションに関しては使った事が無いので詳しく解説できないです申し訳ない)

minecraft:nameable

            "minecraft:nameable": {
                "always_show": false,
                "allow_name_tag_renaming": true
            },

このコンポーネントはネームタグに関連した設定ができます。
always_showは視点をそのモブに合わせていなくても常に表示されるようになります。(NPCのようになる)
allow_name_tag_renamingは名札による名前変更ができるかどうか設定できます。falseにすると変更できなくなります。

minecraft:pushable

      "minecraft:pushable": {
            "is_pushable": true,
            "is_pushable_by_piston": true
      },

このコンポーネントは押した時の挙動に関するコンポーネントです。
is_pushableは押した際に移動するかの設定でtrueで移動するようになります。
is_pushable_by_pistonは使用した事ありませんが恐らくピストンで押した時に押されるかの設定です。

minecraft:loot

  "minecraft:loot": {
        "table": "loot_tables/entities/skeleton.json"
  },

このコンポーネントはルートテーブルを指定できます。

ルートテーブルはドロップアイテムが設定できる物です。プレイヤーにも書かれています(何も落とさない)

■ 広告 ■

少し高度なコンポーネント

minecraft:environment_sensor

   "minecraft:environment_sensor": {
        "triggers": [
          {
            "filters": {
              "test": "is_underwater",
              "subject": "self",
              "operator": "==",
              "value": true
            },
            "event": "minecraft:melee_mode"
          }
        ]
      },

このコンポーネントは周りや自分の環境(状態)によってイベントを起こす事ができるコンポーネントです。詳しい解説記事を書いているのでよければこちらを見てください。

minecraft:damage_sensor

        "minecraft:damage_sensor": {
          "triggers": {
            "on_damage": { "filters": { "other_with_families": "lightning" } },
            "deals_damage": false
          }
        }
      },

このコンポーネントはダメージを受けた時に関するコンポーネントです。
deals_damageをfalseにした場合triggersに一致したダメージなら受けなくなります。

minecraft:behavior.knockback_roar

     "minecraft:behavior.knockback_roar": {
                    "priority": 1,
                    "duration": 1,
                    "attack_time": 0.05,
                    "knockback_damage": 10,
                    "knockback_strength": 1,
                    "knockback_range": 7,
                    "knockback_filters": {
                    "test": "is_family",
                    "subject": "other",
                    "operator": "==",
                    "value": "player"
                    },
                    "cooldown_time": 0.1
       },

このコンポーネントは衝撃を生成するコンポーネントです。filterでダメージを受けるエンティティの条件を設定できます。knockback_rangeで範囲、knockback_strengthで吹き飛ぶ強さ、knockback_damageで与えるダメージを設定できます。

変数のような物

            "minecraft:variant": {
                "value": 0
            },
            "minecraft:mark_variant": {
                "value": 0
            },
            "minecraft:skin_id": {
                "value": 0
            },

これらのコンポーネントは単体では意味を持っていません。しかし色々なところでこの値を参照できるため変数のように扱う事ができます。skin_idなどスキン関連の物かと思われがちですがマイクラ側がスキンID用に作っただけで実際には何でも使えます。

コメント