MultiMC / Launcher

A custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once
https://multimc.org/
Other
4.26k stars 876 forks source link

Feature Request: Option to Install Fabric API #3055

Open dexman545 opened 4 years ago

dexman545 commented 4 years ago

Description: Some option to automatically install Fabric API when installing Fabric Loader, as most users will be using it, and will help alleviate confusion of those who simply click "Install Fabric" and expect mods to work when installed.

peterix commented 4 years ago

Sounds like a good idea, yeah.

Or at least, make it super easy.

kb-1000 commented 3 years ago

Would it automatically add Fabric loader too?

dexman545 commented 3 years ago

Would it automatically add Fabric loader too?

I would assume so, unless you have a way fo using FAPI without it.

modmuss50 commented 3 years ago

I disagree with this idea due to a few reasons:

I see some possible solutions to this issue from both sides (MultiMC / Fabric), this is by no means an exhaustive list and I am all ears for other ideas. :

I know these solutions are a lot easier said than done, but I think we should try to work towards the ideal solution, and not towards something temporary that will do for now.

We have already started making steps to improving the error message people see by going ahead and changing the mod id from fabric to fabric-api. This clearly isnt a fix but might help reduce confusion.

dexman545 commented 3 years ago

I disagree with this idea due to a few reasons:

  • Not everyone installs fabric api, a large proprotion of players just install a few mods (usually peformace enchancing) that dont require fabric api. My guess is less than 50% of players use it.

If you have actual numbers, please share them.

  • There is no easy way to tell what version of fabric should be installed, there are some solutions to this, but none of them are 100% accurate. (Newer versions can work on older mc versions, such as 1.16.5/4/3/2)

There are ways to improve the accuracy of this, though it seems unlikely that fabric would provide or maintain them.

  • Fabric API has always been designed to just be a normal mod, we have gone out of our way to ensure that fabric api has no special treatment. There are a number of other mods (forge or fabric) that "most" people install why shouldnt they get their own button?

The mods you refer to are often optional. Fabric API is not. Fabric API does get special treatment anyways - and why shouldn't it? It's one of the few official mods provided by FabricMC, and it is also one of the few that mod authors can trust to exist in the future. The fact that mods can be made without it is already good enough.

I see some possible solutions to this issue from both sides (MultiMC / Fabric), this is by no means an exhaustive list and I am all ears for other ideas. :

  • MultiMC to have a way to download and install mods + dependencies.

Would be nice, but not needed for this to be implemented.

  • Fabric mods could start to include the fabric api modules they require in the jar, removing the need to even have a standalone distrubition of fabric api.

Yes, more special treatment for Fabric API (how many dependencies get JiJed?). And the inflation of mod file sizes for oft redundant modules in the context of many mods. I doubt you would convince many mods to do this. Take resource loader, the most likely module to be JiJed - it is 30kb in size. For something like AoF 3 that's an extra 3 mb. For something like curseforge modpacks, "cleaning/decompressing" mods of duplicate JiJs is impossible.

I know these solutions are a lot easier said than done, but I think we should try to work towards the ideal solution, and not towards something temporary that will do for now.

We have already started making steps to improving the error message people see by going ahead and changing the mod id from fabric to fabric-api. This clearly isnt a fix but might help reduce confusion.

While this helps, that is only in the case of mods depending on the bundle, and not the individual modules (which is the recommended method iirc?)

There is little harm in letting MMC provide an option to download FAPI.

jamierocks commented 3 years ago

If you have actual numbers, please share them.

I don't have numbers - but there is a large community that merely used Fabric Loader for using optimisation mods.

The mods you refer to are often optional. Fabric API is not.

There are plenty of mods that have hard dependencies to others.

There is little harm in letting MMC provide an option to download FAPI.

It sets a poor precedent. It ties MMC to CurseForge, since that's Fabric API's distribution method. I also can't see the UX of this would work nicely either.

