Citizens2/main/src/main/java/net/citizensnpcs/trait/versioned/LlamaTrait.java

96 lines
3.3 KiB
Java

package net.citizensnpcs.trait.versioned;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Llama;
import org.bukkit.entity.Llama.Color;
import net.citizensnpcs.api.command.Command;
import net.citizensnpcs.api.command.CommandContext;
import net.citizensnpcs.api.command.Requirements;
import net.citizensnpcs.api.command.exception.CommandException;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.api.persistence.Persist;
import net.citizensnpcs.api.trait.Trait;
import net.citizensnpcs.api.trait.TraitName;
import net.citizensnpcs.api.util.Messaging;
import net.citizensnpcs.trait.HorseModifiers;
import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.Util;
@TraitName("llamatrait")
public class LlamaTrait extends Trait {
@Persist
private Color color = Color.BROWN;
@Persist
private int strength = 3;
public LlamaTrait() {
super("llamatrait");
}
public Color getColor() {
return color;
}
public int getStrength() {
return strength;
}
@Override
public void run() {
if (npc.isSpawned() && npc.getEntity() instanceof Llama) {
Llama llama = (Llama) npc.getEntity();
llama.setColor(color);
llama.setStrength(strength);
}
}
public void setColor(Llama.Color color) {
this.color = color;
}
public void setStrength(int strength) {
this.strength = strength;
}
@Command(
aliases = { "npc" },
usage = "llama (--color color) (--strength strength)",
desc = "Sets llama modifiers",
modifiers = { "llama" },
min = 1,
max = 1,
permission = "citizens.npc.llama")
@Requirements(selected = true, ownership = true, types = { EntityType.LLAMA, EntityType.TRADER_LLAMA })
public static void llama(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
LlamaTrait trait = npc.getOrAddTrait(LlamaTrait.class);
String output = "";
if (args.hasValueFlag("color") || args.hasValueFlag("colour")) {
String colorRaw = args.getFlag("color", args.getFlag("colour"));
Color color = Util.matchEnum(Color.values(), colorRaw);
if (color == null) {
String valid = Util.listValuesPretty(Color.values());
throw new CommandException(Messages.INVALID_LLAMA_COLOR, valid);
}
trait.setColor(color);
output += Messaging.tr(Messages.LLAMA_COLOR_SET, Util.prettyEnum(color));
}
if (args.hasValueFlag("strength")) {
trait.setStrength(Math.max(1, Math.min(5, args.getFlagInteger("strength"))));
output += Messaging.tr(Messages.LLAMA_STRENGTH_SET, args.getFlagInteger("strength"));
}
if (args.hasFlag('c')) {
npc.getOrAddTrait(HorseModifiers.class).setCarryingChest(true);
output += Messaging.tr(Messages.HORSE_CHEST_SET) + " ";
} else if (args.hasFlag('b')) {
npc.getOrAddTrait(HorseModifiers.class).setCarryingChest(false);
output += Messaging.tr(Messages.HORSE_CHEST_UNSET) + " ";
}
if (!output.isEmpty()) {
Messaging.send(sender, output);
}
}
}