Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.19 KB | None | 0 0
  1. package me.finnbon.police.config;
  2.  
  3. import java.util.function.Function;
  4.  
  5. import org.apache.commons.lang.StringUtils;
  6. import org.bukkit.ChatColor;
  7. import org.bukkit.configuration.file.FileConfiguration;
  8.  
  9. import me.finnbon.police.PolicePlugin;
  10.  
  11. public enum Config {
  12.  
  13.     // General
  14.     PERMSECTION_PERM$NAME(
  15.             "You don't have permission to do that!");
  16.  
  17.     private Object defaultValue, value;
  18.     private String path;
  19.  
  20.     private Config(Object value) {
  21.         defaultValue = value;
  22.         String path = name();
  23.         path = path.replace("_", ".").replace("$", "-");
  24.         path = StringUtils.capitalize(path.toLowerCase());
  25.         boolean cap = true;
  26.         String result = "";
  27.         for (char c : path.toCharArray()) {
  28.             if (cap) {
  29.                 result += String.valueOf(c).toUpperCase();
  30.                 cap = false;
  31.             } else
  32.                 result += c;
  33.             if (c == '.' || c == '-')
  34.                 cap = true;
  35.         }
  36.         this.path = result;
  37.     }
  38.  
  39.     @SuppressWarnings("unchecked")
  40.     public <T> T get(Class<T> clss) {
  41.         if (clss == String.class)
  42.             return (T) ChatColor.translateAlternateColorCodes('&', (String) value);
  43.         return (T) value;
  44.     }
  45.  
  46.     @SuppressWarnings("unchecked")
  47.     public <T> T get() {
  48.         T i = (T) value;
  49.         if (i instanceof String)
  50.             return (T) ChatColor.translateAlternateColorCodes('&', (String) i);
  51.         return i;
  52.     }
  53.  
  54.     public String placeholders(Function<String, String> f) {
  55.         if (!(value instanceof String))
  56.             return null;
  57.         String v = new String((String) value);
  58.         v = f.apply(v);
  59.         return ChatColor.translateAlternateColorCodes('&', v);
  60.     }
  61.  
  62.     public void load(FileConfiguration config) {
  63.         value = config.get(path);
  64.     }
  65.  
  66.     private void createDefaultValue(FileConfiguration config) {
  67.         config.addDefault(path, defaultValue);
  68.     }
  69.  
  70.     @SuppressWarnings("unused")
  71.     private static PolicePlugin plugin;
  72.  
  73.     public static void loadValues(PolicePlugin plugin) {
  74.         FileConfiguration config = plugin.getConfig();
  75.         for (Config c : values())
  76.             c.load(config);
  77.     }
  78.  
  79.     public static void createDefaultValues(PolicePlugin pl) {
  80.         plugin = pl;
  81.        
  82.         FileConfiguration config = pl.getConfig();
  83.        
  84.         config.options().copyDefaults(true);
  85.         config.options().copyHeader(false);
  86.         for (Config c : values())
  87.             c.createDefaultValue(config);
  88.         pl.saveConfig();
  89.     }
  90.  
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement