結構(Structure),或稱為結構地物(Structure feature),是一種特殊的用於生成結構的地物。
結構地物類型[]
結構地物類型(Structure Feature Type)決定了生成的方式與內容。
結構地物類型列表[]
以下列出了地物類型的所有有效ID及其作用:
buried_treasure
- 硬編碼生成一個埋藏的寶藏。
desert_pyramid
- 硬編碼生成一個沙漠神殿。
end_city
- 使用結構模板生成有一個終界城。
fortress
- 硬編碼生成一個地獄要塞。
igloo
- 使用結構模板生成一個雪屋。
jigsaw
- 使用自訂的結構模板生成結構地物。通常使用多個結構模板,透過拼圖方塊進行連接,以生成大型結構。
jungle_temple
- 硬編碼生成一個叢林神廟。
mineshaft
- 硬編碼生成一個廢棄礦坑。
nether_fossil
- 使用結構模板生成一個地獄化石。
ocean_monument
- 硬編碼生成一個海底神殿。
ocean_ruin
- 使用結構模板生成一個海底廢墟。
ruined_portal
- 使用結構模板生成一個廢棄傳送門。
shipwreck
- 使用結構模板生成一個沉船。
stronghold
- 硬編碼生成一個要塞。
swamp_hut
- 硬編碼生成一個沼澤小屋。
woodland_mansion
- 使用結構模板生成一個綠林府邸。
結構模板[]
結構模板(Structure Template)即結構檔案,儲存用於生成結構地物的模板。jigsaw
類型的結構地物,可以自訂所使用的結構模板。而其他結構地物,如終界城、雪屋等,使用的結構模板的檔案路徑是硬編碼的。
結構池[]
結構池(Structure Pool),或稱為拼圖池(Jigsaw Pool)、模板池(Template Pool)將多個結構結構模板或已放置的地物組合在一起,以從中隨機選取一個生成。在jigsaw
類型的結構地物中使用。其以JSON檔案的形式儲存在資料包的data/<命名空间>/worldgen/template_pool
目錄下。
JSON格式[]
- 根標籤
- name:該池的命名空間ID。必填,但無任何作用。
- fallback:回落池,可以被設定為另一模板池。回落池中定義的模板會在以下兩種情況下生成:1.當拼圖方塊生成達到預定層數時,回落池會生成在最後一層的末尾。以上兩種情況下,遊戲會試圖從回落池載入一個模板來替代原先的模板進行生成。當回落池中的模板嘗試生成時,如果該回落池中任意一個元素也都無法成功生成,
2.當拼圖方塊試圖載入的結構池中所有元素都無法成功生成。
則不會生成任何東西。否則,回落池中的模板將成功生成。 - elements:一個可供選擇的元素列表。在拼圖結構地物的起始結構池中,隨機選取一個元素,若指定了起始拼圖方塊名稱,但該元素沒有找到對應名稱的拼圖方塊,結構地物將生成失敗。在非起始結構池中,隨機選取一個元素,滿足以下條件才能成功生成:1.存在對應名稱、對應方向(水平的拼圖方塊相互對應、朝上和朝下的拼圖方塊相互對應)的拼圖方塊。若無法成功生成,將會再去嘗試該列表中的其他元素,如果全部都無法成功生成,將嘗試使用回落池。
2.將生成的該元素方塊與結構起始點的三維切比雪夫距離不會超過該已配置結構地物中指定的最大距離,或使用指令或拼圖方塊GUI生成時不超過128。
3.將生成的該元素不會與生成的其他拼圖發生重疊,除非拼圖方塊指向的方塊位於目前拼圖內部。
4.拼圖方塊指向的方塊位於目前拼圖內部,則該元素與之後生成的所有拼圖都必須完全位於該拼圖方塊所在拼圖的內部。- :一個元素。
- weight:值越大,該元素就越有可能被優先選中。取值為1到150的閉區間。
- element:該元素的屬性
- projection:可為
rigid
或terrain_matching
。決定生成的高度是否匹配地形高度。 - element_type:必須為以下列出的類型之一,也可為
empty_pool_element
以不生成任何內容。- 如果
element_type
是feature_pool_element
,附加的參數如下:
- 如果
- feature:要使用的已放置的地物的命名空間ID。
- 如果
element_type
是list_pool_element
,附加的參數如下:
- 如果
- elements:一個可供選擇的結構列表。
[需要測試]。 - 一個元素:與該元素結構相同。
- 如果
element_type
是legacy_single_pool_element
或single_pool_element
,附加的參數如下。兩者的區別在於,legacy_single_pool_element不會生成結構模板中的空氣方塊,就如同空氣方塊是結構空位一樣。
- location:要放置的結構模板的命名空間ID。
- processors:「處理器列表」的命名空間ID,或一個「處理器列表」對象,或者一個處理器的列表。
- projection:可為
- :一個元素。
已配置的結構地物[]
結構地物類型決定了生成的方式,而具體的生成細節需要額外配置。為結構地物類型加入配置後,稱為已配置的結構地物(Configured Structure Feature),簡稱為結構(Structure)。
已配置的結構地物以JSON檔案的形式儲存在資料包的data/<命名空间>/worldgen/structure
目錄下。
JSON格式[]
- 根對象。
- type:結構地物類型ID。
- biomes:一個生態域ID或一個生態域標籤,或者一個生態域ID的列表。該結構只允許生成在指定的生態域中。
- step: 該結構生成所在的步驟。參見自訂生態域中的features字段,在同一步驟裡的結構地物比地物優先生成。可以為
raw_generation
、lakes
、local_modifications
、underground_structures
、surface_structures
、strongholds
、underground_ores
、underground_decoration
、fluid_springs
、vegetal_decoration
或top_layer_modification
。 - terrain_adaptation:(可選,預設為none)該已配置的結構地物的地形調整方式
[需要測試]。 none
無調整,beard_thin
被用於掠奪者前哨站和村莊,beard_box
被用於遠古城市,bury
被用於要塞和古蹟廢墟。 - spawn_overrides:(必需,但可以為空。若不包含某個生物種類,則不覆寫該種類的生物設定,依據生態域生成。)覆寫該結構內可以生成的生物。例如,在地獄要塞中,生成烈焰使者和凋零骷髏;在遠古城市中,沒有生物生成。
- <生物種類>:鍵名可以是
monster
、creature
、ambient
、water_creature
、underground_water_creature
、water_ambient
、misc
或axolotls
。- bounding_box:可以是
piece
或full
。如果為full
,覆寫結構的整個輪廓內的生成設定。如果是piece
,則只覆寫各個結構片段的輪廓內的生成設定。 - spawns:(必選,但可以為空。若為空,則不生成此類生物)一個生成資料的對象的列表,列表的每一項都對應一種應該在該生態域生成的生物。
- :單個生物的生成資料。
- type:該生物的命名空間ID。
- weight:該生物的生成權重,更高的值代表更多的生成。
- minCount:成群生成時的最低數量。
- maxCount:成群生成時的最高數量。
- :單個生物的生成資料。
- bounding_box:可以是
- 若
type
是jigsaw
,附加的參數如下:
- <生物種類>:鍵名可以是
- start_pool:拼圖結構的起始結構池ID,或者一個模板池對象。
- size:拼圖結構的生成深度,取值為0到7的閉區間。
- start_height:如果未指定
project_start_to_heightmap
,結構會在此高度開始生成。否則,結構在高度圖的基礎上偏移此高度後生成。- 高度提供器
- project_start_to_heightmap:(可選)結構生成時使用的高度圖。必須為
WORLD_SURFACE_WG
、WORLD_SURFACE
、OCEAN_FLOOR_WG
、OCEAN_FLOOR
、MOTION_BLOCKING
或MOTION_BLOCKING_NO_LEAVES
。 - start_jigsaw_name:(可選)連接起始模板的拼圖方塊的名稱。
- max_distance_from_center:拼圖的方塊距離結構起始點的最大三維切比雪夫距離。取值為1到128的閉區間。當 terrain_adaptation不為none時,取值為1到116的閉區間。
- use_expansion_hack:僅用於村莊。
- pool_aliases:(可選)定義模板池映射。
[新增:JE 1.20.3] - :一個模板池映射對象。
- type:映射類型。可以為
direct
(一對一映射)、random
(隨機挑選映射)和random_group
(隨機挑選一組映射)。- 如果
type
是direct
,附加的參數如下:
- 如果
- alias:模板池的映射名稱。
- target:映射到的目標模板池。
- 如果
type
是random
,附加的參數如下:
- 如果
- alias:模板池的映射名稱。
- targets:候選的模板池,當解析此映射時將按照權重隨機挑選內部定義的模板池。
- :一個候選的模板池項。
- data:一個模板池的命名空間ID。
- weight:此模板池項的權重。
- 如果
type
是random_group
,附加的參數如下:
- :一個候選的模板池項。
- groups:候選的映射。
- :一個候選的映射項。
- data:一個模板池映射對象。
- 結構與外層相同。
- weight:此映射項的權重。
- data:一個模板池映射對象。
- :一個候選的映射項。
- type:映射類型。可以為
- 若
type
是mineshaft
,附加的參數如下:
- :一個模板池映射對象。
- type:必須為
normal
或mesa
。mesa
用於生成黑橡木組成的礦坑,normal
用於生成橡木組成的礦坑。- 若
type
是nether_fossil
:
- 若
- start_height:結構起始點的高度。
- 高度提供器
- 若
type
是ocean_ruin
,附加的參數如下:
- biome_temp:必須為
warm
或cold
。用以決定使用哪一種結構變種。 - large_probability:使用大型變種的機率。取值為0.0到1.0的閉區間。
- cluster_probability:生成一簇海底廢墟(而不是一個)的機率,取值為0.0到1.0的閉區間。
- 若
type
是ruined_portal
,附加的參數如下:
- 若
- setups:(不能為空)多個廢棄傳送門的設定。將會從中依據權重隨機選取一項。
- weight:該項設定的權重。
- placement:必須為
on_land_surface
、partly_buried
、on_ocean_floor
、in_mountain
、underground
或in_nether
。決定該廢棄傳送門如何放置。 - air_pocket_probability:廢棄傳送門周圍帶有空氣空腔的機率,取值為0.0到1.0的閉區間。
- mossiness:決定該廢棄傳送門生苔的程度。作為
minecraft:block_age
處理器的參數。取值為0.0到1.0的閉區間。 - overgrown:決定廢棄傳送門周圍是否生成叢林木樹葉。
- vines:決定廢棄傳送門上是否生成藤蔓。
- can_be_cold:決定是否儘量把熔岩和岩漿塊替換為地獄石。
- replace_with_blackstone:決定是否把石磚替換成黑石磚。
- 若
type
是shipwreck
,附加的參數如下:
- is_beached:(可選,預設為false)沉船是否在岸上。
結構集[]
結構集(Structure set)用於在給定位置上放置結構,其以JSON檔案的形式儲存在資料包的data/<命名空间>/worldgen/structure_set
目錄下。
JSON格式[]
- 根標籤
- structures:(必選,但可以為空)要放置的已配置結構地物列表。兩個結構集不應包含同一已配置結構地物。
- 要被放置的已配置結構地物。
- structure:一個已配置結構地物ID或一個已配置結構對象。
- weight:權重。取值為正整數。
- 要被放置的已配置結構地物。
- placement:結構地物的放置方式。
- salt:影響隨機數的數字;見鹽 (密碼學)。取值為非負整數。
- frequency:(可選,預設為1.0)在滿足其他條件的情況下嘗試生成的機率。取值為0.0到1.0的閉區間。將其設定為一個數字並不意味著結構會生成得如同這個值一般頻繁,僅僅是遊戲會嘗試去如此生成而已;生態域和和地形都會阻止一些結構生成。
- frequency_reduction_method:(可選,預設為default)為frequency提供隨機數算法。必須為
default
(機率的隨機數取決於種子碼、座標和鹽)、legacy_type_1
(機率的隨機數僅取決于于種子碼和座標,且僅在座標差異較大時才表現出隨機性)、legacy_type_2
(與default相同,但使用固定的鹽:10387320)或legacy_type_3
(機率的隨機數僅取決於種子碼和座標)。 - exclusion_zone:指定不能放置在某些結構地物附近。
- chunk_count:取值為1到16的閉區間。
- other_set:一個結構集ID。
- locate_offset:(可選,預設為[0,0,0])使用
/locate structure
時的偏移量(單位為區塊)。- :x。取值為-16到16的閉區間。
- :y。取值為-16到16的閉區間。
- :z。取值為-16到16的閉區間。
- type:必須是
minecraft:concentric_rings
或minecraft:random_spread
其中之一。- 如果
type
是concentric_rings
(分佈方式類似於要塞),附加的參數如下:
- 如果
- distance:每一環的寬度加上每環間的間隙寬度(單位為6區塊)。取值為0到1023的閉區間。
- count:該維度嘗試生成的總次數。取值為1到4095的閉區間。
- spread:最中心一環的結構嘗試生成次數。取值為0到1023的閉區間。第n環中的嘗試生成次數為:
第n环的次数 = spread * (n^2 + 3n + 2) / 6
,直到次數達到總次數 count。 - preferred_biomes:一個生態域ID或一個生態域標籤,或者一個生態域ID的列表。
- spread_type(可選,預設為
linear
):linear
或triangular
。 - spacing:兩個結構之間的平均距離(單位為區塊),取值為0到4096的閉區間。
- separation:兩個結構之間的最小距離(單位為區塊),必須小於等於 spacing,取值為0到4096的閉區間。兩次結構之間的最大距離則為
2*spacing - separation
。
- structures:(必選,但可以為空)要放置的已配置結構地物列表。兩個結構集不應包含同一已配置結構地物。
處理器列表[]
處理器列表(Processor list)是用於影響結構中的方塊的處理器的列表,以JSON檔案的形式儲存在資料包的data/<命名空间>/worldgen/processor_list
目錄下。
JSON格式[]
處理器列表的Json可以是一個列表,也可以是包含有一個列表的對象。
- :處理器的列表。
- 處理器對象
或者是:
- :「處理器列表」對象。
- processors:處理器的列表。
- :一個處理器對象。
- 處理器對象
- :一個處理器對象。
- processors:處理器的列表。
組件 |
| ||
---|---|---|---|
資料包 | |||
教學 |
|
版本 | |||||||
---|---|---|---|---|---|---|---|
開發週期 |
| ||||||
技術 |
| ||||||
多人遊戲 | |||||||
遊戲訂製 |
語言