客户端管理

客户端管理

一个Minecraft客户端管理模组,提供许多功能来管理客户端连接

管理

JarsAuth

描述由 ChatGPT 生成,并由模组作者校对。
如有任何歧义,请以中文文本为准。

详细中文描述请前往 客户端管理 (JarsAuth) - MC百科|最大的Minecraft中文MOD百科

如果你想发表评论,请前往 GitHub Discussion


重要通知

本模组已更新至 6.0 版本。 这是一次重大更新,配置与 5.x 或更早版本不兼容。因此:

  • 服务端配置必须重新生成
  • 客户端也必须更新模组,但无需客户端配置
  • 5.x 版本存在导致 CPU 占用异常高的严重 bug,不再推荐使用 该问题已在 6.0 中修复

配置系统变更

  • 所有配置已迁移至 SQLite 数据库

  • 不再生成分散的配置文件

  • 数据库结构在所有版本中保持一致,便于迁移

  • 提供了内置配置工具:

    • 入口:服务端 GUI 底部新增的 Manager 按钮
    • 配置必须在支持 GUI 的环境中进行
    • 如果你的服务器没有 GUI:
      • 先在本地进行配置
      • 然后将数据库文件复制到服务器
    • 未来可能添加远程配置支持
  • 模组 JAR 也可以作为可执行 JAR 运行,自动使用工作目录中的数据库文件

  • 配置工具包含详细说明 → 将鼠标悬停在按钮上可查看提示


通用行为

  • 所有功能均为可选,默认禁用

    • 如果未进行任何配置更改,模组的行为就如同未安装一样
  • 功能仅在专用服务器上生效

    • 支持的环境:Forge、Fabric、Arclight、Mohist 等
    • 单人游戏和局域网世界不受影响
  • 所有消息均存储在**语言文件(*.json)**中

    • 如果需要修改,请解包 JAR,编辑后重新打包再发布
  • 为确保玩家的知情权,所有启用的功能将在每次连接时以系统消息的形式告知玩家。此消息为强制性的,无法禁用。

  • 由于开发资源有限:

    • 仅支持 Minecraft 1.20.1 及更高版本(稳定版)
    • 1.20.1 是最终的 Forge 版本
    • 此后开发将转向 NeoForge
    • 可根据需求提供定制开发

功能 1 – 文件校验和

这是本模组的原始功能。

使用场景

通常情况下,模组加载器只检查客户端与服务端之间必需模组是否匹配。 它们不会检测:

  • 仅客户端模组(例如小地图、性能模组、作弊模组)
  • X 光或其他资源包

这严重影响了游戏公平性。 传统的应对措施(例如假矿石)可能会损坏区块数据或导致卡顿。

本模组的文件校验和功能可以:

  • 验证所有客户端文件,包括仅客户端模组,是否与制作整合包时使用的版本一致
  • 检测未经授权的仅客户端文件

示例:

  • 如果不允许使用小地图,装有该模组的客户端将被拒绝连接

  • 如果要求使用小地图,缺少该模组的客户端也将被拒绝

  • 如果服务端更新了某些模组但客户端未更新:

    • 模组加载器检查可能仍然通过
    • 版本不匹配可能损坏服务端数据 → 本模组可以通过禁用其验证通道来阻止过时的客户端

工作原理

  1. 模组扫描所有已配置的文件并计算其哈希值

  2. 所有哈希值合并为一个客户端签名

  3. 当客户端连接时:

    • 服务端定期发送需要验证的文件列表
    • 客户端计算并返回其签名
  4. 如果签名不在服务端的记录中,则拒绝连接


重要配置变更

  • 支持基于组的管理与继承

  • 不同的客户端组可以有不同的验证规则

  • 过滤器支持:

    • 简单通配符
    • 正则表达式
  • 排除过滤器可以忽略不应检查的文件 (例如 .DS_Store、desktop.ini)


功能 2 – 客户端认证

此功能类似于登录系统。

使用场景

在离线模式服务器中,玩家身份仅基于用户名,很容易被冒充。

此功能添加了专用认证机制,防止其他玩家使用相同用户名登录。


