Skip to content

Commit a5e716c

Browse files
author
Jitse Boonstra
authored
Merge pull request #121 from Mooselk/master
Look at location method + 1.16.x support
2 parents 24606bf + f709be1 commit a5e716c

File tree

47 files changed

+1398
-109
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+1398
-109
lines changed

api/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<parent>
99
<artifactId>npclib</artifactId>
1010
<groupId>net.jitse</groupId>
11-
<version>2.9-SNAPSHOT</version>
11+
<version>2.11-SNAPSHOT</version>
1212
</parent>
1313

1414
<artifactId>npclib-api</artifactId>

api/src/main/java/net/jitse/npclib/api/NPC.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,4 +213,6 @@ public interface NPC {
213213
* @return The UUID of the NPC.
214214
*/
215215
UUID getUniqueId();
216+
217+
void lookAt(Location location);
216218
}

api/src/main/java/net/jitse/npclib/internal/MinecraftVersion.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ public enum MinecraftVersion {
1717
V1_13_R2,
1818
V1_14_R1,
1919
V1_15_R1,
20-
V1_16_R1;
20+
V1_16_R1,
21+
V1_16_R2,
22+
V1_16_R3;
2123

2224
public boolean isAboveOrEqual(MinecraftVersion compare) {
2325
return ordinal() >= compare.ordinal();

api/src/main/java/net/jitse/npclib/internal/NPCBase.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,4 +403,9 @@ public NPC setText(List<String> text) {
403403
public List<String> getText() {
404404
return text;
405405
}
406+
407+
@Override
408+
public void lookAt(Location location) {
409+
sendHeadRotationPackets(location);
410+
}
406411
}

api/src/main/java/net/jitse/npclib/internal/NPCPacketHandler.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
import net.jitse.npclib.api.state.NPCAnimation;
88
import net.jitse.npclib.api.state.NPCSlot;
9+
10+
import org.bukkit.Location;
911
import org.bukkit.entity.Player;
1012

1113
/**
@@ -27,6 +29,8 @@ interface NPCPacketHandler {
2729

2830
void sendAnimationPacket(Player player, NPCAnimation animation);
2931

32+
void sendHeadRotationPackets(Location location);
33+
3034
default void sendEquipmentPackets(Player player) {
3135
for (NPCSlot slot : NPCSlot.values())
3236
sendEquipmentPacket(player, slot, true);

nms/pom.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<parent>
99
<groupId>net.jitse</groupId>
1010
<artifactId>npclib</artifactId>
11-
<version>2.9-SNAPSHOT</version>
11+
<version>2.11-SNAPSHOT</version>
1212
</parent>
1313

1414
<artifactId>npclib-nms</artifactId>
@@ -25,6 +25,8 @@
2525
<module>v1_14_R1</module>
2626
<module>v1_15_R1</module>
2727
<module>v1_16_R1</module>
28+
<module>v1_16_R2</module>
29+
<module>v1_16_R3</module>
2830
</modules>
2931

3032
<dependencies>

nms/v1_10_R1/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<parent>
99
<groupId>net.jitse</groupId>
1010
<artifactId>npclib-nms</artifactId>
11-
<version>2.9-SNAPSHOT</version>
11+
<version>2.11-SNAPSHOT</version>
1212
</parent>
1313

1414
<artifactId>npclib-nms-v1_10_R1</artifactId>

nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/NPC_v1_10_R1.java

Lines changed: 46 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,43 @@
44

55
package net.jitse.npclib.nms.v1_10_R1;
66

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+
717
import com.mojang.authlib.GameProfile;
818
import com.mojang.authlib.properties.Property;
19+
920
import net.jitse.npclib.NPCLib;
1021
import net.jitse.npclib.api.skin.Skin;
1122
import net.jitse.npclib.api.state.NPCAnimation;
1223
import net.jitse.npclib.api.state.NPCSlot;
1324
import net.jitse.npclib.hologram.Hologram;
1425
import net.jitse.npclib.internal.MinecraftVersion;
1526
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;
2544

2645
/**
2746
* @author Jitse Boonstra
@@ -147,4 +166,22 @@ public void updateSkin(Skin skin) {
147166
playerConnection.sendPacket(packetPlayOutNamedEntitySpawn);
148167
}
149168
}
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+
}
150187
}

nms/v1_11_R1/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<parent>
99
<groupId>net.jitse</groupId>
1010
<artifactId>npclib-nms</artifactId>
11-
<version>2.9-SNAPSHOT</version>
11+
<version>2.11-SNAPSHOT</version>
1212
</parent>
1313

1414
<artifactId>npclib-nms-v1_11_R1</artifactId>

nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/NPC_v1_11_R1.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@
1616
import net.jitse.npclib.nms.v1_11_R1.packets.*;
1717
import net.minecraft.server.v1_11_R1.*;
1818
import org.bukkit.Bukkit;
19+
import org.bukkit.Location;
1920
import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer;
2021
import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftItemStack;
2122
import org.bukkit.entity.Player;
2223
import org.bukkit.inventory.ItemStack;
24+
import org.bukkit.util.Vector;
2325

2426
import java.util.List;
2527

@@ -147,4 +149,22 @@ public void updateSkin(Skin skin) {
147149
playerConnection.sendPacket(packetPlayOutNamedEntitySpawn);
148150
}
149151
}
152+
153+
@Override
154+
public void sendHeadRotationPackets(Location location) {
155+
for (Player player : Bukkit.getOnlinePlayers()) {
156+
PlayerConnection connection = ((CraftPlayer) player).getHandle().playerConnection;
157+
158+
Location npcLocation = getLocation();
159+
Vector dirBetweenLocations = location.toVector().subtract(npcLocation.toVector());
160+
161+
npcLocation.setDirection(dirBetweenLocations);
162+
163+
float yaw = npcLocation.getYaw();
164+
float pitch = npcLocation.getPitch();
165+
166+
connection.sendPacket(new PacketPlayOutEntity.PacketPlayOutEntityLook(getEntityId(), (byte) ((yaw % 360.) * 256 / 360), (byte) ((pitch % 360.) * 256 / 360), false));
167+
connection.sendPacket(new PacketPlayOutEntityHeadRotationWrapper().create(npcLocation, entityId));
168+
}
169+
}
150170
}

0 commit comments

Comments
 (0)