Fabric API

Fabric API

106M Downloads

[Suggesion] Hiding Fabric API modules in `crash-report-info`

altrisi opened this issue ยท 3 comments

commented

Let's be honest, there are 43 modules in Fabric API already (with that number probably increasing in the future), and while I support the modularization, when dealing with crash reports you don't really care about what version of each of the 43 modules was present in the crash, you usually look at the other mods or, in some weird cases, the version of the Fabric API "container" mod as a whole, since you usually don't really need the specific versions of modules (since most players don't download specific modules), and if you do you can just look at the versions present in that container's version.

Having so many mods prefixed fabric- visible in there can also make you skip other mods prefixed the same way, incorrectly thinking they are part of the API and therefore not considering them when checking what may have been the cause of the crash.

Therefore, I'd like to suggest making the fabric-crash-report-info module skip mods that are present in the Fabric API container.

How? I guess ideally this would be information gotten from Gradle to know for sure whether a module was included in the present jar, but since I don't know Gradle or if that is possible with their APIs, another way I've considered is checking for the mods that have both the fabric-api:module-lifecycle custom value and their name prefixed with fabric-.

Another nice way would be extending Loader's API in order to allow checking whether the mod was loaded as a JiJ and in order to get which ModContainer provided it, then checking if was JiJ'ed by the Fabric API "container" mod. This would also make sure that the loaded version is provided by the present API container and not a newer version JiJ'ed by another mod or manually put in the mods folder. It would also allow other mods to check that metadata for any other uses.

Note that the full list of mods, including all API modules, would still be present at the top of the log file in case those specific versions are needed.

