服务器版本保护

服务器版本保护

保护你的建筑!禁止非信任玩家建造、破坏、爆炸及访问容器!

服务器建筑保护器

保护精确的建筑体积免受未经授权的更改和盗窃,同时保持预期的交互、自动化、自然更新、Lootr 容器和玩家墓碑正常工作。

功能特性

- 使用精确的方块坐标而非区块边界进行服务器权威保护。
- 不受信任的玩家无法放置或破坏方块,也无法访问受保护的容器、物品展示框、盔甲架、存储载具或已配置的可承载物品实体。
- 地面上的散落物品可以被任何玩家拾取,包括受保护区域内。
- 所有者和受信任玩家保留完整的建筑和容器访问权限。
- 门、按钮、拉杆、传送石碑、墓碑、村民及类似的非存储交互保持可用。
- TNT、苦力怕、火焰、熔岩引发的火灾、未经授权的活塞、实体及其他破坏性效果无法损坏受保护的建筑。
- 活塞动作是原子性的:每个底座、活塞头、移动或破坏的方块、粘液块或蜂蜜块附着物以及目的地都必须通过检查后才会发生任何方块更改。
- 粘性活塞会根据活塞头移动后的状态进行回缩验证,允许正常拉动而不会削弱保护边界检查。
- Universal Graves 死亡墓碑会创建一个临时的一方块保护例外,待墓碑移除后正常的区域保护立即恢复。
- Lootr 容器对每个玩家保持可用,因为其战利品是玩家专属的。
- 管理员可以移除任何保护,为缓存的离线玩家或服务器创建保护,并按维度禁用新的玩家自有领地创建。服务器拥有的保护在禁用维度中仍然可用,且没有领地数量限制。
- 原版漏斗和投掷器提取遵循配置的外部转移策略,默认仅允许同所有者的自动化。
- 拒绝重叠保护,可配置水平限制、每玩家限制、维度、兼容性 ID、转移策略和轮廓可见性。
- 生成的 JSON 配置文件包含每个设置的详细文档和示例。
- 可选客户端安装提供受保护体积轮廓和可编辑的鼠标中键角点选择。

命令

坐标是六个以空格分隔的整数,不含逗号或括号。

/protect x1 y1 z1 x2 y2 z2
保护当前维度中两个角点之间的闭包体积。

/protect as username x1 y1 z1 x2 y2 z2
仅限管理员。为服务器 usercache.json 中列出的玩家(包括离线玩家)创建保护。

/protect server x1 y1 z1 x2 y2 z2
仅限管理员。创建服务器拥有的保护,包括在为玩家领地禁用的维度中。服务器拥有的保护不受 maxProtectionsPerPlayer 限制。

/protect disable dimension
仅限管理员。立即在已加载维度中禁用新的玩家自有保护创建,并将其持久化到 dimensionDenylist。接受 overworld、nether、end 或精确的命名空间维度 ID。现有和服务器拥有的保护仍然有效。

/trust username
给予在线玩家对你所有当前和未来保护的完全访问权限。

/untrust username
将在线玩家从你的信任列表中移除。

/unprotect
移除包含你当前位置的保护。管理员可以移除任何保护。

/protect list
以稳定顺序列出你的保护和受信任玩家。没有保护的玩家会收到成功的空列表结果;非玩家来源会收到明确的仅限玩家的错误。

/protect repairpistons
仅限管理员。修复操作员 10 格半径内可恢复的移动中活塞、孤立活塞头和失效的扩展活塞状态。

自然和自动化行为

流体正常扩散和消退。自然生长的树叶会凋零,而玩家放置的持久树叶保持受保护。海龟蛋、青蛙卵和嗅探兽蛋正常孵化。

植物和树木正常生长,雪融化,重力方块下落,无支撑的植物和附着物掉落,村民在其工作站点耕作和补充交易,绵羊吃草,雪傀儡留下痕迹。草、菌丝体和苔藓扩散;耕地变干;铜氧化;珊瑚正常死亡。

兔子和劫掠兽破坏作物、末影人搬动方块、踩踏耕地、幽匿扩散、火焰蔓延和熔岩引发的火灾保持被阻止。

活塞触发保持基于世代的授权,包含触发玩家、来源、来源领地及其所有者、触发类型和创建时间。授权跟随排队的活塞事件、调度的红石脉冲、移动中活塞完成以及由此产生的方块状态、比较器和相邻方块更新。按钮、压力板、绊线钩、标靶、中继器、观察者、比较器、受信任的红石定时器和活塞驱动的循环可以继续运行,而无需玩家手动触发每个下游活塞。

