diff --git a/Spigot-Server-Patches/Use-wrapped-StructureManager-to-prevent-worldgen-dea.patch b/Spigot-Server-Patches/Use-wrapped-StructureManager-to-prevent-worldgen-dea.patch new file mode 100644 index 000000000..0d0e04b47 --- /dev/null +++ b/Spigot-Server-Patches/Use-wrapped-StructureManager-to-prevent-worldgen-dea.patch @@ -0,0 +1,34 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: MiniDigger | Martin +Date: Wed, 2 Sep 2020 13:56:18 +0200 +Subject: [PATCH] Use wrapped StructureManager to prevent worldgen deadlock + + +diff --git a/src/main/java/net/minecraft/server/RegionLimitedWorldAccess.java b/src/main/java/net/minecraft/server/RegionLimitedWorldAccess.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/server/RegionLimitedWorldAccess.java ++++ b/src/main/java/net/minecraft/server/RegionLimitedWorldAccess.java +@@ -0,0 +0,0 @@ public class RegionLimitedWorldAccess implements GeneratorAccessSeed { + private final BiomeManager m; + private final ChunkCoordIntPair n; + private final ChunkCoordIntPair o; ++ private final StructureManager structureManager; // Paper - cache wrapped structure manager + + public RegionLimitedWorldAccess(WorldServer worldserver, List list) { + int i = MathHelper.floor(Math.sqrt((double) list.size())); +@@ -0,0 +0,0 @@ public class RegionLimitedWorldAccess implements GeneratorAccessSeed { + this.m = new BiomeManager(this, BiomeManager.a(this.g), worldserver.getDimensionManager().getGenLayerZoomer()); + this.n = ((IChunkAccess) list.get(0)).getPos(); + this.o = ((IChunkAccess) list.get(list.size() - 1)).getPos(); ++ this.structureManager = this.f.getStructureManager().a(this); // Paper - cache wrapped structure manager + } + } + +@@ -0,0 +0,0 @@ public class RegionLimitedWorldAccess implements GeneratorAccessSeed { + + @Override + public Stream> a(SectionPosition sectionposition, StructureGenerator structuregenerator) { +- return this.f.a(sectionposition, structuregenerator); ++ return structureManager.a(sectionposition, structuregenerator); // Paper - wrapped structure manager to prevent deadlock, see #4272 and MC-199487 + } + }