LoD don't render after updated the mod.

Solution:
Got a reliable enough fix, will push soon
Jump to solution
33 Replies
MarijnIsN00B
MarijnIsN00B2w ago
Unrelated to the post, what's that world gen? Those stone cliffs looks really cool And related to the post, nothing in the logs immediately jump out at me but you could try disabling Noxesium and seeing if that helps
NyteWL
NyteWLOP2w ago
idk the server used custom datapack not helpful
MarijnIsN00B
MarijnIsN00B2w ago
Does DH work on a singleplayer world?
NyteWL
NyteWLOP2w ago
looks yes
Signynt
Signynt2w ago
I'm having the same problem after updating to 1.21.10, have you found a solution?
NyteWL
NyteWLOP2w ago
not yet, im still using 2.3.4 right now
BackSun
BackSun2w ago
Try deleting/renaming your DH database and see if that resolves the issue. !lodstore
YAGPDB.xyz
YAGPDB.xyz2w ago
Single Player: - Overworld: .minecraft/saves/WORLD_NAME/data/DistantHorizons.sqlite - Nether: .minecraft/saves/WORLD_NAME/DIM-1/data/DistantHorizons.sqlite - End: .minecraft/saves/WORLD_NAME/DIM1/data/DistantHorizons.sqlite - Custom Dimensions: .minecraft/saves/WORLD_NAME/DIMENSION_FOLDER/data/DistantHorizons.sqlite Multiplayer: - .minecraft/Distant_Horizons_server_data/SERVER_NAME/ Server Mod - Overworld: SERVER_FOLDER/world/data/DistantHorizons.sqlite - Nether: SERVER_FOLDER/world/DIM-1/data/DistantHorizons.sqlite - End: SERVER_FOLDER/world/DIM1/data/DistantHorizons.sqlite - Custom Dimensions: SERVER_FOLDER/world/DIMENSION_FOLDER/data/DistantHorizons.sqlite Server Plugin All dimensions in one file: SERVER_FOLDER/plugins/DHSupport/data.sqlite NOTE: Sometimes there might be 2 additional files next to the main one with extensions .sqlite-wal and .sqlite-shm If there are, all 3 should be treated as a single file, a.k.a. moved, deleted, backed-up always together! If you don't, the database will become corrupted.
NyteWL
NyteWLOP2w ago
no
BackSun
BackSun2w ago
Try removing all other mods and deleting your DH config file !config
YAGPDB.xyz
YAGPDB.xyz2w ago
To edit the config, press the button next to the FOV slider. The config file found in .minecraft/config/DistantHorizons.toml
NyteWL
NyteWLOP2w ago
both two tries rendered some lods but stop render more soon. when i rejoin the server there have same problem
BackSun
BackSun2w ago
Does the server have DH installed and enabled?
NyteWL
NyteWLOP2w ago
installed dh plugin
BackSun
BackSun2w ago
Make sure generation is enabled on the client and the server plugin's config. If they both are enabled, even if world gen is slow, as long as it is happening over the course of several minutes, it's working.
NyteWL
NyteWLOP2w ago
when i use 2.3.4 they work fine
NyteWL
NyteWLOP2w ago
NyteWL
NyteWLOP2w ago
@James Seibel GMT-5
BackSun
BackSun2w ago
@Jckf (GMT+2) @пшш I'm not well versed enough with the server level loading logic to diagnose this. I can reproduce it by adding a delay to the DH mod's onClientOnlyConnected event, but I'm not sure how it's supposed to behave normally. As a side note I'd like to move away from level load/unload events all together and just have the client request the level(s) currently being rendered when needed, but that's for another day.
@Mixin(ClientPacketListener.class)
public class MixinClientPacketListener
{
...

@Inject(method = "handleLogin", at = @At("RETURN"))
void onHandleLoginEnd(CallbackInfo ci)
{
Thread t = new Thread(() ->
{
try
{
Thread.sleep(1000); //without this delay the server will load in most times, but not every time
}
catch (Exception e) { throw new RuntimeException(e); }

ClientApi.INSTANCE.onClientOnlyConnected();
ClientApi.INSTANCE.clientLevelLoadEvent(ClientLevelWrapper.getWrapper(this.level, true));
});
t.start();
}

...
}
@Mixin(ClientPacketListener.class)
public class MixinClientPacketListener
{
...

@Inject(method = "handleLogin", at = @At("RETURN"))
void onHandleLoginEnd(CallbackInfo ci)
{
Thread t = new Thread(() ->
{
try
{
Thread.sleep(1000); //without this delay the server will load in most times, but not every time
}
catch (Exception e) { throw new RuntimeException(e); }

ClientApi.INSTANCE.onClientOnlyConnected();
ClientApi.INSTANCE.clientLevelLoadEvent(ClientLevelWrapper.getWrapper(this.level, true));
});
t.start();
}

...
}
@43eyes I think your issue may be related. When connected to a DH supported server there's a chance the level won't load properly, causing DH not to render, which may appear as corrupted shaders. https://discord.com/channels/881614130614767666/1426629987049406664/1426629987049406664
ZoopaMario
ZoopaMario2w ago
I'm having the same issue after updating to 2.3.5 (no other mods intalled + DHS latest development build on server), on initial join the server will provide LOD data, once i move to another dimension and back i will see no LOD data as seen in Nates screenshot. Only resetting the client will then make LOD show up again. Also a fresh db file on the new version did not help.
43eyes
43eyes2w ago
Yes this si exactly what's happening with me, too. Haven't tried a dimension change yet, though. Were not there yet lol Happening on both my wife's computer and mine with the same behavior. One laptop, one desktop, both Intel and Nvidia. Doesn't matter who hosts the server
Jckf
Jckf2w ago
@James Seibel GMT-5 This is a client side issue, right? I can't see how the plugin would be to blame 🤔 To clarify: The plugin doesn't do anything unless requested by the client, so the timing should in theory be entirely controlled by when requests are sent. The code that corresponds to level init on the plugin side is the player config message handler, which is very minimal https://gitlab.com/distant-horizons-team/distant-horizons-server-plugin/-/blob/develop/src/main/java/no/jckf/dhsupport/core/handler/PlayerConfigHandler.java?ref_type=heads
BackSun
BackSun2w ago
I think it is a client issue, but wanted to run this by you in case you've seen this issue before. Also does the client request the level? I thought the server pushed the level to the client. (shows how much I understand the network flow 🙃)
пшш
пшш2w ago
Currently checking. So far both level loading and network are working fine... Not sure why rendering dies
BackSun
BackSun2w ago
The renderer dies because a client level (supposidly) isn't loaded. Take a look at the string returned by RenderUtil.shouldLodsRender in ClientApi for more info.
Solution
пшш
пшш2w ago
Got a reliable enough fix, will push soon
пшш
пшш2w ago
server keyed levels weren't properly handled
BackSun
BackSun2w ago
Thanks for the fix!
NyteWL
NyteWLOP2w ago
i have tried the nightly build and it works good👍
NyteWL
NyteWLOP2w ago
that is to say, the plugin wont notice behaviors of the player without dh mod such as building? maybe i misunderstood but i noticed that the plugin seems to send obviously outdated lods to my client
Jckf
Jckf2w ago
No, it listens for certain events in order to trigger LOD updates Players do not need DH installed on their clients in order to trigger LOD updates But in relation to this thread and level loading; that is all controlled from the client side mod
NyteWL
NyteWLOP2w ago
so only the player build or do something at the chunk that lod database had been logged, when dh plugin is disabled or died, will cause the plugin send outdated lods i guess?
Jckf
Jckf2w ago
I have no idea what you're trying to say. As long as the plugin is active, it will keep updating LODs in the background. If you remove or disable the plugin, then the LOD database will become outdated. When a player connects to your server, it will ask the plugin for updates to LODs the client has seen before - and if there have been changes, it will download the updated LODs first TL;DR: Yes, the plugin must be running to detect changes.

Did you find this page helpful?