mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2024-11-24 11:38:26 +01:00
Add -r flag to /npc trat
This commit is contained in:
parent
f8afd032a8
commit
ec3182cc01
@ -510,13 +510,28 @@ public class NPCCommands {
|
||||
modifiers = { "trait" },
|
||||
min = 2,
|
||||
max = 2,
|
||||
flags = "r",
|
||||
permission = "npc.trait")
|
||||
public void trait(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
|
||||
Trait trait = CitizensAPI.getTraitFactory().getTrait(args.getString(1));
|
||||
String traitName = args.getString(1);
|
||||
if (!sender.hasPermission("citizens.npc.trait." + traitName))
|
||||
throw new NoPermissionsException();
|
||||
if (args.hasFlag('r')) {
|
||||
Class<? extends Trait> clazz = CitizensAPI.getTraitFactory().getTraitClass(args.getString(1));
|
||||
if (clazz == null)
|
||||
throw new CommandException("Trait not found.");
|
||||
if (!npc.hasTrait(clazz))
|
||||
throw new CommandException("The NPC doesn't have that trait.");
|
||||
npc.removeTrait(clazz);
|
||||
Messaging.sendF(sender, ChatColor.GREEN + "Trait %s removed successfully.",
|
||||
StringHelper.wrap(traitName));
|
||||
return;
|
||||
}
|
||||
Trait trait = CitizensAPI.getTraitFactory().getTrait(traitName);
|
||||
if (trait == null)
|
||||
throw new CommandException("Trait not found.");
|
||||
npc.addTrait(trait);
|
||||
Messaging.sendF(sender, ChatColor.GREEN + "Trait %s added successfully.",
|
||||
StringHelper.wrap(trait.getName()));
|
||||
StringHelper.wrap(traitName));
|
||||
}
|
||||
}
|
@ -35,7 +35,6 @@ import com.google.common.collect.Sets;
|
||||
public class CitizensTraitFactory implements TraitFactory {
|
||||
private final Map<String, Class<? extends Trait>> registered = Maps.newHashMap();
|
||||
|
||||
// TODO: find a way to avoid naming conflicts
|
||||
public CitizensTraitFactory() {
|
||||
registerTrait(TraitInfo.create(Age.class).withName("age"));
|
||||
registerTrait(TraitInfo.create(CurrentLocation.class).withName("location"));
|
||||
@ -103,9 +102,16 @@ public class CitizensTraitFactory implements TraitFactory {
|
||||
return (T) create(clazz);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends Trait> getTraitClass(String name) {
|
||||
return registered.get(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerTrait(TraitInfo info) {
|
||||
Preconditions.checkNotNull(info, "info cannot be null");
|
||||
if (registered.containsKey(info))
|
||||
throw new IllegalArgumentException("trait name already registered");
|
||||
registered.put(info.getTraitName(), info.getTraitClass());
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user