动态TFC结构

动态TFC结构

Dynamic TFC Structures 让你可以将任何 Minecraft 结构适配到 TerraFirmaCraft

结构

Dynamic TFC Structures

你是否曾梦想过用真实的结构填充你的 TerraFirmaCraft 世界?Dynamic TFC Structures 将把它们带入你的世界!

结构图标

Dynamic TFC Structures 可以激活任何世界生成结构,并将其方块替换为 TerraFirmaCraft 的对应方块,就好像它是专为 TFC 建造的一样。 该模组也是完全可配置的;你可以在 config/tfc_structures 文件夹中找到配置文件。默认情况下,只有原版结构会被激活,但你可以激活任何其他模组的结构。

主要面向 TerraFirmaCraft 整合包作者 —— 该模组可帮助你通过可配置的方块替换和世界生成规则,将原版和模组结构带入 TFC 世界。

尽管模组名称如此,Dynamic TFC Structures 也可以在没有 TerraFirmaCraft 的情况下运行,所以欢迎在非 TFC 整合包中使用 :) 但如果你没有 TFC,你需要自行构建配置文件。

免责声明

请注意,Dynamic TFC Structures 目前处于 BETA 阶段,因此它 包含 bug,而且 仍有工作要做。

配置

Dynamic TFC Structures 有 3 个主要配置文件:

  • common-config.toml allowedDimensions - 结构方块将被替换为 TFC 方块的维度列表 biomesTagsStructuresToLogs - 调试开关,将生物群系、生物群系标签和结构输出到日志 fallbackToTfcStructuresLoot - 切换是否在结构中没有 lootTablesOverrideMap 时启用 tfc_structures 战利品表 mossyBlocks/strippedLogs/strippedWood/crackedBricks - 用于替换的特殊标签。它们都会被添加到特殊方块标签中。
  • worldgen_config.json biomeTags - 将生成到 tfc_structures_datapacks/tfc_structures_main 数据包中的生物群系标签定义。它还包含将在该生物群系标签中生成的结构。 disabledStructures - 你不希望在世界中看到的结构列表 defaultWorldgenStructures - 游戏中存在但未添加到上述任何列表中的结构列表,因此它们将使用默认生成规则。此属性将在服务器加载时更新。
  • structures_config.json structures - 每个结构的替换规则列表,例如替换预设、lootTablesOverrideMap 等。 此配置将在服务器加载时创建(或更新)。

另外,还有一个 presets 文件夹,你可以在其中找到替换预设配置文件。 每个预设都有 3 个属性:

  • directReplacements - 结构生成时的方块到方块直接替换映射
  • randomReplacements - 用于随机替换的方块到多方块映射。perBlock=false 表示整个结构将使用一种方块。
  • tfcWorldReplacements - 用于将方块替换为周围 TFC 方块(如石头、木头、土壤、沙子或矿石)的方块到类型映射

默认情况下,有两个预设:no-replace(空预设)和 overworld-common,但你可以自己创建额外的预设(别忘了在 structures_config.json 中为结构分配预设)。

如果你被一个地方的大量结构困扰,你可能也会有兴趣安装 Sparse Structures。

TFC Structures 数据包文件夹

Dynamic TFC Structures 使用配置文件生成自己的数据包,因此它有自己的数据包目录:

  • tfc_structures_datapacks/tfc_structures_main 但你可以将你的数据包或类似 KubeJS 的数据包文件夹(以 tfc_structures_main 数据包为例)直接放入 tfc_structures_datapacks 文件夹中,它们将在世界创建时加载。

不要把文件放入 tfc_structures_main,因为它会在每次资源包生成时被删除并重新创建。

内置数据更改

你应该注意,Dynamic TFC Structures 会覆盖 gameplay 文件夹中的原版战利品表,将其替换为 TFC 物品,例如猫的晨间礼物、村庄英雄奖励、猪灵以物易物和嗅探兽挖掘。

常见问题

如何添加新结构?

只需在安装你的结构模组的情况下开始一个新世界。首次服务器加载后,你将在 config/tfc_structures/worldgen_config.json(在 defaultWorldgenStructures 部分)和 config/tfc_structures/structures_config.json(在 structures 部分)中找到新结构。这两个文件都会在服务器即将启动时自动创建或更新。

幕后发生了什么
  • worldgen_config.json —— 模组会扫描结构注册表,并将所有未列在 biomeTags 或 disabledStructures 中的结构放入 defaultWorldgenStructures。该列表中的结构会保留来自原始模组的生物群系规则。要让结构在 TFC 生物群系中生成,请将其 ID 从 defaultWorldgenStructures 移动到 biomeTags 条目中(创建一个新条目或将其添加到现有标签中)。有关示例,请参见 WorldgenConfig.getDefaultConfig() 中的原版条目。
  • structures_config.json —— 每个在 structures 中缺失的已注册结构都会获得一个默认条目:replacementPreset: "overworld-common"、来自 common-config.toml 的默认空箱子战利品表,以及一个空的 lootTablesOverrideMap。根据需要调整预设、战利品覆盖,或从 presets 文件夹分配自定义预设。

编辑之后

重启服务器(或创建新世界),以便 _tfc_structures_datapacks/tfc_structures_main 中生成的数据包根据你的 biomeTags 更改重新构建。structures_config.json 中的方块替换设置会在下一次结构生成时生效。

提示: 在 common-config.toml 中启用 biomesTagsStructuresToLogs,可将每个结构 ID 打印到日志中——当你无法确定准确的资源位置时非常有用。

如何自定义结构上的战利品表?

有三种方法:

  • 使用自定义数据包(或 KubeJS 数据文件夹)直接覆盖结构的战利品表。
  • 使用自定义数据包创建你自己的战利品表,并通过 config/tfc_structures/structures_config.json 中的 lootTablesOverrideMap 为所需结构用你的战利品表覆盖原版战利品表。
  • 使用 KubeJS + LootJS 替换战利品表中的物品(你可以看看我在我的整合包 TFC: Lost Light 中是如何做的,文件为 kubejs/server_scripts/modpack_loot_replacement.js)。这种方法更简单,因为它会对所有结构战利品表完全自动生效。

已知问题

  • 目前,tfcWorldReplacement 与非默认 TFC 方块不兼容(例如 ArborFirmaCraft)
  • 结构无法生成在水上(包括咸水和泉水)