电路授权持久化在世界中,并在有排队或活动工作时在干净的服务器重启后恢复。休眠的世代自然过期。被中断的物理移动中活塞状态仍会被安全标准化,而不是恢复未完成的移动。

保护外的活塞可以在完全外部运行,但不能进入领地。领地拥有的幽匿、观察者、阳光传感器和已注册的模组自动化保持在其实始领地内部。玩家启动的活塞只有在触发玩家当前拥有或被信任于每个受影响的领地时,才能在受保护的领地之间跨越。从受保护领地移动到未受保护空间的移动仍然被阻止。每个下游动作仍会收到完整的原子预检检查。

任何振动都可能激活幽匿或校准幽匿传感器电路。幽匿传感器、观察者、阳光传感器和已注册的自动来源获得领地拥有的授权,并可在其实始领地内操作机械。自动活塞在其他情况下可以正常移动方块并推动玩家、生物和载具,前提是原子保护检查通过。

中断的活塞状态会在区块加载完成后被标准化,而不是在重启后恢复。可恢复的移动方块会被还原,而无效的碰撞残留物会被移除。管理员也可以运行 /protect repairpistons 进行手动 10 格半径修复。

模组兼容性

Universal Graves 3.10.2 的死亡墓碑放置、访问、破坏和清理在每个保护内均被允许。只有死亡墓碑方块当前占用的位置被临时豁免;Universal Graves 保留其自身的墓碑访问规则,当墓碑消失或恢复其替换的方块时,原始区域保护自动恢复。

Lootr 容器保持对所有玩家可开启,同时其方块保持受保护,免受未经授权的破坏。Lootr 和 Universal Graves 是可选的,需要时须连同各自的依赖项一起安装。

传送石碑和墓碑风格的注册表标识符被排除在物品锁定之外。精确的额外每玩家容器、安全交互和受保护的可承载物品实体 ID 可配置。

服务器端兼容性 API 允许其他 Fabric 模组注册状态感知的每玩家容器、安全交互、可承载物品实体、临时墓碑、自然更新和自动化来源。它还公开只读的领地、玩家访问、物品转移和当前授权查询。Server Build Protector 自行创建所有自动化令牌;兼容性规则不能伪造玩家、所有者、信任、世代或绕过活塞边界。未知管道模组必须调用转移查询或接收专用适配器。

客户端辅助功能

在客户端安装相同的 JAR 和 Fabric API 后,按逗号键切换受保护体积的红色轮廓。用鼠标中键点击两个角点以打开可编辑的 /protect 命令;该命令仅在按下回车键后发送。如果没有目标方块,则使用玩家当前的方块坐标。

尺寸限制和配置

默认水平限制为任一轴 320 格,水平面积为 3,840 格,相当于 15 个区块面积。高度可跨越维度的建造范围。

编辑 config/server-build-protector.json 并重启以配置 maxHorizontalAxisBlocks、maxHorizontalAreaBlocks、maxProtectionsPerPlayer(0 为无限制)、dimensionAllowlist、dimensionDenylist、externalItemTransferPolicy(same_owner、deny_all 或 allow_all)、精确的兼容性 ID 列表和 outlineVisibility(all、own_and_trusted 或 disabled)。管理员可通过 /protect disable 在运行时将已加载维度添加到 dimensionDenylist。黑名单优先,而空的维度白名单允许除被拒绝外的每个维度。服务器拥有的保护不受维度创建限制和 maxProtectionsPerPlayer 的限制,但仍遵守尺寸和重叠限制。

生成的配置包含一个文档对象,解释每个设置的目的、可接受值、交互和示例。文档对象仅供参考,由模组在启动时刷新;请编辑其上方的实际设置字段。

保护数据按玩家 UUID 存储在 world/server-build-protector.json 中。活动电路授权单独存储在 world/server-build-protector-circuits.json 中。无效或不支持的保护、电路或配置数据将停止启动,而不是静默禁用保护。

安装

需要 Minecraft Java 1.21.11、Fabric Loader 0.19.3、Fabric API 0.141.4+1.21.11 和 Java 21 或更高版本。将 ServerBuildProtector-1.0.10-beta.jar 放入服务器的 mods 文件夹。

客户端无需安装模组即可执行强制或命令。客户端安装仅用于显示轮廓和鼠标中键选择。