diff --git a/core/src/main/java/org/geysermc/geyser/network/netty/LocalSession.java b/core/src/main/java/org/geysermc/geyser/network/netty/LocalSession.java
index 84838afc7..0781a04b2 100644
--- a/core/src/main/java/org/geysermc/geyser/network/netty/LocalSession.java
+++ b/core/src/main/java/org/geysermc/geyser/network/netty/LocalSession.java
@@ -58,7 +58,7 @@ public final class LocalSession extends TcpSession {
     }
 
     @Override
-    public void connect() {
+    public void connect(boolean wait) {
         if (this.disconnected) {
             throw new IllegalStateException("Connection has already been disconnected.");
         }
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index ff15dafc1..9f0efa3c3 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -845,7 +845,7 @@ public class GeyserSession implements GeyserConnection, CommandSender {
             // We're going to connect through the JVM and not through TCP
             downstream = new LocalSession(this.remoteAddress, this.remotePort,
                     geyser.getBootstrap().getSocketAddress(), upstream.getAddress().getAddress().getHostAddress(),
-                    this.protocol, this.downstream.getCodecHelper());
+                    this.protocol, this.protocol.createHelper());
         } else {
             downstream = new TcpClientSession(this.remoteAddress, this.remotePort, this.protocol);
             disableSrvResolving();
@@ -1017,7 +1017,7 @@ public class GeyserSession implements GeyserConnection, CommandSender {
             setDaylightCycle(true);
         }
 
-        downstream.connect();
+        downstream.connect(false);
     }
 
     public void disconnect(String reason) {