diff --git a/src/main/java/net/citizensnpcs/Settings.java b/src/main/java/net/citizensnpcs/Settings.java index 77e74b7db..a7f652463 100644 --- a/src/main/java/net/citizensnpcs/Settings.java +++ b/src/main/java/net/citizensnpcs/Settings.java @@ -72,6 +72,7 @@ public class Settings { MAX_NPC_LIMIT_CHECKS("npc.limits.max-permission-checks", 100), NPC_COST("economy.npc.cost", 100D), QUICK_SELECT("npc.selection.quick-select", false), + REMOVE_PLAYERS_FROM_PLAYER_LIST("npc.player.remove-from-list", true), SAVE_TASK_DELAY("storage.save-task.delay", 20 * 60 * 60), SELECTION_ITEM("npc.selection.item", "280"), SELECTION_MESSAGE("npc.selection.message", "You selected !"), diff --git a/src/main/java/net/citizensnpcs/command/command/NPCCommands.java b/src/main/java/net/citizensnpcs/command/command/NPCCommands.java index fa9ef33dd..6eb6cfaa7 100644 --- a/src/main/java/net/citizensnpcs/command/command/NPCCommands.java +++ b/src/main/java/net/citizensnpcs/command/command/NPCCommands.java @@ -207,21 +207,6 @@ public class NPCCommands { } } - if (args.hasValueFlag("trait")) { - Iterable parts = Splitter.on(",").trimResults().split(args.getFlag("trait")); - StringBuilder builder = new StringBuilder(); - for (String tr : parts) { - Trait trait = CitizensAPI.getTraitFactory().getTrait(tr); - if (trait == null) - continue; - npc.addTrait(trait); - builder.append(StringHelper.wrap(tr) + ", "); - } - if (builder.length() > 0) - builder.delete(builder.length() - 2, builder.length()); - msg += " with traits " + builder.toString(); - } - if (args.hasValueFlag("b")) { npc.getTrait(Behaviour.class).addScripts(Splitter.on(",").split(args.getFlag("behaviour"))); msg += " with the specified behaviours"; @@ -245,6 +230,21 @@ public class NPCCommands { throw new CommandException(reason); } + if (args.hasValueFlag("trait")) { + Iterable parts = Splitter.on(",").trimResults().split(args.getFlag("trait")); + StringBuilder builder = new StringBuilder(); + for (String tr : parts) { + Trait trait = CitizensAPI.getTraitFactory().getTrait(tr); + if (trait == null) + continue; + npc.addTrait(trait); + builder.append(StringHelper.wrap(tr) + ", "); + } + if (builder.length() > 0) + builder.delete(builder.length() - 2, builder.length()); + msg += " with traits " + builder.toString(); + } + // Set age after entity spawns if (npc.getBukkitEntity() instanceof Ageable) npc.getTrait(Age.class).setAge(age); diff --git a/src/main/java/net/citizensnpcs/npc/CitizensNPC.java b/src/main/java/net/citizensnpcs/npc/CitizensNPC.java index 1283bcb0c..1ede609a8 100644 --- a/src/main/java/net/citizensnpcs/npc/CitizensNPC.java +++ b/src/main/java/net/citizensnpcs/npc/CitizensNPC.java @@ -1,6 +1,7 @@ package net.citizensnpcs.npc; import net.citizensnpcs.EventListen; +import net.citizensnpcs.Settings.Setting; import net.citizensnpcs.api.CitizensAPI; import net.citizensnpcs.api.ai.Navigator; import net.citizensnpcs.api.event.NPCDespawnEvent; @@ -14,6 +15,7 @@ import net.citizensnpcs.npc.ai.CitizensNavigator; import net.citizensnpcs.trait.CurrentLocation; import net.citizensnpcs.util.Messaging; import net.minecraft.server.EntityLiving; +import net.minecraft.server.EntityPlayer; import org.apache.commons.lang.Validate; import org.bukkit.Bukkit; @@ -143,7 +145,8 @@ public abstract class CitizensNPC extends AbstractNPC { EventListen.add(loc, getId()); return true; } - mcEntity.world.players.remove(mcEntity); + if (mcEntity instanceof EntityPlayer && Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean()) + mcEntity.world.players.remove(mcEntity); NPCSpawnEvent spawnEvent = new NPCSpawnEvent(this, loc); Bukkit.getPluginManager().callEvent(spawnEvent);