哨兵 [反作弊]

哨兵 [反作弊]

一款专注于检测PvP环境中作弊的Hytale反作弊系统

实用

Sentinel

展示视频

YouTube 展示与说明:https://youtu.be/nF527eBHEXo

Discord 服务器:https://discord.gg/dexWfjSWZK

这是一个 Hytale 服务端反作弊插件,专注于移动/交互检测,提供员工警报、近期异常记录,以及可选的 Discord Webhook 通知和处罚功能。

当前检测项

  • 计时器:检测异常快速的移动和交互数据包。
  • 飞行:标记在冒险模式中飞行的行为。
  • 速度:标记超过阈值的持续水平移动速度。
  • 无限耐力:标记无耐力消耗的冲刺行为。

功能特性

  • 聊天栏员工警报
  • 可选的 Discord Webhook 警报
  • 可选的在异常次数达到阈值时自动处罚(断开连接/封禁)

HStats

配置

配置文件在首次运行时创建于插件数据目录(通常为 mods/Al3x_HytaleAC/config.json)。

默认配置:

{
  "timer": {
    "enabled": true,
    "minMsInteractionPacket": 9,
    "minNanoMovementPacket": 15000000.0,
    "flagsNeededToAlert": 100,
    "flagsNeededToPunish": 1000
  },
  "fly": {
    "enabled": true,
    "flagsNeededToAlert": 1,
    "flagsNeededToPunish": 5
  },
  "speed": {
    "enabled": true,
    "maxSpeedThreshold": 9.5,
    "flagsNeededToAlert": 1,
    "flagsNeededToPunish": 5
  },
  "infStamina": {
    "enabled": true,
    "flagsNeededToAlert": 4,
    "flagsNeededToPunish": 8
  },
  "alerts": {
    "resetIntervalSeconds": 60,
    "notifyReset": true,
    "debugMode": false,
    "discordWebhookUrl": ""
  },
  "punishments": {
    "reason": "[Anticheat] Cheating",
    "shouldBan": false
  }
}

配置选项:

路径 类型 默认值 描述
timer.enabled boolean true 完全启用或禁用计时器检测。
timer.minMsInteractionPacket int 9 触发检测前,交互数据包之间的最小毫秒间隔。
timer.minNanoMovementPacket number 15000000.0 触发检测前,移动数据包之间的平均最小纳秒间隔。
timer.flagsNeededToAlert int 100 发送员工警报前所需的异常次数(计时器)。
timer.flagsNeededToPunish int 1000 触发处罚前所需的异常次数(计时器)。
fly.enabled boolean true 完全启用或禁用飞行检测。
fly.flagsNeededToAlert int 1 发送员工警报前所需的异常次数(飞行)。
fly.flagsNeededToPunish int 5 触发处罚前所需的异常次数(飞行)。
speed.enabled boolean true 完全启用或禁用速度检测。
speed.maxSpeedThreshold number 14.0 触发检测前的最大水平速度阈值。
speed.flagsNeededToAlert int 1 发送员工警报前所需的异常次数(速度)。
speed.flagsNeededToPunish int 5 触发处罚前所需的异常次数(速度)。
infStamina.enabled boolean true 完全启用或禁用无限耐力检测。
infStamina.flagsNeededToAlert int 2 发送员工警报前所需的异常次数(耐力)。
infStamina.flagsNeededToPunish int 4 触发处罚前所需的异常次数(耐力)。
alerts.resetIntervalSeconds int 60 清除玩家异常记录的间隔时间(秒)。
alerts.notifyReset boolean true 如果为 true,在异常记录重置时通知员工。
alerts.debugMode boolean false 如果为 true,在服务器控制台打印不同检测的调试输出,并且不执行处罚。
alerts.discordWebhookUrl string "" Discord Webhook URL,用于发送警报嵌入信息;留空则禁用。
punishments.reason string "[Anticheat] Cheating" 用于断开连接/封禁以及处罚 Webhook 的原因。
punishments.shouldBan boolean false 如果为 true,触发处罚时封禁玩家而不是断开连接。

Webhook 警报

如果设置了 alerts.discordWebhookUrl,员工警报和处罚操作也会发布到 Discord。警报的速率限制为每秒一次,处罚除外。

处罚

当任何检测项达到其 flagsNeededToPunish 阈值时,插件将默认断开玩家连接并发送处罚 Webhook。如果 punishments.shouldBantrue,则会发出无限期封禁。

命令

命令 描述 权限 备注
/anticheat reload 重新加载插件配置选项。 anticheat.command 注意重启服务器效果更佳。
/anticheat help 显示可用的反作弊命令。 anticheat.command
/alerts 切换接收反作弊警报。 hytaleac.alerts 拥有此权限的玩家在加入时自动启用。
/logs <player> 显示某玩家的近期异常记录。 hytaleac.logs 异常记录会在重置间隔时被清除。

权限

  • anticheat.command:允许使用 /anticheat help/anticheat reload 命令。
  • hytaleac.alerts:允许使用 /alerts 命令并接收员工警报。
  • hytaleac.logs:允许使用 /logs <player> 命令。

安装

  1. 从最新版本中获取 .jar 文件。
  2. 将 jar 文件复制到 Hytale 服务器的 mods 目录。
  3. 启动服务器以在插件数据目录生成 config.json 文件。

故障排除

  • 异常过多/误报过多:增加相关检测项的 flagsNeededToAlertflagsNeededToPunish 值,和/或放宽阈值(例如 timer.minMsInteractionPackettimer.minNanoMovementPacketspeed.maxSpeedThreshold)。
  • 没有员工警报:确保员工拥有 hytaleac.alerts 权限,并且他们已使用 /alerts 命令启用了警报。
  • 日志始终为空:日志会在 alerts.resetIntervalSeconds 设置的时间间隔重置,这是为了防止误报使日志变得杂乱。
  • 没有 Discord 警报:验证 alerts.discordWebhookUrl 是否为有效的 webhook URL。

性能说明

Hytale 仍然很新,服务器 API 也在不断演变。虽然此插件已在低端硬件上测试过,但性能可能会因服务器负载和玩家数量而异。如果突然更新改变了数据包的工作方式,插件可能会失效。添加新插件后,请务必监控服务器的性能。