From af470775127c285b1927215b1c1272afde56eb9a Mon Sep 17 00:00:00 2001 From: Antideveloppeur Date: Thu, 3 Dec 2020 03:21:19 +0100 Subject: [PATCH] Check if a CoreMember is muted before authorizing a MessageCommand to complete --- .../common/command/MessageCommand.java | 45 +++++++++++++------ 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/catalyst-common/src/main/java/org/anvilpowered/catalyst/common/command/MessageCommand.java b/catalyst-common/src/main/java/org/anvilpowered/catalyst/common/command/MessageCommand.java index a3224ee4..a2a3a8c2 100644 --- a/catalyst-common/src/main/java/org/anvilpowered/catalyst/common/command/MessageCommand.java +++ b/catalyst-common/src/main/java/org/anvilpowered/catalyst/common/command/MessageCommand.java @@ -19,6 +19,9 @@ import com.google.inject.Inject; import com.mojang.brigadier.context.CommandContext; +import org.anvilpowered.anvil.api.Anvil; +import org.anvilpowered.anvil.api.coremember.CoreMemberManager; +import org.anvilpowered.anvil.api.model.coremember.CoreMember; import org.anvilpowered.anvil.api.util.TextService; import org.anvilpowered.anvil.api.util.UserService; import org.anvilpowered.catalyst.api.plugin.PluginMessages; @@ -62,19 +65,35 @@ public int execute(CommandContext context, Class consoleClass textService.send(pluginMessages.messageSelf(), context.getSource()); return 0; } - privateMessageService.sendMessage( - userService.getUserName((TPlayer) context.getSource()), - name, - message - ); - privateMessageService.replyMap().put( - userService.getUUID(targetPlayer.get()), - userService.getUUID((TPlayer) context.getSource()) - ); - privateMessageService.replyMap().put( - userService.getUUID((TPlayer) context.getSource()), - userService.getUUID(targetPlayer.get()) - ); + Anvil.getServiceManager().provide(CoreMemberManager.class).getPrimaryComponent() + .getOneForUser( + userService.getUUID((TPlayer) context.getSource()) + ).thenAcceptAsync(optionalMember -> { + if (!optionalMember.isPresent()) { + return; + } + CoreMember coreMember = optionalMember.get(); + if (Anvil.getServiceManager().provide(CoreMemberManager.class).getPrimaryComponent().checkMuted(coreMember)) { + textService.send( + pluginMessages.getMuteMessage(coreMember.getMuteReason(), coreMember.getMuteEndUtc()), + context.getSource() + ); + } else { + privateMessageService.sendMessage( + userService.getUserName((TPlayer) context.getSource()), + name, + message + ); + privateMessageService.replyMap().put( + userService.getUUID(targetPlayer.get()), + userService.getUUID((TPlayer) context.getSource()) + ); + privateMessageService.replyMap().put( + userService.getUUID((TPlayer) context.getSource()), + userService.getUUID(targetPlayer.get()) + ); + } + }); } else { textService.send(pluginMessages.offlineOrInvalidPlayer(), context.getSource()); }