Alfheim
Alfheim is a fork (or a rewrite depending on your views on the ship of theseus) of Hesperus which is a fork of Phosphor
What benefit does this have over Phosphor/Hesperus?
Alfheim aims to be compatible in all scenarios, and if for any reasons a something is fundamentally incompatible, a warning will tell you what is happening instead of crashing with hardly any information.
Alfheim also has a lot of optimizations of all sizes over Phosphor/Hesperus it uses slightly less memory overall.
Alfheim also improves client side performance unlike Phosphor/Hesperus, by reducing by lighting related block updates by a factor of 27. To improve client side performance, Alfheim also limits how much lighting updates are performed each frame. In addition, Phosphor/Hesperus unnecessarily forces lights to be updates before each frame which Alfheim doesn't.
Alfheim also fixes more vanilla lighting issues than Phosphor/Hesperus, here is a list of all fixes and where they come from:
Fixed in Alfheim:
Why not just PR to Hesperus?
Fair question, the reason is simple, Alfheim compared to Hesperus isn't just a fork to fix bugs, it is my continuation of it. And as seen in the past, my continuations of mods aren't just modifying some things, they are pretty invasive and basically change everything internally.
It wasn't this way at first, I wanted to PR some stuff to Hesperus but after doing parts of it, it became clear that it had grown bigger than a PR. So then I decided to do Alfheim, for now it includes optimizations, bug fixes and compatibility fixes, but later down the line I have more plans.
Want to have your own mod or support me?
If you're looking for a mod but don't have the development skills or time, consider commissioning me! My commissions are currently open and I would be happy to create a custom mod to fit your needs as long as you provide assets.
You can also support me on a monthly basis by becoming a member. To thank you will have the possibility to access exclusive post and messages, Discord channel for WIP content, and even access to unreleased Prototypes or WIP Projects.
You can also buy me a hot chocolate.
All Versions
+ Add Version## Alfheim Version 1.6 Changelog - 2025-06-23
### Added
- Alfheim will now attempt to hijack the mixins of Phosphor/Hesperus if it is installed and log a warning
### Changed
- Now requires MixinBooter 10.6 and up
- Changed the URL in the mod menu to point to GitHub instead of CurseForge
- World's lighting engines are now lazily initialized
### Fixed
- Fixed compatibility with Celeritas (In [#112](https://github.com/Red-Studio-Ragnarok/Alfheim/pull/112) by [Karnatour](https://github.com/Karnatour))
### Internal
- Removed the
comformVisibilityoverwrite inmixins.alfheim.jsonas it is no longer required with MixinBooter 9.4 and above - Only generate sources jar for releases
- Switched from Javadoc to Markdowndoc
- Now uses tab indentation rather than spaces (This is an experiment that will continue to pop up on other Red Studio projects if everything goes well)
- Update to use Gradle best practices
- Remove
@versiontag from classes - Updated dependencies:
- Updated to [gradle-buildconfig-plugin](https://github.com/gmazzo/gradle-buildconfig-plugin) 5.6.6
- Updated to [gradle-idea-ext-plugin](https://github.com/JetBrains/gradle-idea-ext-plugin) 1.1.10
- Updated to [io.freefair.lombok](https://plugins.gradle.org/plugin/io.freefair.lombok) 8.14
- Updated to [RetroFuturaGradle](https://github.com/GTNewHorizons/RetroFuturaGradle) 1.4.5
- Updated to [foojay-resolver](https://github.com/gradle/foojay-toolchains) 1.0.0
- Updated to [MixinBooter](https://www.curseforge.com/minecraft/mc-mods/mixin-booter) 10.6
- Updated to [Gradle](https://gradle.org) 8.14.2
## Alfheim Version 1.5 Changelog - 2025-02-11
### Changed
DeduplicatedLongQueuenow creates a new deduplication set instead of clearing it- Improved client light processing performance by using a
DeduplicatedLongQueueinstead of aSetofBlockPosobjects - Updated dependencies:
- Requires Red Core 0.6 and up
### Fixed
- Fixed client lighting not updating past render chunk boundaries [#40](https://github.com/Red-Studio-Ragnarok/Alfheim/issues/40)
### Internal
- Updated to [org.jetbrains.gradle.plugin.idea-ext](https://github.com/JetBrains/gradle-idea-ext-plugin) 1.1.9
- Updated to [MixinBooter](https://github.com/CleanroomMC/MixinBooter) 10.2
- Updated to [gradle-buildconfig-plugin](https://github.com/gmazzo/gradle-buildconfig-plugin) 5.5.1
- Updated to [io.freefair.lombok](https://plugins.gradle.org/plugin/io.freefair.lombok) 8.11
- Updated to [foojay-resolver](https://github.com/gradle/foojay-toolchains) 0.9.0
- Updated to [RetroFuturaGradle](https://github.com/GTNewHorizons/RetroFuturaGradle) 1.4.2
- Reworked buildscript
- Updated [Red Core](https://www.curseforge.com/minecraft/mc-mods/red-core) dependency to 0.6
## Alfheim Version 1.4 Changelog - 2024-08-21
### Changed
- Overwrites now do not enforce the scope of methods to prevent crashes, using
conformVisibilityoption instead - Updated dependencies:
- Requires MixinBooter 8.8 and up
- Simplified Cubic Chunks detection logic
### Fixed
- Fixed version checking
- Fixed Alfheim not loading on dedicated servers
### Removed
- Removed line asking to report a threading issue which is caused by other mods
### Internal
- Updated to [gradle-buildconfig-plugin](https://github.com/gmazzo/gradle-buildconfig-plugin) 5.4.0
- Updated to [io.freefair.lombok](https://plugins.gradle.org/plugin/io.freefair.lombok) 8.7.1
- Remade the build script
- Switched to the new standard
gradle.properties - Updated to [Gradle](https://gradle.org) 8.8
- Updated to [RetroFuturaGradle](https://github.com/GTNewHorizons/RetroFuturaGradle) 1.4.1
- Updated to [MixinBooter](https://github.com/CleanroomMC/MixinBooter) 9.0
- Set a minimum Gradle Daemon JVM version requirement
- General cleanup
## Alfheim Version 1.3 Changelog - 2024-03-28
### Changed
- Queues are now deduplicated, meaning that the lighting engine won't update a position multiple times in a row, improving performance
### Fixed
- Fixed compatibility with Vintagium (Thanks to [Asek3](https://github.com/Asek3) in [#41](https://github.com/Red-Studio-Ragnarok/Alfheim/pull/41))
- Fixed
ArrayIndexOutOfBoundsExceptioncrashes
### Internal
- Cleaned up the buildscript
- Now uses the Red Studio maven for Red Core
- Updated [RetroFuturaGradle](https://github.com/GTNewHorizons/RetroFuturaGradle) to version 1.3.34
- Updated [foojay-resolver](https://github.com/gradle/foojay-toolchains) to version 0.8.0
- Updated [io.freefair.lombok](https://plugins.gradle.org/plugin/io.freefair.lombok) to version 8.6
- Updated [org.jetbrains.gradle.plugin.idea-ext](https://plugins.gradle.org/plugin/org.jetbrains.gradle.plugin.idea-ext) to version 1.1.8
## Alfheim Version 1.2 Changelog - 2023-12-11
### Changed
- Stopped using
PooledLongQueueusingLongArrayFIFOQueueinstead, should be more optimized (faster & lighter lighting updates) - Skip spreading light neighbor checks early if the current light is lower than the neighbor light
- Made minor changes to clamping (Shouldn't cause a difference)
### Internal
- Updated RFG
- Updated Gradle
- Fixed the names of the arrays of queues
- Cleaned up
LightingEngine
## Alfheim Version 1.1.1 Changelog - 2023-11-19
### Fixed
- Fixed log spam
## Alfheim Version 1.1 Changelog - 2023-11-18
#### Now depends on Red Core 0.5
#### Now depends on MixinBooter 8.6
### Changed
- Lighting engine will now schedule updates no matter if that chunk is loaded, which is different from vanilla but potentially fix areas lighting being weird when going far away
- Made the logic for capping the client updates per frame dumber which should fix performance drops on lower end hardware (Fixes [#20](https://github.com/Red-Studio-Ragnarok/Alfheim/issues/20))
- Made all head-cancels overwrite instead
- All overwrites now make the scope of the overwritten methods
publicto prevent access level conflicts at runtime - Updated the in game description to the new short description
- Updated to Red Core 0.5
### Fixed
- Fixed a crash at start on Mohist (Probably any Bukkit implementation)
- Fixed skins not working with Alfheim paired with some other mod (we don't know which)
- Fixed unescaped unicode characters in the description
### Internal
- Switched to [CurseUpdate](https://forge.curseupdate.com/) for update checking
- Switched to [gradle-buildconfig-plugin](https://github.com/gmazzo/gradle-buildconfig-plugin) entirely for project constants
- Switched to Gradle Kotlin DSL
- Switched to Adoptium
- Moved logo to the root of the resources module
- General cleanup
- General typo fixing
- Added missing since tags
- Deprecated
PooledLongQueue
### Removed
- Removed access transformed as overwrites can already do the job on their own
## Alfheim Version 1.0.2 Changelog - 2023-09-12
### Fixed
- Fixed crash on world load with Nothirium
- Fixed crashes on dedicated servers
### Internal
- Reorganized
ChunkMixin - Cleaned up
ChunkMixin
## Alfheim Version 1.0.1 Changelog - 2023-09-08
### Fixed
- Fixed crash on launch with certain mods (Fluidlogged API, CodeChickenLib, FunkyLocomotion and more)
## Alfheim Version 1.0 Changelog - 2023-09-06
Initial Release