Example: Find all non-API modules in the following crash report (extracted from a real crash report)
-- System Details --
	Fabric Mods: 
		advancements-enlarger: Advancements Enlarger 0.2.3
		amecs: Amecs 1.3.3+mc.1.16.3
		amecsapi: Amecs API 1.1.3+mc1.16.5
		angerable-patch: Angerable Patch 1.1.0-1.16.4
		appleskin: AppleSkin 1.0.11
		architectury: Architectury 1.8.131
		artifice: Artifice 0.14.6+1.16.5
		autoconfig1u: Auto Config v1 Updated 3.3.1
		beaconsforall: Beacons For All 1.4.1-1.16.5
		betterdroppeditems: Better Dropped Items 1.2.4-1.16.2
		bettergraves: Better Graves 0.4.1
		bettersleeping: Better Sleeping 0.4.0
		betterthanmending: BetterThanMending 1.3.0
		blue_endless_jankson: jankson 1.2.0
		bobby: Bobby 0.2.0
		cameraoverhaul: Camera Overhaul 1.2.2-fabric-universal
		can-i-mine-this-block: cAn i MiNe thIS bLOCk? 1.0.2
		carpet: Carpet Mod in Fabric 1.4.28
		carpet-extra: Carpet Extra 1.4.27
		cloth-basic-math: Cloth Basic Math 0.5.1
		cloth-client-events-v0: Cloth Client Events v0 1.5.47
		cloth-config2: Cloth Config v4 4.11.14
		colormatic: Colormatic 2.2.8+mc.1.16.3
		com_github_shevek_parallelgzip: parallelgzip master-SNAPSHOT
		com_moandjiezana_toml_toml4j: toml4j 0.7.2
		com_squareup_moshi_moshi: moshi 1.9.2
		com_squareup_okio_okio: okio 1.16.0
		cotton-config: Cotton Config 1.0.0-rc.7
		cotton-logging: Cotton Logging 1.0.0-rc.4
		craftpresence: CraftPresence 1.7.6
		dynamicfps: Dynamic FPS 2.0.1
		dynamicsoundfilters: Dynamic Sound Filters 1.2.0+1.16.5
		elytra_swap: Elytra Swap 2.2.0-1.16.2
		enhancedblockentities: Enhanced Block Entities 0.1
		entityculling: EntityCulling-Fabric 1.0.2
		fabric: Fabric API 0.32.0+1.16
		fabric-api-base: Fabric API Base 0.2.1+9354966b7d
		fabric-api-lookup-api-v1: Fabric API Lookup API (v1) 1.0.0+dc716ea17d
		fabric-biome-api-v1: Fabric Biome API (v1) 3.1.1+ca58154a7d
		fabric-blockrenderlayer-v1: Fabric BlockRenderLayer Registration (v1) 1.1.5+ca58154a7d
		fabric-command-api-v1: Fabric Command API (v1) 1.1.0+f9b3753b7d
		fabric-commands-v0: Fabric Commands (v0) 0.2.2+ca58154a7d
		fabric-containers-v0: Fabric Containers (v0) 0.1.11+9354966b7d
		fabric-content-registries-v0: Fabric Content Registries (v0) 0.2.1+ca58154a7d
		fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.1.3+ca58154a7d
		fabric-diagonal-panes: Fabric Diagonal Panes 0.4.0
		fabric-dimensions-v1: fabric-dimensions-v1 2.0.6+9354966b7d
		fabric-entity-events-v1: Fabric Entity Events (v1) 1.0.3+ca58154a7d
		fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.4.2+ca58154a7d
		fabric-events-lifecycle-v0: Fabric Events Lifecycle (v0) 0.2.1+ca58154a7d
		fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.6+ca58154a7d
		fabric-item-api-v1: Fabric Item API (v1) 1.2.1+ca58154a7d
		fabric-item-groups-v0: Fabric Item Groups (v0) 0.2.3+ca58154a7d
		fabric-key-binding-api-v1: Fabric Key Binding API (v1) 1.0.4+9354966b7d
		fabric-keybindings-v0: Fabric Key Bindings (v0) 0.2.1+ca58154a7d
		fabric-language-kotlin: Fabric Language Kotlin 1.4.21+build.1
		fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 1.2.1+ca58154a7d
		fabric-loot-tables-v1: Fabric Loot Tables (v1) 1.0.2+ca58154a7d
		fabric-mining-levels-v0: Fabric Mining Levels (v0) 0.1.3+ca58154a7d
		fabric-models-v0: Fabric Models (v0) 0.2.1+ca58154a7d
		fabric-mumblelink-mod: MumbleLink 0.7.5
		fabric-networking-api-v1: Fabric Networking API (v1) 1.0.1+ca58154a7d
		fabric-networking-blockentity-v0: Fabric Networking Block Entity (v0) 0.2.8+ca58154a7d
		fabric-networking-v0: Fabric Networking (v0) 0.3.2+ca58154a7d
		fabric-object-builder-api-v1: Fabric Object Builder API (v1) 1.9.4+9354966b7d
		fabric-object-builders-v0: Fabric Object Builders (v0) 0.7.2+ca58154a7d
		fabric-particles-v1: Fabric Particles (v1) 0.2.4+ca58154a7d
		fabric-registry-sync-v0: Fabric Registry Sync (v0) 0.7.4+ca58154a7d
		fabric-renderer-api-v1: Fabric Renderer API (v1) 0.4.1+ca58154a7d
		fabric-renderer-indigo: Fabric Renderer - Indigo 0.4.4+ca58154a7d
		fabric-renderer-registries-v1: Fabric Renderer Registries (v1) 2.2.1+ca58154a7d
		fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.1.5+ca58154a7d
		fabric-rendering-fluids-v1: Fabric Rendering Fluids (v1) 0.1.13+ca58154a7d
		fabric-rendering-v0: Fabric Rendering (v0) 1.1.2+ca58154a7d
		fabric-rendering-v1: Fabric Rendering (v1) 1.5.1+ca58154a7d
		fabric-resource-loader-v0: Fabric Resource Loader (v0) 0.4.2+ca58154a7d
		fabric-screen-api-v1: Fabric Screen API (v1) 1.0.0+c045166c7d
		fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.1.5+9354966b7d
		fabric-start-the-music: Start the Music! 0.2.1
		fabric-structure-api-v1: Fabric Structure API (v1) 1.1.4+ca58154a7d
		fabric-tag-extensions-v0: Fabric Tag Extensions (v0) 1.1.1+ca58154a7d
		fabric-textures-v0: Fabric Textures (v0) 1.0.6+ca58154a7d
		fabric-tool-attribute-api-v1: Fabric Tool Attribute API (v1) 1.2.6+ca58154a7d
		fabric-tree-chopper: Fabric Tree Chopper 0.6.1
		fabricloader: Fabric Loader 0.11.2
		fairenchanting: FairEnchanting 1.2.0
		fiber: fiber 0.23.0-2
		fiber2cloth: Fiber To Cloth 3.1.0
		harvest: Harvest 1.2.12
		hydrogen: Hydrogen 0.2-SNAPSHOT
		indium: Indium 1.0.0
		inventorysorter: Inventory Sorter 1.7.7-1.16
		iris: Iris 0.2.0-sodium_compatibility
		itemmodelfix: Item Model Fix 1.0.0
		jankson: Jankson 3.0.1+j1.2.0
		java: OpenJDK 64-Bit Server VM 16
		kirin: Kirin UI 1.7-1.16.2
		krypton: Krypton 0.1.2
		kyrptconfig: Kytpt Config 1.1.6-1.16
		lambdabettergrass: LambdaBetterGrass 1.0.3+1.16
		lambdynlights: LambDynamicLights 1.3.4+1.16
		lazydfu: LazyDFU 0.1.2
		lightoverlay: Light Overlay 5.8.0
		lithium: Lithium 0.6.4-SNAPSHOT
		malilib: MaLiLib 0.10.0-dev.21+arne.2
		minecraft: Minecraft 1.16.5
		mm: Manningham Mills 2.1
		modmenu: Mod Menu 1.16.8
		modupdater: ModUpdater 1.1.11+1.16.2-rc2
		mostructures: Mo' Structures 1.1.0+mc.1.16.5
		mousewheelie: Mouse Wheelie 1.6.4+mc1.16.4
		net_gegy1000_just-now: just-now 0.1.0-SNAPSHOT
		notenoughanimations: NotEnoughAnimations 1.0.3
		notenoughcrashes: Not Enough Crashes 3.1.8
		okzoomer: Ok Zoomer 4.0.1+1.16.2
		org_apache_commons_commons-compress: commons-compress 1.19
		org_aperlambda_lambdajcommon: lambdajcommon 1.8.1
		org_codehaus_groovy_groovy: groovy 3.0.3
		org_codehaus_groovy_groovy-jsr223: groovy-jsr223 3.0.3
		org_jetbrains_annotations: annotations 20.0.0
		org_jetbrains_kotlin_kotlin-reflect: kotlin-reflect 1.4.21
		org_jetbrains_kotlin_kotlin-stdlib: kotlin-stdlib 1.4.21
		org_jetbrains_kotlin_kotlin-stdlib-jdk7: kotlin-stdlib-jdk7 1.4.21
		org_jetbrains_kotlin_kotlin-stdlib-jdk8: kotlin-stdlib-jdk8 1.4.21
		org_jetbrains_kotlinx_kotlinx-coroutines-core: kotlinx-coroutines-core 1.3.7
		org_jetbrains_kotlinx_kotlinx-coroutines-core-jvm: kotlinx-coroutines-core-jvm 1.4.2
		org_jetbrains_kotlinx_kotlinx-coroutines-jdk8: kotlinx-coroutines-jdk8 1.4.2
		org_tukaani_xz: xz 1.8
		presencefootsteps: Presence Footsteps r29+1.16.4
		repurposed_structures: Repurposed Structures 1.16.5-1.8.6
		roughlyenoughitems: Roughly Enough Items 5.10.184
		roughlyenoughitems-api: REI (API) 5.10.184
		roughlyenoughitems-default-plugin: REI (Default Plugin) 5.10.184
		roughlyenoughitems-runtime: REI (Runtime) 5.10.184
		roughlyenoughresources: Roughly Enough Resources 2.1.3
		screenshotclipboard: Screenshot to Clipboard 1.0.6
		seamless_loading_screen: Seamless Loading Screen 1.3.1
		slight-gui-modifications: 'Slight' GUI Modifications 1.7.1
		smoothscrollingeverywhere: Smooth Scrolling Everywhere 3.0.3-unstable
		sneak-through-berries: Sneak Through Berries 1.1.0+1.16.4-fabric
		sodium: Sodium IRIS-SNAPSHOT
		spark: spark 1.4.3
		spruceui: SpruceUI 2.0.4+1.16
		starlight: Starlight 0.0.3
		textile_backup: Textile Backup 2.1.0-prev-1.16.4
		the_loved_ones: The Loved Ones 1.1.0+1.16.4
		tic_tacs: Tic-TACS 0.1.3
		tweakeroo: Tweakeroo 0.10.0-dev.20210303.123654
		tweed: Tweed API 3.0.0-beta.22
		voyager: Voyager 1.0.0
		waila: Hwyla 1.9.22
		worldedit: WorldEdit 7.2.0-SNAPSHOT+5279-a8bba3b
		worldeditcui: worldeditcui 1.16.1
