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

81 lines
2.8 KiB
Java

package net.citizensnpcs.trait.versioned;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.MushroomCow;
import org.bukkit.entity.MushroomCow.Variant;
import net.citizensnpcs.api.command.Command;
import net.citizensnpcs.api.command.CommandContext;
import net.citizensnpcs.api.command.Flag;
import net.citizensnpcs.api.command.Requirements;
import net.citizensnpcs.api.command.exception.CommandException;
import net.citizensnpcs.api.command.exception.CommandUsageException;
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.trait.trait.MobType;
import net.citizensnpcs.api.util.Messaging;
import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.Util;
@TraitName("mushroomcowtrait")
public class MushroomCowTrait extends Trait {
@Persist("variant")
private Variant variant;
public MushroomCowTrait() {
super("mushroomcowtrait");
}
public Variant getVariant() {
return variant;
}
@Override
public void onSpawn() {
setVariant(variant);
}
@Override
public void run() {
if (variant != null && npc.getEntity() instanceof MushroomCow) {
((MushroomCow) npc.getEntity()).setVariant(variant);
}
}
public void setVariant(Variant variant) {
this.variant = variant;
}
@Command(
aliases = { "npc" },
usage = "mushroomcow (--variant [variant])",
desc = "",
modifiers = { "mushroomcow", "mooshroom" },
min = 1,
max = 1,
permission = "citizens.npc.mushroomcow")
@Requirements(selected = true, ownership = true)
public static void mushroomcow(CommandContext args, CommandSender sender, NPC npc,
@Flag("variant") MushroomCow.Variant variant) throws CommandException {
if (!npc.getOrAddTrait(MobType.class).getType().name().equals("MOOSHROOM")
&& !npc.getOrAddTrait(MobType.class).getType().name().equals("MUSHROOM_COW"))
throw new CommandUsageException();
MushroomCowTrait trait = npc.getOrAddTrait(MushroomCowTrait.class);
boolean hasArg = false;
if (args.hasValueFlag("variant")) {
if (variant == null) {
Messaging.sendErrorTr(sender, Messages.INVALID_MUSHROOM_COW_VARIANT,
Util.listValuesPretty(MushroomCow.Variant.values()));
return;
}
trait.setVariant(variant);
Messaging.sendTr(sender, Messages.MUSHROOM_COW_VARIANT_SET, npc.getName(), variant);
hasArg = true;
}
if (!hasArg)
throw new CommandUsageException();
}
}