--- a/net/minecraft/server/commands/GameModeCommand.java
+++ b/net/minecraft/server/commands/GameModeCommand.java
@@ -54,15 +_,18 @@
         int i = 0;
 
         for (ServerPlayer serverPlayer : players) {
+            serverPlayer.getBukkitEntity().taskScheduler.schedule((ServerPlayer nmsEntity) -> { // Folia - region threading
             // Paper start - Expand PlayerGameModeChangeEvent
-            org.bukkit.event.player.PlayerGameModeChangeEvent event = serverPlayer.setGameMode(gameType, org.bukkit.event.player.PlayerGameModeChangeEvent.Cause.COMMAND, net.kyori.adventure.text.Component.empty());
+            org.bukkit.event.player.PlayerGameModeChangeEvent event = nmsEntity.setGameMode(gameType, org.bukkit.event.player.PlayerGameModeChangeEvent.Cause.COMMAND, net.kyori.adventure.text.Component.empty()); // Folia - region threading
             if (event != null && !event.isCancelled()) {
-                logGamemodeChange(source.getSource(), serverPlayer, gameType);
-                i++;
+                logGamemodeChange(source.getSource(), nmsEntity, gameType); // Folia - region threading
+                //i++; // Folia - region threading
             } else if (event != null && event.cancelMessage() != null) {
                 source.getSource().sendSuccess(() -> io.papermc.paper.adventure.PaperAdventure.asVanilla(event.cancelMessage()), true);
                 // Paper end - Expand PlayerGameModeChangeEvent
             }
+            }, null, 1L); // Folia - region threading
+            ++i; // Folia - region threading
         }
 
         return i;
