Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Advertisement
Information icon
此特性为Java版独有。

地物(Feature)是在世界生成中用以生成特殊元素的功能。如树木、矿物的团簇等。地物只能放置在以所在区块为中心的3x3区块的区域。它们是逐个区块依次尝试生成的。不像结构,地物无法用命令定位。

地物类型[]

地物类型(Feature Type,可简称为地物)决定了生成的方式与内容。

地物类型列表[]

以下列出了地物类型的所有有效ID:

  • no_op—不进行操作。用于覆盖现有已配置的地物。
  • bamboo
  • basalt_columns
  • basalt_pillar
  • block_column
  • block_pile
  • blue_ice
  • bonus_chest
  • chorus_plant
  • coral_claw
  • coral_mushroom
  • coral_tree
  • delta_feature
  • desert_well
  • disk—只有在当前方块含的情况下,才能使用指定的半径和深度将方块放置在圆盘中。
  • dripstone_cluster
  • end_gateway
  • end_island
  • end_spike
  • fill_layer—填充16×1×16方块范围内的所有空气。在超平坦世界中使用。
  • flower
  • forest_rock
  • fossil—可以放置小型结构。
  • freeze_top_layer—在积雪生物群系中放置雪并用冰代替水。
  • geode
  • glowstone_blob
  • huge_brown_mushroom
  • huge_fungus
  • huge_red_mushroom
  • iceberg
  • ice_spike
  • kelp
  • lake
  • large_dripstone
  • monster_room
  • multiface_growth
  • nether_forest_vegetation
  • netherrack_replace_blobs—用一个方块替换特定半径内的所有目标方块。如果它没有在其位置找到目标方块,它将在生成之前向下移动,直到找到目标方块。
  • no_bonemeal_flower
  • ore
  • pointed_dripstone
  • random_boolean_selector—随机选择两个地物中的一个,每个地物概率均等。
  • random_selector—从列表中随机选择一个地物。
  • random_patch
  • replace_single_block—使用目标和状态列表替换单个方块。
  • root_system—生成顶部具有地物的根系。
  • scattered_ore
  • sculk_patch
  • seagrass
  • sea_pickle
  • simple_block
  • simple_random_selector—从列表中随机选择一个地物,每个地物概率均等。
  • spring_feature
  • tree
  • twisting_vines
  • underwater_magma
  • vegetation_patch
  • vines
  • void_start_platform
  • waterlogged_vegetation_patch—一片植被,但它会尝试使放置的方块含水。
  • weeping_vines

已配置的地物[]

地物类型决定了生成的方式,而具体的生成细节需要额外配置。为地物类型添加配置后,称为已配置的地物(Configured Feature,可简称为地物)。已配置的地物以JSON文件的形式存储在数据包的data/<命名空间>/worldgen/configured_feature目录下。

JSON格式[]

  • 根标签
    •  type:地物类型ID。
    •  config:此已配置的地物的配置。配置项由type决定。任何不在此下方列出的名称不含有配置项,但其定义中仍须包含一个空的config对象。

已放置的地物[]

已配置的地物确定了生成的方式与细节,而在世界生成过程中具体的放置位置需要额外定义。给已配置的地物添加放置修饰器(Placement Modifier)后,称为已放置的地物(Placed Feature)。已放置的地物以JSON文件的形式存储在数据包的data/<命名空间>/worldgen/placed_feature目录下。

JSON 格式[]

  • 根标签
    •  feature:一个已配置的地物的ID,或者一个已配置的地物的对象。
    •  placement:一个放置修饰器的列表。列表中的修饰器会被按顺序依次调用。
      • 一个放置修饰器
        •  type:放置修饰器的类型。
        • 其他附加字段取决于 type的值,参见下文。

放置修饰器[]

放置修饰器接收一个初始坐标并返回空或者一个或多个坐标。每个坐标代表一次在此处的生成尝试。放置修饰器可以返回空以取消此次尝试,增加多个相同的坐标以增加生成的次数,或者返回多个不同的坐标以在不同地方进行多次生成尝试。

在已放置的地物中,列表中的放置修饰器会被依次调用,从初始坐标得到最终的坐标列表,以在这些位置进行生成尝试。其中,当直接生成地物时,初始坐标为一个区块的西北下角;当被另外的地物调用时(如被random_selector类型的地物调用,或被结构池调用),初始坐标为该地物要生成的位置。

