你可以帮助我们扩充关于该主题的更多信息。
密度函数(Density function)用于根据一定算法将一个方块坐标转换为一个数,其以JSON文件的形式存储在数据包的data/<命名空间>/worldgen/density_function
目录下。
JSON 格式[]
一个密度函数可以是一个JSON对象,或者一个常量。
- :根对象
- type:密度函数类型ID。
- 此密度函数类型附加的参数。见下文。
其中若类型为constant
,则可以简写为:
- :常数。取值为-1000000.0到1000000.0的闭区间。
标记函数[]
interpolated[]
根据周围元胞(Cell)的密度函数值,对元胞里的每个方块进行插值。每个元胞的大小为size_horizontal * 4
和size_vertical * 4
。
- :根对象。
- type:密度函数类型ID,此处为
interpolated
。 - argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- type:密度函数类型ID,此处为
flat_cache[]
对输入的密度函数在Y=0的值按照元胞缩放大小进行缓存。
- :根对象。
- type:密度函数类型ID,此处为
flat_cache
。 - argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- type:密度函数类型ID,此处为
cache_2d[]
对输入的密度函数值进行缓存,直到当前计算的坐标发生变化。
- :根对象。
- type:密度函数类型ID,此处为
cache_2d
。 - argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- type:密度函数类型ID,此处为
cache_once[]
对输入的密度函数值进行缓存,直到下一次插值运算。
- :根对象。
- type:密度函数类型ID,此处为
cache_once
。 - argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- type:密度函数类型ID,此处为
cache_all_in_cell[]
在游戏内部对final_density
使用。对输入的密度函数值按元胞为单位进行缓存,存入区块的内存数据中。
- :根对象。
- type:密度函数类型ID,此处为
cache_all_in_cell
。 - argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- type:密度函数类型ID,此处为
单变量计算函数[]
abs[]
返回输入的密度函数值的绝对值。
- :根对象。
- type:密度函数类型ID,此处为
abs
。 - argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- type:密度函数类型ID,此处为
square[]
返回输入的密度函数值的平方。
- :根对象。
- type:密度函数类型ID,此处为
square
。 - argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- type:密度函数类型ID,此处为
cube[]
返回输入的密度函数值的立方。
- :根对象。
- type:密度函数类型ID,此处为
cube
。 - argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- type:密度函数类型ID,此处为
half_negative[]
如果输入的密度函数的值大于零,则返回该值本身;否则返回该值的一半。
- :根对象。
- type:密度函数类型ID,此处为
half_negative
。 - argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- type:密度函数类型ID,此处为
quarter_negative[]
如果输入的密度函数值大于零,则返回该值本身;否则返回该值的1/4。
- :根对象。
- type:密度函数类型ID,此处为
quarter_negative
。 - argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- type:密度函数类型ID,此处为
squeeze[]
首先把输入值钳制在-1到1的区间内(小于-1的视为-1,大于1的视为1),然后将它代入公式x/2 - x*x*x/24
并返回。
- :根对象。
- type:密度函数类型ID,此处为
squeeze
。 - argument:输入的密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- type:密度函数类型ID,此处为
双变量计算函数[]
add[]
将两个密度函数值相加。
- :根对象。
- type:密度函数类型ID,此处为
add
。 - argument1:第一个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- argument2:第二个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- type:密度函数类型ID,此处为
mul[]
将两个密度函数值相乘。
- :根对象。
- type:密度函数类型ID,此处为
mul
。 - argument1:第一个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- argument2:第二个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- type:密度函数类型ID,此处为
min[]
取两个密度函数值的最小值。
- :根对象。
- type:密度函数类型ID,此处为
min
。 - argument1:第一个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- argument2:第二个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- type:密度函数类型ID,此处为
max[]
取两个密度函数值的最大值。
- :根对象。
- type:密度函数类型ID,此处为
max
。 - argument1:第一个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- argument2:第二个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- type:密度函数类型ID,此处为
其他密度函数[]
blend_alpha[]
目前在原版用于旧版区块与新版区块间的过渡。如果区域内全部为新版区块,返回1。
- :根对象。
- type:密度函数类型ID,此处为
blend_alpha
。
- type:密度函数类型ID,此处为
blend_offset[]
目前在原版用于旧版区块与新版区块间的过渡。如果区域内全部为新版区块,返回0。
- :根对象。
- type:密度函数类型ID,此处为
blend_offset
。
- type:密度函数类型ID,此处为
blend_density[]
目前在原版用于旧版区块与新版区块间的过渡。
- :根对象。
- type:密度函数类型ID,此处为
blend_density
。 - argument:另一个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- type:密度函数类型ID,此处为
beardifier[]
向结构中添加额外的地形(见结构设置中的adapt_noise
)。不需要在噪声设置中额外声明,默认会被加至噪声设置中的final_density
。
- :根对象。
- type:密度函数类型ID,此处为
beardifier
。
- type:密度函数类型ID,此处为
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的闭区间。
- type:密度函数类型ID,此处为
noise[]
对噪声进行一次采样。
- :根对象。
- type:密度函数类型ID,此处为
noise
。 - noise:一个噪声ID。
- xz_scale:X坐标和Z坐标的缩放比例。
- y_scale:Y坐标的缩放比例。
- type:密度函数类型ID,此处为
end_islands[]
使用末地岛屿的噪声算法对当前水平坐标进行采样。其最小值为-0.84375,最大值为0.5625。
- :根对象。
- type:密度函数类型ID,此处为
end_islands
。
- type:密度函数类型ID,此处为
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对象形式或常数形式。
- type:密度函数类型ID,此处为
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对象形式或常数形式。
- type:密度函数类型ID,此处为
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对象形式或常数形式。
- type:密度函数类型ID,此处为
shift_a[]
在(x/4, 0, z/4)
处进行噪声采样后乘上4。
- :根对象。
- type:密度函数类型ID,此处为
shift_a
。 - argument:一个噪声ID。
- type:密度函数类型ID,此处为
shift_b[]
在(z/4, x/4, 0)
处进行噪声采样后乘上4。
- :根对象。
- type:密度函数类型ID,此处为
shift_b
。 - argument:一个噪声ID。
- type:密度函数类型ID,此处为
shift[]
在(x/4, y/4, z/4)
处进行噪声采样后乘上4。
- :根对象。
- type:密度函数类型ID,此处为
shift
。 - argument:一个噪声ID。
- type:密度函数类型ID,此处为
clamp[]
将输入值钳制在一个范围内。
- :根对象。
- type:密度函数类型ID,此处为
clamp
。 - input:另一个密度函数。可以为一个密度函数的JSON对象形式或常数形式。
- min:下限值。取值为-1000000.0到1000000.0的闭区间。
- max:上限值。取值为-1000000.0到1000000.0的闭区间。
- type:密度函数类型ID,此处为
spline[]
计算一个三次样条。
- :根对象。
- type:密度函数类型ID,此处为
spline
。 - spline:一个样条,可以是一个数或一个对象。
- coordinate:用于得到坐标的一个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- points:(不能为空)三次样条的点列表。
- location:该点的坐标。
- value:该点的值。可以是一个数或另一个样条对象。
- derivative:该点处的斜率。
- type:密度函数类型ID,此处为
constant[]
返回一个常数。
- :根对象。
- type:密度函数类型ID,此处为
constant
。 - argument:一个常数。取值为-1000000.0到1000000.0的闭区间。
- type:密度函数类型ID,此处为
y_clamped_gradient[]
将Y坐标钳制后线性映射到一个区间上返回。
- :根对象。
- type:密度函数类型ID,此处为
y_clamped_gradient
。 - from_y:Y坐标映射区间的开始值。取值为-4064,到4062的闭区间。
- to_y:Y坐标映射区间的结束值。取值为-4064到4062的闭区间。
- from_value:
from_y
对应的映射值。取值为-1000000.0到1000000.0的闭区间。 - to_value:
to_y
对应的映射值。取值为-1000000.0到1000000.0的闭区间。
- type:密度函数类型ID,此处为
已移除的密度函数[]
这些特性曾存在于游戏中,但已被移除。
slide[]
移除版本:22w12a
- :根对象。
- type:密度函数类型ID,此处为
slide
。 - argument:另一个密度函数。可以为一个密度函数ID,或者一个密度函数的JSON对象形式或常数形式。
- type:密度函数类型ID,此处为
旧的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的闭区间。
- type:密度函数类型ID,此处为
terrain_shaper_spline[]
移除版本:22w11a
从噪声设置中计算地形塑形器样条。
- :根对象。
- type:密度函数类型ID,此处为
terrain_shaper_spline
。 - spline:使用的地形塑形器样条,可以为
offset
,factor
,或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对象形式或常数形式。
- type:密度函数类型ID,此处为
历史[]
Java版 | |||||
---|---|---|---|---|---|
1.18.2 | pre1 | 加入了密度函数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_sampler 和y_clamped_gradient 。 | |||
pre2 | 加入了密度函数spline 。 | ||||
1.19 | 22w11a | 移除了密度函数terrain_shaper_spline ,并移除了spline 函数的min_value 和max_value 字段。 | |||
22w12a | 移除了密度函数slide ,使用add 、mul 和y_clamped_gradient 来达成相同效果。 |
外部链接[]
此页面部分内容是Misode整理的Minecraft JSON文件格式和Misode的教程翻译得来。
“历史”一节参考了Misode记录的技术性更新日志。
组件 |
| ||
---|---|---|---|
数据包 | |||
教程 |
语言