Think you've got them all? Let's check!

There were 5 non-API mods prefixed with fabric-! (including language-kotlin).

  • fabric-diagonal-panes: Fabric Diagonal Panes 0.4.0
  • fabric-language-kotlin: Fabric Language Kotlin 1.4.21+build.1
  • fabric-mumblelink-mod: MumbleLink 0.7.5
  • fabric-start-the-music: Start the Music! 0.2.1
  • fabric-tree-chopper: Fabric Tree Chopper 0.6.1

Fabric API modules have been removed in the report below. Isn't it much cleaner?

-- System Details --
	Fabric Mods: 
		advancements-enlarger: Advancements Enlarger 0.2.3
		amecs: Amecs 1.3.3+mc.1.16.3
		amecsapi: Amecs API 1.1.3+mc1.16.5
		angerable-patch: Angerable Patch 1.1.0-1.16.4
		appleskin: AppleSkin 1.0.11
		architectury: Architectury 1.8.131
		artifice: Artifice 0.14.6+1.16.5
		autoconfig1u: Auto Config v1 Updated 3.3.1
		beaconsforall: Beacons For All 1.4.1-1.16.5
		betterdroppeditems: Better Dropped Items 1.2.4-1.16.2
		bettergraves: Better Graves 0.4.1
		bettersleeping: Better Sleeping 0.4.0
		betterthanmending: BetterThanMending 1.3.0
		blue_endless_jankson: jankson 1.2.0
		bobby: Bobby 0.2.0
		cameraoverhaul: Camera Overhaul 1.2.2-fabric-universal
		can-i-mine-this-block: cAn i MiNe thIS bLOCk? 1.0.2
		carpet: Carpet Mod in Fabric 1.4.28
		carpet-extra: Carpet Extra 1.4.27
		cloth-basic-math: Cloth Basic Math 0.5.1
		cloth-client-events-v0: Cloth Client Events v0 1.5.47
		cloth-config2: Cloth Config v4 4.11.14
		colormatic: Colormatic 2.2.8+mc.1.16.3
		com_github_shevek_parallelgzip: parallelgzip master-SNAPSHOT
		com_moandjiezana_toml_toml4j: toml4j 0.7.2
		com_squareup_moshi_moshi: moshi 1.9.2
		com_squareup_okio_okio: okio 1.16.0
		cotton-config: Cotton Config 1.0.0-rc.7
		cotton-logging: Cotton Logging 1.0.0-rc.4
		craftpresence: CraftPresence 1.7.6
		dynamicfps: Dynamic FPS 2.0.1
		dynamicsoundfilters: Dynamic Sound Filters 1.2.0+1.16.5
		elytra_swap: Elytra Swap 2.2.0-1.16.2
		enhancedblockentities: Enhanced Block Entities 0.1
		entityculling: EntityCulling-Fabric 1.0.2
		fabric: Fabric API 0.32.0+1.16
		fabric-diagonal-panes: Fabric Diagonal Panes 0.4.0
		fabric-language-kotlin: Fabric Language Kotlin 1.4.21+build.1
		fabric-mumblelink-mod: MumbleLink 0.7.5
		fabric-start-the-music: Start the Music! 0.2.1
		fabric-tree-chopper: Fabric Tree Chopper 0.6.1
		fabricloader: Fabric Loader 0.11.2
		fairenchanting: FairEnchanting 1.2.0
		fiber: fiber 0.23.0-2
		fiber2cloth: Fiber To Cloth 3.1.0
		harvest: Harvest 1.2.12
		hydrogen: Hydrogen 0.2-SNAPSHOT
		indium: Indium 1.0.0
		inventorysorter: Inventory Sorter 1.7.7-1.16
		iris: Iris 0.2.0-sodium_compatibility
		itemmodelfix: Item Model Fix 1.0.0
		jankson: Jankson 3.0.1+j1.2.0
		java: OpenJDK 64-Bit Server VM 16
		kirin: Kirin UI 1.7-1.16.2
		krypton: Krypton 0.1.2
		kyrptconfig: Kytpt Config 1.1.6-1.16
		lambdabettergrass: LambdaBetterGrass 1.0.3+1.16
		lambdynlights: LambDynamicLights 1.3.4+1.16
		lazydfu: LazyDFU 0.1.2
		lightoverlay: Light Overlay 5.8.0
		lithium: Lithium 0.6.4-SNAPSHOT
		malilib: MaLiLib 0.10.0-dev.21+arne.2
		minecraft: Minecraft 1.16.5
		mm: Manningham Mills 2.1
		modmenu: Mod Menu 1.16.8
		modupdater: ModUpdater 1.1.11+1.16.2-rc2
		mostructures: Mo' Structures 1.1.0+mc.1.16.5
		mousewheelie: Mouse Wheelie 1.6.4+mc1.16.4
		net_gegy1000_just-now: just-now 0.1.0-SNAPSHOT
		notenoughanimations: NotEnoughAnimations 1.0.3
		notenoughcrashes: Not Enough Crashes 3.1.8
		okzoomer: Ok Zoomer 4.0.1+1.16.2
		org_apache_commons_commons-compress: commons-compress 1.19
		org_aperlambda_lambdajcommon: lambdajcommon 1.8.1
		org_codehaus_groovy_groovy: groovy 3.0.3
		org_codehaus_groovy_groovy-jsr223: groovy-jsr223 3.0.3
		org_jetbrains_annotations: annotations 20.0.0
		org_jetbrains_kotlin_kotlin-reflect: kotlin-reflect 1.4.21
		org_jetbrains_kotlin_kotlin-stdlib: kotlin-stdlib 1.4.21
		org_jetbrains_kotlin_kotlin-stdlib-jdk7: kotlin-stdlib-jdk7 1.4.21
		org_jetbrains_kotlin_kotlin-stdlib-jdk8: kotlin-stdlib-jdk8 1.4.21
		org_jetbrains_kotlinx_kotlinx-coroutines-core: kotlinx-coroutines-core 1.3.7
		org_jetbrains_kotlinx_kotlinx-coroutines-core-jvm: kotlinx-coroutines-core-jvm 1.4.2
		org_jetbrains_kotlinx_kotlinx-coroutines-jdk8: kotlinx-coroutines-jdk8 1.4.2
		org_tukaani_xz: xz 1.8
		presencefootsteps: Presence Footsteps r29+1.16.4
		repurposed_structures: Repurposed Structures 1.16.5-1.8.6
		roughlyenoughitems: Roughly Enough Items 5.10.184
		roughlyenoughitems-api: REI (API) 5.10.184
		roughlyenoughitems-default-plugin: REI (Default Plugin) 5.10.184
		roughlyenoughitems-runtime: REI (Runtime) 5.10.184
		roughlyenoughresources: Roughly Enough Resources 2.1.3
		screenshotclipboard: Screenshot to Clipboard 1.0.6
		seamless_loading_screen: Seamless Loading Screen 1.3.1
		slight-gui-modifications: 'Slight' GUI Modifications 1.7.1
		smoothscrollingeverywhere: Smooth Scrolling Everywhere 3.0.3-unstable
		sneak-through-berries: Sneak Through Berries 1.1.0+1.16.4-fabric
		sodium: Sodium IRIS-SNAPSHOT
		spark: spark 1.4.3
		spruceui: SpruceUI 2.0.4+1.16
		starlight: Starlight 0.0.3
		textile_backup: Textile Backup 2.1.0-prev-1.16.4
		the_loved_ones: The Loved Ones 1.1.0+1.16.4
		tic_tacs: Tic-TACS 0.1.3
		tweakeroo: Tweakeroo 0.10.0-dev.20210303.123654
		tweed: Tweed API 3.0.0-beta.22
		voyager: Voyager 1.0.0
		waila: Hwyla 1.9.22
		worldedit: WorldEdit 7.2.0-SNAPSHOT+5279-a8bba3b
		worldeditcui: worldeditcui 1.16.1
commented

Fixed by #2157.

commented

Or don't hide them, but group together into a separate line.

commented

Would be neat, ideally modules from other mods would be able to hide themselves too, but hiding fabric modules is probably an easier solution short-term, and we can think of exposing it in the API later.