Skip to content

Commit 57d665e

Browse files
authored
Move version and console history to .paper dir (#14104)
1 parent 2d76c9c commit 57d665e

4 files changed

Lines changed: 63 additions & 4 deletions

File tree

paper-server/src/main/java/com/destroystokyo/paper/VersionHistoryManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
import com.google.common.base.MoreObjects;
44
import com.google.gson.Gson;
55
import com.google.gson.JsonSyntaxException;
6+
import io.papermc.paper.util.PaperCacheDir;
67
import java.io.BufferedReader;
78
import java.io.BufferedWriter;
89
import java.io.IOException;
910
import java.nio.charset.StandardCharsets;
1011
import java.nio.file.Files;
1112
import java.nio.file.Path;
12-
import java.nio.file.Paths;
1313
import java.nio.file.StandardOpenOption;
1414
import java.util.Objects;
1515
import java.util.logging.Level;
@@ -29,7 +29,7 @@ public enum VersionHistoryManager {
2929
private VersionData currentData = null;
3030

3131
VersionHistoryManager() {
32-
final Path path = Paths.get("version_history.json");
32+
final Path path = PaperCacheDir.moveFromServerRootAndGet("version_history.json", "version_history.json");
3333

3434
if (Files.exists(path)) {
3535
// Basic file sanity checks

paper-server/src/main/java/com/destroystokyo/paper/console/PaperConsole.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.papermc.paper.configuration.GlobalConfiguration;
44
import io.papermc.paper.console.BrigadierCompletionMatcher;
55
import io.papermc.paper.console.BrigadierConsoleParser;
6+
import io.papermc.paper.util.PaperCacheDir;
67
import net.minecraft.server.dedicated.DedicatedServer;
78
import net.minecrell.terminalconsole.SimpleTerminalConsole;
89
import org.bukkit.craftbukkit.command.ConsoleCommandCompleter;
@@ -21,7 +22,7 @@ public PaperConsole(DedicatedServer server) {
2122
protected LineReader buildReader(LineReaderBuilder builder) {
2223
builder
2324
.appName("Paper")
24-
.variable(LineReader.HISTORY_FILE, java.nio.file.Paths.get(".console_history"))
25+
.variable(LineReader.HISTORY_FILE, PaperCacheDir.moveFromServerRootAndGet(".console_history", "console_history"))
2526
.completer(new ConsoleCommandCompleter(this.server))
2627
.option(LineReader.Option.COMPLETE_IN_WORD, true);
2728
if (io.papermc.paper.configuration.GlobalConfiguration.get().console.enableBrigadierHighlighting) {
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package io.papermc.paper.util;
2+
3+
import com.mojang.logging.LogUtils;
4+
import java.io.IOException;
5+
import java.nio.file.Files;
6+
import java.nio.file.Path;
7+
import org.slf4j.Logger;
8+
9+
public final class PaperCacheDir {
10+
11+
private static final Path PATH = Path.of(".paper");
12+
private static final Logger LOGGER = LogUtils.getLogger();
13+
14+
public static Path get() {
15+
if (!Files.exists(PATH)) {
16+
try {
17+
Files.createDirectories(PATH);
18+
} catch (final IOException e) {
19+
throw new RuntimeException("Error creating .paper cache dir", e);
20+
}
21+
}
22+
if (!Files.isDirectory(PATH)) {
23+
throw new RuntimeException(".paper cache dir is not a directory");
24+
}
25+
return PATH;
26+
}
27+
28+
public static Path get(final String child) {
29+
return get().resolve(child);
30+
}
31+
32+
public static Path moveFromServerRootAndGet(final String child, final String newName) {
33+
// Keep this for individual use until a more unified migration place is made for larger config migrations
34+
final Path path = Path.of(child);
35+
final Path target = get(newName);
36+
if (!Files.isRegularFile(path)) {
37+
return target;
38+
}
39+
40+
if (Files.exists(target)) {
41+
// Delete the one in the server root
42+
try {
43+
Files.deleteIfExists(path);
44+
} catch (final IOException e) {
45+
LOGGER.error("Error deleting file: {}", child, e);
46+
}
47+
} else {
48+
// Move into .paper
49+
try {
50+
Files.move(path, target);
51+
} catch (final IOException e) {
52+
LOGGER.error("Error moving file: {}", child, e);
53+
}
54+
}
55+
return target;
56+
}
57+
}

paper-server/src/main/java/org/bukkit/craftbukkit/map/CraftMapColorCache.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.bukkit.craftbukkit.map;
22

33
import com.google.common.base.Preconditions;
4+
import io.papermc.paper.util.PaperCacheDir;
45
import java.awt.Color;
56
import java.io.File;
67
import java.io.FileInputStream;
@@ -21,7 +22,7 @@
2122
public class CraftMapColorCache implements MapPalette.MapColorCache {
2223

2324
private static final String MD5_CACHE_HASH = "E88EDD068D12D39934B40E8B6B124C83"; // 248 colors
24-
private static final File CACHE_FILE = new File("map-color-cache.dat");
25+
private static final File CACHE_FILE = PaperCacheDir.get("map-color-cache.dat").toFile();
2526
private byte[] cache;
2627
private final Logger logger;
2728
private boolean cached = false;

0 commit comments

Comments
 (0)