矿石生成库

矿石生成库

此插件允许您通过包内的XML表格将您的矿石包注入到自然世界生成中,并使此插件成为您在Curseforge上模组的依赖项。它还提供了工具来测试您的注入是否成功。

世界生成

新模组图标,同款模组!

如果你只是在寻找测试工具,可以查看我的另一个插件——EZDEV(即将推出),其中包含传送工具以及更多功能,例如基于UI的谁对谁传送菜单、矿物传送、生物群系传送等等!

本模组的原始创意来自 Coal!,作者:Meowerz (MIT)

重要提醒:如果你使用此插件为你的资源包注入矿物,请在 Curseforge 上将本插件设为模组的依赖项。当你在 Curseforge 上首次上传模组时,在页面底部要求填写“更新日志”的地方,你会看到“添加相关项目”,点击它并输入“OreGenLib”(不含引号),这将允许你选择此插件并将其添加为依赖项!(你可能需要在模组描述中说明,本模组是一个必需的模组,以防有人看到并卸载它,因为如果卸载,矿物将不再被注入,而且根据更新2的情况,基础游戏不会为普通的zip模组发出缺少依赖项的警告,仅对Jar“插件”有效。)
——如果将来他们为zip资源模组添加了依赖关系驱动的错误,我将更新此段落,并解释如何在清单文件中添加依赖项。


OreGenLibrary (MIT) —— 基于XML的矿石世界生成 + 矿石/生物群系/区域管理UI和传送工具

OreGenLibrary 是一个可配置的矿石生成库,允许整合包作者使用一个简单的XML文件添加或调整矿石生成——无需代码。它还包含游戏内UI页面(资源),用于浏览矿石/生物群系和导出文档。


本模组的功能

1) 从XML加载矿石生成规则

OreGenLibrary 会自动扫描已安装模组文件夹,查找包含以下文件的资源包:

Ore_Gen/CustomOreTypes.xml

它会合并所有找到的配置,并使用它们来驱动世界生成。

你的XML文件在你的包/模组中的位置:

YourPackOrMod/
  manifest.json
  Ore_Gen/
    CustomOreTypes.xml

你可以有多个包含 Ore_Gen/CustomOreTypes.xml 的资源包——OreGenLibrary 会将它们全部合并。


2) 将矿石注入世界生成(注入原理)

OreGenLibrary 会挂钩服务器的区块生成管线,并且仅在区块新生成时应用你的矿石规则。

重要的原始风格规则:已有的区块不会自动改变——要看到新的矿石规则,请探索新生成的区块(或使用下面的重生成工具)。


3) 支持两种放置风格(任你选择)

OreGenLibrary 支持两种方法——选择适合你整合包的那种:

A) 生成/替换宿主放置

一个经典的矿石生成器,基于以下参数放置矿脉:

  • chancePerChunk
  • veinsMin / veinsMax
  • veinSizeMin / veinSizeMax
  • yMin / yMax
  • 加上每个变体的宿主替换规则

这是“手动控制”,非常适合需要精确调整时使用。

B) 模板/邻近矿脉注入

将你的自定义矿石放置锚定在现有的基础游戏矿石族(铁/铜等)附近,而不是纯粹的随机放置。

当你希望你的模组矿石分布“跟随”基础矿石族存在的位置时,这很有用。

两种模式并非“推荐”模式——它们是用于不同平衡目标的不同工具。


4) 强大的过滤器(生物群系、区域、类别)

每条矿石规则都可以使用以下过滤器进行限制:

  • 生物群系包含/排除(令牌匹配)
  • 区域层级匹配(例如:仅限区域4第5层)
  • 类别/发现键(海岸/地下等)
  • 生物群系/区域族的前缀匹配

这允许你实现以下功能:

  • “仅在区域4的地下生成”
  • “仅在沙漠堆叠生物群系中生成”
  • “仅在海浪类别中生成”
  • “每种宿主(石头/玄武岩/砂岩等)使用不同的变体”

5) 管理员UI页面(浏览 + 传送工具)

OreGenLibrary 包含的自定义UI页面提供:

  • 矿石列表UI:已加载矿石ID的可搜索列表及操作
  • 生物群系列表UI:浏览当前生成器中的所有生物群系
  • 已知生物群系UI:探测你周围的生物群系地图并列出附近的生物群系
  • 指南UI:游戏内文档 + 导出工具
  • 重生成提示:允许特定用户运行重生成系统

6) 安全传送 + “最后已知”矿石位置

传送工具包括:

  • 安全传送逻辑(尝试通过寻找有效的附近空间,避免将你生成在方块内部)
  • 不传送的探测(存储一个代表性坐标)
  • 最后已知已存储位置(重启后持久化)

命令(创造/管理员组)

根命令:

  • /customoregen
    别名:
    • /cog
    • /COG

/cog reload

重新加载所有 CustomOreTypes.xml 配置(重新扫描)。

  • 可选:--clear 将规则重新应用到你周围当前加载的区块(不会删除区块,可能影响地下建筑)
  • 可选:--radius=<chunks>(与 --clear 一起使用)

/cog retrogen

对附近区块进行有预算的重新应用(包含安全工具):(现已完全实现

  • --radius=<chunks>(默认 2)
  • --maxY=<y>(默认 45)
  • --budget=<chunks>(默认 120)
  • --dry(模拟/预览)
  • --confirm(实际运行必须)
  • --forceallores(使用谨慎,并阅读本描述底部的重生成部分)

/cog guide

打开游戏内模组制作者指南页面。

/cog listore

打开一个可搜索的UI列表,显示从XML加载的矿石ID。

/cog listbiomes

列出当前生成器配置的所有生物群系(包括模组添加的生物群系)。

/cog listknownbiomes [--radius=<chunks>]

探测你周围的生物群系地图,并列出看到的生物群系集合(不需要区块已经存在)。

/cog currentbiome

输出一行信息,显示你当前的生物群系 + 区域

/cog tp

传送助手(矿石或生物群系)。支持的参数包括:

  • ore(自定义矿石ID 或 基础矿石族名称)
  • biome(生物群系令牌或完整的生物群系名称)
  • radius
  • maxY
  • next(跳过前N个匹配项)
  • fallback(矿石备用区块加载半径)
  • last=1(传送到矿石存储的最后已知位置)
  • probe=1(存储结果但不传送)
  • x / z(手动坐标覆盖)
  • label(可选的日志记录标签)

有关你的服务器版本所期望的确切参数格式,请在游戏中打开 /cog guide —— 它显示示例。


在哪里可以找到文档和导出文件(HTML / 示例 / 电子表格)

XML构建器教程(YouTube)- 即将推出!

游戏内指南

使用:

  • /cog guide

指南页面包含导出帮助文档按钮,可将文件写入磁盘上的一个稳定文件夹。

导出输出文件夹(默认)

导出文件写入到:

%AppData%\Hytale\UserData\Mods\oregenlibrary-data\docs

(你可以使用环境变量 OREGENLIB_MODS_DIR 覆盖Mods目录。)

指南当前通过按钮导出的内容

  • exampleCustomOreTypes.xml
  • OreGenLibrary_XML_Reference.html
  • TemplateDictionary.html

电子表格的位置

  • 稀有度电子表格捆绑在模组的JAR文件中,位于:
  • docs/OreRarity_UserGuide.xlsx

关于世界更新/游戏版本变更的说明

游戏版本的世界生成更新通常需要新区块来体现新的矿石分布。OreGenLibrary 在注入方面行为相同:新生成的区块会自动接收规则;如果你希望将更改追溯应用到已有区块,则需要使用重生成工具。


许可证

OreGenLibrary 采用MIT许可证发布(如果重新分发,请保留署名和许可证)。


版本 1.0.8 新特性

重生成系统现已完全实现!
对于运行此模组的服务器,现在可以使用一个权限。你可以授予 oregenlib.retrogen.promptdtapgaming.oregenlibrary.retrogen.prompt 权限,以允许管理员接受重生成提示。

当拥有处理重生成提示权限的人登录时,他们将能够接受或拒绝这些提示。一旦服务器启动,并且该服务器以任何形式实现了新的矿石(该矿石正在使用OreGenLib),则该提示会自动为有此权限的玩家启动。这意味着,例如,如果你正在运行的某个模组添加了一个它之前没有的新矿石,它会触发询问你是否想要添加这些新矿石。如果你添加了一个全新的使用OreGenLib的模组,则对于该新模组的所有新矿石类型,都会触发相同的提示。
什么是“重生成”?- 重生成是一个系统,它会强制将新的矿石类型注入到已经被探索过的区块中。(注意:此系统可能并且很可能会在已经探索大量区块的大型服务器上造成一些延迟。注意2:此系统运行时可能会导致服务器日志中出现服务器刻错误信息,因为它要求游戏(尤其是低端服务器)尝试强制从已经加载的区块中注入和删除方块。)现在,你的服务器中有一个名为

oregenlibrary-retrogen.properties

的文件,它将允许你设置是否提示用户,默认设置为提示,但你也可以为策略设置 auto_accept 或 auto_decline
你可以在同一个属性文件中为以下内容设置一些其他配置:

safety range not to retrogen near play placed blocks (torches excluded) default=20
max_y axis default is 310 (lower this if you dont want ores injected into mountians)
force exclude surface - this setting is to attempt to prevent immersion breakage near players houses (random ores poking through the crust of orbis in their yards) - NOTE: another new feature in this update is for mod makers to have surface only ores - turning this to true will prevent retroGen of surface only ores - but do not fear this only blocks the retrogen so they will still spawn surface ores in newly generated chunks)

然后是重生成速度的预算,你可以降低这些设置,如果你的服务器在重生成期间无法承受太大的延迟。选项包括:一次处理多少个区块,处理这些区块持续多长时间,在再次处理当前或下一个区块之前等待多长时间,以及每次遍历中每个区块扫描方块的预算。

你现在也可以强制对所有使用OreGenLib的模组矿石进行重生成。这将允许你注入在此补丁之前添加的矿石类型,但请注意,它不会 删除之前注入的矿石,所以如果你在那些已注入部分矿石但未注入其他矿石的区块上运行它,该区域可能会拥有两倍于应有数量的矿石。

模组制作者的新功能!!!:

- 你现在可以排除你的矿石类型在表面(即地壳)生成,也可以反过來
- 你现在可以强制你的矿石仅出现在表面的最顶层x层中!
- 你现在可以定义每个变体的几率,而不仅仅是每个矿石类型的几率,这意味着你可以声明矿石在越深处或越高处越丰富。例如,石头的触发几率可能是0.05(5%),而火山岩的触发几率可能是0.25(25%)。

(同时更新了服务器版本以匹配,以停止警告信息)