Skip to content

Commit 2aad131

Browse files
committed
Add config option for command spam whitelist
1 parent 894631f commit 2aad131

File tree

5 files changed

+26
-10
lines changed

5 files changed

+26
-10
lines changed

paper-server/patches/features/0016-Moonrise-optimisation-patches.patch

+2-2
Original file line numberDiff line numberDiff line change
@@ -27496,7 +27496,7 @@ index d1f235ebd835f58cf0c703c3a64d29825d98e183..080091efc19bc768bb9a660f366c42e8
2749627496
}
2749727497

2749827498
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
27499-
index f054ea710108e5017bc48fdda5f180a04f5b55e2..f44600604a7bf68c990cd74a1ac2d7900ff6e88e 100644
27499+
index 0bb610f12e3ddda649ecb5ad62ffdc7bfd243223..19428343b37c9b739b3d28984d52e257f85f253f 100644
2750027500
--- a/net/minecraft/server/level/ServerPlayer.java
2750127501
+++ b/net/minecraft/server/level/ServerPlayer.java
2750227502
@@ -178,7 +178,7 @@ import net.minecraft.world.scores.Team;
@@ -27508,7 +27508,7 @@ index f054ea710108e5017bc48fdda5f180a04f5b55e2..f44600604a7bf68c990cd74a1ac2d790
2750827508
private static final Logger LOGGER = LogUtils.getLogger();
2750927509
private static final int NEUTRAL_MOB_DEATH_NOTIFICATION_RADII_XZ = 32;
2751027510
private static final int NEUTRAL_MOB_DEATH_NOTIFICATION_RADII_Y = 10;
27511-
@@ -388,6 +388,36 @@ public class ServerPlayer extends Player {
27511+
@@ -395,6 +395,36 @@ public class ServerPlayer extends Player {
2751227512
public @Nullable String clientBrandName = null; // Paper - Brand support
2751327513
public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - Add API for quit reason; there are a lot of changes to do if we change all methods leading to the event
2751427514

paper-server/patches/features/0026-Optional-per-player-mob-spawns.patch

+2-2
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,10 @@ index 87d4291a3944f706a694536da6de0f28c548ab8d..5576bf1d1d70ab7a010653d3207909b5
7878
profiler.popPush("spawnAndTick");
7979
boolean _boolean = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit
8080
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
81-
index 1fe212e8584c177b49e83f29b1a869b534914348..cd6b5176f34248f844f0e591875701bd08f455ce 100644
81+
index 02fb30a3adf92de0795aee213caf94a228b01ca0..67f6e40216e0be063a3cfb61427f095f7c74d785 100644
8282
--- a/net/minecraft/server/level/ServerPlayer.java
8383
+++ b/net/minecraft/server/level/ServerPlayer.java
84-
@@ -368,6 +368,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
84+
@@ -375,6 +375,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
8585
public boolean queueHealthUpdatePacket;
8686
public net.minecraft.network.protocol.game.ClientboundSetHealthPacket queuedHealthUpdatePacket;
8787
// Paper end - cancellable death event

paper-server/patches/features/0027-Improve-cancelling-PreCreatureSpawnEvent-with-per-pl.patch

+2-2
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ index 5576bf1d1d70ab7a010653d3207909b5de867e70..6540b2d6a1062d883811ce240c49d30d
6060
spawnState = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, null, true);
6161
} else {
6262
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
63-
index cd6b5176f34248f844f0e591875701bd08f455ce..f347ff8d863f4bcef46604c757de112cb3fe445c 100644
63+
index 67f6e40216e0be063a3cfb61427f095f7c74d785..3de65c4025be91d938a350c884975cb6edc234d3 100644
6464
--- a/net/minecraft/server/level/ServerPlayer.java
6565
+++ b/net/minecraft/server/level/ServerPlayer.java
66-
@@ -372,6 +372,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
66+
@@ -379,6 +379,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
6767
public static final int MOBCATEGORY_TOTAL_ENUMS = net.minecraft.world.entity.MobCategory.values().length;
6868
public final int[] mobCounts = new int[MOBCATEGORY_TOTAL_ENUMS];
6969
// Paper end - Optional per player mob spawns

paper-server/patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch

+6-4
Original file line numberDiff line numberDiff line change
@@ -1561,7 +1561,7 @@
15611561
}
15621562

15631563
return optional;
1564-
@@ -1451,22 +_,155 @@
1564+
@@ -1451,22 +_,157 @@
15651565
return false;
15661566
}
15671567

@@ -1707,9 +1707,11 @@
17071707
+ // Spigot start - spam exclusions
17081708
+ private void detectRateSpam(String message) {
17091709
+ // CraftBukkit start - replaced with thread safe throttle
1710-
+ for (String exclude : org.spigotmc.SpigotConfig.spamExclusions) {
1711-
+ if (exclude != null && message.startsWith(exclude)) {
1712-
+ return;
1710+
+ if (org.spigotmc.SpigotConfig.enableSpamExclusions) {
1711+
+ for (String exclude : org.spigotmc.SpigotConfig.spamExclusions) {
1712+
+ if (exclude != null && message.startsWith(exclude)) {
1713+
+ return;
1714+
+ }
17131715
+ }
17141716
+ }
17151717
+ // Spigot end

paper-server/src/main/java/org/spigotmc/SpigotConfig.java

+14
Original file line numberDiff line numberDiff line change
@@ -242,9 +242,23 @@ private static void playerShuffle() {
242242
SpigotConfig.playerShuffle = SpigotConfig.getInt("settings.player-shuffle", 0);
243243
}
244244

245+
public static boolean enableSpamExclusions = false;
245246
public static List<String> spamExclusions;
246247
private static void spamExclusions() {
247248
SpigotConfig.spamExclusions = SpigotConfig.getList("commands.spam-exclusions", List.of("/skill"));
249+
Object enabled = SpigotConfig.config.get("commands.enable-spam-exclusions");
250+
if (enabled instanceof Boolean value) {
251+
SpigotConfig.enableSpamExclusions = value;
252+
} else {
253+
if (spamExclusions.size() == 1 && spamExclusions.getFirst().equals("/skill")) {
254+
SpigotConfig.enableSpamExclusions = false;
255+
SpigotConfig.set("commands.enable-spam-exclusions", false);
256+
} else {
257+
SpigotConfig.enableSpamExclusions = true;
258+
SpigotConfig.set("commands.enable-spam-exclusions", true);
259+
}
260+
}
261+
248262
}
249263

250264
public static boolean silentCommandBlocks;

0 commit comments

Comments
 (0)