AuthMe/src/main/java/fr/xephi/authme/settings/CustomConfiguration.java

82 lines
2.1 KiB
Java

package fr.xephi.authme.settings;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
public class CustomConfiguration extends YamlConfiguration {
private final File configFile;
public CustomConfiguration(final File file) {
this.configFile = file;
load();
}
public File getConfigFile() {
return configFile;
}
public void load() {
try {
super.load(configFile);
} catch (final FileNotFoundException e) {
ConsoleLogger.showError("未找到配置文件 " + configFile.getName() + ", 创建新文件...");
reLoad();
} catch (final IOException e) {
ConsoleLogger.showError("无法载入配置文件 " + configFile.getName());
} catch (final InvalidConfigurationException e) {
ConsoleLogger.showError(configFile.getName() + " 不是一个有效的配置文件");
}
}
public boolean loadResource(final File file) {
if (!file.exists()) {
try {
if (!file.getParentFile().exists() && !file.getParentFile().mkdirs()) {
return false;
}
final int i = file.getPath().indexOf("AuthMe");
if (i > -1) {
final String path = file.getPath().substring(i + 6).replace('\\', '/');
final InputStream is = AuthMe.class.getResourceAsStream(path);
Files.copy(is, file.toPath(), StandardCopyOption.REPLACE_EXISTING);
return true;
}
} catch (final Exception e) {
ConsoleLogger.writeStackTrace(e);
ConsoleLogger.showError("从 JAR 载入配置文件失败...");
}
}
return false;
}
public boolean reLoad() {
boolean out = true;
if (!configFile.exists()) {
out = loadResource(configFile);
}
if (out) {
load();
}
return out;
}
public void save() {
try {
super.save(configFile);
} catch (final IOException ex) {
ConsoleLogger.showError("无法保存配置文件 " + configFile.getName());
}
}
}