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)); } }