From d6645fddd219a327e708b07fd191ea48a7aa7714 Mon Sep 17 00:00:00 2001 From: FeuSalamander Date: Sat, 25 Nov 2023 18:32:59 +0100 Subject: [PATCH] added discord integration --- .../me/feusalamander/vmessage/Listeners.java | 63 ++++++++++++++++++- .../me/feusalamander/vmessage/VMessage.java | 12 +++- src/main/resources/config.toml | 8 +++ 3 files changed, 79 insertions(+), 4 deletions(-) diff --git a/src/main/java/me/feusalamander/vmessage/Listeners.java b/src/main/java/me/feusalamander/vmessage/Listeners.java index c6d9109..c24b064 100644 --- a/src/main/java/me/feusalamander/vmessage/Listeners.java +++ b/src/main/java/me/feusalamander/vmessage/Listeners.java @@ -14,7 +14,9 @@ import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import net.luckperms.api.LuckPerms; import net.luckperms.api.LuckPermsProvider; import net.luckperms.api.cacheddata.CachedMetaData; +import ooo.foooooooooooo.velocitydiscord.VelocityDiscord; +import java.util.Arrays; import java.util.Objects; import java.util.Optional; @@ -51,7 +53,6 @@ public final class Listeners { if (!configuration.isLeaveEnabled()) { return; } - if (!e.getLoginStatus().equals(DisconnectEvent.LoginStatus.SUCCESSFUL_LOGIN)){ return; } @@ -85,10 +86,25 @@ public final class Listeners { if (luckPermsAPI != null) { message = luckperms(message, p); } + String discordRaw; + if(VMessage.isDiscord()){ + String dump = ""; + String[] dump2 = message.replace("&", "§").split("§"); + proxyServer.sendMessage(Component.text(Arrays.toString(dump2))); + for(String string : dump2){ + if(string.length() >1) + dump = dump+string.substring(1); + } + discordRaw = dump; + } else { + discordRaw = message; + } if (configuration.isMinimessageEnabled()) { proxyServer.sendMessage(mm.deserialize(message.replace("§", ""))); + if(VMessage.isDiscord())VelocityDiscord.getDiscord().sendMessage(discordRaw); } else { proxyServer.sendMessage(SERIALIZER.deserialize(message)); + if(VMessage.isDiscord())VelocityDiscord.getDiscord().sendMessage(discordRaw); } } @@ -136,10 +152,25 @@ public final class Listeners { if (luckPermsAPI != null) { message = luckperms(message, p); } + String discordRaw; + if(VMessage.isDiscord()){ + String dump = ""; + String[] dump2 = message.replace("&", "§").split("§"); + proxyServer.sendMessage(Component.text(Arrays.toString(dump2))); + for(String string : dump2){ + if(string.length() >1) + dump = dump+string.substring(1); + } + discordRaw = dump; + } else { + discordRaw = message; + } if (configuration.isMinimessageEnabled()) { proxyServer.sendMessage(mm.deserialize(message.replace("§", ""))); + if(VMessage.isDiscord())VelocityDiscord.getDiscord().sendMessage(discordRaw); } else { proxyServer.sendMessage(SERIALIZER.deserialize(message)); + if(VMessage.isDiscord())VelocityDiscord.getDiscord().sendMessage(discordRaw); } } else if (serverConnection.isPresent()){ if (!configuration.isJoinEnabled()) { @@ -170,10 +201,25 @@ public final class Listeners { if (luckPermsAPI != null) { message = luckperms(message, p); } + String discordRaw; + if(VMessage.isDiscord()){ + String dump = ""; + String[] dump2 = message.replace("&", "§").split("§"); + proxyServer.sendMessage(Component.text(Arrays.toString(dump2))); + for(String string : dump2){ + if(string.length() >1) + dump = dump+string.substring(1); + } + discordRaw = dump; + } else { + discordRaw = message; + } if (configuration.isMinimessageEnabled()) { proxyServer.sendMessage(mm.deserialize(message.replace("§", ""))); + if(VMessage.isDiscord())VelocityDiscord.getDiscord().sendMessage(discordRaw); } else { proxyServer.sendMessage(SERIALIZER.deserialize(message)); + if(VMessage.isDiscord())VelocityDiscord.getDiscord().sendMessage(discordRaw); } } } @@ -231,13 +277,28 @@ public final class Listeners { finalMessage = SERIALIZER.deserialize(message); } if(!permission)finalMessage = finalMessage.replaceText("#message#", Component.text(m)); + String discordRaw; + if(VMessage.isDiscord()){ + String dump = ""; + String[] dump2 = message.replace("&", "§").split("§"); + proxyServer.sendMessage(Component.text(Arrays.toString(dump2))); + for(String string : dump2){ + if(string.length() >1) + dump = dump+string.substring(1); + } + discordRaw = dump; + } else { + discordRaw = message; + } if(configuration.isAllEnabled()){ proxyServer.sendMessage(finalMessage); + if(VMessage.isDiscord())VelocityDiscord.getDiscord().sendMessage(discordRaw); }else { final Component FMessage = finalMessage; proxyServer.getAllServers().forEach(server -> { if (!Objects.equals(p.getCurrentServer().map(ServerConnection::getServerInfo).orElse(null), server.getServerInfo())) { server.sendMessage(FMessage); + if(VMessage.isDiscord())VelocityDiscord.getDiscord().sendMessage(discordRaw); } }); } diff --git a/src/main/java/me/feusalamander/vmessage/VMessage.java b/src/main/java/me/feusalamander/vmessage/VMessage.java index 72bd1c5..4c68e8b 100644 --- a/src/main/java/me/feusalamander/vmessage/VMessage.java +++ b/src/main/java/me/feusalamander/vmessage/VMessage.java @@ -10,6 +10,7 @@ import com.velocitypowered.api.plugin.Dependency; import com.velocitypowered.api.plugin.Plugin; import com.velocitypowered.api.plugin.annotation.DataDirectory; import com.velocitypowered.api.proxy.ProxyServer; +import net.kyori.adventure.text.Component; import org.slf4j.Logger; import java.nio.file.Path; @@ -17,12 +18,12 @@ import java.nio.file.Path; @Plugin( id = "vmessage", name = "Vmessage", - version = "1.6.0", + version = "1.6.1", description = "A velocity plugin that creates a multi server chat for the network", authors = {"FeuSalamander"}, dependencies = { @Dependency(id = "luckperms", optional = true), - @Dependency(id = "papiproxybridge",optional = true) + @Dependency(id = "discord",optional = true) } ) public class VMessage { @@ -31,6 +32,7 @@ public class VMessage { private final Metrics.Factory metricsFactory; private final Path dataDirectory; public Listeners listeners; + private static boolean discord; @Inject public VMessage(ProxyServer proxy, Logger logger, Metrics.Factory metricsFactory, @DataDirectory Path dataDirectory) { @@ -38,6 +40,7 @@ public class VMessage { this.logger = logger; this.metricsFactory = metricsFactory; this.dataDirectory = dataDirectory; + this.discord = proxy.getPluginManager().isLoaded("discord"); } @Subscribe @@ -49,7 +52,6 @@ public class VMessage { metricsFactory.make(this, 16527); listeners = new Listeners(proxy, configuration); proxy.getEventManager().register(this, listeners); - logger.info("Vmessage by FeuSalamander is working !"); CommandManager commandManager = proxy.getCommandManager(); CommandMeta commandMeta = commandManager.metaBuilder("Vmessage") .plugin(this) @@ -61,5 +63,9 @@ public class VMessage { .build(); SimpleCommand sendcommand = new SendCommand(this); commandManager.register(sendmeta, sendcommand); + logger.info("Vmessage by FeuSalamander is working !"); + } + public static boolean isDiscord(){ + return discord; } } diff --git a/src/main/resources/config.toml b/src/main/resources/config.toml index 9e3fe83..4e37423 100644 --- a/src/main/resources/config.toml +++ b/src/main/resources/config.toml @@ -9,6 +9,8 @@ minimessage = false #- "#suffix#" : return the player's luckperms suffix #- "#message#" : return the player's message #- "#server#" : return the player's server name +#- "#custom1#" : return the player's custom defined luckperms meta keys +#- "#custom2#" : return the player's custom defined luckperms meta keys format = "&a(#server#) #prefix# #player# &8&l> &r#message#" all = false #if the formated message is sent even in the server where the player is located (can cause some issues with other plugins) commands = [] @@ -19,6 +21,8 @@ enabled = true #- "#server#" : return the new player's server name #- "#prefix#" : return the player's luckperms prefix #- "#suffix#" : return the player's luckperms suffix +#- "#custom1#" : return the player's custom defined luckperms meta keys +#- "#custom2#" : return the player's custom defined luckperms meta keys format = "&7#prefix# #player# &ejoined &7#server#" commands = [] #The proxy commands which are executed (no / in the commands) enabled = true @@ -28,6 +32,8 @@ enabled = true #- "#oldserver#" : return the previous player's server name #- "#prefix#" : return the player's luckperms prefix #- "#suffix#" : return the player's luckperms suffix +#- "#custom1#" : return the player's custom defined luckperms meta keys +#- "#custom2#" : return the player's custom defined luckperms meta keys format = "#&7prefix# #player# &eleft &7#oldserver#" commands = [] enabled = true @@ -38,6 +44,8 @@ enabled = true #- "#suffix#" : return the player's luckperms suffix #- "#oldserver#" : return the previous player's server name #- "#server#" : return the new player's server name +#- "#custom1#" : return the player's custom defined luckperms meta keys +#- "#custom2#" : return the player's custom defined luckperms meta keys format = "&7#prefix# #player# &eleft &c#oldserver# &eto join &a#server#" commands = [] enabled = true