diff --git a/velocity/src/main/java/com/alttd/chat/VelocityChat.java b/velocity/src/main/java/com/alttd/chat/VelocityChat.java index 672b0cb..3b03326 100644 --- a/velocity/src/main/java/com/alttd/chat/VelocityChat.java +++ b/velocity/src/main/java/com/alttd/chat/VelocityChat.java @@ -59,6 +59,7 @@ public class VelocityChat { public void onProxyInitialization(ProxyInitializeEvent event) { new ALogger(logger); Config.init(getDataDirectory()); + new DatabaseConnection(); Queries.createTables(); ChatUserManager.initialize(); // loads all the users from the db and adds them. diff --git a/velocity/src/main/java/com/alttd/chat/commands/GlobalAdminChat.java b/velocity/src/main/java/com/alttd/chat/commands/GlobalAdminChat.java index 1ed8519..4631b4b 100644 --- a/velocity/src/main/java/com/alttd/chat/commands/GlobalAdminChat.java +++ b/velocity/src/main/java/com/alttd/chat/commands/GlobalAdminChat.java @@ -1,5 +1,6 @@ package com.alttd.chat.commands; +import com.alttd.chat.VelocityChat; import com.alttd.chat.events.GlobalAdminChatEvent; import com.alttd.chat.config.Config; import com.mojang.brigadier.arguments.StringArgumentType; @@ -9,6 +10,7 @@ import com.mojang.brigadier.tree.LiteralCommandNode; import com.velocitypowered.api.command.BrigadierCommand; import com.velocitypowered.api.command.CommandMeta; import com.velocitypowered.api.command.CommandSource; +import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.ProxyServer; public class GlobalAdminChat { @@ -20,7 +22,7 @@ public class GlobalAdminChat { .then(RequiredArgumentBuilder .argument("message", StringArgumentType.greedyString()) .executes(context -> { - proxyServer.getEventManager().fire(new GlobalAdminChatEvent(context.getSource(), context.getArgument("message", String.class))); + VelocityChat.getPlugin().getChatHandler().globalAdminChat(context.getSource(), context.getArgument("message", String.class)); return 1; }) // TODO call in the same way as gc? ) diff --git a/velocity/src/main/java/com/alttd/chat/handlers/ChatHandler.java b/velocity/src/main/java/com/alttd/chat/handlers/ChatHandler.java index 46cfc22..01ba0db 100644 --- a/velocity/src/main/java/com/alttd/chat/handlers/ChatHandler.java +++ b/velocity/src/main/java/com/alttd/chat/handlers/ChatHandler.java @@ -3,8 +3,11 @@ package com.alttd.chat.handlers; import com.alttd.chat.VelocityChat; import com.alttd.chat.config.Config; import com.alttd.chat.data.ChatUser; +import com.alttd.chat.events.GlobalAdminChatEvent; import com.alttd.chat.util.Utility; import com.velocitypowered.api.command.CommandSource; +import com.velocitypowered.api.event.PostOrder; +import com.velocitypowered.api.event.Subscribe; import com.velocitypowered.api.proxy.Player; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; @@ -89,6 +92,33 @@ public class ChatHandler { recipient.sendMessage(receiverMessage); } + public void globalAdminChat(CommandSource commandSource, String message) { + String senderName = Config.CONSOLENAME; + String serverName = "Altitude"; + if (commandSource instanceof Player) { + Player sender = (Player) commandSource; + senderName = sender.getUsername(); + serverName = sender.getCurrentServer().isPresent() ? sender.getCurrentServer().get().getServerInfo().getName() : "Altitude"; + } + + MiniMessage miniMessage = MiniMessage.get(); + + message = Utility.parseColors(message); + + Map map = new HashMap<>(); + + map.put("sender", senderName); + //map.put("message", event.getMessage()); + map.put("message", Utility.parseColors(message)); + map.put("server", serverName); + + Component component = miniMessage.parse(Config.GACFORMAT, map); + + VelocityChat.getPlugin().getProxy().getAllPlayers().stream().filter(target -> target.hasPermission("command.proxy.globaladminchat")/*TODO permission*/).forEach(target -> { + target.sendMessage(component); + }); + } + /** * constructs a mail object and notifies all involved players about it * / mail send playerA,playerB,playerC message