76 lines
2.3 KiB
Java
76 lines
2.3 KiB
Java
package net.citizensnpcs.trait.versioned;
|
|
|
|
import org.bukkit.command.CommandSender;
|
|
import org.bukkit.entity.Armadillo;
|
|
import org.bukkit.entity.EntityType;
|
|
|
|
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.util.Messaging;
|
|
import net.citizensnpcs.util.Messages;
|
|
import net.citizensnpcs.util.NMS;
|
|
|
|
@TraitName("armadillotrait")
|
|
public class ArmadilloTrait extends Trait {
|
|
@Persist
|
|
private ArmadilloState state = ArmadilloState.IDLE;
|
|
|
|
public ArmadilloTrait() {
|
|
super("armadillotrait");
|
|
}
|
|
|
|
public ArmadilloState getState() {
|
|
return state;
|
|
}
|
|
|
|
@Override
|
|
public void run() {
|
|
if (!npc.isSpawned() || !(npc.getEntity() instanceof Armadillo))
|
|
return;
|
|
NMS.setArmadilloState(npc.getEntity(), state);
|
|
}
|
|
|
|
public void setState(ArmadilloState state) {
|
|
this.state = state;
|
|
}
|
|
|
|
public enum ArmadilloState {
|
|
IDLE,
|
|
ROLLING_OUT,
|
|
ROLLING_UP,
|
|
SCARED;
|
|
}
|
|
|
|
@Command(
|
|
aliases = { "npc" },
|
|
usage = "armadillo --state [state]",
|
|
desc = "",
|
|
modifiers = { "armadillo" },
|
|
min = 1,
|
|
max = 1,
|
|
flags = "",
|
|
permission = "citizens.npc.armadillo")
|
|
@Requirements(selected = true, ownership = true, types = EntityType.ARMADILLO)
|
|
public static void allay(CommandContext args, CommandSender sender, NPC npc, @Flag("state") ArmadilloState state)
|
|
throws CommandException {
|
|
ArmadilloTrait trait = npc.getOrAddTrait(ArmadilloTrait.class);
|
|
String output = "";
|
|
if (state != null) {
|
|
trait.setState(state);
|
|
output += Messaging.tr(Messages.ARMADILLO_STATE_SET, state);
|
|
}
|
|
if (!output.isEmpty()) {
|
|
Messaging.send(sender, output.trim());
|
|
} else
|
|
throw new CommandUsageException();
|
|
}
|
|
}
|