夏令营补给 03 | 打破常规,只需一个Add-on!

学习委员

2021-08-102459次浏览

0评论

1收藏

0点赞

分享

《我的世界》高校开发者夏令营进行中!为了让大家更系统地学习,除课堂知识外,学习委员还将联合发发菌,为大家投放额外的干货补给。本期为第3期。

尸壳生成在草原中,铁傀儡跑得比小村民还快,的身上掉落生鸡肉……这样的世界你可以想象吗?

其实这些通过Add-on我们就可以实现~
今天学习委员和发发菌就来教大家如何“逆天而行”——修改生物生成规则和行为!话不多说,马上开课!

实体生成规则是用来控制任一实体在世界中生成的逻辑,目前常用于生物的生成生物是实体这一理念的延伸,是自然界中生成的实体,因此鸡、牛、猪是实体也是生物,而矿车、船则只是实体不是生物。

我们现在以尸壳的生成为例,来教大家如何简单地改变原版的生物生成规则~

在原版的生成规则中,尸壳这一种攻击性生物只会出现在沙漠中。

生成在沙漠中的尸壳

我们现在希望它能生成在每个攻击性生物都会出现的地方,而不仅仅是沙漠~那该怎么操作呢?来看看下面的分析吧!(・ω<)☆

{
  "format_version": "1.8.0",
  "minecraft:spawn_rules": {
    "description": {
      "identifier": "minecraft:husk",
      "population_control": "monster"
    },
    "conditions": [
      {
        "minecraft:spawns_on_surface": {},
        "minecraft:brightness_filter": {
          "min": 0,
          "max": 7,
          "adjust_for_weather": true
        },
        "minecraft:difficulty_filter": {
          "min": "easy",
          "max": "hard"
        },
        "minecraft:weight": {
          "default": 240
        },
        "minecraft:herd": {
          "min_size": 2,
          "max_size": 4
        },
        "minecraft:biome_filter": {
          "test": "has_biome_tag", "operator": "==", "value": "desert"
        }
      }
    ]
  }
}


  0,
  0
    ]
  },
  "modules": [
    {
      "type": "resources",//type改为data时,则变为行为包的manifest
      "uuid": "182664d3-80cc-476a-8043-183afad03acc",
      "version": [
    0,
    0,
    0
  ]
    }
  ]
}

学习笔记

① 当前生物生成规则的format_version停留在1.8.0版本
 identifier指向生物的名称population_control是指由游戏引擎控制的生物数量,这里可以写上的字段有animal、underwater_animal、monster、ambient。因此在基岩版中,存在着4个无法直接确定生物数量的维度。

白天主要生成动物
晚上主要生成怪物

③ 生物生成主要是由群系过滤器控制,biome_filter下接收一个或多个带有群系标签(has_biome_tag)的过滤条件,在尸壳的源文件中可以看到value值的参数是desert,因此将desert改为monster后,就可以让尸壳出现的规律和僵尸一样了。

尸壳:这家搬得有点突然

接下来我们将以铁傀儡为例,教大家如何修改实体的基础属性~

学习过认识行为包的同学应该知道:通过游戏根目录/data/behavior_packs/vanilla/entities中可以找到原版铁傀儡的行为文件

忘记了的开发者可以戳戳下面的链接复习之前的内容↓↓↓

Add-on进行时2.0,是时候来认识行为包啦~

通过调整对应文件,我们就可以修改铁傀儡的行为啦~

{
  "format_version": "1.13.0",
  "minecraft:entity": {
    "description": {
    },
 
    "component_groups": {},

    "components": {
      "minecraft:collision_box": {
        "width": 1.4,
        "height": 2.9
      },
      "minecraft:health": {
        "value": 100,
        "max": 100
      },
      "minecraft:movement": {
        "value": 0.25
      }
    },
 
    "events": {
    }
  }
}

学习笔记

minecraft:collision_box控制一个生物碰撞盒子的组件。碰撞盒子决定其他生物距离该类生物多远会产生推挤碰撞,以及可以在多大范围内能伤害到这类生物。其中width决定这个碰撞盒子的宽度height决定它的高度

minecraft:health管理一个生物生命值的组件。value的参数代表生物的生命值max代表生物的最大生命值

minecraft:movement控制生物的速度组件。其中value的参数代表速度《我的世界》基岩版速度换算公式为:
movement[速度值] * speed_multiplier[部分行为的速度加成] * friction[方块的摩擦力,默认是0.6] * 20 tick[游戏时间]

铁傀儡:冲啊!

最后我们将以牛掉落鸡的掉落物为例,教大家如何修改实体的掉落物

修改铁傀儡基础属性的操作类似,在游戏根目录/data/behavior_packs/vanilla/entities中我们可以找到原版牛的行为文件

{
  "format_version": "1.16.0",
  "minecraft:entity": {
    "description": {
    },
    "component_groups": {

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

    "components": {
    },

    "events": {}
  }
}

学习笔记

minecraft:loot管理生物掉落物表的组件。table的参数指向loot_tables文件夹下的一个表文件路径

② 根据路径提示打开loot_tables文件夹,再打开entities文件夹,可以看到里面存放了所有实体的掉落品文件,其中也包括生物鸡的掉落物品文件

③将loot_tables/entities/cow.json改为loot_tables/entities/chicken.json即可完成把牛的掉落物修改为鸡的掉落物

牛:发生了什么?

感谢开发者境界为本期课程提供的专业指导

今天的课就上到这里啦~大家快去动手实践一下吧!

通过Add-on,不可思议的世界都可以被你创造出来~ԅ( ˘ω˘ ԅ)

(本文来源于公众号“我的世界Minecraft开发者”,作者发发菌)


网易游戏学院官方讨论QQ群:780916962
欢迎各位同学加群,与众多游戏爱好者一同学习交流~

评论 0

0/1000
网易游学APP
为热爱赋能
扫描二维码下载APP