package net.minecraft.server.dedicated; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class PropertyManager { private static final Logger LOGGER = LogManager.getLogger(); /** The server properties object. */ private final Properties serverProperties = new Properties(); /** The server properties file. */ private final File serverPropertiesFile; private static final String __OBFID = "CL_00001782"; public PropertyManager(File propertiesFile) { this.serverPropertiesFile = propertiesFile; if (propertiesFile.exists()) { FileInputStream var2 = null; try { var2 = new FileInputStream(propertiesFile); this.serverProperties.load(var2); } catch (Exception var12) { LOGGER.warn("Failed to load " + propertiesFile, var12); this.generateNewProperties(); } finally { if (var2 != null) { try { var2.close(); } catch (IOException var11) { ; } } } } else { LOGGER.warn(propertiesFile + " does not exist"); this.generateNewProperties(); } } /** * Generates a new properties file. */ public void generateNewProperties() { LOGGER.info("Generating new properties file"); this.saveProperties(); } /** * Writes the properties to the properties file. */ public void saveProperties() { FileOutputStream var1 = null; try { var1 = new FileOutputStream(this.serverPropertiesFile); this.serverProperties.store(var1, "Minecraft server properties"); } catch (Exception var11) { LOGGER.warn("Failed to save " + this.serverPropertiesFile, var11); this.generateNewProperties(); } finally { if (var1 != null) { try { var1.close(); } catch (IOException var10) { ; } } } } /** * Returns this PropertyManager's file object used for property saving. */ public File getPropertiesFile() { return this.serverPropertiesFile; } /** * Returns a string property. If the property doesn't exist the default is returned. */ public String getStringProperty(String key, String defaultValue) { if (!this.serverProperties.containsKey(key)) { this.serverProperties.setProperty(key, defaultValue); this.saveProperties(); this.saveProperties(); } return this.serverProperties.getProperty(key, defaultValue); } /** * Gets an integer property. If it does not exist, set it to the specified value. */ public int getIntProperty(String key, int defaultValue) { try { return Integer.parseInt(this.getStringProperty(key, "" + defaultValue)); } catch (Exception var4) { this.serverProperties.setProperty(key, "" + defaultValue); this.saveProperties(); return defaultValue; } } public long getLongProperty(String key, long defaultValue) { try { return Long.parseLong(this.getStringProperty(key, "" + defaultValue)); } catch (Exception var5) { this.serverProperties.setProperty(key, "" + defaultValue); this.saveProperties(); return defaultValue; } } /** * Gets a boolean property. If it does not exist, set it to the specified value. */ public boolean getBooleanProperty(String key, boolean defaultValue) { try { return Boolean.parseBoolean(this.getStringProperty(key, "" + defaultValue)); } catch (Exception var4) { this.serverProperties.setProperty(key, "" + defaultValue); this.saveProperties(); return defaultValue; } } /** * Saves an Object with the given property name. */ public void setProperty(String key, Object value) { this.serverProperties.setProperty(key, "" + value); } }