84 lines
4.1 KiB
Diff
84 lines
4.1 KiB
Diff
From cbe35161f2e8a59c22aca9a0d5412674d128df41 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Wed, 21 Mar 2018 19:57:10 -0400
|
|
Subject: [PATCH] Configurable Unrestricted Signs
|
|
|
|
Bukkit restricts command execution of signs to test if the sender
|
|
has permission to run the specified command. This breaks vanilla
|
|
maps that use signs to intentionally run as elevated permission.
|
|
|
|
Bukkit provides an unrestricted advancements setting, so this setting
|
|
compliments that one and allows for unrestricted signs.
|
|
|
|
We still filter sign update packets to strip out commands at edit phase,
|
|
however there is no sanity in ever expecting creative mode to not be
|
|
able to create signs with any command.
|
|
|
|
Creative servers should absolutely never enable this.
|
|
Non creative servers, enable at own risk!!!
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/TileEntitySign.java b/src/main/java/net/minecraft/server/TileEntitySign.java
|
|
index 3f2c5b2d5..67bd3bcbe 100644
|
|
--- a/src/main/java/net/minecraft/server/TileEntitySign.java
|
|
+++ b/src/main/java/net/minecraft/server/TileEntitySign.java
|
|
@@ -38,7 +38,7 @@ public class TileEntitySign extends TileEntity {
|
|
public void load(NBTTagCompound nbttagcompound) {
|
|
this.isEditable = false;
|
|
super.load(nbttagcompound);
|
|
- ICommandListener icommandlistener = new ICommandListener() {
|
|
+ ICommandListener icommandlistener = new ISignCommandListener() { // Paper
|
|
public String getName() {
|
|
return "Sign";
|
|
}
|
|
@@ -125,7 +125,7 @@ public class TileEntitySign extends TileEntity {
|
|
}
|
|
|
|
public boolean b(final EntityHuman entityhuman) {
|
|
- ICommandListener icommandlistener = new ICommandListener() {
|
|
+ ICommandListener icommandlistener = new ISignCommandListener() { // Paper
|
|
public String getName() {
|
|
return entityhuman.getName();
|
|
}
|
|
@@ -200,4 +200,5 @@ public class TileEntitySign extends TileEntity {
|
|
public CommandObjectiveExecutor f() {
|
|
return this.i;
|
|
}
|
|
+ public interface ISignCommandListener extends ICommandListener {} // Paper
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
index e86c16755..6095948e8 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
@@ -175,6 +175,7 @@ public final class CraftServer implements Server {
|
|
private CraftIconCache icon;
|
|
private boolean overrideAllCommandBlockCommands = false;
|
|
private boolean unrestrictedAdvancements;
|
|
+ private boolean unrestrictedSignCommands; // Paper
|
|
private final List<CraftPlayer> playerView;
|
|
public int reloadCount;
|
|
public static Exception excessiveVelEx; // Paper - Velocity warnings
|
|
@@ -253,6 +254,12 @@ public final class CraftServer implements Server {
|
|
saveCommandsConfig();
|
|
overrideAllCommandBlockCommands = commandsConfiguration.getStringList("command-block-overrides").contains("*");
|
|
unrestrictedAdvancements = commandsConfiguration.getBoolean("unrestricted-advancements");
|
|
+ // Paper start
|
|
+ unrestrictedSignCommands = commandsConfiguration.getBoolean("unrestricted-signs");
|
|
+ if (unrestrictedSignCommands) {
|
|
+ logger.warning("Warning: Commands are no longer restricted on signs. If you allow players to use Creative Mode, there may be risk of players bypassing permissions. Use this setting at your own risk!!!!");
|
|
+ }
|
|
+ // Paper end
|
|
pluginManager.useTimings(configuration.getBoolean("settings.plugin-profiling"));
|
|
monsterSpawn = configuration.getInt("spawn-limits.monsters");
|
|
animalSpawn = configuration.getInt("spawn-limits.animals");
|
|
@@ -270,6 +277,7 @@ public final class CraftServer implements Server {
|
|
listener = ((CommandListenerWrapper) listener).base;
|
|
}
|
|
|
|
+ if (unrestrictedSignCommands && listener instanceof TileEntitySign.ISignCommandListener) return true; // Paper
|
|
return unrestrictedAdvancements && listener instanceof AdvancementRewards.AdvancementCommandListener;
|
|
}
|
|
|
|
--
|
|
2.18.0
|
|
|