Skip to content

Commit a6d9d78

Browse files
committed
intercept messages for DM channel from chat event
1 parent 5ac65a9 commit a6d9d78

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

src/main/java/pro/cloudnode/smp/cloudnodemsg/listener/AsyncChatListener.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,17 @@
1111
import org.jetbrains.annotations.NotNull;
1212
import pro.cloudnode.smp.cloudnodemsg.CloudnodeMSG;
1313
import pro.cloudnode.smp.cloudnodemsg.Permission;
14+
import pro.cloudnode.smp.cloudnodemsg.error.InvalidPlayerError;
1415
import pro.cloudnode.smp.cloudnodemsg.message.Message;
1516

1617
import java.util.HashSet;
1718
import java.util.Iterator;
19+
import java.util.Optional;
1820
import java.util.Set;
1921

2022
public final class AsyncChatListener implements Listener {
2123
@EventHandler (priority = EventPriority.LOWEST)
22-
public void onAsyncChat(final @NotNull AsyncChatEvent event) {
24+
public void ignore(final @NotNull AsyncChatEvent event) {
2325
final @NotNull Set<@NotNull Audience> audience = event.viewers();
2426
final @NotNull Iterator<@NotNull Audience> iterator = audience.iterator();
2527
final @NotNull Player sender = event.getPlayer();
@@ -34,4 +36,25 @@ public void onAsyncChat(final @NotNull AsyncChatEvent event) {
3436
}
3537
}
3638
}
39+
40+
@EventHandler (priority = EventPriority.HIGHEST)
41+
public void channels(final @NotNull AsyncChatEvent event) {
42+
final @NotNull Player sender = event.getPlayer();
43+
final @NotNull Optional<@NotNull OfflinePlayer> channelRecipient = Message.getChannel(sender);
44+
if (channelRecipient.isEmpty()) return;
45+
event.setCancelled(true);
46+
final @NotNull Optional<@NotNull Player> recipient = channelRecipient.map(p -> p.isOnline() ? p.getPlayer() : null);
47+
if (recipient.isEmpty()) {
48+
Message.exitChannel(sender);
49+
sender.sendMessage(CloudnodeMSG.getInstance().config().channelOffline(sender.getName(), Optional.ofNullable(channelRecipient.get().getName()).orElse("Unknown Player")));
50+
return;
51+
}
52+
53+
try {
54+
new Message(sender, recipient.get(), event.message()).send();
55+
}
56+
catch (final @NotNull InvalidPlayerError e) {
57+
e.log().send(sender);
58+
}
59+
}
3760
}

0 commit comments

Comments
 (0)