From 3d86c5c5ee63c1ba33907d968efa03dad26615bb Mon Sep 17 00:00:00 2001 From: s809 <43530948+s809@users.noreply.github.com> Date: Fri, 10 May 2024 21:13:40 +0500 Subject: [PATCH] Fix generated sections not appearing --- .../distanthorizons/core/level/DhServerLevel.java | 6 ++---- .../client/AbstractFullDataRequestQueue.java | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 5 deletions(-) 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; }); }