我的世界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
英文地址,請注明出處:http://en.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;幾乎看不見。 在命令行查看亮度…