地牢与遗物

地牢与遗物

添加高度可配置的无限地牢维度,提供无穷的可重玩性和完全的可定制性。

地牢与遗物(Dungeon and Relic)

本模组为 Minecraft 添加了一个高度可配置的地牢维度。从生成的敌人、敌人的掉落物,到模组自身的遗物系统——几乎所有内容都可以调整,以适配你的世界。

大多数整合包只专注于让玩家变得更强,并将“终局内容”视为升级装备和击败少数几个通关后的 Boss。本模组采用了不同的做法:你已击败的 Boss 可能会变得更强,或作为地牢专属战斗出现,并且有多种方式可以控制这种情况的发生。深渊(Abyss) 难度被设计为即使拥有完全升级的装备也依然危险——其理念是,在“通关游戏”后,你在这个难度下继续提升装备,同时与随机选择的敌人(由你 配置)进行魂系 Boss 战,其中稍有不慎便会瞬间毙命。(当然,难度完全取决于你——你可以让它变得轻松或残酷至极。)

话虽如此,本模组确实有一个限制:每次地牢探索是基于会话的,且同时最多只能有 4 名玩家位于地牢维度内。因此,它可能不太适合大型服务器。


预览

观看预览

▶ https://www.youtube.com/watch?v=L2j-1FRr6i4

预览视频中有背景音乐,但你可以通过安装这个资源包轻松复现!


依赖项

必需

  • Cataclysm
  • Lionfish API
  • Curios API

可选

  • AttributeFix —— 没有它,实体的最大生命值只能提高到 1024。
  • Apotheosis

地牢维度

  • 地牢共有 6 个难度等级,通过基于进度的解锁系统解锁。

解锁系统

config/dungeon_and_relic/difficulty_data/difficulty_unlock.json

{
  "unlock_conditions": {
    "0": "none",
    "1": "minecraft:story/enter_the_nether",
    "2": "none",
    "3": "minecraft:end/kill_dragon",
    "4": "none",
    "5": "cataclysm:kill_all_bosses"
  }
}

这里,0 对应深渊一层,5 对应深渊。你可以使用 /advancement @s grant ... 查找进度 ID。

在多人游戏中,如果队伍成员解锁了比按下按钮的玩家更高的难度,则下一次探索的难度将基于按下按钮的玩家所解锁的难度。

  • 地牢的结构也是完全可编辑的。

编辑地牢布局

config/dungeon_and_relic/templates/dungeon/...

此路径下的 data、entities、poi 和 region 文件夹包含了该维度结构的所有数据。你不能直接编辑这些文件,但可以通过以下步骤编辑它们:

  1. 创建一个新世界。
  2. 进入该维度。你必须使用 /execute in dungeon_and_relic:dungeon run tp @s 0 100 0 进入——否则会话 ID 会无故推进,导致刷怪笼无法正常工作。
  3. 进入后,自由建造并按需放置刷怪笼:
    • /give @s dungeon_and_relic:boss_spawner_block —— 生成主 Boss。
    • /give @s dungeon_and_relic:mini_boss_spawner_block —— 生成小 Boss(掉落钥匙碎片)。
    • /give @s dungeon_and_relic:enemy_spawner_block —— 生成普通敌人。
    • /give @s dungeon_and_relic:dungeon_sealed_door —— 需要用钥匙打开的门。(由于方块实体的工作方式,门距离太远时会变得不可见——最好将其部分遮挡。)
    • /give @s dungeon_and_relic:dungeon_bonefire —— 一个篝火,可为玩家提供类似不死图腾的效果。
    • /give @s dungeon_and_relic:dungeon_return_block —— 让玩家能够离开地牢。
    • /give @s dungeon_and_relic:dungeon_boss_barrier —— 当主 Boss 在附近时会变成具有碰撞体积的石砖方块。

进入地牢的玩家总会出生在 0 100 0,面向 +X 方向——建造时请记住这一点。

  1. 编辑完成后,用你在 templates 中编辑过的 data、entities、poi 和 region 文件夹替换 saves/<世界名称>/dimensions/dungeon_and_relic/dungeon 内的对应文件夹。这样就完成了。

