How qendolin/better-clouds works
Better Clouds is a client-side Minecraft mod that replaces vanilla-style cloud rendering with customizable volumetric, multi-layer clouds. Its runtime flow begins at Minecraft render hooks, enters the cloud rendering coordinator, and reaches the renderer and shader implementations. Users configure appearance through the settings GUI, with configuration persisted separately; presets and procedural generation support customization. Loader-specific entrypoints and compatibility adapters connect the shared mod to Fabric, NeoForge, and visual-mod integrations. The README documents broader capabilities than the sampled source, so uncertain internal wiring is omitted.
Main entry points: CloudRenderer.java Cloud renderer · BetterClouds.java Mod core · CloudRenderCoordinator.java Render coordinator · ChunkedGenerator.java Cloud generation
Components 23
Mod lifecycle
- Fabric entrypoint
fabric/src/main/java/com/qendolin/betterclouds/Entrypoint.java - NeoForge entrypoint
neoforge/src/main/java/com/qendolin/betterclouds/Entrypoint.java - Mod core
common/src/main/java/com/qendolin/betterclouds/BetterClouds.java - Render hooks
common/src/main/java/com/qendolin/betterclouds/mixin/required/WorldRendererMixin.java
Cloud pipeline
- Render coordinator
common/src/main/java/com/qendolin/betterclouds/rendering/CloudRenderCoordinator.java - Cloud renderer
common/src/main/java/com/qendolin/betterclouds/rendering/CloudRenderer.java - Cloud generation
common/src/main/java/com/qendolin/betterclouds/generator/ChunkedGenerator.java - Noise sampling
common/src/main/java/com/qendolin/betterclouds/generator/Sampler.java - OpenGL backend
common/src/main/java/com/qendolin/betterclouds/rendering/opengl/OpenGLRenderer.java - Blaze3D backend
common/src/main/java/com/qendolin/betterclouds/rendering/blaze3d/Blaze3DRenderer.java - Coverage shader
common/src/main/java/com/qendolin/betterclouds/rendering/opengl/shaders/CoverageShader.java
Settings and presets
- Configuration GUI
common/src/main/java/com/qendolin/betterclouds/config/gui/ConfigGUI.java - Cloud settings
common/src/main/java/com/qendolin/betterclouds/config/Config.java - Config manager
common/src/main/java/com/qendolin/betterclouds/config/ConfigManager.java - Preset handling
common/src/main/java/com/qendolin/betterclouds/config/preset/PresetLoader.java - Shader presets
common/src/main/java/com/qendolin/betterclouds/config/compat/ShaderPresetConfig.java
Platform and compatibility
- Fabric platform
fabric/src/main/java/com/qendolin/betterclouds/platform/fabric/EventHooksImpl.java - NeoForge platform
neoforge/src/main/java/com/qendolin/betterclouds/platform/neoforge/EventHooksImpl.java - Mod compatibility
common/src/main/java/com/qendolin/betterclouds/compat - Iris integration
common/src/main/java/com/qendolin/betterclouds/compat/IrisCompat.java
Other components
- Minecraft client
- Resource packs
- Player
Connections 20
- Fabric entrypoint → Mod core: initializes
- NeoForge entrypoint → Mod core: initializes
- Minecraft client → Render hooks: renders world
- Render hooks → Render coordinator: hooks rendering
- Render coordinator → Cloud renderer: coordinates
- Cloud renderer → Cloud generation: generates clouds
- Cloud generation → Noise sampling: samples noise
- Cloud renderer → OpenGL backend: uses backend
- Cloud renderer → Blaze3D backend: uses backend
- OpenGL backend → Coverage shader: renders coverage
- Player → Configuration GUI: changes settings
- Configuration GUI → Cloud settings: updates
- Config manager → Cloud settings: loads and saves
- Config manager → Preset handling: serializes presets
- Preset handling → Shader presets: loads
- Resource packs → Cloud generation: customize generation
- Fabric platform → Mod core: provides platform
- NeoForge platform → Mod core: provides platform
- Mod compatibility → Iris integration: includes
- Render coordinator → Mod compatibility: checks integrations