Current work
This commit is contained in:
@@ -57,7 +57,6 @@ import me.libraryaddict.disguise.disguisetypes.watchers.ZombieWatcher;
|
||||
|
||||
public class DisguiseUtilities
|
||||
{
|
||||
|
||||
public static final Random random = new Random();
|
||||
/**
|
||||
* This is a list of names which was called by other plugins. As such, don't remove from the gameProfiles as its the duty of
|
||||
@@ -359,30 +358,30 @@ public class DisguiseUtilities
|
||||
{
|
||||
Object entityTrackerEntry = ReflectionManager.getEntityTrackerEntry(disguise.getEntity());
|
||||
|
||||
if (entityTrackerEntry != null)
|
||||
{
|
||||
Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers")
|
||||
.get(entityTrackerEntry);
|
||||
if (entityTrackerEntry == null)
|
||||
return;
|
||||
|
||||
// If the tracker exists. Remove himself from his tracker
|
||||
trackedPlayers = (Set) new HashSet(trackedPlayers).clone(); // Copy before iterating to prevent
|
||||
// ConcurrentModificationException
|
||||
Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers")
|
||||
.get(entityTrackerEntry);
|
||||
|
||||
PacketContainer destroyPacket = new PacketContainer(Server.ENTITY_DESTROY);
|
||||
// If the tracker exists. Remove himself from his tracker
|
||||
trackedPlayers = (Set) new HashSet(trackedPlayers).clone(); // Copy before iterating to prevent
|
||||
// ConcurrentModificationException
|
||||
|
||||
destroyPacket.getIntegerArrays().write(0, new int[]
|
||||
{
|
||||
disguise.getEntity().getEntityId()
|
||||
});
|
||||
PacketContainer destroyPacket = new PacketContainer(Server.ENTITY_DESTROY);
|
||||
|
||||
for (Object p : trackedPlayers)
|
||||
destroyPacket.getIntegerArrays().write(0, new int[]
|
||||
{
|
||||
Player player = (Player) ReflectionManager.getBukkitEntity(p);
|
||||
disguise.getEntity().getEntityId()
|
||||
});
|
||||
|
||||
if (player == disguise.getEntity() || disguise.canSee(player))
|
||||
{
|
||||
ProtocolLibrary.getProtocolManager().sendServerPacket(player, destroyPacket);
|
||||
}
|
||||
for (Object p : trackedPlayers)
|
||||
{
|
||||
Player player = (Player) ReflectionManager.getBukkitEntity(p);
|
||||
|
||||
if (player == disguise.getEntity() || disguise.canSee(player))
|
||||
{
|
||||
ProtocolLibrary.getProtocolManager().sendServerPacket(player, destroyPacket);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -664,6 +663,7 @@ public class DisguiseUtilities
|
||||
for (Object p : trackedPlayers)
|
||||
{
|
||||
Player player = (Player) ReflectionManager.getBukkitEntity(p);
|
||||
|
||||
if (((TargetedDisguise) disguise).canSee(player))
|
||||
{
|
||||
players.add(player);
|
||||
@@ -919,48 +919,48 @@ public class DisguiseUtilities
|
||||
{
|
||||
final Object entityTrackerEntry = ReflectionManager.getEntityTrackerEntry(disguise.getEntity());
|
||||
|
||||
if (entityTrackerEntry != null)
|
||||
if (entityTrackerEntry == null)
|
||||
return;
|
||||
|
||||
Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers")
|
||||
.get(entityTrackerEntry);
|
||||
|
||||
Method clear = ReflectionManager.getNmsMethod("EntityTrackerEntry", "clear",
|
||||
ReflectionManager.getNmsClass("EntityPlayer"));
|
||||
|
||||
final Method updatePlayer = ReflectionManager.getNmsMethod("EntityTrackerEntry", "updatePlayer",
|
||||
ReflectionManager.getNmsClass("EntityPlayer"));
|
||||
|
||||
trackedPlayers = (Set) new HashSet(trackedPlayers).clone(); // Copy before iterating to prevent
|
||||
// ConcurrentModificationException
|
||||
for (final Object p : trackedPlayers)
|
||||
{
|
||||
Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers")
|
||||
.get(entityTrackerEntry);
|
||||
Player pl = (Player) ReflectionManager.getBukkitEntity(p);
|
||||
|
||||
Method clear = ReflectionManager.getNmsMethod("EntityTrackerEntry", "clear",
|
||||
ReflectionManager.getNmsClass("EntityPlayer"));
|
||||
if (!player.equalsIgnoreCase((pl).getName()))
|
||||
continue;
|
||||
|
||||
final Method updatePlayer = ReflectionManager.getNmsMethod("EntityTrackerEntry", "updatePlayer",
|
||||
ReflectionManager.getNmsClass("EntityPlayer"));
|
||||
clear.invoke(entityTrackerEntry, p);
|
||||
|
||||
trackedPlayers = (Set) new HashSet(trackedPlayers).clone(); // Copy before iterating to prevent
|
||||
// ConcurrentModificationException
|
||||
for (final Object p : trackedPlayers)
|
||||
ProtocolLibrary.getProtocolManager().sendServerPacket(pl, destroyPacket);
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(libsDisguises, new Runnable()
|
||||
{
|
||||
Player pl = (Player) ReflectionManager.getBukkitEntity(p);
|
||||
|
||||
if (player.equalsIgnoreCase((pl).getName()))
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
clear.invoke(entityTrackerEntry, p);
|
||||
|
||||
ProtocolLibrary.getProtocolManager().sendServerPacket(pl, destroyPacket);
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(libsDisguises, new Runnable()
|
||||
try
|
||||
{
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
try
|
||||
{
|
||||
updatePlayer.invoke(entityTrackerEntry, p);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ex.printStackTrace(System.out);
|
||||
}
|
||||
}
|
||||
}, 2);
|
||||
break;
|
||||
updatePlayer.invoke(entityTrackerEntry, p);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ex.printStackTrace(System.out);
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -3,6 +3,7 @@ package me.libraryaddict.disguise.utilities;
|
||||
import java.util.HashMap;
|
||||
|
||||
import me.libraryaddict.disguise.disguisetypes.DisguiseType;
|
||||
import me.libraryaddict.disguise.disguisetypes.FlagType;
|
||||
|
||||
public class DisguiseValues
|
||||
{
|
||||
@@ -39,7 +40,7 @@ public class DisguiseValues
|
||||
return values.get(type);
|
||||
}
|
||||
|
||||
public static HashMap<Integer, Object> getMetaValues(DisguiseType type)
|
||||
public static HashMap<FlagType, Object> getMetaValues(DisguiseType type)
|
||||
{
|
||||
return getDisguiseValues(type).getMetaValues();
|
||||
}
|
||||
@@ -53,7 +54,7 @@ public class DisguiseValues
|
||||
private FakeBoundingBox babyBox;
|
||||
private float[] entitySize;
|
||||
private double maxHealth;
|
||||
private HashMap<Integer, Object> metaValues = new HashMap<>();
|
||||
private HashMap<FlagType, Object> metaValues = new HashMap<>();
|
||||
private Class nmsEntityClass;
|
||||
|
||||
public DisguiseValues(DisguiseType type, Class classType, int entitySize, double maxHealth)
|
||||
@@ -83,7 +84,7 @@ public class DisguiseValues
|
||||
return maxHealth;
|
||||
}
|
||||
|
||||
public HashMap<Integer, Object> getMetaValues()
|
||||
public HashMap<FlagType, Object> getMetaValues()
|
||||
{
|
||||
return metaValues;
|
||||
}
|
||||
@@ -108,7 +109,7 @@ public class DisguiseValues
|
||||
this.entitySize = size;
|
||||
}
|
||||
|
||||
public void setMetaValue(int id, Object value)
|
||||
public void setMetaValue(FlagType id, Object value)
|
||||
{
|
||||
metaValues.put(id, value);
|
||||
}
|
||||
|
Reference in New Issue
Block a user