PePr - 权限预检

PePr - 权限预检

在尝试区块、容器、实体和物品交互之前,预览它们是否可能被允许。

权限预检

权限预检是一个 Forge 生活质量工具,它在玩家尝试进行方块、容器、实体和物品交互之前,预先显示这些操作是否可能被允许。

它专为多人游戏服务器、保护区、出生点区域、冒险模式区域以及模组环境而设计,在这些情况下,某些东西是否已损坏、受限制、被认领或根本无法使用,并不总是显而易见的。

在浪费时间尝试打开箱子、破坏方块、放置东西或与实体交互之前,权限预检可以快速给出可能被允许的提示。


它的功能是什么?

权限预检有助于回答以下问题:

  • 我能破坏这个方块吗?
  • 我能在这里放置东西吗?
  • 我能打开这个箱子吗?
  • 我能与这个方块交互吗?
  • 我能与这个实体交互吗?
  • 这是权限问题、领地问题、保护问题还是设置问题?

当模组有有用信息时,它会显示一个紧凑的 HUD 叠加层。默认显示“拒绝”和“部分”结果,而“允许”和“未知”结果可以通过配置或详细模式启用。


结果类型

权限预检使用四种简单的结果类型:

  • 允许 可用检查未发现限制。

  • 拒绝 该操作很可能被阻止。

  • 部分 操作的某些部分可能可行,但结果不完整或混合。

  • 未知 没有提供者可以验证该操作。这很正常,并不意味着出了问题。

该模组的措辞较为保守。如果无法验证某事,它会报告“未知”,而不是猜测。


支持的操作

权限预检可以检查常见的玩家操作,包括:

  • 破坏方块
  • 放置方块
  • 使用或与方块交互
  • 打开容器
  • 与实体交互
  • 攻击实体
  • 对方块使用物品

HUD 叠加层

该叠加层设计紧凑且不引人注目。

默认情况下:

  • 显示 拒绝 结果
  • 显示 部分 结果
  • 允许 结果被隐藏,除非在配置中启用
  • 在普通模式下,未知 结果被隐藏,除非启用或激活详细模式

详细模式可以显示额外信息,例如:

  • 正在检查的操作
  • 提供者名称
  • 置信度级别
  • 缓存新鲜度
  • 提供者跟踪详情

叠加层可以配置为显示在快捷栏上方或准星附近。


聊天警告

当玩家尝试一个已被预测为拒绝的操作时,权限预检可以显示一条简短的聊天警告。

警告有速率限制,因此不会刷屏聊天。

示例:

Preflight: likely denied, cannot open containers here.


重要行为

权限预检默认为信息提示性质。

它不会:

  • 授予权限
  • 绕过保护
  • 禁用领地认领
  • 覆盖服务器规则
  • 强制操作成功
  • 自行阻止玩家操作

该模组仅报告其可用检查所能判定的内容。

服务器端检查是权威性的,客户端覆盖层仅显示从服务器接收到的结果。


提供者

权限预检 1.0.0 包含两个主要提供者。

原版提供者

原版提供者检查常见的原版限制,包括:

  • 旁观者模式
  • 冒险/建造限制
  • 世界边界
  • 出生点保护
  • 缺少或未加载的目标方块
  • 缺少或已死亡的目标实体

近期观察提供者

近期观察提供者监视已取消的 Forge 交互事件,并短暂记住被拒绝的操作。

这有助于在第一次尝试失败后,即使没有该保护模组的直接集成,也能揭示来自其他保护系统的限制。

它可以观察针对以下操作的被拒绝尝试:

  • 破坏方块
  • 放置方块
  • 使用方块
  • 与实体交互
  • 攻击实体

领地模组支持

权限预检目前不包含针对 FTB Chunks、Open Parties and Claims、Flan 或其他领地模组的直接 API 适配器。

对领地模组没有硬依赖,缺少领地模组不会导致游戏崩溃。

如果一个模组取消了 Forge 事件,并且近期观察提供者能够检测到它,那么与领地相关的拒绝信息仍可能在尝试交互后出现。

未来版本可能会添加直接的领地模组集成。


命令

权限预检包含以下命令:

  • /preflight here 检查你当前瞄准的方块或实体。

  • /preflight debug 切换详细提供者输出和详细叠加模式。

  • /preflight reload 报告配置重载/实时配置行为。需要权限等级 2。


配置亮点

权限预检包含多个用于叠加层行为、网络、提供者检查和警告的配置选项。

常见选项包括:

  • enableOverlay
  • overlayPosition
  • showAllowed
  • showUnknownInNormalMode
  • showProviderInDetailedMode
  • showConfidenceInDetailedMode
  • useColorEmphasis
  • compactOverlay
  • maxReasonLength
  • enableChatWarnings
  • warningCooldownTicks
  • requestRateLimitPerSecond
  • cacheTtlTicks
  • maxInteractionReachBlocks
  • enableVanillaProvider
  • enableObservationProvider
  • enableClaimAdapters
  • debugLogging

网络与安全

权限预检在设计上充分考虑了多人游戏的安全性。

  • 客户端仅在需要时发送请求。
  • 服务器验证目标范围和当前目标信息。
  • 客户端不能自由查询任意远处的区块或领地。
  • 请求有速率限制。
  • 结果会被短暂缓存。
  • 如果服务器缺少支持,会优雅地降级。
  • 支持专用服务器。

默认网络行为:

  • 请求速率限制:每秒 4 个请求
  • 结果缓存时间:20 个游戏刻

推荐安装

  • 单人游戏: 在客户端安装
  • 专用服务器: 在服务器端安装
  • 最佳多人游戏体验: 同时在服务器和客户端安装
  • 仅服务器端: 命令和服务器端检查有效,但未安装模组的客户端将看不到 HUD 叠加层
  • 在没有该模组的服务器上仅客户端安装: 无法获取服务器权威结果

已知限制

权限预检旨在提供帮助并保持保守,而非无所不知。

已知限制:

  • 如果没有直接的领地模组适配器,某些领地权限在第一次尝试操作前无法预测。
  • 某些模组方块可能没有暴露足够的原版信息来完美分类每个交互。
  • 高延迟可能会短暂延迟叠加层更新。
  • 攻击实体的检查比方块和容器检查更有限。
  • 当没有提供者能验证操作时,出现“未知”结果是正常的。

版本信息

  • Minecraft: 1.20.1
  • 加载器: Forge
  • Forge 目标版本: 47.4.20
  • Java: 17
  • 模组版本: 1.0.0
  • 模组 ID: permission_preflight
  • 许可证: 保留所有权利
  • 作者: Iljas