Skip to content

Commit

Permalink
fix: bundling related issues
Browse files Browse the repository at this point in the history
  • Loading branch information
ishland committed Dec 5, 2023
1 parent 1a39d78 commit a6dc0e8
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,21 @@
package com.ishland.raknetify.fabric.common.connection.bundler;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.handler.codec.MessageToMessageDecoder;
import java.util.List;
import net.minecraft.network.packet.BundleSplitterPacket;
import net.minecraft.network.packet.Packet;
import org.jetbrains.annotations.NotNull;

public class DummyBundler extends ChannelInboundHandlerAdapter {

public class DummyBundler extends MessageToMessageDecoder<Packet<?>> {
@Override
protected void decode(ChannelHandlerContext channelHandlerContext, Packet<?> packet, List<Object> list) throws Exception {
if (packet instanceof BundleSplitterPacket) {
public void channelRead(@NotNull ChannelHandlerContext ctx, @NotNull Object msg) {
if (msg instanceof BundleSplitterPacket) {
System.err.println("Raknetify: received bundle delimiter packet from server, this is not supposed to happen, dropping");
return;
} else {
list.add(packet);
}
ctx.fireChannelRead(msg);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,31 @@

package com.ishland.raknetify.fabric.common.connection.bundler;

import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageEncoder;
import java.util.List;
import io.netty.channel.ChannelOutboundHandlerAdapter;
import io.netty.channel.ChannelPromise;

import io.netty.util.concurrent.PromiseCombiner;
import net.minecraft.network.listener.ClientPlayPacketListener;
import net.minecraft.network.packet.Packet;
import net.minecraft.network.packet.s2c.play.BundleS2CPacket;

public class DummyUnbundler extends MessageToMessageEncoder<Packet<?>> {
public class DummyUnbundler extends ChannelOutboundHandlerAdapter {

@Override
protected void encode(ChannelHandlerContext channelHandlerContext, Packet<?> packet, List<Object> list) throws Exception {
if (packet instanceof BundleS2CPacket p) {
p.getPackets().forEach(list::add);
} else {
list.add(packet);
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) {
if (msg instanceof BundleS2CPacket p) {
@SuppressWarnings("deprecation") final PromiseCombiner combiner = new PromiseCombiner();
for (Packet<ClientPlayPacketListener> p1 : p.getPackets()) {
final ChannelPromise promise1 = ctx.newPromise();
ctx.write(p1, promise1);
combiner.add((ChannelFuture) promise1);
}
combiner.finish(promise);
return;
}
ctx.write(msg, promise);
}

}

0 comments on commit a6dc0e8

Please sign in to comment.