mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-06 18:50:51 +01:00
1b13d5c85e
Syncing writes on each write call has terrible performance on harddrives. -DPaper.enable-sync-chunk-writes=true to enable
97 lines
5.9 KiB
Diff
97 lines
5.9 KiB
Diff
--- a/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
|
+++ b/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
|
@@ -43,11 +43,16 @@
|
|
import net.minecraft.world.level.levelgen.presets.WorldPresets;
|
|
import org.slf4j.Logger;
|
|
|
|
+// CraftBukkit start
|
|
+import joptsimple.OptionSet;
|
|
+// CraftBukkit end
|
|
+
|
|
public class DedicatedServerProperties extends Settings<DedicatedServerProperties> {
|
|
|
|
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 final boolean onlineMode = this.get("online-mode", true);
|
|
public final boolean preventProxyConnections = this.get("prevent-proxy-connections", false);
|
|
public final String serverIp = this.get("server-ip", "");
|
|
@@ -100,13 +105,17 @@
|
|
public final Settings<DedicatedServerProperties>.MutableValue<Boolean> whiteList;
|
|
public final boolean enforceSecureProfile;
|
|
public final boolean logIPs;
|
|
- public final int pauseWhenEmptySeconds;
|
|
+ public int pauseWhenEmptySeconds;
|
|
private final DedicatedServerProperties.WorldDimensionData worldDimensionData;
|
|
public final WorldOptions worldOptions;
|
|
public boolean acceptsTransfers;
|
|
|
|
- public DedicatedServerProperties(Properties properties) {
|
|
- super(properties);
|
|
+ public final String rconIp; // Paper - Configurable rcon ip
|
|
+
|
|
+ // CraftBukkit start
|
|
+ public DedicatedServerProperties(Properties properties, OptionSet optionset) {
|
|
+ super(properties, optionset);
|
|
+ // CraftBukkit end
|
|
this.difficulty = (Difficulty) this.get("difficulty", dispatchNumberOrString(Difficulty::byId, Difficulty::byName), Difficulty::getKey, Difficulty.EASY);
|
|
this.gamemode = (GameType) this.get("gamemode", dispatchNumberOrString(GameType::byId, GameType::byName), GameType::getName, GameType.SURVIVAL);
|
|
this.levelName = this.get("level-name", "world");
|
|
@@ -137,7 +146,7 @@
|
|
this.maxWorldSize = this.get("max-world-size", (integer) -> {
|
|
return Mth.clamp(integer, 1, 29999984);
|
|
}, 29999984);
|
|
- this.syncChunkWrites = this.get("sync-chunk-writes", true);
|
|
+ this.syncChunkWrites = this.get("sync-chunk-writes", true) && Boolean.getBoolean("Paper.enable-sync-chunk-writes"); // Paper - Hide sync chunk writes behind flag
|
|
this.regionFileComression = this.get("region-file-compression", "deflate");
|
|
this.enableJmxMonitoring = this.get("enable-jmx-monitoring", false);
|
|
this.enableStatus = this.get("enable-status", true);
|
|
@@ -165,15 +174,21 @@
|
|
}, WorldPresets.NORMAL.location().toString()));
|
|
this.serverResourcePackInfo = DedicatedServerProperties.getServerPackInfo(this.get("resource-pack-id", ""), this.get("resource-pack", ""), this.get("resource-pack-sha1", ""), this.getLegacyString("resource-pack-hash"), this.get("require-resource-pack", false), this.get("resource-pack-prompt", ""));
|
|
this.initialDataPackConfiguration = DedicatedServerProperties.getDatapackConfig(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, OptionSet optionset) {
|
|
+ return new DedicatedServerProperties(loadFromFile(path), optionset);
|
|
}
|
|
|
|
@Override
|
|
- protected DedicatedServerProperties reload(RegistryAccess registryManager, Properties properties) {
|
|
- return new DedicatedServerProperties(properties);
|
|
+ public DedicatedServerProperties reload(RegistryAccess iregistrycustom, Properties properties, OptionSet optionset) {
|
|
+ return new DedicatedServerProperties(properties, optionset);
|
|
+ // CraftBukkit end
|
|
}
|
|
|
|
@Nullable
|
|
@@ -254,10 +269,10 @@
|
|
}).orElseThrow(() -> {
|
|
return new IllegalStateException("Invalid datapack contents: can't find default preset");
|
|
});
|
|
- Optional optional = Optional.ofNullable(ResourceLocation.tryParse(this.levelType)).map((minecraftkey) -> {
|
|
+ Optional<ResourceKey<WorldPreset>> optional = Optional.ofNullable(ResourceLocation.tryParse(this.levelType)).map((minecraftkey) -> { // CraftBukkit - decompile error
|
|
return ResourceKey.create(Registries.WORLD_PRESET, minecraftkey);
|
|
}).or(() -> {
|
|
- return Optional.ofNullable((ResourceKey) DedicatedServerProperties.WorldDimensionData.LEGACY_PRESET_NAMES.get(this.levelType));
|
|
+ return Optional.ofNullable(DedicatedServerProperties.WorldDimensionData.LEGACY_PRESET_NAMES.get(this.levelType)); // CraftBukkit - decompile error
|
|
});
|
|
|
|
Objects.requireNonNull(holderlookup);
|
|
@@ -269,7 +284,7 @@
|
|
|
|
if (holder.is(WorldPresets.FLAT)) {
|
|
RegistryOps<JsonElement> registryops = registries.createSerializationContext(JsonOps.INSTANCE);
|
|
- DataResult dataresult = FlatLevelGeneratorSettings.CODEC.parse(new Dynamic(registryops, this.generatorSettings()));
|
|
+ DataResult<FlatLevelGeneratorSettings> dataresult = FlatLevelGeneratorSettings.CODEC.parse(new Dynamic(registryops, this.generatorSettings())); // CraftBukkit - decompile error
|
|
Logger logger = DedicatedServerProperties.LOGGER;
|
|
|
|
Objects.requireNonNull(logger);
|