Minecraft Wiki

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

了解更多

Minecraft Wiki
Advertisement
Information icon
此特性为Java版独有。
Dark Oak Sapling
此条目仍需完善。

你可以帮助我们扩充关于该主题的更多信息。

密度函数(Density function)用于根据一定算法将一个方块坐标转换为一个数,其以JSON文件的形式存储在数据包data/<命名空间>/worldgen/density_function目录下。

JSON 格式[]

一个密度函数可以是一个JSON对象,或者一个常量。

  • :根对象
    •  type:密度函数类型ID。
    • 此密度函数类型附加的参数。见下文。

其中若类型为constant,则可以简写为:

  • :常数。取值为-1000000.0到1000000.0的闭区间。

标记函数[]

interpolated[]

根据周围元胞(Cell)的密度函数值,对元胞里的每个方块进行插值。每个元胞的大小为size_horizontal * 4size_vertical * 4

  • :根对象。
    •  type:密度函数类型ID,此处为interpolated
    •  argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

flat_cache[]

对输入的密度函数在Y=0的值按照元胞缩放大小进行缓存。

  • :根对象。
    •  type:密度函数类型ID,此处为flat_cache
    •  argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

cache_2d[]

对输入的密度函数值进行缓存,直到当前计算的坐标发生变化。

  • :根对象。
    •  type:密度函数类型ID,此处为cache_2d
    •  argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

cache_once[]

对输入的密度函数值进行缓存,直到下一次插值运算。

  • :根对象。
    •  type:密度函数类型ID,此处为cache_once
    •  argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

cache_all_in_cell[]

在游戏内部对final_density使用。对输入的密度函数值按元胞为单位进行缓存,存入区块的内存数据中。

  • :根对象。
    •  type:密度函数类型ID,此处为cache_all_in_cell
    •  argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

单变量计算函数[]

abs[]

返回输入的密度函数值的绝对值。

  • :根对象。
    •  type:密度函数类型ID,此处为abs
    •  argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

square[]

返回输入的密度函数值的平方。

  • :根对象。
    •  type:密度函数类型ID,此处为square
    •  argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

cube[]

返回输入的密度函数值的立方。

  • :根对象。
    •  type:密度函数类型ID,此处为cube
    •  argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

half_negative[]

如果输入的密度函数的值大于零,则返回该值本身;否则返回该值的一半。

  • :根对象。
    •  type:密度函数类型ID,此处为half_negative
    •  argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

quarter_negative[]

如果输入的密度函数值大于零,则返回该值本身;否则返回该值的1/4。

  • :根对象。
    •  type:密度函数类型ID,此处为quarter_negative
    •  argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

squeeze[]

首先把输入值钳制在-1到1的区间内(小于-1的视为-1,大于1的视为1),然后将它代入公式x/2 - x*x*x/24并返回。

  • :根对象。
    •  type:密度函数类型ID,此处为squeeze
    •  argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

双变量计算函数[]

add[]

将两个密度函数值相加。

  • :根对象。
    •  type:密度函数类型ID,此处为add
    •  argument1:第一个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
    •  argument2:第二个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

mul[]

将两个密度函数值相乘。

  • :根对象。
    •  type:密度函数类型ID,此处为mul
    •  argument1:第一个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
    •  argument2:第二个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

min[]

取两个密度函数值的最小值。

  • :根对象。
    •  type:密度函数类型ID,此处为min
    •  argument1:第一个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
    •  argument2:第二个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

max[]

取两个密度函数值的最大值。

  • :根对象。
    •  type:密度函数类型ID,此处为max
    •  argument1:第一个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
    •  argument2:第二个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

其他密度函数[]

blend_alpha[]

目前在原版用于旧版区块与新版区块间的过渡。如果区域内全部为新版区块,返回1。

  • :根对象。
    •  type:密度函数类型ID,此处为blend_alpha

blend_offset[]

目前在原版用于旧版区块与新版区块间的过渡。如果区域内全部为新版区块,返回0。

  • :根对象。
    •  type:密度函数类型ID,此处为blend_offset

blend_density[]

目前在原版用于旧版区块与新版区块间的过渡。[需要更多信息]

  • :根对象。
    •  type:密度函数类型ID,此处为blend_density
    •  argument:另一个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

beardifier[]

向结构中添加额外的地形(见结构设置中的adapt_noise)。不需要在噪声设置中额外声明,默认会被加至噪声设置中的final_density

  • :根对象。
    •  type:密度函数类型ID,此处为beardifier

old_blended_noise[]

旧版的噪声算法。[需要更多信息]

  • :根对象。
    •  type:密度函数类型ID,此处为old_blended_noise
    •  xz_scale:取值为0.001到1000.0的闭区间。
    •  y_scale:取值为0.001到1000.0的闭区间。
    •  xz_factor:取值为0.001到1000.0的闭区间。
    •  y_factor:取值为0.001到1000.0的闭区间。
    •  smear_scale_multiplier:取值为1.0到8.0的闭区间。

noise[]

对噪声进行一次采样。

  • :根对象。
    •  type:密度函数类型ID,此处为noise
    •  noise:一个噪声ID。
    •  xz_scale:X坐标和Z坐标的缩放比例。
    •  y_scale:Y坐标的缩放比例。

end_islands[]

使用末地岛屿的噪声算法对当前水平坐标进行采样。其最小值为-0.84375,最大值为0.5625。

  • :根对象。
    •  type:密度函数类型ID,此处为end_islands

weird_scaled_sampler[]

根据输入的另一个密度函数,对指定噪声的特定区域进行缩放、减弱增强,并取绝对值后返回。

  • :根对象。
    •  type:密度函数类型ID,此处为weird_scaled_sampler
    •  rarity_value_mapper:填type_1(最小缩放增强率为0.75,最大为2.0)或type_2(最小缩放增强率为0.5,最大为3.0)。
    •  noise:一个噪声ID。
    •  input:另一个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

shifted_noise[]

类似noise,但是先缩放并偏移输入的坐标。

  • :根对象。
    •  type:密度函数类型ID,此处为shifted_noise
    •  noise:一个噪声ID。
    •  xz_scale:X坐标和Z坐标的缩放比例。
    •  y_scale:Y坐标的缩放比例。
    •  shift_x:一个用于偏移X坐标的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
    •  shift_y:一个用于偏移Y坐标的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
    •  shift_z:一个用于偏移Z坐标的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

range_choice[]

计算输入的密度函数值,然后基于结果返回两个密度函数中的一个。

  • :根对象。
    •  type:密度函数类型ID,此处为range_choice
    •  input:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
    •  min_inclusive:范围的下限(包含)。取值为-1000000.0到1000000.0的闭区间。
    •  max_exclusive:范围的上限(不包含)。取值为-1000000.0到1000000.0的闭区间。
    •  when_in_range:当输入值在范围内时返回的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
    •  when_out_of_range:当输入值不在范围内时返回的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

shift_a[]

(x/4, 0, z/4)处进行噪声采样后乘上4。

  • :根对象。
    •  type:密度函数类型ID,此处为shift_a
    •  argument:一个噪声ID。

shift_b[]

(z/4, x/4, 0)处进行噪声采样后乘上4。

  • :根对象。
    •  type:密度函数类型ID,此处为shift_b
    •  argument:一个噪声ID。

shift[]

(x/4, y/4, z/4)处进行噪声采样后乘上4。

  • :根对象。
    •  type:密度函数类型ID,此处为shift
    •  argument:一个噪声ID。

clamp[]

将输入值钳制在一个范围内。

  • :根对象。
    •  type:密度函数类型ID,此处为clamp
    •  input:另一个密度函数。可以为一个密度函数的JSON对象形式或常数形式。
    •  min:下限值。取值为-1000000.0到1000000.0的闭区间。
    •  max:上限值。取值为-1000000.0到1000000.0的闭区间。

