Advertisement
Guest User

Updated UserConfig

a guest
Oct 12th, 2019
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.38 KB | None | 0 0
  1. package org.example;
  2.  
  3. import ninja.leaping.configurate.commented.CommentedConfigurationNode;
  4. import ninja.leaping.configurate.loader.ConfigurationLoader;
  5. import org.spongepowered.api.Sponge;
  6. import org.spongepowered.api.profile.GameProfile;
  7. import org.spongepowered.api.service.user.UserStorageService;
  8.  
  9. import java.io.File;
  10. import java.util.*;
  11. import java.util.function.Predicate;
  12.  
  13. public class UserConfig extends Config {
  14.  
  15. private static final String DISCORD_ID_NODE = "discordid";
  16. private static final String NICKNAME_NODE = "nickname";
  17. private static final String USER_CODE_NODE = "code";
  18. private static final String CLASSES_NODE = "classes";
  19.  
  20. public UserConfig(ConfigurationLoader<CommentedConfigurationNode> loader, CommentedConfigurationNode root){
  21. super(loader, root);
  22. }
  23.  
  24. public UserConfig(File file) {
  25. super(file);
  26. }
  27.  
  28. public boolean isUserRegistered(UUID uuid){
  29. return this.<Boolean>get(n -> n.isVirtual(), "users", uuid.toString());
  30. }
  31.  
  32. public Optional<GameProfile> getProfileByDiscord(String discordId){
  33. return getByStringNode(discordId, DISCORD_ID_NODE);
  34. }
  35.  
  36. public Optional<GameProfile> getProfileByNickname(String nick){
  37. return getByStringNode(nick, NICKNAME_NODE);
  38. }
  39.  
  40. public List<String> getUserClasses(UUID uuid){
  41. return this.getList(n -> n.getString(), "users", uuid.toString(), CLASSES_NODE);
  42. }
  43.  
  44. public Optional<String> getUserCode(UUID uuid){
  45. return Optional.ofNullable(this.getString("users", uuid.toString(), USER_CODE_NODE));
  46. }
  47.  
  48. public void registerUser(UUID uuid, String nick, String discord, String code, String... classes){
  49. set(nick, "users", uuid.toString(), NICKNAME_NODE);
  50. set(discord, "users", uuid.toString(), DISCORD_ID_NODE);
  51. set(code, "users", uuid.toString(), USER_CODE_NODE);
  52. set(Arrays.asList(classes), "users", uuid.toString(), CLASSES_NODE);
  53. }
  54.  
  55. public void registerClass(UUID uuid, String className){
  56. List<String> list = new ArrayList<>(getUserClasses(uuid));
  57. list.add(className);
  58. set(list, "users", uuid.toString(), CLASSES_NODE);
  59. }
  60.  
  61. public void deleteClass(UUID uuid, String className){
  62. List<String> list = new ArrayList<>(getUserClasses(uuid));
  63. list.remove(className);
  64. set(list, "users", uuid.toString(), CLASSES_NODE);
  65. }
  66.  
  67. public void deleteUser(UUID uuid){
  68. remove("users", uuid.toString());
  69. }
  70.  
  71. public boolean hasUserClass(UUID uuid, String className){
  72. return getUserClasses(uuid).stream().anyMatch(s -> s.equalsIgnoreCase(className));
  73. }
  74.  
  75. private Optional<GameProfile> getByStringNode(String idToCheck, String node){
  76. return getGameProfiles(gp -> {
  77. String id = this.getString("users", gp.getUniqueId().toString(), node);
  78. if(id == null){
  79. return false;
  80. }
  81. if(id.equalsIgnoreCase(idToCheck)){
  82. return true;
  83. }
  84. return false;
  85. });
  86. }
  87.  
  88. private Optional<GameProfile> getGameProfiles(Predicate<GameProfile> filterTo){
  89. UserStorageService userStorageService = Sponge.getServiceManager().getRegistration(UserStorageService.class).get().getProvider();
  90. return userStorageService.getAll().stream().filter(filterTo).findFirst();
  91. }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement