Fix WrappedPacketInCustomPayload
This commit is contained in:
1 parent
7ff578e1c6
commit
a2e19f7020
2 files changed
+46
-22
No files matched your search
@@ -58,13 +58,11 @@ public class PacketEventsPlugin extends JavaPlugin {
|
||||
ItemStack stack = new ItemStack(Material.STICK);
|
||||
WrappedPacketOutSetSlot setSlot = new WrappedPacketOutSetSlot(0, 37, stack);
|
||||
PacketEvents.get().getPlayerUtils().sendPacket(event.getPlayer(), setSlot);
|
||||
}
|
||||
else if (event.getPacketId() == PacketType.Play.Client.CUSTOM_PAYLOAD) {
|
||||
} else if (event.getPacketId() == PacketType.Play.Client.CUSTOM_PAYLOAD) {
|
||||
WrappedPacketInCustomPayload cp = new WrappedPacketInCustomPayload(event.getNMSPacket());
|
||||
System.out.println("name: " + cp.getChannelName());
|
||||
if (cp.getChannelName().contains("brand")) {
|
||||
System.out.println("Data: " + ((new String(cp.getData(), StandardCharsets.UTF_8))));
|
||||
}
|
||||
String name = cp.getChannelName();
|
||||
System.out.println("name play: " + name);
|
||||
System.out.println("Data: " + ((new String(cp.getData(), StandardCharsets.UTF_8))));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,10 +70,9 @@ public class PacketEventsPlugin extends JavaPlugin {
|
||||
public void onPacketConfigReceive(PacketConfigReceiveEvent event) {
|
||||
if (event.getPacketId() == PacketType.Play.Client.CUSTOM_PAYLOAD) {
|
||||
WrappedPacketInCustomPayload cp = new WrappedPacketInCustomPayload(event.getNMSPacket());
|
||||
System.out.println("name: " + cp.getChannelName());
|
||||
if (cp.getChannelName().contains("brand")) {
|
||||
System.out.println("Data: " + ((new String(cp.getData(), StandardCharsets.UTF_8))));
|
||||
}
|
||||
String name = cp.getChannelName();
|
||||
System.out.println("name: " + name);
|
||||
System.out.println("Data: " + ((new String(cp.getData(), StandardCharsets.UTF_8))));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,8 +84,7 @@ public class PacketEventsPlugin extends JavaPlugin {
|
||||
WrappedPacketOutEntityEffect eff = new WrappedPacketOutEntityEffect(event.getNMSPacket());
|
||||
eff.setEffectId(eff.getEffectId());
|
||||
System.out.println("eff: " + eff.getEffectId() + ", ampl: " + eff.getAmplifier() + ", dur:" + eff.getDuration());
|
||||
}
|
||||
else if (event.getPacketId() == PacketType.Play.Server.ENTITY_VELOCITY) {
|
||||
} else if (event.getPacketId() == PacketType.Play.Server.ENTITY_VELOCITY) {
|
||||
WrappedPacketOutEntityVelocity ev = new WrappedPacketOutEntityVelocity(event.getNMSPacket());
|
||||
}
|
||||
}
|
||||
|
||||
+38
-10
@@ -22,6 +22,7 @@ import io.github.retrooper.packetevents.PacketEvents;
|
||||
import io.github.retrooper.packetevents.packettype.PacketTypeClasses;
|
||||
import io.github.retrooper.packetevents.packetwrappers.NMSPacket;
|
||||
import io.github.retrooper.packetevents.packetwrappers.WrappedPacket;
|
||||
import io.github.retrooper.packetevents.utils.netty.bytebuf.ByteBufUtil;
|
||||
import io.github.retrooper.packetevents.utils.nms.NMSUtils;
|
||||
import io.github.retrooper.packetevents.utils.reflection.Reflection;
|
||||
import io.github.retrooper.packetevents.utils.server.ServerVersion;
|
||||
@@ -31,10 +32,11 @@ import java.lang.reflect.Method;
|
||||
|
||||
public final class WrappedPacketInCustomPayload extends WrappedPacket {
|
||||
private static boolean strPresent, byteArrayPresent, customPacketPayloadPresent;
|
||||
private static Class<?> CUSTOM_PACKET_PAYLOAD, BRAND_PAYLOAD;
|
||||
private static Class<?> CUSTOM_PACKET_PAYLOAD, BRAND_PAYLOAD, DISCARDED_PAYLOAD;
|
||||
private static Method CUSTOM_PACKET_PAYLOAD_MINECRAFT_KEY, CUSTOM_PACKET_PAYLOAD_PACKETDATASERIALIZER;
|
||||
private static byte isVersion_1_17 = -1;
|
||||
private static boolean isVersion_1_20_5;
|
||||
private static boolean isVersion_1_20_6;
|
||||
|
||||
public WrappedPacketInCustomPayload(NMSPacket packet) {
|
||||
super(packet);
|
||||
@@ -51,8 +53,10 @@ public final class WrappedPacketInCustomPayload extends WrappedPacket {
|
||||
CUSTOM_PACKET_PAYLOAD_PACKETDATASERIALIZER = Reflection.getMethod(CUSTOM_PACKET_PAYLOAD, 0, NMSUtils.packetDataSerializerClass);
|
||||
}
|
||||
isVersion_1_20_5 = version.isNewerThanOrEquals(ServerVersion.v_1_20_5);
|
||||
isVersion_1_20_6 = version.isNewerThanOrEquals(ServerVersion.v_1_20_6);
|
||||
if (isVersion_1_20_5) {
|
||||
BRAND_PAYLOAD = NMSUtils.getNMClassWithoutException("network.protocol.common.custom.BrandPayload");
|
||||
DISCARDED_PAYLOAD = NMSUtils.getNMClassWithoutException("network.protocol.common.custom.DiscardedPayload");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,6 +72,18 @@ public final class WrappedPacketInCustomPayload extends WrappedPacket {
|
||||
WrappedPacket reflectBrandPayload = new WrappedPacket(new NMSPacket(payload));
|
||||
return reflectBrandPayload.readString(0);
|
||||
}
|
||||
else if (DISCARDED_PAYLOAD.isInstance(payload)) {
|
||||
WrappedPacket reflectBrandPayload = new WrappedPacket(new NMSPacket(payload));
|
||||
if (isVersion_1_20_6) {
|
||||
return reflectBrandPayload.readMinecraftKey(0);
|
||||
}
|
||||
else {
|
||||
return reflectBrandPayload.readString(0);
|
||||
}
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else {
|
||||
try {
|
||||
@@ -105,16 +121,28 @@ public final class WrappedPacketInCustomPayload extends WrappedPacket {
|
||||
public byte[] getData() {
|
||||
if (customPacketPayloadPresent) {
|
||||
Object payload = getModernPayloadObject();
|
||||
Object buffer = PacketEvents.get().getByteBufUtil().buffer();
|
||||
Object packetDataSerializer = NMSUtils.generatePacketDataSerializer(buffer);
|
||||
try {
|
||||
CUSTOM_PACKET_PAYLOAD_PACKETDATASERIALIZER.invoke(payload, packetDataSerializer);
|
||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
if (isVersion_1_20_6) {
|
||||
if (DISCARDED_PAYLOAD.isInstance(payload)) {
|
||||
WrappedPacket reflectDiscardedPayload = new WrappedPacket(new NMSPacket(payload));
|
||||
Object buffer = reflectDiscardedPayload.readObject(0, NMSUtils.byteBufClass);
|
||||
return PacketEvents.get().getByteBufUtil().getBytes(buffer);
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else {
|
||||
Object buffer = PacketEvents.get().getByteBufUtil().buffer();
|
||||
Object packetDataSerializer = NMSUtils.generatePacketDataSerializer(buffer);
|
||||
try {
|
||||
CUSTOM_PACKET_PAYLOAD_PACKETDATASERIALIZER.invoke(payload, packetDataSerializer);
|
||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
byte[] data = PacketEvents.get().getByteBufUtil().getBytes(buffer);
|
||||
PacketEvents.get().getByteBufUtil().release(buffer);
|
||||
return data;
|
||||
}
|
||||
byte[] data = PacketEvents.get().getByteBufUtil().getBytes(buffer);
|
||||
PacketEvents.get().getByteBufUtil().release(buffer);
|
||||
return data;
|
||||
}
|
||||
else if (byteArrayPresent) {
|
||||
return readByteArray(0);
|
||||
|
||||
Reference in new issue
Block a user