From 0e737cc367c1631657d09bf8e457d3974cefa5a9 Mon Sep 17 00:00:00 2001 From: aPunch Date: Sun, 29 Jan 2012 12:23:42 -0600 Subject: [PATCH] added spawned trait --- lib/CitizensAPI.jar | Bin 19990 -> 20701 bytes src/net/citizensnpcs/Citizens.java | 2 ++ .../command/command/NPCCommands.java | 6 ++++-- src/net/citizensnpcs/npc/CitizensNPC.java | 17 ++++++++++++----- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/lib/CitizensAPI.jar b/lib/CitizensAPI.jar index 5056dcedaf4570bb97dccd7eff012c2cbc672d8c..fe35aa5c8f46b14a79af7e21535ca137f06fc4ac 100644 GIT binary patch delta 736 zcmbO>hw<)0MxFp~W)?065crTdkw=s1ed0!QV%r| z3=AbK3=BpLlP|hUPwuxBtWQnROU_9wE}k0b8+ z$6a{i#z9v}u{UvtXa8EDGWS_y^Zt{q=QPgk_`v>SvCR8yrxiZF{BQ}3LbF5feu6gd4AICjp3^zElz24eWzvNb$ z!Jc1?%{ztVIonn)>p61oW@hx4@0Gi~=Xx3QReo>yzO*jgH@J2Jr}JV-PSKX2lm1Fx zi{fUm>``adV!HY~D0So1dv_Pvz7LS!Z0+>+V=&XKudmJ~*PUzD>$h_B{+fE_V)5M> z!sln1|2q)9?uT{Z#-$s3gbNRDsQIm+sP?CR&bz58mv$93woK;tQwq6P6!kIEUSxMr zcgf~5XW^2EkLGc+r?P$8`R>s1UERDnMmc}_xp^*MZ@Ry|-*tsV*n5W?*C!@^G@E#2 zUQVs>@z{gPZIoaFTRVSiv> zP~ZU(*Y_@-M$I~+^UUbX*`6tZhWnl*Tw4$-xhVNb$*LLW!^&5z=AZKSYgc7wXZ?>QtDb4v zOFRlXw{yzM{{;oVFZwzh`n-Q(0cW;I!NgCOWE;3mrZTbZd~DeAtzrCJ n1=x}rIC+AJC5;u1u!JWEOLzg^tZX1zH6VP!!@zLg8N>qsy&Oek delta 74 zcmcb+ka5}^#>qB}QWK@5nSO+9G&g3NyoXU>aTSyOWFc3n$-kYofx??LTr!v@%eV?` ZUf_0;Q-qa`0SHuqu!Dzzp~4Zw0|1x$6o>!- diff --git a/src/net/citizensnpcs/Citizens.java b/src/net/citizensnpcs/Citizens.java index e2eb49448..7a4f7e35b 100644 --- a/src/net/citizensnpcs/Citizens.java +++ b/src/net/citizensnpcs/Citizens.java @@ -19,6 +19,7 @@ import net.citizensnpcs.api.npc.trait.InstanceFactory; import net.citizensnpcs.api.npc.trait.Trait; import net.citizensnpcs.api.npc.trait.trait.Owner; import net.citizensnpcs.api.npc.trait.trait.SpawnLocation; +import net.citizensnpcs.api.npc.trait.trait.Spawned; import net.citizensnpcs.command.CommandManager; import net.citizensnpcs.command.Injector; import net.citizensnpcs.command.command.NPCCommands; @@ -175,6 +176,7 @@ public class Citizens extends JavaPlugin { private void setupNPCs() throws NPCLoadException { traitManager.register("location", SpawnLocation.class); traitManager.register("owner", Owner.class); + traitManager.register("spawned", Spawned.class); int created = 0, spawned = 0; for (DataKey key : saves.getKey("npc").getIntegerSubKeys()) { diff --git a/src/net/citizensnpcs/command/command/NPCCommands.java b/src/net/citizensnpcs/command/command/NPCCommands.java index f9fa542c1..e41b9a678 100644 --- a/src/net/citizensnpcs/command/command/NPCCommands.java +++ b/src/net/citizensnpcs/command/command/NPCCommands.java @@ -5,6 +5,7 @@ import net.citizensnpcs.api.npc.NPC; import net.citizensnpcs.api.npc.trait.Character; import net.citizensnpcs.api.npc.trait.DefaultInstanceFactory; import net.citizensnpcs.api.npc.trait.trait.Owner; +import net.citizensnpcs.api.npc.trait.trait.Spawned; import net.citizensnpcs.command.CommandContext; import net.citizensnpcs.command.annotation.Command; import net.citizensnpcs.command.annotation.Permission; @@ -85,6 +86,7 @@ public class NPCCommands { min = 2, max = 2) @Permission("npc.spawn") + @Requirements public void spawnNPC(CommandContext args, Player player, NPC npc) { CitizensNPC respawn = (CitizensNPC) npcManager.getNPC(args.getInteger(1)); if (respawn == null) { @@ -120,8 +122,8 @@ public class NPCCommands { @Requirements(ownership = true) public void selectNPC(CommandContext args, Player player, NPC npc) { NPC toSelect = npcManager.getNPC(args.getInteger(1)); - if (toSelect == null) { - Messaging.sendError(player, "No NPC with the ID '" + args.getInteger(1) + "' exists."); + if (toSelect == null || !toSelect.getTrait(Spawned.class).isSpawned()) { + Messaging.sendError(player, "No NPC with the ID '" + args.getInteger(1) + "' is spawned."); return; } if (npc != null && toSelect.getId() == npc.getId()) { diff --git a/src/net/citizensnpcs/npc/CitizensNPC.java b/src/net/citizensnpcs/npc/CitizensNPC.java index cfeb33da6..a79bd786d 100644 --- a/src/net/citizensnpcs/npc/CitizensNPC.java +++ b/src/net/citizensnpcs/npc/CitizensNPC.java @@ -5,6 +5,7 @@ import net.citizensnpcs.api.event.NPCSpawnEvent; import net.citizensnpcs.api.npc.AbstractNPC; import net.citizensnpcs.api.npc.ai.Navigator; import net.citizensnpcs.api.npc.trait.trait.SpawnLocation; +import net.citizensnpcs.api.npc.trait.trait.Spawned; import net.citizensnpcs.npc.ai.CitizensNavigator; import net.citizensnpcs.resource.lib.CraftNPC; import net.citizensnpcs.util.Messaging; @@ -15,7 +16,6 @@ import org.bukkit.entity.Player; public class CitizensNPC extends AbstractNPC { private CraftNPC mcEntity; - private boolean spawned; private final CitizensNPCManager manager; public CitizensNPC(CitizensNPCManager manager, int id, String name) { @@ -33,8 +33,8 @@ public class CitizensNPC extends AbstractNPC { Bukkit.getPluginManager().callEvent(new NPCDespawnEvent(this)); manager.despawn(this); + getTrait(Spawned.class).setSpawned(false); - spawned = false; return true; } @@ -54,7 +54,7 @@ public class CitizensNPC extends AbstractNPC { @Override public boolean isSpawned() { - return spawned; + return getHandle() != null; } @Override @@ -79,9 +79,16 @@ public class CitizensNPC extends AbstractNPC { mcEntity = manager.spawn(this, loc); // Set the location - addTrait(new SpawnLocation(loc)); + if (!hasTrait(SpawnLocation.class)) + addTrait(new SpawnLocation(loc)); + else + getTrait(SpawnLocation.class).setLocation(loc); + + if (!hasTrait(Spawned.class)) + addTrait(new Spawned(true)); + else + getTrait(Spawned.class).setSpawned(true); - spawned = true; return true; } } \ No newline at end of file