diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/FlagWatcher.java b/src/main/java/me/libraryaddict/disguise/disguisetypes/FlagWatcher.java index 75b9d97f..491b8ff6 100644 --- a/src/main/java/me/libraryaddict/disguise/disguisetypes/FlagWatcher.java +++ b/src/main/java/me/libraryaddict/disguise/disguisetypes/FlagWatcher.java @@ -9,6 +9,7 @@ import com.comphenix.protocol.wrappers.WrappedChatComponent; import com.comphenix.protocol.wrappers.WrappedDataWatcher; import com.comphenix.protocol.wrappers.WrappedWatchableObject; import com.google.common.base.Strings; +import com.mojang.datafixers.util.Pair; import lombok.AccessLevel; import lombok.Getter; import me.libraryaddict.disguise.DisguiseAPI; @@ -756,8 +757,16 @@ public class FlagWatcher { StructureModifier mods = packet.getModifier(); mods.write(0, getDisguise().getEntity().getEntityId()); - mods.write(1, ReflectionManager.createEnumItemSlot(slot)); - mods.write(2, itemToSend); + + if (NmsVersion.v1_16.isSupported()) { + List> list = new ArrayList<>(); + list.add(Pair.of(ReflectionManager.createEnumItemSlot(slot), itemToSend)); + + mods.write(1, list); + } else { + mods.write(1, ReflectionManager.createEnumItemSlot(slot)); + mods.write(2, itemToSend); + } for (Player player : DisguiseUtilities.getPerverts(getDisguise())) { try { diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/LibsPackets.java b/src/main/java/me/libraryaddict/disguise/utilities/packets/LibsPackets.java index abe19000..f1c5823b 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/packets/LibsPackets.java +++ b/src/main/java/me/libraryaddict/disguise/utilities/packets/LibsPackets.java @@ -4,8 +4,10 @@ import com.comphenix.protocol.PacketType; import com.comphenix.protocol.ProtocolLibrary; import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.reflect.StructureModifier; +import com.mojang.datafixers.util.Pair; import me.libraryaddict.disguise.LibsDisguises; import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.utilities.reflection.NmsVersion; import me.libraryaddict.disguise.utilities.reflection.ReflectionManager; import org.bukkit.Bukkit; import org.bukkit.Material; @@ -14,10 +16,7 @@ import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; +import java.util.*; /** * Created by libraryaddict on 3/01/2019. @@ -117,8 +116,16 @@ public class LibsPackets { StructureModifier mods = packet.getModifier(); mods.write(0, disguise.getEntity().getEntityId()); - mods.write(1, ReflectionManager.createEnumItemSlot(slot)); - mods.write(2, ReflectionManager.getNmsItem(itemToSend)); + + if (NmsVersion.v1_16.isSupported()) { + List> list = new ArrayList<>(); + list.add(Pair.of(ReflectionManager.createEnumItemSlot(slot), ReflectionManager.getNmsItem(itemToSend))); + + mods.write(1, list); + } else { + mods.write(1, ReflectionManager.createEnumItemSlot(slot)); + mods.write(2, ReflectionManager.getNmsItem(itemToSend)); + } return packet; } 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 6ff310fe..ade030eb 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 @@ -7,6 +7,7 @@ import com.comphenix.protocol.reflect.StructureModifier; import com.comphenix.protocol.wrappers.WrappedAttribute; import com.comphenix.protocol.wrappers.WrappedDataWatcher; import com.comphenix.protocol.wrappers.WrappedGameProfile; +import com.mojang.datafixers.util.Pair; import me.libraryaddict.disguise.DisguiseConfig; import me.libraryaddict.disguise.LibsDisguises; import me.libraryaddict.disguise.disguisetypes.*; @@ -436,8 +437,17 @@ public class PacketHandlerSpawn implements IPacketHandler { StructureModifier mods = packet.getModifier(); mods.write(0, disguisedEntity.getEntityId()); - mods.write(1, ReflectionManager.createEnumItemSlot(slot)); - mods.write(2, ReflectionManager.getNmsItem(itemToSend)); + + if (NmsVersion.v1_16.isSupported()) { + List> list = new ArrayList<>(); + list.add(Pair.of(ReflectionManager.createEnumItemSlot(slot), + ReflectionManager.getNmsItem(itemToSend))); + + mods.write(1, list); + } else { + mods.write(1, ReflectionManager.createEnumItemSlot(slot)); + mods.write(2, ReflectionManager.getNmsItem(itemToSend)); + } packets.addDelayedPacket(packet); }