package in.twizmwaz.cardinal.settings; import in.twizmwaz.cardinal.Cardinal; import org.bukkit.entity.Player; import java.util.List; public class Setting { private List<String> names; private String description; private List<SettingValue> values; public Setting(List<String> names, String description, List<SettingValue> values) { this.names = names; this.description = description; this.values = values; boolean hasDefault = false; for (SettingValue value : values) { if (value.isDefault()) hasDefault = true; } if (!hasDefault) values.get(0).setDefault(true); Settings.addSetting(this); } public List<String> getNames() { return names; } public List<SettingValue> getValues() { return values; } public SettingValue getSettingValueByName(String name) { for (SettingValue settingValue : values) { if (settingValue.getValue().equalsIgnoreCase(name)) return settingValue; } for (SettingValue settingValue : values) { if (settingValue.getValue().toLowerCase().startsWith(name.toLowerCase())) return settingValue; } return null; } public boolean containsValue(String value) { for (SettingValue settingValue : values) { if (settingValue.getValue().equalsIgnoreCase(value)) return true; } for (SettingValue settingValue : values) { if (settingValue.getValue().toLowerCase().startsWith(value.toLowerCase())) return true; } return false; } public SettingValue getValueByPlayer(Player player) { if (Cardinal.getCardinalDatabase().get(player, "setting_" + this.names.get(0)).equals("")) { SettingValue defaultValue = null; for (SettingValue value : this.values) { if (value.isDefault()) defaultValue = value; } if (defaultValue != null) Cardinal.getCardinalDatabase().put(player, "setting_" + this.names.get(0), defaultValue.getValue()); } return this.getSettingValueByName(Cardinal.getCardinalDatabase().get(player, "setting_" + this.names.get(0))); } public void setValueByPlayer(Player player, SettingValue value) { Cardinal.getCardinalDatabase().put(player, "setting_" + this.names.get(0), value.getValue()); } public String getDescription() { return description; } }