mirror of
https://github.com/GeyserMC/MCProtocolLib.git
synced 2024-11-14 11:24:57 -05:00
Cancel packet using exception rather than return
This commit is contained in:
parent
d4eddfa4c0
commit
6507e77bbe
3 changed files with 14 additions and 1 deletions
|
@ -0,0 +1,7 @@
|
|||
package org.geysermc.mcprotocollib.network.packet;
|
||||
|
||||
public class PacketCancelException extends RuntimeException {
|
||||
public PacketCancelException() {
|
||||
super("This packet should not be sent out!");
|
||||
}
|
||||
}
|
|
@ -11,6 +11,7 @@ import org.geysermc.mcprotocollib.network.codec.PacketDefinition;
|
|||
import org.geysermc.mcprotocollib.network.event.session.PacketErrorEvent;
|
||||
import org.geysermc.mcprotocollib.network.packet.FakeFlushPacket;
|
||||
import org.geysermc.mcprotocollib.network.packet.Packet;
|
||||
import org.geysermc.mcprotocollib.network.packet.PacketCancelException;
|
||||
import org.geysermc.mcprotocollib.network.packet.PacketProtocol;
|
||||
import org.geysermc.mcprotocollib.network.packet.PacketRegistry;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -34,7 +35,7 @@ public class TcpPacketCodec extends ByteToMessageCodec<Packet> {
|
|||
public void encode(ChannelHandlerContext ctx, Packet packet, ByteBuf buf) {
|
||||
if (packet == FakeFlushPacket.INSTANCE) {
|
||||
log.debug("Fake flush packet reached");
|
||||
return;
|
||||
throw new PacketCancelException();
|
||||
}
|
||||
|
||||
if (log.isTraceEnabled()) {
|
||||
|
|
|
@ -22,6 +22,7 @@ import org.geysermc.mcprotocollib.network.event.session.PacketSendingEvent;
|
|||
import org.geysermc.mcprotocollib.network.event.session.SessionEvent;
|
||||
import org.geysermc.mcprotocollib.network.event.session.SessionListener;
|
||||
import org.geysermc.mcprotocollib.network.packet.Packet;
|
||||
import org.geysermc.mcprotocollib.network.packet.PacketCancelException;
|
||||
import org.geysermc.mcprotocollib.network.packet.PacketProtocol;
|
||||
|
||||
import java.net.SocketAddress;
|
||||
|
@ -315,6 +316,10 @@ public abstract class TcpSession extends SimpleChannelInboundHandler<Packet> imp
|
|||
|
||||
@Override
|
||||
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
|
||||
if (cause instanceof PacketCancelException) {
|
||||
return;
|
||||
}
|
||||
|
||||
Component message;
|
||||
if (cause instanceof TimeoutException) {
|
||||
message = Component.translatable("disconnect.timeout");
|
||||
|
|
Loading…
Reference in a new issue