Cleanup, fix skins not appearing by increasing tablist delay
This commit is contained in:
		| @@ -9,6 +9,7 @@ import java.util.UUID; | ||||
| import org.bukkit.Color; | ||||
| import org.bukkit.Material; | ||||
| import org.bukkit.inventory.ItemStack; | ||||
|  | ||||
| import com.comphenix.protocol.wrappers.BlockPosition; | ||||
| import com.comphenix.protocol.wrappers.EnumWrappers.Direction; | ||||
| import com.comphenix.protocol.wrappers.Vector3F; | ||||
|   | ||||
| @@ -56,6 +56,7 @@ import me.libraryaddict.disguise.disguisetypes.TargetedDisguise.TargetType; | ||||
| import me.libraryaddict.disguise.disguisetypes.watchers.AgeableWatcher; | ||||
| import me.libraryaddict.disguise.disguisetypes.watchers.PlayerWatcher; | ||||
| import me.libraryaddict.disguise.disguisetypes.watchers.ZombieWatcher; | ||||
| import me.libraryaddict.disguise.utilities.PacketsManager.LibsPackets; | ||||
|  | ||||
| public class DisguiseUtilities | ||||
| { | ||||
| @@ -1266,18 +1267,23 @@ public class DisguiseUtilities | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|             // Code to stop player pushing in 1.9 | ||||
|             // Code to stop player pushing | ||||
|             Scoreboard scoreboard = player.getScoreboard(); | ||||
|             Team t; | ||||
|  | ||||
|             if ((t = scoreboard.getTeam("LDPushing")) == null) | ||||
|             { | ||||
|                 t = scoreboard.registerNewTeam("LDPushing"); | ||||
|  | ||||
|                 t.setOption(Option.COLLISION_RULE, OptionStatus.NEVER); | ||||
|             } | ||||
|  | ||||
|             t.addEntry(player.getName()); | ||||
|             if (t.getOption(Option.COLLISION_RULE) != OptionStatus.NEVER) | ||||
|             { | ||||
|                 t.setOption(Option.COLLISION_RULE, OptionStatus.NEVER); | ||||
|                 t.setCanSeeFriendlyInvisibles(false); | ||||
|             } | ||||
|  | ||||
|             if (!t.hasEntry(player.getName())) | ||||
|                 t.addEntry(player.getName()); | ||||
|  | ||||
|             // Add himself to his own entity tracker | ||||
|             Object trackedPlayersObj = ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers") | ||||
| @@ -1411,52 +1417,33 @@ public class DisguiseUtilities | ||||
|     /** | ||||
|      * Method to send a packet to the self disguise, translate his entity ID to the fake id. | ||||
|      */ | ||||
|     private static void sendSelfPacket(final Player player, PacketContainer packet) | ||||
|     private static void sendSelfPacket(final Player player, final PacketContainer packet) | ||||
|     { | ||||
|         PacketContainer[][] transformed = PacketsManager.transformPacket(packet, player, player); | ||||
|         final Disguise disguise = DisguiseAPI.getDisguise(player, player); | ||||
|  | ||||
|         PacketContainer[] packets = transformed == null ? null : transformed[0]; | ||||
|         // If disguised. | ||||
|         if (disguise == null) | ||||
|         { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         final PacketContainer[] delayed = transformed == null ? null : transformed[1]; | ||||
|         LibsPackets transformed = PacketsManager.transformPacket(packet, disguise, player, player); | ||||
|  | ||||
|         try | ||||
|         { | ||||
|             if (packets == null) | ||||
|             { | ||||
|                 packets = new PacketContainer[] | ||||
|                     { | ||||
|                             packet | ||||
|                     }; | ||||
|             } | ||||
|             if (transformed.isUnhandled()) | ||||
|                 transformed.addPacket(packet); | ||||
|  | ||||
|             for (PacketContainer p : packets) | ||||
|             transformed.setPacketType(packet.getType()); | ||||
|  | ||||
|             for (PacketContainer p : transformed.getPackets()) | ||||
|             { | ||||
|                 p = p.deepClone(); | ||||
|                 p.getIntegers().write(0, DisguiseAPI.getSelfDisguiseId()); | ||||
|                 ProtocolLibrary.getProtocolManager().sendServerPacket(player, p, false); | ||||
|             } | ||||
|  | ||||
|             if (delayed != null && delayed.length > 0) | ||||
|             { | ||||
|                 Bukkit.getScheduler().scheduleSyncDelayedTask(libsDisguises, new Runnable() | ||||
|                 { | ||||
|                     @Override | ||||
|                     public void run() | ||||
|                     { | ||||
|                         try | ||||
|                         { | ||||
|                             for (PacketContainer packet : delayed) | ||||
|                             { | ||||
|                                 ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet, false); | ||||
|                             } | ||||
|                         } | ||||
|                         catch (InvocationTargetException e) | ||||
|                         { | ||||
|                             e.printStackTrace(); | ||||
|                         } | ||||
|                     } | ||||
|                 }); | ||||
|             } | ||||
|             transformed.sendDelayed(player); | ||||
|         } | ||||
|         catch (InvocationTargetException e) | ||||
|         { | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -24,6 +24,7 @@ import org.bukkit.inventory.EntityEquipment; | ||||
| import org.bukkit.inventory.EquipmentSlot; | ||||
| import org.bukkit.inventory.ItemStack; | ||||
| import org.bukkit.potion.PotionEffect; | ||||
|  | ||||
| import com.comphenix.protocol.wrappers.BlockPosition; | ||||
| import com.comphenix.protocol.wrappers.EnumWrappers.Direction; | ||||
| import com.comphenix.protocol.wrappers.MinecraftKey; | ||||
|   | ||||
| @@ -3,7 +3,6 @@ package me.libraryaddict.disguise.utilities.packetlisteners; | ||||
| import java.lang.reflect.InvocationTargetException; | ||||
| import java.util.ArrayList; | ||||
|  | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.entity.Entity; | ||||
| import org.bukkit.entity.Player; | ||||
|  | ||||
| @@ -16,31 +15,30 @@ import com.comphenix.protocol.events.PacketContainer; | ||||
| import com.comphenix.protocol.events.PacketEvent; | ||||
| import com.comphenix.protocol.reflect.StructureModifier; | ||||
|  | ||||
| import me.libraryaddict.disguise.DisguiseAPI; | ||||
| import me.libraryaddict.disguise.LibsDisguises; | ||||
| import me.libraryaddict.disguise.disguisetypes.Disguise; | ||||
| import me.libraryaddict.disguise.utilities.PacketsManager; | ||||
| import me.libraryaddict.disguise.utilities.PacketsManager.LibsPackets; | ||||
|  | ||||
| public class PacketListenerMain extends PacketAdapter | ||||
| { | ||||
|     private LibsDisguises libsDisguises; | ||||
|  | ||||
|     public PacketListenerMain(LibsDisguises plugin, ArrayList<PacketType> packetsToListen) | ||||
|     { | ||||
|         super(plugin, ListenerPriority.HIGH, packetsToListen); | ||||
|  | ||||
|         libsDisguises = plugin; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onPacketSending(PacketEvent event) | ||||
|     public void onPacketSending(final PacketEvent event) | ||||
|     { | ||||
|         if (event.isCancelled()) | ||||
|             return; | ||||
|  | ||||
|         if (event.getPlayer().getName().contains("UNKNOWN[")) // If the player is temporary | ||||
|             return; | ||||
|  | ||||
|         final Player observer = event.getPlayer(); | ||||
|  | ||||
|         if (observer.getName().contains("UNKNOWN[")) // If the player is temporary | ||||
|             return; | ||||
|  | ||||
|         // First get the entity, the one sending this packet | ||||
|         StructureModifier<Entity> entityModifer = event.getPacket().getEntityModifier(observer.getWorld()); | ||||
|  | ||||
| @@ -51,11 +49,16 @@ public class PacketListenerMain extends PacketAdapter | ||||
|         if (entity == observer) | ||||
|             return; | ||||
|  | ||||
|         PacketContainer[][] packets; | ||||
|         final Disguise disguise = DisguiseAPI.getDisguise(observer, entity); | ||||
|  | ||||
|         if (disguise == null) | ||||
|             return; | ||||
|  | ||||
|         LibsPackets packets; | ||||
|  | ||||
|         try | ||||
|         { | ||||
|             packets = PacketsManager.transformPacket(event.getPacket(), event.getPlayer(), entity); | ||||
|             packets = PacketsManager.transformPacket(event.getPacket(), disguise, observer, entity); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
| @@ -64,44 +67,23 @@ public class PacketListenerMain extends PacketAdapter | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         if (packets == null) | ||||
|         if (packets.isUnhandled()) | ||||
|         { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         packets.setPacketType(event.getPacketType()); | ||||
|  | ||||
|         event.setCancelled(true); | ||||
|  | ||||
|         try | ||||
|         { | ||||
|             for (PacketContainer packet : packets[0]) | ||||
|             for (PacketContainer packet : packets.getPackets()) | ||||
|             { | ||||
|                 ProtocolLibrary.getProtocolManager().sendServerPacket(observer, packet, false); | ||||
|             } | ||||
|  | ||||
|             final PacketContainer[] delayed = packets[1]; | ||||
|  | ||||
|             if (delayed.length == 0) | ||||
|             { | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|             Bukkit.getScheduler().scheduleSyncDelayedTask(libsDisguises, new Runnable() | ||||
|             { | ||||
|                 public void run() | ||||
|                 { | ||||
|                     try | ||||
|                     { | ||||
|                         for (PacketContainer packet : delayed) | ||||
|                         { | ||||
|                             ProtocolLibrary.getProtocolManager().sendServerPacket(observer, packet, false); | ||||
|                         } | ||||
|                     } | ||||
|                     catch (InvocationTargetException e) | ||||
|                     { | ||||
|                         e.printStackTrace(); | ||||
|                     } | ||||
|                 } | ||||
|             }, 2); | ||||
|             packets.sendDelayed(observer); | ||||
|         } | ||||
|         catch (InvocationTargetException ex) | ||||
|         { | ||||
|   | ||||
| @@ -4,7 +4,6 @@ import java.lang.reflect.InvocationTargetException; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
|  | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.entity.Player; | ||||
|  | ||||
| import com.comphenix.protocol.PacketType.Play.Server; | ||||
| @@ -20,24 +19,21 @@ import me.libraryaddict.disguise.DisguiseAPI; | ||||
| import me.libraryaddict.disguise.LibsDisguises; | ||||
| import me.libraryaddict.disguise.disguisetypes.Disguise; | ||||
| import me.libraryaddict.disguise.utilities.PacketsManager; | ||||
| import me.libraryaddict.disguise.utilities.PacketsManager.LibsPackets; | ||||
| import me.libraryaddict.disguise.utilities.ReflectionManager; | ||||
|  | ||||
| public class PacketListenerViewDisguises extends PacketAdapter | ||||
| { | ||||
|     private LibsDisguises libsDisguises; | ||||
|  | ||||
|     public PacketListenerViewDisguises(LibsDisguises plugin) | ||||
|     { | ||||
|         super(plugin, ListenerPriority.HIGH, Server.NAMED_ENTITY_SPAWN, Server.ATTACH_ENTITY, Server.REL_ENTITY_MOVE, | ||||
|                 Server.REL_ENTITY_MOVE_LOOK, Server.ENTITY_LOOK, Server.ENTITY_TELEPORT, Server.ENTITY_HEAD_ROTATION, | ||||
|                 Server.ENTITY_METADATA, Server.ENTITY_EQUIPMENT, Server.ANIMATION, Server.BED, Server.ENTITY_EFFECT, | ||||
|                 Server.ENTITY_VELOCITY, Server.UPDATE_ATTRIBUTES, Server.ENTITY_STATUS); | ||||
|  | ||||
|         libsDisguises = plugin; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onPacketSending(PacketEvent event) | ||||
|     public void onPacketSending(final PacketEvent event) | ||||
|     { | ||||
|         if (event.isCancelled()) | ||||
|             return; | ||||
| @@ -59,22 +55,22 @@ public class PacketListenerViewDisguises extends PacketAdapter | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|             final Disguise disguise = DisguiseAPI.getDisguise(observer, observer); | ||||
|  | ||||
|             if (disguise == null) | ||||
|                 return; | ||||
|  | ||||
|             // Here I grab the packets to convert them to, So I can display them as if the disguise sent them. | ||||
|             PacketContainer[][] transformed = PacketsManager.transformPacket(event.getPacket(), observer, observer); | ||||
|             LibsPackets transformed = PacketsManager.transformPacket(event.getPacket(), disguise, observer, observer); | ||||
|  | ||||
|             PacketContainer[] packets = transformed == null ? null : transformed[0]; | ||||
|  | ||||
|             final PacketContainer[] delayedPackets = transformed == null ? null : transformed[1]; | ||||
|  | ||||
|             if (packets == null) | ||||
|             if (transformed.isUnhandled()) | ||||
|             { | ||||
|                 packets = new PacketContainer[] | ||||
|                     { | ||||
|                             event.getPacket() | ||||
|                     }; | ||||
|                 transformed.getPackets().add(event.getPacket()); | ||||
|             } | ||||
|  | ||||
|             for (PacketContainer packet : packets) | ||||
|             transformed.setPacketType(event.getPacketType()); | ||||
|  | ||||
|             for (PacketContainer packet : transformed.getPackets()) | ||||
|             { | ||||
|                 if (packet.getType() != Server.PLAYER_INFO) | ||||
|                 { | ||||
| @@ -96,26 +92,7 @@ public class PacketListenerViewDisguises extends PacketAdapter | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             if (delayedPackets != null && delayedPackets.length > 0) | ||||
|             { | ||||
|                 Bukkit.getScheduler().scheduleSyncDelayedTask(libsDisguises, new Runnable() | ||||
|                 { | ||||
|                     public void run() | ||||
|                     { | ||||
|                         try | ||||
|                         { | ||||
|                             for (PacketContainer packet : delayedPackets) | ||||
|                             { | ||||
|                                 ProtocolLibrary.getProtocolManager().sendServerPacket(observer, packet, false); | ||||
|                             } | ||||
|                         } | ||||
|                         catch (InvocationTargetException e) | ||||
|                         { | ||||
|                             e.printStackTrace(); | ||||
|                         } | ||||
|                     } | ||||
|                 }, 2); | ||||
|             } | ||||
|             transformed.sendDelayed(observer); | ||||
|  | ||||
|             if (event.getPacketType() == Server.ENTITY_METADATA) | ||||
|             { | ||||
| @@ -182,8 +159,6 @@ public class PacketListenerViewDisguises extends PacketAdapter | ||||
|             } | ||||
|             else if (event.getPacketType() == Server.ENTITY_STATUS) | ||||
|             { | ||||
|                 Disguise disguise = DisguiseAPI.getDisguise(event.getPlayer(), event.getPlayer()); | ||||
|  | ||||
|                 if (disguise.isSelfDisguiseSoundsReplaced() && !disguise.getType().isPlayer() | ||||
|                         && event.getPacket().getBytes().read(0) == 2) | ||||
|                 { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user