diff --git a/src/main/java/cc/fascinated/config/Config.java b/src/main/java/cc/fascinated/config/Config.java new file mode 100644 index 0000000..349471a --- /dev/null +++ b/src/main/java/cc/fascinated/config/Config.java @@ -0,0 +1,69 @@ +package cc.fascinated.config; + +import cc.fascinated.Aetheria; +import lombok.Getter; +import org.bukkit.configuration.file.FileConfiguration; + +import java.util.HashMap; +import java.util.List; + +@Getter +public enum Config { + + INFLUXDB_URL("influxdb.url"), + INFLUXDB_TOKEN("influxdb.token"), + INFLUXDB_ORG("influxdb.org"), + INFLUXDB_BUCKET("influxdb.bucket"); + + /** + * The path of the lang in the lang.yml file. + */ + private final String path; + + Config(String path) { + this.path = path; + } + + /** + * Cache of the config values. + */ + private final HashMap cache = new HashMap<>(); + + /** + * The configuration. + */ + private final cc.fascinated.utils.io.Config config = new cc.fascinated.utils.io.Config(Aetheria.INSTANCE, "config.yml", null); + + /** + * Gets as an object. + * + * @return the string + */ + public Object get() { + return cache.computeIfAbsent(path, key -> { + FileConfiguration configuration = config.getFileConfiguration(); + if (configuration.get(path) == null) { + throw new IllegalArgumentException("Path " + path + " does not exist in the config.yml file."); + } + return configuration.get(path); + }); + } + + /** + * Gets as a string. + * + * @return the string + */ + public String getAsString() { + return (String) get(); + } + + /** + * Gets as a string list. + * + * @return the string list + */ + public List getAsStringList() { + return (List) get(); + } +} diff --git a/src/main/java/cc/fascinated/metrics/MetricManager.java b/src/main/java/cc/fascinated/metrics/MetricManager.java index 1a7c654..dc5811f 100644 --- a/src/main/java/cc/fascinated/metrics/MetricManager.java +++ b/src/main/java/cc/fascinated/metrics/MetricManager.java @@ -1,6 +1,7 @@ package cc.fascinated.metrics; import cc.fascinated.Aetheria; +import cc.fascinated.config.Config; import cc.fascinated.metrics.impl.server.*; import cc.fascinated.metrics.impl.system.CpuUsageMetric; import cc.fascinated.metrics.impl.world.WorldSizeMetric; @@ -31,11 +32,10 @@ public class MetricManager implements Listener { private static final List metrics = new ArrayList<>(); public MetricManager() { - FileConfiguration config = Aetheria.INSTANCE.getConfig(); - String url = config.getString("influxdb.url"); - String token = config.getString("influxdb.token"); - String org = config.getString("influxdb.org"); - String bucket = config.getString("influxdb.bucket"); + String url = Config.INFLUXDB_URL.getAsString(); + String token = Config.INFLUXDB_TOKEN.getAsString(); + String org = Config.INFLUXDB_ORG.getAsString(); + String bucket = Config.INFLUXDB_BUCKET.getAsString(); if (url == null || token == null || org == null || bucket == null) { log.error("InfluxDB configuration is missing"); diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml index 8ae4a32..f695a79 100644 --- a/src/main/resources/lang.yml +++ b/src/main/resources/lang.yml @@ -1,7 +1,7 @@ prefix: "AETHERIA ยป " admin-prefix: "[ADMIN] " -chat-format: "<<%chatcolor%>%name%> %message%" +chat-format: "<<%chatcolor%>%name%> %message%" blocked-message: "Your message has been blocked." blocked-message-alert: "%player% tried to send a blocked message: %message%"