diff --git a/SpigotCore/SpigotCore_Main/src/com/comphenix/tinyprotocol/TinyProtocol.java b/SpigotCore/SpigotCore_Main/src/com/comphenix/tinyprotocol/TinyProtocol.java index d869c13d..08732ee3 100644 --- a/SpigotCore/SpigotCore_Main/src/com/comphenix/tinyprotocol/TinyProtocol.java +++ b/SpigotCore/SpigotCore_Main/src/com/comphenix/tinyprotocol/TinyProtocol.java @@ -21,6 +21,7 @@ package com.comphenix.tinyprotocol; import com.google.common.collect.MapMaker; import de.steamwar.Reflection; +import de.steamwar.core.Core; import io.netty.channel.*; import net.minecraft.network.Connection; import net.minecraft.network.protocol.login.ServerboundHelloPacket; @@ -38,7 +39,6 @@ import org.bukkit.plugin.Plugin; import org.bukkit.scheduler.BukkitRunnable; import java.util.*; -import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Level; /** @@ -48,9 +48,7 @@ import java.util.logging.Level; * * @author Kristian */ -public abstract class TinyProtocol { - private static final AtomicInteger ID = new AtomicInteger(0); - +public class TinyProtocol { // Speedup channel lookup private Map channelLookup = new MapMaker().weakValues().makeMap(); private Listener listener; @@ -68,11 +66,13 @@ public abstract class TinyProtocol { private ChannelInitializer endInitProtocol; // Current handler name - private String handlerName; + private static final String HANDLER_NAME = "tiny-steamwar"; protected volatile boolean closed; protected Plugin plugin; + public static final TinyProtocol instance = new TinyProtocol(Core.getInstance()); + /** * Construct a new instance of TinyProtocol, and start intercepting packets for all connected clients and future clients. *

@@ -80,12 +80,9 @@ public abstract class TinyProtocol { * * @param plugin - the plugin. */ - public TinyProtocol(final Plugin plugin) { + private TinyProtocol(final Plugin plugin) { this.plugin = plugin; - // Compute handler name - this.handlerName = getHandlerName(); - // Prepare existing players registerBukkitEvents(); @@ -314,17 +311,6 @@ public abstract class TinyProtocol { channel.pipeline().context("encoder").fireChannelRead(packet); } - /** - * Retrieve the name of the channel injector, default implementation is "tiny-" + plugin name + "-" + a unique ID. - *

- * Note that this method will only be invoked once. It is no longer necessary to override this to support multiple instances. - * - * @return A unique channel handler name. - */ - protected String getHandlerName() { - return "tiny-" + plugin.getName() + "-" + ID.incrementAndGet(); - } - /** * Add a custom channel handler to the given player's channel pipeline, allowing us to intercept sent and received packets. *

@@ -354,19 +340,19 @@ public abstract class TinyProtocol { */ private PacketInterceptor injectChannelInternal(Channel channel) { try { - PacketInterceptor interceptor = (PacketInterceptor) channel.pipeline().get(handlerName); + PacketInterceptor interceptor = (PacketInterceptor) channel.pipeline().get(HANDLER_NAME); // Inject our packet interceptor if (interceptor == null) { interceptor = new PacketInterceptor(); - channel.pipeline().addBefore("packet_handler", handlerName, interceptor); + channel.pipeline().addBefore("packet_handler", HANDLER_NAME, interceptor); uninjectedChannels.remove(channel); } return interceptor; } catch (IllegalArgumentException e) { // Try again - return (PacketInterceptor) channel.pipeline().get(handlerName); + return (PacketInterceptor) channel.pipeline().get(HANDLER_NAME); } } @@ -415,7 +401,7 @@ public abstract class TinyProtocol { @Override public void run() { - channel.pipeline().remove(handlerName); + channel.pipeline().remove(HANDLER_NAME); } }); @@ -438,7 +424,7 @@ public abstract class TinyProtocol { * @return TRUE if it is, FALSE otherwise. */ public boolean hasInjected(Channel channel) { - return channel.pipeline().get(handlerName) != null; + return channel.pipeline().get(HANDLER_NAME) != null; } /**