- 致编者:请牢记我们的域名wiki.mcbe-dev.net!
- 致编者:欢迎加入本Wiki的官方交流QQ群或Discord服务器!
- 基岩版1.19.31现已发布!(了解更多)
- Inner Core现已支持Xbox模组联机!(了解更多)
- 如果您是第一次来到本Wiki,欢迎注册一个账户
- 点击顶部的“编辑”或“编辑源代码”按钮即可编辑当前页面
- 请知悉:在不登录时也可以编辑和新建页面,但是您当前的IP地址会记录在编辑历史中
教學:製作附加包/生態域
引言[編輯]
生態域(Biome)是Minecraft世界中形態各異的地區,有著多樣的地理特徵、植物群、海拔高度、溫度、濕度、天空及植被顏色。生態域將生成的世界劃分為一個個不同的自然環境,譬如森林、叢林、沙漠和針葉林。
透過編寫 生態域資料 您可以:
- 變更生態域的一般形狀
- 變更生態域生成的比例
- 變更生態域的裝飾特徵(例如樹和草的分布)
- 變更生態域的氣候
- 變更生態域的生物
- 變更生態域的霧效
接下來讓我們開始
開始[編輯]
首先,生態域都擁有一個 命名空間 ,請先了解這個內容,以為您的生態域賦予一個適當的命名空間(或者修改已有的生態域)。
下面有個 範例 以做參考:
{
"plains": {
"format_version": "1.12.0",
"minecraft:climate": {
"downfall": 0.4,
"snow_accumulation": [ 0.0, 0.125 ],
"temperature": 0.8
},
"minecraft:overworld_height": {
"noise_type": "lowlands"
},
"minecraft:surface_parameters": {
"sea_floor_depth": 7,
"sea_floor_material": "minecraft:gravel",
"foundation_material": "minecraft:stone",
"mid_material": "minecraft:dirt",
"top_material": "minecraft:grass"
}, "minecraft:overworld_generation_rules": {
"hills_transformation": [
[ "forest_hills", 1 ],
[ "forest", 2 ]
],
"mutate_transformation": "sunflower_plains",
"generate_for_climates": [
[ "medium", 3 ],
[ "warm", 1 ],
[ "cold", 1 ]
]
},
"animal": {},
"monster": {},
"overworld": {},
"plains": {}
}
}
上面這段取自 官方文件 ,但已廢用。下面給出 1.13.0 以後的例子。
{
"format_version": "1.13.0",//格式版本
"minecraft:biome": {
"description": {
"identifier": "pumpkin_pastures"//id 标识符
},
"components": { //组件
"minecraft:surface_parameters": {
"foundation_material": "minecraft:stone",
"top_material": "minecraft:grass",
"mid_material": "minecraft:dirt",
"sea_floor_depth": 4,
"sea_material": "minecraft:water",
"sea_floor_material": "minecraft:sand"
},
"minecraft:overworld_height": {
"noise_params": [
0.125,
0.0625
]
},
"minecraft:climate": {
"temperature": 0.375,
"downfall": 0.25,
"snow_accumulation": [
0,
0.5
]
},
"minecraft:overworld_generation_rules": { "generate_for_climates": [
[
"cold",
1
]
],
"hills_transformation": "pumpkin_pastures_hills",
"shore_transformation": "pumpkin_pastures"
},
"overworld": {},
"pumpkin_pastures": {},
"animal": {},
"monster": {}
}
}
}
修改已有生態域[編輯]
生態域定義檔案可以作為初始定義或覆蓋,這取決於行為包的層級。
生態域規範[編輯]
接下來我們將簡單的介紹有關定義生態域的json檔案的基本規範。(注意:json檔案在 行為包/biomes 下,且一個json檔案對應著 一個生態域)
在json檔案中,您首先能看到的是format_version
屬性(這裡將關鍵字譯成屬性),即 版本規範 ,接下來的內容都是基於 format_version ≥ 1.13.0 的情況下,進行的。
接下來我們可以看到另一個頂層屬性minecraft:biome
,它是極其重要的,接下來我們的所有操作都在這個屬性下進行,我們來看一下它的基本格式
"minecraft:biome": {
…
}
在 minecraft:biome
這個頂層屬性下,有 description
這個屬性,目前這個屬性下僅有 identifier
屬性,他便對應著這個生態域的 命名空間 ,接下來請看下面這個例子
"description": {
"identifier": "wiki:test_biome"
}
這裡有很多注意點:
identifier
屬性不允許省略name:
,就像上面例子中不能省略wiki:
,但在後面很多地方允許您省略name:
(注:如果您是修改原版的生態域,可以省略minecraft:
)identifier
不能對應多個 值 ,也就是說,一個json檔案僅能定義一個 生態域identifier
所對應的值 必須與檔案名相同
minecraft:biome
屬性下還有 components
屬性,即元件,這是生物群落定義的核心。在這裡,定義生物群落的 各種特點
"components": {
…
"minecraft:ignore_automatic_features": {}
}
要注意的是:元件中的所有內容始終是 物件屬性 ,儘管是那些看起來要被賦予 布林值 的 屬性,例如:minecraft:ignore_automatic_features
不能被賦予 ture 或者 false 的 布林值,而是賦予一個空物件
"components": {
…
"minecraft:ignore_automatic_features": {}
}
同時,元件允許出現相同的 屬性名 ,像下面這個例子,同時出現了 兩次 minecraft:overworld_height
屬性,但是遊戲僅採用最後定義的 屬性 ,也就是第二個
minecraft:overworld_height
屬性,儘管 noise_type 的覆蓋層級比 noise_params 更高,所以這樣應該儘量減少重複的 屬性名
"components": {
…
"minecraft:overworld_height": {
"noise_type": "ocean"
},
"minecraft:overworld_height": {
"noise_params": [1.25, 0]
}
}
還要注意的是:當在生態域定義中使用元件時,必須提供其所有必需的屬性;如果沒有提供,將拋出錯誤,生態域將無法生成。
除了用於建立生態域的元件之外,components
屬性下還需要 標籤。
"components": {
…
"overworld": {},
"pumpkin_pastures": {},
"animal": {},
"monster": {}
}
標籤看起來像空元件,它同樣需要滿足 正則運算式 。標籤允許創作者自己定義,大部分情況下,您應當使用範例中所提供的標籤,或者使用 特定的標籤 (這個意思是您不能以minecraft:
開頭,以防與 mojang 未來的更新重複,最好應該像賦予 命名空間 一樣,建立一個標籤)。
繼承[編輯]
生態域定義檔案可以作為初始定義或覆蓋,這取決於行為包的順序。
繼承 僅會繼承 components 屬性中的標籤和元件。但不幸的是,任何元件都需要宣告所有 參數 ,這意味著重寫生態域的時候,重新宣告所有的元件可能是更好的選擇,也就是說轉用 覆蓋 而非 完全繼承。
要注意的是:無論是 完全繼承 還是 覆蓋 的情況下,繼承 總會出現,它是不可避免的,除非新定義干擾了以前的定義,也就是所謂的 表面調整。
覆蓋[編輯]
該頁面的編輯正在進行中。 請幫助我們擴充或改進這篇文章。 |
自訂生態域[編輯]
該頁面的編輯正在進行中。 請幫助我們擴充或改進這篇文章。 |
群系生成[編輯]
群系的生成有幾點是您要明確的:
- 選擇群系生成在哪個 維度
- 選擇群系在特定的 插槽 中,起到怎樣的作用
- 採用何種 種子 以使 世界生成器 透過適當的 噪聲 生成您的群系
先簡單介紹一下 維度:
主条目:维度
維度(Dimension)為Minecraft中平行世界的稱謂。包括:
- 主世界 - Minecraft的起始維度與主要維度。
- 地獄 - 透過在主世界中建造地獄傳送門到達的地獄風格的維度。
- 終界 - 整個維度都是由終界石構成的浮天空島世界,可透過進入要塞中的終界傳送門到達。
目前,終界 暫時不允許加入和刪除已有的 生態域 。所以我們只能對 地獄 和主世界 進行操作,先從主世界講起。
主世界[編輯]
首先要明確一個重要的地方,何謂 種子(此處提供我的世界wiki的頁面) 。
當遊戲準備生成一個世界時,遊戲會呼叫一個被稱作 柏林噪聲 的算法,生成一個偽隨機數,這個數決定了世界的樣子。但由於偽隨機算法的性質,若算法初始輸入的數值(種子)是相同的話,算出的最終結果是相同的。這就是種子的意義:使用相同的種子可以生成出多個相同的世界。
當世界生成算法更新(通常是加入新的生態域)後,相同的種子就不會生成相同的地形。這也是某些不同的遊戲版本中,相同的種子無法產生相同的地形的原因。
再簡單介紹一下 插槽:
這裡插槽的指的是世界基本分布方式(這裡只介紹主世界),包括
若將世界比作一張大版,插槽就將這張大板分割成了各個部分,生態域都應該穩穩的插在插槽中,以使世界能夠正常生成
在主世界中採用 地區 , 氣候 和 權重 這三個值來生成群系
//下面这些本质上是个组件
"minecraft:overworld_generation_rules": {
"generate_for_climates": [
["cold", 1] //温度类型,1是权重
],
"hills_transformation": "pumpkin_pastures_hills",
"shore_transformation": "pumpkin_pastures"
}
在遇到高山等地形時,上面這個元件還能幫助 生態域 轉換自己的型別。要注意的是:它們也可以把自己註冊成基本的生態域(已有的基本生物情緒包括土地高山等),並宣告自己的子群系
了解了這些後,我們就可以開始了解下面的內容了。
氣候[編輯]
"generate_for_climates": [
["frozen", 2],
["cold", 1]
]
所有生態域都擁有溫度(Temperature
)、降水(Downfall
)和降水型別(Precipitation
)三個基本屬性,這些屬性組合在一起就是 氣候 。
這裡我們先看 溫度 ,這裡的溫度與一般情況下的極為不同,在現實世界中,我們直接用數字表示溫度,但現在你將會看到5種不同意義的溫度,這些溫度插槽表示著群系能在哪些溫度地圖下產生
溫度型別 | 屬性名 |
---|---|
冰凍 | frozen
|
寒冷 | cold
|
一般 | medium
|
不熱 | lukewarm
|
溫暖 | warm
|
不热 的温度只适用于海洋和深海。土地只使用其他4种温度类型。
氣候槽和地區槽形成了獨有的插槽地圖(指同型別插槽所占有的空間),這些地圖相互重疊,形成了 噪音交又點 (這個我們之後會講到) ,換句話說:生態域只能在這些 噪音交叉點 上生成,基本氣候插入這些 點 ,然後它的子群系就會申請更精細的形狀,但是這麼多群系,難道全部給它們生成嗎?所以就需要權重來幫忙,權重規定了 生態域可以爭奪的空間
關於 權重 ,您需要注意的點:
- 氣候槽和地區槽是無法組態和修改的,這導致群眾成為了您唯一修改 生態域 大小的方式
- 權重應該是一個整數值,您也可以給它提供幾位小數,但是遊戲會將小數向下取整
- 權重應該是一個自然數,如果您給它設定為負數,它的情況將會跟設定為零的時候一樣
- 權重也同樣在
generate_for_climates
之下(這裡的意思是說溫度後面的數字即為權重,就像上面的json例子一樣),通常來說將 所有權重 修改為 0 ,應當可以使目前群系消失(無法生成),但是遊戲有個回退系統,所以此方法無效
要注意的是:
- 在遊戲底層中,氣候插槽比地區插槽更早考慮,也就是說:一個生物體系會先考慮這個群系是否滿足 氣候 要求,再考慮是否滿足 地區 要求
- 如果同一個群系生成在兩個相鄰的溫度插槽時,這兩個群系會合成一個
- 首次載入時,玩家定然會在 平原 , 叢林 ,針葉林 , 黑森林 , 平原 , 森林 及它們的變種 誕生 ,如果它們不存在,遊戲將會無休止的尋找 合適的 生成 位置
- 與地區插槽不同,一個生態域能註冊多個 氣候插槽
//平原生物群系的范例
"generate_for_climates": [
["cold", 1],
["medium", 3],
["warm", 1]
]
上述講的是關於氣候的 溫度 選項,其他選項可以在玩法中找到。
地區[編輯]
遊戲中的主世界由多個地區分割而成,這些地區充當了放置生態域的插槽,一般情況下會明顯的被海洋和陸地分割。
接下來我們將介紹多種 地區槽 型別。
土地
與真實的世界不同,主世界的大部分是陸地。共有56個 生物群落 屬於它,其中許多是變異或丘陵形式的基礎生物群落。
- 共有土地
"generate_for_climates": [
["cold", 1]
]
這是遊戲內最大的 槽 ,占有了大部分 土地,除非另有標記,不然所有的自訂生物群群系 都將插入這個 槽
当所有属于共有土地的群系都被特殊的方法清除后,稀有土地的群系就会占据原来的共有土地,如果稀有土地的也被清除,游戏将会从备用表中直接提取
- 稀有土地
"minecraft:overworld_generation_rules": {
"generate_for_climates": [
["medium", 1]
]
…
},
"rare": {}
稀有土地槽是主世界中為生物群落預留的一些大而罕見的區域。當生態域擁有 rare
標籤時,生態域便可以生成在 稀有土地槽 中,要注意的是:
rare
標籤的層級比ocean
標籤低(這兩個標籤不共存)- 稀有土地槽 目前擁有的群系中不包括氣候有 frozen 溫度的群系,但仍然允許您將擁有這種氣候溫度的群系,加入進稀有土地,像下面這個例子
"minecraft:overworld_generation_rules": {
"generate_for_climates": [
["frozen", 1]
]
},
"rare": {}
海洋
主世界的其餘部分都被海洋所覆蓋,事實上海洋這個詞不太恰當,因為看起來像河和湖泊的也是海洋。使用 ocean 標籤可以將生態域插入海洋,您要注意的是:
- 海洋通常分為淺海和深海,兩者的比重大致相等。分散的島嶼可以在海洋區域內生成。
- 一般地,有10種海洋群系
- 基本海洋
"minecraft:overworld_generation_rules": {
"generate_for_climates": [
["lukewarm", 1]
]
},
"ocean": {}
基本海洋約占海洋面積的一半。該區域旨在供深度相對較淺的水生生物群落使用,您要注意的是:
- 基本海洋不能用deep標籤來開槽
- 深海
深海採用 deep 標籤,但 deep 的標籤必需與 ocean 標籤一起使用。
"minecraft:overworld_generation_rules": {
"generate_for_climates": [
["frozen", 1]
]
},
"ocean": {},
"deep": {}
島嶼
島嶼本身不是一個主生態域,是一個子生態域。您可以先了解什麼是島嶼:
从概念上讲,岛屿与陆地区域的次级生物群落没有什么不同,它看起来更像是丘陵,但又并非是山丘。海洋中的岛屿才算真正意义上岛屿
"minecraft:overworld_generation_rules": {
"hills_transformation": "tropical_island"
},
上面指的是陸地上的島嶼(即所謂的山丘)
"minecraft:overworld_generation_rules": {
"hills_transformation": "deep_ocean"
},
上面指的是海洋中的島嶼(有時可能會成為海岸)
蘑菇
下面的蘑菇特指包含蘑菇的生物群系
有關蘑菇最有名的生態域應當是蘑菇地,可怕的是,有關蘑菇的生態域幾乎是無法刪除的。當你刪除主世界其他的群系之後,蘑菇就會覆蓋掉這些
因為蘑菇的這種特性,如果你在一個世界中不想要蘑菇,使它變得跟海洋特別像,可能是唯一的方法。
"minecraft:overworld_generation_rules": {
…
"hills_transformation": [
["overgrown_forest_hills_short", 4],
["overgrown_forest_hills_tall", 1]
],
"shore_transformation": "rocky_shore"
}
現在主世界所有的 主生物體系 ,已經介紹完畢,接下來我們將介紹 子生態域型別 。
首先一個主生態域可以透過以下的 生成規則轉變 來宣告自己的子生態域:
型別轉變 | 生成規則 |
---|---|
山 | "hills_transformation"
|
突變 | "mutate_transformation"
|
河 | "river_transformation"
|
海岸 | "shore_transformation"
|
子生態域也可以宣告自己的子生態域,但是不可以同類嵌套,比如說山不能再宣告山,但可以宣告 突變山。下面我們列舉它們的使用方法:
型別 | 注意 | 範例 |
---|---|---|
山 | 它們通常擁有著高海拔,在生態域中很常見,雖說它們的名字是丘陵,但是他們不一定必須要生成丘陵,它們也可以用於生成天山湖,火山口等生態域。它們的特點是小而常見 | "hills_transformation": "pumpkin_pastures_hills"
|
突變 | 這是一種大而罕見的群系。要注意的是,突變只能在子群系中宣告,比如說您可以宣告突變丘陵,但是您不應該期望它可以在主生態域中生成。 | "mutate_transformation": "mushroom_forest_dense"
//突变丘陵
"hills_transformation": "mangrove_forest_hills"
//另一种形式
"mutate_transformation": "mangrove_forest_hills_mutated"
|
河流 | 河流生態域的生成是極其危險的,所以建好一個生態域只擁有一種河流,這在接下來我們可能會詳細介紹 | "river_transformation": "ivory_shallows"
|
海岸 | 跟河流一樣,海岸有點特別,它既可以屬於陸地生態域,也可以屬於海洋生態域(加入ocean 標籤)。一般用沙或者石頭裝飾,它能夠用來生成大而淺的湖泊,或者陸地與海洋的過渡 |
"shore_transformation": "lava_fields"
|
地獄[編輯]
"minecraft:nether_generation_rules": {
"target_temperature": 0.5,
"target_humidity": 0.75,
"target_altitude": -0.25,
"target_weirdness": 0,
"weight": 0.1
}
我們必須對您做出警告,地獄雖然比主世界擁有更多的功能控制,但這是以更高的複雜性做代價的,生態域都需要更為強大的數學系統。
基礎[編輯]
與主世界不一樣,主世界僅擁有氣候與地形兩種槽,它卻擁有4種(並且槽與槽之間的區分更加明顯):
型別 | 槽 |
---|---|
溫度 | target_temperature |
濕度 | target_humidity |
海拔 | target_altitude |
幽冥 | target_weirdness |
请注意:上面这些内容并不代表着生物群系的实际属性,如"target_altitude"值的提高,并不会使气候变暖,它也可以代表着腐败性。所以在特殊情况下,我们可以重新声明他们的表示含义,甚至忽略他们。
這些target槽的值被限定在-1到1之間。
更多考慮[編輯]
群系形狀[編輯]
塊型別[編輯]
高度圖[編輯]
噪聲[編輯]
表面生成[編輯]
表面調整[編輯]
噪聲交叉點[編輯]
玩法[編輯]
玩法是一個抽象的意義,下面內容包括生態域的 迷霧 ,實體 ,地物 ,裝飾。