This PR updates the build system to the one we use for all GTNH mods (Gradle 8.6 + RetroFuturaGradle + GTNHGradle plugins), which brings faster build times, better IDE compatibility and various bug fixes to the workflow. It also brings in generics mapping for Minecraft types, so most public and protected raw types like List or Map in the Minecraft API actually become their real generic variants like List<String>
On top of that I ported some of our old mixins used to fix old JM builds, and included them as patches in this PR.
I'd recommend reviewing this commit-by-commit in the Files view to get the best idea of what happened, a rebase merge without squashing would probably also help git history readability.
Fixes included:
Using a sun. internal class for NotImplementedException - simply swapped to the apache commons equivalent
Fix scrollwheel calculation in WaypointManager being flipped for a scroll delta of exactly 1/-1 (due to inverted clamping logic) - I have disabled clamping when LWJGL3 is detected as lwjgl3ify fixes the nonsensical values reported by Mouse.getEventDWheel()
Fix unbound keys triggering sometimes, because lwjgl2 reports presses of e.g. media keys on a keyboard as KEY_NONE being pressed
Fix illegal :s in WorldData path, which breaks saving it on Windows
Fix the update checker URLs
Fix resource zip extraction not working when the jar path contains + or other URL-encodable characters in raw form
I have included a slightly modified copy of our github actions workflow for automatic PR testing and publishing to Curseforge&Modrinth. Setting the MODRINTH_TOKEN and CURSEFORGE_TOKEN secrets in this repository's settings to your personal API keys for those websites should be enough to make the publishing work - but I didn't have a good way to test if everything about my configuration for it is correct.
Versioning was switched from being based on the project properties file, to being read from the latest git tag (it includes dirty/current branch metadata if on a dev branch). This means publishing is as simple as git tag 5.1.3p6 && git push origin 5.1.3p6
I have tried to keep the fairplay and unlimited jars working as before, and verified that the file layout looks the same - but another set of eyes certainly wouldn't hurt.
You can now test the mod via Gradle in various run configurations too:
runClient/runServer - like FG, deobfuscated environment
runObfClient/runObfServer - runs in a launcher-like environment using SRG names
runClient17/runClient21/runServer17/21 - runs with java 17/21, with GTNH's lwjgl3ify
This PR updates the build system to the one we use for all GTNH mods (Gradle 8.6 + RetroFuturaGradle + GTNHGradle plugins), which brings faster build times, better IDE compatibility and various bug fixes to the workflow. It also brings in generics mapping for Minecraft types, so most public and protected raw types like
List
orMap
in the Minecraft API actually become their real generic variants likeList<String>
On top of that I ported some of our old mixins used to fix old JM builds, and included them as patches in this PR. I'd recommend reviewing this commit-by-commit in the Files view to get the best idea of what happened, a rebase merge without squashing would probably also help git history readability.
Fixes included:
sun.
internal class forNotImplementedException
- simply swapped to the apache commons equivalent:
s in WorldData path, which breaks saving it on Windows+
or other URL-encodable characters in raw formI have included a slightly modified copy of our github actions workflow for automatic PR testing and publishing to Curseforge&Modrinth. Setting the
MODRINTH_TOKEN
andCURSEFORGE_TOKEN
secrets in this repository's settings to your personal API keys for those websites should be enough to make the publishing work - but I didn't have a good way to test if everything about my configuration for it is correct.Versioning was switched from being based on the project properties file, to being read from the latest git tag (it includes dirty/current branch metadata if on a dev branch). This means publishing is as simple as
git tag 5.1.3p6 && git push origin 5.1.3p6
I have tried to keep the fairplay and unlimited jars working as before, and verified that the file layout looks the same - but another set of eyes certainly wouldn't hurt.
You can now test the mod via Gradle in various run configurations too:
runClient
/runServer
- like FG, deobfuscated environmentrunObfClient
/runObfServer
- runs in a launcher-like environment using SRG namesrunClient17
/runClient21
/runServer17/21
- runs with java 17/21, with GTNH's lwjgl3ify