diff --git a/lib/CitizensAPI.jar b/lib/CitizensAPI.jar index 5f3305c28..e425be2c2 100644 Binary files a/lib/CitizensAPI.jar and b/lib/CitizensAPI.jar differ diff --git a/src/net/citizensnpcs/Citizens.java b/src/net/citizensnpcs/Citizens.java index f503af52f..31d9e58d2 100644 --- a/src/net/citizensnpcs/Citizens.java +++ b/src/net/citizensnpcs/Citizens.java @@ -8,7 +8,7 @@ import net.citizensnpcs.api.exception.NPCLoadException; import net.citizensnpcs.api.npc.NPC; import net.citizensnpcs.api.npc.trait.Character; import net.citizensnpcs.api.npc.trait.Trait; -import net.citizensnpcs.api.npc.trait.trait.LocationTrait; +import net.citizensnpcs.api.npc.trait.trait.SpawnLocation; import net.citizensnpcs.npc.CitizensNPCManager; import net.citizensnpcs.npc.trait.CitizensCharacterManager; import net.citizensnpcs.npc.trait.CitizensTraitManager; @@ -94,7 +94,7 @@ public class Citizens extends JavaPlugin { // TODO possibly separate this out some more private void setupNPCs() throws NPCLoadException { - traitManager.registerTrait(LocationTrait.class); + traitManager.registerTrait(SpawnLocation.class); int spawned = 0; for (DataKey key : saves.getKey("npc").getIntegerSubKeys()) { int id = Integer.parseInt(key.name()); @@ -129,7 +129,7 @@ public class Citizens extends JavaPlugin { // Spawn the NPC if (key.getBoolean("spawned")) { - npc.spawn(npc.getTrait(LocationTrait.class).getLocation()); + npc.spawn(npc.getTrait(SpawnLocation.class).getLocation()); spawned++; } } diff --git a/src/net/citizensnpcs/EventListen.java b/src/net/citizensnpcs/EventListen.java index 298f2e004..2549e376e 100644 --- a/src/net/citizensnpcs/EventListen.java +++ b/src/net/citizensnpcs/EventListen.java @@ -5,7 +5,7 @@ import java.util.Set; import net.citizensnpcs.api.CitizensAPI; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.api.npc.trait.trait.LocationTrait; +import net.citizensnpcs.api.npc.trait.trait.SpawnLocation; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -57,7 +57,7 @@ public class EventListen implements Listener { public void onChunkLoad(ChunkLoadEvent event) { for (int id : toRespawn) { NPC npc = CitizensAPI.getNPCManager().getNPC(id); - npc.spawn(npc.getTrait(LocationTrait.class).getLocation()); + npc.spawn(npc.getTrait(SpawnLocation.class).getLocation()); toRespawn.remove(id); } } @@ -68,10 +68,11 @@ public class EventListen implements Listener { return; for (NPC npc : CitizensAPI.getNPCManager().getNPCs()) { - Location loc = npc.getTrait(LocationTrait.class).getLocation(); + Location loc = npc.getBukkitEntity().getLocation(); if (event.getWorld().equals(loc.getWorld()) && event.getChunk().getX() == loc.getChunk().getX() && event.getChunk().getZ() == loc.getChunk().getZ()) { toRespawn.add(npc.getId()); + npc.getTrait(SpawnLocation.class).setLocation(loc); npc.despawn(); } } diff --git a/src/net/citizensnpcs/npc/CitizensNPC.java b/src/net/citizensnpcs/npc/CitizensNPC.java index c71affcac..49b7417a2 100644 --- a/src/net/citizensnpcs/npc/CitizensNPC.java +++ b/src/net/citizensnpcs/npc/CitizensNPC.java @@ -10,7 +10,7 @@ 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.api.npc.trait.trait.LocationTrait; +import net.citizensnpcs.api.npc.trait.trait.SpawnLocation; import net.citizensnpcs.resources.lib.CraftNPC; import net.citizensnpcs.util.Messaging; @@ -143,8 +143,8 @@ public class CitizensNPC implements NPC { manager.spawn(this, loc); // Set the location - addTrait(LocationTrait.class); - getTrait(LocationTrait.class).setLocation(loc); + addTrait(SpawnLocation.class); + getTrait(SpawnLocation.class).setLocation(loc); spawned = true; } diff --git a/src/net/citizensnpcs/npc/CitizensNPCManager.java b/src/net/citizensnpcs/npc/CitizensNPCManager.java index 09fcf0e22..85946438e 100644 --- a/src/net/citizensnpcs/npc/CitizensNPCManager.java +++ b/src/net/citizensnpcs/npc/CitizensNPCManager.java @@ -20,7 +20,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.api.npc.trait.trait.LocationTrait; +import net.citizensnpcs.api.npc.trait.trait.SpawnLocation; import net.citizensnpcs.resources.lib.CraftNPC; import net.minecraft.server.ItemInWorldManager; @@ -92,7 +92,6 @@ public class CitizensNPCManager implements NPCManager { mcEntity.setPositionRotation(loc.getX(), loc.getY(), loc.getZ(), loc.getYaw(), loc.getPitch()); ws.addEntity(mcEntity); ws.players.remove(mcEntity); - // mcEntity.removeFromPlayerMap(npc.getFullName()); spawned.put(mcEntity.getPlayer(), npc); return mcEntity; @@ -103,7 +102,10 @@ public class CitizensNPCManager implements NPCManager { for (Player player : Bukkit.getOnlinePlayers()) { ((CraftPlayer) player).getHandle().netServerHandler.sendPacket(new Packet29DestroyEntity(mcEntity.id)); } - getWorldServer(npc.getTrait(LocationTrait.class).getLocation().getWorld()).removeEntity(mcEntity); + Location loc = npc.getBukkitEntity().getLocation(); + getWorldServer(loc.getWorld()).removeEntity(mcEntity); + npc.getTrait(SpawnLocation.class).setLocation(loc); + spawned.remove(mcEntity.getPlayer()); }