001 package org.bukkit;
002
003 import java.util.Map;
004
005 import com.google.common.collect.Maps;
006
007 /**
008 * Represents the various difficulty levels that are available.
009 */
010 public enum Difficulty {
011 /**
012 * Players regain health over time, hostile mobs don't spawn, the hunger
013 * bar does not deplete.
014 */
015 PEACEFUL(0),
016
017 /**
018 * Hostile mobs spawn, enemies deal less damage than on normal difficulty,
019 * the hunger bar does deplete and starving deals up to 5 hearts of
020 * damage. (Default value)
021 */
022 EASY(1),
023
024 /**
025 * Hostile mobs spawn, enemies deal normal amounts of damage, the hunger
026 * bar does deplete and starving deals up to 9.5 hearts of damage.
027 */
028 NORMAL(2),
029
030 /**
031 * Hostile mobs spawn, enemies deal greater damage than on normal
032 * difficulty, the hunger bar does deplete and starving can kill players.
033 */
034 HARD(3);
035
036 private final int value;
037 private final static Map<Integer, Difficulty> BY_ID = Maps.newHashMap();
038
039 private Difficulty(final int value) {
040 this.value = value;
041 }
042
043 /**
044 * Gets the difficulty value associated with this Difficulty.
045 *
046 * @return An integer value of this difficulty
047 * @deprecated Magic value
048 */
049 @Deprecated
050 public int getValue() {
051 return value;
052 }
053
054 /**
055 * Gets the Difficulty represented by the specified value
056 *
057 * @param value Value to check
058 * @return Associative {@link Difficulty} with the given value, or null if
059 * it doesn't exist
060 * @deprecated Magic value
061 */
062 @Deprecated
063 public static Difficulty getByValue(final int value) {
064 return BY_ID.get(value);
065 }
066
067 static {
068 for (Difficulty diff : values()) {
069 BY_ID.put(diff.value, diff);
070 }
071 }
072 }