Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package eu.antitab;
- import java.util.List;
- import org.bukkit.command.Command;
- import org.bukkit.ChatColor;
- import java.util.Map;
- import org.bukkit.entity.Player;
- import org.bukkit.event.player.PlayerCommandPreprocessEvent;
- import com.comphenix.protocol.ProtocolManager;
- import com.comphenix.protocol.events.PacketListener;
- import org.bukkit.event.EventPriority;
- import org.bukkit.event.EventHandler;
- import java.util.Iterator;
- import org.bukkit.command.ConsoleCommandSender;
- import com.comphenix.protocol.events.PacketContainer;
- import com.comphenix.protocol.reflect.FieldAccessException;
- import org.bukkit.command.CommandSender;
- import com.comphenix.protocol.events.PacketEvent;
- import org.bukkit.plugin.Plugin;
- import com.comphenix.protocol.events.PacketAdapter;
- import com.comphenix.protocol.PacketType;
- import com.comphenix.protocol.events.ListenerPriority;
- import com.comphenix.protocol.ProtocolLibrary;
- import org.bukkit.Bukkit;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import java.io.File;
- import java.util.HashMap;
- import org.bukkit.configuration.file.FileConfiguration;
- import org.bukkit.event.Listener;
- import org.bukkit.plugin.java.JavaPlugin;
- public class AntiTab extends JavaPlugin implements Listener
- {
- FileConfiguration config;
- Boolean everyTab;
- Boolean announceConsole;
- String noPerm;
- String configReloaded;
- String successfullyTabAdd;
- String successfullyTabDelete;
- String successfullyChatAdd;
- String successfullyChatDelete;
- String invalidArgs;
- HashMap<String, String> replacements;
- public AntiTab() {
- this.replacements = new HashMap<String, String>();
- }
- public void onEnable() {
- if (!new File(this.getDataFolder(), "config.yml").exists()) {
- this.saveDefaultConfig();
- }
- this.config = this.getConfig();
- this.everyTab = this.config.getBoolean("antitab.everyTab");
- if (this.getServer().getPluginManager().getPlugin("ProtocolLib") == null) {
- Logger.getLogger("Minecraft").log(Level.SEVERE, "Plugin dependency ProtocolLib not found, disabling plugin!");
- Bukkit.getPluginManager().disablePlugin(this.getServer().getPluginManager().getPlugin(this.getDescription().getName()));
- }
- final ProtocolManager protocolManager = ProtocolLibrary.getProtocolManager();
- protocolManager.addPacketListener((PacketListener)new PacketAdapter(this, ListenerPriority.NORMAL, new PacketType[] { PacketType.Play.Client.TAB_COMPLETE }) {
- @EventHandler(priority = EventPriority.HIGHEST)
- public void onPacketReceiving(final PacketEvent event) {
- if (event.getPacketType() == PacketType.Play.Client.TAB_COMPLETE) {
- try {
- final PacketContainer packet = event.getPacket();
- final String message = ((String)packet.getSpecificModifier((Class)String.class).read(0)).toLowerCase();
- AntiTab.this.announceConsole = AntiTab.this.config.getBoolean("antitab.announceConsole");
- final ConsoleCommandSender console = AntiTab.this.getServer().getConsoleSender();
- if (AntiTab.this.announceConsole) {
- if (event.getPlayer().hasPermission("antitab.commandtab.bypass")) {
- AntiTab.this.replacements.put("%p", event.getPlayer().getName());
- AntiTab.this.replacements.put("%c", message);
- }
- else {
- for (final String cmd : AntiTab.this.config.getStringList("antitab.blockedcmdsInTab")) {
- if (message.startsWith(cmd)) {
- AntiTab.this.replacements.put("%p", event.getPlayer().getName());
- AntiTab.this.replacements.put("%c", message);
- Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "horizon notify " + event.getPlayer().getName() + " §bsuspicious tab complete :\n§c " + message + "[TAB]");
- }
- }
- }
- }
- if (event.getPlayer().hasPermission("antitab.commandtab.bypass")) {
- return;
- }
- if (AntiTab.this.everyTab) {
- if (message.startsWith("") && !message.contains(" ")) {
- event.setCancelled(true);
- }
- }
- else {
- for (final String cmd : AntiTab.this.config.getStringList("antitab.blockedcmdsInTab")) {
- if (message.startsWith("$") && !message.contains(" ")) {
- event.setCancelled(true);
- }
- else if (message.startsWith(cmd)) {
- event.setCancelled(true);
- }
- if (message.contains("$") && !message.contains(" ")) {
- event.setCancelled(true);
- }
- }
- }
- }
- catch (FieldAccessException e) {
- AntiTab.this.getLogger().log(Level.SEVERE, "Couldn't access field.", (Throwable)e);
- }
- }
- }
- });
- this.noPerm = this.config.getString("antitab.messages.noPerm").replaceAll("&", "§");
- this.configReloaded = this.config.getString("antitab.messages.configReloaded").replaceAll("&", "§");
- this.successfullyTabAdd = this.config.getString("antitab.messages.successfullyTabAdd").replaceAll("&", "§");
- this.successfullyTabDelete = this.config.getString("antitab.messages.successfullyTabDelete").replaceAll("&", "§");
- this.successfullyChatAdd = this.config.getString("antitab.messages.successfullyChatAdd").replaceAll("&", "§");
- this.successfullyChatDelete = this.config.getString("antitab.messages.successfullyChatDelete").replaceAll("&", "§");
- this.invalidArgs = this.config.getString("antitab.messages.invalidArgs").replaceAll("&", "§");
- Bukkit.getServer().getPluginManager().registerEvents((Listener)this, (Plugin)this);
- }
- @EventHandler(priority = EventPriority.HIGHEST)
- public void onCommandPreProcess(final PlayerCommandPreprocessEvent event) {
- final Player player = event.getPlayer();
- final String[] msg = event.getMessage().split(" ");
- if (!player.hasPermission("antitab.commandchat.bypass")) {
- for (final String cmd : this.config.getStringList("antitab.blockedcmdsInChat")) {
- if (msg[0].startsWith(cmd)) {
- this.replacements.put("%perm%", "antitab.commandchat.bypass");
- this.sendMessage2(this.noPerm, (CommandSender)player, this.replacements);
- event.setCancelled(true);
- }
- }
- }
- }
- public void sendMessage(final String configPath, final CommandSender sender, final HashMap<String, String> replacements) {
- if (sender != null) {
- String msg = this.getConfig().getString(configPath);
- if (replacements != null) {
- for (final Map.Entry<String, String> a : replacements.entrySet()) {
- msg = msg.replace(a.getKey(), a.getValue());
- }
- }
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', msg));
- }
- }
- public void sendMessage2(String msg, final CommandSender sender, final HashMap<String, String> replacements) {
- if (sender != null) {
- if (replacements != null) {
- for (final Map.Entry<String, String> a : replacements.entrySet()) {
- msg = msg.replace(a.getKey(), a.getValue());
- }
- }
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', msg));
- }
- }
- public boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) {
- if (cmd.getName().equalsIgnoreCase("antitab") && sender.hasPermission("antitab.admin")) {
- if (args.length == 1) {
- final String command = args[0];
- if (command.equalsIgnoreCase("reload")) {
- if (sender.hasPermission("antitab.admin.reload")) {
- this.reloadConfig();
- sender.sendMessage(this.configReloaded);
- }
- }
- else if (command.equalsIgnoreCase("blockedtabcmds")) {
- if (sender.hasPermission("antitab.listtabcmds")) {
- int index = 0;
- sender.sendMessage(this.getConfig().getString("antitab.messages.listTabcmds.head").replaceAll("&", "§"));
- for (final String cmdlist : this.config.getStringList("antitab.blockedcmdsInTab")) {
- ++index;
- this.replacements.put("%index%", String.valueOf(index));
- this.replacements.put("%cmd%", cmdlist);
- this.sendMessage("antitab.messages.listTabcmds.item", sender, this.replacements);
- }
- sender.sendMessage(this.getConfig().getString("antitab.messages.listTabcmds.bottom").replaceAll("&", "§"));
- }
- }
- else if (command.equalsIgnoreCase("blockedchatcmds")) {
- if (sender.hasPermission("antitab.listchatcmds")) {
- int index = 0;
- sender.sendMessage(this.getConfig().getString("antitab.messages.listChatcmds.head").replaceAll("&", "§"));
- for (final String cmdlist : this.config.getStringList("antitab.blockedcmdsInChat")) {
- ++index;
- this.replacements.put("%index%", String.valueOf(index));
- this.replacements.put("%cmd%", cmdlist);
- this.sendMessage("antitab.messages.listChatcmds.item", sender, this.replacements);
- }
- sender.sendMessage(this.getConfig().getString("antitab.messages.listChatcmds.bottom").replaceAll("&", "§"));
- }
- }
- else if (command.equalsIgnoreCase("help")) {
- sender.sendMessage("§c**********§6AntiTab§c************");
- sender.sendMessage("§3| §6/antitab reload §3| §9reload the config");
- sender.sendMessage("§3| §6/antitab blockedtabcmds §3| §9see the blocked tab commands");
- sender.sendMessage("§3| §6/antitab blockedchatcmds §3| §9see the blocked chat commands");
- sender.sendMessage("§3| §6/antitab addtabcmd <cmd> §3| §9block a tab command");
- sender.sendMessage("§3| §6/antitab deltabcmd <cmd> §3| §9unblock a tab command");
- sender.sendMessage("§3| §6/antitab addchatcmd <cmd> §3| §9block a chat command");
- sender.sendMessage("§3| §6/antitab delchatcmd <cmd> §3| §9unblock a chat command");
- sender.sendMessage("§c*****************************");
- }
- }
- else if (args.length == 2) {
- final String command = args[0];
- final String commandToAdd = args[1];
- if (command.equalsIgnoreCase("addtabcmd")) {
- if (sender.hasPermission("antitab.admin.addtabcmd")) {
- boolean cmdExists = false;
- final List<String> tabcmds = (List<String>)this.config.getStringList("antitab.blockedcmdsInTab");
- for (final String tabcmd : tabcmds) {
- if (tabcmd.equalsIgnoreCase(commandToAdd.replaceAll("_", " "))) {
- cmdExists = true;
- break;
- }
- }
- if (!cmdExists) {
- tabcmds.add(commandToAdd.replaceAll("_", " "));
- this.getConfig().set("antitab.blockedcmdsInTab", (Object)tabcmds);
- this.saveConfig();
- this.reloadConfig();
- }
- sender.sendMessage(this.successfullyTabAdd.replaceAll("%cmd%", String.valueOf(args[1]).replaceAll("_", " ")));
- }
- }
- else if (command.equalsIgnoreCase("deltabcmd")) {
- if (sender.hasPermission("antitab.admin.deltabcmd")) {
- boolean cmdExists = false;
- final List<String> tabcmds = (List<String>)this.config.getStringList("antitab.blockedcmdsInTab");
- for (final String tabcmd : tabcmds) {
- if (tabcmd.equalsIgnoreCase(commandToAdd.replaceAll("_", " "))) {
- cmdExists = true;
- break;
- }
- }
- if (!cmdExists) {
- tabcmds.remove(commandToAdd.replaceAll("_", " "));
- this.getConfig().set("antitab.blockedcmdsInTab", (Object)tabcmds);
- this.saveConfig();
- this.reloadConfig();
- }
- sender.sendMessage(this.successfullyTabDelete.replace("%cmd%", String.valueOf(args[1]).replaceAll("_", " ")));
- }
- }
- else if (command.equalsIgnoreCase("addchatcmd")) {
- if (sender.hasPermission("antitab.admin.addchatcmd")) {
- boolean cmdExists = false;
- final List<String> chatcmds = (List<String>)this.config.getStringList("antitab.blockedcmdsInChat");
- for (final String chatcmd : chatcmds) {
- if (chatcmd.equalsIgnoreCase(commandToAdd.replaceAll("_", " "))) {
- cmdExists = true;
- break;
- }
- }
- if (!cmdExists) {
- chatcmds.add(commandToAdd.replaceAll("_", " "));
- this.getConfig().set("antitab.blockedcmdsInChat", (Object)chatcmds);
- this.saveConfig();
- this.reloadConfig();
- }
- sender.sendMessage(this.successfullyChatAdd.replaceAll("%cmd%", String.valueOf(args[1]).replaceAll("_", " ")));
- }
- }
- else if (command.equalsIgnoreCase("delchatcmd") && sender.hasPermission("antitab.admin.delchatcmd")) {
- boolean cmdExists = false;
- final List<String> chatcmds = (List<String>)this.config.getStringList("antitab.blockedcmdsInChat");
- for (final String chatcmd : chatcmds) {
- if (chatcmd.equalsIgnoreCase(commandToAdd.replaceAll("_", " "))) {
- cmdExists = true;
- break;
- }
- }
- if (!cmdExists) {
- chatcmds.remove(commandToAdd.replaceAll("_", " "));
- this.getConfig().set("antitab.blockedcmdsInChat", (Object)chatcmds);
- this.saveConfig();
- this.reloadConfig();
- }
- sender.sendMessage(this.successfullyChatDelete.replaceAll("%cmd%", String.valueOf(args[1]).replaceAll("_", " ")));
- }
- }
- else {
- sender.sendMessage(this.invalidArgs);
- }
- }
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement