spigot/CraftBukkit-Patches/0044-Spam-Filter-Exclusions.patch
2022-08-06 07:40:00 +10:00

78 lines
3.2 KiB
Diff

From cac9e64c5cb1a10f964cc1b11c21ddab000d7f7a Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 8 Feb 2014 08:13:40 +0000
Subject: [PATCH] Spam Filter Exclusions
diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java
index 4472066f9..4350a7b78 100644
--- a/src/main/java/net/minecraft/server/network/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java
@@ -1882,7 +1882,7 @@ public class PlayerConnection implements ServerPlayerConnection, TickablePacketL
if (this.tryHandleChat(serverboundchatcommandpacket.command(), serverboundchatcommandpacket.timeStamp(), serverboundchatcommandpacket.lastSeenMessages())) {
this.server.submit(() -> {
this.performChatCommand(serverboundchatcommandpacket);
- this.detectRateSpam();
+ this.detectRateSpam("/" + serverboundchatcommandpacket.command()); // Spigot
});
}
@@ -2178,7 +2178,7 @@ public class PlayerConnection implements ServerPlayerConnection, TickablePacketL
}
// this.server.getPlayerList().broadcastChatMessage(playerchatmessage, this.player, ChatMessageType.bind(ChatMessageType.CHAT, (Entity) this.player));
// CraftBukkit end
- this.detectRateSpam();
+ this.detectRateSpam(s); // Spigot
}
private boolean verifyChatMessage(PlayerChatMessage playerchatmessage) {
@@ -2204,8 +2204,19 @@ public class PlayerConnection implements ServerPlayerConnection, TickablePacketL
return true;
}
- private void detectRateSpam() {
+ // Spigot start - spam exclusions
+ private void detectRateSpam(String s) {
// CraftBukkit start - replaced with thread safe throttle
+ boolean counted = true;
+ for ( String exclude : org.spigotmc.SpigotConfig.spamExclusions )
+ {
+ if ( exclude != null && s.startsWith( exclude ) )
+ {
+ counted = false;
+ break;
+ }
+ }
+ // Spigot end
// this.chatSpamTickCount += 20;
if (this.chatSpamTickCount.addAndGet(20) > 200 && !this.server.getPlayerList().isOp(this.player.getGameProfile())) {
// CraftBukkit end
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
index 245a9e5e9..5f0b27ad2 100644
--- a/src/main/java/org/spigotmc/SpigotConfig.java
+++ b/src/main/java/org/spigotmc/SpigotConfig.java
@@ -6,6 +6,7 @@ import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -284,4 +285,13 @@ public class SpigotConfig
{
playerShuffle = getInt( "settings.player-shuffle", 0 );
}
+
+ public static List<String> spamExclusions;
+ private static void spamExclusions()
+ {
+ spamExclusions = getList( "commands.spam-exclusions", Arrays.asList( new String[]
+ {
+ "/skill"
+ } ) );
+ }
}
--
2.34.1