Citizens2/main/src/main/java/net/citizensnpcs/trait/SheepTrait.java

69 lines
1.7 KiB
Java

package net.citizensnpcs.trait;
import org.bukkit.DyeColor;
import org.bukkit.entity.Sheep;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerShearEntityEvent;
import net.citizensnpcs.api.CitizensAPI;
import net.citizensnpcs.api.persistence.Persist;
import net.citizensnpcs.api.trait.Trait;
import net.citizensnpcs.api.trait.TraitName;
/**
* Persists {@link Sheep} metadata.
*/
@TraitName("sheeptrait")
public class SheepTrait extends Trait {
@Persist("color")
private DyeColor color = DyeColor.WHITE;
@Persist("sheared")
private boolean sheared = false;
public SheepTrait() {
super("sheeptrait");
}
public DyeColor getColor() {
return color;
}
public boolean isSheared() {
return sheared;
}
@EventHandler
private void onPlayerShearEntityEvent(PlayerShearEntityEvent event) {
if (npc != null && npc.isProtected() && npc.equals(CitizensAPI.getNPCRegistry().getNPC(event.getEntity()))) {
event.setCancelled(true);
}
}
@Override
public void run() {
if (npc.getEntity() instanceof Sheep) {
Sheep sheep = (Sheep) npc.getEntity();
sheep.setSheared(sheared);
sheep.setColor(color);
}
}
/**
* @see Sheep#setColor(DyeColor)
*/
public void setColor(DyeColor color) {
this.color = color;
}
/**
* @see Sheep#setSheared(boolean)
*/
public void setSheared(boolean sheared) {
this.sheared = sheared;
}
public boolean toggleSheared() {
return sheared = !sheared;
}
}