生物群系压制者

生物群系压制者

一个通过“挤走”其他生物群系来添加生物群系的库模组

基础库

Biome Squisher

Central

Biome Squisher 是一种将生物群系添加到原版 Minecraft 生物群系地图的创新方法,其设计目标是保持非破坏性,也就是说,原版生物群系的位置、边界和相对稀有度都会被保留。此外,Biome Squisher 的次要目标是能够与多个生物群系模组良好协作;那种每个世界生成模组各自占据世界的一块区域、彼此之间只有稀少边界的情况已成为过去。

生物群系注入的新方案

与其他添加新生物群系的方案不同,Biome Squisher 会将原版生物群系(或者实际上,先前添加的模组生物群系)“挤压”开,在生物群系空间中打开一个“洞”,以便在其中生成一个生物群系。这种方式使得多次生物群系注入可以确定性地层层叠加——即使多个模组在同一位置注入生物群系,它们也都会被正确地“挤压”,不会有任何生物群系被不成比例地缩小或扩大。

关于这种方法,有几点需要注意:

  • 生物群系之间的边界会被保留
  • 生物群系被挤压的方式使得各生物群系的相对面积不会改变——这意味着所有生物群系会均匀地变得不那么常见
  • 多个模组可以在同一目标位置注入生物群系,它们会良好共存

事实证明,这个过程远没有那么简单,其中存在一些需要处理的陷阱。Biome Squisher 考虑了这些边缘情况,并为你完成了这种“挤压”所需的数学计算,提供了一个基于数据包的友好 API,用于向生物群系地图中注入额外的生物群系。

那么我该如何使用它?

Biome Squisher 完全由数据包控制。首先,模组会在 data/[namespace]/biomesquisher/series/[path].json 定义一个系列,Biome Squisher 将在相关维度的生物群系空间上执行该系列。它们的结构如下:

  • "levels":要应用所含挤压器的所有 level 标识符列表。可以包含 Biome Squisher 能应用到的任何 level——也就是任何使用噪声生物群系源的 level
  • "squishers":要应用的挤压器标识符列表

系列引用的每个挤压器都应放置在 data/[namespace]/biomesquisher/squisher/[path].json。它们的结构如下:

  • "biome":要注入的生物群系的标识符
  • "injection":定义生物群系将在何处以及如何被注入。结构如下:
    • "radius":注入应该有多大,0 表示“无”,1 表示“整个生物群系空间”
    • "temperature"、"humidify"、"continentalness"、"erosion"、"depth" 和 "humidity":定义注入在不同轴上的行为。每个都有一个 "type" 字段,并采用以下形式之一:
      • "type": "range":定义一个固定范围以在该范围内注入生物群系;换句话说,生物群系在此轴上不进行挤压。"weirdness"、"erosion"、"continentalness" 和 "depth" 必须定义范围
        • "min" 和 "max":定义范围的端点
      • "type": "squish":生物群系应在此维度上将其他生物群系挤压开。"temperature" 和 "humidity" 必须具有挤压行为
        • "position":在该轴上注入生物群系的位置,并将其他生物群系从此处挤开
        • "degree":(可选,默认为 1)允许非正方形注入。将此值设为大于或小于 1,可使挤压打开的“洞”在此轴上更大或更小,并在其他轴上相应缩小
  • "snap":(可选;默认为 true)生物群系注入是否应在其半径内“吸附”到生物群系之间的角落/边缘(如果存在的话)
  • "relative":(可选;默认为 temperature 的起点)当两个生物群系尝试在同一位置注入时,会查询它们的相对值。结构如下:
    • "temperature"、"humidity":取 "start"、"center" 或 "end" 之一。在确定将生物群系注入移动到打开的洞的哪一侧时,Biome Squisher 将使用该值;至少有一个值必须为非 "center"

Biome Squisher 按字母顺序应用已注册的 series,因此生物群系注入是平台无关且确定性的。

该模组提供了若干命令,通常可用于调试生物群系空间:

  • /biomesquisher dump:导出生物群系空间的一个二维切片的图像。接受 10 个参数
    • 前两个参数是用于图像 x 轴和 y 轴的维度名称
    • 接下来的四个参数是其余维度上进行切片的值
    • 最后四个参数依次是 x 轴的最小值和最大值,然后是 y 轴的最小值和最大值
  • /biomesquisher serve:管理一个允许浏览生物群系地图的 Web 服务器
    • start:在提供的端口上启动服务器
    • stop:停止任何已启动的服务器