内科専門医 今日もマイクラ処方中

Minecraftの医学的有効性を検証中

MENU

エンティティJSONの編集 (day250)

mobの挙動を変えるためにに、エンティティJSONの書き方を勉強していく。

Entity JSON Documentation | Microsoft Docs

1. Introduction

Entity Documentation - Entity JSON Introduction | Microsoft Docs

 

ブタのJSONでお勉強。このJSONは学習用に大分簡略化されている。

 

"format_version": "1.8.0",
  "minecraft:client_entity": {
     "description": {
       "identifier": "minecraft:pig",
       "min_engine_version": "1.8.0",
       "materials": { "default": "pig" },
       "textures": {
         "default": "textures/entity/pig/pig",
         "saddled": "textures/entity/pig/pig_saddle"
       },
       "geometry": {
         "default": "geometry.pig.v1.8"
       },
       "animations": {
         "setup": "animation.pig.setup",
         "walk": "animation.quadruped.walk",
         "look_at_target": "animation.common.look_at_target",
         "baby_transform": "animation.pig.baby_transform"
       },
       "animation_controllers": [
         { "setup": "controller.animation.pig.setup" },
         { "move": "controller.animation.pig.move" },
         { "baby": "controller.animation.pig.baby" }
       ],
       "render_controllers": [ "controller.render.pig" ],
       "locators": {
         "lead": { "head": [ 0.0, 14.0, -6.0 ] }
       },
       "spawn_egg": {
         "texture": "spawn_egg",
         "texture_index": 2
       }
     }
   }

 

1.1. identifier

ここで編集するentityを指定する。

1.2. Min_engine_version

おそらくworkする最も古いversionを指定する箇所。

1.3. Materials, Textures, Animations

名前を指定する。その名前はRender Controllers JSONで使用される。vanillaリソースパックか、自分で作ったものを使用可能。

1.4. Animation_controllers

どのアニメーションを使用するか指定する。

vanillaリソースパックか、自分で作ったものを使用可能。 

1.5. Render_controllers

Render Controllers folderにある名前と一致させる。vanillaリソースパックか、自分で作ったものを使用可能。 

1.6. locators

例えば、リードが体のどの位置につくかを指定する。

1.7. enable_attachables

鎧や武器を持てるようになる?

"enable_attachables": true

1.8. held_item_ignores_lighting

持っているものが光るかどうか。

"held_item_ignores_lighting": true

1.9. hide_armor

鎧を着ている時にそれを見えなくする。

enable_attachablesを上書きする。

1.10. Spawn Egg

色やテキスチャーを指定する。

 

"spawn_egg": {
  "base_color": "#53443E",
  "overlay_color": "#2E6854"
}

 

"spawn_egg": {
  "texture": "spawn_egg",
  "texture_index": 2
}

 

2. Entityのpropertiesを編集する。

Entity Documentation - Properties List | Microsoft Docs

 

3. 攻撃性の編集

必要なものは

minecraft:behavior.nearest_attackable_target

Entity Documentation - minecraft:behavior.nearest_attackable_target | Microsoft Docs

minecraft:behavior.melee_attack

Entity Documentation - minecraft:behavior.melee_attack | Microsoft Docs

 

下記がzombieのもの。適宜修正して使用。

   "minecraft:behavior.nearest_attackable_target": {
                "priority": 2,
                "must_see": true,
                "reselect_targets": true,
                "within_radius": 25.0,
                "must_see_forget_duration": 17.0,
                "entity_types": [
                  {
                    "filters": {
                      "any_of": [
                        { "test": "is_family", "subject": "other", "value": "player" },
                        { "test": "is_family", "subject": "other", "value": "snowgolem" },
                        { "test": "is_family", "subject": "other", "value": "irongolem" }
                      ]
                    },
                    "max_dist": 35
                  },
                  {
                    "filters": {
                      "any_of": [
                        { "test": "is_family", "subject": "other", "value": "villager" },
                        { "test": "is_family", "subject": "other", "value": "wandering_trader" }
                      ]
                    },
                    "max_dist": 35,
                    "must_see": false
                  },
                  {
                    "filters": {
                      "all_of": [
                        { "test": "is_family", "subject": "other", "value": "baby_turtle" },
                        { "test": "in_water", "subject": "other", "operator": "!=", "value": true }
                      ]
                    },
                    "max_dist": 35
                  }
                ]
              },
            "minecraft:behavior.melee_attack": {
                "priority": 3
            },
            "minecraft:attack": {
                "damage": 3
            }

 

