From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Aya <31237389+tal5@users.noreply.github.com>
Date: Fri, 20 Jan 2023 13:49:59 +0000
Subject: [PATCH] Add Player#sendEquipmentChange(Map) API


diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index b32f44beab2c9790ee2da8403e362e8b3ecc6175..7b795a8f23a617d1d80f72f3262e11a1c9f806be 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1055,17 +1055,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
         this.sendSignChange0(components, loc, dyeColor, hasGlowingText); // Paper
     }
 
+    // Paper start
     @Override
-    public void sendEquipmentChange(LivingEntity entity, EquipmentSlot slot, ItemStack item) {
+    public void sendEquipmentChange(LivingEntity entity, Map<EquipmentSlot, ItemStack> equipmentChanges) {
         Preconditions.checkArgument(entity != null, "entity must not be null");
-        Preconditions.checkArgument(slot != null, "slot must not be null");
-        Preconditions.checkArgument(item != null, "item must not be null");
+        Preconditions.checkNotNull(equipmentChanges, "equipmentChanges must not be null");
 
         if (this.getHandle().connection == null) return;
 
-        List<Pair<net.minecraft.world.entity.EquipmentSlot, net.minecraft.world.item.ItemStack>> equipment = Arrays.asList(
-                new Pair<>(CraftEquipmentSlot.getNMS(slot), CraftItemStack.asNMSCopy(item))
-        );
+        List<Pair<net.minecraft.world.entity.EquipmentSlot, net.minecraft.world.item.ItemStack>> equipment = new ArrayList<>(equipmentChanges.size());
+        for (Map.Entry<EquipmentSlot, ItemStack> entry : equipmentChanges.entrySet()) {
+            Preconditions.checkNotNull(entry.getKey(), "EquipmentSlot key must not be null");
+            Preconditions.checkNotNull(entry.getValue(), "ItemStack value must not be null");
+            equipment.add(new Pair<>(CraftEquipmentSlot.getNMS(entry.getKey()), CraftItemStack.asNMSCopy(entry.getValue())));
+        }
+        // Paper end
 
         this.getHandle().connection.send(new ClientboundSetEquipmentPacket(entity.getEntityId(), equipment));
     }
