config: Add forceDefault option

This commit is contained in:
Oliver
2025-07-19 19:21:54 +02:00
parent 19036ae0bc
commit 5f047bbf70
3 changed files with 18 additions and 5 deletions

View File

@@ -45,12 +45,16 @@ public class Config {
*/
public <T> T get(String path) {
ConfigField<?> field = fields.get(path);
if (field != null) {
Object value = values.computeIfAbsent(path, k -> field.defaultValue());
return (T) field.type().cast(value);
if (field == null) {
return null;
}
return null;
if (field.forceDefault()) {
return (T) field.defaultValue();
}
Object value = values.computeIfAbsent(path, k -> field.defaultValue());
return (T) field.type().cast(value);
}
/**

View File

@@ -8,6 +8,7 @@ package com.fancyinnovations.config;
* @param description a description of the field
* @param forRemoval indicates if this field should be removed
* @param defaultValue the default value of the field
* @param forceDefault indicates if the default value should be enforced
* @param type the class type of the field value
*/
public record ConfigField<T>(
@@ -15,6 +16,7 @@ public record ConfigField<T>(
String description,
boolean forRemoval,
T defaultValue,
boolean forceDefault,
Class<T> type
) {
}

View File

@@ -20,12 +20,13 @@ public final class FHConfiguration implements HologramConfiguration {
public void init() {
config = new Config(FancyHologramsPlugin.get().getFancyLogger(), CONFIG_FILE_PATH);
config.addField(new ConfigField<>(
MUTE_VERSION_NOTIFICATION_PATH,
"Whether version notifications are muted.",
false,
false,
false,
Boolean.class
));
@@ -34,6 +35,7 @@ public final class FHConfiguration implements HologramConfiguration {
"Whether autosave is enabled.",
false,
true,
false,
Boolean.class
));
@@ -42,6 +44,7 @@ public final class FHConfiguration implements HologramConfiguration {
"The interval at which autosave is performed in minutes.",
false,
15,
false,
Integer.class
));
@@ -50,6 +53,7 @@ public final class FHConfiguration implements HologramConfiguration {
"Whether the plugin should save holograms when they are changed.",
false,
true,
false,
Boolean.class
));
@@ -58,6 +62,7 @@ public final class FHConfiguration implements HologramConfiguration {
"The default visibility distance for holograms.",
false,
20,
false,
Integer.class
));
@@ -66,6 +71,7 @@ public final class FHConfiguration implements HologramConfiguration {
"Whether the plugin should register its commands.",
false,
true,
false,
Boolean.class
));
@@ -74,6 +80,7 @@ public final class FHConfiguration implements HologramConfiguration {
"The log level for the plugin (DEBUG, INFO, WARN, ERROR).",
false,
"INFO",
false,
String.class
));