如果你在编辑时意外开始了一次探索,请将 saves/<世界名称>/dimensions/dungeon_and_relic/dungeon 中的 data、entities、poi 和 region 复制回 templates,创建一个新世界,然后再次使用 /execute in dungeon_and_relic:dungeon run tp @s 0 100 0 重新进入。

  • 地牢维度内禁用所有方块破坏(这也适用于实体/破坏行为)。
  • 如果你在地牢维度内退出游戏,下次启动游戏时会回到主世界。
  • 要进入地牢维度,需要使用下界之星、金子和钻石合成一个宏伟地牢圣杯(Great Dungeon Grail)。

受限物品 —— 你可以禁止特定物品在地牢内使用。

限制物品使用

data/dungeon_and_relic/restrictor_item.json

[
  "minecraft:chorus_fruit",
  "waystones:warp_stone"
]

列在此处的物品在地牢维度内将无法右键或左键使用。(遗憾的是,其他用途仍可能可行。)

如果你希望此限制适用于所有世界/维度,请将此文件与全局数据包模组一起使用。

  • 要挑战主 Boss,你首先需要在地牢内制作一把钥匙。钥匙通常无法带出该维度——你无法为以后藏一把钥匙,然后在下次探索时直奔 Boss 房间,因为离开地牢时钥匙会被删除。

    • 在多人游戏中,钥匙(和钥匙碎片)可以 在玩家之间交易——将准星对准另一名玩家并丢弃物品,即可将其直接发送到对方的物品栏。
    • 如果携带钥匙的玩家在地牢内死亡,钥匙会掉落在地上。
  • 在更高难度下,有几率触发诅咒地牢事件,对玩家施加减益效果——但同时也会增加奖励。这是完全可配置的。


高度可配置的敌人

  • 玩家可以通过 config/dungeon_and_relic/boss_data 详细配置敌人。

  • 生成的实体完全从 boss_data 中满足条件的实体里随机选择。为确保多样性,同一会话内不会重复选择同一个小 Boss。

  • 本模组不添加任何新实体。你需要自带喜欢的生物模组——添加的模组越多,地牢的多样性和随机性就越大。

  • 如果你的某个 Boss 模组有伤害上限配置选项,我们建议将其设置得非常高或完全禁用。

JSON 结构

boss_data 内有 boss.json、mini_boss.json 和 enemy.json。每个都是注册文件,告诉模组分别从 bosses、enemies 和 minibosses 文件夹加载哪些条目 .json 文件。

示例 boss.json:

{
  "registered_bosses": [
    "ignis.json",
    "maledictus.json",
    "the_leviathan.json",
    "scylla.json",
    "ender_guardian.json",
    "ancient_remnant.json",
    "netherite_monstrosity.json",
    "the_harbinger.json",
    "wither.json"
  ]
}

这会启用 bosses 文件夹中的 ignis.json、maledictus.json、the_leviathan.json、scylla.json、ender_guardian.json 等文件。

示例条目,scylla.json(位于 bosses 内):

{
  "entity_id": "cataclysm:scylla",
  "base_health": 500.0,
  "base_attackdamage": 15.0,
  "health_multiplier_per_difficulty": {
    "0": 1.0,
    "1": 1.5,
    "2": 2.0,
    "3": 3.0,
    "4": 4.0,
    "5": 5.0
  },
  "attack_multiplier_per_difficulty": {
    "0": 1.0,
    "1": 1.2,
    "2": 1.5,
    "3": 2.0,
    "4": 2.5,
    "5": 3.0
  },
  "multiplier_per_player_count": {
    "1": 1.0,
    "2": 2.0,
    "3": 3.0,
    "4": 4.0
  },
  "requires_previous_defeat": true,
  "has_boss_bar": false,
  "min_difficulty": 1,
  "experience_multiplier_per_difficulty": {
    "0": 1.0,
    "1": 1.2,
    "2": 1.5,
    "3": 2.0,
    "4": 3.0,
    "5": 5.0
  }
}
  • entity_id —— 被召唤的实体。
  • base_health / base_attackdamage —— 覆盖实体的原始属性。实体以这些精确数值被召唤,然后乘以下面的字段。
  • health_multiplier_per_difficulty —— 每个难度等级的生命值倍率(0 = 深渊一层,5 = 深渊)。
  • attack_multiplier_per_difficulty —— 不是 实体的攻击属性。这会乘以实体实际造成的伤害,包括投射物。
  • multiplier_per_player_count —— 根据队伍规模缩放生命值和经验值。
  • requires_previous_defeat —— 只有当实体在这个世界中被击杀过一次后,才能被选中。
  • has_boss_bar —— 强制为通常没有 Boss 血条的实体(例如小 Boss)显示 Boss 血条,使其生命值更易追踪。
  • min_difficulty —— 此条目可以被选中的最低难度(0 = 深渊一层,5 = 深渊)。在上面的示例中,它只能从深渊二层开始出现。
  • experience_multiplier_per_difficulty —— 每个难度等级的经验值倍率。

