diff --git a/.kotlin/sessions/kotlin-compiler-12260198840055133192.salive b/.kotlin/sessions/kotlin-compiler-12260198840055133192.salive
new file mode 100644
index 0000000..e69de29
diff --git a/build.gradle.kts b/build.gradle.kts
index d5e2998..32c242c 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -20,7 +20,9 @@ dependencies {
     paperweight.paperDevBundle("1.21-R0.1-SNAPSHOT")
 
     // Game Libraries
-    implementation("xyz.xenondevs.invui:invui:1.33")
+    compileOnly("xyz.xenondevs.invui:invui:1.33")
+    compileOnly("xyz.xenondevs.invui:invui-kotlin:1.33")
+
     implementation("ru.brikster:glyphs-api:1.1.0")
     implementation("ru.brikster:glyphs-resources:1.1.0")
     implementation("team.unnamed:creative-api:1.7.2")
@@ -38,10 +40,6 @@ kotlin {
 }
 
 tasks {
-    assemble {
-        dependsOn(reobfJar)
-    }
-
     runServer {
         minecraftVersion("1.21")
     }
diff --git a/src/main/kotlin/xyz/ineanto/dragon/RunnerDragon.kt b/src/main/kotlin/xyz/ineanto/dragon/RunnerDragon.kt
index c5a8f7d..3fbeb5a 100644
--- a/src/main/kotlin/xyz/ineanto/dragon/RunnerDragon.kt
+++ b/src/main/kotlin/xyz/ineanto/dragon/RunnerDragon.kt
@@ -2,6 +2,7 @@ package xyz.ineanto.dragon
 
 import com.google.common.cache.Cache
 import com.google.common.cache.CacheBuilder
+import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents
 import net.kyori.adventure.text.Component
 import net.kyori.adventure.text.format.NamedTextColor
 import net.kyori.adventure.text.format.TextDecoration
@@ -17,13 +18,13 @@ import xyz.ineanto.dragon.event.end.BlockPlaceListener
 import xyz.ineanto.dragon.event.end.EnderDragonListener
 import xyz.ineanto.dragon.event.waiting.WaitingListener
 import xyz.ineanto.dragon.player.PlayerManager
-import xyz.ineanto.dragon.schematic.SchematicLoader
 import xyz.ineanto.dragon.scoreboard.ScoreboardTeams
 import xyz.ineanto.dragon.tasks.GracePeriodTask
 import xyz.ineanto.dragon.tasks.TimerTask
 import xyz.ineanto.dragon.teams.Team
 import xyz.ineanto.dragon.teams.TeamManager
 import xyz.ineanto.dragon.world.WorldManager
+import xyz.xenondevs.invui.InvUI
 import java.time.Duration
 import java.time.Instant
 import java.util.*
@@ -58,8 +59,6 @@ class RunnerDragon : JavaPlugin() {
         var TIMER_TASK: BukkitTask? = null
 
         var GRACE_PERIOD_TASK: BukkitTask? = null
-
-        lateinit var LOBBY_SCHEMATIC: SchematicLoader
     }
 
     lateinit var teamManager: TeamManager
@@ -68,8 +67,10 @@ class RunnerDragon : JavaPlugin() {
 
     private lateinit var scoreboardTeams: ScoreboardTeams
 
+    @Suppress("UnstableApiUsage")
     override fun onEnable() {
         instance = this
+        InvUI.getInstance().setPlugin(this)
 
         playerManager = PlayerManager()
         teamManager = TeamManager(this)
@@ -84,7 +85,11 @@ class RunnerDragon : JavaPlugin() {
         server.pluginManager.registerEvents(BlockPlaceListener(), this)
         server.pluginManager.registerEvents(EntityDeathListener(), this)
         server.pluginManager.registerEvents(EntityDamageListener(), this)
-        getCommand("rd")!!.setExecutor(MainCommand())
+
+        lifecycleManager.registerEventHandler(LifecycleEvents.COMMANDS) { event ->
+            val commands = event.registrar()
+            commands.register("rd", MainCommand())
+        }
 
         worldManager = WorldManager(this)
         worldManager.init()
diff --git a/src/main/kotlin/xyz/ineanto/dragon/RunnerDragonLoader.kt b/src/main/kotlin/xyz/ineanto/dragon/RunnerDragonLoader.kt
new file mode 100644
index 0000000..f8f91f2
--- /dev/null
+++ b/src/main/kotlin/xyz/ineanto/dragon/RunnerDragonLoader.kt
@@ -0,0 +1,23 @@
+package xyz.ineanto.dragon
+
+import io.papermc.paper.plugin.loader.PluginClasspathBuilder
+import io.papermc.paper.plugin.loader.PluginLoader
+import io.papermc.paper.plugin.loader.library.impl.MavenLibraryResolver
+import org.eclipse.aether.artifact.DefaultArtifact
+import org.eclipse.aether.graph.Dependency
+import org.eclipse.aether.repository.RemoteRepository
+
+class RunnerDragonLoader : PluginLoader {
+    override fun classloader(classpathBuilder: PluginClasspathBuilder) {
+        val resolver = MavenLibraryResolver()
+
+        resolver.addRepository(
+            RemoteRepository.Builder("xenondevs", "default", "https://repo.xenondevs.xyz/releases/").build()
+        )
+
+        resolver.addDependency(Dependency(DefaultArtifact("xyz.xenondevs.invui:invui:pom:1.33"), null))
+        resolver.addDependency(Dependency(DefaultArtifact("xyz.xenondevs.invui:invui-kotlin:pom:1.33"), null))
+
+        classpathBuilder.addLibrary(resolver)
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/xyz/ineanto/dragon/commands/MainCommand.kt b/src/main/kotlin/xyz/ineanto/dragon/commands/MainCommand.kt
index 5eef5bd..d7fdb74 100644
--- a/src/main/kotlin/xyz/ineanto/dragon/commands/MainCommand.kt
+++ b/src/main/kotlin/xyz/ineanto/dragon/commands/MainCommand.kt
@@ -1,29 +1,32 @@
 package xyz.ineanto.dragon.commands
 
+import io.papermc.paper.command.brigadier.BasicCommand
+import io.papermc.paper.command.brigadier.CommandSourceStack
 import net.kyori.adventure.text.Component
 import net.kyori.adventure.text.format.NamedTextColor
 import net.kyori.adventure.text.format.TextDecoration
 import org.bukkit.Bukkit
-import org.bukkit.command.Command
-import org.bukkit.command.CommandExecutor
-import org.bukkit.command.CommandSender
 import org.bukkit.entity.Player
 import xyz.ineanto.dragon.RunnerDragon
 
-class MainCommand : CommandExecutor {
-    override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<String>): Boolean {
-        if (sender is Player) {
-            val player: Player = sender
+@Suppress("UnstableApiUsage")
+class MainCommand : BasicCommand {
+    override fun execute(
+        stack: CommandSourceStack,
+        args: Array<out String>
+    ) {
+        if (stack.sender is Player) {
+            val player: Player = stack.sender as Player
             val dragonPlayer = RunnerDragon.instance.playerManager.getPlayer(player.uniqueId)
 
             if (player.isOp.not()) {
-                dragonPlayer.sendMessage(Component.text("Erreur: Status d'opérateur requis."))
-                return true
+                dragonPlayer.sendMessage(Component.text("Erreur: Statut d'opérateur requis."))
+                return
             }
 
             if (args.isEmpty()) {
                 dragonPlayer.sendMessage(Component.text("Argument manquant: /rd (teams/game/say)"))
-                return true
+                return
             }
 
             when (args[0]) {
@@ -38,7 +41,6 @@ class MainCommand : CommandExecutor {
                                 .append(Component.text("Veuillez préciser un message.", NamedTextColor.RED))
                                 .build()
                         )
-                        return true
                     }
 
                     val announcementComponent = Component.text()
@@ -51,6 +53,5 @@ class MainCommand : CommandExecutor {
                 }
             }
         }
-        return true
     }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/xyz/ineanto/dragon/commands/TeamsSubCommand.kt b/src/main/kotlin/xyz/ineanto/dragon/commands/TeamsSubCommand.kt
index 040b7ec..e923786 100644
--- a/src/main/kotlin/xyz/ineanto/dragon/commands/TeamsSubCommand.kt
+++ b/src/main/kotlin/xyz/ineanto/dragon/commands/TeamsSubCommand.kt
@@ -19,7 +19,7 @@ class TeamsSubCommand {
                 .text()
                 .append(Component.text("-", NamedTextColor.DARK_GRAY))
                 .appendSpace()
-                .append(Component.text("Status:", NamedTextColor.GOLD))
+                .append(Component.text("État:", NamedTextColor.GOLD))
                 .appendSpace()
 
             if (RunnerDragon.TEAM_LOCK) {
diff --git a/src/main/kotlin/xyz/ineanto/dragon/event/PlayerRespawnListener.kt b/src/main/kotlin/xyz/ineanto/dragon/event/PlayerRespawnListener.kt
index 8df5202..c3e44be 100644
--- a/src/main/kotlin/xyz/ineanto/dragon/event/PlayerRespawnListener.kt
+++ b/src/main/kotlin/xyz/ineanto/dragon/event/PlayerRespawnListener.kt
@@ -3,11 +3,17 @@ package xyz.ineanto.dragon.event
 import org.bukkit.event.EventHandler
 import org.bukkit.event.Listener
 import org.bukkit.event.player.PlayerRespawnEvent
+import xyz.ineanto.dragon.GameState
+import xyz.ineanto.dragon.RunnerDragon
 import xyz.ineanto.dragon.world.WorldManager
 
 class PlayerRespawnListener : Listener {
     @EventHandler
     fun onRespawn(event: PlayerRespawnEvent) {
-        event.respawnLocation = WorldManager.GAME_WORLD.spawnLocation
+        if (RunnerDragon.STATE == GameState.WAITING) {
+            event.respawnLocation = WorldManager.LIMBO_WORLD.spawnLocation
+        } else {
+            event.respawnLocation = WorldManager.GAME_WORLD.spawnLocation
+        }
     }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/xyz/ineanto/dragon/world/WorldManager.kt b/src/main/kotlin/xyz/ineanto/dragon/world/WorldManager.kt
index 95281a1..2261119 100644
--- a/src/main/kotlin/xyz/ineanto/dragon/world/WorldManager.kt
+++ b/src/main/kotlin/xyz/ineanto/dragon/world/WorldManager.kt
@@ -25,16 +25,16 @@ class WorldManager(private val instance: RunnerDragon) {
     }
 
     fun init(): Boolean {
-        val limboFolder = File(GAME_WORLD_NAME)
+        val limboFolder = File(LIMBO_WORLD_NAME)
 
         if (!limboFolder.exists()) {
             // Limbo is the world where players are
             // held (hostage) before the game starts.
             instance.logger.severe("Limbo world doesn't exist! Generating an emergency spawn...")
             LIMBO_WORLD = createWorld(LIMBO_WORLD_NAME, World.Environment.NETHER, false)
-        }
-        else {
-            LIMBO_WORLD = Bukkit.getWorld(LIMBO_WORLD_NAME)!!
+        } else {
+            // Load the Limbo world
+            LIMBO_WORLD = Bukkit.createWorld(WorldCreator(LIMBO_WORLD_NAME))!!
         }
 
         LIMBO_SPAWN = LIMBO_WORLD.spawnLocation
diff --git a/src/main/resources/plugin.yml b/src/main/resources/paper-plugin.yml
similarity index 76%
rename from src/main/resources/plugin.yml
rename to src/main/resources/paper-plugin.yml
index 0b39c47..54f1768 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/paper-plugin.yml
@@ -1,7 +1,9 @@
 name: RunnerDragon
+version: '1.1'
+api-version: '1.21'
 main: xyz.ineanto.dragon.RunnerDragon
-version: 1.1
-api-version: "1.21"
+loader: xyz.ineanto.dragon.RunnerDragonLoader
+
 commands:
   rd:
     permission: "runnerdragon.admin"