Read desc

Added method getBukkitEntity to reflectionmanager
Added a way for itemframe values to exist.
This commit is contained in:
libraryaddict
2013-11-27 16:38:51 +13:00
parent ca913347ce
commit 473769eb26
6 changed files with 51 additions and 13 deletions

View File

@@ -58,13 +58,12 @@ public class DisguiseUtilities {
if (entityTrackerEntry != null) {
HashSet trackedPlayers = (HashSet) entityTrackerEntry.getClass().getField("trackedPlayers")
.get(entityTrackerEntry);
Method getBukkitEntity = ReflectionManager.getNmsClass("Entity").getMethod("getBukkitEntity");
Method clear = entityTrackerEntry.getClass().getMethod("clear", ReflectionManager.getNmsClass("EntityPlayer"));
Method updatePlayer = entityTrackerEntry.getClass().getMethod("updatePlayer",
ReflectionManager.getNmsClass("EntityPlayer"));
HashSet cloned = (HashSet) trackedPlayers.clone();
for (Object player : cloned) {
if (entity instanceof Player && !((Player) getBukkitEntity.invoke(player)).canSee((Player) entity))
if (entity instanceof Player && !((Player) ReflectionManager.getBukkitEntity(player)).canSee((Player) entity))
continue;
clear.invoke(entityTrackerEntry, player);
updatePlayer.invoke(entityTrackerEntry, player);

View File

@@ -2,11 +2,13 @@ package me.libraryaddict.disguise.utilities;
import java.util.HashMap;
import org.bukkit.entity.EntityType;
import me.libraryaddict.disguise.disguisetypes.DisguiseType;
public class DisguiseValues {
private static HashMap<DisguiseType, DisguiseValues> values = new HashMap<DisguiseType, DisguiseValues>();
private static HashMap<Enum, DisguiseValues> values = new HashMap<Enum, DisguiseValues>();
public static DisguiseValues getDisguiseValues(DisguiseType type) {
switch (type) {
@@ -35,6 +37,10 @@ public class DisguiseValues {
return values.get(type);
}
public static DisguiseValues getEntityValues(EntityType type) {
return values.get(type);
}
public static HashMap<Integer, Object> getMetaValues(DisguiseType type) {
return getDisguiseValues(type).getMetaValues();
}
@@ -47,7 +53,7 @@ public class DisguiseValues {
private HashMap<Integer, Object> metaValues = new HashMap<Integer, Object>();
private Class nmsEntityClass;
public DisguiseValues(DisguiseType type, Class classType, int entitySize) {
public DisguiseValues(Enum type, Class classType, int entitySize) {
values.put(type, this);
enumEntitySize = entitySize;
nmsEntityClass = classType;

View File

@@ -114,7 +114,17 @@ public class ReflectionManager {
try {
return Class.forName("net.minecraft.server." + bukkitVersion + "." + className);
} catch (Exception e) {
// e.printStackTrace();
// e.printStackTrace();
}
return null;
}
public static Entity getBukkitEntity(Object nmsEntity) {
try {
Entity bukkitEntity = (Entity) ReflectionManager.getNmsClass("Entity").getMethod("getBukkitEntity").invoke(nmsEntity);
return bukkitEntity;
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}