我的世界Java版1.21.4的Fabric模组开发教程(十九)自定义生物群系

这是适用于Minecraft Java版1.21.4的Fabric模组开发系列教程专栏第十九章——自定义生物群系。想要阅读其他内容,请查看或订阅上面的专栏。

生物群系(Biome) 是Minecraft中世界不同区域呈现特定的地貌景观,这些区域与现实世界类似,都具有和其他区域不同的地理特征,如地表方块、温度、湿度以及海拔高度等。当然,处于下界和末地的部分生物群系不存在于现实世界。据统计,原版游戏中大约有80个生物群系。

生物群系的加入需要在创建维度(Dimension) 之后进行。我们可以将自定义生物群系加入到原版游戏中的维度中,也可以将生物群系加入到自定义维度,因此,想要将生物群系加入到维度,需要有一定的维度系列JSON编写能力。更多信息可以参考我的世界Java版1.21.4的Fabric模组开发教程(十七)自定义维度。

生物群系是地物(Feature) 生成的基础。所有地物的生成需要在生物群系JSON中配置。关于结构和地物的相关概念将在后续章节推出。

创建生物群系定义JSON

生物群系定义JSON用于定义生物群系的诸多属性,是创建生物群系的核心文件,也是创建生物群系需要的唯一JSON。

生物群系定义JSON应当位于(generated)/data/{mod-id}/worldgen/biome目录中,文件名为生物群系的命名空间ID。整个文件中的配置项应当包含在一个根对象{}内,它们包括:

  • “carvers”:指定可以在生物群系中生成的雕刻器。提供一个以#开头的雕刻器标签、雕刻器命名空间ID,或者写成一个数组,其中提供一个雕刻器命名空间ID的列表。该项为必选项,但可以为空;
  • “downfall”:指定生物群系的降水值,提供单精度型数据,即float。此值和“temperature”的值共同影响植物颜色;
  • “effects”:指定生物群系的环境效果。需要写成一个对象,所有的配置项都需要提供一个十进制的RGB颜色值,包括:
    • “fog_color”:指定迷雾颜色;
    • “sky_color”:指定天空颜色;
    • “water_color”:指定水体颜色;
    • “water_fog_color”:指定水下迷雾颜色;
      以上配置项为必选项,更多配置项请参考官方Wiki;
  • “features”:指定在该生物群系放置的地物。需要写成一个数组,其中的每一个配置项都代表地物放置的一个阶段,且都需要写成一个数组,其中的值为该阶段需要放置的地物。地物的放置是有序的,且仅有11个阶段,包括:
    • RAW_GENERATION:原始生成;
    • LAKES:湖;
    • LOCAL_MODIFICATIONS:本地修改;
    • UNDERGROUND_STRUCTURES:地下结构;
    • SURFACE_STRUCTURES:地表结构;
    • STRONGHOLDS:要塞;
    • UNDERGROUND_ORES:地下矿物;
    • UNDERGROUND_DECORATION:地下装饰;
    • FLUID_SPRINGS:涌泉;
    • VEGETAL_DECORATION:植被装饰
    • TOP_LAYER_MODIFICATION:顶层修改;
      所有的阶段都可以为空,但必须提供一个空的数组作为该阶段的值。每个阶段中的地物放置也是有顺序的;
  • “has_precipitation”:指定生物群系是否有降水,提供一个布尔值;
  • “spawn_costs”:指定生物群系中生物的生成代价,亦称生成势,用于控制生物生成的密度,写成一个数组,其中的每一项是某个实体的生成代价对象。该项为必选项,但可以为空;
  • “spawners”:指定生物群系以类别的形式进行生物生成,需要写成一个对象,其中的每个配置项都是一个类别,需要写成一个数组,这样的数组共有8个,包括:
    • “ambient”:环境生物;
    • “axolotls”:美西螈;
    • “creature”:动物;
    • “misc”:其他;
    • “monster”:怪物;
    • “underground_water_creature”:地下水生生物;
    • “water_ambient”:水下环境生物;
    • “water_creature”:水生生物;
      如果不需要生成指定类别的实体,则可以不添加该类别的配置项,或将配置项设置为一个空数组。每个类别中可以添加多个实体对象,每个对象的名称应当为该实体的命名空间ID,并在其中提供以下必选的配置项:
      • “type”:指定实体的命名空间ID;
      • “weight”:指定实体的生成权重;
      • “minCount”:指定实体成群生成时的最低数量,取值不得小于0;
      • “maxCount”:指定实体成群生成时的最高数量,取值不得小于0;
        更多配置项请参考官方Wiki;
  • “temperature”:指定生物群系的温度值,提供单精度型数据,即float。此值和“downfall”的值共同影响植物颜色。

