diff --git a/ButtonCore/src/main/java/buttondevteam/lib/architecture/ButtonPlugin.java b/ButtonCore/src/main/java/buttondevteam/lib/architecture/ButtonPlugin.java
index e3b3abb..2eee783 100644
--- a/ButtonCore/src/main/java/buttondevteam/lib/architecture/ButtonPlugin.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/architecture/ButtonPlugin.java
@@ -32,7 +32,7 @@ public abstract class ButtonPlugin extends JavaPlugin {
try {
pluginDisable();
saveConfig();
- iConfig.resetConfigurationCache();
+ iConfig = null; //Clearing the hashmap is not enough, we need to update the section as well
TBMCChatAPI.RemoveCommands(this);
} catch (Exception e) {
TBMCCoreAPI.SendException("Error while disabling plugin " + getName() + "!", e);
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/architecture/Component.java b/ButtonCore/src/main/java/buttondevteam/lib/architecture/Component.java
index af58bb2..9f69ff9 100644
--- a/ButtonCore/src/main/java/buttondevteam/lib/architecture/Component.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/architecture/Component.java
@@ -9,7 +9,6 @@ import lombok.Getter;
import lombok.NonNull;
import lombok.experimental.var;
import lombok.val;
-import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
@@ -29,8 +28,6 @@ public abstract class Component {
@NonNull
private JavaPlugin plugin;
@NonNull
- private ConfigurationSection configSect;
- @NonNull
private @Getter
IHaveConfig config;
@@ -78,15 +75,7 @@ public abstract class Component {
}
if (register) {
component.plugin = plugin;
- if (plugin.getConfig() != null) { //Production
- var compconf = plugin.getConfig().getConfigurationSection("components");
- if (compconf == null) compconf = plugin.getConfig().createSection("components");
- component.configSect = compconf.getConfigurationSection(component.getClassName());
- if (component.configSect == null)
- component.configSect = compconf.createSection(component.getClassName());
- component.config = new IHaveConfig(component.configSect);
- } else //Testing
- component.config = new IHaveConfig(null);
+ updateConfig(plugin, component);
component.register(plugin);
components.put(component.getClass(), component);
if (ComponentManager.areComponentsEnabled() && component.shouldBeEnabled().get()) {
@@ -128,16 +117,28 @@ public abstract class Component {
if (!components.containsKey(component.getClass()))
throw new UnregisteredComponentException(component);
if (component.enabled == enabled) return; //Don't do anything
- if (component.enabled = enabled)
+ if (component.enabled = enabled) {
+ updateConfig(component.getPlugin(), component);
component.enable();
- else {
+ } else {
component.disable();
component.plugin.saveConfig();
- component.config.resetConfigurationCache();
TBMCChatAPI.RemoveCommands(component);
}
}
+ private static void updateConfig(JavaPlugin plugin, Component component) {
+ if (plugin.getConfig() != null) { //Production
+ var compconf = plugin.getConfig().getConfigurationSection("components");
+ if (compconf == null) compconf = plugin.getConfig().createSection("components");
+ var configSect = compconf.getConfigurationSection(component.getClassName());
+ if (configSect == null)
+ configSect = compconf.createSection(component.getClassName());
+ component.config = new IHaveConfig(configSect);
+ } else //Testing
+ component.config = new IHaveConfig(null);
+ }
+
/**
* Returns the currently registered components
*
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/architecture/ConfigData.java b/ButtonCore/src/main/java/buttondevteam/lib/architecture/ConfigData.java
index ff551aa..6ca2bbe 100644
--- a/ButtonCore/src/main/java/buttondevteam/lib/architecture/ConfigData.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/architecture/ConfigData.java
@@ -5,7 +5,7 @@ import lombok.RequiredArgsConstructor;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
-import javax.annotation.Nullable;
+import java.util.Objects;
import java.util.function.Function;
/**
@@ -20,7 +20,7 @@ public class ConfigData { //TODO: Save after a while
*/
private final ConfigurationSection config;
private final String path;
- private @Nullable final T def;
+ private final T def;
private final Object primitiveDef;
/**
* The parameter is of a primitive type as returned by {@link YamlConfiguration#get(String)}
@@ -53,11 +53,8 @@ public class ConfigData { //TODO: Save after a while
if (val == null) {
val = primitiveDef;
}
- if (val == primitiveDef && !saved) {
- if (def != null)
- set(def); //Save default value
- else if (config != null) //config==null: testing
- config.set(path, primitiveDef);
+ if (!saved && Objects.equals(val, primitiveDef)) { //String needs .equals()
+ set(def); //Save default value - def is always set
saved = true;
}
if (getter != null) {
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/architecture/IHaveConfig.java b/ButtonCore/src/main/java/buttondevteam/lib/architecture/IHaveConfig.java
index ef5d075..7a8c5e8 100644
--- a/ButtonCore/src/main/java/buttondevteam/lib/architecture/IHaveConfig.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/architecture/IHaveConfig.java
@@ -71,11 +71,4 @@ public final class IHaveConfig {
datamap.put(path, data = new ConfigData<>(config, path, getter.apply(primitiveDef), primitiveDef, getter, setter));
return (ConfigData) data;
}
-
- /**
- * Deletes the config cache. Call this on component/plugin disable so that new values are read.
- */ //Currently only the /component command reloads the config, otherwise this doesn't really have effect
- public void resetConfigurationCache() {
- datamap.clear();
- }
}