Advertisement
MsGamerHD

Untitled

Aug 23rd, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.89 KB | None | 0 0
  1. package de.whidex.permissionsystem.zeugs;
  2.  
  3. import java.io.File;
  4. import java.util.ArrayList;
  5.  
  6. import org.bukkit.Bukkit;
  7. import org.bukkit.configuration.file.YamlConfiguration;
  8. import org.bukkit.entity.Player;
  9. import org.bukkit.permissions.PermissionAttachment;
  10.  
  11. import de.whidex.permissionsystem.Main;
  12.  
  13. public class GroupUtils {
  14.    
  15.     public static File file = FileManager.getGroupFile();
  16.     public static YamlConfiguration cfg = YamlConfiguration.loadConfiguration(file);
  17.    
  18.     public static void addPermission(Player p, String permission, boolean status) {
  19.         PermissionAttachment attachment = p.addAttachment(Main.getInstance());
  20.         attachment.setPermission(permission, status);  
  21.         Bukkit.broadcastMessage(permission+status);
  22.     }
  23.    
  24.     public static void removePermission(Player p, String permission) {
  25.         PermissionAttachment attachment = p.addAttachment(Main.getInstance());
  26.         attachment.unsetPermission(permission);
  27.     }
  28.    
  29.     public static void resetPermission(Player p) {
  30.         PermissionAttachment attachment = p.addAttachment(Main.getInstance());
  31.        
  32.         for(String perms : attachment.getPermissions().keySet()){
  33.             attachment.unsetPermission(perms);
  34.         }
  35.     }
  36.    
  37.     public static boolean createGroup(String group){
  38.         if(!existGroup(group)){
  39.             cfg.set("gruppe."+group.toLowerCase()+".rechte", new ArrayList<String>());
  40.             save();
  41.             return true;
  42.         }
  43.        
  44.         return false;
  45.     }
  46.    
  47.      @SuppressWarnings({ "unchecked" })
  48.         public static ArrayList<String> getGroupPermissions(String group){
  49.             if(existGroup(group)){
  50.                 ArrayList<String> permissions = (ArrayList<String>) cfg.getList("gruppe."+group.toLowerCase()+".rechte");
  51.                
  52.                 for(String parents : getChild(group)){
  53.                     for(String parentspermissions : getGroupPermissions(parents)){
  54.                         if(!permissions.contains(parentspermissions)){
  55.                             permissions.add(parentspermissions);
  56.                         }
  57.                     }
  58.                 }
  59.                 return (ArrayList<String>) cfg.getList("gruppe."+group.toLowerCase()+".rechte");
  60.             }
  61.            
  62.             return null;
  63.         }
  64.    
  65.     public static boolean hasGroupPermission(String group, String permission){
  66.         group = group.toLowerCase();
  67.         if(existGroup(group)){
  68.             ArrayList<String> groupperms = getGroupPermissions(group);
  69.            
  70.             if(groupperms.contains(permission)){
  71.                 return true;
  72.             }
  73.         }
  74.        
  75.         return false;
  76.     }
  77.    
  78.     public static void removeGroupPermissions(String group, String permission){
  79.         group = group.toLowerCase();
  80.         if(existGroup(group)){
  81.             ArrayList<String> groupperms = getGroupPermissions(group);
  82.  
  83.             if(hasGroupPermission(group, permission)){
  84.                 groupperms.remove(permission);
  85.                 cfg.set("gruppe."+group+".rechte", groupperms);
  86.                 save();
  87.             }
  88.            
  89.             for(Player all : Bukkit.getOnlinePlayers()){
  90.                 if(getPlayerGroup(all.getName()).equalsIgnoreCase(group)){
  91.                     updatePlayerPermission(all);
  92.                 }
  93.             }
  94.         }
  95.     }
  96.    
  97.     public static void addGroupPermissions(String group, String permission){
  98.         group = group.toLowerCase();
  99.         if(existGroup(group)){
  100.             ArrayList<String> groupperms = getGroupPermissions(group);
  101.            
  102.             if(!hasGroupPermission(group, permission)){
  103.                 groupperms.add(permission);
  104.                 cfg.set("gruppe."+group+".rechte", groupperms);
  105.                 save();
  106.             }
  107.            
  108.             for(Player all : Bukkit.getOnlinePlayers()){
  109.                 if(getPlayerGroup(all.getName()).equalsIgnoreCase(group)){
  110.                     updatePlayerPermission(all);
  111.                 }
  112.             }
  113.         }
  114.     }
  115.    
  116.     @SuppressWarnings("unchecked")
  117.     public static ArrayList<String> getChild(String group){
  118.         if(existGroup(group)){
  119.             ArrayList<String> childrens = new ArrayList<>();
  120.            
  121.             if(cfg.getList("gruppe."+group.toLowerCase()+".parents") != null){
  122.                 childrens = (ArrayList<String>) cfg.getList("gruppe."+group.toLowerCase()+".parents");
  123.             }
  124.             return childrens;
  125.         }
  126.        
  127.         return null;
  128.     }
  129.    
  130.     public static void addChild(String Childgroup, String group) {
  131.         Childgroup = Childgroup.toLowerCase();
  132.         group = group.toLowerCase();
  133.         if(existGroup(group)){
  134.             if(existGroup(Childgroup)) {
  135.                 ArrayList<String> parent = getChild(group);
  136.                
  137.                 if(!cfg.contains("gruppe." + group.toLowerCase() + ".parents")) {
  138.                     parent.add(Childgroup);
  139.                     cfg.set("gruppe."+group.toLowerCase()+".parents", parent);
  140.                     save();
  141.                 }
  142.                
  143.                 for(Player all : Bukkit.getOnlinePlayers()){
  144.                     if(getPlayerGroup(all.getName()).equalsIgnoreCase(group)){
  145.                         updatePlayerPermission(all);
  146.                     }
  147.                 }
  148.             }
  149.         }
  150.     }
  151.    
  152.     public static void removeChild(String group, String Childgroup) {
  153.         Childgroup = Childgroup.toLowerCase();
  154.         group = group.toLowerCase();
  155.         if(existGroup(group)){
  156.             if(existGroup(Childgroup)) {
  157.                 ArrayList<String> parent = getChild(group);
  158.                
  159.                 if(cfg.contains("gruppe." + group.toLowerCase() + ".parents")) {
  160.                     parent.remove(Childgroup);
  161.                     cfg.set("gruppe."+group.toLowerCase()+".parents", parent);
  162.                     save();
  163.                 }
  164.                
  165.                 for(Player all : Bukkit.getOnlinePlayers()){
  166.                     if(getPlayerGroup(all.getName()).equalsIgnoreCase(group)){
  167.                         updatePlayerPermission(all);
  168.                     }
  169.                 }
  170.             }
  171.         }
  172.     }
  173.    
  174.     public static boolean hasChild(String group) {
  175.         return cfg.contains("gruppe." + group.toLowerCase() + ".parents");
  176.     }
  177.    
  178.     public static boolean setPlayerGroup(String player, String group){
  179.         if(existGroup(group)){
  180.             cfg.set("spieler."+UUIDFinder.getUUID(player)+".rang", group.toLowerCase());
  181.             save();
  182.            
  183.             for(Player all : Bukkit.getOnlinePlayers()){
  184.                 if(getPlayerGroup(all.getName()).equalsIgnoreCase(group) && all.getName().equals(player)){
  185.                     updatePlayerPermission(all);
  186.                 }
  187.             }
  188.             Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "updateboard");
  189.             return true;
  190.         }
  191.        
  192.         return false;
  193.     }
  194.    
  195.     public static void setStandardGroup(String group){
  196.         cfg.set("standard_gruppe", group.toLowerCase());
  197.         save();
  198.     }
  199.    
  200.     public static String getStandardGroup(){
  201.         if(!cfg.contains("standard_gruppe")){
  202.             setStandardGroup("spieler");
  203.         }
  204.         if(!existGroup(cfg.getString("standard_gruppe"))){
  205.             createGroup(cfg.getString("standard_gruppe").toLowerCase());
  206.         }
  207.         return cfg.getString("standard_gruppe");
  208.     }
  209.    
  210.     public static String getPlayerGroup(String player){
  211.         String group = cfg.getString("spieler."+UUIDFinder.getUUID(player)+".rang");
  212.        
  213.         if(group != null){
  214.             if(existGroup(group)){
  215.                 return group;
  216.             }
  217.         }
  218.         setPlayerGroup(player, getStandardGroup());
  219.         return getStandardGroup();
  220.     }
  221.    
  222.     public static void updatePlayerPermission(Player p){
  223.         resetPermission(p);
  224.        
  225.         for(String perms : getGroupPermissions(getPlayerGroup(p.getName()))){
  226.             boolean status = true;
  227.             if(perms.startsWith("-")){
  228.                 perms = perms.substring(1);
  229.                 status = false;
  230.             }
  231.             addPermission(p, perms, status);
  232.         }
  233.     }
  234.  
  235.     public static boolean existGroup(String group) {
  236.         return cfg.contains("gruppe."+group.toLowerCase()+".rechte");
  237.     }
  238.    
  239.     public static void save(){
  240.         FileManager.saveConfig(file, cfg);
  241.     }
  242. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement