package jk_5.nailed.server.map.gamerule; import jk_5.nailed.api.gamerule.EditableGameRule; import jk_5.nailed.api.gamerule.GameRuleKey; import jk_5.nailed.api.util.Checks; import javax.annotation.Nonnull; /** * No description given * * @author jk-5 */ public class DefaultEditableGameRule<T> implements EditableGameRule<T> { private final GameRuleKey<T> key; private T value; public DefaultEditableGameRule(@Nonnull GameRuleKey<T> key) { Checks.notNull(key, "key"); this.key = key; this.value = key.getDefaultValue(); } @Override public void setValue(@Nonnull T value) { this.value = value; } @Nonnull @Override public GameRuleKey<T> getKey() { return this.key; } @Nonnull @Override public T getValue() { if(this.key.getType() == GameRuleKey.Type.BOOL && this.value instanceof String){ //noinspection unchecked return (T) Boolean.valueOf((String) this.value); } return this.value; } @Override public String toString() { return "DefaultEditableGameRule{" + "key=" + key + ", value=" + value + '}'; } }