// Path: src/main/java/de/jeter/chatex/ChatEx.java
// public class ChatEx extends JavaPlugin {
// 
//     private static ChatEx INSTANCE;
//     private UpdateChecker updatechecker = null;
// 
//     @Override
//     public void onEnable() {
//         INSTANCE = this;
// 
//         Config.load();
//         Locales.load();
//         PluginManager.load();
//         ChatLogger.load();
//         RGBColors.load();
// 
//         getServer().getPluginManager().registerEvents(new ChatListener(), this);
//         getServer().getPluginManager().registerEvents(new PlayerListener(), this);
//         getCommand("chatex").setExecutor(new CommandHandler());
// 
//         if (Config.CHECK_UPDATE.getBoolean()) {
//             updatechecker = new UpdateChecker(this, 71041);
//         }
// 
//         ChannelHandler.load();
// 
//         if (Config.B_STATS.getBoolean()) {
//             Metrics metrics = new Metrics(this, 7744);
//             getLogger().info("Thanks for using bstats, it was enabled!");
//         }
// 
//         getLogger().info("is now enabled!");
//     }
// 
//     @Override
//     public void onDisable() {
//         ChatLogger.close();
//         getServer().getScheduler().cancelTasks(this);
//         getLogger().info("is now disabled!");
//     }
// 
//     public static ChatEx getInstance() {
//         return INSTANCE;
//     }
// 
//     public UpdateChecker getUpdateChecker() {
//         return this.updatechecker;
//     }
// }
// 
// Path: src/main/java/de/jeter/chatex/plugins/PluginManager.java
// public class PluginManager implements PermissionsPlugin {
// 
//     private static PermissionsPlugin handler;
//     private static PluginManager INSTANCE;
// 
//     public static PermissionsPlugin getInstance() {
//         return INSTANCE;
//     }
// 
//     public static void load() {
//         INSTANCE = new PluginManager();
//         if (HookManager.checkVault() && Vault.setupChat()) {
//             handler = new Vault();
//         } else {
//             handler = new Nothing();
//         }
//         ChatEx.getInstance().getLogger().info("Successfully hooked into: " + handler.getName());
// 
//         if (HookManager.checkPlaceholderAPI()) {
//             ChatEx.getInstance().getLogger().info("Hooked into PlaceholderAPI");
//         }
//     }
// 
//     @Override
//     public String getName() {
//         return handler.getName();
//     }
// 
//     @Override
//     public String getPrefix(Player p) {
//         return handler.getPrefix(p);
//     }
// 
//     @Override
//     public String getSuffix(Player p) {
//         return handler.getSuffix(p);
//     }
// 
//     @Override
//     public String[] getGroupNames(Player p) {
//         return handler.getGroupNames(p);
//     }
// 
//     @Override
//     public String getMessageFormat(Player p) {
//         return Utils.replaceColors(handler.getMessageFormat(p));
//     }
// 
//     @Override
//     public String getGlobalMessageFormat(Player p) {
//         return Utils.replaceColors(handler.getGlobalMessageFormat(p));
//     }
// }


