package net.glowstone.entity.passive;
import com.flowpowered.networking.Message;
import net.glowstone.entity.GlowAnimal;
import net.glowstone.entity.meta.MetadataIndex;
import net.glowstone.entity.meta.MetadataMap;
import net.glowstone.net.message.play.entity.EntityMetadataMessage;
import org.bukkit.DyeColor;
import org.bukkit.Location;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Sheep;
import java.util.List;
public class GlowSheep extends GlowAnimal implements Sheep {
private boolean sheared = false;
private DyeColor color = DyeColor.WHITE;
public GlowSheep(Location location) {
super(location, EntityType.SHEEP);
setSize(0.9F, 1.3F);
}
@Override
public boolean isSheared() {
return sheared;
}
@Override
public void setSheared(boolean sheared) {
this.sheared = sheared;
}
@Override
public DyeColor getColor() {
return color;
}
@Override
public void setColor(DyeColor dyeColor) {
this.color = dyeColor;
}
@Override
public List<Message> createSpawnMessage() {
List<Message> messages = super.createSpawnMessage();
MetadataMap map = new MetadataMap(GlowSheep.class);
map.set(MetadataIndex.SHEEP_DATA, getColorByte());
messages.add(new EntityMetadataMessage(id, map.getEntryList()));
return messages;
}
private byte getColorByte() {
return (byte) (this.getColor().getData() & (sheared ? 0x10 : 0x0F));
}
}