diff --git a/build.gradle.kts b/build.gradle.kts index 4714c9a..e9c2d90 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { } group = "org.adde0109" -version = "1.4.5-fix1" +version = "1.4.5-fix2" repositories { mavenCentral() diff --git a/src/main/java/org/adde0109/ambassador/velocity/client/FML2CRPMResetCompleteDecoder.java b/src/main/java/org/adde0109/ambassador/velocity/client/FML2CRPMResetCompleteDecoder.java index 256827e..bb21a50 100644 --- a/src/main/java/org/adde0109/ambassador/velocity/client/FML2CRPMResetCompleteDecoder.java +++ b/src/main/java/org/adde0109/ambassador/velocity/client/FML2CRPMResetCompleteDecoder.java @@ -20,42 +20,35 @@ public class FML2CRPMResetCompleteDecoder extends ChannelInboundHandlerAdapter { int originalReaderIndex = buf.readerIndex(); int packetId = ProtocolUtils.readVarInt(buf); - if (packetId == 0x02 && buf.readableBytes() > 1) { + if (packetId != 0x02) { + buf.release(); + return; + } + if (buf.readableBytes() > 1) { try { int id = ProtocolUtils.readVarInt(buf); boolean success = buf.readBoolean(); if (id == 98) { try { - // 读取剩余的所有数据 int remainingBytes = buf.readableBytes(); - ByteBuf remainingData; - if (remainingBytes > 0) { - // 有剩余数据,读取它们 - remainingData = Unpooled.buffer(remainingBytes); + ByteBuf remainingData = Unpooled.buffer(remainingBytes); remainingData.writeBytes(buf, remainingBytes); - - // 调试日志(可选,可删除) - System.out.println("[Ambassador] FML2CRPM packet - id: 98, success: " + success + - ", captured " + remainingBytes + " extra bytes"); + IForgeLoginWrapperPacket packet = new GenericForgeLoginWrapperPacket(remainingData, id, success); + ctx.fireChannelRead(packet); } else { - // 没有剩余数据,使用空缓冲区 - remainingData = Unpooled.EMPTY_BUFFER; + IForgeLoginWrapperPacket packet = new GenericForgeLoginWrapperPacket(Unpooled.EMPTY_BUFFER, id, success); + ctx.fireChannelRead(packet); } - - IForgeLoginWrapperPacket packet = new GenericForgeLoginWrapperPacket(remainingData, id, success); - ctx.fireChannelRead(packet); } catch (Exception e) { - // 出错时记录日志 System.err.println("[Ambassador] Error creating FML2CRPM packet: " + e.getMessage()); } + buf.release(); return; } } catch (Exception ignored) { - // 忽略解析错误,回退到正常处理 } } - // 恢复读取位置 buf.readerIndex(originalReaderIndex); } ctx.fireChannelRead(msg);