Locks Reforged

Locks Reforged

"Locks"模组已更新至兼容1.20.1版本;包含原版所有功能,完全可配置,并修复了一些错误。

锁具重铸 (Locks Reforged)

这是由 Melonslise 制作的 Locks 模组非官方移植版,适用于 Minecraft Forge 1.20.1。

Locks 是一个小巧但独特的模组,允许你将灵活、通用的锁具附加到游戏中的任何方块上——包括来自其他模组的方块。通过动态锁定系统和交互式开锁小游戏,保护你的门、箱子、熔炉等更多物品。


功能特性

锁定任意方块

可以将锁附加到任何方块上——不仅仅是箱子。门、活板门、熔炉、投掷器、漏斗以及模组方块均可使用。锁具具有空间性,一把锁可以同时覆盖多个方块。

七级锁具(+ 自定义!)

等级 锁簧数 附魔能力 抗爆性 开锁强度
木质 5 15 4 0.20
铜质 6 16 8 0.28
铁质 7 14 12 0.35
金质 6 22 6 0.25
钢质 9 12 20 0.70
钻石 11 10 100 0.85
下界合金 14 8 200 0.95
  • 锁簧数 — 开锁小游戏中的锁簧数量。越多越难开。
  • 附魔能力 — 锁具获得强力附魔的可能性。
  • 抗爆性 — 爆炸抗性。钻石和下界合金锁几乎坚不可摧。
  • 开锁强度 — 对应开锁器的有效性。越高越好。

下界合金物品具有防火性,能在熔岩中存活,与原版下界合金装备一样。它们通过锻造台使用下界合金升级模板合成。

所有锁具和开锁器都是完全数据驱动的——你可以通过简单的 JSON 文件添加自定义等级,或通过配置文件、TOML 覆盖或数据包调整现有属性。无需修改代码!

开锁小游戏

通过互动式锁簧匹配小游戏来开锁。匹配每个锁簧以破解组合。更高级的开锁器对更坚固的锁更有效。

开锁器: 木质、发夹(铜质)、铁质、钢质、金质、钻石、下界合金(+ 自定义)

钥匙与钥匙圈

制作与你的锁匹配的钥匙,或使用钥匙圈来携带多把钥匙。万能钥匙可以打开任何锁。

七种附魔

  • 电击 (Shocking) — 电击开锁失败的玩家(无视护甲)
  • 坚固 (Sturdy) — 降低开锁器的有效性
  • 复杂 (Complexity) — 完全阻挡低级开锁器
  • 静音 (Silent) — 访问被拒绝时抑制咔嗒声
  • 自动开锁 (Auto-Pick) — 有几率瞬间打开锁,跳过小游戏
  • 加固 (Reinforced) — 每级增加爆炸抗性
  • 警觉 (Awareness) — 记住锁具的放置者;该玩家无需钥匙即可打开

每个附魔都可以在服务器配置中单独启用或禁用。

全面保护

被锁定的方块受到以下保护:

  • 红石激活
  • 漏斗抽取
  • 活塞推动
  • 爆炸
  • 破坏(可配置)

按战利品价值生成锁具

锁的等级由箱子战利品表的内容价值决定。村庄箱子会生成木质或铜质锁,而末地城箱子则会生成金质或钻石锁。每个生成的箱子至少会有一把木锁——没有任何箱子会不受保护。

  • 多样本平均 — 每个战利品表采样 32 次并取平均值,以确保服务器重启后等级分配一致。
  • 次线性堆叠数 — 物品价值随堆叠大小的平方根缩放,因此 64 个圆石的价值不会超过一把钻石剑。
  • 物品价值覆盖 — 可配置的每物品基础价值,适用于钻石、绿宝石和下界合金等价值高但稀有度普通的材料。已有 15 种原版物品设置了合理的默认值。
  • 完全可配置,包含每等级价值阈值、稀有度倍率和附魔加成。也可以切换为随机加权选择模式。

世界整合

  • 带有锁的箱子会以战利品价值缩放等级自然生成在结构中
  • 开锁器和锁芯可以在地牢和神殿的战利品中找到
  • 工具匠村民会出售开锁器和锁芯
  • 流浪商人会提供稀有开锁器和附魔锁

添加自定义锁具 & 开锁器

锁具重铸拥有完全数据驱动的物品系统。你可以根据需求,使用三种不同的方法添加全新的锁具和开锁器等级——或调整现有等级。

方法 1:配置文件文件夹(新增自定义物品)

将 JSON 文件放入配置文件文件夹,即可注册全新的锁具或开锁器物品。模组会在启动时自动发现这些文件。

要添加自定义锁具,创建 config/locks/lock_types/<名称>.json:

{
  "length": 7,
  "enchantment_value": 14,
  "resistance": 12
}
  • length — 锁簧数(1-20)
  • enchantment_value — 附魔能力(1-50)
  • resistance — 爆炸抗性(0-1000)

要添加自定义开锁器,创建 config/locks/lockpick_types/<名称>.json:

{
  "strength": 0.5
}
  • strength — 开锁器的有效性(0.01-10.0)

文件名将成为物品在 locks: 命名空间下的注册名(例如,netherite_lock.json 会注册为 locks:netherite_lock)。配置文件文件夹中的物品会覆盖同名 JAR 内置物品,因此你也可以用此方法替换内置属性。

