Fixed not updating the user when updating roles

This commit is contained in:
Teriuihi 2021-09-16 17:58:35 +02:00
parent 94b7855da3
commit 4ae5e16cbc

View File

@ -3,12 +3,14 @@ package com.alttd.proxydiscordlink.objects;
import com.alttd.proxydiscordlink.DiscordLink;
import com.alttd.proxydiscordlink.bot.objects.DiscordRole;
import com.alttd.proxydiscordlink.config.BotConfig;
import com.alttd.proxydiscordlink.util.ALogger;
import com.alttd.proxydiscordlink.util.Utilities;
import net.luckperms.api.model.user.User;
import net.luckperms.api.model.user.UserManager;
import net.luckperms.api.node.types.InheritanceNode;
import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
public class DiscordLinkPlayer {
private final long userId;
@ -70,25 +72,25 @@ public class DiscordLinkPlayer {
DiscordLink.getPlugin().getDatabase().syncPlayer(this);
//TODO implement
//TODO SYNC ROLES TO DATABASE
}
public void updateMinecraft(List<DiscordRole> roles, boolean added) {
User user = Utilities.getLuckPerms().getUserManager().getUser(getUuid());
if (user == null) {
ALogger.error("Tried updating a user luckperms couldn't find: " + getUuid());
return;
}
UserManager userManager = Utilities.getLuckPerms().getUserManager();
roles.stream().filter(DiscordRole::isUpdateToMinecraft).forEach(role -> {
InheritanceNode group = InheritanceNode.builder(role.getLuckpermsName()).build();
if (added && !user.getNodes().contains(group))
user.data().add(group);
else if (!added)
user.data().remove(group);
userManager.modifyUser(getUuid(), user -> {
if (added && !user.getNodes().contains(group))
user.data().add(group);
else if (!added)
user.data().remove(group);
});
});
DiscordLink.getPlugin().getDatabase().syncPlayer(this);
//TODO implement
//TODO SYNC ROLES TO DATABASE
}
public void linkedRole(boolean add) {
@ -119,7 +121,7 @@ public class DiscordLinkPlayer {
return discordLinkPlayers.stream()
.filter(discordLinkPlayer -> discordLinkPlayer.getUserId() == userId)
.findFirst()
.orElse(null);
.orElseGet(() -> DiscordLink.getPlugin().getDatabase().getPlayer(userId));
}
public static DiscordLinkPlayer getDiscordLinkPlayer(UUID uuid) {