@Override protected void initChannel(SocketChannel socketChannel) throws Exception { UserConnection info = new UserConnection(socketChannel); // init protocol new ProtocolPipeline(info); // Add originals this.method.invoke(this.original, socketChannel); if (socketChannel.pipeline().get("packet-encoder") == null) return; // Don't inject if no packet-encoder if (socketChannel.pipeline().get("packet-decoder") == null) return; // Don't inject if no packet-decoder // Add our transformers BungeeEncodeHandler encoder = new BungeeEncodeHandler(info); BungeeDecodeHandler decoder = new BungeeDecodeHandler(info); socketChannel.pipeline().addBefore("packet-encoder", "via-encoder", encoder); socketChannel.pipeline().addBefore("packet-decoder", "via-decoder", decoder); } }
@Override protected void initChannel(Channel channel) throws Exception { initChannel.invoke(original, channel); UserConnection user = new UserConnection(channel); new ProtocolPipeline(user); // We need to add a separated handler because Velocity uses pipeline().get(MINECRAFT_DECODER) channel.pipeline().addBefore("minecraft-encoder", "via-encoder", new VelocityEncodeHandler(user)); channel.pipeline().addBefore("minecraft-decoder", "via-decoder", new VelocityDecodeHandler(user)); } }
@Override protected void initChannel(SocketChannel socketChannel) throws Exception { UserConnection info = new UserConnection(socketChannel); // init protocol new ProtocolPipeline(info); // Add originals this.method.invoke(this.original, socketChannel); HandlerConstructor constructor = ClassGenerator.getConstructor(); // Add our transformers MessageToByteEncoder encoder = constructor.newEncodeHandler(info, (MessageToByteEncoder) socketChannel.pipeline().get("encoder")); ByteToMessageDecoder decoder = constructor.newDecodeHandler(info, (ByteToMessageDecoder) socketChannel.pipeline().get("decoder")); BukkitPacketHandler chunkHandler = new BukkitPacketHandler(info); socketChannel.pipeline().replace("encoder", "encoder", encoder); socketChannel.pipeline().replace("decoder", "decoder", decoder); socketChannel.pipeline().addAfter("packet_handler", "viaversion_packet_handler", chunkHandler); } }
@Override protected void initChannel(Channel channel) throws Exception { // Ensure ViaVersion is loaded if (ProtocolRegistry.SERVER_PROTOCOL != -1 && channel instanceof SocketChannel) { // channel can be LocalChannel on internal server UserConnection info = new UserConnection((SocketChannel) channel); // init protocol new ProtocolPipeline(info); // Add originals this.method.invoke(this.original, channel); // Add our transformers MessageToByteEncoder encoder = new SpongeEncodeHandler(info, (MessageToByteEncoder) channel.pipeline().get("encoder")); ByteToMessageDecoder decoder = new SpongeDecodeHandler(info, (ByteToMessageDecoder) channel.pipeline().get("decoder")); SpongePacketHandler chunkHandler = new SpongePacketHandler(info); channel.pipeline().replace("encoder", "encoder", encoder); channel.pipeline().replace("decoder", "decoder", decoder); channel.pipeline().addAfter("packet_handler", "viaversion_packet_handler", chunkHandler); } else { this.method.invoke(this.original, channel); } } }