mirror of
https://github.com/PaperMC/Waterfall.git
synced 2025-02-15 03:11:45 +01:00
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing BungeeCord Changes: e642b9dd Minecraft 24w13a support db623d10 #3640: Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.1 to 3.2.2 61bb9f5b #3637: Bump org.projectlombok:lombok from 1.18.30 to 1.18.32 9551b453 #3639: Bump io.netty:netty-bom from 4.1.107.Final to 4.1.108.Final dc680b87 #3636: Bump org.apache.maven.plugins:maven-gpg-plugin from 3.1.0 to 3.2.1 156eda78 #3635: Bump org.apache.maven.plugins:maven-compiler-plugin 31be68af Minecraft 24w12a support ffa011c7 #3622: Revert "#3256: Allow - and . in online mode as some accounts still have these…" 22536c11 #3618: Bump org.apache.maven.plugins:maven-shade-plugin from 3.5.1 to 3.5.2 2394e204 #3629: Fix scoreboard team data reading 1b88a847 Minecraft 24w10a support
112 lines
4.1 KiB
Diff
112 lines
4.1 KiB
Diff
From 5343292903efcc962a2a510267018bb5872c3995 Mon Sep 17 00:00:00 2001
|
|
From: Johannes Donath <johannesd@torchmind.com>
|
|
Date: Sat, 4 Jul 2015 06:31:33 +0200
|
|
Subject: [PATCH] Add basic support for configurable tab-complete throttling
|
|
|
|
|
|
diff --git a/api/src/main/java/net/md_5/bungee/api/ProxyConfig.java b/api/src/main/java/net/md_5/bungee/api/ProxyConfig.java
|
|
index 6495e7f2..b6845bc4 100644
|
|
--- a/api/src/main/java/net/md_5/bungee/api/ProxyConfig.java
|
|
+++ b/api/src/main/java/net/md_5/bungee/api/ProxyConfig.java
|
|
@@ -130,4 +130,21 @@ public interface ProxyConfig
|
|
// Waterfall Options
|
|
//
|
|
|
|
+ // Throttling options
|
|
+
|
|
+ /**
|
|
+ * How often tab-complete packets can be sent.
|
|
+ * <br>
|
|
+ * Values in milliseconds.
|
|
+ *
|
|
+ * @return how often tab-complete packets can be sent in milliseconds
|
|
+ */
|
|
+ int getTabThrottle();
|
|
+
|
|
+ /**
|
|
+ * Should we disable the tab completion limit for 1.13+ clients
|
|
+ *
|
|
+ * @return should we disable the tab completion limit for 1.13+ clients
|
|
+ */
|
|
+ boolean isDisableModernTabLimiter();
|
|
}
|
|
diff --git a/proxy/src/main/java/io/github/waterfallmc/waterfall/conf/WaterfallConfiguration.java b/proxy/src/main/java/io/github/waterfallmc/waterfall/conf/WaterfallConfiguration.java
|
|
index 741ebfde..91743f01 100644
|
|
--- a/proxy/src/main/java/io/github/waterfallmc/waterfall/conf/WaterfallConfiguration.java
|
|
+++ b/proxy/src/main/java/io/github/waterfallmc/waterfall/conf/WaterfallConfiguration.java
|
|
@@ -7,11 +7,37 @@ import java.io.File;
|
|
|
|
public class WaterfallConfiguration extends Configuration {
|
|
|
|
+ /*
|
|
+ * Throttling options
|
|
+ * Helps prevent players from overloading the servers behind us
|
|
+ */
|
|
+
|
|
+ /**
|
|
+ * How often players are allowed to send tab throttle.
|
|
+ * Value in milliseconds.
|
|
+ * <p/>
|
|
+ * Default is one packet per second.
|
|
+ */
|
|
+ private int tabThrottle = 1000;
|
|
+ private boolean disableModernTabLimiter = true;
|
|
+
|
|
@Override
|
|
public void load() {
|
|
super.load();
|
|
YamlConfig config = new YamlConfig(new File("waterfall.yml"));
|
|
config.load(false); // Load, but no permissions
|
|
+ // Throttling options
|
|
+ tabThrottle = config.getInt("throttling.tab_complete", tabThrottle);
|
|
+ disableModernTabLimiter = config.getBoolean("disable_modern_tab_limiter", disableModernTabLimiter);
|
|
}
|
|
|
|
+ @Override
|
|
+ public int getTabThrottle() {
|
|
+ return tabThrottle;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean isDisableModernTabLimiter() {
|
|
+ return disableModernTabLimiter;
|
|
+ }
|
|
}
|
|
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java
|
|
index f80515d4..050cc29b 100644
|
|
--- a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java
|
|
+++ b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java
|
|
@@ -51,6 +51,8 @@ public class UpstreamBridge extends PacketHandler
|
|
private final ProxyServer bungee;
|
|
private final UserConnection con;
|
|
|
|
+ private long lastTabCompletion = -1;
|
|
+
|
|
public UpstreamBridge(ProxyServer bungee, UserConnection con)
|
|
{
|
|
this.bungee = bungee;
|
|
@@ -230,6 +232,20 @@ public class UpstreamBridge extends PacketHandler
|
|
@Override
|
|
public void handle(TabCompleteRequest tabComplete) throws Exception
|
|
{
|
|
+ // Waterfall start - tab limiter
|
|
+ if ( bungee.getConfig().getTabThrottle() > 0 &&
|
|
+ ( con.getPendingConnection().getVersion() >= ProtocolConstants.MINECRAFT_1_13
|
|
+ && !bungee.getConfig().isDisableModernTabLimiter()))
|
|
+ {
|
|
+ long now = System.currentTimeMillis();
|
|
+ if ( lastTabCompletion > 0 && (now - lastTabCompletion) <= bungee.getConfig().getTabThrottle() )
|
|
+ {
|
|
+ throw CancelSendSignal.INSTANCE;
|
|
+ }
|
|
+ lastTabCompletion = now;
|
|
+ }
|
|
+
|
|
+ // Waterfall end - tab limiter
|
|
List<String> suggestions = new ArrayList<>();
|
|
boolean isRegisteredCommand = false;
|
|
boolean isCommand = tabComplete.getCursor().startsWith( "/" );
|
|
--
|
|
2.44.0
|
|
|