4. Componentsの編集

リスト

Entity Documentation - Component List | Microsoft Docs

4.1. 燃えないゾンビを作る

minecraft:burns_in_daylight

をfalse、もしくは該当部分を消す。

 

4.2. ゾンビを飼い馴らす 

minecraft:tameable

Entity Documentation - minecraft:tameable | Microsoft Docs

を用いる。

component groupsの作成

            "minecraft:zombie_wild": {
              "minecraft:tameable": {
                 "probability": 0.33,
                 "tame_items": "rotten_flesh",
                 "tame_event": {
                   "event": "minecraft:on_tame",
                   "target": "self"
                    }
                  }
            },

            "minecraft:zombie_tame": {
              "minecraft:is_tamed": {
              },
              "minecraft:health": {
                       "value": 20,
                       "max": 20
              },
              "minecraft:behavior.follow_owner": {
                       "priority": 4,
                       "speed_multiplier": 1.0,
                       "start_distance": 10,
                       "stop_distance": 2
              },
              "minecraft:attack": {
                       "damage": 4
              },
              "minecraft:behavior.owner_hurt_by_target": {
                       "priority": 1
              },
              "minecraft:behavior.owner_hurt_target": {
                       "priority": 2
              },
              "minecraft:behavior.nearest_attackable_target": {
                       "priority": 3,
                       "must_see": true,
                       "entity_types": [
                         {
                          "filters": {
                            "all_of": [
                              {
                                "test": "is_family",
                                "subject": "other",
                                "value": "monster"
                              }
                            ]
                          },
                          "max_dist": 16
                         }
                       ]
 

eventに追加

        "minecraft:on_tame": {
          "remove": {
            "component_groups": [
              "minecraft:zombie_wild"
            ]
          },
          "add": {
            "component_groups": [
              "minecraft:zombie_tame"
            ]
          }
        }

 

4.3. モブの体力を回復させる

minecraft:healableを使う。

        "minecraft:healable": {
            "items": [
              {
                "item": "iron_ingot",
                "heal_amount": 5
              },
              {
                "item": "iron_block",
                "heal_amount": 2
              }
            ]
        }

 

4.4. アイアンゴーレムに乗れるようにする

minecraft:ridableを使う。

https://docs.microsoft.com/en-us/minecraft/creator/reference/content/entityreference/examples/entitycomponents/minecraftcomponent_rideable

両肩に2人乗ることが可能。

            "minecraft:rideable": {
              "seat_count": 2,
              "family_types": [],
              "seats": [{
                "position": [ 0.5, 1.8, 0 ],
                "lock_rider_rotation": 0
              },
              {
              "position": [ -0.5, 1.8, 0 ],
              "lock_rider_rotation": 0
              }
              ]
            }

 

4.5.プレイヤーにダメージを受けると、飼いならされた状態からwildに戻る

on_hurt_by_playerを用いる。

        "minecraft:on_hurt_by_player": {
          "event": "minecraft:on_hurt_event",
          "target": "self"
        }  
        },

 

 

        "minecraft:on_hurt_event": {
          "remove": {
            "component_groups": [
            "minecraft:golem_tame"
            ]
          },
          "add": {
            "component_groups": [
              "golem_wild"
            ]
         }
         }