From 2c3a51c3f7ff2b146020dc3014444d8687626bab Mon Sep 17 00:00:00 2001 From: aPunch Date: Wed, 14 Mar 2012 00:16:42 -0500 Subject: [PATCH] Fix look-close and talk-close defaults. This fixes CITIZENS-27. --- lib/CitizensAPI.jar | Bin 48550 -> 48087 bytes .../command/command/NPCCommands.java | 7 +-- .../net/citizensnpcs/npc/CitizensNPC.java | 24 ++++++++- .../npc/CitizensTraitManager.java | 4 +- .../net/citizensnpcs/trait/LookClose.java | 46 +++++++++--------- 5 files changed, 51 insertions(+), 30 deletions(-) diff --git a/lib/CitizensAPI.jar b/lib/CitizensAPI.jar index 46f5600de56d55246beca9f7bd9c7f169e451e7c..5fb5134438380803e0afb9da3e54e6ee4748a6ef 100644 GIT binary patch delta 8956 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 clazz) { + Trait trait = traitManager.getTrait(clazz, this); + if (trait == null) { + Bukkit.getLogger().log(Level.SEVERE, "Cannot register a null trait. Was it registered properly?"); + return; + } + if (trait instanceof Runnable) { + runnables.add((Runnable) trait); + if (traits.containsKey(trait.getClass())) + runnables.remove(traits.get(trait.getClass())); + } + if (trait instanceof Listener) { + Bukkit.getPluginManager().registerEvents((Listener) trait, null); + // TODO: insert plugin instance somehow + } + traits.put(trait.getClass(), trait); + } + @Override public void chat(Player player, String message) { Messaging.sendWithNPC(player, Setting.CHAT_PREFIX.asString() + message, this); @@ -89,7 +109,7 @@ public abstract class CitizensNPC extends AbstractNPC { public T getTrait(Class clazz) { Trait t = traits.get(clazz); if (t == null) - addTrait(traitManager.getTrait(clazz, this)); + addTrait(clazz); return traits.get(clazz) != null ? clazz.cast(traits.get(clazz)) : null; } @@ -170,7 +190,7 @@ public abstract class CitizensNPC extends AbstractNPC { + ex.getMessage()); ex.printStackTrace(); } - addTrait(trait); + addTrait(trait.getClass()); } // Spawn the NPC diff --git a/src/main/java/net/citizensnpcs/npc/CitizensTraitManager.java b/src/main/java/net/citizensnpcs/npc/CitizensTraitManager.java index 3c3f5a0b7..fb031e740 100644 --- a/src/main/java/net/citizensnpcs/npc/CitizensTraitManager.java +++ b/src/main/java/net/citizensnpcs/npc/CitizensTraitManager.java @@ -19,6 +19,7 @@ import net.citizensnpcs.trait.LookClose; import net.citizensnpcs.trait.Powered; import net.citizensnpcs.trait.text.Text; import net.citizensnpcs.trait.waypoint.Waypoints; +import net.citizensnpcs.util.Messaging; public class CitizensTraitManager implements TraitManager { private final Map> registered = new HashMap>(); @@ -86,8 +87,7 @@ public class CitizensTraitManager implements TraitManager { if (!CACHED_CTORS.containsKey(trait)) { try { constructor = trait.getConstructor(NPC.class); - constructor.setAccessible(true); // do we want to allow private - // constructors? + constructor.setAccessible(true); } catch (Exception ex) { constructor = null; } diff --git a/src/main/java/net/citizensnpcs/trait/LookClose.java b/src/main/java/net/citizensnpcs/trait/LookClose.java index 60754f08a..71e6c0b52 100644 --- a/src/main/java/net/citizensnpcs/trait/LookClose.java +++ b/src/main/java/net/citizensnpcs/trait/LookClose.java @@ -20,29 +20,6 @@ public class LookClose extends Trait implements Runnable, Toggleable { this.npc = npc; } - private void faceEntity(CitizensNPC npc, Entity target) { - if (npc.getBukkitEntity().getWorld() != target.getWorld()) - return; - Location loc = npc.getBukkitEntity().getLocation(); - - double xDiff = target.getLocation().getX() - loc.getX(); - double yDiff = target.getLocation().getY() - loc.getY(); - double zDiff = target.getLocation().getZ() - loc.getZ(); - - double distanceXZ = Math.sqrt(xDiff * xDiff + zDiff * zDiff); - double distanceY = Math.sqrt(distanceXZ * distanceXZ + yDiff * yDiff); - - double yaw = (Math.acos(xDiff / distanceXZ) * 180 / Math.PI); - double pitch = (Math.acos(yDiff / distanceY) * 180 / Math.PI) - 90; - if (zDiff < 0.0) { - yaw = yaw + (Math.abs(180 - yaw) * 2); - } - - npc.getHandle().yaw = (float) yaw - 90; - npc.getHandle().pitch = (float) pitch; - npc.getHandle().X = npc.getHandle().yaw; - } - @Override public void load(DataKey key) throws NPCLoadException { lookClose = key.getBoolean(""); @@ -67,6 +44,29 @@ public class LookClose extends Trait implements Runnable, Toggleable { return lookClose; } + private void faceEntity(CitizensNPC npc, Entity target) { + if (npc.getBukkitEntity().getWorld() != target.getWorld()) + return; + Location loc = npc.getBukkitEntity().getLocation(); + + double xDiff = target.getLocation().getX() - loc.getX(); + double yDiff = target.getLocation().getY() - loc.getY(); + double zDiff = target.getLocation().getZ() - loc.getZ(); + + double distanceXZ = Math.sqrt(xDiff * xDiff + zDiff * zDiff); + double distanceY = Math.sqrt(distanceXZ * distanceXZ + yDiff * yDiff); + + double yaw = (Math.acos(xDiff / distanceXZ) * 180 / Math.PI); + double pitch = (Math.acos(yDiff / distanceY) * 180 / Math.PI) - 90; + if (zDiff < 0.0) { + yaw = yaw + (Math.abs(180 - yaw) * 2); + } + + npc.getHandle().yaw = (float) yaw - 90; + npc.getHandle().pitch = (float) pitch; + npc.getHandle().X = npc.getHandle().yaw; + } + @Override public String toString() { return "LookClose{" + lookClose + "}";