
地牢与遗物
添加高度可配置的无限地牢维度,提供无穷的可重玩性和完全的可定制性。
地牢与遗物(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 文件夹包含了该维度结构的所有数据。你不能直接编辑这些文件,但可以通过以下步骤编辑它们:
- 创建一个新世界。
- 进入该维度。你必须使用
/execute in dungeon_and_relic:dungeon run tp @s 0 100 0进入——否则会话 ID 会无故推进,导致刷怪笼无法正常工作。 - 进入后,自由建造并按需放置刷怪笼:
/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 方向——建造时请记住这一点。
- 编辑完成后,用你在
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
正在加载版本记录…

正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。