Added new method so that you can't get a commentless config
This commit is contained in:
		@@ -1,8 +1,13 @@
 | 
			
		||||
package me.libraryaddict.disguise;
 | 
			
		||||
 | 
			
		||||
import java.io.BufferedReader;
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.io.FileReader;
 | 
			
		||||
import java.io.FileWriter;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.io.InputStream;
 | 
			
		||||
import java.io.InputStreamReader;
 | 
			
		||||
import java.io.Reader;
 | 
			
		||||
import java.lang.reflect.Field;
 | 
			
		||||
 | 
			
		||||
import me.libraryaddict.disguise.commands.*;
 | 
			
		||||
@@ -24,9 +29,6 @@ import me.libraryaddict.disguise.utilities.DisguiseValues;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.Bukkit;
 | 
			
		||||
import org.bukkit.ChatColor;
 | 
			
		||||
import org.bukkit.configuration.ConfigurationSection;
 | 
			
		||||
import org.bukkit.configuration.file.FileConfiguration;
 | 
			
		||||
import org.bukkit.configuration.file.YamlConfiguration;
 | 
			
		||||
import org.bukkit.entity.Ageable;
 | 
			
		||||
import org.bukkit.entity.Damageable;
 | 
			
		||||
import org.bukkit.entity.Entity;
 | 
			
		||||
@@ -43,24 +45,27 @@ public class LibsDisguises extends JavaPlugin {
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onEnable() {
 | 
			
		||||
        saveDefaultConfig();
 | 
			
		||||
        FileConfiguration config = YamlConfiguration.loadConfiguration(new File(getDataFolder(), "config.yml"));
 | 
			
		||||
        boolean needToSaveConfig = false;
 | 
			
		||||
        File configFile = new File(getDataFolder(), "config.yml");
 | 
			
		||||
        InputStream stream = null;
 | 
			
		||||
        FileReader reader = null;
 | 
			
		||||
        String toWrite = "";
 | 
			
		||||
        String toRead = "";
 | 
			
		||||
        try {
 | 
			
		||||
            stream = getClassLoader().getResource("config.yml").openStream();
 | 
			
		||||
            YamlConfiguration internalConfig = YamlConfiguration.loadConfiguration(stream);
 | 
			
		||||
            for (String option : internalConfig.getKeys(false)) {
 | 
			
		||||
                if (internalConfig.isConfigurationSection(option)) {
 | 
			
		||||
                    ConfigurationSection section = internalConfig.getConfigurationSection(option);
 | 
			
		||||
                    for (String secondOption : section.getKeys(false)) {
 | 
			
		||||
                        if (!config.contains(option + "." + secondOption)) {
 | 
			
		||||
                            config.set(option + "." + secondOption, section.get(secondOption));
 | 
			
		||||
                            needToSaveConfig = true;
 | 
			
		||||
                        }
 | 
			
		||||
            toWrite = read(new InputStreamReader(stream));
 | 
			
		||||
            reader = new FileReader(configFile);
 | 
			
		||||
            toRead = read(reader);
 | 
			
		||||
            
 | 
			
		||||
            if (!toRead.equals(toWrite)) {
 | 
			
		||||
                try {
 | 
			
		||||
                    FileWriter writer = new FileWriter(configFile);
 | 
			
		||||
                    try {
 | 
			
		||||
                        writer.write(toWrite);
 | 
			
		||||
                    } finally {
 | 
			
		||||
                        writer.close();
 | 
			
		||||
                    }
 | 
			
		||||
                } else if (!config.contains(option)) {
 | 
			
		||||
                    config.set(option, getConfig().get(option));
 | 
			
		||||
                    needToSaveConfig = true;
 | 
			
		||||
                } catch (IOException e) {
 | 
			
		||||
                    e.printStackTrace();
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
@@ -73,14 +78,15 @@ public class LibsDisguises extends JavaPlugin {
 | 
			
		||||
            } catch (IOException e) {
 | 
			
		||||
                e.printStackTrace();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (needToSaveConfig) {
 | 
			
		||||
            try {
 | 
			
		||||
                config.save(new File(getDataFolder(), "config.yml"));
 | 
			
		||||
                if (reader != null) {
 | 
			
		||||
                    reader.close();
 | 
			
		||||
                }
 | 
			
		||||
            } catch (IOException e) {
 | 
			
		||||
                e.printStackTrace();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        PacketsManager.init(this);
 | 
			
		||||
        DisguiseUtilities.init(this);
 | 
			
		||||
        DisguiseConfig.setSoundsEnabled(getConfig().getBoolean("DisguiseSounds"));
 | 
			
		||||
@@ -136,6 +142,52 @@ public class LibsDisguises extends JavaPlugin {
 | 
			
		||||
        registerValues();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private String read(Reader reader) {
 | 
			
		||||
        String toWrite = "";
 | 
			
		||||
        try {
 | 
			
		||||
            BufferedReader input = new BufferedReader(reader);
 | 
			
		||||
            String currentPath = "";
 | 
			
		||||
            try {
 | 
			
		||||
                String line;
 | 
			
		||||
 | 
			
		||||
                while ((line = input.readLine()) != null) {
 | 
			
		||||
                    if (line.replace(" ", "").startsWith("#")) {
 | 
			
		||||
                        toWrite += line;
 | 
			
		||||
                    } else if (line.contains(":")) {
 | 
			
		||||
                        if (line.substring(line.indexOf(":") + 1).equals("")) {
 | 
			
		||||
                            currentPath = line.substring(0, line.length() - 1) + ".";
 | 
			
		||||
                            toWrite += line;
 | 
			
		||||
                        } else {
 | 
			
		||||
                            if (!line.startsWith("  ")) {
 | 
			
		||||
                                currentPath = "";
 | 
			
		||||
                            }
 | 
			
		||||
                            String obj = line.substring(0, line.indexOf(":")).replace(" ", "");
 | 
			
		||||
                            Object value = getConfig().get(currentPath + obj);
 | 
			
		||||
                            if (value instanceof String) {
 | 
			
		||||
                                value = "'" + value + "'";
 | 
			
		||||
                            }
 | 
			
		||||
                            toWrite += (currentPath.length() == 0 ? "" : "  ") + obj + ": " + value;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    if (input.ready()) {
 | 
			
		||||
                        toWrite += "\n";
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            } finally {
 | 
			
		||||
                input.close();
 | 
			
		||||
            }
 | 
			
		||||
        } catch (Exception ex) {
 | 
			
		||||
            ex.printStackTrace();
 | 
			
		||||
        } finally {
 | 
			
		||||
            try {
 | 
			
		||||
                reader.close();
 | 
			
		||||
            } catch (IOException e) {
 | 
			
		||||
                e.printStackTrace();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return toWrite;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Here we create a nms entity for each disguise. Then grab their default values in their datawatcher. Then their sound volume
 | 
			
		||||
     * for mob noises. As well as setting their watcher class and entity size.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user