关于部分配置项的详细信息,请参考生物群系定义格式 - 中文 Minecraft Wiki。此外,还要注意两点:

不是所有实体都能加入到生物群系实体生成列表的类别中。所有实体都有自己独有的类别。在“spawners”配置项中,将实体加入到错误的类别时,实体不会生成或被直接替换为“猪(minecraft:pig)”。另外,有些实体不能自然生成在生物群系中,即不能加入到“spawners”配置项的任何一个类别之中,即使在所有类别中都添加该实体的命名空间ID,实体也不会自然生成。

例如,将雪傀儡(minecraft:snow_golem)添加到“spawners”配置项的“creature”类别中,会导致其被替换为猪,但数量和权重等其他配置保持不变。

在这里插入图片描述

关于生物类别,更多信息可以参考生成 - 中文 Minecraft Wiki。

不是所有地物都能加入到生物群系中。 所有地物都有属于自己的生成阶段。在“features”配置项中,将地物添加到错误的生成阶段时,地物不会在生物群系中生成。另外,有些地物的生成是有顺序的,在某个阶段中添加地物的命名空间ID时需要按照一定的顺序,否则地物同样不会生成。而且,有些地物的生成需要条件,尤其是某些生成在地表的地物,对使用了噪声型区块生成器维度的表面规则有着严格的要求,地表被维度的噪声设置JSON控制而覆盖了错误的方块时,地物同样不会生成。

例如,将冰刺(minecraft:ice_spike)添加到“features”配置项的SURFACE_STRUCTURES类别中,会发现生物群系中没有冰刺生成,这是因为冰刺要求在雪块(minecraft:snow_block)上生成。即使将生物群系的温度降低,又或者通过噪声设置JSON修改表面规则使生物群系表面生成覆雪草方块,由于其本质始终为草方块(minecraft:grass_block),而并非雪块,冰刺始终不会在生物群系中生成。

在这里插入图片描述

下面这个例子添加了一个具有指定的环境效果、会在地面上生成杜鹃花树(minecraft:rooted_azalea_tree)且会自然生成猫(minecraft:cat)的生物群系:

	{"carvers": [],"downfall": 0.0,"effects": {"fog_color": 12638463,"sky_color": 7254527,"water_color": 4159204,"water_fog_color": 329011},"features": [[],["minecraft:lake_lava_underground","minecraft:lake_lava_surface"],[],[],[],[],[],[],[],["minecraft:rooted_azalea_tree"],["minecraft:freeze_top_layer"]],"has_precipitation": false,"spawn_costs": {},"spawners": {"creature": [{"type": "minecraft:cat","maxCount": 5,"minCount": 1,"weight": 100}]},"temperature": 1.0
}

然后将生物群系加入到维度中:

{"type": "test:new_dimension","generator": {"type": "minecraft:noise","biome_source":{"type": "minecraft:fixed","biome": "test:test_biome"},"settings":"test:new_dimension"}
}

需要使用生物群系的命名空间IDtest:test_biome,这里使用了噪声型区块生成器,生物群系源为固定型。启动游戏,使用命令或传送门来到新维度,可以看到生物群系的设置均已生效;

