Mirror von
https://github.com/PaperMC/Velocity.git
synchronisiert 2024-11-16 21:10:30 +01:00
Allow tweaking compression.
Dieser Commit ist enthalten in:
Ursprung
0191b74840
Commit
68ded7ca7f
@ -29,12 +29,15 @@ public class VelocityConfiguration {
|
||||
private final IPForwardingMode ipForwardingMode;
|
||||
private final Map<String, String> servers;
|
||||
private final List<String> attemptConnectionOrder;
|
||||
private final int compressionThreshold;
|
||||
private final int compressionLevel;
|
||||
|
||||
private Component motdAsComponent;
|
||||
|
||||
private VelocityConfiguration(String bind, String motd, int showMaxPlayers, boolean onlineMode,
|
||||
IPForwardingMode ipForwardingMode, Map<String, String> servers,
|
||||
List<String> attemptConnectionOrder) {
|
||||
List<String> attemptConnectionOrder, int compressionThreshold,
|
||||
int compressionLevel) {
|
||||
this.bind = bind;
|
||||
this.motd = motd;
|
||||
this.showMaxPlayers = showMaxPlayers;
|
||||
@ -42,6 +45,8 @@ public class VelocityConfiguration {
|
||||
this.ipForwardingMode = ipForwardingMode;
|
||||
this.servers = servers;
|
||||
this.attemptConnectionOrder = attemptConnectionOrder;
|
||||
this.compressionThreshold = compressionThreshold;
|
||||
this.compressionLevel = compressionLevel;
|
||||
}
|
||||
|
||||
public boolean validate() {
|
||||
@ -102,6 +107,18 @@ public class VelocityConfiguration {
|
||||
valid = false;
|
||||
}
|
||||
|
||||
if (compressionLevel < -1 || compressionLevel > 9) {
|
||||
logger.error("Invalid compression level {}", compressionLevel);
|
||||
} else if (compressionLevel == 0) {
|
||||
logger.warn("ALL packets going through the proxy are going to be uncompressed. This will increase bandwidth usage.");
|
||||
}
|
||||
|
||||
if (compressionThreshold < -1) {
|
||||
logger.error("Invalid compression threshold {}", compressionLevel);
|
||||
} else if (compressionThreshold == 0) {
|
||||
logger.warn("ALL packets going through the proxy are going to be compressed. This may hurt performance.");
|
||||
}
|
||||
|
||||
return valid;
|
||||
}
|
||||
|
||||
@ -144,6 +161,14 @@ public class VelocityConfiguration {
|
||||
return attemptConnectionOrder;
|
||||
}
|
||||
|
||||
public int getCompressionThreshold() {
|
||||
return compressionThreshold;
|
||||
}
|
||||
|
||||
public int getCompressionLevel() {
|
||||
return compressionLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "VelocityConfiguration{" +
|
||||
@ -179,7 +204,9 @@ public class VelocityConfiguration {
|
||||
toml.getBoolean("online-mode"),
|
||||
IPForwardingMode.valueOf(toml.getString("ip-forwarding").toUpperCase()),
|
||||
ImmutableMap.copyOf(servers),
|
||||
toml.getTable("servers").getList("try"));
|
||||
toml.getTable("servers").getList("try"),
|
||||
toml.getTable("advanced").getLong("compression-threshold", 1024L).intValue(),
|
||||
toml.getTable("advanced").getLong("compression-level", -1L).intValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package com.velocitypowered.proxy.connection;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.velocitypowered.natives.compression.VelocityCompressor;
|
||||
import com.velocitypowered.natives.util.Natives;
|
||||
import com.velocitypowered.proxy.VelocityServer;
|
||||
import com.velocitypowered.proxy.protocol.PacketWrapper;
|
||||
import com.velocitypowered.proxy.protocol.StateRegistry;
|
||||
import com.velocitypowered.natives.encryption.JavaVelocityCipher;
|
||||
@ -20,7 +21,6 @@ import javax.crypto.SecretKey;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
|
||||
import java.security.GeneralSecurityException;
|
||||
import java.util.zip.Deflater;
|
||||
|
||||
import static com.velocitypowered.network.Connections.CIPHER_DECODER;
|
||||
import static com.velocitypowered.network.Connections.CIPHER_ENCODER;
|
||||
@ -193,7 +193,8 @@ public class MinecraftConnection extends ChannelInboundHandlerAdapter {
|
||||
return;
|
||||
}
|
||||
|
||||
VelocityCompressor compressor = Natives.compressor.get().create(Deflater.DEFAULT_COMPRESSION);
|
||||
int level = VelocityServer.getServer().getConfiguration().getCompressionLevel();
|
||||
VelocityCompressor compressor = Natives.compressor.get().create(level);
|
||||
MinecraftCompressEncoder encoder = new MinecraftCompressEncoder(threshold, compressor);
|
||||
MinecraftCompressDecoder decoder = new MinecraftCompressDecoder(threshold, compressor);
|
||||
|
||||
|
@ -125,8 +125,9 @@ public class LoginSessionHandler implements MinecraftSessionHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
inbound.write(new SetCompression(256));
|
||||
inbound.setCompressionThreshold(256);
|
||||
int threshold = VelocityServer.getServer().getConfiguration().getCompressionThreshold();
|
||||
inbound.write(new SetCompression(threshold));
|
||||
inbound.setCompressionThreshold(threshold);
|
||||
|
||||
ServerLoginSuccess success = new ServerLoginSuccess();
|
||||
success.setUsername(profile.getName());
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren