bungeeChannelInitializer = PipelineUtils.SERVER_CHILD;
+
+ Method initChannelMethod = ChannelInitializer.class.getDeclaredMethod("initChannel", Channel.class);
+ initChannelMethod.setAccessible(true);
+
+ serverChild.set(null, new ChannelInitializer<>() {
+ @Override
+ protected void initChannel(Channel channel) throws Exception {
+ initChannelMethod.invoke(bungeeChannelInitializer, channel);
+ channel.pipeline().addFirst("haproxy-decoder", new HAProxyMessageDecoder());
+ channel.pipeline().addAfter("haproxy-decoder", "haproxy-handler", new ChannelInboundHandlerAdapter() {
+ @Override
+ public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
+ if (msg instanceof HAProxyMessage) {
+ HAProxyMessage message = (HAProxyMessage) msg;
+ remoteAddressField.set(channel, new InetSocketAddress(message.sourceAddress(), message.sourcePort()));
+ } else {
+ super.channelRead(ctx, msg);
+ }
+ }
+ });
+ }
+ });
+ } catch (Exception e) {
+ getLogger().log(Level.SEVERE, e.getMessage(), e);
+ }
+ }
+}
diff --git a/src/main/java/de/ytendx/haproxy/tinyprotocol/TinyProtocol.java b/src/main/java/de/ytendx/haproxy/tinyprotocol/TinyProtocol.java
index 644dc4f..3a438fe 100644
--- a/src/main/java/de/ytendx/haproxy/tinyprotocol/TinyProtocol.java
+++ b/src/main/java/de/ytendx/haproxy/tinyprotocol/TinyProtocol.java
@@ -1,25 +1,18 @@
package de.ytendx.haproxy.tinyprotocol;
-import de.ytendx.haproxy.HAProxySpigotImplementor;
-import io.netty.buffer.ByteBuf;
import io.netty.channel.*;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
-import java.sql.Ref;
-import java.util.Arrays;
import java.util.List;
-import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
-import io.netty.handler.codec.ByteToMessageDecoder;
import io.netty.handler.codec.haproxy.HAProxyMessage;
import io.netty.handler.codec.haproxy.HAProxyMessageDecoder;
import org.bukkit.Bukkit;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable;
-import com.google.common.collect.Lists;
/**
* Represents a very tiny alternative to ProtocolLib.
*
@@ -47,8 +40,6 @@ public class TinyProtocol {
// List of network markers
private List