diff --git a/omega-config-base/src/main/java/draylar/omegaconfig/OmegaConfig.java b/omega-config-base/src/main/java/draylar/omegaconfig/OmegaConfig.java index d354012..4f27155 100644 --- a/omega-config-base/src/main/java/draylar/omegaconfig/OmegaConfig.java +++ b/omega-config-base/src/main/java/draylar/omegaconfig/OmegaConfig.java @@ -4,7 +4,7 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import draylar.omegaconfig.api.Comment; import draylar.omegaconfig.api.Config; -import draylar.omegaconfig.api.SyncableExclusionStrategy; +import draylar.omegaconfig.gson.SyncableExclusionStrategy; import draylar.omegaconfig.exception.NoValidConstructorException; import io.netty.buffer.Unpooled; import net.fabricmc.api.ModInitializer; diff --git a/omega-config-base/src/main/java/draylar/omegaconfig/api/Comment.java b/omega-config-base/src/main/java/draylar/omegaconfig/api/Comment.java index 5d48fb7..d6560ed 100644 --- a/omega-config-base/src/main/java/draylar/omegaconfig/api/Comment.java +++ b/omega-config-base/src/main/java/draylar/omegaconfig/api/Comment.java @@ -5,6 +5,13 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +/** + * Represents a description on a config entry. + * + *

+ * When a configuration is serialized, any field elements with the {@link Comment} annotation + * will be prefixed with a // comment on the previous line, with the value specified by this annotation. + */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Comment { diff --git a/omega-config-base/src/main/java/draylar/omegaconfig/api/Config.java b/omega-config-base/src/main/java/draylar/omegaconfig/api/Config.java index c2d49ea..8fa5210 100644 --- a/omega-config-base/src/main/java/draylar/omegaconfig/api/Config.java +++ b/omega-config-base/src/main/java/draylar/omegaconfig/api/Config.java @@ -2,7 +2,6 @@ package draylar.omegaconfig.api; import draylar.omegaconfig.OmegaConfig; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.StringTag; import org.jetbrains.annotations.Nullable; import java.util.Arrays; @@ -14,19 +13,12 @@ public interface Config { * Useful for saving modified values during runtime. */ default void save() { - - } - - /** - * @return an instance of this Config class with all default values. - */ - default Config getDefault() { - return null; + OmegaConfig.writeConfig((Class) getClass(), this); } default CompoundTag writeSyncingTag() { CompoundTag tag = new CompoundTag(); - tag.putString("ConfigName", getFileName()); + tag.putString("ConfigName", getName()); // all config vs. individual fields if(Arrays.stream(getClass().getAnnotations()).anyMatch(annotation -> annotation instanceof Syncing)) { @@ -53,8 +45,34 @@ public interface Config { return hasSyncingField | classSyncs; } - String getFileName(); + /** + * Returns the name of this config, which is used for the name of the config file saved to disk, and syncing. + * + *

+ * The name returned by this method should generally follow Identifier conventions, but this is not enforced: + *