Add and remove roles from internal cache where needed
This commit is contained in:
parent
8b42cfea43
commit
1c2eeec78a
|
|
@ -50,6 +50,7 @@ public class DiscordRoleListener extends ListenerAdapter {
|
|||
|
||||
discordLinkPlayer.updateMinecraft(added_roles, true);
|
||||
added_roles.forEach(discordRole -> {
|
||||
discordLinkPlayer.addRole(discordRole.getInternalName());
|
||||
if (!discordRole.getAnnouncement().isEmpty()) {
|
||||
Component component = miniMessage.parse(
|
||||
discordRole.getAnnouncement(),
|
||||
|
|
@ -83,6 +84,7 @@ public class DiscordRoleListener extends ListenerAdapter {
|
|||
return;
|
||||
}
|
||||
|
||||
removed_roles.forEach(role -> discordLinkPlayer.removeRole(role.getInternalName()));
|
||||
discordLinkPlayer.updateMinecraft(removed_roles, false);
|
||||
DiscordLink.getPlugin().getDatabase().syncRoles(discordLinkPlayer);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,13 @@ public class LuckpermsEvents {
|
|||
if (discordLinkPlayer == null)
|
||||
return;
|
||||
|
||||
discordLinkPlayer.updateDiscord(List.of(optional.get()), added);
|
||||
DiscordRole discordRole = optional.get();
|
||||
|
||||
if (added)
|
||||
discordLinkPlayer.addRole(discordRole.getInternalName());
|
||||
else
|
||||
discordLinkPlayer.removeRole(discordRole.getInternalName());
|
||||
discordLinkPlayer.updateDiscord(List.of(discordRole), added);
|
||||
DiscordLink.getPlugin().getDatabase().syncRoles(discordLinkPlayer);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -20,12 +20,13 @@ public class DiscordLinkPlayer {
|
|||
private boolean nick;
|
||||
private final List<String> roleNames;
|
||||
|
||||
public DiscordLinkPlayer(long userId, UUID uuid, String username, String discordUsername, boolean nick, List<String> roleNames) {
|
||||
public DiscordLinkPlayer(long userId, UUID uuid, String username, String discordUsername, boolean nick, List<String> roleNames) {//TODO what is nick used for? and where is it stored
|
||||
this.userId = userId;
|
||||
this.uuid = uuid;
|
||||
this.username = username;
|
||||
this.roleNames = roleNames;
|
||||
this.discordUsername = discordUsername;
|
||||
this.nick = nick;
|
||||
}
|
||||
|
||||
public long getUserId() {
|
||||
|
|
@ -48,6 +49,15 @@ public class DiscordLinkPlayer {
|
|||
return roleNames;
|
||||
}
|
||||
|
||||
public void addRole(String role) {
|
||||
if (!roleNames.contains(role))
|
||||
roleNames.add(role);
|
||||
}
|
||||
|
||||
public void removeRole(String role) {
|
||||
roleNames.remove(role);
|
||||
}
|
||||
|
||||
public String getDiscordUsername() {
|
||||
return discordUsername;
|
||||
}
|
||||
|
|
@ -106,21 +116,25 @@ public class DiscordLinkPlayer {
|
|||
discordLinkPlayers.add(discordLinkPlayer);
|
||||
}
|
||||
|
||||
public static void removeDiscordLinkPlayer(DiscordLinkPlayer discordLinkPlayer) {
|
||||
discordLinkPlayers.remove(discordLinkPlayer);
|
||||
}
|
||||
|
||||
public static DiscordLinkPlayer getDiscordLinkPlayer(long userId) {
|
||||
return discordLinkPlayers.stream()
|
||||
.filter(discordLinkPlayer -> discordLinkPlayer.getUserId() == userId)
|
||||
.findFirst()
|
||||
.orElseGet(() -> DiscordLink.getPlugin().getDatabase().getPlayer(userId));
|
||||
.orElseGet(() -> {
|
||||
DiscordLinkPlayer player = DiscordLink.getPlugin().getDatabase().getPlayer(userId);
|
||||
DiscordLinkPlayer.addDiscordLinkPlayer(player);
|
||||
return player;
|
||||
});
|
||||
}
|
||||
|
||||
public static DiscordLinkPlayer getDiscordLinkPlayer(UUID uuid) {
|
||||
return discordLinkPlayers.stream()
|
||||
.filter(o1 -> o1.getUuid().equals(uuid))
|
||||
.findFirst()
|
||||
.orElseGet(() -> DiscordLink.getPlugin().getDatabase().getPlayer(uuid));
|
||||
.orElseGet(() -> {
|
||||
DiscordLinkPlayer player = DiscordLink.getPlugin().getDatabase().getPlayer(uuid);
|
||||
DiscordLinkPlayer.addDiscordLinkPlayer(player);
|
||||
return player;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user