Make purpur.lang reloadable with

This commit is contained in:
William Blake Galbreath
2020-04-12 16:39:52 -05:00
parent 3630f35339
commit b6d5b8200e
17 changed files with 172 additions and 138 deletions

View File

@@ -1,4 +1,4 @@
From 6d54e386f9aee77d38d503e587507142d959e77e Mon Sep 17 00:00:00 2001
From cc20b9003b0b7dbc01173445f4a2a8ad6a326795 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Thu, 9 May 2019 18:09:43 -0500
Subject: [PATCH] Purpur config files
@@ -8,16 +8,16 @@ Subject: [PATCH] Purpur config files
.../net/minecraft/server/DedicatedServer.java | 9 +
src/main/java/net/minecraft/server/World.java | 4 +-
src/main/java/net/pl3x/purpur/Metrics.java | 598 ++++++++++++++++++
.../java/net/pl3x/purpur/PurpurCommand.java | 66 ++
.../java/net/pl3x/purpur/PurpurConfig.java | 135 ++++
.../java/net/pl3x/purpur/PurpurConfig.java | 136 ++++
.../net/pl3x/purpur/PurpurWorldConfig.java | 67 ++
.../pl3x/purpur/command/PurpurCommand.java | 67 ++
.../org/bukkit/craftbukkit/CraftServer.java | 15 +
.../java/org/bukkit/craftbukkit/Main.java | 8 +
9 files changed, 902 insertions(+), 2 deletions(-)
9 files changed, 904 insertions(+), 2 deletions(-)
create mode 100644 src/main/java/net/pl3x/purpur/Metrics.java
create mode 100644 src/main/java/net/pl3x/purpur/PurpurCommand.java
create mode 100644 src/main/java/net/pl3x/purpur/PurpurConfig.java
create mode 100644 src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
create mode 100644 src/main/java/net/pl3x/purpur/command/PurpurCommand.java
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
index 1c4cd36351..cb8bac539d 100644
@@ -684,88 +684,17 @@ index 0000000000..9210afab6d
+ }
+ }
+}
diff --git a/src/main/java/net/pl3x/purpur/PurpurCommand.java b/src/main/java/net/pl3x/purpur/PurpurCommand.java
new file mode 100644
index 0000000000..f8cf4ad234
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/PurpurCommand.java
@@ -0,0 +1,66 @@
+package net.pl3x.purpur;
+
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.server.WorldServer;
+import org.bukkit.ChatColor;
+import org.bukkit.Location;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class PurpurCommand extends Command {
+ public PurpurCommand(String name) {
+ super(name);
+ this.description = "Purpur related commands";
+ this.usageMessage = "/purpur [reload | version]";
+ this.setPermission("bukkit.command.purpur");
+ }
+
+ @Override
+ public List<String> tabComplete(CommandSender sender, String alias, String[] args, Location location) throws IllegalArgumentException {
+ if (args.length == 1) {
+ return Arrays.asList("reload", "version").stream()
+ .filter(arg -> arg.startsWith(args[0].toLowerCase()))
+ .collect(Collectors.toList());
+ }
+ return Collections.emptyList();
+ }
+
+ @Override
+ public boolean execute(CommandSender sender, String commandLabel, String[] args) {
+ if (!testPermission(sender)) return true;
+
+ if (args.length != 1) {
+ sender.sendMessage(ChatColor.RED + "Usage: " + usageMessage);
+ return false;
+ }
+
+ if (args[0].equalsIgnoreCase("reload")) {
+ Command.broadcastCommandMessage(sender, ChatColor.RED + "Please note that this command is not supported and may cause issues.");
+ Command.broadcastCommandMessage(sender, ChatColor.RED + "If you encounter any issues please use the /stop command to restart your server.");
+
+ MinecraftServer console = MinecraftServer.getServer();
+ net.pl3x.purpur.PurpurConfig.init((File) console.options.valueOf("purpur-settings"));
+ for (WorldServer world : console.getWorlds()) {
+ world.purpurConfig.init();
+ }
+ console.server.reloadCount++;
+
+ Command.broadcastCommandMessage(sender, ChatColor.GREEN + "Purpur config reload complete.");
+ }
+
+ else if (args[0].equalsIgnoreCase("version")) {
+ Command verCmd = org.bukkit.Bukkit.getServer().getCommandMap().getCommand("version");
+ if (verCmd != null) {
+ return verCmd.execute(sender, commandLabel, new String[0]);
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
new file mode 100644
index 0000000000..706d787579
index 0000000000..83466b5837
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
@@ -0,0 +1,135 @@
@@ -0,0 +1,136 @@
+package net.pl3x.purpur;
+
+import com.google.common.base.Throwables;
+import net.minecraft.server.MinecraftServer;
+import net.pl3x.purpur.command.PurpurCommand;
+import org.bukkit.Bukkit;
+import org.bukkit.command.Command;
+import org.bukkit.configuration.InvalidConfigurationException;
@@ -970,6 +899,79 @@ index 0000000000..eda37fa43f
+ return PurpurConfig.config.getString("world-settings." + worldName + "." + path, PurpurConfig.config.getString("world-settings.default." + path));
+ }
+}
diff --git a/src/main/java/net/pl3x/purpur/command/PurpurCommand.java b/src/main/java/net/pl3x/purpur/command/PurpurCommand.java
new file mode 100644
index 0000000000..7d983d9a54
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/command/PurpurCommand.java
@@ -0,0 +1,67 @@
+package net.pl3x.purpur.command;
+
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.server.WorldServer;
+import net.pl3x.purpur.PurpurConfig;
+import org.bukkit.ChatColor;
+import org.bukkit.Location;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
+
+import java.io.File;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+public class PurpurCommand extends Command {
+ public PurpurCommand(String name) {
+ super(name);
+ this.description = "Purpur related commands";
+ this.usageMessage = "/purpur [reload | version]";
+ this.setPermission("bukkit.command.purpur");
+ }
+
+ @Override
+ public List<String> tabComplete(CommandSender sender, String alias, String[] args, Location location) throws IllegalArgumentException {
+ if (args.length == 1) {
+ return Stream.of("reload", "version")
+ .filter(arg -> arg.startsWith(args[0].toLowerCase()))
+ .collect(Collectors.toList());
+ }
+ return Collections.emptyList();
+ }
+
+ @Override
+ public boolean execute(CommandSender sender, String commandLabel, String[] args) {
+ if (!testPermission(sender)) return true;
+
+ if (args.length != 1) {
+ sender.sendMessage(ChatColor.RED + "Usage: " + usageMessage);
+ return false;
+ }
+
+ if (args[0].equalsIgnoreCase("reload")) {
+ Command.broadcastCommandMessage(sender, ChatColor.RED + "Please note that this command is not supported and may cause issues.");
+ Command.broadcastCommandMessage(sender, ChatColor.RED + "If you encounter any issues please use the /stop command to restart your server.");
+
+ MinecraftServer console = MinecraftServer.getServer();
+ PurpurConfig.init((File) console.options.valueOf("purpur-settings"));
+ for (WorldServer world : console.getWorlds()) {
+ world.purpurConfig.init();
+ }
+ console.server.reloadCount++;
+
+ Command.broadcastCommandMessage(sender, ChatColor.GREEN + "Purpur config reload complete.");
+ }
+
+ else if (args[0].equalsIgnoreCase("version")) {
+ Command verCmd = org.bukkit.Bukkit.getServer().getCommandMap().getCommand("version");
+ if (verCmd != null) {
+ return verCmd.execute(sender, commandLabel, new String[0]);
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 76fbbb620c..aa084a56b2 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java