Hand Shaker

Hand Shaker

供服务器所有者或整合包开发者使用的解决方案,用于断开带有不受欢迎模组的用户,允许或要求模组

⚠️ 此项目需要在客户端和服务端两侧都进行设置 ⚠️

🤝 HandShaker 7.0.0 (alpha) Wiki 在此!

Modrinth CurseForge Paper Purpur Wiki Ko-fi Fabric API Neo Forge


📋 HandShaker 是什么?

HandShaker 是一个用于 Minecraft 服务器和客户端的跨平台模组/插件验证系统。它使服务器能够检测玩家正在运行哪些模组,并通过可自定义的策略来执行模组限制。

🎯 核心功能

  • Fabric/Neoforge 客户端 → 加入时向服务器发送您当前启用的模组列表
  • Paper/Fabric/NeoForge 服务端 → 根据配置的规则验证模组列表并强制执行限制
  • 多平台支持 → 可在 Fabric、Paper 和 NeoForge 上运行
  • 加密完整性 → 防止被篡改或自行编译的 HandShaker 模组
  • 灵活配置 → 针对每个模组的规则:必需、允许或列入黑名单

✨ 主要特性

特性 描述
🔐 每个模组独立配置 单独设置模组为必需、允许或黑名单
🚫 可自定义执行策略 可配置踢出消息和自动封禁功能
📊 玩家历史数据库 存储和查询玩家的模组历史记录
👀 查看玩家模组 管理员可以查看其他玩家的模组列表
✔️ 完整性验证 加密签名防止伪造的模组报告
🔐 自定义动作 允许为触发的模组设置自定义事件(命令)

🏗️ 平台对比

✅ 支持/可用 ⚠️ 存在问题/不支持 ❌ 不支持/已损坏

特性 Paper (1.x - 6.x) Fabric (2.x - 6.x) NeoForge (6.x+)
完整性检查 ✅ 6.x+
⚠️ 3.x - 5.x
✅ 6.x+
⚠️ 3.x - 5.x
✅ 6.0.0+
可配置规则 ✅ 6.0.0+ ✅ 6.0.0+ ✅ 6.0.0+
数据库存储 ✅ 5.0.0+ ✅ 5.0.0+ ✅ 6.0.0+
GeyserMC/Floodgate ✅ 5.2.0+ ✅ 5.2.0+ ❌
权限 ✅ 5.0.0+ ✅ 5.0.0+ ❌
Folia 兼容性 ✅ 6.0.0+ ❌ ❌
聊天中的可点击文本 ✅ ❌ ❌

🚀 快速开始

命令

安装

  1. 下载适用于您平台对应的模组/插件:

    • Fabric 客户端: 将 JAR 文件放入 mods/ 文件夹
    • Paper 服务端: 将 JAR 文件放入 plugins/ 文件夹
    • NeoForge 客户端: 将 JAR 文件放入 mods/ 文件夹
  2. 配置模组/插件

基础配置

config: v4

# 行为: "strict" - 强制要求客户端侧模组 或 "vanilla" 也允许非模组客户端
behavior: strict

# 完整性模式: "signed" 或 "dev" - 允许未签名的模组(如果您正在构建自己的客户端/服务端分支)
integrity-mode: signed

# 白名单模式: true = 仅允许白名单内的模组(在 whitelisted.yml 中),false = 默认允许。
# 要正常工作,必须将 "mods-whitelisted-enabled" 设为 true
whitelist: false

# 允许基岩版玩家
allow-bedrock-players: false

# 玩家数据库: 存储和跟踪玩家的模组历史记录(需要启用 playerdb)
playerdb-enabled: false

# 模组列表开关: 启用/禁用每个模组列表而不丢失配置
mods-required-enabled: true
mods-blacklisted-enabled: true
mods-whitelisted-enabled: true

# 踢出消息 - 根据需要自定义(使用 {mod} 作为模组名称)
messages:
  kick: "您正在使用被列入黑名单的模组:{mod}。请移除它以便加入此服务器。"
  no-handshake: "要连接此服务器,请下载 'Hand-shaker' 模组。"
  missing-whitelist: "您缺少必需的模组:{mod}。请安装它们以便加入此服务器。"
  invalid-signature: "无效的客户端签名。请使用官方的 HandShaker 客户端模组。"

  ban: "您因使用被列入黑名单的模组而被封禁:{mod}。"
  bedrock: "此服务器不允许基岩版玩家加入。"
  # 可以在此处为动作添加自定义消息
  # 占位符为 {mod} - 触发的模组,{player}
  test_action: "您好,{player}!您正在使用 {mod}!感谢您的使用!"
actions:
# 系统动作(使用硬编码功能,不建议复制这些)
  kick:
    commands:
      - "kick {player} {messages.kick}"

  ban:
    commands:
      - "ban {player} {messages.ban}"
    log: true
    
  log:
    missing: "{player} 尝试加入但缺少必需的模组/模组: {mod}"
    blacklisted: "{player} 尝试携带被列入黑名单的模组/模组加入: {mod}"

# 自定义动作示例
# 占位符为 {mod} - 触发的模组,{player},{messages.name_from_config.yml}

  test_action:
    commands:
      - "msg {player} {messages.test_action}"
      - "give {player} minecraft:diamond 1"
      - "say 向正在使用 {mod} 的 {player} 打个招呼!"

  watchdog:
    commands:
      - "ac increase_alert_level {player} 1000"

📝 权限

权限 描述 默认值
handshaker.admin 访问管理员命令 管理员
handshaker.bypass 绕过模组限制 False

🎮 支持的版本

加载器 版本 状态 版本 状态
Fabric 1.21 - 1.21.10, 1.21.11 ✅ 支持 N/A N/A
Paper 1.21+ ✅ 支持 N/A N/A
NeoForge 1.21 - 1.21.10, 1.21.11 ✅ 支持 1.20.1 计划中

📚 文档


路线图

  • 更多生活质量功能

🤝 贡献

欢迎提交问题、拉取请求和建议!请查看 GitHub 仓库 了解贡献指南。