aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/cc/polyfrost/oneconfig/internal/config/InternalConfig.java
diff options
context:
space:
mode:
authorWyvest <45589059+Wyvest@users.noreply.github.com>2022-06-12 17:21:36 +0700
committerWyvest <45589059+Wyvest@users.noreply.github.com>2022-06-12 17:21:36 +0700
commit636df2c2b3b8e4aa0de64cf3b9aa5c089afd70a9 (patch)
tree521d8bc2f6e6f307f62e12a3deb7a05f0f72213e /src/main/java/cc/polyfrost/oneconfig/internal/config/InternalConfig.java
parentda5288bd5c80611acfeb1ebe33af1860f27f23fc (diff)
parentcf8b1a7f962ad3a9c31e6698fb7caf82aac42a18 (diff)
downloadOneConfig-636df2c2b3b8e4aa0de64cf3b9aa5c089afd70a9.tar.gz
OneConfig-636df2c2b3b8e4aa0de64cf3b9aa5c089afd70a9.tar.bz2
OneConfig-636df2c2b3b8e4aa0de64cf3b9aa5c089afd70a9.zip
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/internal/config/InternalConfig.java')
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/internal/config/InternalConfig.java47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/main/java/cc/polyfrost/oneconfig/internal/config/InternalConfig.java b/src/main/java/cc/polyfrost/oneconfig/internal/config/InternalConfig.java
new file mode 100644
index 0000000..f0b065e
--- /dev/null
+++ b/src/main/java/cc/polyfrost/oneconfig/internal/config/InternalConfig.java
@@ -0,0 +1,47 @@
+package cc.polyfrost.oneconfig.internal.config;
+
+import cc.polyfrost.oneconfig.config.Config;
+import cc.polyfrost.oneconfig.config.data.Mod;
+import cc.polyfrost.oneconfig.utils.JsonUtils;
+
+import java.io.*;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+public abstract class InternalConfig extends Config {
+ /**
+ * @param title title that is displayed
+ * @param configFile file where config is stored
+ */
+ public InternalConfig(String title, String configFile) {
+ super(new Mod(title, null), configFile);
+ }
+
+ @Override
+ public void init(Mod mod) {
+ if (new File("OneConfig/" + configFile).exists()) load();
+ else save();
+ generateOptionList(this, mod.defaultPage, mod, false);
+ mod.config = this;
+ this.mod = mod;
+ }
+
+ @Override
+ public void save() {
+ try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(Files.newOutputStream(Paths.get("OneConfig/" + configFile)), StandardCharsets.UTF_8))) {
+ writer.write(gson.toJson(this));
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void load() {
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(Files.newInputStream(Paths.get("OneConfig/" + configFile)), StandardCharsets.UTF_8))) {
+ deserializePart(JsonUtils.PARSER.parse(reader).getAsJsonObject(), this);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+}