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
+ * The name returned by this method should generally follow Identifier conventions, but this is not enforced:
+ *
+ * This functionality is used for libraries like ModMenu, which depend on
+ * modids for configuration screen instances in their menu.
+ * If you are intending for this config to have a ModMenu config
+ * screen, this method should return the modid specified in your fabric.mod.json.
+ *
+ * If this method is not overridden, null will be returned, which
+ * means this config is not explicitly associated with any particular mod.
+ *
+ * @return the modid of the mod associated with this config, or null if none was specified
+ */
@Nullable
default String getModid() {
return null;
diff --git a/omega-config-base/src/main/java/draylar/omegaconfig/api/SyncableExclusionStrategy.java b/omega-config-base/src/main/java/draylar/omegaconfig/gson/SyncableExclusionStrategy.java
similarity index 85%
rename from omega-config-base/src/main/java/draylar/omegaconfig/api/SyncableExclusionStrategy.java
rename to omega-config-base/src/main/java/draylar/omegaconfig/gson/SyncableExclusionStrategy.java
index 679f543..58bee01 100644
--- a/omega-config-base/src/main/java/draylar/omegaconfig/api/SyncableExclusionStrategy.java
+++ b/omega-config-base/src/main/java/draylar/omegaconfig/gson/SyncableExclusionStrategy.java
@@ -1,7 +1,8 @@
-package draylar.omegaconfig.api;
+package draylar.omegaconfig.gson;
import com.google.gson.ExclusionStrategy;
import com.google.gson.FieldAttributes;
+import draylar.omegaconfig.api.Syncing;
public class SyncableExclusionStrategy implements ExclusionStrategy {
+ *