Files
2019-08-06 23:36:07 +08:00

128 lines
4.2 KiB
Diff

--- ../src-base/minecraft/net/minecraft/server/dedicated/PropertyManager.java
+++ ../src-work/minecraft/net/minecraft/server/dedicated/PropertyManager.java
@@ -1,10 +1,10 @@
package net.minecraft.server.dedicated;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
+import java.io.*;
+import java.nio.charset.StandardCharsets;
import java.util.Properties;
+
+import joptsimple.OptionSet;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import org.apache.logging.log4j.LogManager;
@@ -14,8 +14,9 @@
public class PropertyManager
{
private static final Logger LOGGER = LogManager.getLogger();
- private final Properties serverProperties = new Properties();
+ public final Properties serverProperties = new Properties();
private final File serverPropertiesFile;
+ private OptionSet options = null;
public PropertyManager(File propertiesFile)
{
@@ -28,7 +29,7 @@
try
{
fileinputstream = new FileInputStream(propertiesFile);
- this.serverProperties.load(fileinputstream);
+ this.serverProperties.load(new InputStreamReader(fileinputstream, StandardCharsets.UTF_8));
}
catch (Exception exception)
{
@@ -57,6 +58,18 @@
}
}
+ public PropertyManager(final OptionSet options) {
+ this((File) options.valueOf("config"));
+ this.options = options;
+ }
+
+ private <T> T getOverride(String name, T value) {
+ if ((this.options != null) && (this.options.has(name))) {
+ return (T) this.options.valueOf(name);
+ }
+ return value;
+ }
+
public void generateNewProperties()
{
LOGGER.info("Generating new properties file");
@@ -69,8 +82,13 @@
try
{
+ // CraftBukkit start - Don't attempt writing to file if it's read only
+ if (this.serverPropertiesFile.exists() && !this.serverPropertiesFile.canWrite()) {
+ return;
+ }
+ // CraftBukkit end
fileoutputstream = new FileOutputStream(this.serverPropertiesFile);
- this.serverProperties.store(fileoutputstream, "Minecraft server properties");
+ this.serverProperties.store(new OutputStreamWriter(fileoutputstream, StandardCharsets.UTF_8), "Minecraft server properties");
}
catch (Exception exception)
{
@@ -107,20 +125,20 @@
this.saveProperties();
}
- return this.serverProperties.getProperty(key, defaultValue);
+ return getOverride(key, this.serverProperties.getProperty(key, defaultValue));
}
public int getIntProperty(String key, int defaultValue)
{
try
{
- return Integer.parseInt(this.getStringProperty(key, "" + defaultValue));
+ return getOverride(key, Integer.parseInt(this.getStringProperty(key, "" + defaultValue)));
}
catch (Exception var4)
{
this.serverProperties.setProperty(key, "" + defaultValue);
this.saveProperties();
- return defaultValue;
+ return getOverride(key, defaultValue);
}
}
@@ -128,13 +146,13 @@
{
try
{
- return Long.parseLong(this.getStringProperty(key, "" + defaultValue));
+ return getOverride(key, Long.parseLong(this.getStringProperty(key, "" + defaultValue)));
}
catch (Exception var5)
{
this.serverProperties.setProperty(key, "" + defaultValue);
this.saveProperties();
- return defaultValue;
+ return getOverride(key, defaultValue);
}
}
@@ -142,13 +160,13 @@
{
try
{
- return Boolean.parseBoolean(this.getStringProperty(key, "" + defaultValue));
+ return getOverride(key, Boolean.parseBoolean(this.getStringProperty(key, "" + defaultValue)));
}
catch (Exception var4)
{
this.serverProperties.setProperty(key, "" + defaultValue);
this.saveProperties();
- return defaultValue;
+ return getOverride(key, defaultValue);
}
}