服务器使用量
未统计
服务玩家数
未统计
下载量
585,312
插件详细介绍
PAC 是一款反作弊系统。目前它尚未覆盖所有作弊类型,但未来会持续添加。您可以通过 Discord 报告漏洞或通过 GitHub 提交问题来支持我们。
基本信息
- Discord 支持: https://discord.gg/zB7797a
- GitHub 问题反馈: Confuser2188/PhoenixAntiCheat
- 警告: 版本 2.0.0-pre6 的 API 已损坏,请谨慎使用。
兼容版本
PAC 最新版本兼容以下 Spigot 版本
- 1.7, 1.8, 1.9, 1.10, 1.11, 1.12, 1.13
- 支持协议 Hack (1.7 - 1.8) 及 ViaVersion 插件。
- 若您的服务器版本兼容,可直接使用,无需额外插件。
配置说明
配置中的 actions 部分用于定义检测到作弊时的响应动作。
动作配置示例
killaura:
enabled: true
actions: cancel:notify:vl>=3:pacmessage r u using <hack> m8?:vl==5:kick <player> <tag> st0p h4ck1ng n00b- 此配置会 取消 所有违规操作并 通知 管理员。
- 当违规等级
vl >= 3时,会向玩家发送消息。 - 当违规等级
vl == 5时,会踢出该玩家。
语法规则
- 使用
:分隔多个命令。若需在消息中使用冒号,请使用转义符\:。 - 支持以下运算符来检查违规等级
vl: ==(等于)>(大于)<(小于)>=(大于或等于)<=(小于或等于)
可用内部命令
cancel- 取消违规操作notify- 通知管理员pacmessage- 向玩家发送私信pacbroadcast- 向服务器广播消息
可用占位符
<player>- 玩家名<tag>- 作弊模块标签<vl>- 当前违规等级<ping>- 玩家延迟<tps>- 服务器 TPS<hack>或<module>- 作弊模块名称
权限列表
Phoenix.Command- 允许使用 PAC 命令Phoenix.Notification- 接收作弊检测通知Phoenix.Bypass.<module_name>- 绕过指定模块的检测 (将<module_name>替换为具体模块名,如Phoenix.Bypass.Flight)
检测的作弊类型
战斗类
- KillAura
- ForceField
- TpAura
- Criticals
移动类
- Flight/Fly
- Speed
- Glide
- LongJump
- AirJump
- Blink
- AntiWeb
- BunnyHop
- InventoryMove
- Spider
- Timer
- HeadRoll
- Phase
玩家类
- ImpossibleInteract
- MoreInventory
- Regen
聊天类
- Spam
- UnknownCharacters
渲染类
- HealthESP/DamageIndicator
其他类
- SpamBot
- NBT exploit
API 开发指南
API 版本: 1
PACAPI 主类
这是使用 API 的入口类。
import me.themuhammed2188.pac.api.PACAPI;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin {
PACAPI pacapi;
public void onEnable() {
pacapi = new PACAPI(this);
}
}主要方法
PlayerPAC getPlayer(Player player)- 返回自定义玩家类int getMajorVersion()- 返回 API 主版本号int getMinorVersion()- 返回 API 次版本号ServerPAC getServer()- 返回自定义服务器类String getVersionPAC()- 返回 PAC 插件版本Plugin getPlugin()- 将 PAC 作为 Plugin 对象返回void addCheck(Check check)- 将检测模块添加到列表boolean removeCheck(Check check)- 从列表中移除检测模块
事件
PlayerViolationEvent
当玩家触发违规检测时调用。
import me.themuhammed2188.pac.api.HackType;
import me.themuhammed2188.pac.api.event.PlayerViolationEvent;
import me.themuhammed2188.pac.api.utils.Attribute;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin implements Listener {
public void onEnable() {
Bukkit.getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onViolation(PlayerViolationEvent event) {
Player player = event.getPlayer();
HackType hackType = event.getHackType();
int VL = event.getVL();
Attribute[] attributes = event.getAttributes();
event.setCancelled(true);
}
}PlayerPacketReceivedEvent / PlayerPacketSentEvent
当服务器收到或向玩家发送数据包时调用。
import me.themuhammed2188.pac.api.event.PlayerPacketReceivedEvent;
import me.themuhammed2188.pac.api.event.PlayerPacketSentEvent;
import me.themuhammed2188.pac.api.utils.Packet;
// ... 其他导入
@EventHandler
public void onPacketReceived(PlayerPacketReceivedEvent event) {
Player player = event.getPlayer();
Packet packet = event.getPacket();
event.setCancelled(true);
}
// PlayerPacketSentEvent 用法类似PhoenixCommandEvent
当玩家使用以 /pac 开头的命令时调用。
import me.themuhammed2188.pac.api.event.PhoenixCommandEvent;
// ... 其他导入
@EventHandler
public void onCommand(PhoenixCommandEvent event) {
Player player = event.getPlayer();
CommandSender sender = event.getSender();
String[] args = event.getArgs();
String cmd = event.getCmd();
}自定义检测模块 (Check)
您需要使用 PACAPI 中的 addCheck(Check paramCheck) 方法来启用您的模块。
import me.themuhammed2188.pac.api.Check;
import me.themuhammed2188.pac.api.utils.Attribute;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerMoveEvent;
public class TestCheck extends Check {
public TestCheck() {
super("Test");
}
@EventHandler
public void onMove(PlayerMoveEvent e) {
sendNotification(e.getPlayer(), "moving = hacking", 1, new Attribute[]{ Attribute.get("type", 999) });
}
}Check 类方法
String getName()- 获取检测模块名称void sendNotification(Player player, String info, int vl, Attribute[] attributes)- 发送违规通知
PlayerPAC 类
用于获取玩家相关数据。
主要方法
Player getBukkitPlayer()- 返回org.bukkit.entity.Player对象int getCPS()- 返回每秒点击次数int getMovementPacketRate()- 返回每秒移动数据包数量int getPing()- 返回 NMS 延迟boolean isOnGround()- 返回 PAC 中的着地状态
ServerPAC 类
用于获取服务器信息。
主要方法
List<Plugin> getPlugins()- 返回 PAC 插件列表double getTPS()- 返回服务器每秒刻数String getVersion()- 返回服务器版本String getMinecraftVersion()- 返回服务器的 Minecraft 版本String getSpigotName()- 返回服务器构建名称
Attribute 列表
以下为各检测模块可用的 Attribute 示例,用于在事件中传递详细信息:
// MorePackets 模块
("type", String: "instant")
("rate", int: rate)
("expected", expected)
("type", String: "sendRate")
("rate", int: preRate)
("expected", expected)
// ASCII 模块
("msg", message)
// Inventory 模块
("type", String: "move")
("type", String: "hit")
// KillAura 模块
("type", String: "autoBlock")
("type", String: "forcefield")
("count", int: count)
("type", String: "instant")
("prev", fp)
("cur", float: diff)
// ... 更多 KillAura 属性
// HeadRoll 模块
("pitch", float: pitch)
// Phase 模块
("block", org.bukkit.block.Block: b)
// Speed 模块
("flags", String: flags)
("speed", double: dist)
("expected", double: expected)
// Flight 模块
("type", String: "levitationSpeed")
("speed", double: speed)
("expected", double: expected)
// ... 更多 Flight 属性
// NBT 模块
("type", String: "bookPages")
("pages", int: list.size)
("type", String: "bookLength")
("length", int: list.length)测试支持版本
版本分布
基本信息
插件名称
Phoenix Anti-Cheat
作者
TheMuhammed2188
平台
Bukkit / Spigot
支持版本
1.7 - 1.13
点赞数
46
最近版本
暂无数据
-