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 6d5cbec..90c7cbb 100644 --- a/api/src/main/java/net/jitse/npclib/internal/NPCBase.java +++ b/api/src/main/java/net/jitse/npclib/internal/NPCBase.java @@ -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 uniqueLines, Player targetPlayer) { + Validate.notNull(targetPlayer, "Player cannot be null."); uniqueText.put(targetPlayer.getUniqueId(), uniqueLines); return this; } @Override public NPC setPlayerLines(List uniqueLines, Player targetPlayer, boolean update) { + Validate.notNull(targetPlayer, "Player cannot be null."); List originalLines = getPlayerLines(targetPlayer); setPlayerLines(uniqueLines, targetPlayer); if (update) { @@ -99,6 +103,7 @@ public abstract class NPCBase implements NPC, NPCPacketHandler { @Override public List 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;