package net.glowstone.entity.passive; import com.flowpowered.networking.Message; import com.google.common.collect.ImmutableBiMap; 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.apache.commons.lang3.Validate; import org.bukkit.Location; import org.bukkit.entity.EntityType; import org.bukkit.entity.Rabbit; import java.util.List; public class GlowRabbit extends GlowAnimal implements Rabbit { private static final ImmutableBiMap<Rabbit.Type, Integer> rabbitTypeIntegerMap = ImmutableBiMap.<Rabbit.Type, Integer>builder() .put(Rabbit.Type.BROWN, 0) .put(Rabbit.Type.WHITE, 1) .put(Rabbit.Type.BLACK, 2) .put(Rabbit.Type.BLACK_AND_WHITE, 3) .put(Rabbit.Type.GOLD, 4) .put(Rabbit.Type.SALT_AND_PEPPER, 5) .put(Type.THE_KILLER_BUNNY, 99) .build(); private Rabbit.Type rabbitType = Rabbit.Type.BROWN; public GlowRabbit(Location location) { super(location, EntityType.RABBIT); setSize(0.3F, 0.7F); } @Override public Rabbit.Type getRabbitType() { return rabbitType; } @Override public void setRabbitType(Rabbit.Type type) { Validate.notNull(type, "Cannot set a null rabbit type!"); this.rabbitType = type; } @Override public List<Message> createSpawnMessage() { List<Message> messages = super.createSpawnMessage(); MetadataMap map = new MetadataMap(GlowRabbit.class); map.set(MetadataIndex.RABBIT_TYPE, rabbitTypeIntegerMap.get(this.getRabbitType()).byteValue()); messages.add(new EntityMetadataMessage(id, map.getEntryList())); return messages; } }