--- a/net/minecraft/server/dedicated/DedicatedServerProperties.java
+++ b/net/minecraft/server/dedicated/DedicatedServerProperties.java
@@ -48,6 +_,7 @@
     static final Logger LOGGER = LogUtils.getLogger();
     private static final Pattern SHA1 = Pattern.compile("^[a-fA-F0-9]{40}$");
     private static final Splitter COMMA_SPLITTER = Splitter.on(',').trimResults();
+    public final boolean debug = this.get("debug", false); // CraftBukkit
     public static final String MANAGEMENT_SERVER_TLS_ENABLED_KEY = "management-server-tls-enabled";
     public static final String MANAGEMENT_SERVER_TLS_KEYSTORE_KEY = "management-server-tls-keystore";
     public static final String MANAGEMENT_SERVER_TLS_KEYSTORE_PASSWORD_KEY = "management-server-tls-keystore-password";
@@ -97,7 +_,7 @@
     public final boolean broadcastRconToOps = this.get("broadcast-rcon-to-ops", true);
     public final boolean broadcastConsoleToOps = this.get("broadcast-console-to-ops", true);
     public final int maxWorldSize = this.get("max-world-size", property -> Mth.clamp(property, 1, 29999984), 29999984);
-    public final boolean syncChunkWrites = this.get("sync-chunk-writes", true);
+    public final boolean syncChunkWrites = this.get("sync-chunk-writes", true) && Boolean.getBoolean("Paper.enable-sync-chunk-writes"); // Paper - Hide sync chunk writes behind flag
     public final String regionFileComression = this.get("region-file-compression", "deflate");
     public final boolean enableJmxMonitoring = this.get("enable-jmx-monitoring", false);
     public final Settings<DedicatedServerProperties>.MutableValue<Boolean> enableStatus = this.getMutable("enable-status", true);
@@ -114,13 +_,16 @@
     public final Settings<DedicatedServerProperties>.MutableValue<Boolean> whiteList = this.getMutable("white-list", false);
     public final boolean enforceSecureProfile = this.get("enforce-secure-profile", true);
     public final boolean logIPs = this.get("log-ips", true);
-    public final Settings<DedicatedServerProperties>.MutableValue<Integer> pauseWhenEmptySeconds = this.getMutable("pause-when-empty-seconds", 60);
+    public Settings<DedicatedServerProperties>.MutableValue<Integer> pauseWhenEmptySeconds = this.getMutable("pause-when-empty-seconds", -1); // Paper - disable tick sleeping by default
     private final DedicatedServerProperties.WorldDimensionData worldDimensionData;
     public final WorldOptions worldOptions;
     public Settings<DedicatedServerProperties>.MutableValue<Boolean> acceptsTransfers = this.getMutable("accepts-transfers", false);
+    public final String rconIp; // Paper - Configurable rcon ip
 
-    public DedicatedServerProperties(Properties properties) {
-        super(properties);
+    // CraftBukkit start
+    public DedicatedServerProperties(Properties properties, joptsimple.OptionSet optionset) {
+        super(properties, optionset);
+        // CraftBukkit end
         String string = this.get("level-seed", "");
         boolean flag = this.get("generate-structures", true);
         long l = WorldOptions.parseSeed(string).orElse(WorldOptions.randomSeed());
@@ -141,15 +_,21 @@
             this.get("initial-enabled-packs", String.join(",", WorldDataConfiguration.DEFAULT.dataPacks().getEnabled())),
             this.get("initial-disabled-packs", String.join(",", WorldDataConfiguration.DEFAULT.dataPacks().getDisabled()))
         );
+        // Paper start - Configurable rcon ip
+        final String rconIp = this.getStringRaw("rcon.ip");
+        this.rconIp = rconIp == null ? this.serverIp : rconIp;
+        // Paper end - Configurable rcon ip
     }
 
-    public static DedicatedServerProperties fromFile(Path path) {
-        return new DedicatedServerProperties(loadFromFile(path));
+    // CraftBukkit start
+    public static DedicatedServerProperties fromFile(Path path, joptsimple.OptionSet optionset) {
+        return new DedicatedServerProperties(loadFromFile(path), optionset);
     }
 
     @Override
-    protected DedicatedServerProperties reload(RegistryAccess registryAccess, Properties properties) {
-        return new DedicatedServerProperties(properties);
+    public DedicatedServerProperties reload(RegistryAccess registryAccess, Properties properties, joptsimple.OptionSet options) {
+        return new DedicatedServerProperties(properties, options);
+        // CraftBukkit end
     }
 
     @Nullable
@@ -224,7 +_,7 @@
         return this.worldDimensionData.create(registries);
     }
 
-    record WorldDimensionData(JsonObject generatorSettings, String levelType) {
+    public record WorldDimensionData(JsonObject generatorSettings, String levelType) {
         private static final Map<String, ResourceKey<WorldPreset>> LEGACY_PRESET_NAMES = Map.of(
             "default", WorldPresets.NORMAL, "largebiomes", WorldPresets.LARGE_BIOMES
         );
