Advertisement
Soulseller

LuckPerms API Class

Sep 6th, 2020
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.40 KB | None | 0 0
  1. public class LuckPermUtil
  2. {
  3.  
  4. private static LuckPermUtil instance;
  5.  
  6. public LuckPerms api;
  7. public Set<String> possibleGroups;
  8.  
  9. private LuckPermUtil()
  10. {
  11. RegisteredServiceProvider<LuckPerms> provider = Bukkit.getServicesManager().getRegistration(LuckPerms.class);
  12. if (provider != null)
  13. {
  14. api = provider.getProvider();
  15. }
  16. if (api == null)
  17. {
  18. Messages.toConsole("Keine Verbindung zum LuckPerms!", ColorType.ERROR);
  19. }
  20. String[] posGroups = new String[] { "default", "user","trusted", "vip", "vip+", "stamm", "stammvip", "stammvip+", "team",
  21. "guard", "supporter", "moderator", "supermoderator", "developer", "admin", "owner" };
  22. possibleGroups = new HashSet<>(Arrays.asList(posGroups));
  23. }
  24.  
  25. public static LuckPermUtil getInstance()
  26. {
  27. if (instance == null)
  28. {
  29. instance = new LuckPermUtil();
  30. }
  31. return instance;
  32. }
  33.  
  34. public boolean hasGroup(Player player, String group)
  35. {
  36. return player.hasPermission("group." + group);
  37. }
  38.  
  39. public boolean hasPermission(Player player, String permission)
  40. {
  41. return player.hasPermission(permission);
  42. }
  43.  
  44. /**
  45. * Gibt ein Future mit allen zugewiesenen Gruppen einer Spieler-UUID zur�ck
  46. *
  47. * Weitere verwendung: getGroup(uuid).thenAcceptAsync(result ->{ //hier den code
  48. * einf�gen });
  49. *
  50. * @param uniqueId
  51. * @return Set<String> Name aller Gruppen
  52. */
  53. public CompletableFuture<Set<String>> getGroup(UUID uniqueId)
  54. {
  55. return api.getUserManager().loadUser(uniqueId)
  56. .thenApplyAsync(user -> user.getNodes().stream().filter(NodeType.INHERITANCE::matches)
  57. .map(NodeType.INHERITANCE::cast).map(InheritanceNode::getGroupName)
  58. .collect(Collectors.toSet()));
  59. }
  60.  
  61. public void performIfPlayerHasGroup(OfflinePlayer player, String group, Runnable runnable)
  62. {
  63. getGroup(player.getUniqueId()).thenAcceptAsync(result -> {
  64. if (result.contains(group))
  65. {
  66. runnable.run();
  67. }
  68. });
  69. }
  70.  
  71. public void giveGroup(UUID uniqueId, String group)
  72. {
  73. UserManager userManager = api.getUserManager();
  74. CompletableFuture<User> userFuture = userManager.loadUser(uniqueId);
  75.  
  76. userFuture.thenAcceptAsync(user -> {
  77. Collection<Node> nodes = user.getNodes();
  78. Set<String> groups = nodes.stream().filter(NodeType.INHERITANCE::matches).map(NodeType.INHERITANCE::cast)
  79. .map(InheritanceNode::getGroupName).collect(Collectors.toSet());
  80. for (String oldGroup : groups)
  81. {
  82. InheritanceNode node = InheritanceNode.builder(oldGroup).build();
  83. user.data().remove(node);
  84. }
  85. InheritanceNode newGroup = InheritanceNode.builder(group).build();
  86. user.data().add(newGroup);
  87. userManager.saveUser(user);
  88. });
  89. }
  90.  
  91. public void givePermission(UUID uniqueId, String permission)
  92. {
  93. UserManager userManager = api.getUserManager();
  94. CompletableFuture<User> userFuture = userManager.loadUser(uniqueId);
  95.  
  96. userFuture.thenAcceptAsync(user -> {
  97.  
  98. PermissionNode node = PermissionNode.builder(permission).value(true).build();
  99. user.data().add(node);
  100. userManager.saveUser(user);
  101. });
  102. }
  103.  
  104. public void giveNegativPermission(UUID uniqueId, String permission)
  105. {
  106. UserManager userManager = api.getUserManager();
  107. CompletableFuture<User> userFuture = userManager.loadUser(uniqueId);
  108.  
  109. userFuture.thenAcceptAsync(user -> {
  110.  
  111. PermissionNode node = PermissionNode.builder(permission).value(false).build();
  112. user.data().add(node);
  113. userManager.saveUser(user);
  114. });
  115. }
  116. }
  117.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement