|
|
|
@ -16,6 +16,7 @@ import net.jitse.npclib.api.state.NPCSlot; |
|
|
|
|
import net.jitse.npclib.api.state.NPCState; |
|
|
|
|
import net.jitse.npclib.hologram.Hologram; |
|
|
|
|
import net.jitse.npclib.utilities.MathUtil; |
|
|
|
|
import org.apache.commons.lang.Validate; |
|
|
|
|
import org.bukkit.Bukkit; |
|
|
|
|
import org.bukkit.Location; |
|
|
|
|
import org.bukkit.World; |
|
|
|
@ -67,18 +68,21 @@ public abstract class NPCBase implements NPC, NPCPacketHandler { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Hologram getPlayerHologram(Player player) { |
|
|
|
|
Validate.notNull(player, "Player cannot be null."); |
|
|
|
|
Hologram playerHologram = textDisplayHolograms.getOrDefault(player.getUniqueId(), null); |
|
|
|
|
return playerHologram; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public NPC setPlayerLines(List<String> uniqueLines, Player targetPlayer) { |
|
|
|
|
Validate.notNull(targetPlayer, "Player cannot be null."); |
|
|
|
|
uniqueText.put(targetPlayer.getUniqueId(), uniqueLines); |
|
|
|
|
return this; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public NPC setPlayerLines(List<String> uniqueLines, Player targetPlayer, boolean update) { |
|
|
|
|
Validate.notNull(targetPlayer, "Player cannot be null."); |
|
|
|
|
List<String> originalLines = getPlayerLines(targetPlayer); |
|
|
|
|
setPlayerLines(uniqueLines, targetPlayer); |
|
|
|
|
if (update) { |
|
|
|
@ -99,6 +103,7 @@ public abstract class NPCBase implements NPC, NPCPacketHandler { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public List<String> getPlayerLines(Player targetPlayer) { |
|
|
|
|
Validate.notNull(targetPlayer, "Player cannot be null."); |
|
|
|
|
return uniqueText.getOrDefault(targetPlayer.getUniqueId(), text); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -133,8 +138,10 @@ public abstract class NPCBase implements NPC, NPCPacketHandler { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
Player plyr = Bukkit.getPlayer(uuid); // destroy the per player holograms
|
|
|
|
|
getPlayerHologram(plyr).hide(plyr); |
|
|
|
|
hide(plyr, true); |
|
|
|
|
if (plyr != null) { |
|
|
|
|
getPlayerHologram(plyr).hide(plyr); |
|
|
|
|
hide(plyr, true); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -170,6 +177,7 @@ public abstract class NPCBase implements NPC, NPCPacketHandler { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public boolean isShown(Player player) { |
|
|
|
|
if (player == null) return false; |
|
|
|
|
return shown.contains(player.getUniqueId()) && !autoHidden.contains(player.getUniqueId()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -192,6 +200,7 @@ public abstract class NPCBase implements NPC, NPCPacketHandler { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public boolean inRangeOf(Player player) { |
|
|
|
|
if (player == null) return false; |
|
|
|
|
if (!player.getWorld().equals(location.getWorld())) { |
|
|
|
|
// No need to continue our checks, they are in different worlds.
|
|
|
|
|
return false; |
|
|
|
|