From d0300de136e747520dccf6f3485448b34bdd21cf Mon Sep 17 00:00:00 2001 From: Myles Date: Sat, 17 Nov 2018 13:08:51 +0000 Subject: [PATCH] Prevent initialization error --- .../main/java/us/myles/ViaVersion/VelocityPlugin.java | 3 ++- .../ViaVersion/velocity/platform/VelocityViaConfig.java | 9 +++++++-- .../velocity/platform/VelocityViaInjector.java | 4 ++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/velocity/src/main/java/us/myles/ViaVersion/VelocityPlugin.java b/velocity/src/main/java/us/myles/ViaVersion/VelocityPlugin.java index f16cad720..94b131740 100644 --- a/velocity/src/main/java/us/myles/ViaVersion/VelocityPlugin.java +++ b/velocity/src/main/java/us/myles/ViaVersion/VelocityPlugin.java @@ -56,7 +56,7 @@ public class VelocityPlugin implements ViaPlatform { @Inject @DataDirectory private Path configDir; - private VelocityViaAPI api = new VelocityViaAPI(); + private VelocityViaAPI api; private VelocityViaConfig conf; @Subscribe @@ -64,6 +64,7 @@ public class VelocityPlugin implements ViaPlatform { PROXY = proxy; VelocityCommandHandler commandHandler = new VelocityCommandHandler(); PROXY.getCommandManager().register(commandHandler, "viaver", "vvvelocity", "viaversion"); + api = new VelocityViaAPI(); conf = new VelocityViaConfig(configDir.toFile()); logger = new LoggerWrapper(loggerslf4j); Via.init(ViaManager.builder() diff --git a/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaConfig.java b/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaConfig.java index 373bd5c61..9d8da33f0 100644 --- a/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaConfig.java +++ b/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaConfig.java @@ -1,7 +1,6 @@ package us.myles.ViaVersion.velocity.platform; import us.myles.ViaVersion.api.ViaVersionConfig; -import us.myles.ViaVersion.api.protocol.ProtocolRegistry; import us.myles.ViaVersion.api.protocol.ProtocolVersion; import us.myles.ViaVersion.util.Config; @@ -49,7 +48,13 @@ public class VelocityViaConfig extends Config implements ViaVersionConfig { } // Ensure default exists if (!servers.containsKey("default")) { - servers.put("default", ProtocolRegistry.SERVER_PROTOCOL); + // Side note: This doesn't use ProtocolRegistry as it doesn't know the protocol version at boot. + try { + servers.put("default", VelocityViaInjector.getLowestSupportedProtocolVersion()); + } catch (Exception e) { + // Something went very wrong + e.printStackTrace(); + } } // Put back config.put("velocity-servers", servers); diff --git a/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaInjector.java b/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaInjector.java index 78e5a532b..4673d23c4 100644 --- a/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaInjector.java +++ b/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaInjector.java @@ -26,6 +26,10 @@ public class VelocityViaInjector implements ViaInjector { @Override public int getServerProtocolVersion() throws Exception { + return getLowestSupportedProtocolVersion(); + } + + public static int getLowestSupportedProtocolVersion() throws Exception { return ReflectionUtil.getStatic(Class.forName("com.velocitypowered.proxy.protocol.ProtocolConstants"), "MINIMUM_GENERIC_VERSION", int.class); }