diff --git a/api/pom.xml b/api/pom.xml index b4ec98b..54dbfef 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib - 1.1 + 1.1.1 npclib-api diff --git a/commons/pom.xml b/commons/pom.xml index de0d179..9c7aef3 100644 --- a/commons/pom.xml +++ b/commons/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib - 1.1 + 1.1.1 npclib-commons diff --git a/commons/src/main/java/net/jitse/npclib/api/NPC.java b/commons/src/main/java/net/jitse/npclib/api/NPC.java index ca7b90b..6c20b7e 100644 --- a/commons/src/main/java/net/jitse/npclib/api/NPC.java +++ b/commons/src/main/java/net/jitse/npclib/api/NPC.java @@ -57,7 +57,12 @@ public abstract class NPC { return gameProfile; } + public void destroy() { + destroy(true); + } + + public void destroy(boolean scheduler) { NPCManager.remove(this); // Destroy NPC for every player that is still seeing it. @@ -66,7 +71,7 @@ public abstract class NPC { continue; } - hide(Bukkit.getPlayer(uuid), true); + hide(Bukkit.getPlayer(uuid), true, scheduler); } } @@ -131,10 +136,10 @@ public abstract class NPC { protected abstract void sendShowPackets(Player player); public void hide(Player player) { - hide(player, false); + hide(player, false, true); } - public void hide(Player player, boolean auto) { + public void hide(Player player, boolean auto, boolean scheduler) { NPCDestroyEvent event = new NPCDestroyEvent(this, player, auto ? TriggerType.AUTOMATIC : TriggerType.MANUAL); plugin.getServer().getPluginManager().callEvent(event); if (event.isCancelled()) { @@ -142,7 +147,7 @@ public abstract class NPC { } if (auto) { - sendHidePackets(player); + sendHidePackets(player, scheduler); } else { if (!shown.contains(player.getUniqueId())) { throw new RuntimeException("Cannot call hide method without calling NPC#show."); @@ -151,7 +156,7 @@ public abstract class NPC { shown.remove(player.getUniqueId()); if (player.getWorld().equals(location.getWorld()) && player.getLocation().distance(location) <= autoHideDistance) { - sendHidePackets(player); + sendHidePackets(player, scheduler); } else { if (autoHidden.contains(player.getUniqueId())) { autoHidden.remove(player.getUniqueId()); @@ -161,5 +166,5 @@ public abstract class NPC { } // Internal method. - protected abstract void sendHidePackets(Player player); + protected abstract void sendHidePackets(Player player, boolean scheduler); } diff --git a/commons/src/main/java/net/jitse/npclib/listeners/ChunkListener.java b/commons/src/main/java/net/jitse/npclib/listeners/ChunkListener.java index 4094128..a7940e2 100644 --- a/commons/src/main/java/net/jitse/npclib/listeners/ChunkListener.java +++ b/commons/src/main/java/net/jitse/npclib/listeners/ChunkListener.java @@ -38,7 +38,7 @@ public class ChunkListener implements Listener { continue; } - npc.hide(Bukkit.getPlayer(uuid), true); + npc.hide(Bukkit.getPlayer(uuid), true, true); } } } diff --git a/commons/src/main/java/net/jitse/npclib/listeners/PlayerListener.java b/commons/src/main/java/net/jitse/npclib/listeners/PlayerListener.java index cff5a98..8b6f37e 100644 --- a/commons/src/main/java/net/jitse/npclib/listeners/PlayerListener.java +++ b/commons/src/main/java/net/jitse/npclib/listeners/PlayerListener.java @@ -47,7 +47,7 @@ public class PlayerListener implements Listener { if (npc.getLocation().getWorld().equals(from)) { if (!npc.getAutoHidden().contains(player.getUniqueId())) { npc.getAutoHidden().add(player.getUniqueId()); - npc.hide(player, true); + npc.hide(player, true, false); } } } @@ -95,7 +95,7 @@ public class PlayerListener implements Listener { } else { // Check if the player and NPC are out of range to sendHidePackets it. if (!inRange) { - npc.hide(player, true); + npc.hide(player, true, true); npc.getAutoHidden().add(player.getUniqueId()); } } diff --git a/nms/pom.xml b/nms/pom.xml index 9fcbffd..27a68de 100644 --- a/nms/pom.xml +++ b/nms/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib - 1.1 + 1.1.1 npclib-nms diff --git a/nms/v1_10_R1/pom.xml b/nms/v1_10_R1/pom.xml index 2b45cc1..45c7a61 100644 --- a/nms/v1_10_R1/pom.xml +++ b/nms/v1_10_R1/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib-nms - 1.1 + 1.1.1 npclib-nms-v1_10_R1 diff --git a/nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/NPC_v1_10_R1.java b/nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/NPC_v1_10_R1.java index 9387c26..d103215 100644 --- a/nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/NPC_v1_10_R1.java +++ b/nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/NPC_v1_10_R1.java @@ -88,7 +88,7 @@ public class NPC_v1_10_R1 extends NPC { } @Override - public void sendHidePackets(Player player) { + public void sendHidePackets(Player player, boolean scheduler) { PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection; playerConnection.sendPacket(packetPlayOutEntityDestroy); @@ -96,8 +96,12 @@ public class NPC_v1_10_R1 extends NPC { hologram.destroy(player); - // Sending this a bit later so the player doesn't see the name (for that split second). - Bukkit.getScheduler().runTaskLater(plugin, () -> - playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister), 5); + if (scheduler) { + // Sending this a bit later so the player doesn't see the name (for that split second). + Bukkit.getScheduler().runTaskLater(plugin, () -> + playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister), 5); + } else { + playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister); + } } } diff --git a/nms/v1_11_R1/pom.xml b/nms/v1_11_R1/pom.xml index c7a3fbe..8e8f917 100644 --- a/nms/v1_11_R1/pom.xml +++ b/nms/v1_11_R1/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib-nms - 1.1 + 1.1.1 npclib-nms-v1_11_R1 diff --git a/nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/NPC_v1_11_R1.java b/nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/NPC_v1_11_R1.java index 2a5e65f..4c9e79f 100644 --- a/nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/NPC_v1_11_R1.java +++ b/nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/NPC_v1_11_R1.java @@ -88,7 +88,7 @@ public class NPC_v1_11_R1 extends NPC { } @Override - public void sendHidePackets(Player player) { + public void sendHidePackets(Player player, boolean scheduler) { PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection; playerConnection.sendPacket(packetPlayOutEntityDestroy); @@ -96,8 +96,12 @@ public class NPC_v1_11_R1 extends NPC { hologram.destroy(player); - // Sending this a bit later so the player doesn't see the name (for that split second). - Bukkit.getScheduler().runTaskLater(plugin, () -> - playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister), 5); + if (scheduler) { + // Sending this a bit later so the player doesn't see the name (for that split second). + Bukkit.getScheduler().runTaskLater(plugin, () -> + playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister), 5); + } else { + playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister); + } } } diff --git a/nms/v1_12_R1/pom.xml b/nms/v1_12_R1/pom.xml index 4d82598..5ce865e 100644 --- a/nms/v1_12_R1/pom.xml +++ b/nms/v1_12_R1/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib-nms - 1.1 + 1.1.1 npclib-nms-v1_12_R1 diff --git a/nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/NPC_v1_12_R1.java b/nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/NPC_v1_12_R1.java index 385e3b0..9e218a1 100644 --- a/nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/NPC_v1_12_R1.java +++ b/nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/NPC_v1_12_R1.java @@ -88,7 +88,7 @@ public class NPC_v1_12_R1 extends NPC { } @Override - public void sendHidePackets(Player player) { + public void sendHidePackets(Player player, boolean scheduler) { PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection; playerConnection.sendPacket(packetPlayOutEntityDestroy); @@ -96,8 +96,12 @@ public class NPC_v1_12_R1 extends NPC { hologram.destroy(player); - // Sending this a bit later so the player doesn't see the name (for that split second). - Bukkit.getScheduler().runTaskLater(plugin, () -> - playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister), 5); + if (scheduler) { + // Sending this a bit later so the player doesn't see the name (for that split second). + Bukkit.getScheduler().runTaskLater(plugin, () -> + playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister), 5); + } else { + playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister); + } } } diff --git a/nms/v1_8_R1/pom.xml b/nms/v1_8_R1/pom.xml index a297bf1..dc13553 100644 --- a/nms/v1_8_R1/pom.xml +++ b/nms/v1_8_R1/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib-nms - 1.1 + 1.1.1 npclib-nms-v1_8_R1 diff --git a/nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/NPC_v1_8_R1.java b/nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/NPC_v1_8_R1.java index c606689..3cb5713 100644 --- a/nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/NPC_v1_8_R1.java +++ b/nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/NPC_v1_8_R1.java @@ -87,7 +87,7 @@ public class NPC_v1_8_R1 extends NPC { } @Override - public void sendHidePackets(Player player) { + public void sendHidePackets(Player player, boolean scheduler) { PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection; playerConnection.sendPacket(packetPlayOutEntityDestroy); @@ -95,8 +95,12 @@ public class NPC_v1_8_R1 extends NPC { hologram.destroy(player); - // Sending this a bit later so the player doesn't see the name (for that split second). - Bukkit.getScheduler().runTaskLater(plugin, () -> - playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister), 5); + if (scheduler) { + // Sending this a bit later so the player doesn't see the name (for that split second). + Bukkit.getScheduler().runTaskLater(plugin, () -> + playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister), 5); + } else { + playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister); + } } } diff --git a/nms/v1_8_R2/pom.xml b/nms/v1_8_R2/pom.xml index c8847ff..d893d44 100644 --- a/nms/v1_8_R2/pom.xml +++ b/nms/v1_8_R2/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib-nms - 1.1 + 1.1.1 npclib-nms-v1_8_R2 diff --git a/nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/NPC_v1_8_R2.java b/nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/NPC_v1_8_R2.java index 3e15747..416fbb1 100644 --- a/nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/NPC_v1_8_R2.java +++ b/nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/NPC_v1_8_R2.java @@ -88,7 +88,7 @@ public class NPC_v1_8_R2 extends NPC { } @Override - public void sendHidePackets(Player player) { + public void sendHidePackets(Player player, boolean scheduler) { PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection; playerConnection.sendPacket(packetPlayOutEntityDestroy); @@ -96,8 +96,12 @@ public class NPC_v1_8_R2 extends NPC { hologram.destroy(player); - // Sending this a bit later so the player doesn't see the name (for that split second). - Bukkit.getScheduler().runTaskLater(plugin, () -> - playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister), 5); + if (scheduler) { + // Sending this a bit later so the player doesn't see the name (for that split second). + Bukkit.getScheduler().runTaskLater(plugin, () -> + playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister), 5); + } else { + playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister); + } } } diff --git a/nms/v1_8_R3/pom.xml b/nms/v1_8_R3/pom.xml index 2630197..1db9fda 100644 --- a/nms/v1_8_R3/pom.xml +++ b/nms/v1_8_R3/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib-nms - 1.1 + 1.1.1 npclib-nms-v1_8_R3 diff --git a/nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/NPC_v1_8_R3.java b/nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/NPC_v1_8_R3.java index 52895c1..00e4941 100644 --- a/nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/NPC_v1_8_R3.java +++ b/nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/NPC_v1_8_R3.java @@ -88,7 +88,7 @@ public class NPC_v1_8_R3 extends NPC { } @Override - public void sendHidePackets(Player player) { + public void sendHidePackets(Player player, boolean scheduler) { PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection; playerConnection.sendPacket(packetPlayOutEntityDestroy); @@ -96,8 +96,12 @@ public class NPC_v1_8_R3 extends NPC { hologram.destroy(player); - // Sending this a bit later so the player doesn't see the name (for that split second). - Bukkit.getScheduler().runTaskLater(plugin, () -> - playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister), 5); + if (scheduler) { + // Sending this a bit later so the player doesn't see the name (for that split second). + Bukkit.getScheduler().runTaskLater(plugin, () -> + playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister), 5); + } else { + playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister); + } } } diff --git a/nms/v1_9_R1/pom.xml b/nms/v1_9_R1/pom.xml index 5deb888..1db6847 100644 --- a/nms/v1_9_R1/pom.xml +++ b/nms/v1_9_R1/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib-nms - 1.1 + 1.1.1 npclib-nms-v1_9_R1 diff --git a/nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/NPC_v1_9_R1.java b/nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/NPC_v1_9_R1.java index 36f1721..a8d7e7e 100644 --- a/nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/NPC_v1_9_R1.java +++ b/nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/NPC_v1_9_R1.java @@ -88,7 +88,7 @@ public class NPC_v1_9_R1 extends NPC { } @Override - public void sendHidePackets(Player player) { + public void sendHidePackets(Player player, boolean scheduler) { PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection; playerConnection.sendPacket(packetPlayOutEntityDestroy); @@ -96,8 +96,12 @@ public class NPC_v1_9_R1 extends NPC { hologram.destroy(player); - // Sending this a bit later so the player doesn't see the name (for that split second). - Bukkit.getScheduler().runTaskLater(plugin, () -> - playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister), 5); + if (scheduler) { + // Sending this a bit later so the player doesn't see the name (for that split second). + Bukkit.getScheduler().runTaskLater(plugin, () -> + playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister), 5); + } else { + playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister); + } } } diff --git a/nms/v1_9_R2/pom.xml b/nms/v1_9_R2/pom.xml index 437d1bc..db6eddf 100644 --- a/nms/v1_9_R2/pom.xml +++ b/nms/v1_9_R2/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib-nms - 1.1 + 1.1.1 npclib-nms-v1_9_R2 diff --git a/nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/NPC_v1_9_R2.java b/nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/NPC_v1_9_R2.java index 21a40de..3613f37 100644 --- a/nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/NPC_v1_9_R2.java +++ b/nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/NPC_v1_9_R2.java @@ -88,7 +88,7 @@ public class NPC_v1_9_R2 extends NPC { } @Override - public void sendHidePackets(Player player) { + public void sendHidePackets(Player player, boolean scheduler) { PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection; playerConnection.sendPacket(packetPlayOutEntityDestroy); @@ -96,8 +96,12 @@ public class NPC_v1_9_R2 extends NPC { hologram.destroy(player); - // Sending this a bit later so the player doesn't see the name (for that split second). - Bukkit.getScheduler().runTaskLater(plugin, () -> - playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister), 5); + if (scheduler) { + // Sending this a bit later so the player doesn't see the name (for that split second). + Bukkit.getScheduler().runTaskLater(plugin, () -> + playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister), 5); + } else { + playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister); + } } } diff --git a/plugin/pom.xml b/plugin/pom.xml index 1360fe7..43bd364 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib - 1.1 + 1.1.1 npclib-plugin diff --git a/pom.xml b/pom.xml index 84e0342..184327f 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ net.jitse npclib - 1.1 + 1.1.1 NPCLib https://github.com/JitseB/npclib