// Path: Bssentials-Common/src/main/java/bssentials/Bssentials.java
// public class Bssentials {
// 
//     private static IBssentials i;
//     public static File warpdir;
// 
//     public static File DATA_FOLDER;
// 
//     public static IBssentials getInstance() {
//         return i;
//     }
// 
//     public static void setInstance(IBssentials bss, File dataFolder) {
//         if (null == i) {
//             Bssentials.i = bss;
//             Bssentials.DATA_FOLDER = dataFolder;
//         }
//     }
// 
//     // Below copied from Bukkit
//     public static String translateAlternateColorCodes(char altColorChar, String textToTranslate) {
//         char[] b = textToTranslate.toCharArray();
//         for (int i = 0; i < b.length - 1; i++) {
//             if (b[i] == altColorChar && "0123456789AaBbCcDdEeFfKkLlMmNnOoRr".indexOf(b[i+1]) > -1) {
//                 b[i] = '\u00A7';
//                 b[i+1] = Character.toLowerCase(b[i+1]);
//             }
//         }
//         return new String(b);
//     }
// 
// }
// 
// Path: Bssentials-Common/src/main/java/bssentials/include/FileConfiguration.java
// public abstract class FileConfiguration extends MemorySection implements Configuration {
// 
//     protected Configuration defaults;
//     protected FileConfigurationOptions options;
// 
//     public FileConfiguration() {}
// 
//     public FileConfiguration(Configuration defaults) {
//         this.defaults = defaults;
//     }
// 
//     public void save(File file) throws IOException {
//         Files.createParentDirs(file);
//         String data = saveToString();
//         Writer writer = new OutputStreamWriter(new FileOutputStream(file), Charsets.UTF_8);
// 
//         try {
//             writer.write(data);
//         } finally {
//             writer.close();
//         }
//     }
// 
//     public void save(String file) throws IOException {
//         save(new File(file));
//     }
// 
//     public abstract String saveToString();
// 
//     public void load(File file) throws FileNotFoundException, IOException, InvalidConfigurationException {
//         final FileInputStream stream = new FileInputStream(file);
//         load(new InputStreamReader(stream, Charsets.UTF_8));
//     }
// 
//     public void load(Reader reader) throws IOException, InvalidConfigurationException {
//         BufferedReader input = reader instanceof BufferedReader ? (BufferedReader) reader : new BufferedReader(reader);
//         StringBuilder builder = new StringBuilder();
//         try {
//             String line;
//             while ((line = input.readLine()) != null) {
//                 builder.append(line);
//                 builder.append('\n');
//             }
//         } finally {input.close();}
//         loadFromString(builder.toString());
//     }
// 
//     public void load(String file) throws FileNotFoundException, IOException, InvalidConfigurationException {
//         load(new File(file));
//     }
// 
//     public abstract void loadFromString(String contents) throws InvalidConfigurationException;
// 
//     protected abstract String buildHeader();
// 
//     @Override
//     public FileConfigurationOptions options() {
//         if (options == null) options = new FileConfigurationOptions(this);
//         return (FileConfigurationOptions) options;
//     }
// 
//     @Override
//     public void addDefault(String path, Object value) {
//         if (defaults == null) defaults = new YamlConfiguration();
//         defaults.set(path, value);
//     }
// 
//     @Override
//     public void addDefaults(Map<String, Object> defaults) {
//         for (Map.Entry<String, Object> entry : defaults.entrySet())
//             addDefault(entry.getKey(), entry.getValue());
//     }
// 
//     @Override
//     public void addDefaults(Configuration defaults) {
//         addDefaults(defaults.getValues(true));
//     }
// 
//     @Override
//     public void setDefaults(Configuration defaults) {
//         this.defaults = defaults;
//     }
// 
//     @Override
//     public Configuration getDefaults() {
//         return defaults;
//     }
// 
//     @Override
//     public ConfigurationSection getParent() {
//         return null;
//     }
// 
// }


import java.util.ArrayList;
import java.util.List;
import bssentials.Bssentials;
import bssentials.api.IBssentials;
import bssentials.api.User;
import bssentials.include.FileConfiguration;
package bssentials.commands;



public abstract class BCommand {

    public boolean onlyPlayer;
    public CmdInfo info;
    private IBssentials bss;

    public List<String> aliases = new ArrayList<String>();

    public BCommand() {
        this.bss = Bssentials.getInstance();
        CmdInfo i = this.getClass().getAnnotation(CmdInfo.class);
        onlyPlayer = false;
        if (null != i) {
            onlyPlayer = i.onlyPlayer();
            this.info = i;
            for (String s : i.aliases())
                aliases.add(s);
        }
    }

