Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package de.whidex.permissionsystem.zeugs;
- import java.io.File;
- import java.util.ArrayList;
- import org.bukkit.Bukkit;
- import org.bukkit.configuration.file.YamlConfiguration;
- import org.bukkit.entity.Player;
- import org.bukkit.permissions.PermissionAttachment;
- import de.whidex.permissionsystem.Main;
- public class GroupUtils {
- public static File file = FileManager.getGroupFile();
- public static YamlConfiguration cfg = YamlConfiguration.loadConfiguration(file);
- public static void addPermission(Player p, String permission, boolean status) {
- PermissionAttachment attachment = p.addAttachment(Main.getInstance());
- attachment.setPermission(permission, status);
- Bukkit.broadcastMessage(permission+status);
- }
- public static void removePermission(Player p, String permission) {
- PermissionAttachment attachment = p.addAttachment(Main.getInstance());
- attachment.unsetPermission(permission);
- }
- public static void resetPermission(Player p) {
- PermissionAttachment attachment = p.addAttachment(Main.getInstance());
- for(String perms : attachment.getPermissions().keySet()){
- attachment.unsetPermission(perms);
- }
- }
- public static boolean createGroup(String group){
- if(!existGroup(group)){
- cfg.set("gruppe."+group.toLowerCase()+".rechte", new ArrayList<String>());
- save();
- return true;
- }
- return false;
- }
- @SuppressWarnings({ "unchecked" })
- public static ArrayList<String> getGroupPermissions(String group){
- if(existGroup(group)){
- ArrayList<String> permissions = (ArrayList<String>) cfg.getList("gruppe."+group.toLowerCase()+".rechte");
- for(String parents : getChild(group)){
- for(String parentspermissions : getGroupPermissions(parents)){
- if(!permissions.contains(parentspermissions)){
- permissions.add(parentspermissions);
- }
- }
- }
- return (ArrayList<String>) cfg.getList("gruppe."+group.toLowerCase()+".rechte");
- }
- return null;
- }
- public static boolean hasGroupPermission(String group, String permission){
- group = group.toLowerCase();
- if(existGroup(group)){
- ArrayList<String> groupperms = getGroupPermissions(group);
- if(groupperms.contains(permission)){
- return true;
- }
- }
- return false;
- }
- public static void removeGroupPermissions(String group, String permission){
- group = group.toLowerCase();
- if(existGroup(group)){
- ArrayList<String> groupperms = getGroupPermissions(group);
- if(hasGroupPermission(group, permission)){
- groupperms.remove(permission);
- cfg.set("gruppe."+group+".rechte", groupperms);
- save();
- }
- for(Player all : Bukkit.getOnlinePlayers()){
- if(getPlayerGroup(all.getName()).equalsIgnoreCase(group)){
- updatePlayerPermission(all);
- }
- }
- }
- }
- public static void addGroupPermissions(String group, String permission){
- group = group.toLowerCase();
- if(existGroup(group)){
- ArrayList<String> groupperms = getGroupPermissions(group);
- if(!hasGroupPermission(group, permission)){
- groupperms.add(permission);
- cfg.set("gruppe."+group+".rechte", groupperms);
- save();
- }
- for(Player all : Bukkit.getOnlinePlayers()){
- if(getPlayerGroup(all.getName()).equalsIgnoreCase(group)){
- updatePlayerPermission(all);
- }
- }
- }
- }
- @SuppressWarnings("unchecked")
- public static ArrayList<String> getChild(String group){
- if(existGroup(group)){
- ArrayList<String> childrens = new ArrayList<>();
- if(cfg.getList("gruppe."+group.toLowerCase()+".parents") != null){
- childrens = (ArrayList<String>) cfg.getList("gruppe."+group.toLowerCase()+".parents");
- }
- return childrens;
- }
- return null;
- }
- public static void addChild(String Childgroup, String group) {
- Childgroup = Childgroup.toLowerCase();
- group = group.toLowerCase();
- if(existGroup(group)){
- if(existGroup(Childgroup)) {
- ArrayList<String> parent = getChild(group);
- if(!cfg.contains("gruppe." + group.toLowerCase() + ".parents")) {
- parent.add(Childgroup);
- cfg.set("gruppe."+group.toLowerCase()+".parents", parent);
- save();
- }
- for(Player all : Bukkit.getOnlinePlayers()){
- if(getPlayerGroup(all.getName()).equalsIgnoreCase(group)){
- updatePlayerPermission(all);
- }
- }
- }
- }
- }
- public static void removeChild(String group, String Childgroup) {
- Childgroup = Childgroup.toLowerCase();
- group = group.toLowerCase();
- if(existGroup(group)){
- if(existGroup(Childgroup)) {
- ArrayList<String> parent = getChild(group);
- if(cfg.contains("gruppe." + group.toLowerCase() + ".parents")) {
- parent.remove(Childgroup);
- cfg.set("gruppe."+group.toLowerCase()+".parents", parent);
- save();
- }
- for(Player all : Bukkit.getOnlinePlayers()){
- if(getPlayerGroup(all.getName()).equalsIgnoreCase(group)){
- updatePlayerPermission(all);
- }
- }
- }
- }
- }
- public static boolean hasChild(String group) {
- return cfg.contains("gruppe." + group.toLowerCase() + ".parents");
- }
- public static boolean setPlayerGroup(String player, String group){
- if(existGroup(group)){
- cfg.set("spieler."+UUIDFinder.getUUID(player)+".rang", group.toLowerCase());
- save();
- for(Player all : Bukkit.getOnlinePlayers()){
- if(getPlayerGroup(all.getName()).equalsIgnoreCase(group) && all.getName().equals(player)){
- updatePlayerPermission(all);
- }
- }
- Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "updateboard");
- return true;
- }
- return false;
- }
- public static void setStandardGroup(String group){
- cfg.set("standard_gruppe", group.toLowerCase());
- save();
- }
- public static String getStandardGroup(){
- if(!cfg.contains("standard_gruppe")){
- setStandardGroup("spieler");
- }
- if(!existGroup(cfg.getString("standard_gruppe"))){
- createGroup(cfg.getString("standard_gruppe").toLowerCase());
- }
- return cfg.getString("standard_gruppe");
- }
- public static String getPlayerGroup(String player){
- String group = cfg.getString("spieler."+UUIDFinder.getUUID(player)+".rang");
- if(group != null){
- if(existGroup(group)){
- return group;
- }
- }
- setPlayerGroup(player, getStandardGroup());
- return getStandardGroup();
- }
- public static void updatePlayerPermission(Player p){
- resetPermission(p);
- for(String perms : getGroupPermissions(getPlayerGroup(p.getName()))){
- boolean status = true;
- if(perms.startsWith("-")){
- perms = perms.substring(1);
- status = false;
- }
- addPermission(p, perms, status);
- }
- }
- public static boolean existGroup(String group) {
- return cfg.contains("gruppe."+group.toLowerCase()+".rechte");
- }
- public static void save(){
- FileManager.saveConfig(file, cfg);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement