aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0705-Allow-skipping-writing-of-comments-to-server.propert.patch
diff options
context:
space:
mode:
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.patch85
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 {