diff --git a/pom.xml b/pom.xml index 615a6ea..d0f10d7 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 mineverse.Aust1n46.chat VentureChat - 3.7.1 + 3.7.2 https://bitbucket.org/Aust1n46/venturechat/src/master https://bitbucket.org/Aust1n46/venturechat/src/master diff --git a/src/main/java/mineverse/Aust1n46/chat/MineverseChat.java b/src/main/java/mineverse/Aust1n46/chat/MineverseChat.java index 685d9c5..d523b15 100644 --- a/src/main/java/mineverse/Aust1n46/chat/MineverseChat.java +++ b/src/main/java/mineverse/Aust1n46/chat/MineverseChat.java @@ -78,6 +78,17 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { // Vault private static Permission permission = null; private static Chat chat = null; + + // TODO: This won't be so poorly done in the 4.0.0 branch I promise... + public static boolean isConnectedToProxy() { + try { + final MineverseChat plugin = MineverseChat.getInstance(); + return (plugin.getServer().spigot().getConfig().getBoolean("settings.bungeecord") + || plugin.getServer().spigot().getPaperConfig().getBoolean("settings.velocity-support.enabled") + || plugin.getServer().spigot().getPaperConfig().getBoolean("proxies.velocity.enabled")); + } catch (final NoSuchMethodError ignored) {} // Thrown if server isn't Paper. + return false; + } @Override public void onEnable() { @@ -125,10 +136,12 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { registerListeners(); Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Registering Listeners")); Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Attaching to Executors")); - - Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Establishing BungeeCord")); - Bukkit.getMessenger().registerOutgoingPluginChannel(this, PLUGIN_MESSAGING_CHANNEL); - Bukkit.getMessenger().registerIncomingPluginChannel(this, PLUGIN_MESSAGING_CHANNEL, this); + + if (MineverseChat.isConnectedToProxy()) { + Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Establishing BungeeCord")); + Bukkit.getMessenger().registerOutgoingPluginChannel(this, PLUGIN_MESSAGING_CHANNEL); + Bukkit.getMessenger().registerIncomingPluginChannel(this, PLUGIN_MESSAGING_CHANNEL, this); + } PluginManager pluginManager = getServer().getPluginManager(); if(pluginManager.isPluginEnabled("Towny")) { @@ -363,6 +376,9 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { @Override public void onPluginMessageReceived(String channel, Player player, byte[] inputStream) { + if (!MineverseChat.isConnectedToProxy()) { + return; + } if(!channel.equals(PLUGIN_MESSAGING_CHANNEL)) { return; } @@ -431,7 +447,7 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { if(getConfig().getBoolean("ignorechat", false)) { if(!p.getIgnores().contains(senderUUID)) { // System.out.println("Chat sent"); - Format.sendPacketPlayOutChat(p.getPlayer(), packet); + Format.sendPacketPlayOutChat(p.getPlayer(), packet); } continue; } diff --git a/src/main/java/mineverse/Aust1n46/chat/listeners/LoginListener.java b/src/main/java/mineverse/Aust1n46/chat/listeners/LoginListener.java index 8729bc6..d5876c9 100644 --- a/src/main/java/mineverse/Aust1n46/chat/listeners/LoginListener.java +++ b/src/main/java/mineverse/Aust1n46/chat/listeners/LoginListener.java @@ -72,22 +72,15 @@ public class LoginListener implements Listener { mcp.addListening(ch.getName()); } } - - try { - if(plugin.getServer().spigot().getConfig().getBoolean("settings.bungeecord") - || plugin.getServer().spigot().getPaperConfig().getBoolean("settings.velocity-support.enabled") - || plugin.getServer().spigot().getPaperConfig().getBoolean("proxies.velocity.enabled")) { - long delayInTicks = 20L; - final MineverseChatPlayer sync = mcp; - plugin.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() { - public void run() { - MineverseChat.synchronize(sync, false); - } - }, delayInTicks); - } - } - catch(NoSuchMethodError exception) { // Thrown if server isn't Paper. - // Do nothing + + if (MineverseChat.isConnectedToProxy()) { + long delayInTicks = 20L; + final MineverseChatPlayer sync = mcp; + plugin.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() { + public void run() { + MineverseChat.synchronize(sync, false); + } + }, delayInTicks); } } } diff --git a/src/main/java/mineverse/Aust1n46/chat/proxy/VentureChatBungee.java b/src/main/java/mineverse/Aust1n46/chat/proxy/VentureChatBungee.java index 60736b3..37fdf0a 100644 --- a/src/main/java/mineverse/Aust1n46/chat/proxy/VentureChatBungee.java +++ b/src/main/java/mineverse/Aust1n46/chat/proxy/VentureChatBungee.java @@ -105,6 +105,9 @@ public class VentureChatBungee extends Plugin implements Listener, VentureChatPr if(!event.getTag().equals(VentureChatProxy.PLUGIN_MESSAGING_CHANNEL_STRING) && !event.getTag().contains("viaversion:")) { return; } + // Critical to prevent client from sending or receiving messages + event.setCancelled(true); + if(!(event.getSender() instanceof Server)) { return; } diff --git a/src/main/java/mineverse/Aust1n46/chat/proxy/VentureChatVelocity.java b/src/main/java/mineverse/Aust1n46/chat/proxy/VentureChatVelocity.java index f661ef5..e60761c 100644 --- a/src/main/java/mineverse/Aust1n46/chat/proxy/VentureChatVelocity.java +++ b/src/main/java/mineverse/Aust1n46/chat/proxy/VentureChatVelocity.java @@ -134,12 +134,14 @@ public class VentureChatVelocity implements VentureChatProxySource { if(!channelIdentifierId.equals(VentureChatProxy.PLUGIN_MESSAGING_CHANNEL_STRING) && !channelIdentifierId.contains("viaversion:")) { return; } + // Critical to prevent client from sending or receiving messages + event.setResult(ForwardResult.handled()); + if(!(event.getSource() instanceof ServerConnection)) { return; } String serverName = ((ServerConnection) event.getSource()).getServerInfo().getName(); VentureChatProxy.onPluginMessage(event.getData(), serverName, this); - event.setResult(ForwardResult.handled()); } @Override