小 Boss 和普通敌人使用完全相同的结构,也可以进行同样深度的定制。

特殊标签

data/dungeon_and_relic/tags/remove_entity.json:

{
  "values": [
    "modid:test",
    "modid:test_2"
  ]
}

此处列出的任何实体如果在地牢内生成,会立即被移除。

data/dungeon_and_relic/tags/underwater_boss.json:

{
  "values": [
    "minecraft:elder_guardian",
    "cataclysm:the_leviathan"
  ]
}

仅在地牢内,此标签中的实体附近的空气方块会被视为水下,使你能够构建合适的水下战斗。


奖励系统

通过 config/dungeon_and_relic/reward_config.json 配置。

配置与完整示例

有关完整配置文件(如 reward_config.json 和 relic.json),请查看下面的 Gist 链接:👉 https://gist.github.com/somatunaringo/a9f0172a1285226f9df02bce353b111e

一个重要提示:普通敌人掉落与相同难度等级的小 Boss 相同的奖励。

以 depth_5_boss 为例:

"depth_5_boss": { "roll_count": 3, "roll_chance": 0.9,
  "entries": [
    { "item": "minecraft:netherite_ingot", "min": 1, "max": 2, "weight": 5 },
    { "item": "apotheosis_compat/epic_item", "min": 1, "max": 1, "weight": 2 },
    { "item": "apotheosis_compat:mythic_item", "min": 1, "max": 2, "weight": 8 },
    { "item": "apotheosis:mythic_gem", "min": 1, "max": 2, "weight": 8 },
    { "item": "l2artifact:random_5", "min": 1, "max": 3, "weight": 5 },
    {
      "item": "minecraft:enchanted_book",
      "min": 1,
      "max": 1,
      "weight": 10,
      "nbt": "{StoredEnchantments:[{id:\"minecraft:mending\",lvl:1}]}"
    }
  ] }
  • roll_count —— 最大掷奖次数。
  • roll_chance —— 再次掷奖的几率(1.0 = 100%)。至少会进行一次掷奖,因此这实际上是指第二次及以后 物品掉落的几率。
  • entries —— 最重要的部分:哪些物品可以掉落。
    • min / max —— 每次掷奖掉落的最小/最大数量。
    • weight —— 此条目被选中的相对几率。权重越高 = 越可能;具体数值完全由你决定。
    • nbt (可选) —— 你甚至可以指定 NBT 数据,例如上面展示的附魔书。

奖励系统也受抢夺附魔和玩家幸运属性的影响。幸运属性获得的额外 roll_count 由 luck_multiplier 控制——0.2 意味着每点幸运值增加 0.2 的额外掷奖几率,实际上相当于每 5 点幸运值增加 1 次额外掷奖。

  • cursed_multiplier —— 在诅咒地牢事件激活期间提高奖励掷奖次数/几率。
  • party_size_multipliers —— 根据队伍规模缩放奖励数量。

Apotheosis 兼容性

本模组与 Apotheosis 兼容。在 reward_config.json 中使用 apotheosis_compat:<稀有度>_item(或 apotheosis_compat/<稀有度>_item)作为物品 ID,会掉落一个带有该稀有度词缀的物品。apotheosis:<稀有度>_gem 会掉落一个该稀有度的宝石。

这些 ID 仅在 reward_config.json 内有效——它们不适用于 /give。

词缀只能应用于 data/dungeon_and_relic/compat/apotheosis/<稀有度>_item.json 中列出的物品。例如,ancient_item.json:

{
  "items": [
    "minecraft:netherite_sword",
    "minecraft:netherite_axe",
    "minecraft:netherite_helmet",
    "minecraft:netherite_chestplate",
    "minecraft:netherite_leggings",
    "minecraft:netherite_boots"
  ]
}

这让你可以获得带有远古词缀的下界合金装备,而这通常是不可能的。


遗物系统

