From a9ac291c7d6353d182200679c40fc86cc529dd5b Mon Sep 17 00:00:00 2001 From: Petr Ilin Date: Mon, 9 Jan 2023 02:00:54 +0300 Subject: [PATCH] Velocity 218+ build support --- build.gradle | 2 +- plugin/src/main/java/net/elytrium/limboapi/LimboAPI.java | 4 +++- .../elytrium/limboapi/injection/login/LoginTasksQueue.java | 5 +++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index b307d5df..2b9a1815 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ allprojects { apply(plugin: "org.cadixdev.licenser") setGroup("net.elytrium") - setVersion("1.0.8") + setVersion("1.0.9-SNAPSHOT") compileJava { getOptions().setEncoding("UTF-8") diff --git a/plugin/src/main/java/net/elytrium/limboapi/LimboAPI.java b/plugin/src/main/java/net/elytrium/limboapi/LimboAPI.java index 36705734..a339b4dc 100644 --- a/plugin/src/main/java/net/elytrium/limboapi/LimboAPI.java +++ b/plugin/src/main/java/net/elytrium/limboapi/LimboAPI.java @@ -32,6 +32,7 @@ import com.velocitypowered.natives.util.Natives; import com.velocitypowered.proxy.VelocityServer; import com.velocitypowered.proxy.connection.MinecraftConnection; +import com.velocitypowered.proxy.connection.client.InitialConnectSessionHandler; import com.velocitypowered.proxy.event.VelocityEventManager; import com.velocitypowered.proxy.network.Connections; import com.velocitypowered.proxy.protocol.MinecraftPacket; @@ -159,8 +160,9 @@ public LimboAPI(Logger logger, ProxyServer server, Metrics.Factory metricsFactor this.nextServer = new HashMap<>(); this.initialID = new HashMap<>(); + boolean temp761VelocityUpdateFlag = InitialConnectSessionHandler.class.getDeclaredConstructors()[0].getParameterCount() != 2; int maximumProtocolVersionNumber = ProtocolVersion.MAXIMUM_VERSION.getProtocol(); - if (maximumProtocolVersionNumber < SUPPORTED_MAXIMUM_PROTOCOL_VERSION_NUMBER) { + if (temp761VelocityUpdateFlag || maximumProtocolVersionNumber < SUPPORTED_MAXIMUM_PROTOCOL_VERSION_NUMBER) { LOGGER.error("Please update Velocity (https://papermc.io/downloads#Velocity). LimboAPI support: https://ely.su/discord"); this.server.shutdown(); } else if (maximumProtocolVersionNumber != SUPPORTED_MAXIMUM_PROTOCOL_VERSION_NUMBER) { diff --git a/plugin/src/main/java/net/elytrium/limboapi/injection/login/LoginTasksQueue.java b/plugin/src/main/java/net/elytrium/limboapi/injection/login/LoginTasksQueue.java index 0b033548..7d72e26a 100644 --- a/plugin/src/main/java/net/elytrium/limboapi/injection/login/LoginTasksQueue.java +++ b/plugin/src/main/java/net/elytrium/limboapi/injection/login/LoginTasksQueue.java @@ -234,7 +234,8 @@ private void initialize(MinecraftConnection connection) throws Throwable { } else { if (this.server.registerConnection(this.player)) { try { - connection.setSessionHandler((InitialConnectSessionHandler) INITIAL_CONNECT_SESSION_HANDLER_CONSTRUCTOR.invokeExact(this.player)); + connection.setSessionHandler( + (InitialConnectSessionHandler) INITIAL_CONNECT_SESSION_HANDLER_CONSTRUCTOR.invokeExact(this.player, this.server)); this.server.getEventManager().fire(new PostLoginEvent(this.player)).thenAccept(postLoginEvent -> { try { MC_CONNECTION_FIELD.set(this.handler, connection); @@ -270,7 +271,7 @@ private void initialize(MinecraftConnection connection) throws Throwable { INITIAL_CONNECT_SESSION_HANDLER_CONSTRUCTOR = MethodHandles .privateLookupIn(InitialConnectSessionHandler.class, MethodHandles.lookup()) - .findConstructor(InitialConnectSessionHandler.class, MethodType.methodType(void.class, ConnectedPlayer.class)); + .findConstructor(InitialConnectSessionHandler.class, MethodType.methodType(void.class, ConnectedPlayer.class, VelocityServer.class)); CONNECT_TO_INITIAL_SERVER_METHOD = MethodHandles.privateLookupIn(AuthSessionHandler.class, MethodHandles.lookup()) .findVirtual(AuthSessionHandler.class, "connectToInitialServer", MethodType.methodType(CompletableFuture.class, ConnectedPlayer.class));