MinecraftDev
MinecraftDev copied to clipboard
Quilt Support
This is a initial implementation of Quilt support. I implemented it by copying most of fabric's file and searching for usages. This means that there is a lot of duplicated code.
The template closely follows the official template mod, and use a libs.versions.toml as a version catalog.
The authors field may contain a comma separated list of colon-separated key-value pairs and can be optionally wrapped in braces, spaces around these characters are trimmed: Me: Owner, asdf: Lead Dev
While there is still a lot of stuff left to do, the rough edges seem to be done now and I figured I'd put this out here
- [X] Add Quilt Project creation
- [X] Add templates to template editor
- [X] Add Quilt to facet editor
- [X] Add quilt-loom support
- [X] Add reference resolution
Stuff still left to investigate:
- [x] Currently, the gradle wrapper task isn't run because of an issue where the sync starts before the wrapper finishes, leading to errors and other issues
- [x] The choice API/no API might not be sufficient. An option to include deprecated Fabric API stuff should be included
Decisions I made I'm unsure about:
- Most files are copied from fabric and then refactored, leading to lots of duplicate code. I figured that it is likely that they will evolve in different directions (and also that I wasn't sure where to put abstractions) and thus copied most of the files. It might also be sensible to just remove some parts of Fabric support (e.g. version creation) entirely. The one exception are the Reference classes, which didn't contain anything fabric specific and are just reused by the quilt code.
- Currently Fabric is always auto-detected when Quilt is present, it might be good to change that
- I currently don't provide a JSON schema for the
quilt.mod.json, but Quilt has a schema. However I expect that one to be added to the schema store, so it hopefully won't be required anyways - I also did not implement Architectury support
- The template mod contains a gh action to build the project. It would be nice to add an option for that if git is enabled
- because the property is private in the git step, it is impossible to implement this as I'd like it without either using reflection, copying a class just to modify on access modifier, or doing polling, all are things I want to avoid.
- The library version selector does not store the preferred versions, I wasn't sure on how to implement this
Known issues that I consider out of scope for this PR
- This PR is also affected by #2010
- While the gradle race condition described above seems to mostly be fixed, I still encounter it sometimes. (My theory is that indexing finishes before the setup runs the sync task, which starts the wrapper task to early)
Fixes #1827
Hi, are you in the mcdev discord?
Yes, I'm anonym123
This PR is now at a state where I finished the stuff I'm able to do on my own, and it has the important features fabric has. I updated the description accordingly.
Why won't this get merged already! This is literally 1984 (this is a joke)
Heya, can I have a status update on this
Any news on this?
I will defer this to @Earthcomputer - when he has the time and is able to review, it'll happen. Please be patient, this project has a very small team and none of us have an abundance of time.
Is this already in some alpha version? Because the pull request isn't closed yet. Could I maybe compile this on my own to have a little alpha of it? I'm not sure if the license allows this.
Is this already in some alpha version? Because the pull request isn't closed yet. Could I maybe compile this on my own to have a little alpha of it? I'm not sure if the license allows this.
LGPL 100% allows for you to compile their fork and run it for yourself.
Since I don't have the energy to keep this updated and it doesn't seem like it'll get merged anytime soon I'm closing this for the time being. I can update it if y'all plan on merging it, feel free to message me then. In the meantime I don't recommend anyone to use my fork, as it is severly outdated by now and some issues have been fixed for fabric that might affect quilt too.
We will keep this PR up to date once we plan on merging it, which is when Quilt pushes a full release.
which is when Quilt pushes a full release.
Is there a reason to wait for a full Quilt release? Quilt's overarching system is fairly stable, so I don't think there will be any big changes to it which would cause breaks with MCDev.
Would kind of like to easily setup my development environment?
Quilt is in a fairly stable state so there is really little reason to wait for it to leave Beta.