Possibly fix the Minecraft role bug

So it seems like there is a Minecraft role in another server as well
#95
This commit is contained in:
Norbi Peti 2020-04-08 11:52:21 +02:00
parent cce7f59f4a
commit a9c71a3384
No known key found for this signature in database
GPG key ID: DBA4C4549A927E56

View file

@ -19,6 +19,7 @@ import reactor.core.publisher.Mono;
import java.awt.*; import java.awt.*;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -51,9 +52,12 @@ public class GameRoleModule extends Component<DiscordPlugin> {
if (grm == null) return; if (grm == null) return;
val GameRoles = grm.GameRoles; val GameRoles = grm.GameRoles;
val logChannel = grm.logChannel().get(); val logChannel = grm.logChannel().get();
Predicate<Role> notMainServer = r -> r.getGuildId().asLong() != DiscordPlugin.mainServer.getId().asLong();
if (roleEvent instanceof RoleCreateEvent) { if (roleEvent instanceof RoleCreateEvent) {
Bukkit.getScheduler().runTaskLaterAsynchronously(DiscordPlugin.plugin, () -> { Bukkit.getScheduler().runTaskLaterAsynchronously(DiscordPlugin.plugin, () -> {
Role role=((RoleCreateEvent) roleEvent).getRole(); Role role = ((RoleCreateEvent) roleEvent).getRole();
if (notMainServer.test(role))
return;
grm.isGameRole(role, false).flatMap(b -> { grm.isGameRole(role, false).flatMap(b -> {
if (!b) if (!b)
return Mono.empty(); //Deleted or not a game role return Mono.empty(); //Deleted or not a game role
@ -64,21 +68,25 @@ public class GameRoleModule extends Component<DiscordPlugin> {
}).subscribe(); }).subscribe();
}, 100); }, 100);
} else if (roleEvent instanceof RoleDeleteEvent) { } else if (roleEvent instanceof RoleDeleteEvent) {
Role role=((RoleDeleteEvent) roleEvent).getRole().orElse(null); Role role = ((RoleDeleteEvent) roleEvent).getRole().orElse(null);
if(role==null) return; if (role == null) return;
if (notMainServer.test(role))
return;
if (GameRoles.remove(role.getName()) && logChannel != null) if (GameRoles.remove(role.getName()) && logChannel != null)
logChannel.flatMap(ch -> ch.createMessage("Removed " + role.getName() + " as a game role.")).subscribe(); logChannel.flatMap(ch -> ch.createMessage("Removed " + role.getName() + " as a game role.")).subscribe();
} else if (roleEvent instanceof RoleUpdateEvent) { } else if (roleEvent instanceof RoleUpdateEvent) {
val event = (RoleUpdateEvent) roleEvent; val event = (RoleUpdateEvent) roleEvent;
if(!event.getOld().isPresent()) { if (!event.getOld().isPresent()) {
DPUtils.getLogger().warning("Old role not stored, cannot update game role!"); DPUtils.getLogger().warning("Old role not stored, cannot update game role!");
return; return;
} }
Role or=event.getOld().get(); Role or = event.getOld().get();
if (notMainServer.test(or))
return;
grm.isGameRole(event.getCurrent(), true).flatMap(b -> { grm.isGameRole(event.getCurrent(), true).flatMap(b -> {
if (!b) { if (!b) {
if (GameRoles.remove(or.getName()) && logChannel != null) if (GameRoles.remove(or.getName()) && logChannel != null)
return logChannel.flatMap(ch -> ch.createMessage("Removed " + or.getName() + " as a game role because it's color changed.")); return logChannel.flatMap(ch -> ch.createMessage("Removed " + or.getName() + " as a game role because its color changed."));
} else { } else {
if (GameRoles.contains(or.getName()) && or.getName().equals(event.getCurrent().getName())) if (GameRoles.contains(or.getName()) && or.getName().equals(event.getCurrent().getName()))
return Mono.empty(); return Mono.empty();