// Path: src/main/java/com/nametagedit/plugin/NametagEdit.java
// @Getter
// public class NametagEdit extends JavaPlugin {
// 
//     private static INametagApi api;
// 
//     private NametagHandler handler;
//     private NametagManager manager;
// 
//     public static INametagApi getApi() {
//         return api;
//     }
// 
//     @Override
//     public void onEnable() {
//         testCompat();
//         if (!isEnabled()) return;
// 
//         manager = new NametagManager(this);
//         handler = new NametagHandler(this, manager);
// 
//         PluginManager pluginManager = Bukkit.getPluginManager();
//         if (checkShouldRegister("zPermissions")) {
//             pluginManager.registerEvents(new HookZPermissions(handler), this);
//         } else if (checkShouldRegister("PermissionsEx")) {
//             pluginManager.registerEvents(new HookPermissionsEX(handler), this);
//         } else if (checkShouldRegister("GroupManager")) {
//             pluginManager.registerEvents(new HookGroupManager(handler), this);
//         } else if (checkShouldRegister("LuckPerms")) {
//             pluginManager.registerEvents(new HookLuckPerms(handler), this);
//         }
// 
//         if (pluginManager.getPlugin("LibsDisguises") != null) {
//             pluginManager.registerEvents(new HookLibsDisguise(this), this);
//         }
//         if (pluginManager.getPlugin("Guilds") != null) {
//             pluginManager.registerEvents(new HookGuilds(handler), this);
//         }
// 
//         getCommand("ne").setExecutor(new NametagCommand(handler));
// 
//         if (api == null) {
//             api = new NametagAPI(handler, manager);
//         }
//     }
// 
//     @Override
//     public void onDisable() {
//         manager.reset();
//         handler.getAbstractConfig().shutdown();
//     }
// 
//     void debug(String message) {
//         if (handler != null && handler.debug()) {
//             getLogger().info("[DEBUG] " + message);
//         }
//     }
// 
//     private boolean checkShouldRegister(String plugin) {
//         if (Bukkit.getPluginManager().getPlugin(plugin) == null) return false;
//         getLogger().info("Found " + plugin + "! Hooking in.");
//         return true;
//     }
// 
//     private void testCompat() {
//         PacketWrapper wrapper = new PacketWrapper("TEST", "&f", "", 0, new ArrayList<>(), true);
//         wrapper.send();
//         if (wrapper.error == null) return;
//         Bukkit.getPluginManager().disablePlugin(this);
//         getLogger().severe("\n------------------------------------------------------\n" +
//                 "[WARNING] NametagEdit v" + getDescription().getVersion() + " Failed to load! [WARNING]" +
//                 "\n------------------------------------------------------" +
//                 "\nThis might be an issue with reflection. REPORT this:\n> " +
//                 wrapper.error +
//                 "\nThe plugin will now self destruct.\n------------------------------------------------------");
//     }
// 
// }


import com.nametagedit.plugin.NametagEdit;
import lombok.AllArgsConstructor;
import me.libraryaddict.disguise.events.DisguiseEvent;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.scheduler.BukkitRunnable;
package com.nametagedit.plugin.hooks;


@AllArgsConstructor
public class HookLibsDisguise implements Listener {

// Path: src/main/java/com/nametagedit/plugin/NametagEdit.java
// @Getter
// public class NametagEdit extends JavaPlugin {
// 
//     private static INametagApi api;
// 
//     private NametagHandler handler;
//     private NametagManager manager;
// 
//     public static INametagApi getApi() {
//         return api;
//     }
// 
//     @Override
//     public void onEnable() {
//         testCompat();
//         if (!isEnabled()) return;
// 
//         manager = new NametagManager(this);
//         handler = new NametagHandler(this, manager);
// 
//         PluginManager pluginManager = Bukkit.getPluginManager();
//         if (checkShouldRegister("zPermissions")) {
//             pluginManager.registerEvents(new HookZPermissions(handler), this);
//         } else if (checkShouldRegister("PermissionsEx")) {
//             pluginManager.registerEvents(new HookPermissionsEX(handler), this);
//         } else if (checkShouldRegister("GroupManager")) {
//             pluginManager.registerEvents(new HookGroupManager(handler), this);
//         } else if (checkShouldRegister("LuckPerms")) {
//             pluginManager.registerEvents(new HookLuckPerms(handler), this);
//         }
// 
//         if (pluginManager.getPlugin("LibsDisguises") != null) {
//             pluginManager.registerEvents(new HookLibsDisguise(this), this);
//         }
//         if (pluginManager.getPlugin("Guilds") != null) {
//             pluginManager.registerEvents(new HookGuilds(handler), this);
//         }
// 
//         getCommand("ne").setExecutor(new NametagCommand(handler));
// 
//         if (api == null) {
//             api = new NametagAPI(handler, manager);
//         }
//     }
// 
//     @Override
//     public void onDisable() {
//         manager.reset();
//         handler.getAbstractConfig().shutdown();
//     }
// 
//     void debug(String message) {
//         if (handler != null && handler.debug()) {
//             getLogger().info("[DEBUG] " + message);
//         }
//     }
// 
//     private boolean checkShouldRegister(String plugin) {
//         if (Bukkit.getPluginManager().getPlugin(plugin) == null) return false;
//         getLogger().info("Found " + plugin + "! Hooking in.");
//         return true;
//     }
// 
//     private void testCompat() {
//         PacketWrapper wrapper = new PacketWrapper("TEST", "&f", "", 0, new ArrayList<>(), true);
//         wrapper.send();
//         if (wrapper.error == null) return;
//         Bukkit.getPluginManager().disablePlugin(this);
//         getLogger().severe("\n------------------------------------------------------\n" +
//                 "[WARNING] NametagEdit v" + getDescription().getVersion() + " Failed to load! [WARNING]" +
//                 "\n------------------------------------------------------" +
//                 "\nThis might be an issue with reflection. REPORT this:\n> " +
//                 wrapper.error +
//                 "\nThe plugin will now self destruct.\n------------------------------------------------------");
//     }
// 
// }


// Path: src/main/java/com/nametagedit/plugin/hooks/HookLibsDisguise.java
import com.nametagedit.plugin.NametagEdit;
import lombok.AllArgsConstructor;
import me.libraryaddict.disguise.events.DisguiseEvent;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.scheduler.BukkitRunnable;

package com.nametagedit.plugin.hooks;


@AllArgsConstructor
public class HookLibsDisguise implements Listener {

    private final NametagEdit plugin;