From 46eb073031559d14227b1ff5b5d4d6c2121a1df9 Mon Sep 17 00:00:00 2001 From: aPunch Date: Sat, 14 Jan 2012 21:52:31 -0600 Subject: [PATCH] added exceptions --- lib/CitizensAPI.jar | Bin 11046 -> 13392 bytes src/net/citizensnpcs/npc/CitizensNPC.java | 40 ++++++++++++----- .../citizensnpcs/npc/CitizensNPCManager.java | 7 ++- .../citizensnpcs/npc/trait/LocationTrait.java | 41 ------------------ 4 files changed, 35 insertions(+), 53 deletions(-) delete mode 100644 src/net/citizensnpcs/npc/trait/LocationTrait.java diff --git a/lib/CitizensAPI.jar b/lib/CitizensAPI.jar index 4e8832744dd127ad1d5467fb4e81572098732798..b2875d4fd534a09503895ecf2f4c1b2320e133e9 100644 GIT binary patch delta 2947 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 Y@<67k2rC=NX>vgLij#psO%cQc00YQGWdHyG diff --git a/src/net/citizensnpcs/npc/CitizensNPC.java b/src/net/citizensnpcs/npc/CitizensNPC.java index 8604550a8..a2ab904a5 100644 --- a/src/net/citizensnpcs/npc/CitizensNPC.java +++ b/src/net/citizensnpcs/npc/CitizensNPC.java @@ -6,11 +6,12 @@ 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; import net.citizensnpcs.api.npc.trait.Trait; -import net.citizensnpcs.npc.trait.LocationTrait; +import net.citizensnpcs.api.npc.trait.trait.LocationTrait; import net.citizensnpcs.resources.lib.CraftNPC; import org.bukkit.Bukkit; @@ -21,6 +22,7 @@ public class CitizensNPC implements NPC { private final Set traits = new HashSet(); private Character character = null; private CraftNPC mcEntity; + private boolean spawned; protected CitizensNPC(Character character, Trait... traits) { this.character = character; @@ -31,15 +33,15 @@ public class CitizensNPC implements NPC { } @Override - public void addTrait(Trait trait) { + public void addTrait(Trait trait) throws NPCException { if (!hasTrait(trait)) traits.add(trait); else - throw new IllegalArgumentException("The NPC already has the trait '" + trait.getName() + "'."); + throw new NPCException("The NPC already has the trait '" + trait.getName() + "'."); } @Override - public void addTrait(String name) { + public void addTrait(String name) throws NPCException { addTrait(Citizens.getTraitManager().getTrait(name)); } @@ -85,24 +87,34 @@ public class CitizensNPC implements NPC { } @Override - public void removeTrait(Trait trait) { + 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() + "."); traits.remove(trait); } @Override - public void removeTrait(String name) { + public void removeTrait(String name) throws NPCException { removeTrait(Citizens.getTraitManager().getTrait(name)); } @Override - public void setCharacter(Character character) { + public void setCharacter(Character character) throws NPCException { if (this.character.equals(character)) - throw new IllegalArgumentException("The NPC already has the character '" + character.getName() + "'."); + throw new NPCException("The NPC already has the character '" + character.getName() + "'."); this.character = character; } @Override - public void spawn(Location loc) { + public boolean isSpawned() { + return spawned; + } + + @Override + public void spawn(Location loc) throws NPCException { + if (spawned) + throw new NPCException("The NPC is already spawned."); + NPCSpawnEvent spawnEvent = new NPCSpawnEvent(this, loc); Bukkit.getPluginManager().callEvent(spawnEvent); if (spawnEvent.isCancelled()) { @@ -113,13 +125,21 @@ public class CitizensNPC implements NPC { } @Override - public void despawn() { + public void despawn() throws NPCException { + if (!spawned) + throw new NPCException("The NPC is already despawned."); + Bukkit.getPluginManager().callEvent(new NPCDespawnEvent(this)); mcEntity.die(); ((CitizensNPCManager) Citizens.getNPCManager()).despawn(this); } + @Override + public void remove() { + // TODO + } + public CraftNPC getHandle() { return mcEntity; } diff --git a/src/net/citizensnpcs/npc/CitizensNPCManager.java b/src/net/citizensnpcs/npc/CitizensNPCManager.java index 576d6cbf0..ae4ecdd2d 100644 --- a/src/net/citizensnpcs/npc/CitizensNPCManager.java +++ b/src/net/citizensnpcs/npc/CitizensNPCManager.java @@ -18,7 +18,7 @@ import net.citizensnpcs.api.npc.NPC; import net.citizensnpcs.api.npc.NPCManager; import net.citizensnpcs.api.npc.trait.Character; import net.citizensnpcs.api.npc.trait.Trait; -import net.citizensnpcs.npc.trait.LocationTrait; +import net.citizensnpcs.api.npc.trait.trait.LocationTrait; import net.citizensnpcs.resources.lib.CraftNPC; import net.minecraft.server.ItemInWorldManager; @@ -27,6 +27,7 @@ import net.minecraft.server.WorldServer; public class CitizensNPCManager implements NPCManager { private Map spawned = new HashMap(); + private Map byID = new HashMap(); @Override public NPC createNPC() { @@ -40,7 +41,9 @@ public class CitizensNPCManager implements NPCManager { @Override public NPC createNPC(Character character, Trait... traits) { - return new CitizensNPC(character, traits); + CitizensNPC npc = new CitizensNPC(character, traits); + byID.put(npc.getId(), npc); + return npc; } @Override diff --git a/src/net/citizensnpcs/npc/trait/LocationTrait.java b/src/net/citizensnpcs/npc/trait/LocationTrait.java deleted file mode 100644 index 9526010ed..000000000 --- a/src/net/citizensnpcs/npc/trait/LocationTrait.java +++ /dev/null @@ -1,41 +0,0 @@ -package net.citizensnpcs.npc.trait; - -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.configuration.ConfigurationSection; - -import net.citizensnpcs.api.npc.trait.Trait; - -public class LocationTrait implements Trait { - private Location loc; - - public LocationTrait(Location loc) { - this.loc = loc; - } - - @Override - public String getName() { - return "location"; - } - - @Override - public void load(ConfigurationSection cs) { - loc = new Location(Bukkit.getWorld(cs.getString("location.world")), cs.getDouble("location.x"), - cs.getDouble("location.y"), cs.getDouble("location.z"), (float) cs.getDouble("location.pitch"), - (float) cs.getDouble("location.yaw")); - } - - @Override - public void save(ConfigurationSection cs) { - cs.set("location.world", loc.getWorld()); - cs.set("location.x", loc.getX()); - cs.set("location.y", loc.getY()); - cs.set("location.z", loc.getZ()); - cs.set("location.pitch", loc.getPitch()); - cs.set("location.yaw", loc.getYaw()); - } - - public Location getLocation() { - return loc; - } -} \ No newline at end of file