107 lines
		
	
	
		
			No EOL
		
	
	
		
			4.4 KiB
			
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			No EOL
		
	
	
		
			4.4 KiB
			
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | 
						|
From: William <admin@domnian.com>
 | 
						|
Date: Fri, 18 Mar 2016 03:28:07 -0400
 | 
						|
Subject: [PATCH] Add command to reload permissions.yml and require confirm to
 | 
						|
 reload
 | 
						|
 | 
						|
 | 
						|
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
 | 
						|
index 970d651b..4a725d79 100644
 | 
						|
--- a/src/main/java/org/bukkit/Bukkit.java
 | 
						|
+++ b/src/main/java/org/bukkit/Bukkit.java
 | 
						|
@@ -0,0 +0,0 @@ public final class Bukkit {
 | 
						|
     public static CommandMap getCommandMap() {
 | 
						|
         return server.getCommandMap();
 | 
						|
     }
 | 
						|
+
 | 
						|
+    /**
 | 
						|
+     * Reload the Permissions in permissions.yml
 | 
						|
+     */
 | 
						|
+    public static void reloadPermissions() {
 | 
						|
+        server.reloadPermissions();
 | 
						|
+    }
 | 
						|
     // Paper end
 | 
						|
 
 | 
						|
     public static Server.Spigot spigot()
 | 
						|
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
 | 
						|
index 9de7693a..3c550d06 100644
 | 
						|
--- a/src/main/java/org/bukkit/Server.java
 | 
						|
+++ b/src/main/java/org/bukkit/Server.java
 | 
						|
@@ -0,0 +0,0 @@ public interface Server extends PluginMessageRecipient {
 | 
						|
 
 | 
						|
     Spigot spigot();
 | 
						|
     // Spigot end
 | 
						|
+
 | 
						|
+    void reloadPermissions(); // Paper
 | 
						|
 }
 | 
						|
diff --git a/src/main/java/org/bukkit/command/defaults/ReloadCommand.java b/src/main/java/org/bukkit/command/defaults/ReloadCommand.java
 | 
						|
index c70d5129..040509c1 100644
 | 
						|
--- a/src/main/java/org/bukkit/command/defaults/ReloadCommand.java
 | 
						|
+++ b/src/main/java/org/bukkit/command/defaults/ReloadCommand.java
 | 
						|
@@ -0,0 +0,0 @@ public class ReloadCommand extends BukkitCommand {
 | 
						|
     public ReloadCommand(String name) {
 | 
						|
         super(name);
 | 
						|
         this.description = "Reloads the server configuration and plugins";
 | 
						|
-        this.usageMessage = "/reload";
 | 
						|
+        this.usageMessage = "/reload [permissions]"; // Paper
 | 
						|
         this.setPermission("bukkit.command.reload");
 | 
						|
         this.setAliases(Arrays.asList("rl"));
 | 
						|
     }
 | 
						|
 
 | 
						|
     @Override
 | 
						|
     public boolean execute(CommandSender sender, String currentAlias, String[] args) {
 | 
						|
+
 | 
						|
         if (!testPermission(sender)) return true;
 | 
						|
 
 | 
						|
+        // Paper start - Reload permissions.yml & require confirm
 | 
						|
+        boolean confirmed = System.getProperty("LetMeReload") != null;
 | 
						|
+        if (args.length == 1) {
 | 
						|
+            if (args[0].equalsIgnoreCase("permissions")) {
 | 
						|
+                Bukkit.getServer().reloadPermissions();
 | 
						|
+                Command.broadcastCommandMessage(sender, ChatColor.GREEN + "Permissions successfully reloaded.");
 | 
						|
+                return true;
 | 
						|
+            } else if ("confirm".equalsIgnoreCase(args[0])) {
 | 
						|
+                confirmed = true;
 | 
						|
+            } else {
 | 
						|
+                Command.broadcastCommandMessage(sender, ChatColor.RED + "Usage: " + usageMessage);
 | 
						|
+                return true;
 | 
						|
+            }
 | 
						|
+        }
 | 
						|
+        if (!confirmed) {
 | 
						|
+            Command.broadcastCommandMessage(sender, ChatColor.RED + "Are you sure you wish to reload your server? Doing so may cause bugs and memory leaks. It is recommended to restart instead of using /reload. To confirm, please type " + ChatColor.YELLOW + "/reload confirm");
 | 
						|
+            return true;
 | 
						|
+        }
 | 
						|
+        // Paper end
 | 
						|
+
 | 
						|
         Command.broadcastCommandMessage(sender, ChatColor.RED + "Please note that this command is not supported and may cause issues when using some plugins.");
 | 
						|
         Command.broadcastCommandMessage(sender, ChatColor.RED + "If you encounter any issues please use the /stop command to restart your server.");
 | 
						|
         Bukkit.reload();
 | 
						|
@@ -0,0 +0,0 @@ public class ReloadCommand extends BukkitCommand {
 | 
						|
     @Override
 | 
						|
     public java.util.List<String> tabComplete(CommandSender sender, String alias, String[] args) throws IllegalArgumentException
 | 
						|
     {
 | 
						|
-        return java.util.Collections.emptyList();
 | 
						|
+        return java.util.Collections.singletonList("permissions"); // Paper
 | 
						|
     }
 | 
						|
     // Spigot End
 | 
						|
+
 | 
						|
 }
 | 
						|
diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
 | 
						|
index 9d7bdeef..21f898bf 100644
 | 
						|
--- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java
 | 
						|
+++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
 | 
						|
@@ -0,0 +0,0 @@ public final class SimplePluginManager implements PluginManager {
 | 
						|
     public void useTimings(boolean use) {
 | 
						|
         co.aikar.timings.Timings.setTimingsEnabled(use); // Spigot
 | 
						|
     }
 | 
						|
+
 | 
						|
+    // Paper start
 | 
						|
+    public void clearPermissions() {
 | 
						|
+        permissions.clear();
 | 
						|
+        defaultPerms.get(true).clear();
 | 
						|
+        defaultPerms.get(false).clear();
 | 
						|
+    }
 | 
						|
+    // Paper end
 | 
						|
+
 | 
						|
 }
 | 
						|
--
 |