From f5c48ee1dbdd0e309afa59987dcdca75a9c67f7b Mon Sep 17 00:00:00 2001 From: Wyvest Date: Thu, 4 Dec 2025 07:12:20 -0500 Subject: [PATCH 1/3] Proposal to fix #597 --- modules/config-impl/api/config-impl.api | 1 - .../oneconfig/api/config/v1/Config.java | 14 ++---------- modules/config/api/config.api | 9 ++++---- .../oneconfig/api/config/v1/Node.java | 6 ++++- .../oneconfig/api/config/v1/Property.java | 6 ++++- .../oneconfig/api/config/v1/Tree.java | 22 ++++++++++--------- 6 files changed, 29 insertions(+), 29 deletions(-) diff --git a/modules/config-impl/api/config-impl.api b/modules/config-impl/api/config-impl.api index 91e6cc320..fe876416f 100644 --- a/modules/config-impl/api/config-impl.api +++ b/modules/config-impl/api/config-impl.api @@ -25,7 +25,6 @@ public abstract class org/polyfrost/oneconfig/api/config/v1/Config { protected fun initialize (Z)V protected fun loadFrom (Ljava/lang/String;)V protected fun loadFrom (Ljava/nio/file/Path;)V - protected fun loadFromAndDelete (Ljava/nio/file/Path;)V protected fun makeTree ()Lorg/polyfrost/oneconfig/api/config/v1/Tree; public fun preload ()V protected fun restoreDefaults ()V diff --git a/modules/config-impl/src/main/java/org/polyfrost/oneconfig/api/config/v1/Config.java b/modules/config-impl/src/main/java/org/polyfrost/oneconfig/api/config/v1/Config.java index 5c5f5428c..299194118 100644 --- a/modules/config-impl/src/main/java/org/polyfrost/oneconfig/api/config/v1/Config.java +++ b/modules/config-impl/src/main/java/org/polyfrost/oneconfig/api/config/v1/Config.java @@ -200,7 +200,7 @@ protected void loadFrom(String id) { if (tree == null) initialize(false); Tree in = ConfigManager.active().get(id); if (in == null) return; - tree.overwrite(in, false); + tree.overwrite(in, false, true); } protected void loadFrom(Path p) { @@ -212,19 +212,9 @@ protected void loadFrom(Path p) { return; } if (in == null) return; - tree.overwrite(in, false); + tree.overwrite(in, false, true); } - protected void loadFromAndDelete(Path p) { - try { - loadFrom(p); - Files.deleteIfExists(p); - } catch (Exception e) { - ConfigManager.LOGGER.error("An unknown error occurred", e); - } - } - - protected Property getProperty(String option) { if (tree == null) initialize(false); return getProperty(tree, option); diff --git a/modules/config/api/config.api b/modules/config/api/config.api index fef4b2884..60a35f89e 100644 --- a/modules/config/api/config.api +++ b/modules/config/api/config.api @@ -14,7 +14,8 @@ public abstract class org/polyfrost/oneconfig/api/config/v1/Node { public fun getTitle ()Ljava/lang/String; public final fun hasMetadata ()Z public final fun hashCode ()I - public abstract fun overwrite (Lorg/polyfrost/oneconfig/api/config/v1/Node;Z)V + public fun overwrite (Lorg/polyfrost/oneconfig/api/config/v1/Node;Z)V + public abstract fun overwrite (Lorg/polyfrost/oneconfig/api/config/v1/Node;ZZ)V public final fun removeMetadata (Ljava/lang/String;)Z public fun setID (Ljava/lang/String;)V public fun setTitle (Ljava/lang/String;)V @@ -70,7 +71,7 @@ public abstract class org/polyfrost/oneconfig/api/config/v1/Property : org/polyf public final fun isArray ()Z public final fun isPrimitive ()Z public fun onDisplayChange (Ljava/util/function/Consumer;)V - public fun overwrite (Lorg/polyfrost/oneconfig/api/config/v1/Node;Z)V + public fun overwrite (Lorg/polyfrost/oneconfig/api/config/v1/Node;ZZ)V public static fun recast (Lorg/polyfrost/oneconfig/api/config/v1/Property;)Lorg/polyfrost/oneconfig/api/config/v1/Property; public fun revaluateDisplay ()V public final fun set (Ljava/lang/Object;)V @@ -112,8 +113,8 @@ public class org/polyfrost/oneconfig/api/config/v1/Tree : org/polyfrost/oneconfi public fun getProp ([Ljava/lang/String;)Lorg/polyfrost/oneconfig/api/config/v1/Property; public fun onAll (Ljava/util/function/BiConsumer;)V public fun onAllProps (Ljava/util/function/BiConsumer;)V - public fun overwrite (Lorg/polyfrost/oneconfig/api/config/v1/Node;Z)V - public fun overwrite (Lorg/polyfrost/oneconfig/api/config/v1/Tree;Ljava/util/function/Function;Z)V + public fun overwrite (Lorg/polyfrost/oneconfig/api/config/v1/Node;ZZ)V + public fun overwrite (Lorg/polyfrost/oneconfig/api/config/v1/Tree;Ljava/util/function/Function;ZZ)V public fun put (Lorg/polyfrost/oneconfig/api/config/v1/Node;)Lorg/polyfrost/oneconfig/api/config/v1/Tree; public fun put ([Lorg/polyfrost/oneconfig/api/config/v1/Node;)Lorg/polyfrost/oneconfig/api/config/v1/Tree; public fun set (Ljava/lang/String;Lorg/polyfrost/oneconfig/api/config/v1/Node;)Lorg/polyfrost/oneconfig/api/config/v1/Tree; diff --git a/modules/config/src/main/java/org/polyfrost/oneconfig/api/config/v1/Node.java b/modules/config/src/main/java/org/polyfrost/oneconfig/api/config/v1/Node.java index 5cc1d3333..e3f4706ea 100644 --- a/modules/config/src/main/java/org/polyfrost/oneconfig/api/config/v1/Node.java +++ b/modules/config/src/main/java/org/polyfrost/oneconfig/api/config/v1/Node.java @@ -187,6 +187,10 @@ public final boolean hasMetadata() { return metadata != null; } + public void overwrite(Node with, boolean preserveMissingOptions) { + overwrite(with, preserveMissingOptions, false); + } + /** * Overwrite all data in this node with the data from another node. *