    public boolean hasPerm(User s, String cmd) {
        if (null != info.permission() && info.permission().length() > 3) {
// Path: Bssentials-Common/src/main/java/bssentials/Bssentials.java
// public class Bssentials {
// 
//     private static IBssentials i;
//     public static File warpdir;
// 
//     public static File DATA_FOLDER;
// 
//     public static IBssentials getInstance() {
//         return i;
//     }
// 
//     public static void setInstance(IBssentials bss, File dataFolder) {
//         if (null == i) {
//             Bssentials.i = bss;
//             Bssentials.DATA_FOLDER = dataFolder;
//         }
//     }
// 
//     // Below copied from Bukkit
//     public static String translateAlternateColorCodes(char altColorChar, String textToTranslate) {
//         char[] b = textToTranslate.toCharArray();
//         for (int i = 0; i < b.length - 1; i++) {
//             if (b[i] == altColorChar && "0123456789AaBbCcDdEeFfKkLlMmNnOoRr".indexOf(b[i+1]) > -1) {
//                 b[i] = '\u00A7';
//                 b[i+1] = Character.toLowerCase(b[i+1]);
//             }
//         }
//         return new String(b);
//     }
// 
// }
// 
// Path: Bssentials-Common/src/main/java/bssentials/include/FileConfiguration.java
// public abstract class FileConfiguration extends MemorySection implements Configuration {
// 
//     protected Configuration defaults;
//     protected FileConfigurationOptions options;
// 
//     public FileConfiguration() {}
// 
//     public FileConfiguration(Configuration defaults) {
//         this.defaults = defaults;
//     }
// 
//     public void save(File file) throws IOException {
//         Files.createParentDirs(file);
//         String data = saveToString();
//         Writer writer = new OutputStreamWriter(new FileOutputStream(file), Charsets.UTF_8);
// 
//         try {
//             writer.write(data);
//         } finally {
//             writer.close();
//         }
//     }
// 
//     public void save(String file) throws IOException {
//         save(new File(file));
//     }
// 
//     public abstract String saveToString();
// 
//     public void load(File file) throws FileNotFoundException, IOException, InvalidConfigurationException {
//         final FileInputStream stream = new FileInputStream(file);
//         load(new InputStreamReader(stream, Charsets.UTF_8));
//     }
// 
//     public void load(Reader reader) throws IOException, InvalidConfigurationException {
//         BufferedReader input = reader instanceof BufferedReader ? (BufferedReader) reader : new BufferedReader(reader);
//         StringBuilder builder = new StringBuilder();
//         try {
//             String line;
//             while ((line = input.readLine()) != null) {
//                 builder.append(line);
//                 builder.append('\n');
//             }
//         } finally {input.close();}
//         loadFromString(builder.toString());
//     }
// 
//     public void load(String file) throws FileNotFoundException, IOException, InvalidConfigurationException {
//         load(new File(file));
//     }
// 
//     public abstract void loadFromString(String contents) throws InvalidConfigurationException;
// 
//     protected abstract String buildHeader();
// 
//     @Override
//     public FileConfigurationOptions options() {
//         if (options == null) options = new FileConfigurationOptions(this);
//         return (FileConfigurationOptions) options;
//     }
// 
//     @Override
//     public void addDefault(String path, Object value) {
//         if (defaults == null) defaults = new YamlConfiguration();
//         defaults.set(path, value);
//     }
// 
//     @Override
//     public void addDefaults(Map<String, Object> defaults) {
//         for (Map.Entry<String, Object> entry : defaults.entrySet())
//             addDefault(entry.getKey(), entry.getValue());
//     }
// 
//     @Override
//     public void addDefaults(Configuration defaults) {
//         addDefaults(defaults.getValues(true));
//     }
// 
//     @Override
//     public void setDefaults(Configuration defaults) {
//         this.defaults = defaults;
//     }
// 
//     @Override
//     public Configuration getDefaults() {
//         return defaults;
//     }
// 
//     @Override
//     public ConfigurationSection getParent() {
//         return null;
//     }
// 
// }


// Path: Bssentials-Common/src/main/java/bssentials/commands/BCommand.java
import java.util.ArrayList;
import java.util.List;
import bssentials.Bssentials;
import bssentials.api.IBssentials;
import bssentials.api.User;
import bssentials.include.FileConfiguration;

package bssentials.commands;



public abstract class BCommand {

    public boolean onlyPlayer;
    public CmdInfo info;
    private IBssentials bss;

    public List<String> aliases = new ArrayList<String>();

    public BCommand() {
        this.bss = Bssentials.getInstance();
        CmdInfo i = this.getClass().getAnnotation(CmdInfo.class);
        onlyPlayer = false;
        if (null != i) {
            onlyPlayer = i.onlyPlayer();
            this.info = i;
            for (String s : i.aliases())
                aliases.add(s);
        }
    }

    public boolean hasPerm(User s, String cmd) {
        if (null != info.permission() && info.permission().length() > 3) {
            String ip = info.permission();