From 5406251f26f1555c1125ee33430bcb13aeab8eb0 Mon Sep 17 00:00:00 2001 From: fullwall Date: Tue, 30 Jul 2013 21:37:41 +0800 Subject: [PATCH] Allow , and : to be used for --at --- .../api/command/CommandContext.java | 3 ++- .../net/citizensnpcs/api/npc/AbstractNPC.java | 17 +++++++---------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/main/java/net/citizensnpcs/api/command/CommandContext.java b/src/main/java/net/citizensnpcs/api/command/CommandContext.java index 14fba004..7ec601db 100644 --- a/src/main/java/net/citizensnpcs/api/command/CommandContext.java +++ b/src/main/java/net/citizensnpcs/api/command/CommandContext.java @@ -265,7 +265,7 @@ public boolean matches(String command) { } public static Location parseLocation(Location currentLocation, String flag) throws CommandException { - String[] parts = Iterables.toArray(Splitter.on(':').omitEmptyStrings().split(flag), String.class); + String[] parts = Iterables.toArray(Splitter.on(LOCATION_SPLITTER).omitEmptyStrings().split(flag), String.class); if (parts.length > 0) { String worldName = currentLocation != null ? currentLocation.getWorld().getName() : ""; int x = 0, y = 0, z = 0; @@ -298,5 +298,6 @@ public static Location parseLocation(Location currentLocation, String flag) thro } private static final Pattern FLAG = Pattern.compile("^-[a-zA-Z]+$"); + private static final Pattern LOCATION_SPLITTER = Pattern.compile("[,]|[:]"); private static final Pattern VALUE_FLAG = Pattern.compile("^--[a-zA-Z0-9]+$"); } \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/api/npc/AbstractNPC.java b/src/main/java/net/citizensnpcs/api/npc/AbstractNPC.java index 15870209..d8317ffc 100644 --- a/src/main/java/net/citizensnpcs/api/npc/AbstractNPC.java +++ b/src/main/java/net/citizensnpcs/api/npc/AbstractNPC.java @@ -213,15 +213,16 @@ public DataKey apply(@Nullable String input) { Trait trait; if (hasTrait(clazz)) { trait = getTrait(clazz); + loadTrait(trait, traitKey); } else { trait = CitizensAPI.getTraitFactory().getTrait(clazz); if (trait == null) { Messaging.severeTr("citizens.notifications.trait-load-failed", traitKey.name(), getId()); continue; } + loadTrait(trait, traitKey); addTrait(trait); } - loadTrait(trait, traitKey); } } @@ -247,17 +248,10 @@ public void removeTrait(Class traitClass) { } } - private void removeTraitData(DataKey root) { - for (String name : removedTraits) { - root.removeKey("traits." + name); - } - removedTraits.clear(); - } - @Override public void save(DataKey root) { - root.setString("name", getFullName()); metadata.saveTo(root.getRelative("metadata")); + root.setString("name", getFullName()); // Save all existing traits StringBuilder traitNames = new StringBuilder(); @@ -272,7 +266,10 @@ public void save(DataKey root) { root.setString("traitnames", traitNames.substring(0, traitNames.length() - 1)); } else root.setString("traitnames", ""); - removeTraitData(root); + for (String name : removedTraits) { + root.removeKey("traits." + name); + } + removedTraits.clear(); } @Override