在这里插入图片描述

也可以将生物群系加入原版游戏的维度中,可能需要使用到第三方库。

本章小结

本章详细阐述了创建自定义生物群系JSON的编写过程,并提供了可供调试的例子,是创建自定义生物群系的入门级教程。本文总体难度不大,篇幅适中,但文件中的配置项比较繁杂,一些配置项要求严格,仍需要开发者细心学习。感谢各位的阅读,有兴趣可以订阅此专栏!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918997.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mac (三)如何设置环境变量

目录一、查看环境变量 🔍1. 查看所有环境变量2. 查看特定变量二、临时设置(当前终端有效) ⚡1. 基本语法2. 实战示例三、永久设置(全局生效) 🔒配置步骤:四、实战案例 🛠️案例1&…

零改造迁移实录:2000+存储过程从SQL Server滑入KingbaseES V9R4C12的72小时

摘要:在信创窗口期,我们把拥有2000存储过程、300链接服务器的核心业务,从 SQL Server 2016/2019 平移到 KingbaseES V9R4C12(SQL Server 兼容版)。本文以 30 分钟部署、TPCH 100G 性能 PK、真实踩坑修复、灰度割接 4 小…

K8S HPA 弹性水平扩缩容 Pod 详解

文章目录1、前置准备2、需求场景3、Scale 静态扩缩容3.1、创建 Deployment 脚本3.2、Scale 扩缩容3、HPA 自动扩缩容3.1、安装 Metrics3.2、创建 Deployment 演示案例3.3、创建 HPA3.4、触发 HPA 自动扩缩容1、前置准备 本次案例演示,我选择了阿里云ECS&#xff08…

对话访谈|盘古信息×智晟威:深度挖掘数字化转型的奥秘

在数字化转型的浪潮中,传统设备企业如何突破“纯硬件”的边界,实现从“卖产品”到“卖生态”的跨越?数字化转型究竟是“高不可攀的奢侈品”,还是“触手可及的生存技能”?近日,广东盘古信息科技股份有限公司…

什么是模型预测控制?

一、概念模型预测控制(Model Predictive Control, MPC)是一种先进的控制方法,广泛应用于工业过程控制、机器人控制、自动驾驶等领域。MPC的核心思想是利用系统的动态模型预测未来的行为,并通过优化算法计算出当前时刻的最优控制输…

类与类加载器

在Java中,类和类加载器是密切相关的两个概念,理解它们有助于我们更好地掌握Java的运行机制。什么是Java类?Java类就像是一个模板或蓝图,它定义了对象的属性和行为。比如"汽车"可以看作一个类,它有颜色、品牌…

一文速通Python并行计算:14 Python异步编程-协程的管理和调度

一文速通 Python 并行计算:14 Python 异步编程-协程的管理和调度 摘要: Python 异步编程基于 async/await 构建协程,运行在事件循环中。协程生成 Task,遇到 await 时挂起,I/O 完成触发回调恢复运行,通过…

Node.js面试题及详细答案120题(16-30) -- 核心模块篇

《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs&…

RabbitMQ:Windows版本安装部署

目录一、概述二、OPT三、安装RabbitMQ四、登录测试一、概述 什么是MQ,有什么做作用? MQ即MessageQueue,消息队列。可以分为两部分理解:消息Message用于在不同的应用程序中传递数据。队列Queue,一种FIFO先进先出的数据…

酒店行业安全体系构建与优化策略

酒店行业安全体系构建与优化策略为确保酒店行业领导及宾客的安全,构建全面的治安联防体系及事故处理预案至关重要。某招待所通过设立保卫部,细化内保、治安、防火及交通管理职能,并下设警卫班、监控中心和电瓶车班,以全方位保障安…

python30-正则表达式

