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

81 lines
2.8 KiB
Java
Raw Normal View History

package net.citizensnpcs.trait.versioned;
2019-12-11 04:25:10 +01:00
2022-07-09 19:53:34 +02:00
import org.bukkit.command.CommandSender;
2019-12-11 04:25:10 +01:00
import org.bukkit.entity.MushroomCow;
import org.bukkit.entity.MushroomCow.Variant;
2022-07-09 19:53:34 +02:00
import net.citizensnpcs.api.command.Command;
import net.citizensnpcs.api.command.CommandContext;
import net.citizensnpcs.api.command.Flag;
2022-07-09 19:53:34 +02:00
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;
2019-12-11 04:25:10 +01:00
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;
2022-07-09 19:53:34 +02:00
import net.citizensnpcs.api.util.Messaging;
import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.Util;
2019-12-11 04:25:10 +01:00
@TraitName("mushroomcowtrait")
public class MushroomCowTrait extends Trait {
@Persist("variant")
private Variant variant;
public MushroomCowTrait() {
super("mushroomcowtrait");
}
2020-10-07 13:16:41 +02:00
public Variant getVariant() {
return variant;
}
2019-12-11 04:25:10 +01:00
@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;
}
2022-07-09 19:53:34 +02:00
@Command(
aliases = { "npc" },
2024-02-29 18:03:30 +01:00
usage = "mushroomcow (--variant [variant])",
desc = "",
modifiers = { "mushroomcow", "mooshroom" },
2022-07-09 19:53:34 +02:00
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();
2022-07-09 19:53:34 +02:00
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)
2022-07-09 19:53:34 +02:00
throw new CommandUsageException();
}
2019-12-11 04:25:10 +01:00
}