spline[]

计算一个三次样条。

  • :根对象。
    •  type:密度函数类型ID,此处为spline
    •  spline:一个样条,可以是一个数或一个对象。
      •  coordinate:用于得到坐标的一个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
      •  points:(不能为空)三次样条的点列表。
        •  location:该点的坐标。
        •  value:该点的值。可以是一个数或另一个样条对象。
        •  derivative:该点处的斜率。

constant[]

返回一个常数。

  • :根对象。
    •  type:密度函数类型ID,此处为constant
    •  argument:一个常数。取值为-1000000.0到1000000.0的闭区间。

y_clamped_gradient[]

将Y坐标钳制后线性映射到一个区间上返回。

  • :根对象。
    •  type:密度函数类型ID,此处为y_clamped_gradient
    •  from_y:Y坐标映射区间的开始值。取值为-4064,到4062的闭区间。
    •  to_y:Y坐标映射区间的结束值。取值为-4064到4062的闭区间。
    •  from_valuefrom_y对应的映射值。取值为-1000000.0到1000000.0的闭区间。
    •  to_valueto_y对应的映射值。取值为-1000000.0到1000000.0的闭区间。

已移除的密度函数[]

Paeonia (texture) TU1
该段落所介绍的内容已从Minecraft中移除。

这些特性曾存在于游戏中,但已被移除。

slide[]

移除版本:22w12a

[需要检查源代码]

  • :根对象。
    •  type:密度函数类型ID,此处为slide
    •  argument:另一个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

旧的spline[]

移除版本:22w11a

  • :根对象。
    •  type:密度函数类型ID,此处为spline
    •  spline:一个样条,可以是一个数或一个对象。
      •  coordinate:用于得到坐标的一个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
      •  points:(不能为空)三次样条的点列表。
        •  location:该点的坐标。
        •  value:该点的值。可以是一个数或另一个样条对象。
        •  derivative:该点处的斜率。
    •  min_value:样条输出的最小值。取值为-1000000.0到1000000.0的闭区间。
    •  max_value:样条输出的最大值。取值为-1000000.0到1000000.0的闭区间。

terrain_shaper_spline[]

移除版本:22w11a

从噪声设置中计算地形塑形器样条。

  • :根对象。
    •  type:密度函数类型ID,此处为terrain_shaper_spline
    •  spline:使用的地形塑形器样条,可以为offsetfactor,或jaggedness
    •  min_value:样条输出的最小值。取值为-1000000.0到1000000.0的闭区间。
    •  max_value:样条输出的最大值。取值为-1000000.0到1000000.0的闭区间。
    •  continentalness:用于continentalness样条坐标的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
    •  erosion:用于erosion样条坐标的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
    •  weirdness:用于weirdness样条坐标的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。

历史[]

Java版
1.18.2pre1加入了密度函数abs、​add、​beardifier、​blend_alpha、​blend_density、​blend_offset、​cache_2d、​cache_all_in_cell、​cache_once、​clamp、​constant、​cube、​end_islands、​flat_cache、​half_negative、​interpolated、​max、​min、​mul、​noise、​old_blended_noise、​quarter_negative、​range_choice、​shift、​shift_a、​shift_b、​shifted_noise、​slide、​square、​squeeze、​terrain_shaper_spline、​weird_scaled_samplery_clamped_gradient
pre2加入了密度函数spline
1.1922w11a移除了密度函数terrain_shaper_spline,并移除了spline函数的min_valuemax_value字段。
22w12a移除了密度函数slide,使用add、​muly_clamped_gradient来达成相同效果。

外部链接[]

此页面部分内容是Misode整理的Minecraft JSON文件格式Misode的教程翻译得来。

“历史”一节参考了Misode记录的技术性更新日志

语言

Advertisement