-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add dependency override for player/pack maker to bypass limits set in mod's mods.toml file #52
Comments
That is fine with me as long as it's a conscious choice. |
As a user myself I get the issue, but you're in essence saying with downloading anybodys mod you take ownership of their intellectual property, even if you only adjust in your opinion minor stuff. And how do you prevent redistribution of such packs? Also imo this can be misused from both ends. If a moddev doesn't want to support version xyz, they are still in the right however, even if it is crap for users/pack creators. What you say about forking is exactly what some moddevs complain about: Wanting a quick fix without any interest in putting in the effort to understand/support their changes. Maybe I imagine this bigger than it is, but as a user I'd rather not disgruntle devs of big mods in favor of fixing some small stuff that is dead anyway. |
So what do you think about datapacks and resourcepacks that can modify the mods even now? You are making changes against what the modder intended for their IP. Should we swing the other way and disable all resourcepacks and datapacks because modders should have complete control over their IP and tended behavior/looks? IMO, no. Mojang pushes for configurability and modloaders pushes for compatibility. A dependency override option is both a configurability option and to be used for obtaining maximum compatibilities. IP really doesn't come into play here as only when you modify the actual jar, then IP comes into play which means your previous forking option is even worse if you care about IP due to jar modification. A dependency override requires no jar modification. The logic would simply only exist in the modloader itself. |
I have a real life example where this was useful (on fabric): that said any dependency override should be clearly logged |
With enough work, I suspect it's possible to achieve the functionality of a dependency override even without it (e.g. by attempting to modify the contents of other mods on disk at runtime), so I don't really know if avoiding it in FML is going to change what modders do. I agree that using a dependency override should trigger a log message; this is also useful for players/modders providing support so they don't have to deal with extraneous crashes caused by players misusing the feature. |
Note: the log message when a dependency override is on should be pretty detectable and findable for pack/modder support to be able to see |
Personal opinion: I would rather not see this in NeoForge or FML. Consider the following situation: |
With the upcoming
incompatible
andconflicts
clauses being added to mods.toml, it reminded me of how Forge ecosystem has kinda a problem with the mods.toml file limits. Specifically around what user/pack makers can control.I am in the camp that the user/pack maker should have final say on what MC version and what mods a mod can run with. So there should be a way to have users/pack makers be able to override
version ranges
,incompatible
, andconflicts
for any given mod in their pack. Fabric has dependency overrides for a long while and I have seen users/pack makers make use of it to keep their packs running and updated properly. There has been no influx of reports to modders when their mods are forced to load so any concerns about issue report influx is not really a thing.https://fabricmc.net/wiki/tutorial:dependency_overrides
Consider this, a modder does not maintain their mods forever and may not exist in modding scene forever. Uers and pack makers will continue to make packs and play on any Minecraft version. With the current system, if a mod does not load in a pack due to a mods.toml restriction, users/pack makers are stuck and cannot do anything forever.
Example 1:
Mod A and Mod B together will crash Mod A. Mod A as a result sets Mod B as
incompatible
to stop loading with it. Mod A's dev eventually leaves the modding scene. Mob B releases an update that fixes the crash. However, users and pack makers still cannot use the mods together because of theincompatible
clause being unable to be overridden. This can happen with the version range too as mods can set "" as the range to not run with any version of another mod.Solution 1: Fork the mod, change the mods.toml file, reupload it to CurseForge/Modrinth, and then add it to modpack to distribute. Problem of that? Ridiculously excessive, taking points and downloads away from original dev, requires mod to be open source and buildable, pack makers to know how to build project, and for CurseForge/Modrinth to allow a reuploaded clone to exist with only a mods.toml change. Awful in every sense of the word.
Solution 2: Allow pack makers to specify a dependency override for the mod in their modpack. Clean, simple, and works.
Example 2:
Mod A's dev is a jerk and decides to mark Mod B as
incompatible
orversion range
lock out Mod B in latest Minecraft version. Pack makers now have to either remove Mob B to update Mod A to fix crashes or whatever or remove Mod A. this is a blatant misuse of the mods.toml dependencies and users/pack makers have no way of bypassing it cleanly without yeeting mods or forking and reuploading. Dependency Overrides allow users/pack makers to say "no" and bypass the mods.toml misuse to keep the pack updated properly and running.The text was updated successfully, but these errors were encountered: