MinecraftDev icon indicating copy to clipboard operation
MinecraftDev copied to clipboard

Quilt Support

Open anonymous123-code opened this issue 2 years ago • 15 comments

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

anonymous123-code avatar Mar 28 '23 21:03 anonymous123-code

Hi, are you in the mcdev discord?

Earthcomputer avatar Mar 28 '23 21:03 Earthcomputer

Yes, I'm anonym123

anonymous123-code avatar Mar 28 '23 21:03 anonymous123-code

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.

anonymous123-code avatar Apr 20 '23 18:04 anonymous123-code

Why won't this get merged already! This is literally 1984 (this is a joke)

Ecorous avatar Apr 23 '23 20:04 Ecorous

Heya, can I have a status update on this

Ecorous avatar May 24 '23 10:05 Ecorous

Any news on this?

Charismara avatar May 31 '23 07:05 Charismara

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.

DenWav avatar Jun 17 '23 01:06 DenWav

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.

MarcPG1905 avatar Jun 29 '23 21:06 MarcPG1905

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.

AnOpenSauceDev avatar Jul 15 '23 11:07 AnOpenSauceDev

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.

anonymous123-code avatar Aug 31 '23 17:08 anonymous123-code

We will keep this PR up to date once we plan on merging it, which is when Quilt pushes a full release.

Earthcomputer avatar Aug 31 '23 17:08 Earthcomputer

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.

OroArmor avatar Sep 19 '23 17:09 OroArmor

Would kind of like to easily setup my development environment?

nellePoint avatar Mar 16 '24 02:03 nellePoint

Quilt is in a fairly stable state so there is really little reason to wait for it to leave Beta.

StatusZer0 avatar Apr 26 '24 20:04 StatusZer0