From 47fb2050012086d0065582c6cee14638c96489da Mon Sep 17 00:00:00 2001 From: destro174 <40720638+destro174@users.noreply.github.com> Date: Sat, 14 Aug 2021 19:55:32 +0200 Subject: [PATCH] Add a reload command --- api/src/main/java/com/alttd/chat/ChatAPI.java | 4 ++ .../com/alttd/chat/ChatImplementation.java | 12 +++++- .../com/alttd/chat/config/ServerConfig.java | 2 +- .../main/java/com/alttd/chat/ChatPlugin.java | 10 +++++ .../alttd/chat/listeners/PluginMessage.java | 3 ++ .../java/com/alttd/chat/VelocityChat.java | 14 +++++++ .../java/com/alttd/chat/commands/Reload.java | 39 +++++++++++++++++++ 7 files changed, 82 insertions(+), 2 deletions(-) create mode 100755 velocity/src/main/java/com/alttd/chat/commands/Reload.java diff --git a/api/src/main/java/com/alttd/chat/ChatAPI.java b/api/src/main/java/com/alttd/chat/ChatAPI.java index acc9eb0..9cb583b 100755 --- a/api/src/main/java/com/alttd/chat/ChatAPI.java +++ b/api/src/main/java/com/alttd/chat/ChatAPI.java @@ -13,4 +13,8 @@ public interface ChatAPI { DatabaseConnection getDataBase(); + void ReloadConfig(); + + void ReloadChatFilters(); + } diff --git a/api/src/main/java/com/alttd/chat/ChatImplementation.java b/api/src/main/java/com/alttd/chat/ChatImplementation.java index 379f27c..79f82fa 100755 --- a/api/src/main/java/com/alttd/chat/ChatImplementation.java +++ b/api/src/main/java/com/alttd/chat/ChatImplementation.java @@ -18,7 +18,7 @@ public class ChatImplementation implements ChatAPI{ public ChatImplementation() { instance = this; - Config.init(); + ReloadConfig(); luckPerms = getLuckPerms(); databaseConnection = getDataBase(); @@ -49,4 +49,14 @@ public class ChatImplementation implements ChatAPI{ return databaseConnection; } + @Override + public void ReloadConfig() { + Config.init(); + } + + @Override + public void ReloadChatFilters() { + RegexManager.initialize(); + } + } diff --git a/api/src/main/java/com/alttd/chat/config/ServerConfig.java b/api/src/main/java/com/alttd/chat/config/ServerConfig.java index 98103e8..9bc0418 100755 --- a/api/src/main/java/com/alttd/chat/config/ServerConfig.java +++ b/api/src/main/java/com/alttd/chat/config/ServerConfig.java @@ -68,7 +68,7 @@ public final class ServerConfig { /** DO NOT EDIT ANYTHING ABOVE **/ - public boolean GLOBALCHAT = true; + public boolean GLOBALCHAT = false; public boolean JOINLEAVEMSSAGES = true; public boolean MUTED = false; private void ServerSettings() { diff --git a/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java b/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java index a6b3f0a..89c048d 100755 --- a/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java +++ b/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java @@ -11,6 +11,8 @@ import com.alttd.chat.listeners.PluginMessage; import com.alttd.chat.objects.channels.Channel; import com.alttd.chat.objects.channels.CustomChannel; import com.alttd.chat.util.ALogger; +import com.google.common.io.ByteArrayDataOutput; +import com.google.common.io.ByteStreams; import org.bukkit.Bukkit; import org.bukkit.command.CommandExecutor; import org.bukkit.command.PluginCommand; @@ -104,4 +106,12 @@ public class ChatPlugin extends JavaPlugin { public void toggleServerMuted() { serverConfig.MUTED = !serverConfig.MUTED; } + + public void ReloadConfig() { + chatAPI.ReloadConfig(); + chatAPI.ReloadChatFilters(); + serverConfig = new ServerConfig(Bukkit.getServerName()); + Bukkit.broadcast("Reloaded ChatPlugin Config.", "command.proxy.reloadchat"); + ALogger.info("Reloaded ChatPlugin config."); + } } 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 2049e10..7df9290 100755 --- a/galaxy/src/main/java/com/alttd/chat/listeners/PluginMessage.java +++ b/galaxy/src/main/java/com/alttd/chat/listeners/PluginMessage.java @@ -136,6 +136,9 @@ public class PluginMessage implements PluginMessageListener { }.runTaskAsynchronously(ChatPlugin.getInstance()); break; } + case "reloadconfig": + ChatPlugin.getInstance().ReloadConfig(); + break; default: break; } diff --git a/velocity/src/main/java/com/alttd/chat/VelocityChat.java b/velocity/src/main/java/com/alttd/chat/VelocityChat.java index 63d6f75..bb04ed1 100755 --- a/velocity/src/main/java/com/alttd/chat/VelocityChat.java +++ b/velocity/src/main/java/com/alttd/chat/VelocityChat.java @@ -9,7 +9,10 @@ import com.alttd.chat.listeners.ChatListener; import com.alttd.chat.listeners.ProxyPlayerListener; import com.alttd.chat.listeners.PluginMessageListener; import com.alttd.chat.util.ALogger; +import com.google.common.io.ByteArrayDataOutput; +import com.google.common.io.ByteStreams; import com.google.inject.Inject; +import com.velocitypowered.api.command.CommandSource; import com.velocitypowered.api.event.Subscribe; import com.velocitypowered.api.event.proxy.ProxyInitializeEvent; import com.velocitypowered.api.plugin.Dependency; @@ -18,6 +21,7 @@ import com.velocitypowered.api.plugin.annotation.DataDirectory; import com.velocitypowered.api.proxy.ProxyServer; import com.velocitypowered.api.proxy.messages.ChannelIdentifier; import com.velocitypowered.api.proxy.messages.MinecraftChannelIdentifier; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; import org.slf4j.Logger; import java.io.File; @@ -68,6 +72,16 @@ public class VelocityChat { loadCommands(); } + public void ReloadConfig() { + chatAPI.ReloadConfig(); + chatAPI.ReloadChatFilters(); + serverHandler.cleanup(); + ByteArrayDataOutput buf = ByteStreams.newDataOutput(); + buf.writeUTF("reloadconfig"); + ALogger.info("Reloaded ChatPlugin proxy config."); + getProxy().getAllServers().stream().forEach(registeredServer -> registeredServer.sendPluginMessage(getChannelIdentifier(), buf.toByteArray())); + } + public File getDataDirectory() { return dataDirectory.toFile(); } diff --git a/velocity/src/main/java/com/alttd/chat/commands/Reload.java b/velocity/src/main/java/com/alttd/chat/commands/Reload.java new file mode 100755 index 0000000..348ca5f --- /dev/null +++ b/velocity/src/main/java/com/alttd/chat/commands/Reload.java @@ -0,0 +1,39 @@ +package com.alttd.chat.commands; + +import com.alttd.chat.VelocityChat; +import com.alttd.chat.config.Config; +import com.mojang.brigadier.arguments.StringArgumentType; +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import com.mojang.brigadier.builder.RequiredArgumentBuilder; +import com.mojang.brigadier.suggestion.Suggestions; +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; + +import java.util.ArrayList; +import java.util.Collection; + +public class Reload { + + public Reload(ProxyServer proxyServer) { + LiteralCommandNode command = LiteralArgumentBuilder + .literal("reloadchat") + .requires(ctx -> ctx.hasPermission("command.proxy.reloadchat")) + .executes(context -> { + VelocityChat.getPlugin().ReloadConfig(); + return 1; + }) + .build(); + + BrigadierCommand brigadierCommand = new BrigadierCommand(command); + + CommandMeta.Builder metaBuilder = proxyServer.getCommandManager().metaBuilder(brigadierCommand); + + CommandMeta meta = metaBuilder.build(); + + proxyServer.getCommandManager().register(meta, brigadierCommand); + } +}