From ee35f698f87e0a4df18e7c466a21bdd4bb706d04 Mon Sep 17 00:00:00 2001 From: aPunch Date: Fri, 17 Feb 2012 22:53:28 -0600 Subject: [PATCH] change to selection, add /npc remove command for permanent removal --- src/net/citizensnpcs/EventListen.java | 6 +++--- .../citizensnpcs/command/command/NPCCommands.java | 14 ++++++++++++++ src/net/citizensnpcs/npc/CitizensNPC.java | 3 +++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/net/citizensnpcs/EventListen.java b/src/net/citizensnpcs/EventListen.java index 127b5cc53..0216582cb 100644 --- a/src/net/citizensnpcs/EventListen.java +++ b/src/net/citizensnpcs/EventListen.java @@ -90,9 +90,9 @@ public class EventListen implements Listener { NPC npc = npcManager.getNPC(event.getEntity()); Player player = (Player) event.getTarget(); if (!npcManager.isNPCSelectedByPlayer(player, npc)) { - if (player.hasPermission("citizens.npc.select") - && player.getItemInHand().getTypeId() == Setting.SELECTION_ITEM.asInt() - && npc.getTrait(Owner.class).getOwner().equals(player.getName())) { + if (player.getItemInHand().getTypeId() == Setting.SELECTION_ITEM.asInt() + && (npc.getTrait(Owner.class).getOwner().equals(player.getName()) || player + .hasPermission("citizens.npc.override-selection"))) { npcManager.selectNPC(player, npc); Messaging.sendWithNPC(player, Setting.SELECTION_MESSAGE.asString(), npc); if (!Setting.QUICK_SELECT.asBoolean()) diff --git a/src/net/citizensnpcs/command/command/NPCCommands.java b/src/net/citizensnpcs/command/command/NPCCommands.java index a278711ee..c994208b8 100644 --- a/src/net/citizensnpcs/command/command/NPCCommands.java +++ b/src/net/citizensnpcs/command/command/NPCCommands.java @@ -108,6 +108,20 @@ public class NPCCommands { npc.despawn(); Messaging.send(player, ChatColor.GREEN + "You despawned " + StringHelper.wrap(npc.getName()) + "."); } + + @Command( + aliases = { "npc" }, + usage = "remove", + desc = "Remove an NPC", + modifiers = { "remove" }, + min = 1, + max = 1, + permission = "npc.remove") + public void removeNPC(CommandContext args, Player player, NPC npc) { + npc.remove(); + Messaging.send(player, + ChatColor.GREEN + "You permanently removed " + StringHelper.wrap(npc.getName()) + "."); + } @Command( aliases = { "npc" }, diff --git a/src/net/citizensnpcs/npc/CitizensNPC.java b/src/net/citizensnpcs/npc/CitizensNPC.java index 57ceb8fc4..c8cb1af19 100644 --- a/src/net/citizensnpcs/npc/CitizensNPC.java +++ b/src/net/citizensnpcs/npc/CitizensNPC.java @@ -1,5 +1,6 @@ package net.citizensnpcs.npc; +import net.citizensnpcs.Citizens; import net.citizensnpcs.Settings.Setting; import net.citizensnpcs.api.event.NPCDespawnEvent; import net.citizensnpcs.api.event.NPCSpawnEvent; @@ -76,6 +77,8 @@ public abstract class CitizensNPC extends AbstractNPC { if (isSpawned()) despawn(); manager.remove(this); + ((Citizens) Bukkit.getServer().getPluginManager().getPlugin("Citizens")).getStorage().getKey("npc").removeKey( + String.valueOf(getId())); } @Override