EMI

EMI

1M Downloads

Usage of Deprecated fabric-models-v0

sylv256 opened this issue ยท 8 comments

commented

Description

EMI uses fabric-models-v0 which is deprecated.

Notice

The below information is due to user error. This issue is open to track the usage of the deprecated fabric-models-v0 FAPI module.

Description

Crashes upon startup in a development environment. I believe this is because it uses the deprecated fabric-models-v0 module which was recently removed in a heavily breaking change.

Logs

https://mclo.gs/JJuMyF0

Information

Loader OS Dev Environment Loader Version FAPI Version
Quilt Linux 6.4.11-arch2-1 Yes 0.19.5 0.87.0
commented

Can this be reproduced in latest Fabric?

commented

I've tested this in prod, it works fine with latest QFAPI and FAPI, why is this breaking in dev? This does not follow a normal deprecation cycle as I expect of FAPI, has there been a mistake or is this actually intentional?

commented

After a discussion with the Fabric API team, it seems like as of Fabric API 0.87.0, deprecated dependency exclusion is opt-out rather than opt-in, and Fabric mods depending on EMI should not be running into this issue. If you can reproduce this in a cleaner, full-fabric environment there may be more to look into, but I believe this is an issue with QSL. I'll leave this up to update to the new model API, but it's of low priority.

commented

Ah, user error here. My bad.
I didn't include the bundle!

commented

I've tested this in prod, it works fine with latest QFAPI and FAPI, why is this breaking in dev? This does not follow a normal deprecation cycle as I expect of FAPI, has there been a mistake or is this actually intentional?

fabric-models-v0 does not appear in my development environment. Notably, I'm using these hacks to make FAPI and Floader stop fucking up my dev:

// must-have libraries
modCompileOnly(libs.wthit.api) {
	exclude("net.fabricmc.fabric-api")
	exclude("net.fabricmc")
}
modCompileOnly(libs.emi.api) {
	exclude("net.fabricmc.fabric-api")
	exclude("net.fabricmc")
}
	
// runtime mods
modLocalRuntime(libs.emi.api) {
	exclude("net.fabricmc.fabric-api")
	exclude("net.fabricmc")
}

Though, it wouldn't make sense for Gradle to ignore an excluded transitive dependency if it's explicitly included, let alone a reimplementation in a separate package.
I'm also using this in my libs.versions.toml:

[bundles]
quilted_fabric_api = ["quilted_fabric_api", "quilted_fabric_api_deprecated"]

It should therefore be using the deprecated FAPI modules.

commented

I migrated in 1.20 onward and forgot to close, I'll continue using the deprecated version in older versions.

commented

It seems that this is still an issue in pure Quilt dev environments, as Quilt Loom has not adapted the change to opt-in to the deprecated modules by default, and Quilted Fabric API has not yet updated past 1.20.1.

Would it be feasible to just bump the Fabric API version to 0.90.0 for the 1.20 branch, and replace the deprecated module as the more recent branches have?

commented

Quilt users can include the deprecation bundle or the toolchain itself could pull in the fix