I concur with modmuss, the ideal feature here would be to install mods.

kb-1000 commented 3 years ago

It sets a poor precedent. It ties MMC to CurseForge, since that's Fabric API's distribution method. [...]

Not anymore. It is available both on GitHub Releases and on Modrinth. Those are platforms which at least have APIs that are designed to be APIs, and not just reverse engineered stuff.

AWillfulMemory commented 3 years ago

If you have actual numbers, please share them.

I don't have numbers - but there is a large community that merely used Fabric Loader for using optimisation mods.

Ummm fabric api is the 8th most installed fabric 1.16.5 mod on curseforge and some of the mods that have more downloads also have forge versions dating back to 2015

P.S. you(jamierocks) and modmuss50 are sounding VERY toxic

jamierocks commented 3 years ago

Ummm then why is fabric api the 8th most installed fabric 1.16.5 mod on curseforge and some of the mods that have more downloads also have forge versions dating back to 2015

Frankly I shouldn't have replied to that comment, it really doesn't matter.

Fabric API is a mod and MultiMC isn't in the business of installing mods (whether that's JEI, Fabric API, etc) in the same sense as it does mod loaders - nor do we have a mods browser (see GH-3422).

P.S. you(jamierocks) and modmuss50 are sounding VERY toxic

I'm not going to go down that road (though I don't understand or like the implication), but do note that modmuss is the maintainer of Fabric - and we're both some of the earliest contributors to the (Fabric) project...

AWillfulMemory commented 3 years ago

Ummm then why is fabric api the 8th most installed fabric 1.16.5 mod on curseforge and some of the mods that have more downloads also have forge versions dating back to 2015

Frankly I shouldn't have replied to that comment, it really doesn't matter.

Fabric API is a mod and MultiMC isn't in the business of installing mods (whether that's JEI, Fabric API, etc) in the same sense as it does mod loaders - nor do we have a mods browser (see GH-3422).

P.S. you(jamierocks) and modmuss50 are sounding VERY toxic

I'm not going to go down that road (though I don't understand or like the implication), but do note that modmuss is the maintainer of Fabric - and we're both some of the earliest contributors to the (Fabric) project...

Yes I know What I said was wrong and I'm very sorry I will not try to excuse what I said and I really truly apologize to both you and modmuss sometimes I forget that accounts on the internet are real people and I will take responsibility for that and I know that I was the one being toxic not you two one again I am very sorry for what I said and I hope you can forgive me.

And I do agree that weather or not I see it differently than you two I shouldn't have said what I said and kept my opinion about fabric api to myself instead of being toxic about it.

P.S. I wont edit my original comment about this just because I believe that if you say something bad on the internet it should stay up so that people have all the facts about you and just because you apologize it won't change what you have said and I want that to be true for me too

RJWadley commented 3 years ago

One possible way for this to work would be as a checkbox on the fabric version selection screen, something like "Automatically download Fabric API (common mod dependency)" If the box is checked fetch the API corresponding to the selected version

One advantage of this "Fabric version checkbox" approach is it keeps the main version UI uncluttered (It already has so many buttons). However, this makes it harder to install Fabric API if Fabric Loader has already been installed.

Alternatively, If we were to implement this as a button in the main list it should be hidden unless Fabric is installed (and probably disappear if Fabric API is installed). An advantage of this is that it's simple for all instances, even if Fabric Loader has already been installed. This approach does add another button to the long list, but only on Fabric instances that don't have the API.

mrmelon54 commented 2 years ago

It could at least be a button that opens the fabric api project on curseforge and lets the user download it on their own

tort-oise commented 2 years ago

It sets a poor precedent. It ties MMC to CurseForge, since that's Fabric API's distribution method. [...]

Not anymore. It is available both on GitHub Releases and on Modrinth.

Those are platforms which at least have APIs that are designed to be APIs, and not just reverse engineered stuff.

