- Native Minecraft Version:
- 1.13
- Tested Minecraft Versions:
- 1.7
- 1.8
- 1.9
- 1.10
- 1.11
- 1.12
- 1.13
PAC is an anti-cheat system. Currently, it doesn't have check for all hack types but I'll add them soon. You can support us by reporting bugs
Discord: https://discord.gg/zB7797a
GitHub (for issues): Confuser2188/PhoenixAntiCheat
Example usage of actions section:
In this usage, it will cancel all violations and notify admins. If violation is equal or more than 3, it will send message to player. If violation is equal to 5, it will kick him.Code (Text):killaura:
enabled: true
actions: cancel:notify:vl>=3:pacmessage r u using <hack> m8?:vl==5:kick <player> <tag> st0p h4ck1ng n00b
Use ':' character for multiple commands. If you want to use it in message or something else, use '\:' character.
Operators to check violation:
- == (equal to)
- > (greater than)
- < (less than)
- >= (greater than or equal to)
- <= (less than or equal to)
Available internal commands: cancel, notify, pacmessage, pacbroadcast
Available placeholders: <player>, <tag>, <vl>, <ping>, <tps>, <hack> or <module>
The latest version of PAC currently compatible with
Spigot 1.7, 1.8, 1.9, 1.10. 1.11, 1.12, 1.13
Also, PAC supports protocol hack (1.7 - 1.8) and ViaVersion plugin.
If your server version is compatible with PAC, you can freely use it without any plugins.
Current list of permissions
Phoenix.Command - You can use PAC commands if you have this permission
Phoenix.Notification - You can see notifications if you have this permission
Phoenix.Bypass.<module_name> - You can bypass this check if you have this permission
Combat:
Movement:
- KillAura
- ForceField
- TpAura
- Criticals
Player:
- Flight/Fly
- Speed
- Glide
- LongJump
- AirJump
- Blink
- AntiWeb
- BunnyHop
- InventoryMove
- Spider
- Timer
- HeadRoll
- Phase
Chat:
- ImpossibleInteract
- MoreInventory
- Regen
Render:
- Spam
- UnknownCharacters
Other:
- HealthESP/DamageIndicator
- SpamBot
- NBT exploit
WARNING: API is broken on version 2.0.0-pre6
API Version: 1
PACAPI: Main class for API
Usage:
Code (Java):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);
}
}
Methods:
Code (Java):PlayerPAC getPlayer(Player player) // Returns custom player class
int getMajorVersion() // Returns major version of API
int getMinorVersion() // Returns minor version of API
ServerPAC getServer() // Returns custom server class
String getVersionPAC() // Returns version of PAC plugin
Plugin getPlugin() // Returns PAC as a Plugin
void addCheck(Check check) // Adds check to list
boolean removeCheck(Check check) // Removes check from listPlayerViolationEvent: Called when player is failed a check.
Usage:
Code (Java):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: Called when server received a packet from player.
PlayerPacketSentEvent: Called when server sent a packet to player.
Usage:
Code (Java):import me.themuhammed2188.pac.api.event.PlayerPacketReceivedEvent;
import me.themuhammed2188.pac.api.event.PlayerPacketSentEvent;
import me.themuhammed2188.pac.api.utils.Packet;
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 onPacketReceived(PlayerPacketReceivedEvent event)
{
Player player = event.getPlayer();
Packet packet = event.getPacket();
event.setCancelled(true);
}
@EventHandler
public void onPacketSent(PlayerPacketSentEvent event)
{
Player player = event.getPlayer();
Packet packet = event.getPacket();
event.setCancelled(true);
}
}
PhoenixCommandEvent: Called when player used a command that starts with "/pac"
Usage:
Code (Java):import me.themuhammed2188.pac.api.event.PhoenixCommandEvent;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
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 onCommand(PhoenixCommandEvent event)
{
Player player = event.getPlayer();
CommandSender sender = event.getSender();
String[] args = event.getArgs();
String cmd = event.getCmd();
}
}
You need to use addCheck(Check paramCheck) method in PACAPI to enable your module.
Usage:
Code (Java):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)});
}
}
Methods:
Methods:
Code (Java):Player getBukkitPlayer() // Returns org.bukkit.entity.Player
int getCPS() // Returns clicks per second
int getMovementPacketRate() // Returns movement packets per second
int getPing() // Returns NMS ping
boolean isOnGround() // Returns onGround method in PAC.Code (Java):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)
("type", String: "static") ("val", float: val)
("type", String: "reaction") ("avg", float: avg) ("diff", float: diff) ("diffb", float: diffb)
("type", String: "zero") ("cur", float: cur) ("prev", int: 0)
("type", String: "wrong") ("diff", float: diff1) ("diff2" float: diff2)
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)
("type", String: "fastLadder") ("speed", double: ladderSpeed) ("excepted", double: defaultSpeed)
("type", String: "miniJump") ("height", double: distHeight) ("jumpStep", int: jumpStep)
("type", String: "airJump") ("diff", double: adiff)
("type", String: "step") ("diff" double: adiff)
("type", String: "maxHeight") ("maxJumpHeight", double: max) ("height", double: adiff)
("type", String: "fastFall") ("height", double: height)
("type", String: "glide") ("fs", double: fallSpeed)
("type", String: "glide-b")
NBT:
("type", String: "bookPages") ("pages", int: list.size)
("type", String: "bookLength") ("length" int: list.length)

Phoenix Anti-Cheat 2.0.0-pre6
Anti-Hack System.
Recent Updates
- PAC 2.0.0-pre6 Jan 22, 2019
- PAC 2.0.0-pre5 Sep 11, 2018
- PAC 2.0.0-pre4 Sep 10, 2018