Move global admin chat to ChatHandler

This commit is contained in:
len 2021-05-24 15:14:11 +02:00
parent d8a4490358
commit 595bff765a
3 changed files with 34 additions and 1 deletions

View File

@ -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.

View File

@ -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
.<CommandSource, String>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?
)

View File

@ -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<String, String> 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