package me.DDoS.MCCasino.permission; import java.io.File; import java.io.IOException; import java.util.Arrays; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.plugin.Plugin; /** * * @author DDoS */ public class PermissionsHandler { private Permissions permissions; public PermissionsHandler(Plugin plugin) { YamlConfiguration config = getConfig(plugin.getDescription().getName()); if (config != null) { getPerms(config, plugin); return; } System.out.println("[" + plugin.getDescription().getName() + "] Defaulting to SuperPerms."); getSuperPermsPerms(plugin); } public Permissions getPermissions() { return permissions; } private YamlConfiguration getConfig(String pluginName) { YamlConfiguration config = new YamlConfiguration(); if (!loadConfig(config, pluginName)) { return null; } if (config.getKeys(true).isEmpty()) { config.set("PermissionsSystem", "SuperPerms"); config.set("PlayerPerms", Arrays.asList("example.ex")); if (!saveConfig(config, pluginName)) { return null; } if (!loadConfig(config, pluginName)) { return null; } } return config; } private boolean loadConfig(YamlConfiguration config, String pluginName) { File path = new File("plugins/" + pluginName + "/perms_config.yml"); if (!path.exists()) { try { path.createNewFile(); } catch (IOException ex) { System.out.println("[" + pluginName + "] Couldn't create permissions config: " + ex.getMessage()); return false; } } try { config.load(path); } catch (IOException ex) { System.out.println("[" + pluginName + "] Couldn't load permissions config: " + ex.getMessage()); return false; } catch (InvalidConfigurationException ex) { System.out.println("[" + pluginName + "] Couldn't load permissions config: " + ex.getMessage()); return false; } return true; } private boolean saveConfig(YamlConfiguration config, String pluginName) { File path = new File("plugins/" + pluginName + "/perms_config.yml"); if (!path.exists()) { try { path.createNewFile(); } catch (IOException ex) { System.out.println("[" + pluginName + "] Couldn't create permissions config: " + ex.getMessage()); return false; } } try { config.save(path); } catch (IOException ex) { System.out.println("[" + pluginName + "] Couldn't save permissions config: " + ex.getMessage()); return false; } return true; } private void getPerms(YamlConfiguration config, Plugin plugin) { String type = config.getString("PermissionsSystem"); if (type.equalsIgnoreCase("Legacy")) { System.out.println("[" + plugin.getDescription().getName() + "] Legacy permissions are not supported anymore."); getSuperPermsPerms(plugin); } else if (type.equalsIgnoreCase("PlayerAndOP")) { getPlayerAndOPPerms(config, plugin); } else { getSuperPermsPerms(plugin); } } private void getSuperPermsPerms(Plugin plugin) { System.out.println("[" + plugin.getDescription().getName() + "] Got SuperPerms permissions."); permissions = new SuperPermsPermissions(); } private void getPlayerAndOPPerms(YamlConfiguration config, Plugin plugin) { System.out.println("[" + plugin.getDescription().getName() + "] Got player and OP permissions."); permissions = new PlayerAndOPPermissions(config.getStringList("PlayerPerms")); } }