@Override
	public void applyDisguise(Collection<Player> players) {
		UUID uid = new UUIDRetriever(name).getUUID();
		GameProfile gp = new GameProfile(uid == null ? UUID.randomUUID() : uid,
				name);
		UUIDRetriever.setSkin(gp);
		EntityPlayer playerEntity = ((CraftPlayer) getPlayer()).getHandle();
		EntityPlayer ep = this.ep == null
				? this.ep = new EntityPlayer(playerEntity.server,
						(WorldServer) playerEntity.world, gp,
						new PlayerInteractManager(playerEntity.world))
				: this.ep;
		ep.inventory = playerEntity.inventory;
		ep.locX = playerEntity.locX;
		ep.locY = playerEntity.locY;
		ep.locZ = playerEntity.locZ;
		ep.yaw = playerEntity.yaw;
		ep.pitch = playerEntity.pitch;
		PacketPlayOutEntityDestroy destroy = new PacketPlayOutEntityDestroy(
				playerEntity.getId());
		PacketPlayOutPlayerInfo infoRemove = new PacketPlayOutPlayerInfo(
				EnumPlayerInfoAction.REMOVE_PLAYER, playerEntity);
		PacketPlayOutPlayerInfo infoAdd = new PacketPlayOutPlayerInfo(
				EnumPlayerInfoAction.ADD_PLAYER, ep);
		PacketPlayOutNamedEntitySpawn spawn = new PacketPlayOutNamedEntitySpawn(
				ep);
		for (Player p : players) {
			if (p == getPlayer())
				continue;
			EntityPlayer aep = ((CraftPlayer) p).getHandle();
			PlayerConnection pc = aep.playerConnection;
			pc.sendPacket(destroy);
			pc.sendPacket(infoRemove);
			pc.sendPacket(infoAdd);
			pc.sendPacket(spawn);
		}
	}