Compare commits

...

1 Commits

Author SHA1 Message Date
Aust1n46
d964918a7b
Cancel/handle plugin message events to/from client (#133)
* Cancel/handle plugin message events to/from client

* spacing
2025-02-20 00:37:16 -06:00
5 changed files with 37 additions and 23 deletions

View File

@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>mineverse.Aust1n46.chat</groupId> <groupId>mineverse.Aust1n46.chat</groupId>
<artifactId>VentureChat</artifactId> <artifactId>VentureChat</artifactId>
<version>3.7.1</version> <version>3.7.2</version>
<url>https://bitbucket.org/Aust1n46/venturechat/src/master</url> <url>https://bitbucket.org/Aust1n46/venturechat/src/master</url>
<scm> <scm>
<url>https://bitbucket.org/Aust1n46/venturechat/src/master</url> <url>https://bitbucket.org/Aust1n46/venturechat/src/master</url>

View File

@ -79,6 +79,17 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
private static Permission permission = null; private static Permission permission = null;
private static Chat chat = 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 @Override
public void onEnable() { public void onEnable() {
ccInfo = new ChatChannelInfo(); ccInfo = new ChatChannelInfo();
@ -126,9 +137,11 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Registering Listeners")); 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 - Attaching to Executors"));
Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Establishing BungeeCord")); if (MineverseChat.isConnectedToProxy()) {
Bukkit.getMessenger().registerOutgoingPluginChannel(this, PLUGIN_MESSAGING_CHANNEL); Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Establishing BungeeCord"));
Bukkit.getMessenger().registerIncomingPluginChannel(this, PLUGIN_MESSAGING_CHANNEL, this); Bukkit.getMessenger().registerOutgoingPluginChannel(this, PLUGIN_MESSAGING_CHANNEL);
Bukkit.getMessenger().registerIncomingPluginChannel(this, PLUGIN_MESSAGING_CHANNEL, this);
}
PluginManager pluginManager = getServer().getPluginManager(); PluginManager pluginManager = getServer().getPluginManager();
if(pluginManager.isPluginEnabled("Towny")) { if(pluginManager.isPluginEnabled("Towny")) {
@ -363,6 +376,9 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
@Override @Override
public void onPluginMessageReceived(String channel, Player player, byte[] inputStream) { public void onPluginMessageReceived(String channel, Player player, byte[] inputStream) {
if (!MineverseChat.isConnectedToProxy()) {
return;
}
if(!channel.equals(PLUGIN_MESSAGING_CHANNEL)) { if(!channel.equals(PLUGIN_MESSAGING_CHANNEL)) {
return; return;
} }

View File

@ -73,21 +73,14 @@ public class LoginListener implements Listener {
} }
} }
try { if (MineverseChat.isConnectedToProxy()) {
if(plugin.getServer().spigot().getConfig().getBoolean("settings.bungeecord") long delayInTicks = 20L;
|| plugin.getServer().spigot().getPaperConfig().getBoolean("settings.velocity-support.enabled") final MineverseChatPlayer sync = mcp;
|| plugin.getServer().spigot().getPaperConfig().getBoolean("proxies.velocity.enabled")) { plugin.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
long delayInTicks = 20L; public void run() {
final MineverseChatPlayer sync = mcp; MineverseChat.synchronize(sync, false);
plugin.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() { }
public void run() { }, delayInTicks);
MineverseChat.synchronize(sync, false);
}
}, delayInTicks);
}
}
catch(NoSuchMethodError exception) { // Thrown if server isn't Paper.
// Do nothing
} }
} }
} }

View File

@ -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:")) { if(!event.getTag().equals(VentureChatProxy.PLUGIN_MESSAGING_CHANNEL_STRING) && !event.getTag().contains("viaversion:")) {
return; return;
} }
// Critical to prevent client from sending or receiving messages
event.setCancelled(true);
if(!(event.getSender() instanceof Server)) { if(!(event.getSender() instanceof Server)) {
return; return;
} }

View File

@ -134,12 +134,14 @@ public class VentureChatVelocity implements VentureChatProxySource {
if(!channelIdentifierId.equals(VentureChatProxy.PLUGIN_MESSAGING_CHANNEL_STRING) && !channelIdentifierId.contains("viaversion:")) { if(!channelIdentifierId.equals(VentureChatProxy.PLUGIN_MESSAGING_CHANNEL_STRING) && !channelIdentifierId.contains("viaversion:")) {
return; return;
} }
// Critical to prevent client from sending or receiving messages
event.setResult(ForwardResult.handled());
if(!(event.getSource() instanceof ServerConnection)) { if(!(event.getSource() instanceof ServerConnection)) {
return; return;
} }
String serverName = ((ServerConnection) event.getSource()).getServerInfo().getName(); String serverName = ((ServerConnection) event.getSource()).getServerInfo().getName();
VentureChatProxy.onPluginMessage(event.getData(), serverName, this); VentureChatProxy.onPluginMessage(event.getData(), serverName, this);
event.setResult(ForwardResult.handled());
} }
@Override @Override