It feels like this got buried, and I second this. GH's API could be set up to download the latest release, or alternatively a separate window could appear that lets you select a Fabric API version (eg. choosing between newer snapshot versions and stable release version) like when you choose the Fabric loader versions.

mrmelon54 commented 2 years ago

what about a ui for downloading mods from curseforge or modrinth? that would make it way more generalised instead of having an "install fabric api" button

tort-oise commented 2 years ago

what about a ui for downloading mods from curseforge or modrinth? that would make it way more generalised instead of having an "install fabric api" button

It would probably have to be from Modrinth, in that case.

peterix commented 2 years ago

No.

peterix commented 2 years ago

Conceptually, this is still something desirable, but integrating with Curse/Modrinth/random websites is not.

peterix commented 2 years ago

You can do that in a browser.

tort-oise commented 2 years ago

Well, as suggested, GitHub's API?

peterix commented 2 years ago

GitHub is a random website and probably isn't a good place to funnel tons of traffic to.

tort-oise commented 2 years ago

..A link to the "releases" page on either GH or CF? I give up. But, it would be convenient.

peterix commented 2 years ago

It would be like grabbing random library jars from Maven Central.

OK in a development environment, definitely not OK for use in production.

tort-oise commented 2 years ago

Well, maybe if there comes up some good way in the future, we could do something like this. But, I guess, put this suggestion away indefinitely right now.

peterix commented 2 years ago

Here are the options I see as possibly working:

jamierocks commented 2 years ago

Having a feature to download mods from whatever indexed services is something that I think could be useful - maybe.

However, I still don't agree with special casing mods - again it comes down to the why not add a button for JEI, for Lithium, for whatever popular mods / library mods whatever.

Its not how Fabric was designed to operate, not how it is canonically distributed, nor in the wishes of the project.

peterix commented 2 years ago

Yep. I don't want to special case one particular mod. If at all, this should be a general solution, because there are many mods.

And integrating with CurseForge or Modrinth or someone's github is not a general solution. It's just buying into random walled gardens.

That can work for modpacks, but I don't think it should be done for mods. The launcher needs to work with mods on a higher level than modpacks - resolving dependencies and similar. This cannot be done if we have to talk to N different services who all have different metadata formats and APIs (or lack thereof).

peterix commented 2 years ago

I guess let's keep this open.

It's a +1 for pursuing that general solution.

peterix commented 2 years ago

And yeah, this is parked for the foreseeable future.

okunamayanad-zz commented 2 years ago

I think that MultiMC should have mod searching feature especially for the libaries. Maybe even like if a mod needs a libary to run installing it without having to go to curseforge or modrinth then finding the mod downloading the correct version putting into the mods folder thats a lot of work which is boring it should be all automatic like curseforge client. Also downloading other mods too through the launcher will be a pretty big improvement aswell

mk-pmb commented 1 year ago

In my MultiMC, the button is labeled "Install Fabric", so I expect it to do all the steps of the official Fabric install guide. Can we at least add a clarification in the version selection dialog like "Note: This will only install the Fabric loader! The official Fabric install guide has additional steps after that, including one for installing the Fabric API mod. For why MultiMC currently doesn't do them, see (Link to this thread)"

phit commented 1 year ago

the official guide you linked in the other issues even says you MAY do so

FeedTheChunk commented 1 year ago

There used to be some mods that wouldn't load if the Fabric API was installed. Unfortunately I don't remember which mods but I do remember running into an issue in the past getting some mods to work with the Fabric API installed.

mk-pmb commented 1 year ago

@phit indeeed, and it continues with why I might want to:

You now may install the Fabric API, since many mods depend on it.

We could reflect that wording more accurately by e.g.

has additional steps after that, including one for ++optionally++ installing the Fabric API mod ++in case some of your mods may need it. (According to the guide, many do.)++

Also the first mention of the official guide should be a link to https://fabricmc.net/wiki/player:tutorials:install_multimc:windows .