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