diff --git a/patches/removed/1.19/0872-Fix-swamp-hut-cat-generation-deadlock.patch b/patches/removed/1.19/0872-Fix-swamp-hut-cat-generation-deadlock.patch deleted file mode 100644 index 07da981cf..000000000 --- a/patches/removed/1.19/0872-Fix-swamp-hut-cat-generation-deadlock.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Spottedleaf -Date: Sat, 12 Mar 2022 06:31:13 -0800 -Subject: [PATCH] Fix swamp hut cat generation deadlock - -The worldgen thread will attempt to get structure references -via the world's getChunkAt method, which is fine if the gen is -not cancelled - but if the chunk was unloaded, the call will block -indefinitely. Instead of using the world state, we use the already -supplied generatoraccess which will always have the chunk available. - -diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index 5f7c394f9cc178c9cb06c90b91296b979d61239b..e4eac546836b73b5e9c8fd68ca0d32c01148313e 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/Cat.java -+++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -392,7 +392,7 @@ public class Cat extends TamableAnimal { - Registry> iregistry = worldserver1.registryAccess().registryOrThrow(Registry.CONFIGURED_STRUCTURE_FEATURE_REGISTRY); - - if (ChunkGenerator.allConfigurations(iregistry, StructureFeature.SWAMP_HUT).anyMatch((structurefeature) -> { -- return worldserver1.structureFeatureManager().getStructureWithPieceAt(this.blockPosition(), structurefeature).isValid(); -+ return worldserver1.structureFeatureManager().getStructureWithPieceAt(this.blockPosition(), structurefeature, world).isValid(); // Paper - fix deadlock - })) { - this.setCatType(10); - this.setPersistenceRequired(); -diff --git a/src/main/java/net/minecraft/world/level/StructureFeatureManager.java b/src/main/java/net/minecraft/world/level/StructureFeatureManager.java -index 2825975e5b33ea13f199008c7a4abc72ebf990b3..56c4f849d92b38537602fd77e481ee60a25bc84b 100644 ---- a/src/main/java/net/minecraft/world/level/StructureFeatureManager.java -+++ b/src/main/java/net/minecraft/world/level/StructureFeatureManager.java -@@ -56,7 +56,12 @@ public class StructureFeatureManager { - } - - public List startsForFeature(SectionPos sectionPos, ConfiguredStructureFeature configuredStructureFeature) { -- LongSet longSet = this.level.getChunk(sectionPos.x(), sectionPos.z(), ChunkStatus.STRUCTURE_REFERENCES).getReferencesForFeature(configuredStructureFeature); -+ // Paper start - add world option -+ return this.startsForFeature(sectionPos, configuredStructureFeature, (ServerLevelAccessor)null); -+ } -+ public List startsForFeature(SectionPos sectionPos, ConfiguredStructureFeature configuredStructureFeature, ServerLevelAccessor world) { -+ LongSet longSet = (world == null ? this.level : world).getChunk(sectionPos.x(), sectionPos.z(), ChunkStatus.STRUCTURE_REFERENCES).getReferencesForFeature(configuredStructureFeature); -+ // Paper end - add world option - ImmutableList.Builder builder = ImmutableList.builder(); - this.fillStartsForFeature(configuredStructureFeature, longSet, builder::add); - return builder.build(); -@@ -106,7 +111,12 @@ public class StructureFeatureManager { - } - - public StructureStart getStructureWithPieceAt(BlockPos pos, ConfiguredStructureFeature configuredStructureFeature) { -- for(StructureStart structureStart : this.startsForFeature(SectionPos.of(pos), configuredStructureFeature)) { -+ // Paper start - add world option -+ return this.getStructureWithPieceAt(pos, configuredStructureFeature, (ServerLevelAccessor)null); -+ } -+ public StructureStart getStructureWithPieceAt(BlockPos pos, ConfiguredStructureFeature configuredStructureFeature, ServerLevelAccessor world) { -+ // Paper end - add world option -+ for(StructureStart structureStart : this.startsForFeature(SectionPos.of(pos), configuredStructureFeature, world)) { // Paper - add world option - if (this.structureHasPieceAt(pos, structureStart)) { - return structureStart; - } diff --git a/patches/server/0863-Fix-swamp-hut-cat-generation-deadlock.patch b/patches/server/0863-Fix-swamp-hut-cat-generation-deadlock.patch new file mode 100644 index 000000000..df73aa228 --- /dev/null +++ b/patches/server/0863-Fix-swamp-hut-cat-generation-deadlock.patch @@ -0,0 +1,62 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Spottedleaf +Date: Sat, 12 Mar 2022 06:31:13 -0800 +Subject: [PATCH] Fix swamp hut cat generation deadlock + +The worldgen thread will attempt to get structure references +via the world's getChunkAt method, which is fine if the gen is +not cancelled - but if the chunk was unloaded, the call will block +indefinitely. Instead of using the world state, we use the already +supplied ServerLevelAccessor which will always have the chunk available. + +diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java +index 5ad968a2f1add27da0d6a858e683d5d771128092..e44352857272a2a4027c67bd25a28a9498b7bb49 100644 +--- a/src/main/java/net/minecraft/world/entity/animal/Cat.java ++++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java +@@ -361,7 +361,7 @@ public class Cat extends TamableAnimal { + }); + ServerLevel worldserver = world.getLevel(); + +- if (worldserver.structureManager().getStructureWithPieceAt(this.blockPosition(), StructureTags.CATS_SPAWN_AS_BLACK).isValid()) { ++ if (worldserver.structureManager().getStructureWithPieceAt(this.blockPosition(), StructureTags.CATS_SPAWN_AS_BLACK, world).isValid()) { // Paper - fix deadlock + this.setCatVariant(CatVariant.ALL_BLACK); + this.setPersistenceRequired(); + } +diff --git a/src/main/java/net/minecraft/world/level/StructureManager.java b/src/main/java/net/minecraft/world/level/StructureManager.java +index 21afcbc71fdb10994f2f3451f5b06e4bb75c60c7..bca1e39da66a889caf92c28b6348623a440e1c7f 100644 +--- a/src/main/java/net/minecraft/world/level/StructureManager.java ++++ b/src/main/java/net/minecraft/world/level/StructureManager.java +@@ -43,7 +43,12 @@ public class StructureManager { + } + + public List startsForStructure(ChunkPos chunkPos, Predicate predicate) { +- Map map = this.level.getChunk(chunkPos.x, chunkPos.z, ChunkStatus.STRUCTURE_REFERENCES).getAllReferences(); ++ // Paper start ++ return this.startsForStructure(chunkPos, predicate, null); ++ } ++ public List startsForStructure(ChunkPos chunkPos, Predicate predicate, @Nullable ServerLevelAccessor levelAccessor) { ++ // Paper end ++ Map map = (levelAccessor == null ? this.level : levelAccessor).getChunk(chunkPos.x, chunkPos.z, ChunkStatus.STRUCTURE_REFERENCES).getAllReferences(); + ImmutableList.Builder builder = ImmutableList.builder(); + + for(Map.Entry entry : map.entrySet()) { +@@ -107,13 +112,18 @@ public class StructureManager { + } + + public StructureStart getStructureWithPieceAt(BlockPos pos, TagKey structureTag) { ++ // Paper start ++ return this.getStructureWithPieceAt(pos, structureTag, null); ++ } ++ public StructureStart getStructureWithPieceAt(BlockPos pos, TagKey structureTag, @Nullable ServerLevelAccessor levelAccessor) { ++ // Paper end + Registry registry = this.registryAccess().registryOrThrow(Registry.STRUCTURE_REGISTRY); + + for(StructureStart structureStart : this.startsForStructure(new ChunkPos(pos), (structure) -> { + return registry.getHolder(registry.getId(structure)).map((holder) -> { + return holder.is(structureTag); + }).orElse(false); +- })) { ++ }, levelAccessor)) { // Paper + if (this.structureHasPieceAt(pos, structureStart)) { + return structureStart; + } diff --git a/patches/server/0863-Don-t-allow-vehicle-movement-from-players-while-tele.patch b/patches/server/0864-Don-t-allow-vehicle-movement-from-players-while-tele.patch similarity index 100% rename from patches/server/0863-Don-t-allow-vehicle-movement-from-players-while-tele.patch rename to patches/server/0864-Don-t-allow-vehicle-movement-from-players-while-tele.patch diff --git a/patches/server/0864-Implement-getComputedBiome-API.patch b/patches/server/0865-Implement-getComputedBiome-API.patch similarity index 100% rename from patches/server/0864-Implement-getComputedBiome-API.patch rename to patches/server/0865-Implement-getComputedBiome-API.patch diff --git a/patches/server/0865-Make-some-itemstacks-nonnull.patch b/patches/server/0866-Make-some-itemstacks-nonnull.patch similarity index 100% rename from patches/server/0865-Make-some-itemstacks-nonnull.patch rename to patches/server/0866-Make-some-itemstacks-nonnull.patch diff --git a/patches/server/0866-Add-debug-for-invalid-GameProfiles-on-skull-blocks-i.patch b/patches/server/0867-Add-debug-for-invalid-GameProfiles-on-skull-blocks-i.patch similarity index 100% rename from patches/server/0866-Add-debug-for-invalid-GameProfiles-on-skull-blocks-i.patch rename to patches/server/0867-Add-debug-for-invalid-GameProfiles-on-skull-blocks-i.patch diff --git a/patches/server/0867-Implement-enchantWithLevels-API.patch b/patches/server/0868-Implement-enchantWithLevels-API.patch similarity index 100% rename from patches/server/0867-Implement-enchantWithLevels-API.patch rename to patches/server/0868-Implement-enchantWithLevels-API.patch diff --git a/patches/server/0868-Fix-saving-in-unloadWorld.patch b/patches/server/0869-Fix-saving-in-unloadWorld.patch similarity index 100% rename from patches/server/0868-Fix-saving-in-unloadWorld.patch rename to patches/server/0869-Fix-saving-in-unloadWorld.patch diff --git a/patches/server/0869-Buffer-OOB-setBlock-calls.patch b/patches/server/0870-Buffer-OOB-setBlock-calls.patch similarity index 100% rename from patches/server/0869-Buffer-OOB-setBlock-calls.patch rename to patches/server/0870-Buffer-OOB-setBlock-calls.patch diff --git a/patches/server/0870-Add-TameableDeathMessageEvent.patch b/patches/server/0871-Add-TameableDeathMessageEvent.patch similarity index 100% rename from patches/server/0870-Add-TameableDeathMessageEvent.patch rename to patches/server/0871-Add-TameableDeathMessageEvent.patch diff --git a/patches/server/0871-Fix-new-block-data-for-EntityChangeBlockEvent-when-s.patch b/patches/server/0872-Fix-new-block-data-for-EntityChangeBlockEvent-when-s.patch similarity index 100% rename from patches/server/0871-Fix-new-block-data-for-EntityChangeBlockEvent-when-s.patch rename to patches/server/0872-Fix-new-block-data-for-EntityChangeBlockEvent-when-s.patch diff --git a/patches/server/0872-fix-player-loottables-running-when-mob-loot-gamerule.patch b/patches/server/0873-fix-player-loottables-running-when-mob-loot-gamerule.patch similarity index 100% rename from patches/server/0872-fix-player-loottables-running-when-mob-loot-gamerule.patch rename to patches/server/0873-fix-player-loottables-running-when-mob-loot-gamerule.patch diff --git a/patches/server/0873-Ensure-entity-passenger-world-matches-ridden-entity.patch b/patches/server/0874-Ensure-entity-passenger-world-matches-ridden-entity.patch similarity index 100% rename from patches/server/0873-Ensure-entity-passenger-world-matches-ridden-entity.patch rename to patches/server/0874-Ensure-entity-passenger-world-matches-ridden-entity.patch diff --git a/patches/server/0874-Guard-against-invalid-entity-positions.patch b/patches/server/0875-Guard-against-invalid-entity-positions.patch similarity index 100% rename from patches/server/0874-Guard-against-invalid-entity-positions.patch rename to patches/server/0875-Guard-against-invalid-entity-positions.patch diff --git a/patches/server/0875-cache-resource-keys.patch b/patches/server/0876-cache-resource-keys.patch similarity index 100% rename from patches/server/0875-cache-resource-keys.patch rename to patches/server/0876-cache-resource-keys.patch diff --git a/patches/server/0876-Allow-to-change-the-podium-for-the-EnderDragon.patch b/patches/server/0877-Allow-to-change-the-podium-for-the-EnderDragon.patch similarity index 100% rename from patches/server/0876-Allow-to-change-the-podium-for-the-EnderDragon.patch rename to patches/server/0877-Allow-to-change-the-podium-for-the-EnderDragon.patch diff --git a/patches/server/0877-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch b/patches/server/0878-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch similarity index 100% rename from patches/server/0877-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch rename to patches/server/0878-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch diff --git a/patches/server/0878-Fix-StructureGrowEvent-species-for-RED_MUSHROOM.patch b/patches/server/0879-Fix-StructureGrowEvent-species-for-RED_MUSHROOM.patch similarity index 100% rename from patches/server/0878-Fix-StructureGrowEvent-species-for-RED_MUSHROOM.patch rename to patches/server/0879-Fix-StructureGrowEvent-species-for-RED_MUSHROOM.patch diff --git a/patches/server/0879-Prevent-tile-entity-copies-loading-chunks.patch b/patches/server/0880-Prevent-tile-entity-copies-loading-chunks.patch similarity index 100% rename from patches/server/0879-Prevent-tile-entity-copies-loading-chunks.patch rename to patches/server/0880-Prevent-tile-entity-copies-loading-chunks.patch diff --git a/patches/server/0880-Use-username-instead-of-display-name-in-PlayerList-g.patch b/patches/server/0881-Use-username-instead-of-display-name-in-PlayerList-g.patch similarity index 100% rename from patches/server/0880-Use-username-instead-of-display-name-in-PlayerList-g.patch rename to patches/server/0881-Use-username-instead-of-display-name-in-PlayerList-g.patch diff --git a/patches/server/0881-Fix-slime-spawners-not-spawning-outside-slime-chunks.patch b/patches/server/0882-Fix-slime-spawners-not-spawning-outside-slime-chunks.patch similarity index 100% rename from patches/server/0881-Fix-slime-spawners-not-spawning-outside-slime-chunks.patch rename to patches/server/0882-Fix-slime-spawners-not-spawning-outside-slime-chunks.patch diff --git a/patches/server/0882-Pass-ServerLevel-for-gamerule-callbacks.patch b/patches/server/0883-Pass-ServerLevel-for-gamerule-callbacks.patch similarity index 100% rename from patches/server/0882-Pass-ServerLevel-for-gamerule-callbacks.patch rename to patches/server/0883-Pass-ServerLevel-for-gamerule-callbacks.patch diff --git a/patches/server/0883-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch b/patches/server/0884-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch similarity index 100% rename from patches/server/0883-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch rename to patches/server/0884-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch diff --git a/patches/server/0884-WorldCreator-keepSpawnLoaded.patch b/patches/server/0885-WorldCreator-keepSpawnLoaded.patch similarity index 100% rename from patches/server/0884-WorldCreator-keepSpawnLoaded.patch rename to patches/server/0885-WorldCreator-keepSpawnLoaded.patch diff --git a/patches/server/0885-Fix-NPE-for-BlockDataMeta-getBlockData.patch b/patches/server/0886-Fix-NPE-for-BlockDataMeta-getBlockData.patch similarity index 100% rename from patches/server/0885-Fix-NPE-for-BlockDataMeta-getBlockData.patch rename to patches/server/0886-Fix-NPE-for-BlockDataMeta-getBlockData.patch diff --git a/patches/server/0886-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch b/patches/server/0887-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch similarity index 100% rename from patches/server/0886-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch rename to patches/server/0887-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch diff --git a/patches/server/0887-Add-EntityDyeEvent-and-CollarColorable-interface.patch b/patches/server/0888-Add-EntityDyeEvent-and-CollarColorable-interface.patch similarity index 96% rename from patches/server/0887-Add-EntityDyeEvent-and-CollarColorable-interface.patch rename to patches/server/0888-Add-EntityDyeEvent-and-CollarColorable-interface.patch index 475a5911e..8eacb2217 100644 --- a/patches/server/0887-Add-EntityDyeEvent-and-CollarColorable-interface.patch +++ b/patches/server/0888-Add-EntityDyeEvent-and-CollarColorable-interface.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add EntityDyeEvent and CollarColorable interface diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index 5ad968a2f1add27da0d6a858e683d5d771128092..4e42bcb48c75c816e89e652c898242a9bd8c9d5a 100644 +index e44352857272a2a4027c67bd25a28a9498b7bb49..ab86bfdaebe9b8791f0cfa6e0c61f80c8f891a93 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java @@ -399,6 +399,13 @@ public class Cat extends TamableAnimal { diff --git a/patches/server/0888-Fire-CauldronLevelChange-on-initial-fill.patch b/patches/server/0889-Fire-CauldronLevelChange-on-initial-fill.patch similarity index 100% rename from patches/server/0888-Fire-CauldronLevelChange-on-initial-fill.patch rename to patches/server/0889-Fire-CauldronLevelChange-on-initial-fill.patch diff --git a/patches/server/0889-fix-powder-snow-cauldrons-not-turning-to-water.patch b/patches/server/0890-fix-powder-snow-cauldrons-not-turning-to-water.patch similarity index 100% rename from patches/server/0889-fix-powder-snow-cauldrons-not-turning-to-water.patch rename to patches/server/0890-fix-powder-snow-cauldrons-not-turning-to-water.patch diff --git a/patches/server/0890-Sign-cleanup-filtering.patch b/patches/server/0891-Sign-cleanup-filtering.patch similarity index 100% rename from patches/server/0890-Sign-cleanup-filtering.patch rename to patches/server/0891-Sign-cleanup-filtering.patch diff --git a/patches/server/0891-Add-PlayerStopUsingItemEvent.patch b/patches/server/0892-Add-PlayerStopUsingItemEvent.patch similarity index 100% rename from patches/server/0891-Add-PlayerStopUsingItemEvent.patch rename to patches/server/0892-Add-PlayerStopUsingItemEvent.patch diff --git a/patches/server/0892-FallingBlock-auto-expire-setting.patch b/patches/server/0893-FallingBlock-auto-expire-setting.patch similarity index 100% rename from patches/server/0892-FallingBlock-auto-expire-setting.patch rename to patches/server/0893-FallingBlock-auto-expire-setting.patch diff --git a/patches/server/0893-Don-t-tick-markers.patch b/patches/server/0894-Don-t-tick-markers.patch similarity index 100% rename from patches/server/0893-Don-t-tick-markers.patch rename to patches/server/0894-Don-t-tick-markers.patch diff --git a/patches/server/0894-Do-not-accept-invalid-client-settings.patch b/patches/server/0895-Do-not-accept-invalid-client-settings.patch similarity index 100% rename from patches/server/0894-Do-not-accept-invalid-client-settings.patch rename to patches/server/0895-Do-not-accept-invalid-client-settings.patch diff --git a/patches/server/0895-Add-support-for-Proxy-Protocol.patch b/patches/server/0896-Add-support-for-Proxy-Protocol.patch similarity index 100% rename from patches/server/0895-Add-support-for-Proxy-Protocol.patch rename to patches/server/0896-Add-support-for-Proxy-Protocol.patch diff --git a/patches/server/0896-Fix-OfflinePlayer-getBedSpawnLocation.patch b/patches/server/0897-Fix-OfflinePlayer-getBedSpawnLocation.patch similarity index 100% rename from patches/server/0896-Fix-OfflinePlayer-getBedSpawnLocation.patch rename to patches/server/0897-Fix-OfflinePlayer-getBedSpawnLocation.patch diff --git a/patches/server/0897-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch b/patches/server/0898-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch similarity index 100% rename from patches/server/0897-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch rename to patches/server/0898-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch diff --git a/patches/server/0898-Sanitize-Sent-BlockEntity-NBT.patch b/patches/server/0899-Sanitize-Sent-BlockEntity-NBT.patch similarity index 100% rename from patches/server/0898-Sanitize-Sent-BlockEntity-NBT.patch rename to patches/server/0899-Sanitize-Sent-BlockEntity-NBT.patch diff --git a/patches/server/0899-Prevent-entity-loading-causing-async-lookups.patch b/patches/server/0900-Prevent-entity-loading-causing-async-lookups.patch similarity index 100% rename from patches/server/0899-Prevent-entity-loading-causing-async-lookups.patch rename to patches/server/0900-Prevent-entity-loading-causing-async-lookups.patch diff --git a/patches/server/0900-Disable-component-selector-resolving-in-books-by-def.patch b/patches/server/0901-Disable-component-selector-resolving-in-books-by-def.patch similarity index 100% rename from patches/server/0900-Disable-component-selector-resolving-in-books-by-def.patch rename to patches/server/0901-Disable-component-selector-resolving-in-books-by-def.patch diff --git a/patches/server/0901-Throw-exception-on-world-create-while-being-ticked.patch b/patches/server/0902-Throw-exception-on-world-create-while-being-ticked.patch similarity index 100% rename from patches/server/0901-Throw-exception-on-world-create-while-being-ticked.patch rename to patches/server/0902-Throw-exception-on-world-create-while-being-ticked.patch