自定义维度

来自Minecraft Wiki
跳转至: 导航搜索
Information icon.svg
此特性为Java版独有。
翻译者从英文条目翻译下文中的内容时感觉其艰涩难懂。

翻译者希望更有能力的用户能够帮助改善本条目的行文,所以请先请慎重对待本条目内容。
如果可能,请帮助我们完善此条目的内容。

自定义维度(Custom Dimension)是位于数据包中用于定义世界的新维度的JSON文件。这些维度可以通过执行/execute in <维度> run teleport <坐标>到达。所有维度在世界被打开时即全部加载,而不是在世界重新加载时;这也意味着所有对这些维度文件的修改必须要重新打开世界来生效,而不仅仅是运行/reload命令。

用途[编辑 | 编辑源代码]

新的维度以JSON文件的形式存储在数据包data/<命名空间>/dimension/<维度名称>.json内。

维度语法[编辑 | 编辑源代码]

  • 根标签。
    •  type维度类型的命名空间ID。可以是预设的minecraft:overworldminecraft:overworld_cavesminecraft:the_netherminecraft:the_end,也可以是自定义的维度类型(需自行使用JSON文件配置,详见维度类型段落)。
    •  generator:维度的生成设置。
      •  type(字符串):生成器的ID。前缀是minecraft:,之后是flatnoisedebug
      • 其他组件(见下)

生成器类型[编辑 | 编辑源代码]

 generator组合的格式取决于生成器的ID(即 type)。

当生成器ID类型是minecraft:noise(用于生成有所起伏的地形)时:

  •  generator:维度使用的生成设置。
    •  type:生成器ID,此情形下为minecraft:noise
    •  seed:用于生成该维度的种子。通常情况下,这个值理应与世界种子一致,但也可以与之不同,不同时该维度就会使用这个值作为种子生成,而不会使用世界种子。‌[需要测试]
    •  settings:地形生成器中使用的噪声设置。可以设为一个字符串以使用worldgen/noise_settings中的预设,或者可以设为一个包括自定义选项列表的复合标签。见自定义世界生成#噪声设置以获取详细信息。
    •  biome_source:设置要生成的生物群系及其形态。
      •  seed(长整型数):用来生成生物群系的种子。通常情况下,它应当与维度种子(甚至世界种子)完全相同,但也可以与之不同,并且该维度中的该生物群系只会基于此种子生成,不会参照维度种子和世界种子。‌[需要测试]
      •  biomes(列表):要生成的生物群系ID的列表。
      •  type(字符串):生物群系生成类型。参数位于“biome_source”复合标签中。type的一些可选值包括minecraft:vanilla_layeredminecraft:fixedminecraft:checkerboardminecraft:multi_noiseminecraft:the_end。‌[需要更多信息]
        • vanilla_layered:原版中主世界默认的生物群系生成方式以及巨型生物群系的生成方式。
          •  large_biomes(布尔值):决定生物群系的规模。值为true时生物群系将拥有“巨型生物群系”世界类型中的规模。
          •  legacy_biome_init_layer(布尔值):决定世界是否为default_1_1。‌[需要测试]
        • multi_noise:原版中下界的生物群系生成方式。‌[需要测试]
          •  preset(字符串):要使用的一组生物群系预设,与 biomes互斥。‌[需要测试]当前唯一支持的有效值是minecraft:nether
          •  biomes:生物群系列表,以及它们的生成概率。
            • :生物群系及其属性
              •  biome(字符串):生物群系。
              •  parameters:代表生物群系应该被放置的最佳条件。这些值不会影响生物群系内的地形生成,而是影响游戏在何处安放这些生物群系。海拔(altitude)、怪奇度(weirdness)、湿度(humidity)和温度(temperature)都会在由种子生成的单独的轮廓图(contoured map)中表现。在任一特定点,拥有与每个噪声图上对应点最相似的参数的生物群系会被选择例如,如果某一点的温度为-1,温度为0.2,海拔为0.2,怪奇度为0,那么则会选择桦木森林丘陵(温度-0.1、湿度0.2、海拔0.25、怪奇度0)而不是沙漠(温度0.5、湿度-0.5、海拔0、怪奇度0)。
                •  altitude(单精度浮点数,范围:-2.0到2.0):用于使类似生物群系彼此接近。‌[需要测试]
                •  weirdness(单精度浮点数,范围:-2.0到2.0):定义生物群系与其他生物群系邻近时的“怪异”(weird)程度。
                •  offset(单精度浮点数,范围:0.0到1.0):类似于其他参数,但是offset在任何地方都是0,因此将这个参数设为靠近0的值会使这个生物群系占更多优势,而其他的生物群系平等。
                •  temperature(单精度浮点数):用于使类似地生物群系彼此接近。这与生物群系中列举的温度值不相同,不会影响雨雪或者树叶、草的颜色。
                •  humidity(单精度浮点数):用于使类似生物群系彼此接近。‌[需要测试]
          •  altitude_noise:‌[需要测试]
          •  weirdness_noise:‌[需要测试]
          •  temperature_noise:‌[需要测试]
          •  humidity_noise:‌[需要测试]
        • the_end:原版中末路之地的生物群系生成方式。以生物群系minecraft:the_end(末地)为中心,周围环绕着其他生物群系。‌[需要测试]
        • fixed:单生物群系维度。
          •  biome:该维度所使用的生物群系。
        • checkerboard:一种生物群系生成方式,其中每个生物群系单元呈正方形(或接近正方形),并沿对角线重复排列。
          •  biomes:沿着对角线重复的生物群系列表(可以超过3个)。
          •  scale:确定指数规模上正方形单元的大小。

当生成器ID类型是minecraft:flat(用于生成超平坦地形)时:

  •  generator:维度使用的生成设置。
    •  type:生成器的ID,此情形下为minecraft:flat
    •  settings:超平坦设置。
      •  layers:层设置。
        • :一个超平坦的层。此列表自上而下解释。
          •  height:该层方块所占的层数。
          •  block:该层使用的方块。
      •  biome:该维度使用的唯一的生物群系。
      •  lakes(可选):是否生成湖。如果设为true,则水湖和熔岩湖常会生成,即使在生物群系中湖通常不生成。熔岩湖生成时会被主世界不同种类的石头和矿物包围。
      •  features (可选):是否生成生物群系特有的装饰性结构,比如主世界的树木仙人掌,下界的/灵魂火菌类菌索等等。
      •  structures生成结构的设置。
        •  stronghold:设置要塞如何生成。在structures标签下的值似乎是占位符;这些值才是真正控制要塞生成的值。
        •  structures:此维度中要使用的结构列表。
          •  <命名空间ID>:该字段的键应该为一个结构的命名空间ID,Java版数据值§结构处有一个它们的列表。若不列出任何结构,那么所有结构皆不会生成。
            •  spacing:区块中两次这种结构的放置尝试的平均距离。[注 1]
            •  separation:区块中两次这种结构的放置尝试的最小距离,必须低于spacing
            •  salt:‌[需要测试]帮助进行随机化的数字;参见盐(密码学)

当生成器ID类型是minecraft:debug(用于生成调试模式的世界)时:

  •  generator:维度使用的生成设置。
    •  type:生成器的ID,此情形下为minecraft:debug

维度类型[编辑 | 编辑源代码]

维度类型设置以JSON文件的形式存储在数据包data/<命名空间>/dimension_type/<维度类型名称>.json内。

