From 231ceba803eb55580fa4ee9a20406822bcad2d93 Mon Sep 17 00:00:00 2001
From: D3v1s0m <49519439+D3v1s0m@users.noreply.github.com>
Date: Thu, 29 Jun 2023 16:59:22 +0530
Subject: [PATCH] Fixed non-player npc spawning in 1.14-1.16

---
 .../pyr/znpcsplus/packets/V1_14PacketFactory.java   | 13 -------------
 .../pyr/znpcsplus/packets/V1_17PacketFactory.java   | 13 +++++++++++++
 2 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_14PacketFactory.java b/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_14PacketFactory.java
index deabbdb..7e80157 100644
--- a/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_14PacketFactory.java
+++ b/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_14PacketFactory.java
@@ -3,36 +3,23 @@ package lol.pyr.znpcsplus.packets;
 import com.github.retrooper.packetevents.PacketEventsAPI;
 import com.github.retrooper.packetevents.protocol.entity.data.EntityData;
 import com.github.retrooper.packetevents.protocol.entity.pose.EntityPose;
-import com.github.retrooper.packetevents.util.Vector3d;
-import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerSpawnEntity;
 import lol.pyr.znpcsplus.api.entity.PropertyHolder;
 import lol.pyr.znpcsplus.entity.EntityPropertyRegistryImpl;
 import lol.pyr.znpcsplus.entity.PacketEntity;
 import lol.pyr.znpcsplus.metadata.MetadataFactory;
 import lol.pyr.znpcsplus.scheduling.TaskScheduler;
-import lol.pyr.znpcsplus.util.NpcLocation;
 import lol.pyr.znpcsplus.util.NpcPose;
 import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
 import org.bukkit.entity.Player;
 import org.bukkit.plugin.Plugin;
 
 import java.util.Map;
-import java.util.Optional;
 
 public class V1_14PacketFactory extends V1_11PacketFactory {
     public V1_14PacketFactory(TaskScheduler scheduler, MetadataFactory metadataFactory, PacketEventsAPI<Plugin> packetEvents, EntityPropertyRegistryImpl propertyRegistry, LegacyComponentSerializer textSerializer) {
         super(scheduler, metadataFactory, packetEvents, propertyRegistry, textSerializer);
     }
 
-    @Override
-    public void spawnEntity(Player player, PacketEntity entity, PropertyHolder properties) {
-        NpcLocation location = entity.getLocation();
-        sendPacket(player, new WrapperPlayServerSpawnEntity(entity.getEntityId(), Optional.of(entity.getUuid()), entity.getType(),
-                npcLocationToVector(location), location.getPitch(), location.getYaw(), location.getYaw(), 0, Optional.of(new Vector3d())));
-        sendAllMetadata(player, entity, properties);
-        createTeam(player, entity, properties);
-    }
-
     @Override
     public Map<Integer, EntityData> generateMetadata(Player player, PacketEntity entity, PropertyHolder properties) {
         Map<Integer, EntityData> data = super.generateMetadata(player, entity, properties);
diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_17PacketFactory.java b/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_17PacketFactory.java
index 5688676..81aed5e 100644
--- a/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_17PacketFactory.java
+++ b/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_17PacketFactory.java
@@ -2,22 +2,35 @@ package lol.pyr.znpcsplus.packets;
 
 import com.github.retrooper.packetevents.PacketEventsAPI;
 import com.github.retrooper.packetevents.protocol.entity.data.EntityData;
+import com.github.retrooper.packetevents.util.Vector3d;
+import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerSpawnEntity;
 import lol.pyr.znpcsplus.api.entity.PropertyHolder;
 import lol.pyr.znpcsplus.entity.EntityPropertyRegistryImpl;
 import lol.pyr.znpcsplus.entity.PacketEntity;
 import lol.pyr.znpcsplus.metadata.MetadataFactory;
 import lol.pyr.znpcsplus.scheduling.TaskScheduler;
+import lol.pyr.znpcsplus.util.NpcLocation;
 import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
 import org.bukkit.entity.Player;
 import org.bukkit.plugin.Plugin;
 
 import java.util.Map;
+import java.util.Optional;
 
 public class V1_17PacketFactory extends V1_16PacketFactory {
     public V1_17PacketFactory(TaskScheduler scheduler, MetadataFactory metadataFactory, PacketEventsAPI<Plugin> packetEvents, EntityPropertyRegistryImpl propertyRegistry, LegacyComponentSerializer textSerializer) {
         super(scheduler, metadataFactory, packetEvents, propertyRegistry, textSerializer);
     }
 
+    @Override
+    public void spawnEntity(Player player, PacketEntity entity, PropertyHolder properties) {
+        NpcLocation location = entity.getLocation();
+        sendPacket(player, new WrapperPlayServerSpawnEntity(entity.getEntityId(), Optional.of(entity.getUuid()), entity.getType(),
+                npcLocationToVector(location), location.getPitch(), location.getYaw(), location.getYaw(), 0, Optional.of(new Vector3d())));
+        sendAllMetadata(player, entity, properties);
+        createTeam(player, entity, properties);
+    }
+
     @Override
     public Map<Integer, EntityData> generateMetadata(Player player, PacketEntity entity, PropertyHolder properties) {
         Map<Integer, EntityData> data = super.generateMetadata(player, entity, properties);