1111import org .jetbrains .annotations .NotNull ;
1212import pro .cloudnode .smp .cloudnodemsg .CloudnodeMSG ;
1313import pro .cloudnode .smp .cloudnodemsg .Permission ;
14+ import pro .cloudnode .smp .cloudnodemsg .error .InvalidPlayerError ;
1415import pro .cloudnode .smp .cloudnodemsg .message .Message ;
1516
1617import java .util .HashSet ;
1718import java .util .Iterator ;
19+ import java .util .Optional ;
1820import java .util .Set ;
1921
2022public 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