TFGuilds/src/main/java/me/totalfreedom/tfguilds/config/Config.java

91 lines
2.4 KiB
Java
Raw Normal View History

2020-06-18 22:24:02 +00:00
package me.totalfreedom.tfguilds.config;
import java.io.BufferedReader;
2020-12-03 13:38:37 +00:00
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
2022-02-26 20:30:42 +00:00
import java.util.concurrent.atomic.AtomicBoolean;
2020-06-18 22:24:02 +00:00
import me.totalfreedom.tfguilds.TFGuilds;
import org.bukkit.Bukkit;
import org.bukkit.configuration.InvalidConfigurationException;
2020-06-18 22:24:02 +00:00
import org.bukkit.configuration.file.YamlConfiguration;
public class Config extends YamlConfiguration
{
2020-06-18 22:24:02 +00:00
private final File file;
2022-02-26 20:30:42 +00:00
private final TFGuilds plugin;
private final String fileName;
2020-06-18 22:24:02 +00:00
public Config(TFGuilds plugin, String fileName)
2020-06-18 22:24:02 +00:00
{
2022-02-26 20:30:42 +00:00
this.fileName = fileName;
this.plugin = plugin;
this.file = new File(plugin.getDataFolder(), fileName);
2020-06-18 22:24:02 +00:00
if (!file.exists())
{
plugin.saveResource(fileName, false);
2020-06-18 22:24:02 +00:00
}
2022-02-26 20:30:42 +00:00
verifyConfiguration();
2020-06-18 22:24:02 +00:00
load();
}
public void save()
2020-06-18 22:24:02 +00:00
{
try
{
super.save(file);
2020-06-18 22:24:02 +00:00
}
catch (IOException ex)
2020-06-18 22:24:02 +00:00
{
ex.printStackTrace();
2020-06-18 22:24:02 +00:00
}
}
public void load()
2020-06-18 22:24:02 +00:00
{
try
{
super.load(file);
2020-06-18 22:24:02 +00:00
}
catch (IOException | InvalidConfigurationException ex)
2020-06-18 22:24:02 +00:00
{
ex.printStackTrace();
2020-06-18 22:24:02 +00:00
}
}
2022-02-26 20:30:42 +00:00
public void verifyConfiguration() {
InputStreamReader stream = new InputStreamReader(plugin.getResource(fileName));
YamlConfiguration reader = YamlConfiguration.loadConfiguration(stream);
YamlConfiguration writer = YamlConfiguration.loadConfiguration(file);
AtomicBoolean shouldSave = new AtomicBoolean(false);
try {
reader.getKeys(true).forEach(key -> {
if (!writer.contains(key)) writer.set(key, reader.get(key));
if (!shouldSave.get()) shouldSave.set(true);
});
if (shouldSave.get()) {
writer.save(file);
}
} catch (IOException ex) {
TFGuilds.getPlugin()
.getLogger()
.severe("Error attempting to verify configuration: \n"
+ ex.getMessage()
+ "\nCaused by: "
+ ex.getCause());
}
}
}