Resolve NeoForm & NeoForge ZIP-Archives Earlier to Access Configs in Specifications #86
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The archives are already resolved during the Gradle configuration phase (out of necessity, since the config contained within is needed to build the task graph). Doing this in the Specification build allows us to load the config earlier and simplify the architecture a bit. I did check that subsequent runs just use the archives from the local Gradle artifact cache directly - same as the NG plugin jars and other Maven dependencies.
As a side-effect, this allows us to return
Specification#getMinecraftVersion
directly from the NeoForm configuration file, instead of attempting to parse it from the version string.What needs extra attention is how the NeoForm version is handled when building userdev- and installer-profiles in NeoForgeDev. My intent is to build the NF runtime earlier, which resolves the effective version of NF. Then I use that resolved version in the profiles. This should result in a version range of
+
still leading to the local environment and the profiles using the exact same specific NF version.To that end, I refactored how RuntimeDevRuntime is built by having it require a pre-built NeoFormRutime, instead of duplicating all configuration parameters of the NeoFormRuntime in the RuntimeDevRuntime.
Supersedes #93 too, since I fixed the grammar in here too.