diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/DhServerLevel.java b/core/src/main/java/com/seibel/distanthorizons/core/level/DhServerLevel.java index 10f8f59a7..734381d29 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/level/DhServerLevel.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/level/DhServerLevel.java @@ -350,12 +350,10 @@ public class DhServerLevel extends AbstractDhLevel implements IDhServerLevel public void onWorldGenTaskComplete(DhSectionPos pos) { IncompleteDataSourceEntry entry = this.incompleteDataSources.get(pos); - if (entry == null) + if (entry != null) { - return; + this.trySetGeneratedDataSourceToEntry(entry, pos); } - - this.trySetGeneratedDataSourceToEntry(entry, pos); } private static class IncompleteDataSourceEntry diff --git a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/AbstractFullDataRequestQueue.java b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/AbstractFullDataRequestQueue.java index 4fe3a7128..f45fd4c47 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/AbstractFullDataRequestQueue.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/AbstractFullDataRequestQueue.java @@ -233,7 +233,20 @@ public abstract class AbstractFullDataRequestQueue implements IDebugRenderable, return entry.future.complete(false); } - return entry.future.complete(true); + // Hack to work around a race condition + // If you finish the request too quickly, the section will never render + new Thread(() -> { + try + { + Thread.sleep(5000); + entry.future.complete(true); + } + catch (InterruptedException e) + { + throw new RuntimeException(e); + } + }).start(); + return null; }); }