From ac7f58b089bd24d6211869324ff65416734246ae Mon Sep 17 00:00:00 2001 From: aPunch Date: Sat, 14 Jan 2012 22:23:58 -0600 Subject: [PATCH] changes --- lib/CitizensAPI.jar | Bin 13392 -> 13349 bytes src/net/citizensnpcs/npc/CitizensNPC.java | 60 +++++++++++------- .../citizensnpcs/npc/CitizensNPCManager.java | 14 ++-- 3 files changed, 46 insertions(+), 28 deletions(-) diff --git a/lib/CitizensAPI.jar b/lib/CitizensAPI.jar index b2875d4fd534a09503895ecf2f4c1b2320e133e9..1180a67ad90cf2bbccfd1675dfe90c8a8ac2501a 100644 GIT binary patch delta 634 zcmcbRu{47xz?+$civa|_Zk))Y$@FF8M)OA^f?qf4Iq;_&sP`~3FjO-$Fept{6qm2p zOU_9wE}lBk)0^2*pf!H=O_Qt`q3?f<7`H0AE5|W8DXb9q_+YK^WxuFo{~0e`J}j^N z!2V+Vv%U@Ob^{V!(w|}3CIg-iKpTuWY_D z@!c*#@z|p;+h^Z6w02|EzC;bH-s+3udz81FpIxsOa%=nh%J^AP(JhBejZ!R1PVF~r zf2ZZ#wd=Lq;U&TA_#?y@t*=RBN(!w@Ds9cYulY8R&+d(4(lm*aRqBtG{^usQ-BDLh z(g>U&xYF;U>uTlX;NYK8GvYKP&mEiP_uuTjj^918i}n1)zt1MVs8yTN?-;Lkq~^<0 zANT!y60w@~`-=Qr&#tSuR8*jSX!)WYX%VGTjxRoky?@xaOR7=3higmjsR|>*K<=wA z9hKT%rd{BUtz2gnlA^yZ>-a}Dp4s=)l=z(!w>(dM9k)yE>;Z$uAKE?_MSK{;g2OJK zh&Zd1UMgiA_IbuutM$8e>0nSuOQRcjgzNpSOTMO^97C9Y`iG(H~EBqBGYZL$p^KhC)wJ^Sp_U7ttvU$%0z%IMgx@8 E07;$mrN21<8tc7{6<$^9Z}|XPzk``ufaavHHVv;&%(k9*lN!-;)=#RJmQ- z^^%O4s}_@TaNGL2r#t0pzt}nV-MBj8VQ>7(vaNnD?yiT9EZO>dN|=(*=joRee?F+? z(-iYqZ2s<^#%cZE%sfY{=k_Gd>*1NQDkat=>Qd7ytxJct1fMK05c={r^)KI=&&y84 z?OyTOUCjCG$&k3C^|CjEbyEMYeR+E`FI)7cXuVZy=5=K2?%u8RGbXLL&2_)na>4v9 z`ud%r-OP#k$0qIx_~ziU(B^)r%l6Rz+nEaeq1}@XojiY7)|&C~r^WL)4hP7c`MJ1I zky$FcTE+R^{B=*izPC7kz<}-dl;bCbk7=F{OiR8Ox@VymqpQ~m1GQKyoy1c|x6dfs z*dyt*Px+X{ylI`wTst{S!x9+Jo0n?5X5&SP=*e^S6Peh=Cr^}+o-A!(#k4>I$TXSUZJ@=} zC<$chOmPM%|I&U8-&Dx}ZWt^rD| E037rwApigX diff --git a/src/net/citizensnpcs/npc/CitizensNPC.java b/src/net/citizensnpcs/npc/CitizensNPC.java index a2ab904a5..c305cde52 100644 --- a/src/net/citizensnpcs/npc/CitizensNPC.java +++ b/src/net/citizensnpcs/npc/CitizensNPC.java @@ -6,7 +6,6 @@ import java.util.Set; import net.citizensnpcs.api.Citizens; import net.citizensnpcs.api.event.NPCDespawnEvent; import net.citizensnpcs.api.event.NPCSpawnEvent; -import net.citizensnpcs.api.exception.NPCException; import net.citizensnpcs.api.npc.trait.Character; import net.citizensnpcs.api.npc.NPC; import net.citizensnpcs.api.npc.pathfinding.Navigator; @@ -23,26 +22,28 @@ public class CitizensNPC implements NPC { private Character character = null; private CraftNPC mcEntity; private boolean spawned; + private final CitizensNPCManager manager; protected CitizensNPC(Character character, Trait... traits) { this.character = character; for (Trait trait : traits) { this.traits.add(trait); } - this.id = ((CitizensNPCManager) Citizens.getNPCManager()).getUniqueID(); + manager = (CitizensNPCManager) Citizens.getNPCManager(); + id = manager.getUniqueID(); } @Override - public void addTrait(Trait trait) throws NPCException { + public void addTrait(Trait trait) { if (!hasTrait(trait)) traits.add(trait); else - throw new NPCException("The NPC already has the trait '" + trait.getName() + "'."); + System.out.println("The NPC already has the trait '" + trait.getName() + "'."); } @Override - public void addTrait(String name) throws NPCException { - addTrait(Citizens.getTraitManager().getTrait(name)); + public void addTrait(String name) { + addTrait(getTrait(name)); } @Override @@ -83,25 +84,29 @@ public class CitizensNPC implements NPC { @Override public boolean hasTrait(String name) { - return hasTrait(Citizens.getTraitManager().getTrait(name)); + return hasTrait(getTrait(name)); } @Override - public void removeTrait(Trait trait) throws NPCException { - if (!hasTrait(trait)) - throw new NPCException("The NPC does not have a trait with the name of '" + trait.getName() + "."); + public void removeTrait(Trait trait) { + if (!hasTrait(trait)) { + System.out.println("The NPC does not have a trait with the name of '" + trait.getName() + "."); + return; + } traits.remove(trait); } @Override - public void removeTrait(String name) throws NPCException { - removeTrait(Citizens.getTraitManager().getTrait(name)); + public void removeTrait(String name) { + removeTrait(getTrait(name)); } @Override - public void setCharacter(Character character) throws NPCException { - if (this.character.equals(character)) - throw new NPCException("The NPC already has the character '" + character.getName() + "'."); + public void setCharacter(Character character) { + if (this.character.equals(character)) { + System.out.println("The NPC already has the character '" + character.getName() + "'."); + return; + } this.character = character; } @@ -111,9 +116,11 @@ public class CitizensNPC implements NPC { } @Override - public void spawn(Location loc) throws NPCException { - if (spawned) - throw new NPCException("The NPC is already spawned."); + public void spawn(Location loc) { + if (spawned) { + System.out.println("The NPC is already spawned."); + return; + } NPCSpawnEvent spawnEvent = new NPCSpawnEvent(this, loc); Bukkit.getPluginManager().callEvent(spawnEvent); @@ -121,23 +128,28 @@ public class CitizensNPC implements NPC { return; } addTrait(new LocationTrait(loc)); - mcEntity = ((CitizensNPCManager) Citizens.getNPCManager()).spawn(this); + mcEntity = manager.spawn(this); } @Override - public void despawn() throws NPCException { - if (!spawned) - throw new NPCException("The NPC is already despawned."); + public void despawn() { + if (!spawned) { + System.out.println("The NPC is already despawned."); + return; + } Bukkit.getPluginManager().callEvent(new NPCDespawnEvent(this)); mcEntity.die(); - ((CitizensNPCManager) Citizens.getNPCManager()).despawn(this); + manager.despawn(this); } @Override public void remove() { - // TODO + if (spawned) { + despawn(); + } + manager.remove(this); } public CraftNPC getHandle() { diff --git a/src/net/citizensnpcs/npc/CitizensNPCManager.java b/src/net/citizensnpcs/npc/CitizensNPCManager.java index 551cf6188..1b9affbd8 100644 --- a/src/net/citizensnpcs/npc/CitizensNPCManager.java +++ b/src/net/citizensnpcs/npc/CitizensNPCManager.java @@ -13,7 +13,6 @@ import org.bukkit.craftbukkit.CraftServer; import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.entity.LivingEntity; -import net.citizensnpcs.api.Citizens; import net.citizensnpcs.api.npc.NPC; import net.citizensnpcs.api.npc.NPCManager; import net.citizensnpcs.api.npc.trait.Character; @@ -74,7 +73,13 @@ public class CitizensNPCManager implements NPCManager { @Override public Collection getNPCs(String name) { - return getNPCs(Citizens.getTraitManager().getTrait(name)); + Set npcs = new HashSet(); + for (NPC npc : spawned.values()) { + if (npc.hasTrait(name)) { + npcs.add(npc); + } + } + return npcs; } @Override @@ -111,14 +116,15 @@ public class CitizensNPCManager implements NPCManager { } public void remove(NPC npc) { + despawn(npc); byID.remove(npc.getId()); } - private WorldServer getWorldServer(World world) { + public WorldServer getWorldServer(World world) { return ((CraftWorld) world).getHandle(); } - private MinecraftServer getMinecraftServer(Server server) { + public MinecraftServer getMinecraftServer(Server server) { return ((CraftServer) server).getServer(); } } \ No newline at end of file