重要提示: 通过此方式注册的自定义物品会自动出现在游戏中,但如果没有以下内容,它们将是隐形的且无法合成:

  • 一个提供模型和纹理的资源包 (assets/locks/models/item/<名称>.json, assets/locks/textures/item/<名称>.png)
  • 一个提供合成配方 (data/locks/recipes/<名称>.json) 并将物品添加到相应标签 (data/locks/tags/items/locks.json 或 lock_picks.json) 的数据包

模组在首次启动时会创建示例文件 config/locks/lock_types/_example.json.disabled 和 config/locks/lockpick_types/_example.json.disabled 以供参考。

方法 2:数据包属性覆盖(按世界调整现有物品)

数据包可以按世界覆盖任何现有锁具或开锁器的属性。覆盖将在世界加载时以及执行 /reload 时应用,非常适合整合包作者或冒险地图使用。

要覆盖锁具属性,将 JSON 文件放置在 data/<命名空间>/locks/lock_stat_overrides/<名称>.json:

{
  "item": "locks:iron_lock",
  "length": 3,
  "resistance": 50
}

要覆盖开锁器属性,将 JSON 文件放置在 data/<命名空间>/locks/lockpick_stat_overrides/<名称>.json:

{
  "item": "locks:iron_lock_pick",
  "strength": 1.5
}

只有你列出的字段会被更改——未提及的字段保持原值。多个数据包可以提供覆盖;它们会按数据包加载顺序叠加。

方法 3:TOML 配置(无需数据包即可覆盖属性)

每个内置锁具和开锁器在 locks-common.toml 中都有 TOML 配置条目,允许你无需数据包即可覆盖单个属性。将任何值设置为 -1(或开锁强度设为 -1.0)以使用 JSON 默认值。

# 示例:将铜锁的锁簧数从 6 改为 8
["Lock Stats"."Copper Lock"]
    Length = 8
    "Enchantment Value" = -1
    Resistance = -1

# 示例:将铜开锁器的强度加倍
["Lockpick Stats"]
    "Copper Lockpick Strength" = 0.56

TOML 覆盖在数据包覆盖之前应用,因此数据包具有最终优先权。

覆盖优先级

当多个系统为同一属性提供数值时,优先级顺序为:

  1. 数据包属性覆盖(最高优先级,在 /reload 时应用)
  2. TOML 配置覆盖(在配置加载时应用)
  3. 配置文件文件夹 JSON(在启动时覆盖 JAR 默认值)
  4. JAR 内置 JSON(最低优先级,内置于模组中)

关于锁芯的说明

锁芯(木质、铜质、铁质、钢质)是基础合成组件——它们不是数据驱动的,无法通过配置或数据包添加。每个锁具配方都需要其对应的锁芯作为中心材料。


配置

所有设置均可通过配置文件自定义。请注意,locks-server.toml 是每个世界独立的,并且与其他两个文件位于不同位置:

config/locks-common.toml — 世界生成和物品属性

  • 生成概率 — 旧版设置,已不再使用。现在所有生成的箱子都会无条件获得一把锁
  • 附魔概率 — 生成的锁具被附魔的频率(默认值:40%)
  • 生成的锁具 / 权重 — 世界生成中会出现哪些锁具等级及其相对稀有度
  • 按战利品价值生成锁 — 锁具等级基于箱子战利品价值(默认启用)。可配置物品价值、稀有度倍率、附魔加成、每等级价值阈值、采样数量以及每物品价值覆盖
  • 锁具属性 / 开锁器属性 — 每等级属性覆盖(见上文)

saves/<世界>/serverconfig/locks-server.toml — 服务器端游戏规则(首次加载时按世界生成)

  • 可锁定方块 — 哪些方块可以被锁定的正则表达式模式(默认值:箱子、门、漏斗等)
  • 可锁定标签 — 其成员方块可以被锁定的方块标签
  • 最大可锁定体积 — 一把锁最多能覆盖的方块数(默认值:6)
  • 允许移除锁具 — 未上锁的锁具是否可以通过潜行移除(默认值:true)
  • 保护可锁定方块 — 被锁定的方块在生存模式下是否无法破坏(默认值:true)
  • 简易上锁 — 一键放置锁具(默认值:true)
  • 隐藏锁 ID / 隐藏 HUD 附魔 — 提示框显示选项
  • 附魔开关 — 单独启用或禁用全部 7 种附魔
  • 下界合金开锁器不可破坏 — 启用后,下界合金开锁器永不损坏(默认值:false)

config/locks-client.toml — 客户端设置

  • 聋哑模式 — 为开锁小游戏提供视觉反馈以增强可访问性(默认值:true)

过期配置文件: 当模组更新并新增等级时(例如,铜质是在初始版本之后添加的),现有的 TOML 文件会保留其旧默认值。例如,“生成的锁具”列表不会包含 locks:copper_lock,除非你手动添加它,或者删除 locks-common.toml 以使其使用新的默认值重新生成。


运行需求

  • Minecraft 1.20.1
  • Forge 47.2.0 或更高版本
  • Java 17

致谢

这是一个保留了所有原始游戏玩法的非官方移植版。遵循 CC BY-NC 3.0 许可,与原始模组一致。