Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.example;
- import org.spongepowered.api.Sponge;
- import org.spongepowered.api.profile.GameProfile;
- import org.spongepowered.api.service.user.UserStorageService;
- import java.io.File;
- import java.util.*;
- import java.util.function.Predicate;
- public class UserConfig extends Config {
- private static final String USERS_NODE = "users";
- private static final String DISCORD_ID_NODE = "discordid";
- private static final String NICKNAME_NODE = "nickname";
- private static final String USER_CODE_NODE = "code";
- private static final String CLASSES_NODE = "classes";
- public UserConfig(File file) {
- super(file);
- }
- public Optional<GameProfile> getProfileByDiscord(String discordId){
- return getByStringNode(discordId, DISCORD_ID_NODE);
- }
- public Optional<GameProfile> getProfileByNickname(String nick){
- return getByStringNode(nick, NICKNAME_NODE);
- }
- public List<String> getUserClasses(UUID uuid){
- return this.getList(n -> n.getString(), "users", uuid.toString(), CLASSES_NODE);
- }
- public Optional<String> getUserCode(UUID uuid){
- return Optional.ofNullable(this.getString("users", uuid.toString(), USER_CODE_NODE));
- }
- public void registerUser(UUID uuid, String nick, String discord, String code, String... classes){
- set(nick, "users", uuid.toString(), NICKNAME_NODE);
- set(discord, "users", uuid.toString(), DISCORD_ID_NODE);
- set(code, "users", uuid.toString(), USER_CODE_NODE);
- set(Arrays.asList(classes), "users", uuid.toString(), CLASSES_NODE);
- }
- public void registerClass(UUID uuid, String className){
- List<String> list = new ArrayList<>(getUserClasses(uuid));
- list.add(className);
- set(list, "users", uuid.toString(), CLASSES_NODE);
- }
- public void deleteClass(UUID uuid, String className){
- List<String> list = new ArrayList<>(getUserClasses(uuid));
- list.remove(className);
- set(list, "users", uuid.toString(), CLASSES_NODE);
- }
- public void deleteUser(UUID uuid){
- remove("users", uuid.toString());
- }
- public boolean hasUserClass(UUID uuid, String className){
- return getUserClasses(uuid).stream().anyMatch(s -> s.equalsIgnoreCase(className));
- }
- private Optional<GameProfile> getByStringNode(String idToCheck, String node){
- return getGameProfiles(gp -> {
- String id = this.getString("users", gp.getUniqueId().toString(), node);
- if(id == null){
- return false;
- }
- if(id.equalsIgnoreCase(idToCheck)){
- return true;
- }
- return false;
- });
- }
- private Optional<GameProfile> getGameProfiles(Predicate<GameProfile> filterTo){
- UserStorageService userStorageService = Sponge.getServiceManager().getRegistration(UserStorageService.class).get().getProvider();
- return userStorageService.getAll().stream().filter(filterTo).findFirst();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement