Make /reload require typing confirm to actually reload

This commit is contained in:
Aikar 2016-03-21 21:40:29 -04:00
parent 1d83dde411
commit 646b62a220
2 changed files with 21 additions and 16 deletions

View file

@ -1,9 +1,9 @@
From 0c61689b93f5228d8c03e5ba96642b7ec1dcfb3b Mon Sep 17 00:00:00 2001
From 6b8f5a4b05511bf5b5b10776f02951b702c56fb9 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
Subject: [PATCH] Add command to reload permissions.yml and require confirm to
reload
https://github.com/PaperMC/Paper/issues/49
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
index f93ca2e..5e31665 100644
@ -35,10 +35,10 @@ index 91bde81..6b1f2a4 100644
+ 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 c70d512..7f32a7c 100644
index c70d512..f48187a 100644
--- a/src/main/java/org/bukkit/command/defaults/ReloadCommand.java
+++ b/src/main/java/org/bukkit/command/defaults/ReloadCommand.java
@@ -11,15 +11,28 @@ public class ReloadCommand extends BukkitCommand {
@@ -11,15 +11,33 @@ public class ReloadCommand extends BukkitCommand {
public ReloadCommand(String name) {
super(name);
this.description = "Reloads the server configuration and plugins";
@ -53,22 +53,27 @@ index c70d512..7f32a7c 100644
+
if (!testPermission(sender)) return true;
+ // Paper start - Reload permissions.yml (PAPER-49)
+ // Paper start - Reload permissions.yml & require confirm
+ boolean confirmed = false;
+ if (args.length == 1) {
+ if (args[0].equalsIgnoreCase("permissions")) {
+ Bukkit.getServer().reloadPermissions();
+ Command.broadcastCommandMessage(sender, ChatColor.GREEN + "Permissions successfully reloaded.");
+ return true;
+ } else {
+ return false;
+ } else if ("confirm".equalsIgnoreCase(args[0])) {
+ confirmed = 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();
@@ -32,7 +45,8 @@ public class ReloadCommand extends BukkitCommand {
@@ -32,7 +50,8 @@ public class ReloadCommand extends BukkitCommand {
@Override
public java.util.List<String> tabComplete(CommandSender sender, String alias, String[] args) throws IllegalArgumentException
{
@ -97,5 +102,5 @@ index 49f5872..e988a7c 100644
+
}
--
2.5.0
2.7.4

View file

@ -1,4 +1,4 @@
From bbaee82283b29db1ea18d5b55d9ae1fdae408f91 Mon Sep 17 00:00:00 2001
From 6e8b4f64650ff93e2a9ae61032fc47165a7ab07b Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
Date: Tue, 1 Mar 2016 23:45:08 -0600
Subject: [PATCH] FallingBlock and TNTPrimed source location API
@ -193,10 +193,10 @@ index 564ea37..1820c7b 100644
public EntityLiving getSource() {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 83e3003..25edfb8 100644
index a487c2f..33c3428 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -921,7 +921,10 @@ public class CraftWorld implements World {
@@ -916,7 +916,10 @@ public class CraftWorld implements World {
double y = location.getBlockY() + 0.5;
double z = location.getBlockZ() + 0.5;
@ -208,7 +208,7 @@ index 83e3003..25edfb8 100644
entity.ticksLived = 1;
world.addEntity(entity, SpawnReason.CUSTOM);
@@ -957,7 +960,10 @@ public class CraftWorld implements World {
@@ -952,7 +955,10 @@ public class CraftWorld implements World {
int type = CraftMagicNumbers.getId(blockData.getBlock());
int data = blockData.getBlock().toLegacyData(blockData);
@ -220,7 +220,7 @@ index 83e3003..25edfb8 100644
} else if (Projectile.class.isAssignableFrom(clazz)) {
if (Snowball.class.isAssignableFrom(clazz)) {
entity = new EntitySnowball(world, x, y, z);
@@ -1162,7 +1168,8 @@ public class CraftWorld implements World {
@@ -1157,7 +1163,8 @@ public class CraftWorld implements World {
throw new IllegalArgumentException("Cannot spawn hanging entity for " + clazz.getName() + " at " + location);
}
} else if (TNTPrimed.class.isAssignableFrom(clazz)) {
@ -263,5 +263,5 @@ index c493c9c..eea3238 100644
+ // Paper end
}
--
2.5.0
2.7.4