diff --git a/pom.xml b/pom.xml
index 329017a3..166c02fb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -56,7 +56,7 @@
com.comphenix.protocol
ProtocolLib
- 2.7.0
+ 3.0.0-SNAPSHOT
7.7.5-SNAPSHOT
diff --git a/src/me/libraryaddict/disguise/utilities/PacketsManager.java b/src/me/libraryaddict/disguise/utilities/PacketsManager.java
index 373b1d50..d685b607 100644
--- a/src/me/libraryaddict/disguise/utilities/PacketsManager.java
+++ b/src/me/libraryaddict/disguise/utilities/PacketsManager.java
@@ -196,8 +196,12 @@ public class PacketsManager {
spawnPackets[0] = new PacketContainer(Packets.Server.NAMED_ENTITY_SPAWN);
StructureModifier stringMods = spawnPackets[0].getStrings();
- for (int i = 0; i < stringMods.size(); i++) {
- stringMods.write(i, ((PlayerDisguise) disguise).getName());
+ if (stringMods.size() > 0) {
+ for (int i = 0; i < stringMods.size(); i++) {
+ stringMods.write(i, ((PlayerDisguise) disguise).getName());
+ }
+ } else {
+ spawnPackets[0].getModifier().write(1, ReflectionManager.getGameProfile(((PlayerDisguise) disguise).getName()));
}
StructureModifier intMods = spawnPackets[0].getIntegers();
intMods.write(0, disguisedEntity.getEntityId());
diff --git a/src/me/libraryaddict/disguise/utilities/ReflectionManager.java b/src/me/libraryaddict/disguise/utilities/ReflectionManager.java
index 8892e00e..cbfa3260 100644
--- a/src/me/libraryaddict/disguise/utilities/ReflectionManager.java
+++ b/src/me/libraryaddict/disguise/utilities/ReflectionManager.java
@@ -51,12 +51,29 @@ public class ReflectionManager {
Object entityObject;
Object world = getWorld(Bukkit.getWorlds().get(0));
if (entityName.equals("Player")) {
+ boolean useOld = false;
+ if (bukkitVersion.startsWith("1.")) {
+ try {
+ if (Integer.parseInt(bukkitVersion.split("\\.")[1]) < 7) {
+ useOld = true;
+ }
+ } catch (Exception ex) {
+
+ }
+ }
Object minecraftServer = getNmsClass("MinecraftServer").getMethod("getServer").invoke(null);
Object playerinteractmanager = getNmsClass("PlayerInteractManager").getConstructor(getNmsClass("World"))
.newInstance(world);
- entityObject = entityClass.getConstructor(getNmsClass("MinecraftServer"), getNmsClass("World"), String.class,
- playerinteractmanager.getClass()).newInstance(minecraftServer, world, "LibsDisguises",
- playerinteractmanager);
+ if (useOld) {
+ entityObject = entityClass.getConstructor(getNmsClass("MinecraftServer"), getNmsClass("World"), String.class,
+ playerinteractmanager.getClass()).newInstance(minecraftServer, world, "LibsDisguises",
+ playerinteractmanager);
+ } else {
+ Object gameProfile = getGameProfile("LibsDisguises");
+ entityObject = entityClass.getConstructor(getNmsClass("MinecraftServer"), getNmsClass("WorldServer"),
+ gameProfile.getClass(), playerinteractmanager.getClass()).newInstance(minecraftServer, world,
+ gameProfile, playerinteractmanager);
+ }
} else {
entityObject = entityClass.getConstructor(getNmsClass("World")).newInstance(world);
}
@@ -67,6 +84,16 @@ public class ReflectionManager {
return null;
}
+ public static Object getGameProfile(String playerName) {
+ try {
+ return Class.forName("net.minecraft.util.com.mojang.authlib.GameProfile").getConstructor(String.class, String.class)
+ .newInstance(playerName, playerName);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ return null;
+ }
+
public static Entity getBukkitEntity(Object nmsEntity) {
try {
Entity bukkitEntity = (Entity) ReflectionManager.getNmsClass("Entity").getMethod("getBukkitEntity").invoke(nmsEntity);