本模组添加了带有随机属性的 Curios 饰品。当遗物生成时,它会根据你的 JSON 配置获得随机属性。

遗物通过 config/dungeon_and_relic/relic.json 和 config/dungeon_and_relic/relic_data 内的 JSON 文件进行配置。

relic.json

{
  "allow_duplicate_attributes": false,
  "luck_weight_factor": 0.05,
  "experience_values": {
    "1": 50,
    "2": 150,
    "3": 400,
    "4": 1000,
    "5": 2500,
    "6": 10000
  },
  "drop_settings": {
    "enemy": {
      "drop_chance": 0.2,
      "base_count": 1,
      "party_scale_factor": 1.0,
      "rarity_boost": 1.0
    },
    "miniboss": {
      "drop_chance": 1.0,
      "base_count": 2,
      "party_scale_factor": 1.0,
      "rarity_boost": 1.5
    },
    "boss": {
      "drop_chance": 1.0,
      "base_count": 4,
      "party_scale_factor": 1.0,
      "rarity_boost": 2.0
    }
  },
  "rarity_roll_settings": {
    "relic_1": { "min_rolls": 1, "max_rolls": 2, "next_roll_chance": 0.3, "attribute_access_chance": 1.0 },
    "relic_2": { "min_rolls": 1, "max_rolls": 2, "next_roll_chance": 0.5, "attribute_access_chance": 1.0 },
    "relic_3": { "min_rolls": 2, "max_rolls": 3, "next_roll_chance": 0.4, "attribute_access_chance": 1.0 },
    "relic_4": { "min_rolls": 2, "max_rolls": 4, "next_roll_chance": 0.6, "attribute_access_chance": 1.0 },
    "relic_5": { "min_rolls": 3, "max_rolls": 5, "next_roll_chance": 0.5, "attribute_access_chance": 1.0 },
    "relic_abyss": { "min_rolls": 4, "max_rolls": 5, "next_roll_chance": 0.8, "attribute_access_chance": 1.0 }
  },
  "difficulty_rates": {
    "depth_1": { "relic_1": 0.70, "relic_2": 0.25, "relic_3": 0.04, "relic_4": 0.01, "relic_5": 0.0, "relic_abyss": 0.0 },
    "depth_2": { "relic_1": 0.50, "relic_2": 0.40, "relic_3": 0.20, "relic_4": 0.05, "relic_5": 0.01, "relic_abyss": 0.0 },
    "depth_3": { "relic_1": 0.30, "relic_2": 0.40, "relic_3": 0.50, "relic_4": 0.18, "relic_5": 0.05, "relic_abyss": 0.0 },
    "depth_4": { "relic_1": 0.15, "relic_2": 0.25, "relic_3": 0.35, "relic_4": 0.40, "relic_5": 0.10, "relic_abyss": 0.04 },
    "depth_5": { "relic_1": 0.05, "relic_2": 0.20, "relic_3": 0.20, "relic_4": 0.35, "relic_5": 0.40, "relic_abyss": 0.05 },
    "abyss": { "relic_1": 0.00, "relic_2": 0.05, "relic_3": 0.20, "relic_4": 0.25, "relic_5": 0.40, "relic_abyss": 0.30 }
  }
}
  • allow_duplicate_attributes —— 同一个属性是否可以在一个遗物上掷出两次。

    • true:同一属性可以出现多次——适合想要构建完全专精的遗物时使用。
    • false (默认):同一属性不会重复(不过同一属性的 addition 和 multiply 版本被视为不同属性,可以同时出现)——有助于鼓励构建多样性。
  • luck_weight_factor —— 玩家的幸运属性会增加获得更高稀有度遗物的几率。

  • experience_values —— 在遗物存储界面(见下文)中出售每种稀有度遗物所能获得的经验值。

  • drop_settings —— 按敌人类型区分的掉落设置:

    • drop_chance —— 掉落遗物的几率(1.0 = 100%)。
    • base_count —— 遗物掉落的基础数量(受抢夺附魔轻微增加)。
    • party_scale_factor —— 根据队伍规模缩放数量:base * (1 + (partySize - 1) * party_scale_factor)。
    • rarity_boost —— 根据你正在游玩的难度,增加获得更高稀有度遗物的几率。
  • rarity_roll_settings —— 决定给定稀有度遗物获得多少条属性:

    • min_rolls —— 保证的最小属性数量。
    • max_rolls —— 最大属性数量。
    • next_roll_chance —— 在达到最小掷奖次数后,再掷一次 额外属性的几率;此过程会重复,直到达到 max_rolls 或掷奖失败。
    • attribute_access_chance —— 在 next_roll_chance 成功后,决定该属性是否实际生效。事后看来,这个字段可能没有必要——我们建议保持默认值 1.0(100%)。
  • difficulty_rates —— 每个难度等级下,每种遗物稀有度的掉落几率。

