1
mirror of https://github.com/CarmJos/MineConfiguration.git synced 2024-09-19 20:05:49 +00:00

feat(conf): 为入口类添加了实例方法,方便快捷创建基础配置和消息配置文件。

This commit is contained in:
Carm Jos 2023-05-27 00:22:30 +08:00
parent 8f3d574446
commit 9d6212e5ea
3 changed files with 102 additions and 2 deletions

View File

@ -0,0 +1,51 @@
package cc.carm.lib.mineconfiguration.common;
import cc.carm.lib.configuration.core.ConfigurationRoot;
import cc.carm.lib.configuration.core.source.ConfigurationProvider;
import org.jetbrains.annotations.NotNull;
public abstract class AbstractConfiguration<P extends ConfigurationProvider<?>> {
private final P configProvider;
private final P messageProvider;
protected AbstractConfiguration(@NotNull P configProvider, @NotNull P messageProvider) {
this.configProvider = configProvider;
this.messageProvider = messageProvider;
}
public void initializeConfig(@NotNull ConfigurationRoot configRoot) {
this.configProvider.initialize(configRoot);
}
public void initializeMessage(@NotNull ConfigurationRoot messageRoot) {
this.messageProvider.initialize(messageRoot);
}
public void initializeConfig(@NotNull Class<? extends ConfigurationRoot> configRoot) {
this.configProvider.initialize(configRoot);
}
public void initializeMessage(@NotNull Class<? extends ConfigurationRoot> messageRoot) {
this.messageProvider.initialize(messageRoot);
}
public P getConfigProvider() {
return configProvider;
}
public P getMessageProvider() {
return messageProvider;
}
public void reload() throws Exception {
getConfigProvider().reload();
getMessageProvider().reload();
}
public void save() throws Exception {
getConfigProvider().save();
getMessageProvider().save();
}
}

View File

@ -1,12 +1,16 @@
package cc.carm.lib.mineconfiguration.bukkit;
import cc.carm.lib.configuration.core.ConfigurationRoot;
import cc.carm.lib.mineconfiguration.bukkit.source.BukkitConfigProvider;
import cc.carm.lib.mineconfiguration.common.AbstractConfiguration;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.io.IOException;
public class MineConfiguration {
public class MineConfiguration extends AbstractConfiguration<BukkitConfigProvider> {
public static BukkitConfigProvider from(File file, String source) {
BukkitConfigProvider provider = new BukkitConfigProvider(file);
@ -39,4 +43,24 @@ public class MineConfiguration {
return from(new File(plugin.getDataFolder(), fileName), source);
}
public MineConfiguration(@NotNull JavaPlugin plugin) {
super(from(plugin, "config.yml"), from(plugin, "messages.yml"));
}
public MineConfiguration(@NotNull JavaPlugin plugin,
@NotNull ConfigurationRoot configRoot,
@NotNull ConfigurationRoot messageRoot) {
this(plugin);
initializeConfig(configRoot);
initializeMessage(messageRoot);
}
public MineConfiguration(@NotNull JavaPlugin plugin,
@NotNull Class<? extends ConfigurationRoot> configRoot,
@NotNull Class<? extends ConfigurationRoot> messageRoot) {
this(plugin);
initializeConfig(configRoot);
initializeMessage(messageRoot);
}
}

View File

@ -1,15 +1,18 @@
package cc.carm.lib.mineconfiguration.bungee;
import cc.carm.lib.configuration.core.ConfigurationRoot;
import cc.carm.lib.mineconfiguration.bungee.source.BungeeConfigProvider;
import cc.carm.lib.mineconfiguration.common.AbstractConfiguration;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.config.ConfigurationProvider;
import net.md_5.bungee.config.JsonConfiguration;
import net.md_5.bungee.config.YamlConfiguration;
import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.io.IOException;
public class MineConfiguration {
public class MineConfiguration extends AbstractConfiguration<BungeeConfigProvider> {
protected static BungeeConfigProvider create(File file, String source, ConfigurationProvider loader) {
BungeeConfigProvider provider = new BungeeConfigProvider(file, loader);
@ -94,4 +97,26 @@ public class MineConfiguration {
return fromJSON(new File(plugin.getDataFolder(), fileName), source);
}
public MineConfiguration(@NotNull Plugin plugin) {
super(from(plugin, "config.yml"), from(plugin, "messages.yml"));
}
public MineConfiguration(@NotNull Plugin plugin,
@NotNull ConfigurationRoot configRoot,
@NotNull ConfigurationRoot messageRoot) {
this(plugin);
initializeConfig(configRoot);
initializeMessage(messageRoot);
}
public MineConfiguration(@NotNull Plugin plugin,
@NotNull Class<? extends ConfigurationRoot> configRoot,
@NotNull Class<? extends ConfigurationRoot> messageRoot) {
this(plugin);
initializeConfig(configRoot);
initializeMessage(messageRoot);
}
}