Skip to content
This repository has been archived by the owner on Apr 4, 2023. It is now read-only.

Commit

Permalink
Fix an error when packet_handler isn't in the connection pipeline
Browse files Browse the repository at this point in the history
Added a fallback for `packet_handler` not being in the connection pipeline for any reason
  • Loading branch information
V1nc3ntWasTaken committed Sep 18, 2022
2 parents 64decc4 + 33afcd1 commit b8568ff
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 36 deletions.
46 changes: 34 additions & 12 deletions 1.19.1/src/main/java/me/doclic/noencryption/PlayerListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,25 +25,47 @@ public static void startup() {
for (final Player player : Bukkit.getOnlinePlayers()) {

final ChannelPipeline pipeline = new CompatiblePlayer().getChannel(player).pipeline();
pipeline.addBefore("packet_handler", "no_encryption_interceptor", new ChannelDuplexHandler() {
if (pipeline.get("packet_handler") == null) {
pipeline.addFirst("no_encryption_interceptor", new ChannelDuplexHandler() {

@Override
public void channelRead(ChannelHandlerContext channelHandlerContext, Object packet) throws Exception {
@Override
public void channelRead(ChannelHandlerContext channelHandlerContext, Object packet) throws Exception {

Object newPacket = new CompatiblePacketListener().readPacket(channelHandlerContext, packet);
super.channelRead(channelHandlerContext, newPacket);
Object newPacket = new CompatiblePacketListener().readPacket(channelHandlerContext, packet);
super.channelRead(channelHandlerContext, newPacket);

}
}

@Override
public void write(ChannelHandlerContext channelHandlerContext, Object packet, ChannelPromise promise) throws Exception {
@Override
public void write(ChannelHandlerContext channelHandlerContext, Object packet, ChannelPromise promise) throws Exception {

Object newPacket = new CompatiblePacketListener().writePacket(channelHandlerContext, packet, promise);
super.write(channelHandlerContext, newPacket, promise);
Object newPacket = new CompatiblePacketListener().writePacket(channelHandlerContext, packet, promise);
super.write(channelHandlerContext, newPacket, promise);

}
}

});
});
} else {
pipeline.addBefore("packet_handler", "no_encryption_interceptor", new ChannelDuplexHandler() {

@Override
public void channelRead(ChannelHandlerContext channelHandlerContext, Object packet) throws Exception {

Object newPacket = new CompatiblePacketListener().readPacket(channelHandlerContext, packet);
super.channelRead(channelHandlerContext, newPacket);

}

@Override
public void write(ChannelHandlerContext channelHandlerContext, Object packet, ChannelPromise promise) throws Exception {

Object newPacket = new CompatiblePacketListener().writePacket(channelHandlerContext, packet, promise);
super.write(channelHandlerContext, newPacket, promise);

}

});
}

}

Expand Down
46 changes: 34 additions & 12 deletions 1.19.2/src/main/java/me/doclic/noencryption/PlayerListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,25 +59,47 @@ public void onPlayerJoin (PlayerJoinEvent e) {
if (e.getPlayer().isOnline()) {
final Player player = e.getPlayer();
final ChannelPipeline pipeline = new CompatiblePlayer().getChannel(player).pipeline();
pipeline.addBefore("packet_handler", "no_encryption_interceptor", new ChannelDuplexHandler() {
if (pipeline.get("packet_handler") == null) {
pipeline.addFirst("no_encryption_interceptor", new ChannelDuplexHandler() {

@Override
public void channelRead(ChannelHandlerContext channelHandlerContext, Object packet) throws Exception {
@Override
public void channelRead(ChannelHandlerContext channelHandlerContext, Object packet) throws Exception {

Object newPacket = new CompatiblePacketListener().readPacket(channelHandlerContext, packet);
super.channelRead(channelHandlerContext, newPacket);
Object newPacket = new CompatiblePacketListener().readPacket(channelHandlerContext, packet);
super.channelRead(channelHandlerContext, newPacket);

}
}

@Override
public void write(ChannelHandlerContext channelHandlerContext, Object packet, ChannelPromise promise) throws Exception {
@Override
public void write(ChannelHandlerContext channelHandlerContext, Object packet, ChannelPromise promise) throws Exception {

Object newPacket = new CompatiblePacketListener().writePacket(channelHandlerContext, packet, promise);
super.write(channelHandlerContext, newPacket, promise);
Object newPacket = new CompatiblePacketListener().writePacket(channelHandlerContext, packet, promise);
super.write(channelHandlerContext, newPacket, promise);

}
}

});
});
} else {
pipeline.addBefore("packet_handler", "no_encryption_interceptor", new ChannelDuplexHandler() {

@Override
public void channelRead(ChannelHandlerContext channelHandlerContext, Object packet) throws Exception {

Object newPacket = new CompatiblePacketListener().readPacket(channelHandlerContext, packet);
super.channelRead(channelHandlerContext, newPacket);

}

@Override
public void write(ChannelHandlerContext channelHandlerContext, Object packet, ChannelPromise promise) throws Exception {

Object newPacket = new CompatiblePacketListener().writePacket(channelHandlerContext, packet, promise);
super.write(channelHandlerContext, newPacket, promise);

}

});
}
}

} else {
Expand Down
46 changes: 34 additions & 12 deletions 1.19/src/main/java/me/doclic/noencryption/PlayerListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,25 +25,47 @@ public static void startup() {
for (final Player player : Bukkit.getOnlinePlayers()) {

final ChannelPipeline pipeline = new CompatiblePlayer().getChannel(player).pipeline();
pipeline.addBefore("packet_handler", "no_encryption_interceptor", new ChannelDuplexHandler() {
if (pipeline.get("packet_handler") == null) {
pipeline.addFirst("no_encryption_interceptor", new ChannelDuplexHandler() {

@Override
public void channelRead(ChannelHandlerContext channelHandlerContext, Object packet) throws Exception {
@Override
public void channelRead(ChannelHandlerContext channelHandlerContext, Object packet) throws Exception {

Object newPacket = new CompatiblePacketListener().readPacket(channelHandlerContext, packet);
super.channelRead(channelHandlerContext, newPacket);
Object newPacket = new CompatiblePacketListener().readPacket(channelHandlerContext, packet);
super.channelRead(channelHandlerContext, newPacket);

}
}

@Override
public void write(ChannelHandlerContext channelHandlerContext, Object packet, ChannelPromise promise) throws Exception {
@Override
public void write(ChannelHandlerContext channelHandlerContext, Object packet, ChannelPromise promise) throws Exception {

Object newPacket = new CompatiblePacketListener().writePacket(channelHandlerContext, packet, promise);
super.write(channelHandlerContext, newPacket, promise);
Object newPacket = new CompatiblePacketListener().writePacket(channelHandlerContext, packet, promise);
super.write(channelHandlerContext, newPacket, promise);

}
}

});
});
} else {
pipeline.addBefore("packet_handler", "no_encryption_interceptor", new ChannelDuplexHandler() {

@Override
public void channelRead(ChannelHandlerContext channelHandlerContext, Object packet) throws Exception {

Object newPacket = new CompatiblePacketListener().readPacket(channelHandlerContext, packet);
super.channelRead(channelHandlerContext, newPacket);

}

@Override
public void write(ChannelHandlerContext channelHandlerContext, Object packet, ChannelPromise promise) throws Exception {

Object newPacket = new CompatiblePacketListener().writePacket(channelHandlerContext, packet, promise);
super.write(channelHandlerContext, newPacket, promise);

}

});
}

}

Expand Down

0 comments on commit b8568ff

Please sign in to comment.