Read desc
Now use Entitys completely for the disguising. Now removes the disguise when the entity isn't valid. Deprecated the methods using a object. Added methods to set and get velocity - If packets should be sent.
This commit is contained in:
parent
a1ff8e6db9
commit
59588f5270
@ -6,6 +6,7 @@ import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class UndisguiseCommand implements CommandExecutor {
|
||||
@ -17,7 +18,7 @@ public class UndisguiseCommand implements CommandExecutor {
|
||||
return true;
|
||||
}
|
||||
if (sender.hasPermission("libsdisguises.undisguise")) {
|
||||
if (DisguiseAPI.isDisguised(sender.getName())) {
|
||||
if (DisguiseAPI.isDisguised((Entity) sender)) {
|
||||
DisguiseAPI.undisguiseToAll((Player) sender);
|
||||
sender.sendMessage(ChatColor.RED + "You are no longer disguised");
|
||||
} else
|
||||
|
@ -17,7 +17,7 @@ public class UndisguisePlayerCommand implements CommandExecutor {
|
||||
if (args.length > 0) {
|
||||
Player p = Bukkit.getPlayer(args[0]);
|
||||
if (p != null) {
|
||||
if (DisguiseAPI.isDisguised(p.getName())) {
|
||||
if (DisguiseAPI.isDisguised(p)) {
|
||||
DisguiseAPI.undisguiseToAll(p);
|
||||
sender.sendMessage(ChatColor.RED + "He is no longer disguised");
|
||||
} else
|
||||
|
@ -31,18 +31,19 @@ import com.comphenix.protocol.reflect.StructureModifier;
|
||||
|
||||
public class DisguiseAPI {
|
||||
|
||||
private static HashMap<Object, Disguise> disguises = new HashMap<Object, Disguise>();
|
||||
private static HashMap<Entity, Disguise> disguises = new HashMap<Entity, Disguise>();
|
||||
private static PacketListener packetListener;
|
||||
private static JavaPlugin plugin;
|
||||
private static boolean sendVelocity;
|
||||
private static boolean soundsEnabled;
|
||||
|
||||
private synchronized static Disguise access(Object obj, Disguise... object) {
|
||||
if (object.length == 0)
|
||||
return disguises.get(obj);
|
||||
if (object[0] == null)
|
||||
disguises.remove(obj);
|
||||
private synchronized static Disguise access(Entity entity, Disguise... args) {
|
||||
if (args.length == 0)
|
||||
return disguises.get(entity);
|
||||
if (args[0] == null)
|
||||
disguises.remove(entity);
|
||||
else
|
||||
disguises.put(obj, object[0]);
|
||||
disguises.put(entity, args[0]);
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -57,8 +58,11 @@ public class DisguiseAPI {
|
||||
return;
|
||||
if (disguise.getWatcher() != null)
|
||||
disguise = disguise.clone();
|
||||
put(entity instanceof Player ? ((Player) entity).getName() : entity.getUniqueId(), disguise);
|
||||
disguise.constructWatcher(entity.getType(), entity.getEntityId());
|
||||
Disguise oldDisguise = getDisguise(entity);
|
||||
if (oldDisguise != null)
|
||||
oldDisguise.getScheduler().cancel();
|
||||
put(entity, disguise);
|
||||
disguise.constructWatcher(plugin, entity);
|
||||
refresh(entity);
|
||||
}
|
||||
|
||||
@ -73,7 +77,7 @@ public class DisguiseAPI {
|
||||
}
|
||||
}
|
||||
|
||||
private static Disguise get(Object obj) {
|
||||
private static Disguise get(Entity obj) {
|
||||
return access(obj);
|
||||
}
|
||||
|
||||
@ -81,16 +85,15 @@ public class DisguiseAPI {
|
||||
* @param Disguiser
|
||||
* @return Disguise
|
||||
*/
|
||||
public static Disguise getDisguise(Object disguiser) {
|
||||
if (disguiser instanceof Entity) {
|
||||
if (disguiser instanceof Player)
|
||||
return get(((Player) disguiser).getName());
|
||||
else
|
||||
return get(((Entity) disguiser).getUniqueId());
|
||||
}
|
||||
public static Disguise getDisguise(Entity disguiser) {
|
||||
return get(disguiser);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static Disguise getDisguise(Object disguiser) {
|
||||
return get((Entity) disguiser);
|
||||
}
|
||||
|
||||
protected static void init(JavaPlugin mainPlugin) {
|
||||
plugin = mainPlugin;
|
||||
packetListener = new PacketAdapter(plugin, ConnectionSide.SERVER_SIDE, ListenerPriority.NORMAL,
|
||||
@ -172,17 +175,20 @@ public class DisguiseAPI {
|
||||
* @param Disguiser
|
||||
* @return boolean - If the disguiser is disguised
|
||||
*/
|
||||
public static boolean isDisguised(Object disguiser) {
|
||||
if (disguiser instanceof Entity) {
|
||||
if (disguiser instanceof Player)
|
||||
return get(((Player) disguiser).getName()) != null;
|
||||
else
|
||||
return get(((Entity) disguiser).getUniqueId()) != null;
|
||||
}
|
||||
public static boolean isDisguised(Entity disguiser) {
|
||||
return get(disguiser) != null;
|
||||
}
|
||||
|
||||
private static void put(Object obj, Disguise disguise) {
|
||||
@Deprecated
|
||||
public static boolean isDisguised(Object disguiser) {
|
||||
return get((Entity) disguiser) != null;
|
||||
}
|
||||
|
||||
public static boolean isVelocitySent() {
|
||||
return sendVelocity;
|
||||
}
|
||||
|
||||
private static void put(Entity obj, Disguise disguise) {
|
||||
access(obj, disguise);
|
||||
}
|
||||
|
||||
@ -204,12 +210,22 @@ public class DisguiseAPI {
|
||||
}
|
||||
}
|
||||
|
||||
public static void setVelocitySent(boolean sendVelocityPackets) {
|
||||
sendVelocity = sendVelocityPackets;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Disguiser
|
||||
* - Undisguises him
|
||||
*/
|
||||
public static void undisguiseToAll(Entity entity) {
|
||||
put(entity instanceof Player ? ((Player) entity).getName() : entity.getUniqueId(), null);
|
||||
refresh(entity);
|
||||
Disguise disguise = getDisguise(entity);
|
||||
if (disguise == null)
|
||||
return;
|
||||
disguise.getScheduler().cancel();
|
||||
put(entity, null);
|
||||
if (entity.isValid()) {
|
||||
refresh(entity);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user