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

67 lines
2.0 KiB
Java

package net.citizensnpcs.trait.versioned;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.EnderDragon;
import org.bukkit.entity.EnderDragon.Phase;
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.npc.NPC;
import net.citizensnpcs.api.persistence.Persist;
import net.citizensnpcs.api.trait.Trait;
import net.citizensnpcs.api.trait.TraitName;
@TraitName("enderdragontrait")
public class EnderDragonTrait extends Trait {
@Persist
private EnderDragon.Phase phase;
public EnderDragonTrait() {
super("enderdragontrait");
}
public Phase getPhase() {
return phase;
}
@Override
public void onSpawn() {
updateModifiers();
}
public void setPhase(Phase phase) {
this.phase = phase;
updateModifiers();
}
private void updateModifiers() {
if (!(npc.getEntity() instanceof EnderDragon))
return;
EnderDragon dragon = (EnderDragon) npc.getEntity();
if (phase != null) {
dragon.setPhase(phase);
}
}
@Command(
aliases = { "npc" },
usage = "enderdragon --phase [phase]",
desc = "Control enderdragon modifiers",
modifiers = { "enderdragon" },
min = 1,
max = 1,
permission = "citizens.npc.enderdragon")
@Requirements(ownership = true, selected = true, types = EntityType.ENDER_DRAGON)
public static void enderdragon(CommandContext args, CommandSender sender, NPC npc,
@Flag("phase") EnderDragon.Phase phase) throws CommandException {
EnderDragonTrait trait = npc.getOrAddTrait(EnderDragonTrait.class);
if (phase != null) {
trait.setPhase(phase);
}
}
}