// Path: src/main/java/com/endercrest/voidspawn/VoidSpawn.java
// public class VoidSpawn extends JavaPlugin {
//     public static String prefix = "[&6VS&f] ";
// 
//     public void onEnable(){
//         try {
//             // This is the class we check for as it was added in 1.13 and should remain in place for the long term.
//             Class.forName("org.bukkit.Tag");
//         } catch (ClassNotFoundException e) {
//             log("&cERROR: Unsupported version of Spigot/Paper detected!");
//             log("&cERROR: Disabling plugin! Please update to latest version");
//             log("&cERROR: or use an unsupported version of VoidSpawn");
//             Bukkit.getPluginManager().disablePlugin(this);
//             return;
//         }
// 
//         /* if[PROD] */
//         Metrics metrics = new Metrics(this, 3514);
//         /* end[PROD] */
// 
//         loadConfiguration();
//         ConfigManager.getInstance().setUp(this);
//         TeleportManager.getInstance().setUp(this);
//         ModeManager.getInstance().setUp(this);
//         DetectorManager.getInstance().setUp();
//         getServer().getPluginManager().registerEvents(new VoidListener(this), this);
//         getServer().getPluginManager().registerEvents(new QuitListener(), this);
// 
//         PluginCommand command = getCommand("voidspawn");
//         CommandHandler commandHandler = new CommandHandler(this);
//         command.setExecutor(commandHandler);
//         command.setTabCompleter(new VoidSpawnTabCompleter(commandHandler));
// 
//         Bukkit.getScheduler().runTaskTimer(this, new TouchTracker(), 5, 5);
// 
//         log("&ev" + getDescription().getVersion() + " by EnderCrest enabled");
//     }
// 
//     public void onDisable(){
//         log("&ev" + getDescription().getVersion() + " saving config");
//         ConfigManager.getInstance().saveConfig();
//         log("&ev" + getDescription().getVersion() + " disabled");
//     }
// 
//     public void loadConfiguration(){
//         if(!getConfig().contains("color-logs")){
//             getConfig().addDefault("color-logs", true);
//         }
//         getConfig().options().copyDefaults(true);
//         saveConfig();
//     }
// 
//     /**
//      * Sends Messages to Console
//      *
//      * @param obj The Obj(Message)
//      */
//     public void log(Object obj){
//         if(getConfig().getBoolean("color-logs", true)){
//             getServer().getConsoleSender().sendMessage(MessageUtil.colorize("&3[&d" + getName() + "&3] &r" + obj));
//         }else{
//             Bukkit.getLogger().log(Level.INFO, "[" + getName() + "] " + MessageUtil.colorize((String) obj).replaceAll("(?)\u00a7([a-f0-9k-or])", ""));
//         }
//     }
// 
// }
// 
// Path: src/main/java/com/endercrest/voidspawn/utils/MessageUtil.java
// public class MessageUtil {
// 
//     /**
//      * Add Color to Messages
//      *
//      * @param str The String
//      * @return Coloured String
//      */
//     public static String colorize(String str){
//         return str.replaceAll("(?i)&([a-f0-9k-or])", "\u00a7$1");
//     }
// 
//     public static String colorize(String str, Object... args){
//         return colorize(String.format(str, args));
//     }
// }


import com.endercrest.voidspawn.VoidSpawn;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.endercrest.voidspawn.utils.MessageUtil;
import org.bukkit.entity.Player;
package com.endercrest.voidspawn.commands;




public class HelpCommand implements SubCommand {

    HashMap<String, SubCommand> commands;

    public HelpCommand(HashMap<String, SubCommand> commands){
        this.commands = commands;
    }

