动态TFC结构

动态TFC结构

动态TFC结构模组让你能够将任意Minecraft结构适配到TerraFirmaCraft

冒险

动态 TFC 结构

你是否曾梦想过用原汁原味的结构填满你的 TerraFirmaCraft 世界?动态 TFC 结构将为你的世界带来这些!

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

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

尽管模组名称如此,动态 TFC 结构也可以在没有 TerraFirmaCraft 的情况下运行,所以请随意在非 TFC 整合包中使用它 :) 但如果你没有安装 TFC,你需要自行构建配置文件。

免责声明

请注意,动态 TFC 结构目前处于 BETA 阶段,因此它 包含 bug,并且 仍有工作要做

配置

动态 TFC 结构有 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 结构数据包文件夹

动态 TFC 结构使用配置文件生成自己的数据包,因此它有自己的数据包目录:

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

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

内置数据更改

你应该知道,动态 TFC 结构会在 gameplay 文件夹中将原版战利品表覆盖为 TFC 物品, 例如猫的早晨礼物、村庄英雄奖励、猪灵以物易物和嗅探兽挖掘。

常见问题

如何添加新结构?

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

底层发生了什么
  • worldgen_config.json —— 模组会扫描结构注册表,并将所有未列在 biomeTagsdisabledStructures 中的结构放入 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
  • 结构无法在水上生成(包括盐水和泉水)