语法[编辑 | 编辑源代码]

  • 根标签
    •  name:用于维度类型的资源位置。仅在导入世界设置时需要。
    •  ultrawarm:维度是否表现得类似于原版的下界(水会蒸发,海绵会变干)。这也会使得熔岩流动更快、扩散更远。
    •  natural:为false时,此维度中的指南针会随机转动。为true时,此维中的下界传送门方块会生成僵尸猪灵
    •  coordinate_scale: 传送到该维度时的坐标缩放值。
    •  has_skylight:该维度是否有天空光照。
    •  has_ceiling:该维度是否拥有一个基岩天花板。
    •  ambient_light:该维度拥有多少环境光照(在演示文件中,默认是0.5;需要测试上下界及精确的效果‌[需要测试])。
    •  fixed_time(可选):可以是false或0至24000间的任意整数。如果将它设为一个数字,游戏内的昼夜时间将会固定在这个指定值上。但是,(至少在某些世界中‌[需要测试]false被当做0来解释,因而会产生一个固定不动的日出。要保持正常的昼夜循环,需要将此属性保留为未定义
    •  piglin_safe猪灵疣猪兽是否不会僵尸化。
    •  bed_works:玩家是否可以使用
    •  respawn_anchor_works:玩家是否可以使用重生锚
    •  has_raids:带有不祥之兆的玩家是否可以触发袭击
    •  logical_height:玩家使用紫颂果下界传送门可以到达的最大高度。这不会影响超过该限制高度的既有传送门。极有可能不能高于世界建筑限制高度。‌[需要测试]
    •  min_y[新增:JE 1.17]:可以是-2032至2032间任意一个16的倍数,用于确定该维度中可以存在方块的最低高度
    •  height[新增:JE 1.17]:可以是0至4064间任意一个16的倍数,用于确定该维度中可以存在方块的总高度。维度中可以存在方块的最大高度值等于min_yheight值之和,且极有可能必须在-2032到2032之间。‌[需要验证]
    •  infiniburn:一个方块标签命名空间ID,决定该维度中可以在哪些方块上永久燃烧。
    •  effects(可选):可以是"minecraft:overworld""minecraft:the_nether""minecraft:the_end",用于确定该维度的天空效果。设为overworld(主世界)会使维度的天空中出现云、太阳、星星和月亮;设为the_nether(下界)会使维度中有浓厚的迷雾阻挡视野,效果与原版的下界类似;设为the_end(末地)会使维度拥有类似于末路之地的,黑暗的、斑驳的天空,并无视各生物群系自带的天空颜色与迷雾颜色。若未定义,则默认为"minecraft:overworld"
默认值[编辑 | 编辑源代码]

这些是原版中的3个维度使用的设置。

属性 主世界 下界 末路之地
ultrawarm false true false
natural true false false
coordinate_scale 1.0 8.0 1.0
piglin_safe false true false
respawn_anchor_works false true false
bed_works true false false
has_raids true false true
has_skylight true false false
has_ceiling false true false
fixed_time 不适用 18000 6000
ambient_light 0.0 0.1 0.0
logical_height 256 128 256
infiniburn minecraft:infiniburn_overworld minecraft:infiniburn_nether minecraft:infiniburn_end

历史[编辑 | 编辑源代码]

Java版
1.16pre1数据包中加入了dimensiondimension_type
1.16.220w29a自定义世界的噪声设置dimension移动至worldgen
pre1自定义维度现在使用和数据包中其他资源相同的文件夹结构:<命名空间>/<类型>/<资源>.json
pre2自定义维度类型中的 shrunk参数被 coordinate_scale参数代替了。
Java版(即将到来)
1.1720w49a向自定义维度类型中加入了 min_y height参数,数值分别在-2048到2048,以及0到4096之间有效。
21w05a min_y height参数的有效区间现在分别从-2048到2048、0到4096,调整到-2032到2032、0到4064。

漏洞[编辑 | 编辑源代码]

关于“维度”或“维度类型”的漏洞由漏洞追踪器维护,请在此汇报漏洞。

注释[编辑 | 编辑源代码]

  1. 设置的这个数字并不意味着结构一定会生成得这样频繁,而仅仅是游戏尝试这样生成结构;生物群系和地形都可能会导致结构不生成。尝试放置结构的最大距离是2 * spacing - separation