--- a/net/minecraft/world/level/storage/DimensionDataStorage.java
+++ b/net/minecraft/world/level/storage/DimensionDataStorage.java
@@ -150,7 +_,7 @@
         } else {
             int i = Util.maxAllowedExecutorThreads();
             int size = map.size();
-            if (size > i) {
+            if (false && size > i) { // Paper - Separate dimension data IO pool; just throw them into the fixed pool queue
                 this.pendingWriteFuture = this.pendingWriteFuture.thenCompose(object -> {
                     List<CompletableFuture<?>> list = new ArrayList<>(i);
                     int i1 = Mth.positiveCeilDiv(size, i);
@@ -171,7 +_,7 @@
                         object -> CompletableFuture.allOf(
                             map.entrySet()
                                 .stream()
-                                .map(entry -> CompletableFuture.runAsync(() -> this.tryWrite(entry.getKey(), entry.getValue()), Util.ioPool()))
+                                .map(entry -> CompletableFuture.runAsync(() -> this.tryWrite(entry.getKey(), entry.getValue()), Util.DIMENSION_DATA_IO_POOL)) // Paper - Separate dimension data IO pool
                                 .toArray(CompletableFuture[]::new)
                         )
                     );
