From 3239393f3f11606bb4a850605a745a6d029f0f14 Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 7 May 2024 20:35:26 -0700 Subject: [PATCH] add config for startup commands Inspired by Vintagestory's "StartupCommands" config option. (https://wiki.vintagestory.at/index.php/Setting_up_a_Multiplayer_Server#Acquiring_server_admin_rights) --- patches/server/0002-Purpur-config-files.patch | 8 ++-- .../0295-config-for-startup-commands.patch | 48 +++++++++++++++++++ 2 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 patches/server/0295-config-for-startup-commands.patch diff --git a/patches/server/0002-Purpur-config-files.patch b/patches/server/0002-Purpur-config-files.patch index d33e07709..d0887d441 100644 --- a/patches/server/0002-Purpur-config-files.patch +++ b/patches/server/0002-Purpur-config-files.patch @@ -112,7 +112,7 @@ index b4ef3ad2c17168085372f1fe46809f02d9dfe74a..04f7f6743aabdca54892b2b155386f86 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 62c18b61ee58e76a90938976e9ec96ef28a7106c..26eb9ff0f4e77230d1eae793398869e71999982b 100644 +index 467ef4ffd6ee13b247ac9e453b006ec3d89362c9..d97f33d654086c892f01e47a59be7e37f6e03ae7 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1054,6 +1054,7 @@ public final class CraftServer implements Server { @@ -159,7 +159,7 @@ index 62c18b61ee58e76a90938976e9ec96ef28a7106c..26eb9ff0f4e77230d1eae793398869e7 public void restart() { org.spigotmc.RestartCommand.restart(); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index c097f5d5fbd51cbbc01bbd54101905c59b3f3a4c..66a3b28d7b943d443ff66fdcfbce6e5260b9463e 100644 +index c988afa496d25314451435eedd64079a0d87cef0..45a33086e1bb8a70e0fa01090731d27a0474da41 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -175,6 +175,14 @@ public class Main { @@ -179,7 +179,7 @@ index c097f5d5fbd51cbbc01bbd54101905c59b3f3a4c..66a3b28d7b943d443ff66fdcfbce6e52 .withRequiredArg() diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..19161d9736b626811423deefedd045abe60360cc +index 0000000000000000000000000000000000000000..4f015144be0a7a448c6c2b0765232c02ad405d09 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -0,0 +1,175 @@ @@ -332,7 +332,7 @@ index 0000000000000000000000000000000000000000..19161d9736b626811423deefedd045ab + return config.getInt(path, config.getInt(path)); + } + -+ private static List getList(String path, T def) { ++ private static List getList(String path, T def) { + config.addDefault(path, def); + return config.getList(path, config.getList(path)); + } diff --git a/patches/server/0295-config-for-startup-commands.patch b/patches/server/0295-config-for-startup-commands.patch new file mode 100644 index 000000000..77e6c93cd --- /dev/null +++ b/patches/server/0295-config-for-startup-commands.patch @@ -0,0 +1,48 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: granny +Date: Sun, 5 May 2024 02:27:52 -0700 +Subject: [PATCH] config for startup commands + + +diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java +index dfeae138e830e95ab823b6349a91160b02622208..21327a92b75a460c7beb3aa408502f37a7db31fa 100644 +--- a/src/main/java/net/minecraft/server/MinecraftServer.java ++++ b/src/main/java/net/minecraft/server/MinecraftServer.java +@@ -1188,6 +1188,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop startupCommands = new ArrayList<>(); ++ private static void startupCommands() { ++ startupCommands.clear(); ++ getList("settings.startup-commands", new ArrayList()).forEach(line -> { ++ String command = line.toString(); ++ if (command.startsWith("/")) { ++ command = command.substring(1); ++ } ++ startupCommands.add(command); ++ }); ++ } + }