diff --git a/src/main/java/pw/yumc/YumCore/config/AbstractInjectConfig.java b/src/main/java/pw/yumc/YumCore/config/AbstractInjectConfig.java index 9b47c4c..9656cbc 100644 --- a/src/main/java/pw/yumc/YumCore/config/AbstractInjectConfig.java +++ b/src/main/java/pw/yumc/YumCore/config/AbstractInjectConfig.java @@ -34,6 +34,18 @@ public abstract class AbstractInjectConfig { * 配置区 */ public void inject(final ConfigurationSection config) { + inject(config, false); + } + + /** + * 注入配置数据 + * + * @param config + * 配置区 + * @param save + * 是否为保存 + */ + public void inject(final ConfigurationSection config, final boolean save) { if (config == null) { Log.warning("尝试注入 ConfigurationSection 为 Null 的数据!"); return; @@ -49,10 +61,24 @@ public abstract class AbstractInjectConfig { path = node.value(); } field.setAccessible(true); - setField(path, field); + if (save) { + setConfig(path, field); + } else { + setField(path, field); + } } } + /** + * 自动化保存 + * + * @param config + * 配置文件区 + */ + public void save(final ConfigurationSection config) { + inject(config, true); + } + /** * 添加默认值 * @@ -156,7 +182,24 @@ public abstract class AbstractInjectConfig { } /** - * 通用解析流程 + * 通用保存流程 + * + * @param path + * 配置路径 + * @param field + * 字段 + */ + protected void setConfig(final String path, final Field field) { + try { + config.set(path, field.get(this)); + } catch (IllegalArgumentException | IllegalAccessException e) { + Log.w(INJECT_ERROR, e.getClass().getName(), e.getMessage()); + Log.debug(e); + } + } + + /** + * 通用读取流程 * * @param path * 配置路径 diff --git a/src/main/java/pw/yumc/YumCore/config/InjectConfig.java b/src/main/java/pw/yumc/YumCore/config/InjectConfig.java index 317433a..c2fe347 100644 --- a/src/main/java/pw/yumc/YumCore/config/InjectConfig.java +++ b/src/main/java/pw/yumc/YumCore/config/InjectConfig.java @@ -44,4 +44,12 @@ public abstract class InjectConfig extends AbstractInjectConfig { config.reload(); inject(config); } + + /** + * 自动化保存 + */ + public void save() { + save(config); + config.save(); + } }