Read desc
Now throws a error when disguising when the player logs in right away - Informational Packet 44 is now using the ProtocolLib accepted id.
This commit is contained in:
		@@ -39,6 +39,7 @@ import net.minecraft.server.v1_6_R2.WatchableObject;
 | 
			
		||||
import net.minecraft.server.v1_6_R2.World;
 | 
			
		||||
import net.minecraft.server.v1_6_R2.WorldServer;
 | 
			
		||||
 | 
			
		||||
import org.apache.commons.lang.Validate;
 | 
			
		||||
import org.bukkit.Bukkit;
 | 
			
		||||
import org.bukkit.Location;
 | 
			
		||||
import org.bukkit.craftbukkit.v1_6_R2.entity.CraftEntity;
 | 
			
		||||
@@ -49,7 +50,6 @@ import org.bukkit.entity.LivingEntity;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
 | 
			
		||||
import com.comphenix.protocol.Packets;
 | 
			
		||||
import com.comphenix.protocol.Packets.Server;
 | 
			
		||||
import com.comphenix.protocol.ProtocolLibrary;
 | 
			
		||||
import com.comphenix.protocol.events.ConnectionSide;
 | 
			
		||||
import com.comphenix.protocol.events.ListenerPriority;
 | 
			
		||||
@@ -66,7 +66,7 @@ public class DisguiseAPI {
 | 
			
		||||
    private static PacketListener packetListener;
 | 
			
		||||
    private static boolean sendVelocity;
 | 
			
		||||
    private static boolean soundsEnabled;
 | 
			
		||||
    private static HashMap<Integer, Integer> values = new HashMap<Integer, Integer>();
 | 
			
		||||
    private static HashMap<Integer, Integer> selfDisguisesIds = new HashMap<Integer, Integer>();
 | 
			
		||||
    private static boolean viewDisguises;
 | 
			
		||||
    private static PacketListener viewDisguisesListener;
 | 
			
		||||
 | 
			
		||||
@@ -147,8 +147,8 @@ public class DisguiseAPI {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static int getFakeDisguise(int id) {
 | 
			
		||||
        if (values.containsKey(id))
 | 
			
		||||
            return values.get(id);
 | 
			
		||||
        if (selfDisguisesIds.containsKey(id))
 | 
			
		||||
            return selfDisguisesIds.get(id);
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -321,18 +321,18 @@ public class DisguiseAPI {
 | 
			
		||||
                Packets.Server.REL_ENTITY_MOVE_LOOK, Packets.Server.ENTITY_LOOK, Packets.Server.ENTITY_TELEPORT,
 | 
			
		||||
                Packets.Server.ENTITY_HEAD_ROTATION, Packets.Server.ENTITY_METADATA, Packets.Server.ENTITY_EQUIPMENT,
 | 
			
		||||
                Packets.Server.ARM_ANIMATION, Packets.Server.ENTITY_LOCATION_ACTION, Packets.Server.MOB_EFFECT,
 | 
			
		||||
                Packets.Server.ENTITY_STATUS, Packets.Server.ENTITY_VELOCITY, 44) {
 | 
			
		||||
                Packets.Server.ENTITY_STATUS, Packets.Server.ENTITY_VELOCITY, Packets.Server.UPDATE_ATTRIBUTES) {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void onPacketSending(PacketEvent event) {
 | 
			
		||||
                StructureModifier<Entity> entityModifer = event.getPacket().getEntityModifier(event.getPlayer().getWorld());
 | 
			
		||||
                org.bukkit.entity.Entity entity = entityModifer.read(0);
 | 
			
		||||
                if (entity == event.getPlayer() && values.containsKey(entity.getEntityId())) {
 | 
			
		||||
                if (entity == event.getPlayer() && selfDisguisesIds.containsKey(entity.getEntityId())) {
 | 
			
		||||
                    PacketContainer[] packets = libsDisguises.transformPacket(event.getPacket(), event.getPlayer());
 | 
			
		||||
                    try {
 | 
			
		||||
                        for (PacketContainer packet : packets) {
 | 
			
		||||
                            if (packet.equals(event.getPacket()))
 | 
			
		||||
                                packet = packet.deepClone();
 | 
			
		||||
                            packet.getModifier().write(0, values.get(entity.getEntityId()));
 | 
			
		||||
                            packet.getModifier().write(0, selfDisguisesIds.get(entity.getEntityId()));
 | 
			
		||||
                            ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), packet, false);
 | 
			
		||||
                        }
 | 
			
		||||
                    } catch (Exception ex) {
 | 
			
		||||
@@ -386,8 +386,6 @@ public class DisguiseAPI {
 | 
			
		||||
                            break;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    if (event.getPacketID() == Server.ENTITY_STATUS)
 | 
			
		||||
                        System.out.print(event.isCancelled());
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        };
 | 
			
		||||
@@ -433,20 +431,22 @@ public class DisguiseAPI {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static void removeVisibleDisguise(Player player) {
 | 
			
		||||
        if (values.containsKey(player.getEntityId())) {
 | 
			
		||||
        if (selfDisguisesIds.containsKey(player.getEntityId())) {
 | 
			
		||||
            PacketContainer packet = new PacketContainer(Packets.Server.DESTROY_ENTITY);
 | 
			
		||||
            packet.getModifier().write(0, new int[] { values.get(player.getEntityId()) });
 | 
			
		||||
            packet.getModifier().write(0, new int[] { selfDisguisesIds.get(player.getEntityId()) });
 | 
			
		||||
            try {
 | 
			
		||||
                ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet);
 | 
			
		||||
            } catch (Exception ex) {
 | 
			
		||||
                ex.printStackTrace();
 | 
			
		||||
            }
 | 
			
		||||
            values.remove(player.getEntityId());
 | 
			
		||||
            selfDisguisesIds.remove(player.getEntityId());
 | 
			
		||||
        }
 | 
			
		||||
        EntityPlayer entityplayer = ((CraftPlayer) player).getHandle();
 | 
			
		||||
        EntityTrackerEntry tracker = (EntityTrackerEntry) ((WorldServer) entityplayer.world).tracker.trackedEntities.get(player
 | 
			
		||||
                .getEntityId());
 | 
			
		||||
        tracker.trackedPlayers.remove(entityplayer);
 | 
			
		||||
        if (tracker != null) {
 | 
			
		||||
            tracker.trackedPlayers.remove(entityplayer);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static void setupPlayer(Player player) {
 | 
			
		||||
@@ -459,21 +459,23 @@ public class DisguiseAPI {
 | 
			
		||||
            field.setAccessible(true);
 | 
			
		||||
            id = field.getInt(null);
 | 
			
		||||
            field.set(null, id + 1);
 | 
			
		||||
            values.put(player.getEntityId(), id);
 | 
			
		||||
            selfDisguisesIds.put(player.getEntityId(), id);
 | 
			
		||||
        } catch (Exception ex) {
 | 
			
		||||
            ex.printStackTrace();
 | 
			
		||||
        }
 | 
			
		||||
        EntityPlayer entityplayer = ((CraftPlayer) player).getHandle();
 | 
			
		||||
        EntityTrackerEntry tracker = (EntityTrackerEntry) ((WorldServer) entityplayer.world).tracker.trackedEntities.get(player
 | 
			
		||||
                .getEntityId());
 | 
			
		||||
 | 
			
		||||
        Validate.notNull(tracker,
 | 
			
		||||
                "If you are disguising as soon as they log in, please wait a tick or 2 for their EntityTracker to be constructed");
 | 
			
		||||
        tracker.trackedPlayers.add(entityplayer);
 | 
			
		||||
 | 
			
		||||
        // CraftBukkit end
 | 
			
		||||
        Packet20NamedEntitySpawn packet = new Packet20NamedEntitySpawn((EntityHuman) entityplayer);
 | 
			
		||||
        entityplayer.playerConnection.sendPacket(packet);
 | 
			
		||||
        if (!tracker.tracker.getDataWatcher().d()) {
 | 
			
		||||
            entityplayer.playerConnection.sendPacket(new Packet40EntityMetadata(player.getEntityId(), tracker.tracker.getDataWatcher(), true));
 | 
			
		||||
            entityplayer.playerConnection.sendPacket(new Packet40EntityMetadata(player.getEntityId(), tracker.tracker
 | 
			
		||||
                    .getDataWatcher(), true));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (tracker.tracker instanceof EntityLiving) {
 | 
			
		||||
@@ -497,8 +499,8 @@ public class DisguiseAPI {
 | 
			
		||||
            ex.printStackTrace();
 | 
			
		||||
        }
 | 
			
		||||
        if (isMoving) {
 | 
			
		||||
            entityplayer.playerConnection.sendPacket(new Packet28EntityVelocity(player.getEntityId(), tracker.tracker.motX, tracker.tracker.motY,
 | 
			
		||||
                    tracker.tracker.motZ));
 | 
			
		||||
            entityplayer.playerConnection.sendPacket(new Packet28EntityVelocity(player.getEntityId(), tracker.tracker.motX,
 | 
			
		||||
                    tracker.tracker.motY, tracker.tracker.motZ));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // CraftBukkit start
 | 
			
		||||
 
 | 
			
		||||
@@ -84,7 +84,7 @@ public class LibsDisguises extends JavaPlugin {
 | 
			
		||||
                Packets.Server.NAMED_ENTITY_SPAWN, Packets.Server.ENTITY_METADATA, Packets.Server.ARM_ANIMATION,
 | 
			
		||||
                Packets.Server.REL_ENTITY_MOVE_LOOK, Packets.Server.ENTITY_LOOK, Packets.Server.ENTITY_TELEPORT,
 | 
			
		||||
                Packets.Server.ADD_EXP_ORB, Packets.Server.VEHICLE_SPAWN, Packets.Server.MOB_SPAWN,
 | 
			
		||||
                Packets.Server.ENTITY_PAINTING, Packets.Server.COLLECT, 44) {
 | 
			
		||||
                Packets.Server.ENTITY_PAINTING, Packets.Server.COLLECT, Packets.Server.UPDATE_ATTRIBUTES) {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void onPacketSending(PacketEvent event) {
 | 
			
		||||
                Player observer = event.getPlayer();
 | 
			
		||||
@@ -314,7 +314,7 @@ public class LibsDisguises extends JavaPlugin {
 | 
			
		||||
                // This packet sends attributes
 | 
			
		||||
 | 
			
		||||
                switch (sentPacket.getID()) {
 | 
			
		||||
                case 44:
 | 
			
		||||
                case Packets.Server.UPDATE_ATTRIBUTES:
 | 
			
		||||
 | 
			
		||||
                {
 | 
			
		||||
                    // Grab the values which are 'approved' to be sent for this entity
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user