From 8bd543c03519db9b7509eede37884209e61e774a Mon Sep 17 00:00:00 2001 From: fullwall Date: Tue, 22 Aug 2017 20:44:29 +0800 Subject: [PATCH] Don't look at invisible players in LookClose --- main/src/main/java/net/citizensnpcs/EventListen.java | 9 ++++++++- main/src/main/java/net/citizensnpcs/trait/LookClose.java | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/main/src/main/java/net/citizensnpcs/EventListen.java b/main/src/main/java/net/citizensnpcs/EventListen.java index bddffe032..e058f2bb6 100644 --- a/main/src/main/java/net/citizensnpcs/EventListen.java +++ b/main/src/main/java/net/citizensnpcs/EventListen.java @@ -555,7 +555,14 @@ public class EventListen implements Listener { } continue; } - ids.remove(i--); + try { + ids.remove(i--); + } catch (IndexOutOfBoundsException ex) { + // something caused toRespawn to get modified? + Messaging.debug("Some strange chunk loading happened while spawning", npc.getId(), + " - check all your NPCs in chunk [" + coord.x + "," + coord.z + "] are spawned"); + break; + } if (Messaging.isDebugging()) { Messaging.debug("Spawned id", npc.getId(), "due to chunk event at [" + coord.x + "," + coord.z + "]"); } diff --git a/main/src/main/java/net/citizensnpcs/trait/LookClose.java b/main/src/main/java/net/citizensnpcs/trait/LookClose.java index 36c4ee998..5092a0daf 100644 --- a/main/src/main/java/net/citizensnpcs/trait/LookClose.java +++ b/main/src/main/java/net/citizensnpcs/trait/LookClose.java @@ -10,6 +10,7 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; +import org.bukkit.potion.PotionEffectType; import net.citizensnpcs.Settings.Setting; import net.citizensnpcs.api.CitizensAPI; @@ -59,6 +60,7 @@ public class LookClose extends Trait implements Toggleable, CommandConfigurable }); for (Entity entity : nearby) { if (entity.getType() != EntityType.PLAYER || ((Player) entity).getGameMode() == GameMode.SPECTATOR + || ((Player) entity).hasPotionEffect(PotionEffectType.INVISIBILITY) || entity.getLocation(CACHE_LOCATION).getWorld() != NPC_LOCATION.getWorld() || CitizensAPI.getNPCRegistry().getNPC(entity) != null) continue;