From 4da537e9781357f0dda92710f18de32ed1e8535c Mon Sep 17 00:00:00 2001 From: Gatt Date: Thu, 16 Jul 2020 18:14:23 +1000 Subject: [PATCH] potential feature for per-player hologram names --- .travis.yml | 1 + api/pom.xml | 2 +- .../main/java/net/jitse/npclib/api/NPC.java | 34 ++++++++++++++ .../npclib/internal/MinecraftVersion.java | 3 +- .../net/jitse/npclib/internal/NPCBase.java | 47 ++++++++++++++++++- .../npclib/internal/NPCPacketHandler.java | 2 + nms/pom.xml | 2 +- nms/v1_10_R1/pom.xml | 2 +- .../npclib/nms/v1_10_R1/NPC_v1_10_R1.java | 19 +++++++- nms/v1_11_R1/pom.xml | 2 +- .../npclib/nms/v1_11_R1/NPC_v1_11_R1.java | 19 +++++++- nms/v1_12_R1/pom.xml | 2 +- .../npclib/nms/v1_12_R1/NPC_v1_12_R1.java | 19 +++++++- nms/v1_13_R1/pom.xml | 2 +- .../npclib/nms/v1_13_R1/NPC_v1_13_R1.java | 19 +++++++- nms/v1_13_R2/pom.xml | 2 +- .../npclib/nms/v1_13_R2/NPC_v1_13_R2.java | 18 ++++++- nms/v1_14_R1/pom.xml | 2 +- .../npclib/nms/v1_14_R1/NPC_v1_14_R1.java | 18 ++++++- nms/v1_15_R1/pom.xml | 2 +- .../npclib/nms/v1_15_R1/NPC_v1_15_R1.java | 18 ++++++- nms/v1_16_R1/pom.xml | 2 +- .../npclib/nms/v1_16_R1/NPC_v1_16_R1.java | 18 ++++++- nms/v1_8_R2/pom.xml | 2 +- .../jitse/npclib/nms/v1_8_R2/NPC_v1_8_R2.java | 20 +++++++- nms/v1_8_R3/pom.xml | 2 +- .../jitse/npclib/nms/v1_8_R3/NPC_v1_8_R3.java | 18 ++++++- nms/v1_9_R1/pom.xml | 2 +- .../jitse/npclib/nms/v1_9_R1/NPC_v1_9_R1.java | 19 +++++++- nms/v1_9_R2/pom.xml | 2 +- .../jitse/npclib/nms/v1_9_R2/NPC_v1_9_R2.java | 20 +++++++- plugin/pom.xml | 2 +- pom.xml | 2 +- 33 files changed, 302 insertions(+), 42 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7dec16a..1ce051b 100755 --- a/.travis.yml +++ b/.travis.yml @@ -18,5 +18,6 @@ install: - ls $HOME/.m2/repository/org/spigotmc/spigot/1.13.2-R0.1-SNAPSHOT >> /dev/null 2>&1 || java -jar BuildTools.jar --rev 1.13.2 >> /dev/null 2>&1 - ls $HOME/.m2/repository/org/spigotmc/spigot/1.14.4-R0.1-SNAPSHOT >> /dev/null 2>&1 || java -jar BuildTools.jar --rev 1.14.4 >> /dev/null 2>&1 - ls $HOME/.m2/repository/org/spigotmc/spigot/1.15.2-R0.1-SNAPSHOT >> /dev/null 2>&1 || java -jar BuildTools.jar --rev 1.15.2 >> /dev/null 2>&1 + - ls $HOME/.m2/repository/org/spigotmc/spigot/1.16.1-R0.1-SNAPSHOT >> /dev/null 2>&1 || java -jar BuildTools.jar --rev 1.16.1 >> /dev/null 2>&1 script: - mvn clean install \ No newline at end of file diff --git a/api/pom.xml b/api/pom.xml index a0ce66b..395cfb2 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -8,7 +8,7 @@ npclib net.jitse - 2.9-SNAPSHOT + 2.10-SNAPSHOT npclib-api diff --git a/api/src/main/java/net/jitse/npclib/api/NPC.java b/api/src/main/java/net/jitse/npclib/api/NPC.java index 3836644..1173487 100644 --- a/api/src/main/java/net/jitse/npclib/api/NPC.java +++ b/api/src/main/java/net/jitse/npclib/api/NPC.java @@ -8,6 +8,7 @@ import net.jitse.npclib.api.skin.Skin; import net.jitse.npclib.api.state.NPCAnimation; import net.jitse.npclib.api.state.NPCSlot; import net.jitse.npclib.api.state.NPCState; +import net.jitse.npclib.hologram.Hologram; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; @@ -18,6 +19,39 @@ import java.util.UUID; public interface NPC { + /** + * + * @param player + * @return unique hologram for that user + */ + Hologram getPlayerHologram(Player player); + + /** + * + * @param uniqueLines The text that the targetPlayer will see + * @param targetPlayer The target player + * @return object instance + * @author Gatt + */ + NPC setPlayerLines(List uniqueLines, Player targetPlayer); + + /** + * + * @param uniqueLines The text that the targetPlayer will see + * @param targetPlayer The target player + * @param update whether or not to send the update packets + * @return object instance + * @author Gatt + */ + NPC setPlayerLines(List uniqueLines, Player targetPlayer, boolean update); + + /** + * + * @param targetPlayer The target player + * @return the lines that the targetPlayer will see, if null; default lines. + */ + List getPlayerLines(Player targetPlayer); + /** * Set the NPC's location. * Use this method before using {@link NPC#create}. diff --git a/api/src/main/java/net/jitse/npclib/internal/MinecraftVersion.java b/api/src/main/java/net/jitse/npclib/internal/MinecraftVersion.java index e174c98..db98d68 100644 --- a/api/src/main/java/net/jitse/npclib/internal/MinecraftVersion.java +++ b/api/src/main/java/net/jitse/npclib/internal/MinecraftVersion.java @@ -16,7 +16,8 @@ public enum MinecraftVersion { V1_13_R1, V1_13_R2, V1_14_R1, - V1_15_R1; + V1_15_R1, + V1_16_R1; public boolean isAboveOrEqual(MinecraftVersion compare) { return ordinal() >= compare.ordinal(); diff --git a/api/src/main/java/net/jitse/npclib/internal/NPCBase.java b/api/src/main/java/net/jitse/npclib/internal/NPCBase.java index 05b0856..8767ce5 100644 --- a/api/src/main/java/net/jitse/npclib/internal/NPCBase.java +++ b/api/src/main/java/net/jitse/npclib/internal/NPCBase.java @@ -49,6 +49,10 @@ public abstract class NPCBase implements NPC, NPCPacketHandler { protected final Map items = new EnumMap<>(NPCSlot.class); + // Storage for per-player text; + protected final Map> uniqueText = new HashMap<>(); + protected final Map textDisplayHolograms = new HashMap<>(); + public NPCBase(NPCLib instance, List text) { this.instance = instance; this.text = text == null ? Collections.emptyList() : text; @@ -60,6 +64,42 @@ public abstract class NPCBase implements NPC, NPCPacketHandler { return instance; } + @Override + public Hologram getPlayerHologram(Player player){ + Hologram playerHologram = textDisplayHolograms.getOrDefault(player.getUniqueId(), null); + return playerHologram; + } + + @Override + public NPC setPlayerLines(List uniqueLines, Player targetPlayer) { + uniqueText.put(targetPlayer.getUniqueId(), uniqueLines); + return this; + } + + @Override + public NPC setPlayerLines(List uniqueLines, Player targetPlayer, boolean update) { + List originalLines = getPlayerLines(targetPlayer); + setPlayerLines(uniqueLines, targetPlayer); + if (update){ + if (originalLines.size() != uniqueLines.size()){ // recreate the entire hologram + Hologram originalhologram = getPlayerHologram(targetPlayer); + originalhologram.hide(targetPlayer); // essentially destroy the hologram + textDisplayHolograms.remove(targetPlayer.getUniqueId()); // remove the old obj + } + + Hologram hologram = getPlayerHologram(targetPlayer); // + List updatePackets = hologram.getUpdatePackets(getPlayerLines(targetPlayer)); + hologram.update(targetPlayer, updatePackets); + hologram.show(targetPlayer); + } + return this; + } + + @Override + public List getPlayerLines(Player targetPlayer) { + return uniqueText.getOrDefault(targetPlayer.getUniqueId(), text); + } + @Override public UUID getUniqueId() { return uuid; @@ -303,11 +343,16 @@ public abstract class NPCBase implements NPC, NPCPacketHandler { @Override public NPC setText(List text) { - List updatePackets = hologram.getUpdatePackets(text); + uniqueText.clear(); for (UUID shownUuid : shown) { Player player = Bukkit.getPlayer(shownUuid); if (player != null && isShown(player)) { + Hologram originalhologram = getPlayerHologram(player); + originalhologram.hide(player); // essentially destroy the hologram + textDisplayHolograms.remove(player.getUniqueId()); // remove the old obj + Hologram hologram = getPlayerHologram(player); // let it regenerate + List updatePackets = hologram.getUpdatePackets(getPlayerLines(player)); hologram.update(player, updatePackets); } } diff --git a/api/src/main/java/net/jitse/npclib/internal/NPCPacketHandler.java b/api/src/main/java/net/jitse/npclib/internal/NPCPacketHandler.java index ab64479..bc24484 100644 --- a/api/src/main/java/net/jitse/npclib/internal/NPCPacketHandler.java +++ b/api/src/main/java/net/jitse/npclib/internal/NPCPacketHandler.java @@ -15,6 +15,8 @@ interface NPCPacketHandler { void createPackets(); + void createPackets(Player player); + void sendShowPackets(Player player); void sendHidePackets(Player player); diff --git a/nms/pom.xml b/nms/pom.xml index 286a9da..cf526cf 100644 --- a/nms/pom.xml +++ b/nms/pom.xml @@ -8,7 +8,7 @@ net.jitse npclib - 2.9-SNAPSHOT + 2.10-SNAPSHOT npclib-nms diff --git a/nms/v1_10_R1/pom.xml b/nms/v1_10_R1/pom.xml index 7d18f5f..74f8c6a 100755 --- a/nms/v1_10_R1/pom.xml +++ b/nms/v1_10_R1/pom.xml @@ -8,7 +8,7 @@ net.jitse npclib-nms - 2.9-SNAPSHOT + 2.10-SNAPSHOT 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 50485df..0ee056c 100755 --- 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 @@ -38,9 +38,24 @@ public class NPC_v1_10_R1 extends NPCBase { super(instance, lines); } + @Override + public Hologram getPlayerHologram(Player player) { + Hologram holo = super.getPlayerHologram(player); + if (holo == null){ + holo = new Hologram(MinecraftVersion.V1_10_R1, location.clone().add(0, 0.5, 0), getPlayerLines(player)); + } + super.textDisplayHolograms.put(player.getUniqueId(), holo); + return holo; + } + + @Override public void createPackets() { - this.hologram = new Hologram(MinecraftVersion.V1_10_R1, location.clone().subtract(0, 0.5, 0), text); + Bukkit.getOnlinePlayers().forEach(this::createPackets); + } + + @Override + public void createPackets(Player player) { PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); @@ -74,7 +89,7 @@ public class NPC_v1_10_R1 extends NPCBase { playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutEntityHeadRotation); - hologram.show(player); + getPlayerHologram(player).show(player); // Removing the player info after 10 seconds. Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> diff --git a/nms/v1_11_R1/pom.xml b/nms/v1_11_R1/pom.xml index 5fa1c32..5b9c2e4 100755 --- a/nms/v1_11_R1/pom.xml +++ b/nms/v1_11_R1/pom.xml @@ -8,7 +8,7 @@ net.jitse npclib-nms - 2.9-SNAPSHOT + 2.10-SNAPSHOT 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 9a85420..e680a56 100755 --- 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 @@ -38,9 +38,24 @@ public class NPC_v1_11_R1 extends NPCBase { super(instance, lines); } + @Override + public Hologram getPlayerHologram(Player player) { + Hologram holo = super.getPlayerHologram(player); + if (holo == null){ + holo = new Hologram(MinecraftVersion.V1_11_R1, location.clone().add(0, 0.5, 0), getPlayerLines(player)); + } + super.textDisplayHolograms.put(player.getUniqueId(), holo); + return holo; + } + + @Override public void createPackets() { - this.hologram = new Hologram(MinecraftVersion.V1_11_R1, location.clone().add(0, 0.5, 0), text); + Bukkit.getOnlinePlayers().forEach(this::createPackets); + } + + @Override + public void createPackets(Player player) { PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); @@ -74,7 +89,7 @@ public class NPC_v1_11_R1 extends NPCBase { playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutEntityHeadRotation); - hologram.show(player); + getPlayerHologram(player).show(player); // Removing the player info after 10 seconds. Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> diff --git a/nms/v1_12_R1/pom.xml b/nms/v1_12_R1/pom.xml index aa9b953..cf76613 100755 --- a/nms/v1_12_R1/pom.xml +++ b/nms/v1_12_R1/pom.xml @@ -8,7 +8,7 @@ net.jitse npclib-nms - 2.9-SNAPSHOT + 2.10-SNAPSHOT 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 7cdfbf7..e806a87 100755 --- 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 @@ -38,9 +38,24 @@ public class NPC_v1_12_R1 extends NPCBase { super(instance, lines); } + @Override + public Hologram getPlayerHologram(Player player) { + Hologram holo = super.getPlayerHologram(player); + if (holo == null){ + holo = new Hologram(MinecraftVersion.V1_12_R1, location.clone().add(0, 0.5, 0), getPlayerLines(player)); + } + super.textDisplayHolograms.put(player.getUniqueId(), holo); + return holo; + } + + @Override public void createPackets() { - this.hologram = new Hologram(MinecraftVersion.V1_12_R1, location.clone().add(0, 0.5, 0), text); + Bukkit.getOnlinePlayers().forEach(this::createPackets); + } + + @Override + public void createPackets(Player player) { PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); @@ -74,7 +89,7 @@ public class NPC_v1_12_R1 extends NPCBase { playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutEntityHeadRotation); - hologram.show(player); + getPlayerHologram(player).show(player); // Removing the player info after 10 seconds. Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> diff --git a/nms/v1_13_R1/pom.xml b/nms/v1_13_R1/pom.xml index 2c0742b..4977e7a 100755 --- a/nms/v1_13_R1/pom.xml +++ b/nms/v1_13_R1/pom.xml @@ -8,7 +8,7 @@ net.jitse npclib-nms - 2.9-SNAPSHOT + 2.10-SNAPSHOT npclib-nms-v1_13_R1 diff --git a/nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/NPC_v1_13_R1.java b/nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/NPC_v1_13_R1.java index 97b5465..3e4a5e4 100755 --- a/nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/NPC_v1_13_R1.java +++ b/nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/NPC_v1_13_R1.java @@ -38,9 +38,24 @@ public class NPC_v1_13_R1 extends NPCBase { super(instance, lines); } + @Override + public Hologram getPlayerHologram(Player player) { + Hologram holo = super.getPlayerHologram(player); + if (holo == null){ + holo = new Hologram(MinecraftVersion.V1_13_R1, location.clone().add(0, 0.5, 0), getPlayerLines(player)); + } + super.textDisplayHolograms.put(player.getUniqueId(), holo); + return holo; + } + + @Override public void createPackets() { - this.hologram = new Hologram(MinecraftVersion.V1_13_R1, location.clone().add(0, 0.5, 0), text); + Bukkit.getOnlinePlayers().forEach(this::createPackets); + } + + @Override + public void createPackets(Player player) { PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); @@ -74,7 +89,7 @@ public class NPC_v1_13_R1 extends NPCBase { playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutEntityHeadRotation); - hologram.show(player); + getPlayerHologram(player).show(player); // Removing the player info after 10 seconds. Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> diff --git a/nms/v1_13_R2/pom.xml b/nms/v1_13_R2/pom.xml index 4c544ae..22d51ff 100755 --- a/nms/v1_13_R2/pom.xml +++ b/nms/v1_13_R2/pom.xml @@ -8,7 +8,7 @@ net.jitse npclib-nms - 2.9-SNAPSHOT + 2.10-SNAPSHOT npclib-nms-v1_13_R2 diff --git a/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/NPC_v1_13_R2.java b/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/NPC_v1_13_R2.java index e22b612..c49f088 100755 --- a/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/NPC_v1_13_R2.java +++ b/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/NPC_v1_13_R2.java @@ -37,10 +37,24 @@ public class NPC_v1_13_R2 extends NPCBase { public NPC_v1_13_R2(NPCLib instance, List lines) { super(instance, lines); } + @Override + public Hologram getPlayerHologram(Player player) { + Hologram holo = super.getPlayerHologram(player); + if (holo == null){ + holo = new Hologram(MinecraftVersion.V1_13_R2, location.clone().add(0, 0.5, 0), getPlayerLines(player)); + } + super.textDisplayHolograms.put(player.getUniqueId(), holo); + return holo; + } + @Override public void createPackets() { - this.hologram = new Hologram(MinecraftVersion.V1_13_R2, location.clone().add(0, 0.5, 0), text); + Bukkit.getOnlinePlayers().forEach(this::createPackets); + } + + @Override + public void createPackets(Player player) { PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); @@ -74,7 +88,7 @@ public class NPC_v1_13_R2 extends NPCBase { playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutEntityHeadRotation); - hologram.show(player); + getPlayerHologram(player).show(player); // Removing the player info after 10 seconds. Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> diff --git a/nms/v1_14_R1/pom.xml b/nms/v1_14_R1/pom.xml index 6814941..fd8b902 100755 --- a/nms/v1_14_R1/pom.xml +++ b/nms/v1_14_R1/pom.xml @@ -8,7 +8,7 @@ net.jitse npclib-nms - 2.9-SNAPSHOT + 2.10-SNAPSHOT npclib-nms-v1_14_R1 diff --git a/nms/v1_14_R1/src/main/java/net/jitse/npclib/nms/v1_14_R1/NPC_v1_14_R1.java b/nms/v1_14_R1/src/main/java/net/jitse/npclib/nms/v1_14_R1/NPC_v1_14_R1.java index d4c9c44..a56cba1 100755 --- a/nms/v1_14_R1/src/main/java/net/jitse/npclib/nms/v1_14_R1/NPC_v1_14_R1.java +++ b/nms/v1_14_R1/src/main/java/net/jitse/npclib/nms/v1_14_R1/NPC_v1_14_R1.java @@ -33,10 +33,24 @@ public class NPC_v1_14_R1 extends NPCBase { public NPC_v1_14_R1(NPCLib instance, List lines) { super(instance, lines); } + @Override + public Hologram getPlayerHologram(Player player) { + Hologram holo = super.getPlayerHologram(player); + if (holo == null){ + holo = new Hologram(MinecraftVersion.V1_14_R1, location.clone().add(0, 0.5, 0), getPlayerLines(player)); + } + super.textDisplayHolograms.put(player.getUniqueId(), holo); + return holo; + } + @Override public void createPackets() { - this.hologram = new Hologram(MinecraftVersion.V1_14_R1, location.clone().add(0, 0.5, 0), text); + Bukkit.getOnlinePlayers().forEach(this::createPackets); + } + + @Override + public void createPackets(Player player) { PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); @@ -70,7 +84,7 @@ public class NPC_v1_14_R1 extends NPCBase { playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutEntityHeadRotation); - hologram.show(player); + getPlayerHologram(player).show(player); // Removing the player info after 10 seconds. Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> diff --git a/nms/v1_15_R1/pom.xml b/nms/v1_15_R1/pom.xml index 0708d81..5b3f1b1 100644 --- a/nms/v1_15_R1/pom.xml +++ b/nms/v1_15_R1/pom.xml @@ -8,7 +8,7 @@ net.jitse npclib-nms - 2.9-SNAPSHOT + 2.10-SNAPSHOT npclib-nms-v1_15_R1 diff --git a/nms/v1_15_R1/src/main/java/net/jitse/npclib/nms/v1_15_R1/NPC_v1_15_R1.java b/nms/v1_15_R1/src/main/java/net/jitse/npclib/nms/v1_15_R1/NPC_v1_15_R1.java index d0341ed..c73f0fa 100644 --- a/nms/v1_15_R1/src/main/java/net/jitse/npclib/nms/v1_15_R1/NPC_v1_15_R1.java +++ b/nms/v1_15_R1/src/main/java/net/jitse/npclib/nms/v1_15_R1/NPC_v1_15_R1.java @@ -33,10 +33,24 @@ public class NPC_v1_15_R1 extends NPCBase { public NPC_v1_15_R1(NPCLib instance, List lines) { super(instance, lines); } + @Override + public Hologram getPlayerHologram(Player player) { + Hologram holo = super.getPlayerHologram(player); + if (holo == null){ + holo = new Hologram(MinecraftVersion.V1_15_R1, location.clone().add(0, 0.5, 0), getPlayerLines(player)); + } + super.textDisplayHolograms.put(player.getUniqueId(), holo); + return holo; + } + @Override public void createPackets() { - this.hologram = new Hologram(MinecraftVersion.V1_15_R1, location.clone().add(0, 0.5, 0), text); + Bukkit.getOnlinePlayers().forEach(this::createPackets); + } + + @Override + public void createPackets(Player player) { PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); @@ -71,7 +85,7 @@ public class NPC_v1_15_R1 extends NPCBase { playerConnection.sendPacket(packetPlayOutEntityHeadRotation); sendMetadataPacket(player); - hologram.show(player); + getPlayerHologram(player).show(player); // Removing the player info after 10 seconds. Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> diff --git a/nms/v1_16_R1/pom.xml b/nms/v1_16_R1/pom.xml index 62cae7a..4c55a8f 100644 --- a/nms/v1_16_R1/pom.xml +++ b/nms/v1_16_R1/pom.xml @@ -8,7 +8,7 @@ net.jitse npclib-nms - 2.9-SNAPSHOT + 2.10-SNAPSHOT npclib-nms-v1_16_R1 diff --git a/nms/v1_16_R1/src/main/java/net/jitse/npclib/nms/v1_16_R1/NPC_v1_16_R1.java b/nms/v1_16_R1/src/main/java/net/jitse/npclib/nms/v1_16_R1/NPC_v1_16_R1.java index 667ac9a..02f1948 100644 --- a/nms/v1_16_R1/src/main/java/net/jitse/npclib/nms/v1_16_R1/NPC_v1_16_R1.java +++ b/nms/v1_16_R1/src/main/java/net/jitse/npclib/nms/v1_16_R1/NPC_v1_16_R1.java @@ -36,10 +36,24 @@ public class NPC_v1_16_R1 extends NPCBase { public NPC_v1_16_R1(NPCLib instance, List lines) { super(instance, lines); } + @Override + public Hologram getPlayerHologram(Player player) { + Hologram holo = super.getPlayerHologram(player); + if (holo == null){ + holo = new Hologram(MinecraftVersion.V1_16_R1, location.clone().add(0, 0.5, 0), getPlayerLines(player)); + } + super.textDisplayHolograms.put(player.getUniqueId(), holo); + return holo; + } + @Override public void createPackets() { - this.hologram = new Hologram(MinecraftVersion.V1_15_R1, location.clone().add(0, 0.5, 0), text); + Bukkit.getOnlinePlayers().forEach(this::createPackets); + } + + @Override + public void createPackets(Player player) { PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); @@ -74,7 +88,7 @@ public class NPC_v1_16_R1 extends NPCBase { playerConnection.sendPacket(packetPlayOutEntityHeadRotation); sendMetadataPacket(player); - hologram.show(player); + getPlayerHologram(player).show(player); // Removing the player info after 10 seconds. Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> diff --git a/nms/v1_8_R2/pom.xml b/nms/v1_8_R2/pom.xml index 1ff6d62..fe990d7 100755 --- a/nms/v1_8_R2/pom.xml +++ b/nms/v1_8_R2/pom.xml @@ -8,7 +8,7 @@ net.jitse npclib-nms - 2.9-SNAPSHOT + 2.10-SNAPSHOT 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 42a44a1..929e722 100755 --- 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 @@ -38,9 +38,24 @@ public class NPC_v1_8_R2 extends NPCBase { super(instance, lines); } + @Override + public Hologram getPlayerHologram(Player player) { + Hologram holo = super.getPlayerHologram(player); + if (holo == null){ + holo = new Hologram(MinecraftVersion.V1_8_R2, location.clone().add(0, 0.5, 0), getPlayerLines(player)); + } + super.textDisplayHolograms.put(player.getUniqueId(), holo); + return holo; + } + + @Override public void createPackets() { - this.hologram = new Hologram(MinecraftVersion.V1_8_R2, location.clone().add(0, 0.5, 0), text); + Bukkit.getOnlinePlayers().forEach(this::createPackets); + } + + @Override + public void createPackets(Player player) { PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); @@ -64,6 +79,7 @@ public class NPC_v1_8_R2 extends NPCBase { this.packetPlayOutEntityDestroy = new PacketPlayOutEntityDestroy(entityId); // First packet to send. } + @Override public void sendShowPackets(Player player) { PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection; @@ -74,7 +90,7 @@ public class NPC_v1_8_R2 extends NPCBase { playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutEntityHeadRotation); - hologram.show(player); + getPlayerHologram(player).show(player); // Removing the player info after 10 seconds. Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> diff --git a/nms/v1_8_R3/pom.xml b/nms/v1_8_R3/pom.xml index f79d2fd..a922061 100755 --- a/nms/v1_8_R3/pom.xml +++ b/nms/v1_8_R3/pom.xml @@ -8,7 +8,7 @@ net.jitse npclib-nms - 2.9-SNAPSHOT + 2.10-SNAPSHOT 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 16fa1ae..6e6937b 100755 --- 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 @@ -38,9 +38,23 @@ public class NPC_v1_8_R3 extends NPCBase { super(instance, lines); } + @Override + public Hologram getPlayerHologram(Player player) { + Hologram holo = super.getPlayerHologram(player); + if (holo == null){ + holo = new Hologram(MinecraftVersion.V1_8_R3, location.clone().add(0, 0.5, 0), getPlayerLines(player)); + } + super.textDisplayHolograms.put(player.getUniqueId(), holo); + return holo; + } + @Override public void createPackets() { - this.hologram = new Hologram(MinecraftVersion.V1_8_R3, location.clone().add(0, 0.5, 0), text); + Bukkit.getOnlinePlayers().forEach(this::createPackets); + } + + @Override + public void createPackets(Player player) { PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); @@ -74,7 +88,7 @@ public class NPC_v1_8_R3 extends NPCBase { playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutEntityHeadRotation); - hologram.show(player); + getPlayerHologram(player).show(player); // Removing the player info after 10 seconds. Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> diff --git a/nms/v1_9_R1/pom.xml b/nms/v1_9_R1/pom.xml index 6760a1f..db91bbe 100755 --- a/nms/v1_9_R1/pom.xml +++ b/nms/v1_9_R1/pom.xml @@ -8,7 +8,7 @@ net.jitse npclib-nms - 2.9-SNAPSHOT + 2.10-SNAPSHOT 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 9d04d92..2660215 100755 --- 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 @@ -38,9 +38,24 @@ public class NPC_v1_9_R1 extends NPCBase { super(instance, lines); } + @Override + public Hologram getPlayerHologram(Player player) { + Hologram holo = super.getPlayerHologram(player); + if (holo == null){ + holo = new Hologram(MinecraftVersion.V1_9_R1, location.clone().add(0, 0.5, 0), getPlayerLines(player)); + } + super.textDisplayHolograms.put(player.getUniqueId(), holo); + return holo; + } + + @Override public void createPackets() { - this.hologram = new Hologram(MinecraftVersion.V1_9_R1, location.clone().subtract(0, 0.5, 0), text); + Bukkit.getOnlinePlayers().forEach(this::createPackets); + } + + @Override + public void createPackets(Player player) { PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); @@ -74,7 +89,7 @@ public class NPC_v1_9_R1 extends NPCBase { playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutEntityHeadRotation); - hologram.show(player); + getPlayerHologram(player).show(player); // Removing the player info after 10 seconds. Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> diff --git a/nms/v1_9_R2/pom.xml b/nms/v1_9_R2/pom.xml index 0a13be4..52b08b4 100755 --- a/nms/v1_9_R2/pom.xml +++ b/nms/v1_9_R2/pom.xml @@ -8,7 +8,7 @@ net.jitse npclib-nms - 2.9-SNAPSHOT + 2.10-SNAPSHOT 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 fbf0309..676c9db 100755 --- 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 @@ -38,9 +38,25 @@ public class NPC_v1_9_R2 extends NPCBase { super(instance, lines); } + @Override + public Hologram getPlayerHologram(Player player) { + Hologram holo = super.getPlayerHologram(player); + if (holo == null){ + holo = new Hologram(MinecraftVersion.V1_9_R2, location.clone().add(0, 0.5, 0), getPlayerLines(player)); + } + super.textDisplayHolograms.put(player.getUniqueId(), holo); + return holo; + } + + + @Override public void createPackets() { - this.hologram = new Hologram(MinecraftVersion.V1_9_R2, location.clone().subtract(0, 0.5, 0), text); + Bukkit.getOnlinePlayers().forEach(this::createPackets); + } + + @Override + public void createPackets(Player player) { PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); @@ -74,7 +90,7 @@ public class NPC_v1_9_R2 extends NPCBase { playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutEntityHeadRotation); - hologram.show(player); + getPlayerHologram(player).show(player); // Removing the player info after 10 seconds. Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> diff --git a/plugin/pom.xml b/plugin/pom.xml index e22133a..f5a2f36 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -8,7 +8,7 @@ net.jitse npclib - 2.9-SNAPSHOT + 2.10-SNAPSHOT npclib-plugin diff --git a/pom.xml b/pom.xml index f82abf4..f0faf50 100755 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib - 2.9-SNAPSHOT + 2.10-SNAPSHOT UTF-8