Fix item disguises trying to fly off, fixes #439
This commit is contained in:
		| @@ -54,8 +54,6 @@ public class PacketHandlerAttributes implements IPacketHandler { | |||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         packets.clear(); |  | ||||||
|  |  | ||||||
|         List<WrappedAttribute> attributes = new ArrayList<>(); |         List<WrappedAttribute> attributes = new ArrayList<>(); | ||||||
|         PacketContainer updateAttributes = new PacketContainer(PacketType.Play.Server.UPDATE_ATTRIBUTES); |         PacketContainer updateAttributes = new PacketContainer(PacketType.Play.Server.UPDATE_ATTRIBUTES); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -158,8 +158,8 @@ public class PacketHandlerSpawn implements IPacketHandler { | |||||||
|             boolean visibleOrNewCompat = playerDisguise.isNameVisible() || DisguiseConfig.isScoreboardDisguiseNames(); |             boolean visibleOrNewCompat = playerDisguise.isNameVisible() || DisguiseConfig.isScoreboardDisguiseNames(); | ||||||
|  |  | ||||||
|             WrappedGameProfile spawnProfile = visibleOrNewCompat ? playerDisguise.getGameProfile() : ReflectionManager |             WrappedGameProfile spawnProfile = visibleOrNewCompat ? playerDisguise.getGameProfile() : ReflectionManager | ||||||
|                     .getGameProfileWithThisSkin(UUID.randomUUID(), visibleOrNewCompat ? playerDisguise.getProfileName() : "", |                     .getGameProfileWithThisSkin(UUID.randomUUID(), | ||||||
|                             playerDisguise.getGameProfile()); |                             visibleOrNewCompat ? playerDisguise.getProfileName() : "", playerDisguise.getGameProfile()); | ||||||
|  |  | ||||||
|             int entityId = disguisedEntity.getEntityId(); |             int entityId = disguisedEntity.getEntityId(); | ||||||
|  |  | ||||||
| @@ -378,6 +378,13 @@ public class PacketHandlerSpawn implements IPacketHandler { | |||||||
|                 ints.write(1, 0); |                 ints.write(1, 0); | ||||||
|                 ints.write(2, 0); |                 ints.write(2, 0); | ||||||
|                 ints.write(3, 0); |                 ints.write(3, 0); | ||||||
|  |  | ||||||
|  |                 if (disguise.getType() == DisguiseType.DROPPED_ITEM) { | ||||||
|  |                     PacketContainer velocity = new PacketContainer(PacketType.Play.Server.ENTITY_VELOCITY); | ||||||
|  |                     velocity.getIntegers().write(0, disguisedEntity.getEntityId()); | ||||||
|  |  | ||||||
|  |                     packets.addPacket(velocity); | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             spawnEntity.getModifier().write(8, pitch); |             spawnEntity.getModifier().write(8, pitch); | ||||||
|   | |||||||
| @@ -21,9 +21,11 @@ public class PacketHandlerVelocity implements IPacketHandler { | |||||||
|     @Override |     @Override | ||||||
|     public void handle(Disguise disguise, PacketContainer sentPacket, LibsPackets packets, Player observer, |     public void handle(Disguise disguise, PacketContainer sentPacket, LibsPackets packets, Player observer, | ||||||
|             Entity entity) { |             Entity entity) { | ||||||
|         // If the disguise is a misc and the disguised is not the same type |         // If the disguise isnt a misc or the disguised is the same type | ||||||
|         if (disguise.getType().isMisc() && DisguiseType.getType(entity) != disguise.getType()) { |         if (!disguise.getType().isMisc() || DisguiseType.getType(entity) == disguise.getType()) { | ||||||
|             packets.clear(); |             return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         packets.clear(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user