All source projects

MrUltimateLibrary Source

Standalone source project / 68 files

MrUltimateLibrary is the backbone of all my plugins; it offers features that facilitate plugin creation, maintenance, and updates.

java

MrUltimateLibrary/src/main/java/eu/mrneznamy/mrultimatelibrary/utils/MrLibConfig.java

JAVA · Read-only source

package eu.mrneznamy.mrultimatelibrary.utils;

import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.java.JavaPlugin;

import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;

public class MrLibConfig {

    private static File configFile;
    private static FileConfiguration config;
    private static final String CONFIG_PATH = "plugins/MrUltimateLibrary/config.yml";

    public static void init(JavaPlugin plugin) {
        configFile = new File(CONFIG_PATH);
        if (!configFile.exists()) {
            configFile.getParentFile().mkdirs();
            saveDefaultConfig(plugin);
        }
        reload();
    }

    public static FileConfiguration getConfig() {
        if (config == null) {
            reload();
        }
        return config;
    }

    public static void reload() {
        if (configFile == null) {
            configFile = new File(CONFIG_PATH);
        }
        config = YamlConfiguration.loadConfiguration(configFile);
        
        
        InputStream defConfigStream = MrLibConfig.class.getClassLoader().getResourceAsStream("config.yml");
        if (defConfigStream != null) {
            config.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(defConfigStream, StandardCharsets.UTF_8)));
        }
    }

    public static void save() {
        try {
            config.save(configFile);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void saveDefaultConfig(JavaPlugin plugin) {
        try (InputStream in = plugin.getResource("config.yml")) {
            if (in != null) {
                java.nio.file.Files.copy(in, configFile.toPath(), java.nio.file.StandardCopyOption.REPLACE_EXISTING);
            }
        } catch (Exception e) {
            
            config = new YamlConfiguration();
            config.set("update-notifier", true);
            config.set("error-reporting", false);
            config.set("analytics", false);
            config.set("enable-generatrereport-command", true);
            save();
        }
    }
}
71 linesGNU GENERAL PUBLIC LICENSE · Version 3, 29 June 2007 · UTF-8 · Read only