    @Override
    public boolean onCommand(Player p, String[] args){
        p.sendMessage(MessageUtil.colorize(VoidSpawn.prefix + "--- &6Help Menu&f ---"));
        for(String command : commands.keySet()){
// Path: src/main/java/com/endercrest/voidspawn/VoidSpawn.java
// public class VoidSpawn extends JavaPlugin {
//     public static String prefix = "[&6VS&f] ";
// 
//     public void onEnable(){
//         try {
//             // This is the class we check for as it was added in 1.13 and should remain in place for the long term.
//             Class.forName("org.bukkit.Tag");
//         } catch (ClassNotFoundException e) {
//             log("&cERROR: Unsupported version of Spigot/Paper detected!");
//             log("&cERROR: Disabling plugin! Please update to latest version");
//             log("&cERROR: or use an unsupported version of VoidSpawn");
//             Bukkit.getPluginManager().disablePlugin(this);
//             return;
//         }
// 
//         /* if[PROD] */
//         Metrics metrics = new Metrics(this, 3514);
//         /* end[PROD] */
// 
//         loadConfiguration();
//         ConfigManager.getInstance().setUp(this);
//         TeleportManager.getInstance().setUp(this);
//         ModeManager.getInstance().setUp(this);
//         DetectorManager.getInstance().setUp();
//         getServer().getPluginManager().registerEvents(new VoidListener(this), this);
//         getServer().getPluginManager().registerEvents(new QuitListener(), this);
// 
//         PluginCommand command = getCommand("voidspawn");
//         CommandHandler commandHandler = new CommandHandler(this);
//         command.setExecutor(commandHandler);
//         command.setTabCompleter(new VoidSpawnTabCompleter(commandHandler));
// 
//         Bukkit.getScheduler().runTaskTimer(this, new TouchTracker(), 5, 5);
// 
//         log("&ev" + getDescription().getVersion() + " by EnderCrest enabled");
//     }
// 
//     public void onDisable(){
//         log("&ev" + getDescription().getVersion() + " saving config");
//         ConfigManager.getInstance().saveConfig();
//         log("&ev" + getDescription().getVersion() + " disabled");
//     }
// 
//     public void loadConfiguration(){
//         if(!getConfig().contains("color-logs")){
//             getConfig().addDefault("color-logs", true);
//         }
//         getConfig().options().copyDefaults(true);
//         saveConfig();
//     }
// 
//     /**
//      * Sends Messages to Console
//      *
//      * @param obj The Obj(Message)
//      */
//     public void log(Object obj){
//         if(getConfig().getBoolean("color-logs", true)){
//             getServer().getConsoleSender().sendMessage(MessageUtil.colorize("&3[&d" + getName() + "&3] &r" + obj));
//         }else{
//             Bukkit.getLogger().log(Level.INFO, "[" + getName() + "] " + MessageUtil.colorize((String) obj).replaceAll("(?)\u00a7([a-f0-9k-or])", ""));
//         }
//     }
// 
// }
// 
// Path: src/main/java/com/endercrest/voidspawn/utils/MessageUtil.java
// public class MessageUtil {
// 
//     /**
//      * Add Color to Messages
//      *
//      * @param str The String
//      * @return Coloured String
//      */
//     public static String colorize(String str){
//         return str.replaceAll("(?i)&([a-f0-9k-or])", "\u00a7$1");
//     }
// 
//     public static String colorize(String str, Object... args){
//         return colorize(String.format(str, args));
//     }
// }


// Path: src/main/java/com/endercrest/voidspawn/commands/HelpCommand.java
import com.endercrest.voidspawn.VoidSpawn;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.endercrest.voidspawn.utils.MessageUtil;
import org.bukkit.entity.Player;

package com.endercrest.voidspawn.commands;




public class HelpCommand implements SubCommand {

    HashMap<String, SubCommand> commands;

    public HelpCommand(HashMap<String, SubCommand> commands){
        this.commands = commands;
    }

    @Override
    public boolean onCommand(Player p, String[] args){
        p.sendMessage(MessageUtil.colorize(VoidSpawn.prefix + "--- &6Help Menu&f ---"));
        for(String command : commands.keySet()){
            p.sendMessage(MessageUtil.colorize(VoidSpawn.prefix + commands.get(command).helpInfo()));