From fcf9fae805730bf7ecbbb493887ba62212ede0ae Mon Sep 17 00:00:00 2001 From: fullwall Date: Mon, 29 Feb 2016 00:24:41 +0800 Subject: [PATCH] Don't look or speak to players in spectator mode --- src/main/java/net/citizensnpcs/trait/LookClose.java | 4 +++- src/main/java/net/citizensnpcs/trait/text/Text.java | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/citizensnpcs/trait/LookClose.java b/src/main/java/net/citizensnpcs/trait/LookClose.java index 6f9657049..7f357c27a 100644 --- a/src/main/java/net/citizensnpcs/trait/LookClose.java +++ b/src/main/java/net/citizensnpcs/trait/LookClose.java @@ -4,6 +4,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; +import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; @@ -62,7 +63,8 @@ public class LookClose extends Trait implements Toggleable, CommandConfigurable for (Entity entity : nearby) { if (entity.getType() != EntityType.PLAYER || entity.getLocation().getWorld() != npcLocation.getWorld()) continue; - if (CitizensAPI.getNPCRegistry().getNPC(entity) != null) + if (CitizensAPI.getNPCRegistry().getNPC(entity) != null + || ((Player) npc.getEntity()).getGameMode() == GameMode.SPECTATOR) continue; lookingAt = (Player) entity; return; diff --git a/src/main/java/net/citizensnpcs/trait/text/Text.java b/src/main/java/net/citizensnpcs/trait/text/Text.java index 1cce028d7..f5cb46b10 100644 --- a/src/main/java/net/citizensnpcs/trait/text/Text.java +++ b/src/main/java/net/citizensnpcs/trait/text/Text.java @@ -9,6 +9,7 @@ import java.util.UUID; import java.util.concurrent.TimeUnit; import org.bukkit.Bukkit; +import org.bukkit.GameMode; import org.bukkit.conversations.Conversation; import org.bukkit.conversations.ConversationAbandonedEvent; import org.bukkit.conversations.ConversationAbandonedListener; @@ -134,7 +135,7 @@ public class Text extends Trait implements Runnable, Toggleable, Listener, Conve return; List nearby = npc.getEntity().getNearbyEntities(range, range, range); for (Entity search : nearby) { - if (!(search instanceof Player)) + if (!(search instanceof Player) || ((Player) search).getGameMode() == GameMode.SPECTATOR) continue; Player player = (Player) search; // If the cooldown is not expired, do not send text