in
 private @NotNull ServerLevel createDynamicLevel(ResourceKey<Level> key, WorldData worldData, LevelStem stem, ServerLevel overworld)
you use
        DerivedLevelData data = new DerivedLevelData(worldData, worldData.overworldData());
but this does not allow for independent daytime / weather. can you replace it with primary level data?