package net.glowstone.entity.meta;
import net.glowstone.util.TextMessage;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.BlockVector;
import org.bukkit.util.EulerAngle;
import java.util.UUID;
/**
* The types of values that entity metadata can contain.
*/
public enum MetadataType {
BYTE(Byte.class, false),
INT(Integer.class, false),
FLOAT(Float.class, false),
STRING(String.class, false),
CHAT(TextMessage.class, false),
ITEM(ItemStack.class, false),
BOOLEAN(Boolean.class, false),
VECTOR(EulerAngle.class, false),
POSITION(BlockVector.class, false),
OPTPOSITION(BlockVector.class, true),
DIRECTION(Integer.class, false),
OPTUUID(UUID.class, true),
BLOCKID(Integer.class, false);
private final Class<?> dataType;
private final boolean optional;
MetadataType(Class<?> dataType, boolean optional) {
this.dataType = dataType;
this.optional = optional;
}
public static MetadataType byId(int id) {
return values()[id];
}
public Class<?> getDataType() {
return dataType;
}
public int getId() {
return ordinal();
}
public boolean isOptional() {
return optional;
}
}