From 0653dc8c15a1f0ec7b9d607535875bb53bb94d48 Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Thu, 13 Sep 2012 17:29:37 +0200 Subject: [PATCH] Made the "getPlugin" method mandatory for all listeners. It's pretty useful for the data collector, as well as the utility method "removePacketListeners". --- .../comphenix/protocol/ProtocolLibrary.java | 2 -- .../comphenix/protocol/ProtocolManager.java | 2 +- .../protocol/events/PacketAdapter.java | 18 +++++++++++------- .../protocol/events/PacketListener.java | 8 ++++++++ .../protocol/injector/PacketFilterManager.java | 18 ++++++++---------- .../comphenix/protocol/metrics/Statistics.java | 8 +------- 6 files changed, 29 insertions(+), 27 deletions(-) diff --git a/ProtocolLib/src/com/comphenix/protocol/ProtocolLibrary.java b/ProtocolLib/src/com/comphenix/protocol/ProtocolLibrary.java index 8ce98be9..f1e89d10 100644 --- a/ProtocolLib/src/com/comphenix/protocol/ProtocolLibrary.java +++ b/ProtocolLib/src/com/comphenix/protocol/ProtocolLibrary.java @@ -9,8 +9,6 @@ import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import com.comphenix.protocol.injector.PacketFilterManager; -import com.comphenix.protocol.metrics.Metrics; -import com.comphenix.protocol.metrics.Metrics.Plotter; import com.comphenix.protocol.metrics.Statistics; public class ProtocolLibrary extends JavaPlugin { diff --git a/ProtocolLib/src/com/comphenix/protocol/ProtocolManager.java b/ProtocolLib/src/com/comphenix/protocol/ProtocolManager.java index 297042a4..0f3c6f41 100644 --- a/ProtocolLib/src/com/comphenix/protocol/ProtocolManager.java +++ b/ProtocolLib/src/com/comphenix/protocol/ProtocolManager.java @@ -40,7 +40,7 @@ public interface ProtocolManager { * Note that this only works for listeners that derive from PacketAdapter. * @param plugin - the plugin to unload. */ - public void removePacketAdapters(Plugin plugin); + public void removePacketListeners(Plugin plugin); /** * Send a packet to the given player. diff --git a/ProtocolLib/src/com/comphenix/protocol/events/PacketAdapter.java b/ProtocolLib/src/com/comphenix/protocol/events/PacketAdapter.java index cea27b0e..920d958d 100644 --- a/ProtocolLib/src/com/comphenix/protocol/events/PacketAdapter.java +++ b/ProtocolLib/src/com/comphenix/protocol/events/PacketAdapter.java @@ -50,10 +50,7 @@ public abstract class PacketAdapter implements PacketListener { return packetsID; } - /** - * Retrieves the plugin associated with this listener. - * @return The associated plugin. - */ + @Override public Plugin getPlugin() { return plugin; } @@ -62,10 +59,17 @@ public abstract class PacketAdapter implements PacketListener { * Retrieves the name of the plugin that has been associated with the listener. * @return Name of the associated plugin. */ - public String getPluginName() { + public static String getPluginName(PacketListener listener) { + + Plugin plugin = listener.getPlugin(); + // Try to get the plugin name try { - return plugin.getName(); + if (plugin == null) + return "UNKNOWN"; + else + return plugin.getName(); + } catch (NoSuchMethodError e) { return plugin.toString(); } @@ -75,7 +79,7 @@ public abstract class PacketAdapter implements PacketListener { public String toString() { // This is used by the error reporter return String.format("PacketAdapter[plugin=%s, side=%s, packets=%s]", - getPluginName(), getConnectionSide().name(), + getPluginName(this), getConnectionSide().name(), Joiner.on(", ").join(packetsID)); } } diff --git a/ProtocolLib/src/com/comphenix/protocol/events/PacketListener.java b/ProtocolLib/src/com/comphenix/protocol/events/PacketListener.java index 6b0b7fc0..a1ee72b7 100644 --- a/ProtocolLib/src/com/comphenix/protocol/events/PacketListener.java +++ b/ProtocolLib/src/com/comphenix/protocol/events/PacketListener.java @@ -2,6 +2,8 @@ package com.comphenix.protocol.events; import java.util.Set; +import org.bukkit.plugin.Plugin; + public interface PacketListener { @@ -31,4 +33,10 @@ public interface PacketListener { * @return Packets IDs. */ public Set getPacketsID(); + + /** + * Retrieve the plugin that created list packet listener. + * @return The plugin, or NULL if not available. + */ + public Plugin getPlugin(); } diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java b/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java index e184766f..8da2f87d 100644 --- a/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java +++ b/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java @@ -27,11 +27,11 @@ import org.bukkit.plugin.PluginManager; import com.comphenix.protocol.ProtocolManager; import com.comphenix.protocol.events.ConnectionSide; -import com.comphenix.protocol.events.PacketAdapter; import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.events.PacketEvent; import com.comphenix.protocol.events.PacketListener; import com.comphenix.protocol.reflect.FuzzyReflection; +import com.google.common.base.Objects; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; @@ -107,17 +107,15 @@ public final class PacketFilterManager implements ProtocolManager { } @Override - public void removePacketAdapters(Plugin plugin) { + public void removePacketListeners(Plugin plugin) { // Iterate through every packet listener - for (Object listener : packetListeners.toArray()) { - if (listener instanceof PacketAdapter) { - PacketAdapter adapter = (PacketAdapter) listener; - - // Remove the listener - if (adapter.getPlugin().equals(plugin)) { - packetListeners.remove(listener); - } + for (Object element : packetListeners.toArray()) { + PacketListener listener = (PacketListener) element; + + // Remove the listener + if (Objects.equal(listener.getPlugin(), plugin)) { + packetListeners.remove(listener); } } } diff --git a/ProtocolLib/src/com/comphenix/protocol/metrics/Statistics.java b/ProtocolLib/src/com/comphenix/protocol/metrics/Statistics.java index 4be64d78..9bc5665d 100644 --- a/ProtocolLib/src/com/comphenix/protocol/metrics/Statistics.java +++ b/ProtocolLib/src/com/comphenix/protocol/metrics/Statistics.java @@ -49,13 +49,7 @@ public class Statistics { for (PacketListener listener : manager.getPacketListeners()) { - String name = "UNKNOWN"; - - if (listener instanceof PacketAdapter) { - PacketAdapter adapter = (PacketAdapter) listener; - name = adapter.getPluginName(); - } - + String name = PacketAdapter.getPluginName(listener); // Increment occurence if (!users.containsKey(name)) {