本资源现已停止维护,是时候让 Soaroma 休息了,她已感到困倦——未来我或许会重制 Soaroma,但短期内不会更新。感谢多年来所有支持我的朋友们,我们下次再见。
SoaromaSAC 是一款简洁的反作弊插件,用于检测并清除服务器中的作弊者。SAC 提供了大量可配置选项,让你能根据服务器需求自定义反作弊功能。本插件适用于被动型服务器,如空岛、生存服等。它并非为 PVP 设计,更侧重于移动检测,并追求高性能与低消耗。插件共包含约 67 项检测,其中约 53 项针对移动,约 2 项针对战斗,约 6 项针对世界交互,约 4 项为其他检测。除了作弊检测,SoaromaSAC 还集成了管理功能。
检测的作弊类型
移动类
- 飞行 (Flight) A, B, C, D, E
- 连跳 (Bunny Hop) A, B
- 滑翔 (Glide) A, B
- 快速攀爬 (Fast Climb) A
- 流体行走 (Fluid Walk) A, B, C, D, E (又称 Jesus)
- 无摔落伤害 (NoFall) A
- 速度 (Speed) A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q
- 无减速 (NoSlowDown) A, B, C, D
- 爬墙 (Spider) A, B
- 高步 (Step) A
- 鞘翅飞行 (Elytra Flight) A, B (长时间使用鞘翅而未使用烟花火箭)
- 异常启动 (Irregular Startup) A, B
- 平均速度 (Median Speed) A
- 异常数据包 (BadPackets) A
战斗类
- 攻击距离 (Reach) A
- 暴击 (Criticals) A
世界交互类
- 异常放置 (Irregular Placement) A (在空中放置方块)
- 超距破坏 (Reach Break) A
- 超距放置 (Reach Place) A
- 快速破坏 (Nuker) A
其他类
- 异常事件计数 (IrregularEventCount) A, B (计时器,检测 >= 1.1 倍速)
- 生命恢复 (Regen x1) A
- 自动点击 (Auto Clicker) A, B
实验性检测 (默认配置中禁用)
- 高步 (Step) B
- 异常移动 (IrrMovement) A, B
- 自动寻路 (Baritone) A, B, C (可能需要一段时间才会标记,具体取决于配置)
- 幽灵手 (GhostHand) A
- 透视 (Xray) A (Discord 服务器中提供可选预配置)
实验性检测 (默认配置中启用)
- 半预测 (Semi Prediction) A, B
请注意,由于作弊行为相似,检测项可能覆盖超出上述列表的作弊。实际检测项多于所列,部分因在配置中禁用或过于不敏感而未显示。
权限
sac.bypass– 绕过所有检测。sac.bypass.[checkname][type]– 绕过特定检测。[checkname]为检测名称(如 speed),[type]为类型(如 e)。例如:sac.bypass.speede。sac.notify– 接收违规消息。sac.notifykick– 当玩家被踢出时通知管理员。sac.reload– 重载配置。sac.alertCommandGet– 用于/sacnotify命令。sac.gui.adminsac.kicksac.bansac.guisac.warnsac.mutesac.unbansac.freezesac.pingsac.user– 用于/sacuser命令。sac.hashclearsac.reportsac.reportRecieve– 当玩家提交举报时,拥有此权限的玩家会收到通知。sac.reportListsac.display.custompayload– 用于/sacppicp命令。sac.punish.bypass– 绕过管理命令,如/sacfreeze、/sacgui等。sac.replaysac.startup.choose– 用于/sacconfigchoose命令。sac.history– 用于/sachistory命令。sac.sacvio– 用于/sacvio命令。
命令
/sacreload– 重载插件配置。/sacuser <玩家>– 显示该玩家的特定信息。/sacnotify <disable/enable>– 启用或禁用违规消息。/sacgui <玩家>– 打开针对该玩家的惩罚 GUI。/sacmute <玩家>– 禁言玩家。/sackick <玩家>– 踢出玩家。/sacwarn <玩家> <原因>– 警告玩家。/sacunban <玩家>– 解封玩家。/sacping <玩家>– 查看玩家延迟。/sacadmin– 打开管理员 GUI。/sacfreeze <玩家>– 冻结玩家。/sachashclear– 清除哈希数据。/sacreport <原因>– 提交举报(所有举报会记录在文件中)。/sacreports <数量>– 查看最近指定数量的举报。/sacppicp <玩家>– 显示玩家的自定义负载信息。/sacreplay <玩家-uuid> <dd.mm.yyyy>– 回放指定日期的玩家数据。/sacconfigchoose [ID]– 选择预设配置。/sacvio– 在 GUI 中查看最近的违规记录。/sachistory <玩家名> <数量>– 查看玩家指定数量的日志。
功能特性
- 每 X 次违规后自动处理(默认禁用)。
- 冻结系统。
- 惩罚 GUI。
- 自动踢出与封禁(封禁默认禁用)。
- 举报系统。
- 支持十六进制颜色代码。
- 查看目标玩家延迟的命令。
- 可通过命令启用或禁用违规消息。
- 自动清除违规记录(默认禁用)。
- 所有消息均可自定义。
- 踢出记录。
- 违规记录。
- 举报记录。
- 取消作弊行为(默认启用,配置中名为
cancelEventIfHacking)。 - 违规消息中显示检测的严重性(低、中、高)。
- 每项检测均可配置,可轻松调整或禁用。
- Discord Webhook 集成。
- TPS 检查器(可在高于或低于特定 TPS 时启用反作弊)。
- PlaceholderAPI 支持 [
%current-violations%、%total-violations%、%warns%]。 - GUI 配置界面。
- 异步检测。
- 无依赖项。
- 可设置黑名单世界。
- 支持针对特定检测的权限。
- 可在
config.yml中忽略指定的 Java 版或基岩版玩家。
常见问题
如何禁用回退(lagback)?
- 将配置中的
cancelEventIfHacking设置为false。
这个反作弊支持 Paper 和 Spigot 吗?
- 支持。
我发现了一个误报,该怎么办?
- 可以在配置中调低该检测的敏感度,或在 Discord 服务器中向我报告。
如何使用这个反作弊?
- 确保服务器版本为 1.17 或 1.18,将 JAR 文件放入
/plugins文件夹,重启服务器即可。无需任何依赖。
这个插件兼容 Geyser 吗?
- 兼容,但请确保在 Geyser 配置中将
forward-player-ping设置为true。
作弊后我没有被踢出?
- 请确保服务器版本为 1.17 且反作弊已启用。默认在 50 次违规后踢出。同时确认你没有
sac.bypass权限,并且处于生存模式。
我不想让违规消息刷屏!
- 将配置中的
spacedViolationMessages设置为true。
我想让反作弊在低于特定 TPS 时运行!
- 将
checkServerTPS和invertTPS都设置为true。
我想让反作弊在高于特定 TPS 时运行!
- 将
checkServerTPS设置为true。
我想让 OP 也受到反作弊检查!
- 将 OP 的
sac.bypass权限设置为false,推荐使用 LuckPerms。
我想启用默认禁用的实验性检测!
- 前往配置文件中启用它们。
这个反作弊效果如何?
- 这取决于你的使用情况,我无法给出确切评价。
这个反作弊会支持 1.8 版本吗?
- 不会。
可以修改所有消息吗?
- 可以。
这个反作弊适合用于战斗检测吗?
- 简而言之:不适合。
飞行检测有误报!
- 在配置中将以下数值增加 1 或 2:
inAirJumpUntilHackingA: 4.0
inAirUpwardUntilHackingB: 11.0
为什么有些检测在默认配置中是禁用的?
- 因为不是所有人都知道如何配置检测,而第一印象很重要,所以我禁用了那些可能不太稳定的检测。
我发现了绕过方法!
- 如果你发现了绕过方法,请在 Discord 服务器中报告,这会让我花很多时间来修复它。
我没有收到任何违规消息
- 你需要拥有
sac.notify权限,并使用权限插件来管理权限。
有哪些检测是绝对不会有误报的?
- flight (E)、noSlowDown (C) 和 nuker (A) 由于其检测机制,永远不会产生误报。
我想要一个极其敏感的配置!
- 请阅读服务器启动时的提示消息。
我不想手动配置这个反作弊!
- 插件在启动时会给出提示消息,请按照指引操作。
额外信息
性能报告(过时版本参考)
- 测试环境:60 人在线,服务器版本 1.16.5,插件版本 1.0.01。
- 所有列出的检测均已启用,并包含物品属性检查选项。
- 占用约 0.17% 的 tick 时间,平均每玩家约 0.002% ~ 0.003%,非常轻量。
API 使用示例
import me.korbsti.soaromaac.api;
// 需要在配置中将 enableAPI 设置为 true 才能使用 API
// p.setDisabler(x) 用于禁用对玩家 x 个 tick 的检测
@EventHandler
public void onFlag(SoaromaFlagEvent event) {
Player p = event.getFlaggedPlayer();
}
@EventHandler
public void onPunish(SoaromaAdminPunish event) {
String punishType = event.returnType();
}
// 在其他事件中使用 API
import me.korbsti.soaromaac.Main;
import me.korbsti.soaromaac.api.SoaromaAPI;
public class YourClass extends JavaPlugin {
public SoaromaAPI api;
@Override
public void onEnable() {
if (Bukkit.getPluginManager().getPlugin("SoaromaSAC").isEnabled()) {
soaromaAPI = new SoaromaAPI((Main)(Bukkit.getPluginManager().getPlugin("SoaromaSAC")));
}
}
@EventHandler
public void someRandomEventThing(SomeRandomEvent e) {
api.setDisabler(e.getPlayer(), 100); // 此后 100 tick 内该玩家不会被检测
}
@EventHandler
public void soaromaAutoKick(SoaromaAutoKick e) {
}
}预设配置
- 使用插件时,你会在游戏内收到提示消息,指导你如何获取预设配置。
- 使用命令
/sacconfigchoose可以选择插件内置的预设配置。你可以根据喜好调整任何配置,本反作弊高度支持按服务器自定义。
链接
- Discord 服务器:https://discord.gg/GK3rmrze2Q (支持、误报报告)
- 部分检测已开源:checks
- SAC 回放插件:sacaddons
- 软依赖:Floodgate(用于基岩版玩家)
分发说明
- 你可以在其他网站上上传此资源,无需我的许可,也无需署名。
免责声明
本插件可能与过度修改玩家移动或行为的其他插件不兼容。默认情况下,此反作弊仅适用于原版玩家移动。例如,若要与 mcMMO 兼容,则需调整相关变量——更多信息请参阅 Discord 的 FAQ 频道。
为防止误报,玩家在传送或登录后的几秒内会获得短暂的免检时间。
我不会声称此反作弊是完美的,因为它并非如此。可能会出现绕过方法、误报或错误。如果发生任何此类情况,请告诉我以便修复,但该反作弊的大部分功能现已相对稳定。
重要提示
- 如果你使用任何完全破坏树木的插件(例如 Timber 或 mcMMO),必须将配置中的
reachBlockBreakNum增加到200.0以防止误报。 - “推荐 (Recommended)”和“移动 (Movement)”配置不适用于本地服务器。请勿在本地服务器上使用它们进行测试,它们仅适用于非本地托管的服务器。如果是本地服务器,请使用其他配置。
SoaromaSAC 是一款功能强大的 Minecraft 反作弊插件,旨在检测和阻止各种作弊行为,如飞行、加速、杀戮光环等。它提供了高度可配置的检测系统、自动处罚机制以及管理员管理工具,帮助维护公平的游戏环境。
重要说明
- 本文件 (
main.yml) 是反作弊插件的核心配置文件。 - 除非你确切知道某个配置项的作用,否则请不要随意修改,错误的配置可能导致大量误判或检测失效。
- 遇到问题时,建议通过 Discord 联系开发者以快速获得帮助。
核心概念
- “持续触发”:指玩家连续、稳定地触发检测条件。如果检测是间断性的,计数器会重置,不会标记玩家。
- 计时单位:配置中名为
timer的项,20等于 1 秒。 - 速度计算:基于玩家“从”和“到”的位置计算距离,并乘以 10。
- 非战斗数值:调整这些数值需格外谨慎,设置过高可能导致检测完全失效。
标记系统
这是反作弊的核心开关与基础设置。
基础开关
enableAntiCheat: 启用或禁用所有检测。设为false将关闭所有检查。disablerTimeOnJoin: 玩家加入后,反作弊暂时禁用的时间(单位:Tick,20=1秒),用于防止加入时的误判。cancelEventIfHacking: 当发生违规时是否取消事件。设为true会使检测系统不那么敏感;false则会极大提高检测速度。autoViolationKick: 是否启用自动踢出。useUsageForAutoKick: 是否使用自定义命令进行踢出。若为true,将使用下面的usageKick命令。usageKick: 自定义踢出命令,例如kick {player} Timed Out。violationKickNumUntilKick: 累计多少次违规后触发踢出。teleportSensitivity: 玩家被标记时传送的敏感度。数值越低,传送越频繁。建议值:
- `5`: 安全,给误判玩家恢复机会。- `2`: 适度惩罚被标记玩家。- `1`: 严格惩罚被标记玩家。违规管理
clearAllViolationsTimer: 是否定时清除所有玩家的违规计数。clearAllViolationsTimerNum: 清除违规计数的时间间隔(单位:秒)。warnFlaggedPlayer: 是否警告被标记的玩家。
自动封禁
enableAutoBan: 是否启用自动封禁。useUsageForAutoBan: 是否使用自定义命令进行封禁。若为true,将使用下面的usage命令,autoBanTime将失效。usage: 自定义封禁命令,例如ban {player}。numPlayerKickUntilBan: 玩家被踢出多少次后触发自动封禁。autoBanTime: 自动封禁的时长(单位:小时)。
世界黑名单
blacklisted-worlds: 在此列表中的世界将禁用所有反作弊检查。请勿删除占位符。
阈值与消息
阈值设置
用于调整检测的敏感度级别。
irregularEventCountLow/Medium/High: 用于计时器检查等的不规则事件计数阈值。roundedThresholdLow/Medium/High: 定义违规的“低”、“中”、“高”严重级别。high-string/medium-string/low-string: 对应严重级别的显示文本(支持颜色代码)。
违规消息间隔
spacedViolationMessages: 是否启用间隔发送违规消息。若为false,每次违规都会通知有权限的管理员。spacedViolationNotificationsNum: 每累计多少次违规才发送一次通知。
图形界面
管理员在游戏中使用的 GUI 设置。
管理员菜单
GUIName: GUI 菜单的名称。sectionsItem: 用于表示菜单分区的物品(如ENDER_PEARL)。keyItem: 用于表示可选项的物品(如ENDER_EYE)。
封禁选项
定义了五次封禁选项的显示名称、时长和命令。
FirstTime到FifthTime: 分别对应 1天、3天、7天、30天和永久封禁。- 每个选项包含:
- `DisplayName`: 在 GUI 中显示的名称。- `Time`: 封禁时长(小时)。- `useUsage`: 是否使用自定义封禁命令。- `usage`: 自定义封禁命令。消息文本
所有插件发送的消息文本均在此配置。你可以自定义颜色和格式。关键消息包括:
banMessage: 玩家被禁止加入服务器时看到的提示。violationMessage: 向管理员发送的违规提示,格式为:{player} flagged {hack} {type} : V [{num}] : P [{ping}] : Severity [{vioType}]。- 其他消息包括踢出、警告、冻结、静音、报告等相关提示。
配置选择提示
当服务器首次启动且管理员拥有 sac.startup.choose 权限时,会收到选择预设配置的提示消息 (no-config)。预设配置有:
- ID 1 - 默认配置: 平衡敏感度与有效性,但在高延迟下可能有误判。
- ID 2 - 低敏感度配置: 大幅减少误判,违规提示间隔较大,但可能漏掉一些作弊。
- ID 3 - 高敏感度配置: 极大提高抓获作弊者的几率,但误判率也高,不适合高延迟环境。
- ID 4 - 低敏感度自动配置: 基于配置2,违规不提示管理员,累计到高数量后自动封禁,违规计数每30分钟重置。
物品属性检查
enableItemAttributeChecking: 仅当服务器使用物品属性(非药水效果或附魔)时启用。speedIncrease和divisionAmount: 用于计算物品属性带来的速度增益公式。counter: 当玩家卸下带有速度属性的物品后,接下来的多少次移动数据包会暂时提高其速度上限,以防止误判。
移动检查
通用设置
iceIncrease: 在冰面上时,相应提高速度检查的阈值。
各子检查项
每个子检查项(如 checkBHop, checkFly)通常包含:
- 一个总开关(如
checkBHop: true)。 - 多个具体阈值变量(如
speedCheckMidAirA,BhopUntilHackingA),用于定义触发违规的速度、次数或时间条件。
**主要检查包括**
- 兔子跳
- 快速攀爬
- 飞行
- 不规则视角
- 无坠落伤害
- 滑翔
- 鞘翅飞行
- 速度
- 蜘蛛墙爬
- 不规则移动
- 起步加速
- 中位速度
- 高跳
- 无减速
- 流体行走
战斗检查
通用战斗设置
checkPlayersGamemodeCombat: 是否对创造模式玩家进行战斗检查。smartCombatMovementChange: 当玩家被击中时,智能调整移动检查的阈值以防止误判。
- `smartCombatMovementChangeTimer`: 脱离战斗状态的时间(Tick)。- `smartCombatMovementChangeNumber`: 提高所有移动检查阈值的数值。- `smartCombatMovementChangeSpeedPunchLM`: 被击退附魔击中时,提高速度阈值的数值。- `smartCombatMovementChangeSpeedKnockbackLM`: 被击退效果击中时,提高速度阈值的数值。具体战斗检查
- 暴击检查 (
checkCriticals) - 击退检查 (
checkVelocity) - 杀戮光环 (
checkKillAura) - 攻击距离 (
checkReach)
计时器检查
- 生命恢复 (
checkRegen) - 不规则事件计数 (
checkIrregularEvent): 检查数据包发送间隔是否异常快或慢。
交互检查
- 自动点击器 (
checkAutoClicker): 检查每秒点击次数。 - 破坏距离 (
checkReachBlockBreak) - 放置距离 (
checkReachBlockPlace) - 幽灵之手 (
checkGhostHand): 检查是否隔墙交互(默认关闭)。 - 空中放置 (
irrPlacement): 检查是否在空中放置方块。
其他检查
杂项设置
enableAPI: 是否启用插件API。config-type: 配置类型标识。enableReportBroadcastToAdmins: 玩家提交报告时是否广播给所有在线管理员。disableAntiCheatXTime: 玩家传送后,暂时禁用反作弊的时间(Tick)。disableACEnderDragon: 被末影龙击中后,暂时禁用反作弊的时间(Tick)。enableModifiedClientBroadcast: 是否在玩家加入时广播其客户端数据包信息。
特定作弊检查
- Baritone(自动寻路)检查: 这是一个复杂的 Beta 版检查,包含多组 (
A,B,C) 阈值设置,如packetSamples,baritoneFlag,baritoneLoopThreshold等。默认关闭,调整需非常谨慎。 - 地面欺骗 (
checkGroundSpoof) - 假延迟 (
checkPingSpoofing): 默认关闭。 - 快速破坏 (
checkNuker) - 玩家延迟检查 (
checkPlayerLag): 如果玩家延迟过高,则忽略其异常活动。 - 服务器TPS检查 (
checkServerTPS): 如果服务器TPS过低,则忽略所有异常活动。
调试与功能
enableMovementReplay: 请勿启用,如需回放功能请使用sacaddons插件。ignoreZeroPing: 是否忽略延迟为0的玩家的异常活动。debugMode: 调试模式。启用后,每次违规都会在聊天中显示玩家触发的具体配置变量名。updateNotifications: 当有权限的管理员加入时,是否通知反作弊插件是否为最新版本。