9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-25 09:59:20 +00:00

fix(network): 修复1.20.2~1.20.4发自定义包

This commit is contained in:
jhqwqmc
2025-07-19 23:32:36 +08:00
parent 407d013725
commit ad6bd3ae3c
3 changed files with 11 additions and 3 deletions

View File

@@ -1887,7 +1887,6 @@ public class PacketConsumers {
try {
if (!VersionHelper.isOrAbove1_20_2()) return;
Object payload = NetworkReflections.methodHandle$ServerboundCustomPayloadPacket$payloadGetter.invokeExact(packet);
System.out.println(payload.getClass());
Payload clientPayload;
if (NetworkReflections.clazz$DiscardedPayload.isInstance(payload)) {
clientPayload = DiscardedPayload.from(payload);

View File

@@ -1248,7 +1248,9 @@ public final class NetworkReflections {
);
public static final Constructor<?> constructor$ClientboundCustomPayloadPacket = requireNonNull(
ReflectionUtils.getConstructor(clazz$ClientboundCustomPayloadPacket, 0)
VersionHelper.isOrAbove1_20_2()
? ReflectionUtils.getConstructor(clazz$ClientboundCustomPayloadPacket, clazz$CustomPacketPayload)
: ReflectionUtils.getConstructor(clazz$ClientboundCustomPayloadPacket, 0)
);
// 1.20.2+
@@ -1639,4 +1641,9 @@ public final class NetworkReflections {
public static final Field field$UnknownPayload$data = Optional.ofNullable(clazz$UnknownPayload)
.map(it -> ReflectionUtils.getDeclaredField(it, ByteBuf.class, 0))
.orElse(null);
// 1.20.2~1.20.4
public static final Constructor<?> constructor$UnknownPayload = Optional.ofNullable(clazz$UnknownPayload)
.map(ReflectionUtils::getTheOnlyConstructor)
.orElse(null);
}

View File

@@ -307,7 +307,9 @@ public class BukkitServerPlayer extends Player {
try {
Object channelKey = KeyUtils.toResourceLocation(channel);
Object dataPayload;
if (DiscardedPayload.useNewMethod) {
if (NetworkReflections.clazz$UnknownPayload != null) {
dataPayload = NetworkReflections.constructor$UnknownPayload.newInstance(channelKey, Unpooled.wrappedBuffer(data));
} else if (DiscardedPayload.useNewMethod) {
dataPayload = NetworkReflections.constructor$DiscardedPayload.newInstance(channelKey, data);
} else {
dataPayload = NetworkReflections.constructor$DiscardedPayload.newInstance(channelKey, Unpooled.wrappedBuffer(data));