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