package jas.spawner.modern.spawner.creature.handler.parsing.keys;
import java.util.EnumSet;
import java.util.HashMap;
/**
* Represent the readable Tags for OptionalSettings
*/
public enum Key {
/* Category Tags */
spawn("spawn", KeyParserSpawn.class), despawn("despawn", KeyParserDespawn.class), postspawn("postspawn",
KeyParserPostSpawn.class),
/* Properties */
sky("sky", KeyParserSky.class), block("block", KeyParserBlock.class), blockFoot("blockFoot",
KeyParserBlockFoot.class), light("light", KeyParserLight.class), entityCap("cap", KeyParserEntityCap.class), spawnRange(
"spawnRange", KeyParserSpawnRange.class), maxSpawnRange("maxSpawnRange", KeyParserMaxSpawnRange.class), despawnAge(
"despawnAge", KeyParserDespawnAge.class), spawnRate("spawnRate", KeyParserSpawnRate.class), blockRange(
"blockRange", KeyParserBlockRange.class), material("material", null), minSpawnHeight("minSpawnHeight",
KeyParserMinHeight.class), maxSpawnHeight("maxSpawnHeight", KeyParserMaxHeight.class), normal("normal",
KeyParserNormalCube.class), liquid("liquid", KeyParserLiquid.class), opaque("opaque",
KeyParserOpaqueBlock.class), solidSide("solidSide", KeyParserSolidSide.class), difficulty("difficulty",
KeyParserDifficulty.class), torchLight("torchLight", KeyParserTorchLight.class), ground("ground",
KeyParserGround.class), top("top", KeyParserTop.class), fill("fill", KeyParserFill.class), modspawn(
"modSpawn", KeyParserModSpawn.class), origin("origin", KeyParserOrigin.class), players("players",
KeyParserPlayers.class), entities("entities", KeyParserEntities.class), random("random",
KeyParserRandom.class), writenbt("writenbt", KeyParserWriteNBT.class), istamed("isTamed",
KeyParserIsTamed.class), istameable("isTameable", KeyParserIsTameable.class), location("location",
KeyParserLocation.class), dimension("dim", KeyParserDimension.class), biome("biome", KeyParserBiome.class),
/* Sub Tags */
blockRangeX("blockRangeX", null), blockRangeY("blockRangeY", null), blockRangeZ("blockRangeZ", null),
/**/
UNKNOWN("", null);
public final String key;
private static final HashMap<String, Key> lookupEnum = new HashMap<String, Key>();
static {
for (Key key : EnumSet.allOf(Key.class))
lookupEnum.put(key.key.toUpperCase(), key);
}
public KeyParser keyParser;
Key(String key, Class<? extends KeyParser> keyParserClass) {
this.key = key;
if (keyParserClass != null) {
try {
keyParser = keyParserClass.getConstructor(new Class[] { Key.class }).newInstance(new Object[] { this });
} catch (Exception exception) {
exception.printStackTrace();
return;
}
}
}
/**
* Gets the Key associated with the String. Is not case Sensitive
*
* @param string
* @return
*/
public static Key getKeybyString(String string) {
Key value = lookupEnum.get(string.toUpperCase());
if (value != null) {
return value;
} else {
return UNKNOWN;
}
}
}