From f8185ddb0d46b9fa9c941c1f70d4037c45ef4f5a Mon Sep 17 00:00:00 2001 From: 3944Realms Date: Sat, 6 Jun 2026 02:41:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E4=BF=AE=E5=A4=8D=E6=B3=84?= =?UTF-8?q?=E9=9C=B2=E5=88=B0=20BundleDelimiterPacket=20=E7=9A=84=E8=A7=A3?= =?UTF-8?q?=E7=A0=81=E8=BF=87=E7=A8=8B=E4=B8=AD=E7=9A=84=E6=84=8F=E5=A4=96?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 2 +- .../client/FML2CRPMResetCompleteDecoder.java | 29 ++++++++++++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) 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);