From d442da91fb277f888373e35049170f428d96edcc Mon Sep 17 00:00:00 2001 From: fullwall Date: Mon, 8 Oct 2012 12:37:45 +0800 Subject: [PATCH] Call onRemove --- src/main/java/net/citizensnpcs/Citizens.java | 3 +++ .../java/net/citizensnpcs/command/command/NPCCommands.java | 2 +- src/main/java/net/citizensnpcs/npc/CitizensNPC.java | 2 +- src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java | 3 +++ 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/citizensnpcs/Citizens.java b/src/main/java/net/citizensnpcs/Citizens.java index 9b539955b..16aa2b026 100644 --- a/src/main/java/net/citizensnpcs/Citizens.java +++ b/src/main/java/net/citizensnpcs/Citizens.java @@ -17,6 +17,7 @@ import net.citizensnpcs.api.npc.NPCRegistry; import net.citizensnpcs.api.scripting.EventRegistrar; import net.citizensnpcs.api.scripting.ObjectProvider; import net.citizensnpcs.api.scripting.ScriptCompiler; +import net.citizensnpcs.api.trait.Trait; import net.citizensnpcs.api.trait.TraitFactory; import net.citizensnpcs.command.CommandContext; import net.citizensnpcs.command.CommandManager; @@ -73,6 +74,8 @@ public class Citizens extends JavaPlugin implements CitizensPlugin { while (itr.hasNext()) { NPC npc = itr.next(); npc.despawn(); + for (Trait t : npc.getTraits()) + t.onRemove(); itr.remove(); } } diff --git a/src/main/java/net/citizensnpcs/command/command/NPCCommands.java b/src/main/java/net/citizensnpcs/command/command/NPCCommands.java index 43233dbf9..a201b1ecf 100644 --- a/src/main/java/net/citizensnpcs/command/command/NPCCommands.java +++ b/src/main/java/net/citizensnpcs/command/command/NPCCommands.java @@ -705,7 +705,7 @@ public class NPCCommands { if (!npc.isSpawned()) npc.spawn(npc.getTrait(CurrentLocation.class).getLocation()); player.teleport(npc.getBukkitEntity(), TeleportCause.COMMAND); - Messaging.sendTr(player, Messages.TELEPORTED_TO_NPC); + Messaging.sendTr(player, Messages.TELEPORTED_TO_NPC, npc.getName()); } @Command(aliases = { "npc" }, usage = "tphere", desc = "Teleport a NPC to your location", modifiers = { diff --git a/src/main/java/net/citizensnpcs/npc/CitizensNPC.java b/src/main/java/net/citizensnpcs/npc/CitizensNPC.java index 8c0d3332f..73b4e7205 100644 --- a/src/main/java/net/citizensnpcs/npc/CitizensNPC.java +++ b/src/main/java/net/citizensnpcs/npc/CitizensNPC.java @@ -89,7 +89,7 @@ public abstract class CitizensNPC extends AbstractNPC { if (hasTrait(clazz)) { trait = getTrait(clazz); } else { - trait = CitizensAPI.getTraitFactory().getTrait(traitKey.name()); + trait = CitizensAPI.getTraitFactory().getTrait(clazz); if (trait == null) { Messaging.severeTr(Messages.SKIPPING_BROKEN_TRAIT, traitKey.name(), getId()); continue; diff --git a/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java b/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java index ef79dca9e..c03ba0013 100644 --- a/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java +++ b/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java @@ -7,6 +7,7 @@ import java.util.Map; import net.citizensnpcs.NPCDataStore; import net.citizensnpcs.api.npc.NPC; import net.citizensnpcs.api.npc.NPCRegistry; +import net.citizensnpcs.api.trait.Trait; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.npc.entity.CitizensBlazeNPC; import net.citizensnpcs.npc.entity.CitizensCaveSpiderNPC; @@ -104,6 +105,8 @@ public class CitizensNPCRegistry implements NPCRegistry { NPC npc = itr.next(); itr.remove(); npc.despawn(); + for (Trait t : npc.getTraits()) + t.onRemove(); saves.remove(npc); } }