tr7zw / 3d-Skin-Layers

Renders the player skin layer in 3d
Other
178 stars 36 forks source link

Weird dependencies on Modrinth (for Fabric flavour) #152

Closed YoshiRulz closed 4 months ago

YoshiRulz commented 4 months ago

Recent versions include an "Unknown Project" with no icon as an anti-dep, which I assume is meant to be tlskincape. That's probably harmless.

But following on from #143, am I right in thinking you've indiscriminately added the Fabric API to all your mods? I tried overriding the dep with fabric_loader_dependencies.json, for 1.6.2-1.20.4 and 1.6.3-1.20.5, and both worked correctly without it.

tr7zw commented 4 months ago

Not sure what your question or issue is. You want to run fabric mods without fabric api? Why? But yes, all mods have the fabric api as dependency.

YoshiRulz commented 4 months ago

Just a general feeling that software should declare no more or fewer dependencies than they actually use. fabric-api is weird since it's like a macro for the 30-odd APIs which comprise it. A quick search only brings up one net.fabricmc.* import in this project—ClientModInitializer from fabricloader—but if I'm wrong, I request that you use the granular API(s) in your fabric.mod.json.

tr7zw commented 4 months ago

But why? I did that before and people complained "you need to define the fabric API, I didn't know it is needed" when I reasoned that no one runs fabric without the API, and launchers like CF Launcher install the API automatically anyway. So I now added fabric API to the template, so all my mods get that dependency slapped on. I don't want to have to keep re-evaluating all my mods on if they need it or not(EntityCulling, Not Enough Animations, Firstperson Mod, Waveycapes all use it for instance, and this mod wouldn't compile without it, as it is referenced for example here https://github.com/tr7zw/ProcessedModTemplate/blob/master/src/main/java/dev/tr7zw/util/ModLoaderUtil.java#L70 ).

fabric-api is weird since it's like a macro for the 30-odd APIs which comprise it.

You can't install "just" the fabric networking API(+Modrinth/Curseforge don't know about it, so it would show as an unknown dependency), so using anything but fabric-api makes no sense.

YoshiRulz commented 4 months ago

Hey, you're the maintainer, if it's going to be too much maintenance burden then that's totally understandable.

You can't install "just" the fabric networking API(+Modrinth/Curseforge don't know about it, so it would show as an unknown dependency), so using anything but fabric-api makes no sense.

Some examples of mods which have granular dependencies in fabric.mod.json if you're interested: FastQuit, Indium, and some like Mod Menu go further and embed the parts of the Fabric API that they need.

tr7zw commented 4 months ago

Hey, you're the maintainer, if it's going to be too much maintenance burden then that's totally understandable.

It would just serve 0 benefits to no have it there, with the chance to forget to re-add it later and then just getting complaints again from people hand-installing mods and forgetting the fabricapi. So don't think it is worth it.

Some examples of mods which have granular dependencies in fabric.mod.json

I mean, yea you can do that there, but IMO that's kind a waste of time to do? You still need the fabric API, the modrinth/curseforge page still need to have the fabric API as dependency, and if its missing the error message by the fabric loader is misleading that you need to install "fabric-resource-loader-v0" and not the "fabric-api".

some like Mod Menu go further and embed the parts of the Fabric API that they need.

Again, lots of stuff to maintain over time and versions(remember, I have 5+ mods over ~10+ mc versions), just so a probably outdated part of the fabric API with a few hundred kb is included. I just don't see this being useful for anyone. And after each bigger change remember to re-test all 10 mc versions that you didn't forget to include some important parts.

Imo the fabric API should be treated like Forge/NeoForge. You need it, you should probably keep it updated and there is no point in overcomplicating that. KISS principle and all.