无光之地

无光之地

防止意外从副手放置火把、灯笼和灯——一键切换开关。

Bug修复

🕯️ 想象一下:你已经在矿道里挖了三个小时。主手拿着方块,副手拿着火把。你按住右键想放一面墙——然后,恭喜你——你给整条隧道贴满了火把,装饰得跟圣诞树似的。听起来很熟悉吧?NoLightPlace 就是为了消灭这种肌肉记忆的意外而存在的。

NoLightPlace 是一个很小的 仅客户端 Fabric 模组。它可以防止你在副手持有光源时放置它们。不再有意外放置的火把,也不需要再把几十个火把从地上捡起来——只管挖出整洁干净的隧道。


⚡ 它的功能

  • 🛑 仅阻止从副手放置光源 —— 你的主手绝不受影响,行为与原版完全一致。
  • 🔁 它是切换开关,不是按住不放。 按一次键 → 锁定。再按一次 → 解锁。挖矿时你不需要一直按着某个键。
  • 💬 快捷栏上方的屏幕状态行 让你一眼就能看到当前状态(LOCKED / UNLOCKED),所以你永远不会疑问模组是否开启。
  • ⌨️ 完全可重新绑定 控制菜单中的按键(默认为 Left Alt)。

🎮 切换开关的行为方式

其核心在于精准:它只会在 副手 + 光源 + 锁定 同时满足时取消放置。其他一切功能都不受影响。

🔒 锁定状态 🤚 副手物品 ✊ 主手物品 🖱️ 右键点击结果
关 火把 泥土 两者都正常放置(原版行为)
开 火把 泥土 泥土正常放置 ✅ · 火把被阻止 🛑
开 泥土 镐 泥土正常放置 ✅(副手的泥土不是光源)
开 牛排 剑 牛排可正常食用 ✅(食物不是光源)
关 灯笼 圆石 两者都正常放置(原版行为)

注意到规律了吗:只有当三个条件同时成立时——副手、锁定,以及是光源——模组才会“说不”。缺少任何一个条件,Minecraft 就会执行其正常行为。


🧱 哪些物品会被阻止

仅限常见的光源。方块、工具、食物、水桶——全部忽略。

类别 物品
🔥 火把 火把 · 灵魂火把 · 红石火把
💡 灯笼 灯笼 · 灵魂灯笼

⚠️ 目前该列表仅限原版物品。来自其他模组的火把/灯笼尚未被阻止——如果你希望添加特定物品,请提交一个 issue,我会把它加进去。


🛠 实现原理

想知道“阻止”在代码层面是什么样子的吗?整个判断逻辑非常简短——模组只是问了三个问题,一旦任何一个答案是“否”就直接返回:

if (hand != Hand.OFF_HAND)         return PASS;  // 是主手?绝不干预
if (!isLocked)                     return PASS;  // 开关没开?纯原版行为
if (!LIGHT_SOURCES.contains(item)) return PASS;  // 不是火把/灯笼/灯?忽略

return FAIL; // 副手 + 锁定 + 光源 → 取消放置

仅此而已。没有对放置逻辑的 mixin 修改,没有服务端往返通信——只是两个 Fabric 事件(UseBlockCallback / UseItemCallback),当条件满足时返回 FAIL。天生轻量。


📦 安装

  1. 为 Minecraft 1.20.1 安装 Fabric Loader → fabricmc.net/use
  2. 将 Fabric API 放入你的 mods/ 文件夹 → Modrinth
  3. 将 nolightplace-<版本号>.jar 放入同一个 mods/ 文件夹
  4. 启动游戏——就这样。✅

🧩 仅客户端。 服务器不需要安装此模组。它可以在任何服务器(原版、Paper、模组服)上运行,其他人无需安装任何东西。


❓ 常见问题

它在多人游戏/服务器上能用吗?

可以。它是纯客户端的——只需要在你的客户端上安装它就能正常工作,服务器端无需安装模组。

我可以更改按键吗?

可以。进入 选项 → 控制 → 按键绑定 → NoLightPlace。将它重新绑定为你觉得合适的按键即可;无需重启。

它会不会阻止我的主手?

不会。设计上主手是完全被忽略的。只针对副手,且仅在锁定时,且仅针对光源。

它会阻止副手中的方块/食物/水桶吗?

不会。只会阻止上面列出的光源。你副手里的泥土、牛排和水桶都会像以前一样正常工作。

为什么用切换开关而不用“按住以阻止”?

因为你在开始挖矿前设置一次,然后就可以忘掉它了。一边按键一边还要按住右键,这正是这个模组想要消除的尴尬操作。


🔗 链接与联系


如果 NoLightPlace 让你的隧道免于火把泛滥,一个 ❤️ 和一个关注将意义非凡。🕯️ 发现 Bug 或想添加某个模组的火把?[提交一个 issue](https://github.com/Foxxxyyyyy/NoLightPlace/issues) —— 我真的会去看。