diff --git a/jar/pom.xml b/jar/pom.xml
index c37896688..4af6ea884 100644
--- a/jar/pom.xml
+++ b/jar/pom.xml
@@ -54,7 +54,7 @@
us.myles.viaversion.libs.gson
- org.javassist
+ javassist
us.myles.viaversion.libs.javassist
diff --git a/velocity/src/main/java/us/myles/ViaVersion/velocity/providers/VelocityVersionProvider.java b/velocity/src/main/java/us/myles/ViaVersion/velocity/providers/VelocityVersionProvider.java
index e156d7720..04939df8b 100644
--- a/velocity/src/main/java/us/myles/ViaVersion/velocity/providers/VelocityVersionProvider.java
+++ b/velocity/src/main/java/us/myles/ViaVersion/velocity/providers/VelocityVersionProvider.java
@@ -8,28 +8,24 @@ import us.myles.ViaVersion.protocols.base.ProtocolInfo;
import us.myles.ViaVersion.protocols.base.VersionProvider;
import us.myles.ViaVersion.velocity.platform.VelocityViaInjector;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
public class VelocityVersionProvider extends VersionProvider {
+ private static final List VELOCITY_PROTOCOLS = com.velocitypowered.api.network.ProtocolVersion.SUPPORTED_VERSIONS.stream()
+ .map(com.velocitypowered.api.network.ProtocolVersion::getProtocol)
+ .collect(Collectors.toList());
@Override
public int getServerProtocol(UserConnection user) throws Exception {
- // TODO Have one constant list forever until restart? (Might limit plugins if they change this)
- List sorted = new ArrayList<>(com.velocitypowered.api.network.ProtocolVersion.ID_TO_PROTOCOL_CONSTANT.keySet());
- sorted.remove(Integer.valueOf(-1)); // Unknown
- sorted.remove(Integer.valueOf(-2)); // Legacy
- Collections.sort(sorted);
-
int playerVersion = user.get(ProtocolInfo.class).getProtocolVersion();
// Bungee supports it
- if (sorted.contains(playerVersion))
+ if (Collections.binarySearch(VELOCITY_PROTOCOLS, playerVersion) >= 0)
return playerVersion;
// Older than bungee supports, get the lowest version
- if (playerVersion < sorted.get(0)) {
+ if (playerVersion < VELOCITY_PROTOCOLS.get(0)) {
return VelocityViaInjector.getLowestSupportedProtocolVersion();
}
@@ -37,7 +33,7 @@ public class VelocityVersionProvider extends VersionProvider {
// TODO: This needs a better fix, i.e checking ProtocolRegistry to see if it would work.
// This is more of a workaround for snapshot support by bungee.
- for (Integer protocol : Lists.reverse(sorted)) {
+ for (Integer protocol : Lists.reverse(VELOCITY_PROTOCOLS)) {
if (playerVersion > protocol && ProtocolVersion.isRegistered(protocol))
return protocol;
}