Handle some types of disguises better for head rotations and other disguises
This commit is contained in:
		| @@ -4,6 +4,7 @@ import com.comphenix.protocol.PacketType; | |||||||
| import com.comphenix.protocol.events.PacketContainer; | import com.comphenix.protocol.events.PacketContainer; | ||||||
| import com.comphenix.protocol.reflect.StructureModifier; | import com.comphenix.protocol.reflect.StructureModifier; | ||||||
| import me.libraryaddict.disguise.disguisetypes.Disguise; | import me.libraryaddict.disguise.disguisetypes.Disguise; | ||||||
|  | import me.libraryaddict.disguise.disguisetypes.DisguiseType; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseUtilities; | import me.libraryaddict.disguise.utilities.DisguiseUtilities; | ||||||
| import me.libraryaddict.disguise.utilities.packets.IPacketHandler; | import me.libraryaddict.disguise.utilities.packets.IPacketHandler; | ||||||
| import me.libraryaddict.disguise.utilities.packets.LibsPackets; | import me.libraryaddict.disguise.utilities.packets.LibsPackets; | ||||||
| @@ -11,6 +12,7 @@ import org.bukkit.Location; | |||||||
| import org.bukkit.entity.Entity; | import org.bukkit.entity.Entity; | ||||||
| import org.bukkit.entity.EntityType; | import org.bukkit.entity.EntityType; | ||||||
| import org.bukkit.entity.Player; | import org.bukkit.entity.Player; | ||||||
|  | import org.bukkit.entity.ShulkerBullet; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Created by libraryaddict on 3/01/2019. |  * Created by libraryaddict on 3/01/2019. | ||||||
| @@ -30,9 +32,51 @@ public class PacketHandlerHeadRotation implements IPacketHandler { | |||||||
|  |  | ||||||
|         Location loc = entity.getLocation(); |         Location loc = entity.getLocation(); | ||||||
|  |  | ||||||
|         byte pitch = DisguiseUtilities |         DisguiseType entityType = DisguiseType.getType(entity); | ||||||
|                 .getPitch(disguise.getType(), entity.getType(), (byte) (int) (loc.getPitch() * 256.0F / 360.0F)); |  | ||||||
|         byte yaw = DisguiseUtilities.getYaw(disguise.getType(), entity.getType(), sentPacket.getBytes().read(0)); |         byte pitch; | ||||||
|  |         byte yaw; | ||||||
|  |  | ||||||
|  |         switch (entityType) { | ||||||
|  |             case LLAMA_SPIT: | ||||||
|  |             case FIREBALL: | ||||||
|  |             case SMALL_FIREBALL: | ||||||
|  |             case DRAGON_FIREBALL: | ||||||
|  |             case FIREWORK: | ||||||
|  |             case SHULKER_BULLET: | ||||||
|  |             case ARROW: | ||||||
|  |             case TIPPED_ARROW: | ||||||
|  |             case SPECTRAL_ARROW: | ||||||
|  |             case EGG: | ||||||
|  |             case TRIDENT: | ||||||
|  |             case THROWN_EXP_BOTTLE: | ||||||
|  |             case EXPERIENCE_ORB: | ||||||
|  |             case SPLASH_POTION: | ||||||
|  |             case ENDER_CRYSTAL: | ||||||
|  |             case FALLING_BLOCK: | ||||||
|  |             case ITEM_FRAME: | ||||||
|  |             case ENDER_SIGNAL: | ||||||
|  |             case ENDER_PEARL: | ||||||
|  |             case DROPPED_ITEM: | ||||||
|  |             case EVOKER_FANGS: | ||||||
|  |             case SNOWBALL: | ||||||
|  |             case PAINTING: | ||||||
|  |             case PRIMED_TNT: | ||||||
|  |                 if (sentPacket.getBytes().read(0) == 0 && entity.getVelocity().lengthSquared() > 0) { | ||||||
|  |                     loc.setDirection(entity.getVelocity()); | ||||||
|  |                     pitch = DisguiseUtilities.getPitch(disguise.getType(), DisguiseType.PLAYER, | ||||||
|  |                             (byte) (int) (loc.getPitch() * 256.0F / 360.0F)); | ||||||
|  |                     yaw = DisguiseUtilities.getYaw(disguise.getType(), DisguiseType.PLAYER, | ||||||
|  |                             (byte) (int) (loc.getYaw() * 256.0F / 360.0F)); | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |             default: | ||||||
|  |                 pitch = DisguiseUtilities.getPitch(disguise.getType(), entity.getType(), | ||||||
|  |                         (byte) (int) (loc.getPitch() * 256.0F / 360.0F)); | ||||||
|  |                 yaw = DisguiseUtilities | ||||||
|  |                         .getYaw(disguise.getType(), entity.getType(), (byte) (int) (loc.getYaw() * 256.0F / 360.0F)); | ||||||
|  |                 break; | ||||||
|  |         } | ||||||
|  |  | ||||||
|         PacketContainer rotation = new PacketContainer(PacketType.Play.Server.ENTITY_HEAD_ROTATION); |         PacketContainer rotation = new PacketContainer(PacketType.Play.Server.ENTITY_HEAD_ROTATION); | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user