在Python中需要通过正则表达式对字符串进⾏匹配的时候,可以使⽤⼀个python自带的模块,名字为re。 re模块的使用:import re 一、匹配函数 1-1、re.match函数:返回匹配对象 match函数实现的是精准匹配,尝试从字符串的…

EP1C12F324I7N Altera Cyclone FPGA

EP1C12F324I7N 是 阿尔特拉 Altera Cyclone 系列中的一款 SRAM-based FPGA,定位为低成本、低功耗、面向嵌入式与消费/工业类量产应用的器件。该器件提供约 12,060 个逻辑单元(Logic Elements),片上嵌入式存储约 234 kbit&#xff…

html5语义元素

1、参考&#xff1a;HTML5 语义元素 | 菜鸟教程 2、实战 HTML5 <section> 元素 <section> 标签定义文档中的节&#xff08;section、区段&#xff09;。比如章节、页眉、页脚或文档中的其他部分。 根据W3C HTML5文档: section 包含了一组内容及其标题。 <!D…

java调用PyTorch 训练模型实现神经网络全流程

以下是完整的操作流程:用 PyTorch 训练模型 → 导出为 ONNX 格式 → 用 Java 加载并推理,兼顾开发效率(PyTorch 快速训练)和生产部署(Java 稳定运行)。 一、PyTorch 训练模型并导出为 ONNX 1. 安装依赖 bash pip install torch onnx # PyTorch 和 ONNX 库2. 训练一个…

Maven - Spring Boot 项目打包本地 jar 的 3 种方法

文章目录Pre概述方案思路构建流程图工作机制说明目录结构示例POM 配置模板构建与验证注意事项方案优缺点Pre Maven - Manual Maven JAR Installation&#xff1a;用 mvn install:install-file 安装本地 JAR 的实用指南 概述 在 Spring Boot 项目中&#xff0c;通常依赖包会从…

平替 Claude Code,API接入 GPT-5,Codex CLI 国内直接使用教程

最新升级接入GPT-5的 Codex 拥有可以媲美 Claude Code 的AI编码能力&#xff0c;本文将指导你在 Windows系统上部署原生的 Codex CLI程序&#xff0c;并且接入超低价中转API&#xff0c;让你在国内直接用上超高性价比的 OpenAI Codex CLI 应用。关于 CodexCodex 是 OpenAI 开发…

kubernertes (K8S)部署

参考&#xff1a; https://blog.csdn.net/yu33575/article/details/135387548 二进制安装k8s&#xff1a; https://blog.csdn.net/qq_73990369/article/details/143217084 K8S二进制安装与部署 &#xff1a;https://blog.csdn.net/fantuan_sss/article/details/139073366 k8s…

LeetCode 简单JS刷题

目录 返回数组最后一个元素 2787.将一个数字表示成幂的和的方案数 326.3的幂 1780.判断一个数字是否可以表示成三的幂的和 342.4的幂 返回数组最后一个元素 1.请你编写一段代码实现一个数组方法&#xff0c;使任何数组都可以调用 array.last() 方法&#xff0c;这个方法将…

七大排序算法全解析:从入门到精通

目录 一.排序的概念 二.常见排序算法的实现 2.1 插入排序 &#xff08;1&#xff09;直接插入排序&#xff1a; 当插入第i(i>1)个元素时&#xff0c;前面的array[0],array[1],…,array[i-1]已经排好序&#xff0c;此时用array[i]的排序码与array[i-1],array[i-2],…的排序…

20250814在荣品RD-RK3588开发板的Android13下解决卡迪的LCD屏在开机的时候brightness最暗【背光的pwm信号的极性反了】

20250814在荣品RD-RK3588开发板的Android13下解决卡迪的LCD屏在开机的时候brightness最暗【背光的pwm信号的极性反了】 2025/8/14 11:33缘起&#xff1a;在荣品RD-RK3588开发板的Android13下&#xff0c;卡迪的LCD屏在开机的时候很暗&#xff0c;几乎看不见。 在命令行查看亮度…