LoChat/surce/gradientnick/config/ConfigManager.java

129 lines
3.4 KiB
Java

package ru.lovar.gradientnick.config;
import org.bukkit.configuration.file.FileConfiguration;
import ru.lovar.gradientnick.GradientNick;
import java.util.List;
public class ConfigManager {
private final GradientNick plugin;
private FileConfiguration config;
public ConfigManager(GradientNick plugin) {
this.plugin = plugin;
plugin.saveDefaultConfig();
this.config = plugin.getConfig();
updateConfig();
}
public void reload() {
plugin.reloadConfig();
this.config = plugin.getConfig();
updateConfig();
}
private void updateConfig() {
boolean needsSave = false;
// Автодополнение новых параметров
if (!config.contains("prefix-blacklist")) {
config.set("prefix-blacklist", List.of("admin", "owner", "moder", "helper", "staff"));
needsSave = true;
}
if (!config.contains("history-max-entries")) {
config.set("history-max-entries", 10);
needsSave = true;
}
if (!config.contains("history-free-apply")) {
config.set("history-free-apply", true);
needsSave = true;
}
if (needsSave) {
plugin.saveConfig();
}
}
public int getMaxColors() {
return config.getInt("max-colors", 7);
}
public int getMinColors() {
return config.getInt("min-colors", 1);
}
public int getPricePerColor() {
return config.getInt("price-per-color", 50);
}
public int getPrefixPrice() {
return config.getInt("prefix-price", 500);
}
public boolean isPrefixOneTimePurchase() {
return config.getBoolean("prefix-one-time-purchase", true);
}
public int getAnimatedPrice() {
return config.getInt("animated-price", 1000);
}
public int getAnimatedIntervalTicks() {
return config.getInt("animated-interval-ticks", 5);
}
public int getColorCooldown() {
return config.getInt("color-cooldown", 60);
}
public int getPrefixCooldown() {
return config.getInt("prefix-cooldown", 300);
}
public int getMaxPrefixLength() {
return config.getInt("max-prefix-length", 7);
}
public String getPrefixFormat() {
return config.getString("prefix-format", "[{prefix}] ");
}
public boolean isGradientOnPrefix() {
return config.getBoolean("gradient-on-prefix", true);
}
public boolean isContinuousGradient() {
return config.getBoolean("continuous-gradient", true);
}
public boolean isUseLegacyRgbFormat() {
return config.getBoolean("use-legacy-rgb-format", true);
}
public String getStorageType() {
return config.getString("storage-type", "YAML");
}
public String getSqliteFile() {
return config.getString("sqlite-file", "data.db");
}
public List<String> getPrefixBlacklist() {
return config.getStringList("prefix-blacklist");
}
public boolean isPrefixBlacklisted(String prefix) {
String lowerPrefix = prefix.toLowerCase();
return getPrefixBlacklist().stream()
.anyMatch(blacklisted -> lowerPrefix.contains(blacklisted.toLowerCase()));
}
public int getHistoryMaxEntries() {
return config.getInt("history-max-entries", 10);
}
public boolean isHistoryFreeApply() {
return config.getBoolean("history-free-apply", true);
}
}