From 8a308a00f9730baafa826c852752ccd9b3a17c60 Mon Sep 17 00:00:00 2001 From: Gatt Date: Tue, 21 Jul 2020 12:58:05 +1000 Subject: [PATCH 1/3] 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); + } } } From 19f1856f4db64af0acd6bf1e8bc10682012b70a0 Mon Sep 17 00:00:00 2001 From: Gatt Date: Tue, 28 Jul 2020 15:23:27 +1000 Subject: [PATCH 2/3] player null checks --- api/src/main/java/net/jitse/npclib/internal/NPCBase.java | 2 ++ 1 file changed, 2 insertions(+) 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 40c7d82..57a78d1 100644 --- a/api/src/main/java/net/jitse/npclib/internal/NPCBase.java +++ b/api/src/main/java/net/jitse/npclib/internal/NPCBase.java @@ -177,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()); } @@ -199,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; From 0472f55670570eb1d85aa58befd64cf733d7bae2 Mon Sep 17 00:00:00 2001 From: Gatt Date: Tue, 28 Jul 2020 17:41:33 +1000 Subject: [PATCH 3/3] Add a space! :notlikethis: --- api/src/main/java/net/jitse/npclib/internal/NPCBase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 57a78d1..ca6cc05 100644 --- a/api/src/main/java/net/jitse/npclib/internal/NPCBase.java +++ b/api/src/main/java/net/jitse/npclib/internal/NPCBase.java @@ -67,7 +67,7 @@ public abstract class NPCBase implements NPC, NPCPacketHandler { } @Override - public Hologram getPlayerHologram(Player player){ + public Hologram getPlayerHologram(Player player) { Validate.notNull(player, "Player cannot be null."); Hologram playerHologram = textDisplayHolograms.getOrDefault(player.getUniqueId(), null); return playerHologram;