From a9be164979e3a805a39ab26acdb21afbff94d96f Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Sat, 31 Jul 2021 03:46:50 +0200 Subject: [PATCH] Made global chat async and added uuid to it everywhere --- .../java/com/alttd/chat/commands/GlobalChat.java | 15 +++++++++------ .../com/alttd/chat/listeners/PluginMessage.java | 2 +- .../alttd/chat/events/GlobalAdminChatEvent.java | 8 +++++++- .../com/alttd/chat/handlers/ServerHandler.java | 3 ++- .../chat/listeners/PluginMessageListener.java | 2 +- 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/galaxy/src/main/java/com/alttd/chat/commands/GlobalChat.java b/galaxy/src/main/java/com/alttd/chat/commands/GlobalChat.java index 136b1cc..ec7e52b 100755 --- a/galaxy/src/main/java/com/alttd/chat/commands/GlobalChat.java +++ b/galaxy/src/main/java/com/alttd/chat/commands/GlobalChat.java @@ -1,7 +1,6 @@ package com.alttd.chat.commands; import com.alttd.chat.ChatPlugin; -import com.alttd.chat.managers.ChatUserManager; import org.apache.commons.lang.StringUtils; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -9,20 +8,24 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; -import java.util.Objects; - public class GlobalChat implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if(!(sender instanceof Player)) { // must be a player + if(!(sender instanceof Player player)) { // must be a player return true; } - Player player = (Player) sender; if(args.length == 0) return false; String message = StringUtils.join(args, " ", 0, args.length); - ChatPlugin.getInstance().getChatHandler().globalChat(player, message); + + new BukkitRunnable() { + @Override + public void run() { + ChatPlugin.getInstance().getChatHandler().globalChat(player, message); + } + }.runTaskAsynchronously(ChatPlugin.getInstance()); + return false; } diff --git a/galaxy/src/main/java/com/alttd/chat/listeners/PluginMessage.java b/galaxy/src/main/java/com/alttd/chat/listeners/PluginMessage.java index a0c047f..de4ccb3 100755 --- a/galaxy/src/main/java/com/alttd/chat/listeners/PluginMessage.java +++ b/galaxy/src/main/java/com/alttd/chat/listeners/PluginMessage.java @@ -38,7 +38,7 @@ public class PluginMessage implements PluginMessageListener { break; } case "globalchat": { - if (ChatPlugin.getInstance().serverGlobalChatEnabled()) { + if (ChatPlugin.getInstance().serverGlobalChatEnabled() && !ChatPlugin.getInstance().serverMuted()) { String uuidString = in.readUTF(); if (!uuidString.matches("\\b[0-9a-f]{8}\\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\\b[0-9a-f]{12}\\b")) { Bukkit.broadcast(GsonComponentSerializer.gson().deserialize(uuidString), Config.GCPERMISSION); diff --git a/velocity/src/main/java/com/alttd/chat/events/GlobalAdminChatEvent.java b/velocity/src/main/java/com/alttd/chat/events/GlobalAdminChatEvent.java index 1094f7b..b066e89 100755 --- a/velocity/src/main/java/com/alttd/chat/events/GlobalAdminChatEvent.java +++ b/velocity/src/main/java/com/alttd/chat/events/GlobalAdminChatEvent.java @@ -4,10 +4,12 @@ import com.velocitypowered.api.command.CommandSource; public class GlobalAdminChatEvent { private final CommandSource sender; + private final String uuid; private final String message; - public GlobalAdminChatEvent(CommandSource sender, String message) { + public GlobalAdminChatEvent(CommandSource sender, String uuid, String message) { this.sender = sender; + this.uuid = uuid; this.message = message; } @@ -15,6 +17,10 @@ public class GlobalAdminChatEvent { return sender; } + public String getUuid() { + return uuid; + } + public String getMessage() { return message; } diff --git a/velocity/src/main/java/com/alttd/chat/handlers/ServerHandler.java b/velocity/src/main/java/com/alttd/chat/handlers/ServerHandler.java index a96294f..edfa934 100755 --- a/velocity/src/main/java/com/alttd/chat/handlers/ServerHandler.java +++ b/velocity/src/main/java/com/alttd/chat/handlers/ServerHandler.java @@ -39,7 +39,7 @@ public class ServerHandler { } } - public void sendGlobalChat(String message) { + public void sendGlobalChat(String uuid, String message) { // Component component = GsonComponentSerializer.gson().deserialize(message); servers.stream() @@ -47,6 +47,7 @@ public class ServerHandler { .forEach(registeredServer -> { ByteArrayDataOutput buf = ByteStreams.newDataOutput(); buf.writeUTF("globalchat"); + buf.writeUTF(uuid); buf.writeUTF(message); registeredServer.sendPluginMessage(VelocityChat.getPlugin().getChannelIdentifier(), buf.toByteArray()); }); diff --git a/velocity/src/main/java/com/alttd/chat/listeners/PluginMessageListener.java b/velocity/src/main/java/com/alttd/chat/listeners/PluginMessageListener.java index dcd3294..c377d10 100755 --- a/velocity/src/main/java/com/alttd/chat/listeners/PluginMessageListener.java +++ b/velocity/src/main/java/com/alttd/chat/listeners/PluginMessageListener.java @@ -33,7 +33,7 @@ public class PluginMessageListener { VelocityChat.getPlugin().getLogger().info("server " + event.getSource()); switch (channel) { case "globalchat": - VelocityChat.getPlugin().getServerHandler().sendGlobalChat(in.readUTF()); + VelocityChat.getPlugin().getServerHandler().sendGlobalChat(in.readUTF(), in.readUTF()); break; case "globaladminchat": VelocityChat.getPlugin().getChatHandler().globalAdminChat(in.readUTF());