From e3300e7ef962c1ded8a682bd4d4cbcc9795fe0eb Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Tue, 30 Jun 2020 16:18:03 +1200 Subject: [PATCH] Reenable attribute packets, fix modded entities --- .../PacketHandlerAttributes.java | 3 +-- .../packethandlers/PacketHandlerSpawn.java | 2 +- .../PacketListenerModdedClient.java | 26 ++++++++++++------- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerAttributes.java b/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerAttributes.java index 71661f14..a9bbbd9e 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerAttributes.java +++ b/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerAttributes.java @@ -50,8 +50,7 @@ public class PacketHandlerAttributes implements IPacketHandler { return; } - // Skip if its 1.16, PL can't handle it atm - if (disguise.isMiscDisguise() || NmsVersion.v1_16.isSupported()) { + if (disguise.isMiscDisguise()) { return; } diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerSpawn.java b/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerSpawn.java index ade030eb..13567500 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerSpawn.java +++ b/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerSpawn.java @@ -75,7 +75,7 @@ public class PacketHandlerSpawn implements IPacketHandler { Disguise disguise = packets.getDisguise(); if (DisguiseConfig.isMiscDisguisesForLivingEnabled()) { - if (disguise.getWatcher() instanceof LivingWatcher && !NmsVersion.v1_16.isSupported()) { + if (disguise.getWatcher() instanceof LivingWatcher) { ArrayList attributes = new ArrayList<>(); WrappedAttribute.Builder builder = WrappedAttribute.newBuilder().attributeKey("generic.maxHealth"); diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerModdedClient.java b/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerModdedClient.java index d1292573..d8efd571 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerModdedClient.java +++ b/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerModdedClient.java @@ -14,6 +14,8 @@ import io.netty.buffer.Unpooled; import io.netty.handler.codec.DecoderException; import me.libraryaddict.disguise.LibsDisguises; import me.libraryaddict.disguise.utilities.modded.ModdedManager; +import me.libraryaddict.disguise.utilities.reflection.ReflectionManager; +import net.minecraft.server.v1_16_R1.PacketDataSerializer; import org.bukkit.entity.Player; import java.lang.reflect.InvocationTargetException; @@ -140,21 +142,25 @@ public class PacketListenerModdedClient extends PacketAdapter { PacketContainer packet1 = new PacketContainer(PacketType.Login.Server.CUSTOM_PAYLOAD); packet1.getIntegers().write(0, packetId1); packet1.getMinecraftKeys().write(0, new com.comphenix.protocol.wrappers.MinecraftKey("fml", "handshake")); - // packet1.getModifier() - // .write(2, new PacketDataSerializer(Unpooled.wrappedBuffer(ModdedManager.getFmlHandshake()))); - PacketContainer packet2 = new PacketContainer(PacketType.Login.Server.CUSTOM_PAYLOAD); - packet2.getIntegers().write(0, packetId2); - packet2.getMinecraftKeys().write(0, new MinecraftKey("fml", "handshake")); - // packet2.getModifier() - // .write(2, new PacketDataSerializer(Unpooled.wrappedBuffer(ModdedManager.getFmlRegistries()))); - - //TODO try { + Object obj1 = ReflectionManager.getNmsConstructor("PacketDataSerializer", ByteBuf.class) + .newInstance(Unpooled.wrappedBuffer(ModdedManager.getFmlHandshake())); + + packet1.getModifier().write(2, obj1); + + PacketContainer packet2 = new PacketContainer(PacketType.Login.Server.CUSTOM_PAYLOAD); + packet2.getIntegers().write(0, packetId2); + packet2.getMinecraftKeys().write(0, new MinecraftKey("fml", "handshake")); + Object obj2 = ReflectionManager.getNmsConstructor("PacketDataSerializer", ByteBuf.class) + .newInstance(Unpooled.wrappedBuffer(ModdedManager.getFmlRegistries())); + + packet2.getModifier().write(2, obj2); + ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), packet1); ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), packet2); } - catch (InvocationTargetException e) { + catch (Exception e) { e.printStackTrace(); } }