Remove meta after a set tick, not last packet
This commit is contained in:
		@@ -21,6 +21,7 @@ public class LibsPackets {
 | 
			
		||||
    private boolean isSpawnPacket;
 | 
			
		||||
    private Disguise disguise;
 | 
			
		||||
    private boolean doNothing;
 | 
			
		||||
    private int removeMetaAt = -1;
 | 
			
		||||
 | 
			
		||||
    public LibsPackets(Disguise disguise) {
 | 
			
		||||
        this.disguise = disguise;
 | 
			
		||||
@@ -30,6 +31,10 @@ public class LibsPackets {
 | 
			
		||||
        doNothing = true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setRemoveMetaAt(int tick) {
 | 
			
		||||
        removeMetaAt = tick;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isUnhandled() {
 | 
			
		||||
        return doNothing;
 | 
			
		||||
    }
 | 
			
		||||
@@ -71,16 +76,11 @@ public class LibsPackets {
 | 
			
		||||
 | 
			
		||||
    public void sendDelayed(final Player observer) {
 | 
			
		||||
        Iterator<Map.Entry<Integer, ArrayList<PacketContainer>>> itel = delayedPackets.entrySet().iterator();
 | 
			
		||||
        Optional<Integer> largestTick = delayedPackets.keySet().stream().max(Integer::compare);
 | 
			
		||||
 | 
			
		||||
        if (!largestTick.isPresent()) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        while (itel.hasNext()) {
 | 
			
		||||
            Map.Entry<Integer, ArrayList<PacketContainer>> entry = itel.next();
 | 
			
		||||
            // If this is the last delayed packet
 | 
			
		||||
            final boolean isRemoveCancel = isSpawnPacket && largestTick.get().equals(entry.getKey());
 | 
			
		||||
            final boolean isRemoveCancel = isSpawnPacket && entry.getKey() >= removeMetaAt && removeMetaAt >= 0;
 | 
			
		||||
 | 
			
		||||
            Bukkit.getScheduler().scheduleSyncDelayedTask(LibsDisguises.getInstance(), () -> {
 | 
			
		||||
                if (isRemoveCancel) {
 | 
			
		||||
 
 | 
			
		||||
@@ -254,6 +254,7 @@ public class PacketHandlerSpawn implements IPacketHandler {
 | 
			
		||||
                // Add a delay to remove the entry from 'cancelMeta'
 | 
			
		||||
 | 
			
		||||
                packets.addDelayedPacket(metaPacket, 7);
 | 
			
		||||
                packets.setRemoveMetaAt(7);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Remove player from the list
 | 
			
		||||
@@ -436,6 +437,7 @@ public class PacketHandlerSpawn implements IPacketHandler {
 | 
			
		||||
 | 
			
		||||
                if (delayedArmor) {
 | 
			
		||||
                    packets.addDelayedPacket(packet, 7);
 | 
			
		||||
                    packets.setRemoveMetaAt(7);
 | 
			
		||||
                } else {
 | 
			
		||||
                    packets.addDelayedPacket(packet);
 | 
			
		||||
                }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user