|
4 | 4 |
|
5 | 5 | package net.jitse.npclib.nms.v1_10_R1; |
6 | 6 |
|
| 7 | +import java.util.List; |
| 8 | + |
| 9 | +import org.bukkit.Bukkit; |
| 10 | +import org.bukkit.Location; |
| 11 | +import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; |
| 12 | +import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftItemStack; |
| 13 | +import org.bukkit.entity.Player; |
| 14 | +import org.bukkit.inventory.ItemStack; |
| 15 | +import org.bukkit.util.Vector; |
| 16 | + |
7 | 17 | import com.mojang.authlib.GameProfile; |
8 | 18 | import com.mojang.authlib.properties.Property; |
| 19 | + |
9 | 20 | import net.jitse.npclib.NPCLib; |
10 | 21 | import net.jitse.npclib.api.skin.Skin; |
11 | 22 | import net.jitse.npclib.api.state.NPCAnimation; |
12 | 23 | import net.jitse.npclib.api.state.NPCSlot; |
13 | 24 | import net.jitse.npclib.hologram.Hologram; |
14 | 25 | import net.jitse.npclib.internal.MinecraftVersion; |
15 | 26 | import net.jitse.npclib.internal.NPCBase; |
16 | | -import net.jitse.npclib.nms.v1_10_R1.packets.*; |
17 | | -import net.minecraft.server.v1_10_R1.*; |
18 | | -import org.bukkit.Bukkit; |
19 | | -import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; |
20 | | -import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftItemStack; |
21 | | -import org.bukkit.entity.Player; |
22 | | -import org.bukkit.inventory.ItemStack; |
23 | | - |
24 | | -import java.util.List; |
| 27 | +import net.jitse.npclib.nms.v1_10_R1.packets.PacketPlayOutAnimationWrapper; |
| 28 | +import net.jitse.npclib.nms.v1_10_R1.packets.PacketPlayOutEntityHeadRotationWrapper; |
| 29 | +import net.jitse.npclib.nms.v1_10_R1.packets.PacketPlayOutEntityMetadataWrapper; |
| 30 | +import net.jitse.npclib.nms.v1_10_R1.packets.PacketPlayOutNamedEntitySpawnWrapper; |
| 31 | +import net.jitse.npclib.nms.v1_10_R1.packets.PacketPlayOutPlayerInfoWrapper; |
| 32 | +import net.jitse.npclib.nms.v1_10_R1.packets.PacketPlayOutScoreboardTeamWrapper; |
| 33 | +import net.minecraft.server.v1_10_R1.EnumItemSlot; |
| 34 | +import net.minecraft.server.v1_10_R1.PacketPlayOutAnimation; |
| 35 | +import net.minecraft.server.v1_10_R1.PacketPlayOutEntity; |
| 36 | +import net.minecraft.server.v1_10_R1.PacketPlayOutEntityDestroy; |
| 37 | +import net.minecraft.server.v1_10_R1.PacketPlayOutEntityEquipment; |
| 38 | +import net.minecraft.server.v1_10_R1.PacketPlayOutEntityHeadRotation; |
| 39 | +import net.minecraft.server.v1_10_R1.PacketPlayOutEntityMetadata; |
| 40 | +import net.minecraft.server.v1_10_R1.PacketPlayOutNamedEntitySpawn; |
| 41 | +import net.minecraft.server.v1_10_R1.PacketPlayOutPlayerInfo; |
| 42 | +import net.minecraft.server.v1_10_R1.PacketPlayOutScoreboardTeam; |
| 43 | +import net.minecraft.server.v1_10_R1.PlayerConnection; |
25 | 44 |
|
26 | 45 | /** |
27 | 46 | * @author Jitse Boonstra |
@@ -147,4 +166,22 @@ public void updateSkin(Skin skin) { |
147 | 166 | playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); |
148 | 167 | } |
149 | 168 | } |
| 169 | + |
| 170 | + @Override |
| 171 | + public void sendHeadRotationPackets(Location location) { |
| 172 | + for (Player player : Bukkit.getOnlinePlayers()) { |
| 173 | + PlayerConnection connection = ((CraftPlayer) player).getHandle().playerConnection; |
| 174 | + |
| 175 | + Location npcLocation = getLocation(); |
| 176 | + Vector dirBetweenLocations = location.toVector().subtract(npcLocation.toVector()); |
| 177 | + |
| 178 | + npcLocation.setDirection(dirBetweenLocations); |
| 179 | + |
| 180 | + float yaw = npcLocation.getYaw(); |
| 181 | + float pitch = npcLocation.getPitch(); |
| 182 | + |
| 183 | + connection.sendPacket(new PacketPlayOutEntity.PacketPlayOutEntityLook(getEntityId(), (byte) ((yaw % 360.) * 256 / 360), (byte) ((pitch % 360.) * 256 / 360), false)); |
| 184 | + connection.sendPacket(new PacketPlayOutEntityHeadRotationWrapper().create(npcLocation, entityId)); |
| 185 | + } |
| 186 | + } |
150 | 187 | } |
0 commit comments