import de.jeter.chatex.ChatEx;
import de.jeter.chatex.plugins.PluginManager;
import me.clip.placeholderapi.PlaceholderAPI;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;

        if (HookManager.checkPlaceholderAPI()) {
            result = PlaceholderAPI.setPlaceholders(player, result);
        }

        result = result.replace("%displayname", player.getDisplayName());
        result = result.replace("%prefix", PluginManager.getInstance().getPrefix(player));
        result = result.replace("%suffix", PluginManager.getInstance().getSuffix(player));
        result = result.replace("%player", player.getName());
        result = result.replace("%world", player.getWorld().getName());
        result = result.replace("%group", PluginManager.getInstance().getGroupNames(player).length > 0 ? PluginManager.getInstance().getGroupNames(player)[0] : "none");
        result = replaceColors(result);

        return result;
    }

    public static String escape(String string) {
        return string.replace("%", "%%");
    }

    public static boolean checkForBypassString(String message) {
        for (String block : Config.ADS_BYPASS.getStringList()) {
            if (message.toLowerCase().contains(block.toLowerCase())) {
                return true;
            }
        }
        return false;
    }

    public static void notifyOps(String msg) {
// Path: src/main/java/de/jeter/chatex/ChatEx.java
// public class ChatEx extends JavaPlugin {
// 
//     private static ChatEx INSTANCE;
//     private UpdateChecker updatechecker = null;
// 
//     @Override
//     public void onEnable() {
//         INSTANCE = this;
// 
//         Config.load();
//         Locales.load();
//         PluginManager.load();
//         ChatLogger.load();
//         RGBColors.load();
// 
//         getServer().getPluginManager().registerEvents(new ChatListener(), this);
//         getServer().getPluginManager().registerEvents(new PlayerListener(), this);
//         getCommand("chatex").setExecutor(new CommandHandler());
// 
//         if (Config.CHECK_UPDATE.getBoolean()) {
//             updatechecker = new UpdateChecker(this, 71041);
//         }
// 
//         ChannelHandler.load();
// 
//         if (Config.B_STATS.getBoolean()) {
//             Metrics metrics = new Metrics(this, 7744);
//             getLogger().info("Thanks for using bstats, it was enabled!");
//         }
// 
//         getLogger().info("is now enabled!");
//     }
// 
//     @Override
//     public void onDisable() {
//         ChatLogger.close();
//         getServer().getScheduler().cancelTasks(this);
//         getLogger().info("is now disabled!");
//     }
// 
//     public static ChatEx getInstance() {
//         return INSTANCE;
//     }
// 
//     public UpdateChecker getUpdateChecker() {
//         return this.updatechecker;
//     }
// }
// 
// Path: src/main/java/de/jeter/chatex/plugins/PluginManager.java
// public class PluginManager implements PermissionsPlugin {
// 
//     private static PermissionsPlugin handler;
//     private static PluginManager INSTANCE;
// 
//     public static PermissionsPlugin getInstance() {
//         return INSTANCE;
//     }
// 
//     public static void load() {
//         INSTANCE = new PluginManager();
//         if (HookManager.checkVault() && Vault.setupChat()) {
//             handler = new Vault();
//         } else {
//             handler = new Nothing();
//         }
//         ChatEx.getInstance().getLogger().info("Successfully hooked into: " + handler.getName());
// 
//         if (HookManager.checkPlaceholderAPI()) {
//             ChatEx.getInstance().getLogger().info("Hooked into PlaceholderAPI");
//         }
//     }
// 
//     @Override
//     public String getName() {
//         return handler.getName();
//     }
// 
//     @Override
//     public String getPrefix(Player p) {
//         return handler.getPrefix(p);
//     }
// 
//     @Override
//     public String getSuffix(Player p) {
//         return handler.getSuffix(p);
//     }
// 
//     @Override
//     public String[] getGroupNames(Player p) {
//         return handler.getGroupNames(p);
//     }
// 
//     @Override
//     public String getMessageFormat(Player p) {
//         return Utils.replaceColors(handler.getMessageFormat(p));
//     }
// 
//     @Override
//     public String getGlobalMessageFormat(Player p) {
//         return Utils.replaceColors(handler.getGlobalMessageFormat(p));
//     }
// }


// Path: src/main/java/de/jeter/chatex/utils/Utils.java
import de.jeter.chatex.ChatEx;
import de.jeter.chatex.plugins.PluginManager;
import me.clip.placeholderapi.PlaceholderAPI;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;


        if (HookManager.checkPlaceholderAPI()) {
            result = PlaceholderAPI.setPlaceholders(player, result);
        }

        result = result.replace("%displayname", player.getDisplayName());
        result = result.replace("%prefix", PluginManager.getInstance().getPrefix(player));
        result = result.replace("%suffix", PluginManager.getInstance().getSuffix(player));
        result = result.replace("%player", player.getName());
        result = result.replace("%world", player.getWorld().getName());
        result = result.replace("%group", PluginManager.getInstance().getGroupNames(player).length > 0 ? PluginManager.getInstance().getGroupNames(player)[0] : "none");
        result = replaceColors(result);

        return result;
    }

    public static String escape(String string) {
        return string.replace("%", "%%");
    }

    public static boolean checkForBypassString(String message) {
        for (String block : Config.ADS_BYPASS.getStringList()) {
            if (message.toLowerCase().contains(block.toLowerCase())) {
                return true;
            }
        }
        return false;
    }

    public static void notifyOps(String msg) {
        for (Player op : ChatEx.getInstance().getServer().getOnlinePlayers()) {