From 533df1198406e58ed0b986c22baee395b96d3107 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Elias=20M=C3=BCller?= <elias@elias-mueller.com>
Date: Mon, 23 Oct 2023 14:21:15 +0200
Subject: [PATCH] Bungeecord join issues solved Fixed return-server not working

---
 build.gradle                                  |  1 +
 .../eu/mhsl/craftattack/worldmuseum/Main.java | 15 +++++++-------
 .../util/BunggeCordComunicator.java           | 20 +++++++------------
 3 files changed, 16 insertions(+), 20 deletions(-)

diff --git a/build.gradle b/build.gradle
index 36c5a57..29642ee 100644
--- a/build.gradle
+++ b/build.gradle
@@ -14,6 +14,7 @@ repositories {
 dependencies {
     implementation 'com.github.waxeria:Minestom:e0427a36f3'
     implementation 'org.jctools:jctools-core:4.0.1'
+    implementation 'com.google.guava:guava:31.0.1-jre'
 }
 
 tasks {
diff --git a/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java b/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java
index 8f71d17..6c6d220 100755
--- a/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java
+++ b/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java
@@ -76,14 +76,15 @@ public class Main {
             final MuseumPlayer player = (MuseumPlayer) event.getPlayer();
             final VoidWorld voidWorld = new VoidWorld();
 
-            player.setPermissionLevel(4);
-            player.setRespawnPoint(voidWorld.getSpawn());
-            player.setGameMode(GameMode.SPECTATOR);
-            player.setAllowFlying(true);
-            SkinCache.setSkin(player);
-
             event.setSpawningInstance(voidWorld);
-            MinecraftServer.getSchedulerManager().scheduleNextTick(() -> voidWorld.movePlayer(player));
+            MinecraftServer.getSchedulerManager().scheduleNextTick(() -> {
+                player.setPermissionLevel(4);
+                player.setRespawnPoint(voidWorld.getSpawn());
+                player.setGameMode(GameMode.SPECTATOR);
+                player.setAllowFlying(true);
+                SkinCache.setSkin(player);
+                voidWorld.movePlayer(player);
+            });
 
             System.out.println("[Join] Player " + player.getUsername() +" joined the server.");
         });
diff --git a/src/main/java/eu/mhsl/craftattack/worldmuseum/util/BunggeCordComunicator.java b/src/main/java/eu/mhsl/craftattack/worldmuseum/util/BunggeCordComunicator.java
index 7666e7d..f480ffe 100644
--- a/src/main/java/eu/mhsl/craftattack/worldmuseum/util/BunggeCordComunicator.java
+++ b/src/main/java/eu/mhsl/craftattack/worldmuseum/util/BunggeCordComunicator.java
@@ -1,22 +1,16 @@
 package eu.mhsl.craftattack.worldmuseum.util;
 
+import com.google.common.io.ByteArrayDataOutput;
+import com.google.common.io.ByteStreams;
 import net.minestom.server.entity.Player;
 import net.minestom.server.network.packet.server.play.PluginMessagePacket;
 
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-
 public class BunggeCordComunicator {
-    private static final String bungeeTargetSelector = "BungeeCord";
+    private static final String bungeeTargetSelector = "bungeecord:main";
     public static void connect(Player p, String bungeeServerTargetName) {
-        try {
-            ByteArrayOutputStream out = new ByteArrayOutputStream();
-            out.write("Connect".getBytes(StandardCharsets.UTF_8));
-            out.write(bungeeServerTargetName.getBytes(StandardCharsets.UTF_8));
-            p.sendPacket(new PluginMessagePacket(bungeeTargetSelector, out.toByteArray()));
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
+        ByteArrayDataOutput out = ByteStreams.newDataOutput();
+        out.writeUTF("Connect");
+        out.writeUTF(bungeeServerTargetName);
+        p.sendPacket(new PluginMessagePacket(bungeeTargetSelector, out.toByteArray()));
     }
 }