mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-23 11:06:29 +01:00
72e87abc2d
Co-authored-by: Paul Sauve <paul@technove.co>
70 lines
3.8 KiB
Diff
70 lines
3.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Professor Bloodstone <git@bloodstone.dev>
|
|
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 ca23639f15107ccd43b874ae38fa37279b827a8f..faca42b2b5b20559f98c300b7011b67165391a0d 100644
|
|
--- a/src/main/java/net/minecraft/server/dedicated/Settings.java
|
|
+++ b/src/main/java/net/minecraft/server/dedicated/Settings.java
|
|
@@ -29,6 +29,7 @@ public abstract class Settings<T extends Settings<T>> {
|
|
|
|
private static final Logger LOGGER = LogUtils.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;
|
|
|
|
@@ -123,7 +124,46 @@ public abstract class Settings<T extends Settings<T>> {
|
|
return;
|
|
}
|
|
// CraftBukkit end
|
|
- BufferedWriter bufferedwriter = Files.newBufferedWriter(path, StandardCharsets.UTF_8);
|
|
+ // Paper start - disable writing comments to properties file
|
|
+ java.io.OutputStream outputstream = Files.newOutputStream(path);
|
|
+ java.io.BufferedOutputStream bufferedOutputStream = !skipComments ? new java.io.BufferedOutputStream(outputstream) : new java.io.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(@org.jetbrains.annotations.NotNull byte[] b) throws IOException {
|
|
+ this.write(b, 0, b.length);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void write(@org.jetbrains.annotations.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 && this.isComment) {
|
|
+ // Comment has ended
|
|
+ this.isComment = false;
|
|
+ latest_offset = index+1;
|
|
+ }
|
|
+ if (c == '#' && this.isRightAfterNewline) {
|
|
+ this.isComment = true;
|
|
+ if (index != latest_offset) {
|
|
+ // We got some non-comment data earlier
|
|
+ super.write(bbuf, latest_offset, index-latest_offset);
|
|
+ }
|
|
+ }
|
|
+ this.isRightAfterNewline = isNewline; // Store for next iteration
|
|
+
|
|
+ }
|
|
+ if (latest_offset < off+len && !this.isComment) {
|
|
+ // We have some unwritten data, that isn't part of a comment
|
|
+ super.write(bbuf, latest_offset, (off + len) - latest_offset);
|
|
+ }
|
|
+ }
|
|
+ };
|
|
+ BufferedWriter bufferedwriter = new BufferedWriter(new java.io.OutputStreamWriter(bufferedOutputStream, java.nio.charset.StandardCharsets.UTF_8.newEncoder()));
|
|
+ // Paper end
|
|
|
|
try {
|
|
this.properties.store(bufferedwriter, "Minecraft server properties");
|