From 8a308a00f9730baafa826c852752ccd9b3a17c60 Mon Sep 17 00:00:00 2001 From: Gatt Date: Tue, 21 Jul 2020 12:58:05 +1000 Subject: [PATCH] Fixes a potential NPE when calling getPlayerHologram at the wrong time --- .../main/java/net/jitse/npclib/internal/NPCBase.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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 b2f5159..40c7d82 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); + } } }