mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-01 20:50:41 +01:00
35 lines
2 KiB
Diff
35 lines
2 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: MiniDigger <admin@minidigger.me>
|
||
|
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 e9fbeaf309735ea5fcb0c53b8b2485b0c5dd43be..9172c679c874d42750d2adc32124ecda29ea43cf 100644
|
||
|
--- a/src/main/java/net/minecraft/server/RegionLimitedWorldAccess.java
|
||
|
+++ b/src/main/java/net/minecraft/server/RegionLimitedWorldAccess.java
|
||
|
@@ -30,6 +30,7 @@ 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<IChunkAccess> list) {
|
||
|
int i = MathHelper.floor(Math.sqrt((double) list.size()));
|
||
|
@@ -51,6 +52,7 @@ 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
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@@ -379,6 +381,6 @@ public class RegionLimitedWorldAccess implements GeneratorAccessSeed {
|
||
|
|
||
|
@Override
|
||
|
public Stream<? extends StructureStart<?>> 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
|
||
|
}
|
||
|
}
|