以下是 type所有可能的值及对应的附加字段:

  • biome—如果该位置的生物群系可以生成该地物,返回当前坐标。否则,返回空。注意,该放置修饰器类型不能用于被其他的地物调用的已放置地物。没有附加字段。
  • block_predicate_filter—如果该位置的方块满足谓词,返回当前坐标。否则,返回空。
    •  predicate:需满足的方块谓词。
      • 方块谓词
  • carving_mask—返回该区块中所有被雕刻器雕刻过的坐标。
    •  step:雕刻生成的阶段;应为"air""liquid"
  • count—返回多个相同的坐标,以增加尝试生成的次数。
    •  count:数量。取值为0到256的闭区间。
      • 整数提供器
  • count_on_every_layer—在(0,0)到(16,16)的水平相对坐标范围内,在由空气、熔岩或水隔离的每一层尝试随机抽选指定数量的坐标,y轴坐标为该水平坐标上该层的上方一格。返回这些坐标。
    •  count:数量。取值为0到256的闭区间。
      • 整数提供器
  • environment_scan—向上或向下依次检查方块,直到找到满足条件的位置,返回这个位置。如果在最大步数内没有找到,返回空。
    •  direction_of_search:方向。应为"up""down"
    •  max_steps:最大移动步数,取值范围为1到32的闭区间。
    •  target_condition:生成位置需满足的方块谓词。
      • 方块谓词
    •  allowed_search_condition:(可选) 如果指定,那么每一步检查的位置都必须满足该谓词。如果遇到不满足的方块且还没有找到满足 target_condition的方块,返回空。
      • 方块谓词
  • height_range—修改坐标的y值,并返回修改后的坐标。
    •  height:新的y轴坐标。
      • 高度提供器
  • heightmap—返回该水平位置的heightmap高度的上方一格的坐标。
    •  heightmap:使用的高度图。必须为MOTION_BLOCKINGMOTION_BLOCKING_NO_LEAVESOCEAN_FLOOROCEAN_FLOOR_WGWORLD_SURFACEWORLD_SURFACE_WG
  • in_square—X轴坐标和Y轴坐标各自增加一个0到15内随机数。这是random_offset类型的简化形式,相当于y_spread为0、xz_spread为0到15的均匀分布的random_offset类型放置修饰器。没有附加字段。
  • noise_based_count—得到的噪声为正时,复制并返回多个当前坐标,数量取决于一个噪声值,根据噪声值平滑变化。得到的噪声值小于等于0时,返回空。噪声值计算公式:ceil((noise(x / noise_factor, z / noise_factor) + noise_offset) * noise_to_count_ratio)
    •  noise_factor:水平缩放噪声图。
    •  noise_offset:(可选,默认为0)噪声的垂直偏移。
    •  noise_to_count_ratio:数量与噪声值间的比率。
  • noise_threshold_count—复制并返回多个当前坐标。有两种指定的数量,根据噪声值大于或小于指定阈值决定。若noise(x / 200, z / 200) < noise_level,使用below_noise,否则使用above_noise
    •  noise_level:阈值。
    •  below_noise:低于阈值时的数量。低于0时视为0。
    •  above_noise:高于阈值时的数量。低于0时视为0。
  • random_offset—为当前位置加上偏移值并返回该位置。注意,X和Z轴使用的是不同的随机数。
    •  xz_spread:在x和z轴上的偏移值。取值为-16到16的闭区间。
      • 整数提供器
    •  y_spread:在y轴上的偏移值。取值为-16到16的闭区间。
      • 整数提供器
  • rarity_filter—有1 / chance的概率返回当前坐标。否则返回空。
    •  chance:指定概率,取值为正整数。
  • surface_relative_threshold_filter—如果位于相对于地表的指定范围内,返回当前坐标。否则返回空。
    •  heightmap:使用的高度图。必须为MOTION_BLOCKINGMOTION_BLOCKING_NO_LEAVESOCEAN_FLOOROCEAN_FLOOR_WGWORLD_SURFACEWORLD_SURFACE_WG
    •  min_inclusive:相对于地表的高度的最小值。
    •  max_inclusive:相对于地表的高度的最大值。
  • surface_water_depth_filter—若该水平坐标地表(从上到下第一个非空气方块)下的材料不阻挡运动的方块(通常是液体)数量小于指定深度,返回当前坐标。否则返回空。
    •  max_water_depth:最大深度。