工作原理

  • 当玩家加入时:

    • 服务端检查该用户名是否存在 ID(UUID)
  • 如果不存在:

    • 该玩家被视为首次登录
  • 如果存在:

    • 服务端向客户端请求该 ID
    • 如果客户端无法在限定时间内提供,则拒绝连接
  • 首次登录时:

    • 服务端生成一个与用户名绑定的 ID
    • 该 ID 被发送至客户端并存储在服务端
    • 客户端随后被断开连接,必须重新连接以进行验证

功能 3 – 服务器许可证

此功能可用作防沉迷功能。

使用场景

服务器可能希望:

  • 限制玩家游戏时间
  • 要求服务器所有者明确授权

此功能提供了一个细粒度的白名单系统,其中:

  • 服务端颁发许可证

  • 只有持有有效许可证的玩家才能连接

  • 许可证包括:

    • 过期时间
    • 类型
    • 使用配额

工作原理

登录时,服务端检查玩家的许可证:

  • 无许可证
  • 许可证已过期
  • 许可证配额已耗尽

→ 拒绝连接 许可证在游戏过程中也会定期重新验证。

此功能完全在服务端运行,不需要客户端数据交换。


重要配置变更

  • 用户和规则支持分组与继承
  • 移除了“基于连接次数”的许可证类型
  • 添加了周期性许可证,可自动重置或清除配额

功能 4 – 签名与混淆(Beta)

注意: 此功能必须在 Minecraft 环境中使用。 直接运行 JAR 不支持此功能。

使用场景

服务器可能希望玩家仅使用服务器提供的整合包。

此功能允许:

  • 导出已签名的模组包以确保唯一性
  • 一键生成 ProGuard 混淆配置

重要通知

  • 模组发布页面仅提供未签名包(“原始包”)
  • 已签名包绝不会通过公共网络资源分发
  • 服务器所有者必须决定是否使用已签名/混淆版本

安装设置

从 6.0 开始,严格的网络通道检查已被移除。 客户端和服务端可以独立运行,不会破坏游戏体验。

服务端已安装 客户端已安装 结果
是 是 按照配置进行验证
是 否 如果启用,验证始终失败;否则不进行验证
否 是 不进行验证
否 否 不进行验证

准备步骤

  1. 完成你的整合包并确保:

    • 所有模组和文件均已正确放置
    • 服务端和客户端可以正常启动并连接
  2. 下载原始包

  3. 将其放入服务端和客户端的 mods 文件夹中

  4. 启动服务端

  5. 通过服务端 GUI 打开配置工具

  6. 在 Config 选项卡中启用或禁用所需功能


签名(可选)

  • 在 Signing 选项卡中:

    • 生成:

      • *-signed.jar(服务端)
      • *-signed-expanded.jar(客户端)
    • 两者必须完全匹配

  • 同时会生成一个 config.pro 文件

    • 导入 ProGuard 以生成:

      • *-signed-expanded-obj.jar
  • 混淆仅适用于客户端包

  • 替换:

    • 服务端模组为服务端签名 JAR
    • 客户端模组为对应的签名/混淆 JAR
  • 重启服务端


文件校验和工作流程

  1. 启动客户端和服务端
  2. 在服务端运行 /jarsauth record on (必须启用文件校验和)
  3. 客户端连接 → 记录文件 → 客户端被断开连接
  4. 切换配置工具页面以刷新 UI
  5. 运行 /jarsauth record off
  6. 选择客户端组并配置过滤器 → 更改立即生效

客户端认证说明

  • 配置工具显示:

    • 服务端 ID
    • 所有已记录的客户端 ID
  • 要撤销玩家:

    • 删除其 ID 条目
  • 客户端侧:

    • 在客户端根目录中创建数据库文件

    • 其中存储所有用户名–ID 映射

    • 必须小心备份

      • 丢失 → 无法登录
      • 泄露 → 账户被冒充的风险
      • 多设备使用 → 复制数据库文件

服务器许可证说明

  • 在工具中配置组

  • 一个强制性的 default 组适用于所有用户

  • 玩家可以属于多个组

    • 组关系为 OR
    • 如果任意组有剩余额度,则允许访问
  • 所有组的额度同时减少

    • 有效额度 = 组中可用的最高额度

配置重载说明

  • 不再支持配置重载
  • 启用/禁用功能需要重启服务端
  • 其他配置更改立即生效

模组作者的话

此部分已移至 GitHub。