PAC 是一款反作弊系统。目前它尚未覆盖所有作弊类型,但未来会持续添加。您可以通过 Discord 报告漏洞或通过 GitHub 提交问题来支持我们。
配置中的 actions 部分用于定义检测到作弊时的响应动作。
killaura:
enabled: true
actions: cancel:notify:vl>=3:pacmessage r u using <hack> m8?:vl==5:kick <player> <tag> st0p h4ck1ng n00bvl >= 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)API 版本: 1
这是使用 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) - 从列表中移除检测模块当玩家触发违规检测时调用。
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);
}
}当服务器收到或向玩家发送数据包时调用。
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 用法类似当玩家使用以 /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();
}您需要使用 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) });
}
}String getName() - 获取检测模块名称void sendNotification(Player player, String info, int vl, Attribute[] attributes) - 发送违规通知用于获取玩家相关数据。
Player getBukkitPlayer() - 返回 org.bukkit.entity.Player 对象int getCPS() - 返回每秒点击次数int getMovementPacketRate() - 返回每秒移动数据包数量int getPing() - 返回 NMS 延迟boolean isOnGround() - 返回 PAC 中的着地状态用于获取服务器信息。
List<Plugin> getPlugins() - 返回 PAC 插件列表double getTPS() - 返回服务器每秒刻数String getVersion() - 返回服务器版本String getMinecraftVersion() - 返回服务器的 Minecraft 版本String getSpigotName() - 返回服务器构建名称以下为各检测模块可用的 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)友情链接: 网易我的世界 | 泰拉瑞亚 | ocent云计算 | 米饭Minecraft插件文档 | 友链合作
历史访问人次:3,030,817 | 今日访问人次:14,945 | 昨日访问人次:11,147
独立 IP:5,155 | 最近24小时独立访客:7,289
Copyright © 2019-2026 我的世界服务器列表站. All rights reserved.
❤ Powered by GermMC 京ICP备17023959号-6