历史[]

Java版
1.16.220w28a加入了对已配置的地物的支持,储存在worldgen/configured_feature文件夹下。
pre1已配置的地物从data/minecraft/worldgen/configured_feature/<namespace>移动到了data/<namespace>/worldgen/configured_feature,和其他资源保持一致。
1.1720w45a加入geobe已配置的地物。
20w49a加入dripstone_clusterlarge_dripstonesmall_dripstone已配置的地物。
21w03a加入glow_lichen已配置的地物。
21w05adripstone_cluster max_distance_from_center_affecting_chance_of_dripstone_column字段被重命名为 max_distance_from_edge_affecting_chance_of_dripstone_column
21w06a加入underwater_magma已配置的地物。
21w07a加入glowstone_blob已配置的地物,但此地物不能使用 config配置。
21w08ageode加入了 invalid_blocks_threshold字段。
加入scattered_ore已配置的地物,和ore使用同一个配置。
移除no_surface_ore已配置的地物,被ore discard_chance_on_air_exposure字段替代。
ore加入了 discard_chance_on_air_exposure字段, target state字段被 targets替代。
dripstone_clusterlarge_dripstone现在使用浮点提供器,而不是之前的均匀分布浮点数。
21w10asimple_block to_place字段现在使用方块状态声明,而不是之前的方块状态。
加入root_systemgrowing_plantvegetation_patchwaterlogged_vegetation_patch已配置的地物。
加入random_spread_foliage_provider树叶放置器。
加入bending_trunk_placer树干放置器。
移除tree max_water_depth heightmap字段,使用相应的装饰器进行替代。
tree加入 dirt_provider force_dirt字段, leaves_provider字段被重命名为 foliage_provider
fossil现在可以使用 config进行配置。
21w15ageode现在使用整数提供器,而不是之前分离的字段。
21w16a移除emerald_ore,使用replace_single_block进行代替。
21w20anetherrack_replace_blobs radius字段现在只能为0到12的闭区间内的整数。
geode加入 cannot_replace字段。
pre1geode加入 invalid_blocks字段。
tree加入 sapling_provider字段。
1.1821w38a移除tree sapling_provider字段。
21w39arandom_patchflowerflower_no_bonemeal的字段被修改为 tries xz_spread y_spread only_in_air allowed_on disallowed_on feature
growing_plant被重命名为block_column,移除 body_provider head_provider height_distribution字段,取而代之的是 layers字段。
simple_block的字段被修改为 to_place
21w40a移除random_patchflowerflower_no_bonemeal only_in_air allowed_on disallowed_on字段,使用 feature进行代替。
移除block_column allow_water字段,使用 allowed_placement进行代替。
21w42a移除small_dripstone,使用pointed_dripstone进行代替。
pre1移除lake state字段,使用 fluid barrier进行代替。
nether_forest_vegetation加入 spread_width spread_height字段。
twisting_vines加入 spread_width spread_height max_height字段。
pre3glow_lichen can_be_placed_on字段现在使用方块ID而不是方块状态。
vegetation_patchwaterlogged_vegetation_patchrandom_boolean_selector现在使用已放置的地物而不是已配置的地物。
1.1922w11a加入sculk_patch已配置的地物。
22w12a现在如果树叶将要放置于水中,树叶放置器会自动将树叶变为含水状态。
22w14a加入surface_disk已配置的地物,与disk使用相同的配置。
glow_lichen被重命名为multiface_growth
加入upwards_branching_trunk_placer树干放置器。
tree加入可选的 root_placer字段,仅有一种mangrove_root_placer树根放置器可使用。
加入attached_to_leaves树叶装饰器。
leave_vine树叶装饰器加入 probability字段,此项曾经被硬编码为0.25。
disk加入 can_origin_replace字段。
22w15a树根放置器的 y_offset字段被重命名为 trunk_offset_y,大部分的字段都移动到 mangrove_root_placement中,加入 above_root_placement字段。
disk state字段被 state_provider取代, targets target取代,并移除 can_origin_replace字段。
移除ice_patchsurface_disk,使用disk进行代替。

语言

Advertisement