potential feature for per-player hologram names

This commit is contained in:
Gatt 2020-07-16 18:14:23 +10:00
parent e909f28193
commit 4da537e978
33 changed files with 302 additions and 42 deletions

View File

@ -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.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.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.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: script:
- mvn clean install - mvn clean install

View File

@ -8,7 +8,7 @@
<parent> <parent>
<artifactId>npclib</artifactId> <artifactId>npclib</artifactId>
<groupId>net.jitse</groupId> <groupId>net.jitse</groupId>
<version>2.9-SNAPSHOT</version> <version>2.10-SNAPSHOT</version>
</parent> </parent>
<artifactId>npclib-api</artifactId> <artifactId>npclib-api</artifactId>

View File

@ -8,6 +8,7 @@ import net.jitse.npclib.api.skin.Skin;
import net.jitse.npclib.api.state.NPCAnimation; import net.jitse.npclib.api.state.NPCAnimation;
import net.jitse.npclib.api.state.NPCSlot; import net.jitse.npclib.api.state.NPCSlot;
import net.jitse.npclib.api.state.NPCState; import net.jitse.npclib.api.state.NPCState;
import net.jitse.npclib.hologram.Hologram;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -18,6 +19,39 @@ import java.util.UUID;
public interface NPC { 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<String> 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<String> uniqueLines, Player targetPlayer, boolean update);
/**
*
* @param targetPlayer The target player
* @return the lines that the targetPlayer will see, if null; default lines.
*/
List<String> getPlayerLines(Player targetPlayer);
/** /**
* Set the NPC's location. * Set the NPC's location.
* Use this method before using {@link NPC#create}. * Use this method before using {@link NPC#create}.

View File

@ -16,7 +16,8 @@ public enum MinecraftVersion {
V1_13_R1, V1_13_R1,
V1_13_R2, V1_13_R2,
V1_14_R1, V1_14_R1,
V1_15_R1; V1_15_R1,
V1_16_R1;
public boolean isAboveOrEqual(MinecraftVersion compare) { public boolean isAboveOrEqual(MinecraftVersion compare) {
return ordinal() >= compare.ordinal(); return ordinal() >= compare.ordinal();

View File

@ -49,6 +49,10 @@ public abstract class NPCBase implements NPC, NPCPacketHandler {
protected final Map<NPCSlot, ItemStack> items = new EnumMap<>(NPCSlot.class); protected final Map<NPCSlot, ItemStack> items = new EnumMap<>(NPCSlot.class);
// Storage for per-player text;
protected final Map<UUID, List<String>> uniqueText = new HashMap<>();
protected final Map<UUID, Hologram> textDisplayHolograms = new HashMap<>();
public NPCBase(NPCLib instance, List<String> text) { public NPCBase(NPCLib instance, List<String> text) {
this.instance = instance; this.instance = instance;
this.text = text == null ? Collections.emptyList() : text; this.text = text == null ? Collections.emptyList() : text;
@ -60,6 +64,42 @@ public abstract class NPCBase implements NPC, NPCPacketHandler {
return instance; return instance;
} }
@Override
public Hologram getPlayerHologram(Player player){
Hologram playerHologram = textDisplayHolograms.getOrDefault(player.getUniqueId(), null);
return playerHologram;
}
@Override
public NPC setPlayerLines(List<String> uniqueLines, Player targetPlayer) {
uniqueText.put(targetPlayer.getUniqueId(), uniqueLines);
return this;
}
@Override
public NPC setPlayerLines(List<String> uniqueLines, Player targetPlayer, boolean update) {
List<String> 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<Object> updatePackets = hologram.getUpdatePackets(getPlayerLines(targetPlayer));
hologram.update(targetPlayer, updatePackets);
hologram.show(targetPlayer);
}
return this;
}
@Override
public List<String> getPlayerLines(Player targetPlayer) {
return uniqueText.getOrDefault(targetPlayer.getUniqueId(), text);
}
@Override @Override
public UUID getUniqueId() { public UUID getUniqueId() {
return uuid; return uuid;
@ -303,11 +343,16 @@ public abstract class NPCBase implements NPC, NPCPacketHandler {
@Override @Override
public NPC setText(List<String> text) { public NPC setText(List<String> text) {
List<Object> updatePackets = hologram.getUpdatePackets(text); uniqueText.clear();
for (UUID shownUuid : shown) { for (UUID shownUuid : shown) {
Player player = Bukkit.getPlayer(shownUuid); Player player = Bukkit.getPlayer(shownUuid);
if (player != null && isShown(player)) { 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<Object> updatePackets = hologram.getUpdatePackets(getPlayerLines(player));
hologram.update(player, updatePackets); hologram.update(player, updatePackets);
} }
} }

View File

@ -15,6 +15,8 @@ interface NPCPacketHandler {
void createPackets(); void createPackets();
void createPackets(Player player);
void sendShowPackets(Player player); void sendShowPackets(Player player);
void sendHidePackets(Player player); void sendHidePackets(Player player);

View File

@ -8,7 +8,7 @@
<parent> <parent>
<groupId>net.jitse</groupId> <groupId>net.jitse</groupId>
<artifactId>npclib</artifactId> <artifactId>npclib</artifactId>
<version>2.9-SNAPSHOT</version> <version>2.10-SNAPSHOT</version>
</parent> </parent>
<artifactId>npclib-nms</artifactId> <artifactId>npclib-nms</artifactId>

View File

@ -8,7 +8,7 @@
<parent> <parent>
<groupId>net.jitse</groupId> <groupId>net.jitse</groupId>
<artifactId>npclib-nms</artifactId> <artifactId>npclib-nms</artifactId>
<version>2.9-SNAPSHOT</version> <version>2.10-SNAPSHOT</version>
</parent> </parent>
<artifactId>npclib-nms-v1_10_R1</artifactId> <artifactId>npclib-nms-v1_10_R1</artifactId>

View File

@ -38,9 +38,24 @@ public class NPC_v1_10_R1 extends NPCBase {
super(instance, lines); 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 @Override
public void createPackets() { 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(); PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper();
@ -74,7 +89,7 @@ public class NPC_v1_10_R1 extends NPCBase {
playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutNamedEntitySpawn);
playerConnection.sendPacket(packetPlayOutEntityHeadRotation); playerConnection.sendPacket(packetPlayOutEntityHeadRotation);
hologram.show(player); getPlayerHologram(player).show(player);
// Removing the player info after 10 seconds. // Removing the player info after 10 seconds.
Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () ->

View File

@ -8,7 +8,7 @@
<parent> <parent>
<groupId>net.jitse</groupId> <groupId>net.jitse</groupId>
<artifactId>npclib-nms</artifactId> <artifactId>npclib-nms</artifactId>
<version>2.9-SNAPSHOT</version> <version>2.10-SNAPSHOT</version>
</parent> </parent>
<artifactId>npclib-nms-v1_11_R1</artifactId> <artifactId>npclib-nms-v1_11_R1</artifactId>

View File

@ -38,9 +38,24 @@ public class NPC_v1_11_R1 extends NPCBase {
super(instance, lines); 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 @Override
public void createPackets() { 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(); PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper();
@ -74,7 +89,7 @@ public class NPC_v1_11_R1 extends NPCBase {
playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutNamedEntitySpawn);
playerConnection.sendPacket(packetPlayOutEntityHeadRotation); playerConnection.sendPacket(packetPlayOutEntityHeadRotation);
hologram.show(player); getPlayerHologram(player).show(player);
// Removing the player info after 10 seconds. // Removing the player info after 10 seconds.
Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () ->

View File

@ -8,7 +8,7 @@
<parent> <parent>
<groupId>net.jitse</groupId> <groupId>net.jitse</groupId>
<artifactId>npclib-nms</artifactId> <artifactId>npclib-nms</artifactId>
<version>2.9-SNAPSHOT</version> <version>2.10-SNAPSHOT</version>
</parent> </parent>
<artifactId>npclib-nms-v1_12_R1</artifactId> <artifactId>npclib-nms-v1_12_R1</artifactId>

View File

@ -38,9 +38,24 @@ public class NPC_v1_12_R1 extends NPCBase {
super(instance, lines); 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 @Override
public void createPackets() { 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(); PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper();
@ -74,7 +89,7 @@ public class NPC_v1_12_R1 extends NPCBase {
playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutNamedEntitySpawn);
playerConnection.sendPacket(packetPlayOutEntityHeadRotation); playerConnection.sendPacket(packetPlayOutEntityHeadRotation);
hologram.show(player); getPlayerHologram(player).show(player);
// Removing the player info after 10 seconds. // Removing the player info after 10 seconds.
Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () ->

View File

@ -8,7 +8,7 @@
<parent> <parent>
<groupId>net.jitse</groupId> <groupId>net.jitse</groupId>
<artifactId>npclib-nms</artifactId> <artifactId>npclib-nms</artifactId>
<version>2.9-SNAPSHOT</version> <version>2.10-SNAPSHOT</version>
</parent> </parent>
<artifactId>npclib-nms-v1_13_R1</artifactId> <artifactId>npclib-nms-v1_13_R1</artifactId>

View File

@ -38,9 +38,24 @@ public class NPC_v1_13_R1 extends NPCBase {
super(instance, lines); 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 @Override
public void createPackets() { 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(); PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper();
@ -74,7 +89,7 @@ public class NPC_v1_13_R1 extends NPCBase {
playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutNamedEntitySpawn);
playerConnection.sendPacket(packetPlayOutEntityHeadRotation); playerConnection.sendPacket(packetPlayOutEntityHeadRotation);
hologram.show(player); getPlayerHologram(player).show(player);
// Removing the player info after 10 seconds. // Removing the player info after 10 seconds.
Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () ->

View File

@ -8,7 +8,7 @@
<parent> <parent>
<groupId>net.jitse</groupId> <groupId>net.jitse</groupId>
<artifactId>npclib-nms</artifactId> <artifactId>npclib-nms</artifactId>
<version>2.9-SNAPSHOT</version> <version>2.10-SNAPSHOT</version>
</parent> </parent>
<artifactId>npclib-nms-v1_13_R2</artifactId> <artifactId>npclib-nms-v1_13_R2</artifactId>

View File

@ -37,10 +37,24 @@ public class NPC_v1_13_R2 extends NPCBase {
public NPC_v1_13_R2(NPCLib instance, List<String> lines) { public NPC_v1_13_R2(NPCLib instance, List<String> lines) {
super(instance, 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 @Override
public void createPackets() { 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(); PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper();
@ -74,7 +88,7 @@ public class NPC_v1_13_R2 extends NPCBase {
playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutNamedEntitySpawn);
playerConnection.sendPacket(packetPlayOutEntityHeadRotation); playerConnection.sendPacket(packetPlayOutEntityHeadRotation);
hologram.show(player); getPlayerHologram(player).show(player);
// Removing the player info after 10 seconds. // Removing the player info after 10 seconds.
Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () ->

View File

@ -8,7 +8,7 @@
<parent> <parent>
<groupId>net.jitse</groupId> <groupId>net.jitse</groupId>
<artifactId>npclib-nms</artifactId> <artifactId>npclib-nms</artifactId>
<version>2.9-SNAPSHOT</version> <version>2.10-SNAPSHOT</version>
</parent> </parent>
<artifactId>npclib-nms-v1_14_R1</artifactId> <artifactId>npclib-nms-v1_14_R1</artifactId>

View File

@ -33,10 +33,24 @@ public class NPC_v1_14_R1 extends NPCBase {
public NPC_v1_14_R1(NPCLib instance, List<String> lines) { public NPC_v1_14_R1(NPCLib instance, List<String> lines) {
super(instance, 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 @Override
public void createPackets() { 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(); PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper();
@ -70,7 +84,7 @@ public class NPC_v1_14_R1 extends NPCBase {
playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutNamedEntitySpawn);
playerConnection.sendPacket(packetPlayOutEntityHeadRotation); playerConnection.sendPacket(packetPlayOutEntityHeadRotation);
hologram.show(player); getPlayerHologram(player).show(player);
// Removing the player info after 10 seconds. // Removing the player info after 10 seconds.
Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () ->

View File

@ -8,7 +8,7 @@
<parent> <parent>
<groupId>net.jitse</groupId> <groupId>net.jitse</groupId>
<artifactId>npclib-nms</artifactId> <artifactId>npclib-nms</artifactId>
<version>2.9-SNAPSHOT</version> <version>2.10-SNAPSHOT</version>
</parent> </parent>
<artifactId>npclib-nms-v1_15_R1</artifactId> <artifactId>npclib-nms-v1_15_R1</artifactId>

View File

@ -33,10 +33,24 @@ public class NPC_v1_15_R1 extends NPCBase {
public NPC_v1_15_R1(NPCLib instance, List<String> lines) { public NPC_v1_15_R1(NPCLib instance, List<String> lines) {
super(instance, 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 @Override
public void createPackets() { 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(); PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper();
@ -71,7 +85,7 @@ public class NPC_v1_15_R1 extends NPCBase {
playerConnection.sendPacket(packetPlayOutEntityHeadRotation); playerConnection.sendPacket(packetPlayOutEntityHeadRotation);
sendMetadataPacket(player); sendMetadataPacket(player);
hologram.show(player); getPlayerHologram(player).show(player);
// Removing the player info after 10 seconds. // Removing the player info after 10 seconds.
Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () ->

View File

@ -8,7 +8,7 @@
<parent> <parent>
<groupId>net.jitse</groupId> <groupId>net.jitse</groupId>
<artifactId>npclib-nms</artifactId> <artifactId>npclib-nms</artifactId>
<version>2.9-SNAPSHOT</version> <version>2.10-SNAPSHOT</version>
</parent> </parent>
<artifactId>npclib-nms-v1_16_R1</artifactId> <artifactId>npclib-nms-v1_16_R1</artifactId>

View File

@ -36,10 +36,24 @@ public class NPC_v1_16_R1 extends NPCBase {
public NPC_v1_16_R1(NPCLib instance, List<String> lines) { public NPC_v1_16_R1(NPCLib instance, List<String> lines) {
super(instance, 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 @Override
public void createPackets() { 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(); PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper();
@ -74,7 +88,7 @@ public class NPC_v1_16_R1 extends NPCBase {
playerConnection.sendPacket(packetPlayOutEntityHeadRotation); playerConnection.sendPacket(packetPlayOutEntityHeadRotation);
sendMetadataPacket(player); sendMetadataPacket(player);
hologram.show(player); getPlayerHologram(player).show(player);
// Removing the player info after 10 seconds. // Removing the player info after 10 seconds.
Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () ->

View File

@ -8,7 +8,7 @@
<parent> <parent>
<groupId>net.jitse</groupId> <groupId>net.jitse</groupId>
<artifactId>npclib-nms</artifactId> <artifactId>npclib-nms</artifactId>
<version>2.9-SNAPSHOT</version> <version>2.10-SNAPSHOT</version>
</parent> </parent>
<artifactId>npclib-nms-v1_8_R2</artifactId> <artifactId>npclib-nms-v1_8_R2</artifactId>

View File

@ -38,9 +38,24 @@ public class NPC_v1_8_R2 extends NPCBase {
super(instance, lines); 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 @Override
public void createPackets() { 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(); 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. this.packetPlayOutEntityDestroy = new PacketPlayOutEntityDestroy(entityId); // First packet to send.
} }
@Override @Override
public void sendShowPackets(Player player) { public void sendShowPackets(Player player) {
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection; PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection;
@ -74,7 +90,7 @@ public class NPC_v1_8_R2 extends NPCBase {
playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutNamedEntitySpawn);
playerConnection.sendPacket(packetPlayOutEntityHeadRotation); playerConnection.sendPacket(packetPlayOutEntityHeadRotation);
hologram.show(player); getPlayerHologram(player).show(player);
// Removing the player info after 10 seconds. // Removing the player info after 10 seconds.
Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () ->

View File

@ -8,7 +8,7 @@
<parent> <parent>
<groupId>net.jitse</groupId> <groupId>net.jitse</groupId>
<artifactId>npclib-nms</artifactId> <artifactId>npclib-nms</artifactId>
<version>2.9-SNAPSHOT</version> <version>2.10-SNAPSHOT</version>
</parent> </parent>
<artifactId>npclib-nms-v1_8_R3</artifactId> <artifactId>npclib-nms-v1_8_R3</artifactId>

View File

@ -38,9 +38,23 @@ public class NPC_v1_8_R3 extends NPCBase {
super(instance, lines); 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 @Override
public void createPackets() { 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(); PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper();
@ -74,7 +88,7 @@ public class NPC_v1_8_R3 extends NPCBase {
playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutNamedEntitySpawn);
playerConnection.sendPacket(packetPlayOutEntityHeadRotation); playerConnection.sendPacket(packetPlayOutEntityHeadRotation);
hologram.show(player); getPlayerHologram(player).show(player);
// Removing the player info after 10 seconds. // Removing the player info after 10 seconds.
Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () ->

View File

@ -8,7 +8,7 @@
<parent> <parent>
<groupId>net.jitse</groupId> <groupId>net.jitse</groupId>
<artifactId>npclib-nms</artifactId> <artifactId>npclib-nms</artifactId>
<version>2.9-SNAPSHOT</version> <version>2.10-SNAPSHOT</version>
</parent> </parent>
<artifactId>npclib-nms-v1_9_R1</artifactId> <artifactId>npclib-nms-v1_9_R1</artifactId>

View File

@ -38,9 +38,24 @@ public class NPC_v1_9_R1 extends NPCBase {
super(instance, lines); 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 @Override
public void createPackets() { 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(); PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper();
@ -74,7 +89,7 @@ public class NPC_v1_9_R1 extends NPCBase {
playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutNamedEntitySpawn);
playerConnection.sendPacket(packetPlayOutEntityHeadRotation); playerConnection.sendPacket(packetPlayOutEntityHeadRotation);
hologram.show(player); getPlayerHologram(player).show(player);
// Removing the player info after 10 seconds. // Removing the player info after 10 seconds.
Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () ->

View File

@ -8,7 +8,7 @@
<parent> <parent>
<groupId>net.jitse</groupId> <groupId>net.jitse</groupId>
<artifactId>npclib-nms</artifactId> <artifactId>npclib-nms</artifactId>
<version>2.9-SNAPSHOT</version> <version>2.10-SNAPSHOT</version>
</parent> </parent>
<artifactId>npclib-nms-v1_9_R2</artifactId> <artifactId>npclib-nms-v1_9_R2</artifactId>

View File

@ -38,9 +38,25 @@ public class NPC_v1_9_R2 extends NPCBase {
super(instance, lines); 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 @Override
public void createPackets() { 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(); PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper();
@ -74,7 +90,7 @@ public class NPC_v1_9_R2 extends NPCBase {
playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); playerConnection.sendPacket(packetPlayOutNamedEntitySpawn);
playerConnection.sendPacket(packetPlayOutEntityHeadRotation); playerConnection.sendPacket(packetPlayOutEntityHeadRotation);
hologram.show(player); getPlayerHologram(player).show(player);
// Removing the player info after 10 seconds. // Removing the player info after 10 seconds.
Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () -> Bukkit.getScheduler().runTaskLater(instance.getPlugin(), () ->

View File

@ -8,7 +8,7 @@
<parent> <parent>
<groupId>net.jitse</groupId> <groupId>net.jitse</groupId>
<artifactId>npclib</artifactId> <artifactId>npclib</artifactId>
<version>2.9-SNAPSHOT</version> <version>2.10-SNAPSHOT</version>
</parent> </parent>
<artifactId>npclib-plugin</artifactId> <artifactId>npclib-plugin</artifactId>

View File

@ -7,7 +7,7 @@
<groupId>net.jitse</groupId> <groupId>net.jitse</groupId>
<artifactId>npclib</artifactId> <artifactId>npclib</artifactId>
<version>2.9-SNAPSHOT</version> <version>2.10-SNAPSHOT</version>
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>