Allowed the (knot) launcher to give the intended namespace
Adds a getFinalNamespace() to the QuiltLauncher allowing the knot to provide other namespaces outside of intermediary to be used.
Currently, the access widener's namespace preference is hardcoded as intermediary within the RuntimeModRemapper, but with this change the value is now gotten from the launcher.
This PR also makes several functions and classes for the knot class loaders public, allowing for the creation of other knots.
~~I think a good idea is to move the namespace stuff that I previously moved into the game provider to the launcher. (Less duplicated code)
I'll implement that tomorrow, so don't merge this yet.~~
Nvm, I don't see what past me in https://github.com/QuiltMC/quilt-loader/pull/435#issuecomment-2139377429 wanted to change.
Sorry for the long open time, I was on a bit of a development hiatus.
I'll double-check this commit has no issues and report back on its status in a few minutes.
Should be ready to be reviewed/merged now.
Note: I'm not sure if you'd prefer to revert https://github.com/QuiltMC/quilt-loader/pull/435/commits/89b42d3a2bb4ea2fde9f8f5ae9e90784d7606f44, but it will make it so that other knots can just build off the base knot, and don't have to re-implement everything.
If it is accepted, then many of the things that are made public here can be turned back to private as they no longer have to be implemented by other peoples knots.
For now, I'm closing this PR. When I have time over the next week, I'll update it to work with the latest commit of develop, and reopen this PR.