From 6d3994e45e3bb12607f4f2cda52df22a5cfdd5d8 Mon Sep 17 00:00:00 2001 From: fullwall Date: Wed, 11 Sep 2013 22:27:52 +0800 Subject: [PATCH] Breaking change: add new NPCRegistry param to AbstractNPC constructor to avoid deregistering from the wrong reigstry --- .../citizensnpcs/api/command/RequirementsProcessor.java | 4 ++-- src/main/java/net/citizensnpcs/api/npc/AbstractNPC.java | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/citizensnpcs/api/command/RequirementsProcessor.java b/src/main/java/net/citizensnpcs/api/command/RequirementsProcessor.java index fb20cd85..81bf4263 100644 --- a/src/main/java/net/citizensnpcs/api/command/RequirementsProcessor.java +++ b/src/main/java/net/citizensnpcs/api/command/RequirementsProcessor.java @@ -64,8 +64,8 @@ public void process(CommandSender sender, CommandContext context, Annotation ins EntityType type = npc.getTrait(MobType.class).getType(); if (!types.contains(type)) { - throw new RequirementMissingException(Messaging.tr(CommandMessages.REQUIREMENTS_INVALID_MOB_TYPE, - type.getName())); + throw new RequirementMissingException(Messaging.tr(CommandMessages.REQUIREMENTS_INVALID_MOB_TYPE, type + .name().toLowerCase().replace('_', ' '))); } } } diff --git a/src/main/java/net/citizensnpcs/api/npc/AbstractNPC.java b/src/main/java/net/citizensnpcs/api/npc/AbstractNPC.java index a80cd09f..e1e1199d 100644 --- a/src/main/java/net/citizensnpcs/api/npc/AbstractNPC.java +++ b/src/main/java/net/citizensnpcs/api/npc/AbstractNPC.java @@ -64,18 +64,20 @@ public void setPersistent(String key, Object data) { } }; private String name; + private final NPCRegistry registry; private final List removedTraits = Lists.newArrayList(); private final List runnables = Lists.newArrayList(); private final SpeechController speechController = new SimpleSpeechController(this); protected final Map, Trait> traits = Maps.newHashMap(); - protected AbstractNPC(int id, String name) { + protected AbstractNPC(int id, String name, NPCRegistry registry) { if (name.length() > 16) { Messaging.severe("ID", id, "created with name length greater than 16, truncating", name, "to", name.substring(0, 15)); name = name.substring(0, 15); } this.id = id; + this.registry = registry; this.name = name; CitizensAPI.getTraitFactory().addDefaultTraits(this); } @@ -116,7 +118,7 @@ public void addTrait(Trait trait) { @Override public NPC clone() { - NPC copy = CitizensAPI.getNPCRegistry().createNPC(getTrait(MobType.class).getType(), getFullName()); + NPC copy = registry.createNPC(getTrait(MobType.class).getType(), getFullName()); DataKey key = new MemoryDataKey(); this.save(key); copy.load(key); @@ -146,7 +148,7 @@ public void destroy() { trait.onRemove(); } traits.clear(); - CitizensAPI.getNPCRegistry().deregister(this); + registry.deregister(this); } @Override