Advertisement
Guest User

UserConfig

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