relic_data

两个示例:attack_damage_addition.json 和 attack_damage_mult.json。文件名可以根据你的需要任意命名,只要清晰即可。

加法示例:

{
  "attribute_id": "minecraft:generic.attack_damage",
  "operation": "addition",
  "precision": "0.5",
  "rarity_configs": {
    "relic_1": { "min": 0.5, "max": 1.5, "weight": 1.0 },
    "relic_2": { "min": 1.0, "max": 2.5, "weight": 1.0 },
    "relic_3": { "min": 2.0, "max": 4.0, "weight": 1.0 },
    "relic_4": { "min": 3.5, "max": 6.0, "weight": 1.0 },
    "relic_5": { "min": 5.0, "max": 9.0, "weight": 1.0 },
    "relic_abyss": { "min": 8.0, "max": 10.0, "weight": 1.0 }
  }
}

乘法示例:

{
  "attribute_id": "minecraft:generic.attack_damage",
  "operation": "multiply_total",
  "precision": "0.01",
  "rarity_configs": {
    "relic_1": { "min": 0.01, "max": 0.03, "weight": 0.8 },
    "relic_2": { "min": 0.02, "max": 0.05, "weight": 0.8 },
    "relic_3": { "min": 0.04, "max": 0.08, "weight": 0.8 },
    "relic_4": { "min": 0.06, "max": 0.12, "weight": 0.8 },
    "relic_5": { "min": 0.10, "max": 0.18, "weight": 0.8 },
    "relic_abyss": { "min": 0.15, "max": 0.25, "weight": 0.8 }
  }
}

要添加全新的属性,只需在 relic_data 内创建一个新的 .json 文件——它会被自动加载。

  • attribute_id —— 与 /attribute @s ... 获取的 ID 相同。将其与添加新属性的模组结合使用,可以带来丰富的多样性。
  • operation —— 该值是添加到玩家现有属性上还是与其相乘。multiply_total 乘以最终结果(通常是你想要的);multiply_base 乘以基础值。
  • precision —— 数值以此大小为单位随机选择。在上面的加法示例中,precision 为 0.5,relic_1 的 min 为 0.5,max 为 1.5——因此可能的值是 0.5、1.0 或 1.5。
  • rarity_configs —— 每种稀有度的最小/最大数值范围。weight 决定当遗物掷属性时,此属性相对于其他候选属性被选中的可能性。

通关深渊一层后解锁遗物存储菜单(默认按键:0),你可以在其中存储最多 360 个遗物,并可将其出售换取经验值。


配置

完整配置文件

#地牢奖励系统设置
[rewards]
    #是否启用自定义奖励系统
    customRewardEnabled = true
    #是否忽略/移除地牢维度内实体的普通战利品表掉落
    ignoreNormalDrops = true

#遗物系统设置
[relic]
    #是否启用遗物系统及其槽位
    relicEnabled = true
    #默认提供给玩家的遗物槽位数量
    #范围: 0 ~ 10
    relicSlotCount = 3

#篝火设置
[bonfire]
    #篝火激活所需的最低难度 (0=深渊一层 ... 5=深渊, 6=禁用)
    #范围: 0 ~ 6
    bonfireMinDifficulty = 3
    #篝火的冷却时间(秒)
    #范围: 0 ~ 3600
    bonfireCooldownSeconds = 60

#兼容性设置
[compat]
    #是否启用 Apotheosis 奖励(例如,apotheosis:<稀有度>_item/gem)。
    #如果未安装 Apotheosis,则自动忽略。
    apotheosisEnabled = true

    #用于在地牢维度内阻止外部 Boss/模组属性倍率的设置
    [compat.attribute_fix]
        #是否在地牢中阻止外部属性修改器(如 Boss 模组的配置倍率)
        blockExternalModifiers = false
        #其属性修改器应在地牢维度中被阻止的实体 ID 列表
        blockedAttributeEntityIds = []

#诅咒地牢设置
[cursed_dungeon]
    #是否启用诅咒地牢事件
    cursedEnabled = true
    #触发诅咒地牢事件所需的最低难度 (0=深渊一层 ... 5=深渊)
    #范围: 0 ~ 5
    cursedMinDifficulty = 3
    #进入时发生诅咒地牢的概率 (0.0 - 1.0)
    #范围: 0.0 ~ 1.0
    cursedChance = 0.1
  • customRewardEnabled —— 切换 reward_config.json 奖励系统。
  • ignoreNormalDrops —— 是否仅在地牢维度内禁用原版战利品表掉落。
  • relicEnabled —— 完全切换遗物系统。关闭后,遗物停止掉落,遗物存储界面无法打开,遗物 Curios 槽位也会被移除。
  • relicSlotCount —— 添加的遗物 Curios 槽位数量。
  • bonfireMinDifficulty —— 授予图腾效果的篝火可用的最低难度。设置为 6 以禁用。
  • bonfireCooldownSeconds —— 篝火的再次使用冷却时间。
  • apotheosisEnabled —— 切换 reward_config.json 中的 Apotheosis 奖励 ID。禁用后,这些 ID 将失效。我们建议保持 true。
  • blockExternalModifiers —— 仅在地牢维度内,这会禁用来自其他模组的属性实例覆盖(仅限生命值和攻击伤害)。例如,如果某个 Boss 模组的配置有自己的生命值倍率,这可以解决该倍率覆盖本模组 Boss JSON 文件中设置值的问题。即使启用,它也只会影响下面列出的实体 ID。
  • blockedAttributeEntityIds —— blockExternalModifiers 所应用的实体 ID。
  • cursedEnabled —— 切换诅咒地牢(减益)事件。
  • cursedMinDifficulty —— 诅咒事件可发生的最低难度。
  • cursedChance —— 诅咒事件发生的几率。

额外内容:命令

  • /makerelic rarity random/attribute{...} —— 给予一个带属性的遗物。random 会像普通掉落一样生成一个;attribute{...} 允许你创建一个带有你指定属性的遗物。

  • /dungeonattribute <目标> <max_health|attack_damage> <数值> —— 一个管理员命令,覆盖实体的最大生命值或攻击伤害,并自动按地牢难度和队伍规模进行缩放。

    • 需要 OP 等级 2 以上。
    • 公式(在 dungeon_and_relic:dungeon 内执行时): 最终值 = 基础值 × 难度倍率 × 玩家倍率
      • baseValue:你在命令中指定的数值。
      • difficultyMultiplier:在 difficulty.json 中设置的每个难度的倍率(索引 0–5)。
      • playerMultiplier:1.0 + ((activePartySize - 1) × 0.3) —— 每增加一名队伍成员,增加 0.3。
      • 在地牢之外,所有倍率均为 1.0(不缩放)。
      • 改变最大生命值也会将实体的当前生命值同步到新值。
    • 其倍率从 config/dungeon_and_relic/difficulty.json 中读取:
      {
        "multipliers": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
      }
      
      (左侧 = 深渊一层,右侧 = 深渊。)说实话,这个命令的用例相当有限。
  • /dungeon_border —— 创建并管理一个安全、无伤害的自定义世界边界,可用于限制移动或封锁特定区域(例如 Boss 房间)。

    • /dungeon_border add <半径> —— 以玩家为中心,按照给定半径创建一个边界(内部注册为 半径 × 2 的直径)。
    • /dungeon_border remove —— 移除距离玩家当前位置最近的边界。
    • 与原版世界边界不同——原版越过边界会持续受到伤害并显示红色警告画面——本模组的自定义边界完全禁用了伤害和警告效果(setDamageAmount/setDamagePerBlock = 0.0,setWarningBlocks/setWarningTime = 0)。这让你可以干净利落地封锁地牢内的区域(例如“你不能从这里过去”),而不会伤害玩家。

最后说明

本模组是在 AI 的帮助下构建的。我自己也是模组开发的新手,所以可能会存在各种 bug——感谢你的理解,也感谢你提供的任何反馈!

背景音乐 预览中使用的背景音乐:艾尔登法环 黑夜君临 中的 "The Great Hollow"。 ▶ https://www.youtube.com/watch?v=kKHlAJb28-w