diff --git a/pom.xml b/pom.xml
index 17da4eb3..32a3f40c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -83,17 +83,12 @@
org.spigotmc
spigot-api
- 1.15-R0.1-SNAPSHOT
+ 1.16.1-R0.1-SNAPSHOT
org.spigotmc
spigot
- 1.15.2-R0.1-SNAPSHOT
-
-
- org.spigotmc
- spigot
- 1.15.2-R0.1-SNAPSHOT
+ 1.16.1-R0.1-SNAPSHOT
diff --git a/src/main/java/me/libraryaddict/disguise/LibsDisguises.java b/src/main/java/me/libraryaddict/disguise/LibsDisguises.java
index 18a31759..6702238e 100644
--- a/src/main/java/me/libraryaddict/disguise/LibsDisguises.java
+++ b/src/main/java/me/libraryaddict/disguise/LibsDisguises.java
@@ -60,6 +60,14 @@ public class LibsDisguises extends JavaPlugin {
return;
}
+ try {
+ Class cl = Class.forName("org.bukkit.Server$Spigot");
+ }
+ catch (ClassNotFoundException e) {
+ getLogger().severe("Oh dear, you seem to be using CraftBukkit. Please use Spigot or Paper instead! This " +
+ "plugin will continue to load, but it will look like a mugging victim");
+ }
+
WatcherSanitizer.init();
}
diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/DisguiseType.java b/src/main/java/me/libraryaddict/disguise/disguisetypes/DisguiseType.java
index f2ec1053..e5f396b9 100644
--- a/src/main/java/me/libraryaddict/disguise/disguisetypes/DisguiseType.java
+++ b/src/main/java/me/libraryaddict/disguise/disguisetypes/DisguiseType.java
@@ -7,6 +7,7 @@ import me.libraryaddict.disguise.utilities.translations.TranslateType;
import org.apache.commons.lang.StringUtils;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
+import org.omg.CORBA.UNKNOWN;
public enum DisguiseType {
AREA_EFFECT_CLOUD(3, 0),
@@ -83,6 +84,8 @@ public enum DisguiseType {
GUARDIAN,
+ @NmsAddedIn(val = NmsVersion.v1_16) HOGLIN,
+
HORSE,
HUSK,
@@ -135,7 +138,9 @@ public enum DisguiseType {
PIG,
- PIG_ZOMBIE,
+ @NmsRemovedIn(val = NmsVersion.v1_16) PIG_ZOMBIE,
+
+ @NmsAddedIn(val = NmsVersion.v1_16) PIGLIN,
@NmsAddedIn(val = NmsVersion.v1_14) PILLAGER,
@@ -183,6 +188,8 @@ public enum DisguiseType {
STRAY,
+ @NmsAddedIn(val = NmsVersion.v1_16) STRIDER,
+
THROWN_EXP_BOTTLE(75),
@NmsRemovedIn(val = NmsVersion.v1_14) TIPPED_ARROW(60),
@@ -215,11 +222,15 @@ public enum DisguiseType {
WOLF,
+ @NmsAddedIn(val = NmsVersion.v1_16) ZOGLIN,
+
ZOMBIE,
ZOMBIE_HORSE,
- ZOMBIE_VILLAGER;
+ ZOMBIE_VILLAGER,
+
+ @NmsAddedIn(val = NmsVersion.v1_16) ZOMBIFIED_PIGLIN;
public static DisguiseType getType(Entity entity) {
DisguiseType disguiseType = getType(entity.getType());
diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/MetaIndex.java b/src/main/java/me/libraryaddict/disguise/disguisetypes/MetaIndex.java
index 6354835b..a64fa964 100644
--- a/src/main/java/me/libraryaddict/disguise/disguisetypes/MetaIndex.java
+++ b/src/main/java/me/libraryaddict/disguise/disguisetypes/MetaIndex.java
@@ -115,6 +115,7 @@ public class MetaIndex {
* The shooter of the arrow, no visible effect if set
*/
@NmsAddedIn(val = NmsVersion.v1_13)
+ @NmsRemovedIn(val = NmsVersion.v1_16)
public static MetaIndex> ARROW_UUID = new MetaIndex<>(ArrowWatcher.class, 1, Optional.empty());
@NmsAddedIn(val = NmsVersion.v1_14)
@@ -296,7 +297,10 @@ public class MetaIndex {
@NmsAddedIn(val = NmsVersion.v1_14)
public static MetaIndex FIREWORK_SHOT_AT_ANGLE = new MetaIndex<>(FireworkWatcher.class, 2, false);
- public static MetaIndex FISHING_HOOK_HOOKED = new MetaIndex<>(FishingHookWatcher.class, 0, 0);
+ public static MetaIndex FISHING_HOOK_HOOKED_ID = new MetaIndex<>(FishingHookWatcher.class, 0, 0);
+
+ @NmsAddedIn(val = NmsVersion.v1_16)
+ public static MetaIndex FISHING_HOOK_HOOKED = new MetaIndex<>(FishingHookWatcher.class, 1, false);
/**
* The type of fox, its coloring
@@ -328,6 +332,9 @@ public class MetaIndex {
*/
public static MetaIndex GUARDIAN_TARGET = new MetaIndex<>(GuardianWatcher.class, 1, 0);
+ @NmsAddedIn(val = NmsVersion.v1_16)
+ public static MetaIndex HOGLIN_SHAKING = new MetaIndex<>(HoglinWatcher.class, 0, false);
+
/**
* If horse has chest, set for donkey
*/
@@ -495,6 +502,18 @@ public class MetaIndex {
*/
public static MetaIndex PIG_BOOST = new MetaIndex<>(PigWatcher.class, 1, 0);
+ @NmsAddedIn(val = NmsVersion.v1_16)
+ public static MetaIndex PIGLIN_BABY = new MetaIndex<>(PiglinWatcher.class, 0, false);
+
+ @NmsAddedIn(val = NmsVersion.v1_16)
+ public static MetaIndex PIGLIN_SHAKING = new MetaIndex<>(PiglinWatcher.class, 1, false);
+
+ @NmsAddedIn(val = NmsVersion.v1_16)
+ public static MetaIndex PIGLIN_CROSSBOW = new MetaIndex<>(PiglinWatcher.class, 2, false);
+
+ @NmsAddedIn(val = NmsVersion.v1_16)
+ public static MetaIndex PIGLIN_DANCING = new MetaIndex<>(PiglinWatcher.class, 3, false);
+
@NmsAddedIn(val = NmsVersion.v1_14)
public static MetaIndex PILLAGER_AIMING_BOW = new MetaIndex<>(PillagerWatcher.class, 0, false);
@@ -539,6 +558,15 @@ public class MetaIndex {
public static MetaIndex SNOWMAN_DERP = new MetaIndex<>(SnowmanWatcher.class, 0, (byte) 16);
+ @NmsAddedIn(val = NmsVersion.v1_16)
+ public static MetaIndex STRIDER_SADDLE_UNKNOWN = new MetaIndex<>(StriderWatcher.class, 0, 0);
+
+ @NmsAddedIn(val = NmsVersion.v1_16)
+ public static MetaIndex STRIDER_WARM = new MetaIndex<>(StriderWatcher.class, 1, false);
+
+ @NmsAddedIn(val = NmsVersion.v1_16)
+ public static MetaIndex STRIDER_SADDLED = new MetaIndex<>(StriderWatcher.class, 2, false);
+
public static MetaIndex SPIDER_CLIMB = new MetaIndex<>(SpiderWatcher.class, 0, (byte) 0);
public static MetaIndex SPLASH_POTION_ITEM = new MetaIndex<>(SplashPotionWatcher.class, 0,
@@ -610,6 +638,12 @@ public class MetaIndex {
public static MetaIndex WOLF_COLLAR = new MetaIndex<>(WolfWatcher.class, 2, 14);
+ @NmsAddedIn(val = NmsVersion.v1_16)
+ public static MetaIndex WOLF_ANGER = new MetaIndex<>(WolfWatcher.class, 3, 0);
+
+ @NmsAddedIn(val = NmsVersion.v1_16)
+ public static MetaIndex ZOGLIN_BABY = new MetaIndex<>(ZoglinWatcher.class, 0, false);
+
@NmsRemovedIn(val = NmsVersion.v1_14)
public static MetaIndex ZOMBIE_AGGRESSIVE = new MetaIndex<>(ZombieWatcher.class, 2, false);
diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FishingHookWatcher.java b/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FishingHookWatcher.java
index d16e861c..f679e05f 100644
--- a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FishingHookWatcher.java
+++ b/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FishingHookWatcher.java
@@ -4,26 +4,31 @@ import me.libraryaddict.disguise.disguisetypes.Disguise;
import me.libraryaddict.disguise.disguisetypes.FlagWatcher;
import me.libraryaddict.disguise.disguisetypes.MetaIndex;
-public class FishingHookWatcher extends FlagWatcher
-{
- public FishingHookWatcher(Disguise disguise)
- {
+public class FishingHookWatcher extends FlagWatcher {
+ public FishingHookWatcher(Disguise disguise) {
super(disguise);
}
- public void setHooked(int hookedId)
- {
- setData(MetaIndex.FISHING_HOOK_HOOKED, hookedId + 1);
- sendData(MetaIndex.FISHING_HOOK_HOOKED);
- }
-
- public int getHooked()
- {
- int hooked = getData(MetaIndex.FISHING_HOOK_HOOKED);
+ public int getHookedId() {
+ int hooked = getData(MetaIndex.FISHING_HOOK_HOOKED_ID);
if (hooked > 0)
hooked--;
return hooked;
}
+
+ public void setHookedId(int hookedId) {
+ setData(MetaIndex.FISHING_HOOK_HOOKED_ID, hookedId + 1);
+ sendData(MetaIndex.FISHING_HOOK_HOOKED_ID);
+ }
+
+ public boolean isHooked() {
+ return getData(MetaIndex.FISHING_HOOK_HOOKED);
+ }
+
+ public void setHooked(boolean hooked) {
+ setData(MetaIndex.FISHING_HOOK_HOOKED, hooked);
+ sendData(MetaIndex.FISHING_HOOK_HOOKED);
+ }
}
diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/HoglinWatcher.java b/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/HoglinWatcher.java
new file mode 100644
index 00000000..8985af8e
--- /dev/null
+++ b/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/HoglinWatcher.java
@@ -0,0 +1,24 @@
+package me.libraryaddict.disguise.disguisetypes.watchers;
+
+import me.libraryaddict.disguise.disguisetypes.Disguise;
+import me.libraryaddict.disguise.disguisetypes.MetaIndex;
+
+/**
+ * Created by libraryaddict on 25/06/2020.
+ */
+public class HoglinWatcher extends AgeableWatcher {
+ public HoglinWatcher(Disguise disguise) {
+ super(disguise);
+
+ setShaking(false);
+ }
+
+ public boolean isShaking() {
+ return !getData(MetaIndex.HOGLIN_SHAKING);
+ }
+
+ public void setShaking(boolean shaking) {
+ setData(MetaIndex.HOGLIN_SHAKING, !shaking);
+ sendData(MetaIndex.HOGLIN_SHAKING);
+ }
+}
diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PiglinWatcher.java b/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PiglinWatcher.java
new file mode 100644
index 00000000..b01d61fe
--- /dev/null
+++ b/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PiglinWatcher.java
@@ -0,0 +1,51 @@
+package me.libraryaddict.disguise.disguisetypes.watchers;
+
+import me.libraryaddict.disguise.disguisetypes.Disguise;
+import me.libraryaddict.disguise.disguisetypes.MetaIndex;
+
+/**
+ * Created by libraryaddict on 25/06/2020.
+ */
+public class PiglinWatcher extends InsentientWatcher {
+ public PiglinWatcher(Disguise disguise) {
+ super(disguise);
+
+ setShaking(false);
+ }
+
+ public boolean isBaby() {
+ return getData(MetaIndex.PIGLIN_BABY);
+ }
+
+ public void setBaby(boolean baby) {
+ setData(MetaIndex.PIGLIN_BABY, baby);
+ sendData(MetaIndex.PIGLIN_BABY);
+ }
+
+ public boolean isDancing() {
+ return getData(MetaIndex.PIGLIN_DANCING);
+ }
+
+ public void setDancing(boolean dancing) {
+ setData(MetaIndex.PIGLIN_DANCING, dancing);
+ sendData(MetaIndex.PIGLIN_DANCING);
+ }
+
+ public boolean isUsingCrossbow() {
+ return getData(MetaIndex.PIGLIN_CROSSBOW);
+ }
+
+ public void setUsingCrossbow(boolean crossbow) {
+ setData(MetaIndex.PIGLIN_CROSSBOW, crossbow);
+ sendData(MetaIndex.PIGLIN_CROSSBOW);
+ }
+
+ public boolean isShaking() {
+ return !getData(MetaIndex.PIGLIN_SHAKING);
+ }
+
+ public void setShaking(boolean shaking) {
+ setData(MetaIndex.PIGLIN_SHAKING, !shaking);
+ sendData(MetaIndex.PIGLIN_SHAKING);
+ }
+}
diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/StriderWatcher.java b/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/StriderWatcher.java
new file mode 100644
index 00000000..3609002d
--- /dev/null
+++ b/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/StriderWatcher.java
@@ -0,0 +1,22 @@
+package me.libraryaddict.disguise.disguisetypes.watchers;
+
+import me.libraryaddict.disguise.disguisetypes.Disguise;
+import me.libraryaddict.disguise.disguisetypes.MetaIndex;
+
+/**
+ * Created by libraryaddict on 25/06/2020.
+ */
+public class StriderWatcher extends AgeableWatcher {
+ public StriderWatcher(Disguise disguise) {
+ super(disguise);
+ }
+
+ public boolean isSaddled() {
+ return getData(MetaIndex.STRIDER_SADDLED);
+ }
+
+ public void setSaddled(boolean saddled) {
+ setData(MetaIndex.STRIDER_SADDLED, saddled);
+ sendData(MetaIndex.STRIDER_SADDLED);
+ }
+}
diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WolfWatcher.java b/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WolfWatcher.java
index ad63765f..0884e0d9 100644
--- a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WolfWatcher.java
+++ b/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WolfWatcher.java
@@ -52,6 +52,15 @@ public class WolfWatcher extends TameableWatcher {
setTameableFlag(2, angry);
}
+ public int getAnger() {
+ return getData(MetaIndex.WOLF_ANGER);
+ }
+
+ public void setAnger(int anger) {
+ setData(MetaIndex.WOLF_ANGER, anger);
+ sendData(MetaIndex.WOLF_ANGER);
+ }
+
/**
* Used for tail rotation.
*
diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZoglinWatcher.java b/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZoglinWatcher.java
new file mode 100644
index 00000000..7d5bb372
--- /dev/null
+++ b/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZoglinWatcher.java
@@ -0,0 +1,22 @@
+package me.libraryaddict.disguise.disguisetypes.watchers;
+
+import me.libraryaddict.disguise.disguisetypes.Disguise;
+import me.libraryaddict.disguise.disguisetypes.MetaIndex;
+
+/**
+ * Created by libraryaddict on 25/06/2020.
+ */
+public class ZoglinWatcher extends InsentientWatcher {
+ public ZoglinWatcher(Disguise disguise) {
+ super(disguise);
+ }
+
+ public boolean isBaby() {
+ return getData(MetaIndex.ZOGLIN_BABY);
+ }
+
+ public void setBaby(boolean baby) {
+ setData(MetaIndex.ZOGLIN_BABY, baby);
+ sendData(MetaIndex.ZOGLIN_BABY);
+ }
+}
diff --git a/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java b/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java
index dd7d8547..545eddaf 100644
--- a/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java
+++ b/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java
@@ -13,6 +13,7 @@ import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonSyntaxException;
import com.mojang.authlib.properties.PropertyMap;
+import com.mojang.datafixers.util.Pair;
import lombok.Getter;
import lombok.Setter;
import me.libraryaddict.disguise.DisguiseAPI;
@@ -1988,36 +1989,25 @@ public class DisguiseUtilities {
.createPacket(0, player.getPassenger(), player));
}
- sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0,
- ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD),
- ReflectionManager.getNmsItem(new ItemStack(Material.STONE)))
- .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD),
- ReflectionManager.getNmsItem(player.getInventory().getHelmet())));
- sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0,
- ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD),
- ReflectionManager.getNmsItem(new ItemStack(Material.STONE)))
- .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(EquipmentSlot.CHEST),
- ReflectionManager.getNmsItem(player.getInventory().getChestplate())));
- sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0,
- ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD),
- ReflectionManager.getNmsItem(new ItemStack(Material.STONE)))
- .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(EquipmentSlot.LEGS),
- ReflectionManager.getNmsItem(player.getInventory().getLeggings())));
- sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0,
- ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD),
- ReflectionManager.getNmsItem(new ItemStack(Material.STONE)))
- .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(EquipmentSlot.FEET),
- ReflectionManager.getNmsItem(player.getInventory().getBoots())));
- sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0,
- ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD),
- ReflectionManager.getNmsItem(new ItemStack(Material.STONE)))
- .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(EquipmentSlot.HAND),
- ReflectionManager.getNmsItem(player.getInventory().getItemInMainHand())));
- sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0,
- ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD),
- ReflectionManager.getNmsItem(new ItemStack(Material.STONE)))
- .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(EquipmentSlot.OFF_HAND),
- ReflectionManager.getNmsItem(player.getInventory().getItemInOffHand())));
+ if (NmsVersion.v1_16.isSupported()) {
+ List> list = new ArrayList<>();
+
+ for (EquipmentSlot slot : EquipmentSlot.values()) {
+ list.add(Pair.of(ReflectionManager.createEnumItemSlot(slot),
+ ReflectionManager.getNmsItem(player.getInventory().getItem(slot))));
+ }
+
+ sendSelfPacket(player,
+ manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, list).createPacket(0, list));
+ } else {
+ for (EquipmentSlot slot : EquipmentSlot.values()) {
+ sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0,
+ ReflectionManager.createEnumItemSlot(slot),
+ ReflectionManager.getNmsItem(player.getInventory().getItem(slot)))
+ .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(slot),
+ ReflectionManager.getNmsItem(player.getInventory().getItem(slot))));
+ }
+ }
Location loc = player.getLocation();
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 a9bbbd9e..71661f14 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,7 +50,8 @@ public class PacketHandlerAttributes implements IPacketHandler {
return;
}
- if (disguise.isMiscDisguise()) {
+ // Skip if its 1.16, PL can't handle it atm
+ if (disguise.isMiscDisguise() || NmsVersion.v1_16.isSupported()) {
return;
}
diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerEquipment.java b/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerEquipment.java
index 1f0c93ac..59ccc78a 100644
--- a/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerEquipment.java
+++ b/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerEquipment.java
@@ -4,12 +4,14 @@ import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
import com.comphenix.protocol.wrappers.WrappedWatchableObject;
+import com.mojang.datafixers.util.Pair;
import me.libraryaddict.disguise.DisguiseConfig;
import me.libraryaddict.disguise.disguisetypes.Disguise;
import me.libraryaddict.disguise.disguisetypes.MetaIndex;
import me.libraryaddict.disguise.utilities.packets.IPacketHandler;
import me.libraryaddict.disguise.utilities.packets.LibsPackets;
import me.libraryaddict.disguise.utilities.packets.PacketsHandler;
+import me.libraryaddict.disguise.utilities.reflection.NmsVersion;
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
@@ -38,6 +40,107 @@ public class PacketHandlerEquipment implements IPacketHandler {
@Override
public void handle(Disguise disguise, PacketContainer sentPacket, LibsPackets packets, Player observer,
Entity entity) {
+ if (NmsVersion.v1_16.isSupported()) {
+ handleNew(disguise, sentPacket, packets, observer, entity);
+ } else {
+ handleOld(disguise, sentPacket, packets, observer, entity);
+ }
+ }
+
+ public void handleNew(Disguise disguise, PacketContainer sentPacket, LibsPackets packets, Player observer,
+ Entity entity) {
+ // Else if the disguise is updating equipment
+
+ List> slots = (List>) packets.getPackets().get(0).getModifier()
+ .read(1);
+ List> newSlots = new ArrayList<>();
+ boolean constructed = false;
+
+ for (Pair