package com.nyancraft.reportrts.util; import com.nyancraft.reportrts.ReportRTS; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.logging.Level; public class MessageHandler { private FileConfiguration messageConfig = null; private File messageFile = null; public Map<String, String> messageMap = new HashMap<>(); public void reloadMessageConfig() { if(!configExists()){ if(messageFile == null) messageFile = new File(ReportRTS.getPlugin().getDataFolder(), "messages.yml"); messageConfig = YamlConfiguration.loadConfiguration(new InputStreamReader(ReportRTS.getPlugin().getResource("messages.yml"))); saveMessageConfig(); } if(messageFile == null) messageFile = new File(ReportRTS.getPlugin().getDataFolder(), "messages.yml"); messageConfig = YamlConfiguration.loadConfiguration(messageFile); InputStreamReader defaultMessageStream = new InputStreamReader(ReportRTS.getPlugin().getResource("messages.yml")); if(defaultMessageStream != null) { YamlConfiguration defaultConfig = YamlConfiguration.loadConfiguration(defaultMessageStream); messageConfig.setDefaults(defaultConfig); } // Ensure that the messages file is not from prior to the rewrite. if(messageConfig.getString("modreqFiledUser") != null) { // Rename the old messages file. if(!messageFile.renameTo(new File(ReportRTS.getPlugin().getDataFolder(), "messages.yml.old"))) { ReportRTS.getPlugin().getLogger().warning("Failed to move the old messages file. Does a backup already exist?"); return; } // Get the new configuration. messageConfig = YamlConfiguration.loadConfiguration(new InputStreamReader(ReportRTS.getPlugin().getResource("messages.yml"))); // Save to disk. saveMessageConfig(); } } public FileConfiguration getMessageConfig() { if(messageConfig == null) this.reloadMessageConfig(); return messageConfig; } public void saveMessageConfig() { if(messageConfig == null || messageFile == null) return; try { getMessageConfig().save(messageFile); } catch(IOException e) { ReportRTS.getPlugin().getLogger().log(Level.SEVERE, "Could not save messages to " + messageConfig, e); } } public void reloadMessageMap() { Set<String> Messages = messageConfig.getKeys(false); for(String message : Messages){ messageMap.put(message, messageConfig.getString(message)); } } private boolean configExists() { return new File(ReportRTS.getPlugin().getDataFolder(), "messages.yml").exists(); } }