diff --git a/patches/server/1036-Fix-bees-aging-inside-hives.patch b/patches/server/0971-Fix-bees-aging-inside-hives.patch similarity index 100% rename from patches/server/1036-Fix-bees-aging-inside-hives.patch rename to patches/server/0971-Fix-bees-aging-inside-hives.patch diff --git a/patches/server/0971-Disable-memory-reserve-allocating.patch b/patches/server/0972-Disable-memory-reserve-allocating.patch similarity index 100% rename from patches/server/0971-Disable-memory-reserve-allocating.patch rename to patches/server/0972-Disable-memory-reserve-allocating.patch diff --git a/patches/server/0972-Fire-EntityDamageByEntityEvent-for-unowned-wither-sk.patch b/patches/server/0973-Fire-EntityDamageByEntityEvent-for-unowned-wither-sk.patch similarity index 100% rename from patches/server/0972-Fire-EntityDamageByEntityEvent-for-unowned-wither-sk.patch rename to patches/server/0973-Fire-EntityDamageByEntityEvent-for-unowned-wither-sk.patch diff --git a/patches/server/0973-Fix-DamageSource-API.patch b/patches/server/0974-Fix-DamageSource-API.patch similarity index 100% rename from patches/server/0973-Fix-DamageSource-API.patch rename to patches/server/0974-Fix-DamageSource-API.patch diff --git a/patches/server/0974-Fix-creation-of-invalid-block-entity-during-world-ge.patch b/patches/server/0975-Fix-creation-of-invalid-block-entity-during-world-ge.patch similarity index 100% rename from patches/server/0974-Fix-creation-of-invalid-block-entity-during-world-ge.patch rename to patches/server/0975-Fix-creation-of-invalid-block-entity-during-world-ge.patch diff --git a/patches/server/0975-Fix-possible-StackOverflowError-for-some-dispenses.patch b/patches/server/0976-Fix-possible-StackOverflowError-for-some-dispenses.patch similarity index 100% rename from patches/server/0975-Fix-possible-StackOverflowError-for-some-dispenses.patch rename to patches/server/0976-Fix-possible-StackOverflowError-for-some-dispenses.patch diff --git a/patches/server/0976-Improve-tag-parser-handling.patch b/patches/server/0977-Improve-tag-parser-handling.patch similarity index 100% rename from patches/server/0976-Improve-tag-parser-handling.patch rename to patches/server/0977-Improve-tag-parser-handling.patch diff --git a/patches/server/0977-Item-Mutation-Fixes.patch b/patches/server/0978-Item-Mutation-Fixes.patch similarity index 100% rename from patches/server/0977-Item-Mutation-Fixes.patch rename to patches/server/0978-Item-Mutation-Fixes.patch diff --git a/patches/server/0978-Per-world-ticks-per-spawn-settings.patch b/patches/server/0979-Per-world-ticks-per-spawn-settings.patch similarity index 100% rename from patches/server/0978-Per-world-ticks-per-spawn-settings.patch rename to patches/server/0979-Per-world-ticks-per-spawn-settings.patch diff --git a/patches/server/0979-Properly-track-the-changed-item-from-dispense-events.patch b/patches/server/0980-Properly-track-the-changed-item-from-dispense-events.patch similarity index 100% rename from patches/server/0979-Properly-track-the-changed-item-from-dispense-events.patch rename to patches/server/0980-Properly-track-the-changed-item-from-dispense-events.patch diff --git a/patches/server/0980-Rewrite-dataconverter-system.patch b/patches/server/0981-Rewrite-dataconverter-system.patch similarity index 100% rename from patches/server/0980-Rewrite-dataconverter-system.patch rename to patches/server/0981-Rewrite-dataconverter-system.patch diff --git a/patches/server/0981-Suspicious-Effect-Entry-API.patch b/patches/server/0982-Suspicious-Effect-Entry-API.patch similarity index 100% rename from patches/server/0981-Suspicious-Effect-Entry-API.patch rename to patches/server/0982-Suspicious-Effect-Entry-API.patch diff --git a/patches/server/0982-check-if-itemstack-is-stackable-first.patch b/patches/server/0983-check-if-itemstack-is-stackable-first.patch similarity index 100% rename from patches/server/0982-check-if-itemstack-is-stackable-first.patch rename to patches/server/0983-check-if-itemstack-is-stackable-first.patch diff --git a/patches/server/0983-disable-forced-empty-world-ticks.patch b/patches/server/0984-disable-forced-empty-world-ticks.patch similarity index 100% rename from patches/server/0983-disable-forced-empty-world-ticks.patch rename to patches/server/0984-disable-forced-empty-world-ticks.patch diff --git a/patches/server/0984-Starlight.patch b/patches/server/0985-Starlight.patch similarity index 100% rename from patches/server/0984-Starlight.patch rename to patches/server/0985-Starlight.patch diff --git a/patches/server/0985-Rewrite-chunk-system.patch b/patches/server/0986-Rewrite-chunk-system.patch similarity index 99% rename from patches/server/0985-Rewrite-chunk-system.patch rename to patches/server/0986-Rewrite-chunk-system.patch index 7cc9f21e95..ccf7a62637 100644 --- a/patches/server/0985-Rewrite-chunk-system.patch +++ b/patches/server/0986-Rewrite-chunk-system.patch @@ -18392,7 +18392,7 @@ index 2d9d4d06b75873f888ef4d8f5779a52706f821a8..f74efe41cd0da2f9749fc96fb9e0f7cf } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 7dfbb3dd6100180abd2ebab4d1e9e34928666f9e..877f9d7a83fa817586f9f2dd2b10e06e9962b7c8 100644 +index 7dfbb3dd6100180abd2ebab4d1e9e34928666f9e..7f8793fa8260cb8a1f55d0ba405e6df0ae6f7321 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -199,7 +199,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -18733,7 +18733,7 @@ index 7dfbb3dd6100180abd2ebab4d1e9e34928666f9e..877f9d7a83fa817586f9f2dd2b10e06e boolean flag2 = minecraftserver.forceSynchronousWrites(); DataFixer datafixer = minecraftserver.getFixerUpper(); - EntityPersistentStorage entitypersistentstorage = new EntityStorage(new SimpleRegionStorage(new RegionStorageInfo(convertable_conversionsession.getLevelId(), resourcekey, "entities"), convertable_conversionsession.getDimensionPath(resourcekey).resolve("entities"), datafixer, flag2, DataFixTypes.ENTITY_CHUNK), this, minecraftserver); -+ this.entityStorage = new EntityRegionFileStorage(convertable_conversionsession.getDimensionPath(resourcekey).resolve("entities"), flag2); // Paper - rewrite chunk system // EntityPersistentStorage entitypersistentstorage = new EntityStorage(new SimpleRegionStorage(new RegionStorageInfo(convertable_conversionsession.getLevelId(), resourcekey, "entities"), convertable_conversionsession.getDimensionPath(resourcekey).resolve("entities"), datafixer, flag2, DataFixTypes.ENTITY_CHUNK), this, minecraftserver); ++ this.entityStorage = new EntityRegionFileStorage(new RegionStorageInfo(convertable_conversionsession.getLevelId(), resourcekey, "entities"), convertable_conversionsession.getDimensionPath(resourcekey).resolve("entities"), flag2); // Paper - rewrite chunk system - this.entityManager = new PersistentEntitySectionManager<>(Entity.class, new ServerLevel.EntityCallbacks(), entitypersistentstorage); + // this.entityManager = new PersistentEntitySectionManager<>(Entity.class, new ServerLevel.EntityCallbacks(), entitypersistentstorage, this.entitySliceManager); // Paper // Paper - rewrite chunk system @@ -19475,6 +19475,24 @@ index ea72dcb064a35bc6245bc5c94d592efedd8faf41..0793dfe47e68a2b48b010aad5b12dcfa @Override public boolean remove(Object object) { int i = this.findIndex((T)object); +diff --git a/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java b/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java +index 7984f17cd9c4cef8100909b6c33b3144c8096fcf..639f72618a7c22fa94effa9d0406b97fffc64cb5 100644 +--- a/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java ++++ b/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java +@@ -227,7 +227,13 @@ public class WorldUpgrader { + this.previousWriteFuture.join(); + } + ++ // Paper start - async chunk io ++ try { + this.previousWriteFuture = storage.write(chunkPos, nbttagcompound1); ++ } catch (final IOException e) { ++ com.destroystokyo.paper.util.SneakyThrow.sneaky(e); ++ } ++ // Paper end - async chunk io + return true; + } + } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java index 3c1bcf8d1a07b35a8688160c9f05f792451338a3..03840f520624662d4ce3ac9f3065a01c71b5f299 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/patches/server/0986-incremental-chunk-and-player-saving.patch b/patches/server/0987-incremental-chunk-and-player-saving.patch similarity index 98% rename from patches/server/0986-incremental-chunk-and-player-saving.patch rename to patches/server/0987-incremental-chunk-and-player-saving.patch index 6dbbfeefeb..cd19b79c90 100644 --- a/patches/server/0986-incremental-chunk-and-player-saving.patch +++ b/patches/server/0987-incremental-chunk-and-player-saving.patch @@ -76,7 +76,7 @@ index f74efe41cd0da2f9749fc96fb9e0f7cf237ad1c6..d1728e13a7b649f308bde90ab633c79d public void close() throws IOException { // CraftBukkit start diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 877f9d7a83fa817586f9f2dd2b10e06e9962b7c8..412e167f6e29cbe905161c7e00736961f2c56c21 100644 +index 7f8793fa8260cb8a1f55d0ba405e6df0ae6f7321..db6a54c752ac39012537ec85ad31d5c8b886be1a 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1302,6 +1302,37 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/0987-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch b/patches/server/0988-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch similarity index 100% rename from patches/server/0987-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch rename to patches/server/0988-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch diff --git a/patches/server/0988-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch b/patches/server/0989-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch similarity index 98% rename from patches/server/0988-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch rename to patches/server/0989-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch index b9e0875686..c004efe2f5 100644 --- a/patches/server/0988-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch +++ b/patches/server/0989-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch @@ -13,7 +13,7 @@ custom renderers are in use, defaulting to the much simpler Vanilla system. Additionally, numerous issues to player position tracking on maps has been fixed. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 412e167f6e29cbe905161c7e00736961f2c56c21..3203f95b8a877efb752fe2e6c58da6df9c8eede7 100644 +index db6a54c752ac39012537ec85ad31d5c8b886be1a..5285cc76b001a8b5fd5e11764a3aa11e45c9d999 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -2588,6 +2588,7 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/0989-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch b/patches/server/0990-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch similarity index 100% rename from patches/server/0989-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch rename to patches/server/0990-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch diff --git a/patches/server/0990-Optimize-Network-Manager-and-add-advanced-packet-sup.patch b/patches/server/0991-Optimize-Network-Manager-and-add-advanced-packet-sup.patch similarity index 100% rename from patches/server/0990-Optimize-Network-Manager-and-add-advanced-packet-sup.patch rename to patches/server/0991-Optimize-Network-Manager-and-add-advanced-packet-sup.patch diff --git a/patches/server/0991-Allow-Saving-of-Oversized-Chunks.patch b/patches/server/0992-Allow-Saving-of-Oversized-Chunks.patch similarity index 100% rename from patches/server/0991-Allow-Saving-of-Oversized-Chunks.patch rename to patches/server/0992-Allow-Saving-of-Oversized-Chunks.patch diff --git a/patches/server/0992-Fix-World-isChunkGenerated-calls.patch b/patches/server/0993-Fix-World-isChunkGenerated-calls.patch similarity index 100% rename from patches/server/0992-Fix-World-isChunkGenerated-calls.patch rename to patches/server/0993-Fix-World-isChunkGenerated-calls.patch diff --git a/patches/server/0993-Flat-bedrock-generator-settings.patch b/patches/server/0994-Flat-bedrock-generator-settings.patch similarity index 100% rename from patches/server/0993-Flat-bedrock-generator-settings.patch rename to patches/server/0994-Flat-bedrock-generator-settings.patch diff --git a/patches/server/0994-Entity-Activation-Range-2.0.patch b/patches/server/0995-Entity-Activation-Range-2.0.patch similarity index 99% rename from patches/server/0994-Entity-Activation-Range-2.0.patch rename to patches/server/0995-Entity-Activation-Range-2.0.patch index f050b1b25b..fee8d41d7e 100644 --- a/patches/server/0994-Entity-Activation-Range-2.0.patch +++ b/patches/server/0995-Entity-Activation-Range-2.0.patch @@ -17,7 +17,7 @@ Adds villagers as separate config public net.minecraft.world.entity.Entity isInsidePortal diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 3203f95b8a877efb752fe2e6c58da6df9c8eede7..246c5d3e04044f5c5802ec5134dc69b8d8403a1a 100644 +index 5285cc76b001a8b5fd5e11764a3aa11e45c9d999..b7ca39623348090c5b85e2d80f67a1747553d7d7 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -2,7 +2,6 @@ package net.minecraft.server.level; diff --git a/patches/server/0995-Optional-per-player-mob-spawns.patch b/patches/server/0996-Optional-per-player-mob-spawns.patch similarity index 100% rename from patches/server/0995-Optional-per-player-mob-spawns.patch rename to patches/server/0996-Optional-per-player-mob-spawns.patch diff --git a/patches/server/0996-Anti-Xray.patch b/patches/server/0997-Anti-Xray.patch similarity index 99% rename from patches/server/0996-Anti-Xray.patch rename to patches/server/0997-Anti-Xray.patch index 00db1a4cc8..058f4c5c6a 100644 --- a/patches/server/0996-Anti-Xray.patch +++ b/patches/server/0997-Anti-Xray.patch @@ -1104,7 +1104,7 @@ index 183b2191fa1c1b27adedf39593e1b5a223fb1279..8ead66c134688b11dca15f6509147e72 private ClientboundLevelChunkWithLightPacket(RegistryFriendlyByteBuf buf) { diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 246c5d3e04044f5c5802ec5134dc69b8d8403a1a..885c64bd58de40b8fd03725f23cdbd0714a8cc69 100644 +index b7ca39623348090c5b85e2d80f67a1747553d7d7..bc609da7105293dfa4ed339f553be66b0a632698 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -575,7 +575,7 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/0997-Improve-cancelling-PreCreatureSpawnEvent-with-per-pl.patch b/patches/server/0998-Improve-cancelling-PreCreatureSpawnEvent-with-per-pl.patch similarity index 100% rename from patches/server/0997-Improve-cancelling-PreCreatureSpawnEvent-with-per-pl.patch rename to patches/server/0998-Improve-cancelling-PreCreatureSpawnEvent-with-per-pl.patch diff --git a/patches/server/0998-Optimize-Collision-to-not-load-chunks.patch b/patches/server/0999-Optimize-Collision-to-not-load-chunks.patch similarity index 100% rename from patches/server/0998-Optimize-Collision-to-not-load-chunks.patch rename to patches/server/0999-Optimize-Collision-to-not-load-chunks.patch diff --git a/patches/server/0999-Optimize-GoalSelector-Goal.Flag-Set-operations.patch b/patches/server/1000-Optimize-GoalSelector-Goal.Flag-Set-operations.patch similarity index 100% rename from patches/server/0999-Optimize-GoalSelector-Goal.Flag-Set-operations.patch rename to patches/server/1000-Optimize-GoalSelector-Goal.Flag-Set-operations.patch diff --git a/patches/server/1000-Entity-load-save-limit-per-chunk.patch b/patches/server/1001-Entity-load-save-limit-per-chunk.patch similarity index 100% rename from patches/server/1000-Entity-load-save-limit-per-chunk.patch rename to patches/server/1001-Entity-load-save-limit-per-chunk.patch diff --git a/patches/server/1001-Improved-Watchdog-Support.patch b/patches/server/1002-Improved-Watchdog-Support.patch similarity index 100% rename from patches/server/1001-Improved-Watchdog-Support.patch rename to patches/server/1002-Improved-Watchdog-Support.patch diff --git a/patches/server/1002-Optimize-Voxel-Shape-Merging.patch b/patches/server/1003-Optimize-Voxel-Shape-Merging.patch similarity index 100% rename from patches/server/1002-Optimize-Voxel-Shape-Merging.patch rename to patches/server/1003-Optimize-Voxel-Shape-Merging.patch diff --git a/patches/server/1003-Write-SavedData-IO-async.patch b/patches/server/1004-Write-SavedData-IO-async.patch similarity index 97% rename from patches/server/1003-Write-SavedData-IO-async.patch rename to patches/server/1004-Write-SavedData-IO-async.patch index 646bf73ba6..68fd4545a8 100644 --- a/patches/server/1003-Write-SavedData-IO-async.patch +++ b/patches/server/1004-Write-SavedData-IO-async.patch @@ -24,7 +24,7 @@ index c7b7f153895a4b95b2071a31db00c9c4b69fa094..0b7a38b9e92b19345a34c6226413a9b1 // CraftBukkit start - modelled on below diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 885c64bd58de40b8fd03725f23cdbd0714a8cc69..75dc2f98cc2c723db01135a3a42f346a70c78208 100644 +index bc609da7105293dfa4ed339f553be66b0a632698..4b7cad5f551d620dbd091111df94fb39efcb79ac 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1330,7 +1330,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -61,7 +61,7 @@ index 885c64bd58de40b8fd03725f23cdbd0714a8cc69..75dc2f98cc2c723db01135a3a42f346a public List getEntities(EntityTypeTest filter, Predicate predicate) { diff --git a/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java b/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java -index 7984f17cd9c4cef8100909b6c33b3144c8096fcf..868c9bbb12c8cfe76abb62774cf08102b727063b 100644 +index 639f72618a7c22fa94effa9d0406b97fffc64cb5..3e582c49069f2a820ba3baac03917493877d9875 100644 --- a/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java +++ b/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java @@ -116,7 +116,13 @@ public class WorldUpgrader { diff --git a/patches/server/1004-Protect-Bedrock-and-End-Portal-Frames-from-being-des.patch b/patches/server/1005-Protect-Bedrock-and-End-Portal-Frames-from-being-des.patch similarity index 100% rename from patches/server/1004-Protect-Bedrock-and-End-Portal-Frames-from-being-des.patch rename to patches/server/1005-Protect-Bedrock-and-End-Portal-Frames-from-being-des.patch diff --git a/patches/server/1005-Use-distance-map-to-optimise-entity-tracker.patch b/patches/server/1006-Use-distance-map-to-optimise-entity-tracker.patch similarity index 100% rename from patches/server/1005-Use-distance-map-to-optimise-entity-tracker.patch rename to patches/server/1006-Use-distance-map-to-optimise-entity-tracker.patch diff --git a/patches/server/1006-Optimize-Bit-Operations-by-inlining.patch b/patches/server/1007-Optimize-Bit-Operations-by-inlining.patch similarity index 100% rename from patches/server/1006-Optimize-Bit-Operations-by-inlining.patch rename to patches/server/1007-Optimize-Bit-Operations-by-inlining.patch diff --git a/patches/server/1007-Remove-streams-from-hot-code.patch b/patches/server/1008-Remove-streams-from-hot-code.patch similarity index 100% rename from patches/server/1007-Remove-streams-from-hot-code.patch rename to patches/server/1008-Remove-streams-from-hot-code.patch diff --git a/patches/server/1008-Eigencraft-redstone-implementation.patch b/patches/server/1009-Eigencraft-redstone-implementation.patch similarity index 100% rename from patches/server/1008-Eigencraft-redstone-implementation.patch rename to patches/server/1009-Eigencraft-redstone-implementation.patch diff --git a/patches/server/1009-Optimize-Pathfinder-Remove-Streams-Optimized-collect.patch b/patches/server/1010-Optimize-Pathfinder-Remove-Streams-Optimized-collect.patch similarity index 100% rename from patches/server/1009-Optimize-Pathfinder-Remove-Streams-Optimized-collect.patch rename to patches/server/1010-Optimize-Pathfinder-Remove-Streams-Optimized-collect.patch diff --git a/patches/server/1010-Improve-boat-collision-performance.patch b/patches/server/1011-Improve-boat-collision-performance.patch similarity index 100% rename from patches/server/1010-Improve-boat-collision-performance.patch rename to patches/server/1011-Improve-boat-collision-performance.patch diff --git a/patches/server/1011-Optimise-general-POI-access.patch b/patches/server/1012-Optimise-general-POI-access.patch similarity index 100% rename from patches/server/1011-Optimise-general-POI-access.patch rename to patches/server/1012-Optimise-general-POI-access.patch diff --git a/patches/server/1012-Custom-table-implementation-for-blockstate-state-loo.patch b/patches/server/1013-Custom-table-implementation-for-blockstate-state-loo.patch similarity index 100% rename from patches/server/1012-Custom-table-implementation-for-blockstate-state-loo.patch rename to patches/server/1013-Custom-table-implementation-for-blockstate-state-loo.patch diff --git a/patches/server/1013-Execute-chunk-tasks-mid-tick.patch b/patches/server/1014-Execute-chunk-tasks-mid-tick.patch similarity index 98% rename from patches/server/1013-Execute-chunk-tasks-mid-tick.patch rename to patches/server/1014-Execute-chunk-tasks-mid-tick.patch index dce1270092..a54580bc0d 100644 --- a/patches/server/1013-Execute-chunk-tasks-mid-tick.patch +++ b/patches/server/1014-Execute-chunk-tasks-mid-tick.patch @@ -123,7 +123,7 @@ index 0b7a38b9e92b19345a34c6226413a9b133264077..18640c8681f6a3b2276123d19e3e8f0a } } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 75dc2f98cc2c723db01135a3a42f346a70c78208..54dcd9025b284dddc71b6821723be64d6e339613 100644 +index 4b7cad5f551d620dbd091111df94fb39efcb79ac..9cd54bc390f0629bf6b4494bd9c3a6e0927d1b7b 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -221,6 +221,7 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/1014-Optimise-random-block-ticking.patch b/patches/server/1015-Optimise-random-block-ticking.patch similarity index 99% rename from patches/server/1014-Optimise-random-block-ticking.patch rename to patches/server/1015-Optimise-random-block-ticking.patch index 548eeb1931..07b98dffde 100644 --- a/patches/server/1014-Optimise-random-block-ticking.patch +++ b/patches/server/1015-Optimise-random-block-ticking.patch @@ -90,7 +90,7 @@ index 0000000000000000000000000000000000000000..7d93652c1abbb6aee6eb7c26cf35d4d0 + } +} diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 54dcd9025b284dddc71b6821723be64d6e339613..3aeaf62226ba0a4df3445b966fccdb4e2abb9c8a 100644 +index 9cd54bc390f0629bf6b4494bd9c3a6e0927d1b7b..215f03dfe0e6441588679efaedbcf04c352b404c 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -867,6 +867,10 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/1015-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch b/patches/server/1016-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch similarity index 100% rename from patches/server/1015-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch rename to patches/server/1016-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch diff --git a/patches/server/1016-Use-Velocity-compression-and-cipher-natives.patch b/patches/server/1017-Use-Velocity-compression-and-cipher-natives.patch similarity index 100% rename from patches/server/1016-Use-Velocity-compression-and-cipher-natives.patch rename to patches/server/1017-Use-Velocity-compression-and-cipher-natives.patch diff --git a/patches/server/1017-Detail-more-information-in-watchdog-dumps.patch b/patches/server/1018-Detail-more-information-in-watchdog-dumps.patch similarity index 99% rename from patches/server/1017-Detail-more-information-in-watchdog-dumps.patch rename to patches/server/1018-Detail-more-information-in-watchdog-dumps.patch index 748337cdcf..7859dad6a7 100644 --- a/patches/server/1017-Detail-more-information-in-watchdog-dumps.patch +++ b/patches/server/1018-Detail-more-information-in-watchdog-dumps.patch @@ -76,7 +76,7 @@ index e161ad0f53a21a68e8c78575ba5d3cdbdb11fca0..57e76b53e5e314c3e6b8856010f7a841 }); throw RunningOnDifferentThreadException.RUNNING_ON_DIFFERENT_THREAD; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 3aeaf62226ba0a4df3445b966fccdb4e2abb9c8a..8fcc14a2e7ebc5261948c9ad71965bdd9cfe6dc1 100644 +index 215f03dfe0e6441588679efaedbcf04c352b404c..aabaaf89f5e344791604a7e05122d9865bb0224e 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1251,7 +1251,26 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/1018-Collision-optimisations.patch b/patches/server/1019-Collision-optimisations.patch similarity index 100% rename from patches/server/1018-Collision-optimisations.patch rename to patches/server/1019-Collision-optimisations.patch diff --git a/patches/server/1019-Optimise-collision-checking-in-player-move-packet-ha.patch b/patches/server/1020-Optimise-collision-checking-in-player-move-packet-ha.patch similarity index 100% rename from patches/server/1019-Optimise-collision-checking-in-player-move-packet-ha.patch rename to patches/server/1020-Optimise-collision-checking-in-player-move-packet-ha.patch diff --git a/patches/server/1020-Fix-tripwire-disarming-not-working-as-intended.patch b/patches/server/1021-Fix-tripwire-disarming-not-working-as-intended.patch similarity index 100% rename from patches/server/1020-Fix-tripwire-disarming-not-working-as-intended.patch rename to patches/server/1021-Fix-tripwire-disarming-not-working-as-intended.patch diff --git a/patches/server/1021-Fix-entity-type-tags-suggestions-in-selectors.patch b/patches/server/1022-Fix-entity-type-tags-suggestions-in-selectors.patch similarity index 100% rename from patches/server/1021-Fix-entity-type-tags-suggestions-in-selectors.patch rename to patches/server/1022-Fix-entity-type-tags-suggestions-in-selectors.patch diff --git a/patches/server/1022-Add-Alternate-Current-redstone-implementation.patch b/patches/server/1023-Add-Alternate-Current-redstone-implementation.patch similarity index 99% rename from patches/server/1022-Add-Alternate-Current-redstone-implementation.patch rename to patches/server/1023-Add-Alternate-Current-redstone-implementation.patch index 175473f980..afb3758607 100644 --- a/patches/server/1022-Add-Alternate-Current-redstone-implementation.patch +++ b/patches/server/1023-Add-Alternate-Current-redstone-implementation.patch @@ -2009,7 +2009,7 @@ index 0000000000000000000000000000000000000000..33cd90c30c22200a4e1ae64f40a0bf78 + } +} diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 8fcc14a2e7ebc5261948c9ad71965bdd9cfe6dc1..285580485b60ca4cd95a5d8ff807cb05dbe38d39 100644 +index aabaaf89f5e344791604a7e05122d9865bb0224e..2bfebbe0bc5a7f72c9ebe60fded260b3f94ac749 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -228,6 +228,7 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/1023-optimize-dirt-and-snow-spreading.patch b/patches/server/1024-optimize-dirt-and-snow-spreading.patch similarity index 100% rename from patches/server/1023-optimize-dirt-and-snow-spreading.patch rename to patches/server/1024-optimize-dirt-and-snow-spreading.patch diff --git a/patches/server/1024-Properly-resend-entities.patch b/patches/server/1025-Properly-resend-entities.patch similarity index 100% rename from patches/server/1024-Properly-resend-entities.patch rename to patches/server/1025-Properly-resend-entities.patch diff --git a/patches/server/1025-Optimize-Hoppers.patch b/patches/server/1026-Optimize-Hoppers.patch similarity index 100% rename from patches/server/1025-Optimize-Hoppers.patch rename to patches/server/1026-Optimize-Hoppers.patch diff --git a/patches/server/1026-Improve-performance-of-mass-crafts.patch b/patches/server/1027-Improve-performance-of-mass-crafts.patch similarity index 100% rename from patches/server/1026-Improve-performance-of-mass-crafts.patch rename to patches/server/1027-Improve-performance-of-mass-crafts.patch diff --git a/patches/server/1027-Actually-optimise-explosions.patch b/patches/server/1028-Actually-optimise-explosions.patch similarity index 100% rename from patches/server/1027-Actually-optimise-explosions.patch rename to patches/server/1028-Actually-optimise-explosions.patch diff --git a/patches/server/1028-Optimise-chunk-tick-iteration.patch b/patches/server/1029-Optimise-chunk-tick-iteration.patch similarity index 100% rename from patches/server/1028-Optimise-chunk-tick-iteration.patch rename to patches/server/1029-Optimise-chunk-tick-iteration.patch diff --git a/patches/server/1029-Lag-compensation-ticks.patch b/patches/server/1030-Lag-compensation-ticks.patch similarity index 98% rename from patches/server/1029-Lag-compensation-ticks.patch rename to patches/server/1030-Lag-compensation-ticks.patch index ea3ba5af19..0a7a4efe4a 100644 --- a/patches/server/1029-Lag-compensation-ticks.patch +++ b/patches/server/1030-Lag-compensation-ticks.patch @@ -28,7 +28,7 @@ index 1adcbfb16ea1fe3378cde7c53e8868840eade963..5f3b35f0dbd9e78ad18ef5cf7be1a807 this.profiler.push(() -> { String s = String.valueOf(worldserver); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 285580485b60ca4cd95a5d8ff807cb05dbe38d39..5d79cabecc29b15ec4e71589fdbb7dc5d658d327 100644 +index 2bfebbe0bc5a7f72c9ebe60fded260b3f94ac749..89ecaaa774e59ad01eec0ce2fe546026a8b47ae8 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -570,6 +570,17 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/1030-Optimise-nearby-player-retrieval.patch b/patches/server/1031-Optimise-nearby-player-retrieval.patch similarity index 99% rename from patches/server/1030-Optimise-nearby-player-retrieval.patch rename to patches/server/1031-Optimise-nearby-player-retrieval.patch index aec655bc5b..080816f839 100644 --- a/patches/server/1030-Optimise-nearby-player-retrieval.patch +++ b/patches/server/1031-Optimise-nearby-player-retrieval.patch @@ -8,7 +8,7 @@ we can instead use the nearby player tracking system to reduce the number of tests per search. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 5d79cabecc29b15ec4e71589fdbb7dc5d658d327..901a764a8c3ae5259fdc4729d22c9986361d39a8 100644 +index 89ecaaa774e59ad01eec0ce2fe546026a8b47ae8..12a9342634ffa7d6aaa9a7fdd65a45bccec8dd13 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -581,6 +581,115 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/1031-Distance-manager-tick-timings.patch b/patches/server/1032-Distance-manager-tick-timings.patch similarity index 100% rename from patches/server/1031-Distance-manager-tick-timings.patch rename to patches/server/1032-Distance-manager-tick-timings.patch diff --git a/patches/server/1032-Handle-Oversized-block-entities-in-chunks.patch b/patches/server/1033-Handle-Oversized-block-entities-in-chunks.patch similarity index 100% rename from patches/server/1032-Handle-Oversized-block-entities-in-chunks.patch rename to patches/server/1033-Handle-Oversized-block-entities-in-chunks.patch diff --git a/patches/server/1033-Send-full-pos-packets-for-hard-colliding-entities.patch b/patches/server/1034-Send-full-pos-packets-for-hard-colliding-entities.patch similarity index 100% rename from patches/server/1033-Send-full-pos-packets-for-hard-colliding-entities.patch rename to patches/server/1034-Send-full-pos-packets-for-hard-colliding-entities.patch diff --git a/patches/server/1034-Fix-and-optimise-world-force-upgrading.patch b/patches/server/1035-Fix-and-optimise-world-force-upgrading.patch similarity index 88% rename from patches/server/1034-Fix-and-optimise-world-force-upgrading.patch rename to patches/server/1035-Fix-and-optimise-world-force-upgrading.patch index b98aab549c..a2e8bf7bcb 100644 --- a/patches/server/1034-Fix-and-optimise-world-force-upgrading.patch +++ b/patches/server/1035-Fix-and-optimise-world-force-upgrading.patch @@ -33,15 +33,17 @@ public net.minecraft.util.worldupdate.WorldUpgrader REGEX diff --git a/src/main/java/io/papermc/paper/world/ThreadedWorldUpgrader.java b/src/main/java/io/papermc/paper/world/ThreadedWorldUpgrader.java new file mode 100644 -index 0000000000000000000000000000000000000000..90498d9a4f5aee0f6c8a202b5580b4260a28b378 +index 0000000000000000000000000000000000000000..e049fbe4038aaea896f45b11ce9ce8f05922c898 --- /dev/null +++ b/src/main/java/io/papermc/paper/world/ThreadedWorldUpgrader.java -@@ -0,0 +1,212 @@ +@@ -0,0 +1,222 @@ +package io.papermc.paper.world; + +import com.mojang.datafixers.DataFixer; -+import com.mojang.serialization.Codec; ++import com.mojang.serialization.MapCodec; +import net.minecraft.SharedConstants; ++import net.minecraft.core.RegistryAccess; ++import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceKey; +import net.minecraft.util.worldupdate.WorldUpgrader; @@ -50,9 +52,8 @@ index 0000000000000000000000000000000000000000..90498d9a4f5aee0f6c8a202b5580b426 +import net.minecraft.world.level.chunk.ChunkGenerator; +import net.minecraft.world.level.chunk.storage.ChunkStorage; +import net.minecraft.world.level.chunk.storage.RegionFileStorage; -+import net.minecraft.world.level.dimension.DimensionType; ++import net.minecraft.world.level.chunk.storage.RegionStorageInfo; +import net.minecraft.world.level.dimension.LevelStem; -+import net.minecraft.world.level.levelgen.WorldGenSettings; +import net.minecraft.world.level.storage.DimensionDataStorage; +import net.minecraft.world.level.storage.LevelStorageSource; +import org.apache.logging.log4j.LogManager; @@ -77,12 +78,13 @@ index 0000000000000000000000000000000000000000..90498d9a4f5aee0f6c8a202b5580b426 + private final File worldDir; + private final ExecutorService threadPool; + private final DataFixer dataFixer; -+ private final Optional>> generatorKey; ++ private final RegistryAccess registryLookup; ++ private final Optional>> generatorKey; + private final boolean removeCaches; + private final boolean recreateRegionFiles; // TODO + + public ThreadedWorldUpgrader(final ResourceKey dimensionType, final String worldName, final File worldDir, final int threads, -+ final DataFixer dataFixer, final Optional>> generatorKey, ++ final DataFixer dataFixer, final RegistryAccess registryLookup, final Optional>> generatorKey, + final boolean removeCaches, final boolean recreateRegionFiles) { + this.dimensionType = dimensionType; + this.worldName = worldName; @@ -103,6 +105,7 @@ index 0000000000000000000000000000000000000000..90498d9a4f5aee0f6c8a202b5580b426 + } + }); + this.dataFixer = dataFixer; ++ this.registryLookup = registryLookup; + this.generatorKey = generatorKey; + this.removeCaches = removeCaches; + this.recreateRegionFiles = recreateRegionFiles; @@ -110,24 +113,31 @@ index 0000000000000000000000000000000000000000..90498d9a4f5aee0f6c8a202b5580b426 + + public void convert() { + final File worldFolder = LevelStorageSource.getStorageFolder(this.worldDir.toPath(), this.dimensionType).toFile(); -+ final DimensionDataStorage worldPersistentData = new DimensionDataStorage(new File(worldFolder, "data"), this.dataFixer); ++ final DimensionDataStorage worldPersistentData = new DimensionDataStorage(new File(worldFolder, "data"), this.dataFixer, this.registryLookup); + + final File regionFolder = new File(worldFolder, "region"); + -+ LOGGER.info("Force upgrading " + this.worldName); -+ LOGGER.info("Counting regionfiles for " + this.worldName); ++ LOGGER.info("Force upgrading {}", this.worldName); ++ LOGGER.info("Counting regionfiles for {}", this.worldName); + final File[] regionFiles = regionFolder.listFiles((final File dir, final String name) -> { + return WorldUpgrader.REGEX.matcher(name).matches(); + }); + if (regionFiles == null) { -+ LOGGER.info("Found no regionfiles to convert for world " + this.worldName); ++ LOGGER.info("Found no regionfiles to convert for world {}", this.worldName); + return; + } -+ LOGGER.info("Found " + regionFiles.length + " regionfiles to convert"); -+ LOGGER.info("Starting conversion now for world " + this.worldName); ++ LOGGER.info("Found {} regionfiles to convert", regionFiles.length); ++ LOGGER.info("Starting conversion now for world {}", this.worldName); ++ ++ // Only used for profiling, let's fill it anyways just in case ++ final RegionStorageInfo storageInfo = new RegionStorageInfo( ++ this.worldName, ++ ResourceKey.create(Registries.DIMENSION, this.dimensionType.location()), ++ "region" ++ ); + + final WorldInfo info = new WorldInfo(() -> worldPersistentData, -+ new ChunkStorage(regionFolder.toPath(), this.dataFixer, false), this.removeCaches, this.dimensionType, this.generatorKey); ++ new ChunkStorage(storageInfo, regionFolder.toPath(), this.dataFixer, false), this.removeCaches, this.dimensionType, this.generatorKey); + + long expectedChunks = (long)regionFiles.length * (32L * 32L); + @@ -173,12 +183,12 @@ index 0000000000000000000000000000000000000000..90498d9a4f5aee0f6c8a202b5580b426 + public final ChunkStorage loader; + public final boolean removeCaches; + public final ResourceKey worldKey; -+ public final Optional>> generatorKey; ++ public final Optional>> generatorKey; + public final AtomicLong convertedChunks = new AtomicLong(); + public final AtomicLong modifiedChunks = new AtomicLong(); + + private WorldInfo(final Supplier persistentDataSupplier, final ChunkStorage loader, final boolean removeCaches, -+ final ResourceKey worldKey, Optional>> generatorKey) { ++ final ResourceKey worldKey, Optional>> generatorKey) { + this.persistentDataSupplier = persistentDataSupplier; + this.loader = loader; + this.removeCaches = removeCaches; @@ -250,7 +260,7 @@ index 0000000000000000000000000000000000000000..90498d9a4f5aee0f6c8a202b5580b426 + } +} diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java -index 244a19ecd0234fa1d7a6ecfea20751595688605d..8893aa1fe4b033fdc25ebe6f3a3606af1f9b5ea7 100644 +index 244a19ecd0234fa1d7a6ecfea20751595688605d..5443013060b62e3bfcc51cddca96d1c0bc59fe72 100644 --- a/src/main/java/net/minecraft/server/Main.java +++ b/src/main/java/net/minecraft/server/Main.java @@ -392,6 +392,15 @@ public class Main { @@ -259,9 +269,9 @@ index 244a19ecd0234fa1d7a6ecfea20751595688605d..8893aa1fe4b033fdc25ebe6f3a3606af + // Paper start - fix and optimise world upgrading + public static void convertWorldButItWorks(net.minecraft.resources.ResourceKey dimensionType, net.minecraft.world.level.storage.LevelStorageSource.LevelStorageAccess worldSession, -+ DataFixer dataFixer, Optional>> generatorKey, boolean removeCaches, boolean recreateRegionFiles) { ++ DataFixer dataFixer, RegistryAccess registryLookup, Optional>> generatorKey, boolean removeCaches, boolean recreateRegionFiles) { + int threads = Runtime.getRuntime().availableProcessors() * 3 / 8; -+ final io.papermc.paper.world.ThreadedWorldUpgrader worldUpgrader = new io.papermc.paper.world.ThreadedWorldUpgrader(dimensionType, worldSession.getLevelId(), worldSession.levelDirectory.path().toFile(), threads, dataFixer, generatorKey, removeCaches, recreateRegionFiles); ++ final io.papermc.paper.world.ThreadedWorldUpgrader worldUpgrader = new io.papermc.paper.world.ThreadedWorldUpgrader(dimensionType, worldSession.getLevelId(), worldSession.levelDirectory.path().toFile(), threads, dataFixer, registryLookup, generatorKey, removeCaches, recreateRegionFiles); + worldUpgrader.convert(); + } + // Paper end - fix and optimise world upgrading @@ -270,7 +280,7 @@ index 244a19ecd0234fa1d7a6ecfea20751595688605d..8893aa1fe4b033fdc25ebe6f3a3606af Main.LOGGER.info("Forcing world upgrade! {}", session.getLevelId()); // CraftBukkit WorldUpgrader worldupgrader = new WorldUpgrader(session, dataFixer, dynamicRegistryManager, eraseCache, recreateRegionFiles); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 5f3b35f0dbd9e78ad18ef5cf7be1a807beffeaf1..a43f597d1148e00a6533f74c25ce272cd4e26dc4 100644 +index 5f3b35f0dbd9e78ad18ef5cf7be1a807beffeaf1..b2d558d21ec22577c31543b79527bde3daa1b871 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -599,11 +599,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop