diff options
Diffstat (limited to 'patches/server/0705-Allow-skipping-writing-of-comments-to-server.propert.patch')
-rw-r--r-- | patches/server/0705-Allow-skipping-writing-of-comments-to-server.propert.patch | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/patches/server/0705-Allow-skipping-writing-of-comments-to-server.propert.patch b/patches/server/0705-Allow-skipping-writing-of-comments-to-server.propert.patch new file mode 100644 index 0000000000..d4d19d0e69 --- /dev/null +++ b/patches/server/0705-Allow-skipping-writing-of-comments-to-server.propert.patch @@ -0,0 +1,85 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Professor Bloodstone <[email protected]> +Date: Fri, 23 Jul 2021 02:32:04 +0200 +Subject: [PATCH] Allow skipping writing of comments to server.properties + +Makes less git noise, as it won't update the date every single time + +Use -DPaper.skipServerPropertiesComments=true flag to disable writing it + +diff --git a/src/main/java/net/minecraft/server/dedicated/Settings.java b/src/main/java/net/minecraft/server/dedicated/Settings.java +index 71767307062e99262afb994016720e1f1555b820..b285e8f6172154af1aa942ab164d73bc885c5fa4 100644 +--- a/src/main/java/net/minecraft/server/dedicated/Settings.java ++++ b/src/main/java/net/minecraft/server/dedicated/Settings.java +@@ -1,6 +1,8 @@ + package net.minecraft.server.dedicated; + + import com.google.common.base.MoreObjects; ++ ++import java.io.BufferedOutputStream; // Paper + import java.io.IOException; + import java.io.InputStream; + import java.io.OutputStream; +@@ -18,11 +20,13 @@ import org.apache.logging.log4j.Logger; + + import joptsimple.OptionSet; // CraftBukkit + import net.minecraft.core.RegistryAccess; ++import org.jetbrains.annotations.NotNull; // Paper + + public abstract class Settings<T extends Settings<T>> { + + private static final Logger LOGGER = LogManager.getLogger(); + public final Properties properties; ++ private static final boolean skipComments = Boolean.getBoolean("Paper.skipServerPropertiesComments"); // Paper - allow skipping server.properties comments + // CraftBukkit start + private OptionSet options = null; + +@@ -79,9 +83,47 @@ public abstract class Settings<T extends Settings<T>> { + } + // CraftBukkit end + OutputStream outputstream = Files.newOutputStream(path); ++ // Paper start - disable writing comments to properties file ++ BufferedOutputStream bufferedOutputStream = !skipComments ? new BufferedOutputStream(outputstream) : new BufferedOutputStream(outputstream) { ++ private boolean isRightAfterNewline = true; // If last written char was newline ++ private boolean isComment = false; // Are we writing comment currently? ++ ++ @Override ++ public void write(@NotNull byte[] b) throws IOException { ++ this.write(b, 0, b.length); ++ } ++ ++ @Override ++ public void write(@NotNull byte[] bbuf, int off, int len) throws IOException { ++ int latest_offset = off; // The latest offset, updated when comment ends ++ for (int index = off; index < off + len; ++index ) { ++ byte c = bbuf[index]; ++ boolean isNewline = (c == '\n' || c == '\r'); ++ if (isNewline && isComment) { ++ // Comment has ended ++ isComment = false; ++ latest_offset = index+1; ++ } ++ if (c == '#' && isRightAfterNewline) { ++ isComment = true; ++ if (index != latest_offset) { ++ // We got some non-comment data earlier ++ super.write(bbuf, latest_offset, index-latest_offset); ++ } ++ } ++ isRightAfterNewline = isNewline; // Store for next iteration ++ ++ } ++ if (latest_offset < off+len && !isComment) { ++ // We have some unwritten data, that isn't part of a comment ++ super.write(bbuf, latest_offset, (off + len) - latest_offset); ++ } ++ } ++ }; ++ // Paper end + + try { +- this.properties.store(outputstream, "Minecraft server properties"); ++ this.properties.store(bufferedOutputStream, "Minecraft server properties"); // Paper - use bufferedOutputStream + } catch (Throwable throwable) { + if (outputstream != null) { + try { |