diff --git a/pom.xml b/pom.xml
index 341a32a8..892b1aaa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -56,7 +56,7 @@
com.comphenix.protocol
ProtocolLib
- 2.5.0
+ 2.7.0
org.bukkit
diff --git a/src/me/libraryaddict/disguise/DisguiseAPI.java b/src/me/libraryaddict/disguise/DisguiseAPI.java
index 581f5d59..cd4da8ae 100644
--- a/src/me/libraryaddict/disguise/DisguiseAPI.java
+++ b/src/me/libraryaddict/disguise/DisguiseAPI.java
@@ -48,7 +48,7 @@ public class DisguiseAPI {
disguise = disguise.clone();
}
try {
- Field field = net.minecraft.server.v1_6_R3.Entity.class.getDeclaredField("entityCount");
+ Field field = ReflectionManager.getNmsClass("Entity").getDeclaredField("entityCount");
field.setAccessible(true);
int id = field.getInt(null);
disguises.put(id, disguise);
@@ -268,7 +268,7 @@ public class DisguiseAPI {
return;
try {
// Grab the entity ID the fake disguise will use
- Field field = net.minecraft.server.v1_6_R3.Entity.class.getDeclaredField("entityCount");
+ Field field = ReflectionManager.getNmsClass("Entity").getDeclaredField("entityCount");
field.setAccessible(true);
int id = field.getInt(null);
// Set the entitycount plus one so we don't have the id being reused
diff --git a/src/me/libraryaddict/disguise/LibsDisguises.java b/src/me/libraryaddict/disguise/LibsDisguises.java
index c3552ebb..7b815a6e 100644
--- a/src/me/libraryaddict/disguise/LibsDisguises.java
+++ b/src/me/libraryaddict/disguise/LibsDisguises.java
@@ -3,7 +3,6 @@ package me.libraryaddict.disguise;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
-import java.lang.reflect.Method;
import java.util.List;
import me.libraryaddict.disguise.commands.*;
@@ -23,7 +22,6 @@ import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.plugin.java.JavaPlugin;
-import com.comphenix.protocol.wrappers.WrappedAttribute;
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
import com.comphenix.protocol.wrappers.WrappedWatchableObject;
@@ -174,7 +172,8 @@ public class LibsDisguises extends JavaPlugin {
}
try {
Object entity = ReflectionManager.getEntityInstance(name);
- Entity bukkitEntity = (Entity) entity.getClass().getMethod("getBukkitEntity").invoke(entity);
+ Entity bukkitEntity = (Entity) ReflectionManager.getNmsClass("Entity").getMethod("getBukkitEntity")
+ .invoke(entity);
int size = 0;
for (Field field : ReflectionManager.getNmsClass("Entity").getFields()) {
if (field.getType().getName().equals("EnumEntitySize")) {
@@ -188,11 +187,6 @@ public class LibsDisguises extends JavaPlugin {
List watchers = dataWatcher.getWatchableObjects();
for (WrappedWatchableObject watch : watchers)
value.setMetaValue(watch.getTypeID(), watch.getValue());
- WrappedAttribute s;
- if (bukkitEntity instanceof LivingEntity) {
- value.setAttributesValue("generic.movementSpeed", livingEntity.getAttributeInstance(GenericAttributes.d)
- .getValue());
- }
DisguiseSound sound = DisguiseSound.getType(disguiseType.name());
if (sound != null) {
Float soundStrength = ReflectionManager.getSoundModifier(entity);
diff --git a/src/me/libraryaddict/disguise/PacketsManager.java b/src/me/libraryaddict/disguise/PacketsManager.java
index ed6089f3..7294ed94 100644
--- a/src/me/libraryaddict/disguise/PacketsManager.java
+++ b/src/me/libraryaddict/disguise/PacketsManager.java
@@ -4,7 +4,6 @@ import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
@@ -18,10 +17,13 @@ import me.libraryaddict.disguise.disguisetypes.MobDisguise;
import me.libraryaddict.disguise.disguisetypes.PlayerDisguise;
import me.libraryaddict.disguise.disguisetypes.Values;
import me.libraryaddict.disguise.disguisetypes.DisguiseSound.SoundType;
+import net.minecraft.server.v1_6_R3.*;
+import org.bukkit.Art;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
+import org.bukkit.craftbukkit.v1_6_R3.entity.*;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Entity;
import org.bukkit.entity.ExperienceOrb;
@@ -42,6 +44,8 @@ import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.events.PacketEvent;
import com.comphenix.protocol.events.PacketListener;
import com.comphenix.protocol.reflect.StructureModifier;
+import com.comphenix.protocol.wrappers.WrappedDataWatcher;
+import com.comphenix.protocol.wrappers.WrappedWatchableObject;
public class PacketsManager {
private static boolean cancelSound;
@@ -131,9 +135,12 @@ public class PacketsManager {
org.bukkit.inventory.ItemStack itemstack = disguise.getWatcher().getItemStack(slot);
if (itemstack != null && itemstack.getTypeId() != 0) {
ItemStack item = null;
- if (nmsEntity instanceof EntityLiving)
- item = ((EntityLiving) nmsEntity).getEquipment(i);
- if (item == null) {
+ if (disguisedEntity instanceof LivingEntity)
+ if (i != 4)
+ item = ((LivingEntity) disguisedEntity).getEquipment().getArmorContents()[i];
+ else
+ item = ((LivingEntity) disguisedEntity).getEquipment().getItemInHand();
+ if (item == null || item.getType() == Material.AIR) {
PacketContainer packet = new PacketContainer(Packets.Server.ENTITY_EQUIPMENT);
StructureModifier