From 024efc76909ec1ace496d5c0425256576f0d590a Mon Sep 17 00:00:00 2001 From: CarmJos Date: Thu, 6 Jan 2022 16:19:15 +0800 Subject: [PATCH] =?UTF-8?q?[v1.1.3]=20=E7=89=88=E6=9C=AC=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=20-=20[U]=20=E9=87=87=E7=94=A8=20ConfigUpdater=20=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=EF=BC=8C=E8=A7=A3=E5=86=B3config=E4=B8=AD=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=E4=B8=A2=E5=A4=B1=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- easyplugin-all/pom.xml | 2 +- easyplugin-command/pom.xml | 2 +- easyplugin-common/pom.xml | 2 +- easyplugin-configuration/pom.xml | 69 +++++++++++++++- .../configuration/cast/ConfigStringCast.java | 5 +- .../configuration/file/FileConfig.java | 78 ++++++++++++++----- .../configuration/file/FileConfigValue.java | 25 +++++- .../configuration/values/ConfigValue.java | 15 ++-- .../configuration/values/ConfigValueList.java | 5 +- .../configuration/values/ConfigValueMap.java | 5 +- easyplugin-database/pom.xml | 4 +- easyplugin-gui/pom.xml | 2 +- easyplugin-lp/pom.xml | 2 +- easyplugin-main/pom.xml | 2 +- easyplugin-placeholderapi/pom.xml | 2 +- easyplugin-vault/pom.xml | 2 +- pom.xml | 2 +- 17 files changed, 173 insertions(+), 51 deletions(-) diff --git a/easyplugin-all/pom.xml b/easyplugin-all/pom.xml index 1edb215..a299ad3 100644 --- a/easyplugin-all/pom.xml +++ b/easyplugin-all/pom.xml @@ -5,7 +5,7 @@ easyplugin-parent cc.carm.lib - 1.1.2 + 1.1.3 4.0.0 diff --git a/easyplugin-command/pom.xml b/easyplugin-command/pom.xml index 48aa4cb..3a91116 100644 --- a/easyplugin-command/pom.xml +++ b/easyplugin-command/pom.xml @@ -5,7 +5,7 @@ easyplugin-parent cc.carm.lib - 1.1.2 + 1.1.3 4.0.0 diff --git a/easyplugin-common/pom.xml b/easyplugin-common/pom.xml index ee8c071..49482cb 100644 --- a/easyplugin-common/pom.xml +++ b/easyplugin-common/pom.xml @@ -5,7 +5,7 @@ easyplugin-parent cc.carm.lib - 1.1.2 + 1.1.3 4.0.0 diff --git a/easyplugin-configuration/pom.xml b/easyplugin-configuration/pom.xml index cfd4a78..698d2cc 100644 --- a/easyplugin-configuration/pom.xml +++ b/easyplugin-configuration/pom.xml @@ -5,7 +5,7 @@ easyplugin-parent cc.carm.lib - 1.1.2 + 1.1.3 4.0.0 @@ -57,6 +57,73 @@ ${project.parent.version} provided + + + + com.tchristofferson + ConfigUpdater + 2.0-SNAPSHOT + true + compile + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + org.apache.maven.plugins + maven-source-plugin + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.3 + + + package + + shade + + + false + + + + + + + com.tchristofferson.configupdater + cc.carm.lib.easyplugin.configuration.updater + + + + + *:* + + META-INF/MANIFEST.MF + META-INF/*.txt + + + + + + + + \ No newline at end of file diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/cast/ConfigStringCast.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/cast/ConfigStringCast.java index 8a8a065..db34d90 100644 --- a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/cast/ConfigStringCast.java +++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/cast/ConfigStringCast.java @@ -49,10 +49,7 @@ public class ConfigStringCast extends FileConfigCachedValue { } public void set(@Nullable String value) { - getSourceOptional().ifPresent(source -> { - source.getConfig().set(getSectionName(), value); - source.save(); - }); + setIfPresent(value, true); } } diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/file/FileConfig.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/file/FileConfig.java index 26469ac..9bcc18d 100644 --- a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/file/FileConfig.java +++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/file/FileConfig.java @@ -1,15 +1,17 @@ package cc.carm.lib.easyplugin.configuration.file; +import com.tchristofferson.configupdater.ConfigUpdater; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.plugin.java.JavaPlugin; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.io.File; -import java.io.IOException; +import java.io.*; import java.util.function.Supplier; +@SuppressWarnings("ResultOfMethodCallIgnored") public class FileConfig { public static Supplier pluginConfiguration = null; @@ -28,34 +30,69 @@ public class FileConfig { private long updateTime; private final JavaPlugin plugin; + private final File fileFolder; private final String fileName; - + private final String resourcePath; private File file; private FileConfiguration config; - public FileConfig(final JavaPlugin plugin) { + public FileConfig(@NotNull JavaPlugin plugin) throws IOException { this(plugin, "config.yml"); } - public FileConfig(final JavaPlugin plugin, final String name) { + public FileConfig(@NotNull JavaPlugin plugin, + @NotNull String fileName) throws IOException { + this(plugin, fileName, fileName); + } + + public FileConfig(@NotNull JavaPlugin plugin, @NotNull String resourcePath, + @NotNull String fileName) throws IOException { + this(plugin, resourcePath, plugin.getDataFolder(), fileName); + } + + public FileConfig(@NotNull JavaPlugin plugin, @NotNull String resourcePath, + @NotNull File fileFolder, @NotNull String fileName) throws IOException { this.plugin = plugin; - this.fileName = name; + this.resourcePath = resourcePath; + this.fileFolder = fileFolder; + this.fileName = fileName; + initFile(); } - private void initFile() { - this.updateTime = System.currentTimeMillis(); - this.file = new File(plugin.getDataFolder(), fileName); - if (!this.file.exists()) { - if (!this.file.getParentFile().exists()) { - boolean success = this.file.getParentFile().mkdirs(); + private void initFile() throws IOException { + if (!getFileFolder().exists()) getFileFolder().mkdirs(); + this.file = new File(getFileFolder(), fileName); + + if (!file.exists()) { + InputStream resourceStream = plugin.getResource(resourcePath); + if (resourceStream == null) { + throw new IOException("The resource " + resourcePath + " cannot find in " + plugin.getName() + " !"); } - plugin.saveResource(fileName, true); + + OutputStream out = new FileOutputStream(file); + byte[] buffer = new byte[1024]; + + int readBytes; + while ((readBytes = resourceStream.read(buffer)) > 0) { + out.write(buffer, 0, readBytes); + } + + out.close(); + resourceStream.close(); + + ConfigUpdater.update(plugin, resourcePath, file); // Save comments } + + this.updateTime = System.currentTimeMillis(); this.config = YamlConfiguration.loadConfiguration(this.file); } + public File getFileFolder() { + return fileFolder; + } + public File getFile() { return file; } @@ -64,15 +101,16 @@ public class FileConfig { return config; } - public void save() { - try { - getConfig().save(getFile()); - } catch (IOException e) { - e.printStackTrace(); - } + public JavaPlugin getPlugin() { + return plugin; } - public void reload() { + public void save() throws IOException { + getConfig().save(getFile()); + ConfigUpdater.update(plugin, resourcePath, file); // Save comments + } + + public void reload() throws IOException { this.updateTime = System.currentTimeMillis(); if (getFile().exists()) { this.config = YamlConfiguration.loadConfiguration(getFile()); diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/file/FileConfigValue.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/file/FileConfigValue.java index d8aac74..1d1205b 100644 --- a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/file/FileConfigValue.java +++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/file/FileConfigValue.java @@ -4,6 +4,7 @@ import org.bukkit.configuration.file.FileConfiguration; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Map; import java.util.Optional; public abstract class FileConfigValue { @@ -25,7 +26,29 @@ public abstract class FileConfigValue { } public void save() { - getSourceOptional().ifPresent(FileConfig::save); + getSourceOptional().ifPresent(fileConfig -> { + try { + fileConfig.save(); + } catch (Exception ex) { + fileConfig.getPlugin().getLogger().severe("Could not save the " + fileConfig.getFile() + " ."); + ex.printStackTrace(); + } + }); + } + + public void setIfPresent(@Nullable Object value, boolean save) { + getConfigOptional().ifPresent(configuration -> configuration.set(getSectionName(), value)); + if (save) save(); + } + + public void createSection(Map values) { + getConfigOptional().ifPresent(configuration -> { + if (values == null) { + configuration.set(getSectionName(), null); + } else { + configuration.createSection(getSectionName(), values); + } + }); } public @Nullable FileConfig getSource() { diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValue.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValue.java index 948e704..0bd66fb 100644 --- a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValue.java +++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValue.java @@ -32,8 +32,14 @@ public class ConfigValue extends FileConfigValue { public V get() { return getConfigOptional() - .map(config -> castValue(config.get(getSectionName()), clazz, this.defaultValue)) - .orElse(setDefault()); // 如果没有默认值,就把配置写进去,便于配置 + .map(config -> { + if (config.contains(getSectionName())) { + return castValue(config.get(getSectionName()), clazz, this.defaultValue); + } else { + return setDefault(); // 如果没有默认值,就把配置写进去,便于配置 + } + }) + .orElse(defaultValue); } public @NotNull Optional getOptional() { @@ -41,10 +47,7 @@ public class ConfigValue extends FileConfigValue { } public void set(@Nullable V value) { - getSourceOptional().ifPresent(source -> { - source.getConfig().set(getSectionName(), value); - source.save(); - }); + setIfPresent(value, true); } public V setDefault() { diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValueList.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValueList.java index 32ffcfa..80a823a 100644 --- a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValueList.java +++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValueList.java @@ -57,10 +57,7 @@ public class ConfigValueList extends FileConfigValue { } public void set(@Nullable ArrayList value) { - getSourceOptional().ifPresent(source -> { - source.getConfig().set(getSectionName(), value); - source.save(); - }); + setIfPresent(value, true); } diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValueMap.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValueMap.java index 9087c6d..6a61485 100644 --- a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValueMap.java +++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValueMap.java @@ -50,10 +50,7 @@ public class ConfigValueMap extends FileConfigCachedValue> { } public void set(@Nullable Map valuesMap) { - getSourceOptional().ifPresent(source -> { - source.getConfig().createSection(getSectionName(), valuesMap); - source.save(); - }); + createSection(valuesMap); } } diff --git a/easyplugin-database/pom.xml b/easyplugin-database/pom.xml index 8c26e1c..bdef3b3 100644 --- a/easyplugin-database/pom.xml +++ b/easyplugin-database/pom.xml @@ -5,7 +5,7 @@ easyplugin-parent cc.carm.lib - 1.1.2 + 1.1.3 4.0.0 @@ -54,7 +54,7 @@ cc.carm.lib easysql-beecp - 0.2.4 + 0.2.5 true compile diff --git a/easyplugin-gui/pom.xml b/easyplugin-gui/pom.xml index ccab500..3ad5797 100644 --- a/easyplugin-gui/pom.xml +++ b/easyplugin-gui/pom.xml @@ -5,7 +5,7 @@ easyplugin-parent cc.carm.lib - 1.1.2 + 1.1.3 4.0.0 diff --git a/easyplugin-lp/pom.xml b/easyplugin-lp/pom.xml index 5f40d65..8d938a5 100644 --- a/easyplugin-lp/pom.xml +++ b/easyplugin-lp/pom.xml @@ -5,7 +5,7 @@ easyplugin-parent cc.carm.lib - 1.1.2 + 1.1.3 4.0.0 diff --git a/easyplugin-main/pom.xml b/easyplugin-main/pom.xml index 322c8d4..3061943 100644 --- a/easyplugin-main/pom.xml +++ b/easyplugin-main/pom.xml @@ -5,7 +5,7 @@ easyplugin-parent cc.carm.lib - 1.1.2 + 1.1.3 4.0.0 diff --git a/easyplugin-placeholderapi/pom.xml b/easyplugin-placeholderapi/pom.xml index b0ecb4b..4f09933 100644 --- a/easyplugin-placeholderapi/pom.xml +++ b/easyplugin-placeholderapi/pom.xml @@ -5,7 +5,7 @@ easyplugin-parent cc.carm.lib - 1.1.2 + 1.1.3 4.0.0 diff --git a/easyplugin-vault/pom.xml b/easyplugin-vault/pom.xml index 51fe121..0924cd0 100644 --- a/easyplugin-vault/pom.xml +++ b/easyplugin-vault/pom.xml @@ -5,7 +5,7 @@ easyplugin-parent cc.carm.lib - 1.1.2 + 1.1.3 4.0.0 diff --git a/pom.xml b/pom.xml index 93c2440..a005f22 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ cc.carm.lib easyplugin-parent pom - 1.1.2 + 1.1.3 easyplugin-main