package net.glowstone.io.entity; import com.google.common.collect.ImmutableMap; import net.glowstone.entity.passive.GlowRabbit; import net.glowstone.util.nbt.CompoundTag; import org.bukkit.Location; import org.bukkit.entity.EntityType; import org.bukkit.entity.Rabbit.Type; import java.util.Map; class RabbitStore extends AgeableStore<GlowRabbit> { private final Map<Integer, Type> rabbitTypeMap = ImmutableMap.<Integer, Type>builder() .put(0, Type.BROWN) .put(1, Type.WHITE) .put(2, Type.BLACK) .put(3, Type.BLACK_AND_WHITE) .put(4, Type.GOLD) .put(5, Type.SALT_AND_PEPPER) .put(99, Type.THE_KILLER_BUNNY) .build(); private final Map<Type, Integer> rabbitTypeIntegerMap = ImmutableMap.<Type, Integer>builder() .put(Type.BROWN, 0) .put(Type.WHITE, 1) .put(Type.BLACK, 2) .put(Type.BLACK_AND_WHITE, 3) .put(Type.GOLD, 4) .put(Type.SALT_AND_PEPPER, 5) .put(Type.THE_KILLER_BUNNY, 99) .build(); public RabbitStore() { super(GlowRabbit.class, EntityType.RABBIT); } @Override public GlowRabbit createEntity(Location location, CompoundTag compound) { return new GlowRabbit(location); } @Override public void load(GlowRabbit entity, CompoundTag compound) { super.load(entity, compound); if (compound.isInt("RabbitType")) { Type rabbitType; int rabbitId = compound.getInt("RabbitType"); if (rabbitTypeMap.containsKey(rabbitId)) { rabbitType = rabbitTypeMap.get(rabbitId); } else { rabbitType = Type.BROWN; } entity.setRabbitType(rabbitType); } // TODO "MoreCarrotTicks" -> int } @Override public void save(GlowRabbit entity, CompoundTag tag) { super.save(entity, tag); Type rabbitType = entity.getRabbitType(); if (rabbitType == null) { rabbitType = Type.BROWN; } tag.putInt("RabbitType", rabbitTypeIntegerMap.get(rabbitType)); } }