Coder Social home page Coder Social logo

the-fireplace-minecraft-mods / annotated-di Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 3.0 820 KB

Dependency Injection for Minecraft mods

License: Apache License 2.0

Shell 0.11% Java 99.89%
fabricmc-mod java minecraft minecraft-forge-mod minecraft-mod

annotated-di's People

Contributors

meister1593 avatar the-fireplace avatar waterpicker avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

annotated-di's Issues

1.17.1 Crash with Fabric Loader 0.12

Describe the bug
Crashing to desktop.

To Reproduce
Steps to reproduce the behavior:

  1. Just try opening minecraft

Logs/Screenshots/Videos
Crash Log
FML

Versions

  • Minecraft: 1.17.1
  • Annotated DI: 2.0.3
  • Fabric API: 0.12.1

Incompatible with Quilt Loader due to use of net.fabricmc.loader.impl.util.UrlConversionException

Describe the bug
The UrlUtil class provided by this mod depends on net.fabricmc.loader.impl.util.UrlConversionException, which doesn't exist in Quilt, and according to one of the Quilt devs should be considered volatile in Fabric as well.

Unfortunately this doesn't only make this mod incompatible with Quilt, but a handful of other popular mods which have recently migrated to Quilt only and now won't run on Fabric.

Ordinarily I'd just put in a pull request to change this given it's just an exception type I'm just concerned it will cause issues with mods which depend on this and I'm not going to clone all 50 of the fireplace mods to determine how breaking of a change that would be.

To Reproduce
Steps to reproduce the behavior:

  1. Attempt to use this mod with Quilt loader

Logs/Screenshots/Videos
https://0x0.st/oaXp.txt

Versions (please complete the following information, do NOT say "latest"):

  • Minecraft: 1.18.2
  • Mod Version: Whatever Fireplace Lib 6.3.1+1.18.2 or Unforgiving Void 3.1.4+1.18.2 bundles, I'm not using this mod directly
  • Fabric API: Quilted Fabric API 1.0.0-beta.14+0.51.1-1.18.2

Easy Conflict Resolver

Make it possible to easily register a way to resolve which Implementation of an interface should be used if multiple are found for the current environment.

Log which mods add which injections

Is your feature request related to a problem? Please describe.
As the developer, I want more information in case a problem arises that is tricky to debug.

Describe the solution you'd like
Log the following:
Which mods provide injections
Which injections they provide
Any conflicts found when parsing the injection configs.

Power set method of scanning mods causes crash

Mod Version

4.0.0

What mod loader(s) are you seeing the problem on?

Forge, Fabric, Quilt

Mod Loader Version

No response

Problem Description

When many mods are loaded, we end up with too many candidate child mods and the power set function being used results in a crash.

I could solve this with a custom power set function, but the more performant way to solve it is most likely to filter the mods beforehand for ones with DI configs. Only problem is if mods use custom modules, there won't be a DI config present to prioritize, so I might just have to see if there's an optimized power set function for this kind of setup or make one.

Steps To Reproduce

No response

Crash Report or Error Logs

---- Minecraft Crash Report ----
// You should try our sister game, Minceraft!

Time: 7/8/22, 2:19 PM
Description: Initializing game

java.lang.RuntimeException: Could not execute entrypoint stage 'main' due to errors, provided by 'annotateddi'!
	at Not Enough Crashes deobfuscated stack trace.(1.18.2+build.3)
	at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.lambda$invoke0$0(EntrypointUtils.java:51)
	at net.fabricmc.loader.impl.util.ExceptionUtil.gatherExceptions(ExceptionUtil.java:33)
	at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.invoke0(EntrypointUtils.java:49)
	at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.invoke(EntrypointUtils.java:35)
	at net.fabricmc.loader.impl.game.minecraft.Hooks.startClient(Hooks.java:52)
	at fudge.notenoughcrashes.fabric.mixinhandlers.ModLoaders.fabricEntrypoints(ModLoaders.java:9)
	at net.minecraft.client.MinecraftClient.redirect$jol000$catchFabricInit(MinecraftClient:36453)
	at net.minecraft.client.MinecraftClient.<init>(MinecraftClient:452)
	at net.minecraft.client.main.Main.main(Main:197)
	at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:461)
	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
	at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
Caused by: com.google.inject.ProvisionException: Unable to provision, see the following errors:

1) [Guice/ErrorInjectingConstructor]: IllegalArgumentException: Too many elements to create power set: 31 > 30
  at InjectorNodeFinderImpl.<init>(InjectorNodeFinderImpl.java:31)
  at InjectorNodeFinderImpl.class(InjectorNodeFinderImpl.java:31)
  while locating InjectorNodeFinderImpl
  while locating InjectorNodeFinder

Learn more:
  https://github.com/google/guice/wiki/ERROR_INJECTING_CONSTRUCTOR

1 error

======================
Full classname legend:
======================
InjectorNodeFinder:       "dev.the_fireplace.annotateddi.impl.domain.loader.InjectorNodeFinder"
InjectorNodeFinderImpl:   "dev.the_fireplace.annotateddi.impl.loader.InjectorNodeFinderImpl"
========================
End of classname legend:
========================

	at com.google.inject.internal.InternalProvisionException.toProvisionException(InternalProvisionException.java:251)
	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1104)
	at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1139)
	at dev.the_fireplace.annotateddi.impl.injector.InjectorManager.buildModInjector(InjectorManager.java:31)
	at dev.the_fireplace.annotateddi.impl.injector.InjectorManager.getAutoInjector(InjectorManager.java:27)
	at dev.the_fireplace.lib.FireplaceLibConstants.getInjector(FireplaceLibConstants.java:38)
	at dev.the_fireplace.lib.entrypoints.Main.onInitialize(Main.java:11)
	at dev.the_fireplace.annotateddi.impl.entrypoint.Main.lambda$onInitialize$0(Main.java:15)
	at java.util.ArrayList.forEach(ArrayList.java:1511)
	at dev.the_fireplace.annotateddi.impl.entrypoint.Main.onInitialize(Main.java:15)
	at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.invoke0(EntrypointUtils.java:47)
	... 9 more
Caused by: java.lang.IllegalArgumentException: Too many elements to create power set: 31 > 30
	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:193)
	at com.google.common.collect.Sets$PowerSet.<init>(Sets.java:1567)
	at com.google.common.collect.Sets.powerSet(Sets.java:1516)
	at dev.the_fireplace.annotateddi.impl.loader.InjectorNodeFinderImpl.getCombinedBranchCandidateGroupings(InjectorNodeFinderImpl.java:172)
	at dev.the_fireplace.annotateddi.impl.loader.InjectorNodeFinderImpl.getNodesStartingCombinedBranches(InjectorNodeFinderImpl.java:125)
	at dev.the_fireplace.annotateddi.impl.loader.InjectorNodeFinderImpl.populateDependencyTree(InjectorNodeFinderImpl.java:117)
	at dev.the_fireplace.annotateddi.impl.loader.InjectorNodeFinderImpl.nodeStartsCombinedBranch(InjectorNodeFinderImpl.java:153)
	at dev.the_fireplace.annotateddi.impl.loader.InjectorNodeFinderImpl.getNodesStartingCombinedBranches(InjectorNodeFinderImpl.java:132)
	at dev.the_fireplace.annotateddi.impl.loader.InjectorNodeFinderImpl.populateDependencyTree(InjectorNodeFinderImpl.java:117)
	at dev.the_fireplace.annotateddi.impl.loader.InjectorNodeFinderImpl.buildTree(InjectorNodeFinderImpl.java:58)
	at dev.the_fireplace.annotateddi.impl.loader.InjectorNodeFinderImpl.<init>(InjectorNodeFinderImpl.java:42)
	at dev.the_fireplace.annotateddi.impl.loader.InjectorNodeFinderImpl$$FastClassByGuice$$861951.GUICE$TRAMPOLINE(<generated>)
	at dev.the_fireplace.annotateddi.impl.loader.InjectorNodeFinderImpl$$FastClassByGuice$$861951.apply(<generated>)
	at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:82)
	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114)
	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:91)
	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:300)
	at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
	at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:169)
	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
	at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:60)
	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1101)
	... 18 more


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Render thread
Stacktrace:
	at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.lambda$invoke0$0(EntrypointUtils.java:51)
	at net.fabricmc.loader.impl.util.ExceptionUtil.gatherExceptions(ExceptionUtil.java:33)
	at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.invoke0(EntrypointUtils.java:49)
	at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.invoke(EntrypointUtils.java:35)
	at net.fabricmc.loader.impl.game.minecraft.Hooks.startClient(Hooks.java:52)

-- Initialization --
Details:
Stacktrace:
	at fudge.notenoughcrashes.mixinhandlers.EntryPointCatcher.handleEntryPointError(EntryPointCatcher.java:28)
	at net.minecraft.class_310.redirect$jol000$catchFabricInit(class_310.java:36455)
	at net.minecraft.class_310.<init>(class_310.java:452)
	at net.minecraft.client.main.Main.main(Main.java:197)
	at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:461)
	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
	at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)

-- System Details --
Details:
	Minecraft Version: 1.18.2
	Minecraft Version ID: 1.18.2
	Operating System: Windows 10 (amd64) version 10.0
	Java Version: 17.0.1, Microsoft
	Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Microsoft
	Memory: 964421848 bytes (919 MiB) / 2210398208 bytes (2108 MiB) up to 7583301632 bytes (7232 MiB)
	CPUs: 24
	Processor Vendor: GenuineIntel
	Processor Name: 12th Gen Intel(R) Core(TM) i9-12900K
	Identifier: Intel64 Family 6 Model 151 Stepping 2
	Microarchitecture: unknown
	Frequency (GHz): 3.19
	Number of physical packages: 1
	Number of physical CPUs: 16
	Number of logical CPUs: 24
	Graphics card #0 name: NVIDIA GeForce RTX 2080
	Graphics card #0 vendor: NVIDIA (0x10de)
	Graphics card #0 VRAM (MB): 4095.00
	Graphics card #0 deviceId: 0x1e87
	Graphics card #0 versionInfo: DriverVersion=30.0.15.1295
	Memory slot #0 capacity (MB): 16384.00
	Memory slot #0 clockSpeed (GHz): 5.80
	Memory slot #0 type: Unknown
	Memory slot #1 capacity (MB): 16384.00
	Memory slot #1 clockSpeed (GHz): 5.80
	Memory slot #1 type: Unknown
	Virtual memory max (MB): 53980.27
	Virtual memory used (MB): 24308.28
	Swap memory total (MB): 21504.00
	Swap memory used (MB): 683.86
	JVM Flags: 4 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx7232m -Xms256m
	Fabric Mods: 
		additionaladditions: Additional Additions 4.0.5
		additionalbars: Additional Bars 3.3.1+1.18.2
		additionalstructures: Additional Structures 3.0.3
		adorn: Adorn 3.5.0+1.18.2
		advanced_reborn: Advanced Reborn 1.0.6
		advancementplaques: Advancement Plaques 1.4.5
		advdebug: Advancements Debug 2.3.0
		adventurez: AdventureZ 1.4.11
		ae2: Applied Energistics 2 11.1.4
			noindium: No Indium? 1.0.2+1.18.2
		ae2wtlib: AE2WTLib 11.1.3
		agape_space: Space Dimensions 0.5.15
		allay: Allay Mod 4.0.0
		alloy_forgery: Alloy Forgery 2.0.13+1.18
		ambientenvironment: Ambient Environment 7.0+19
		ambientsounds: Ambiend Sounds (Fabric) 5.0.16
		aofemotes: AOF Emotes 0.0.4
		appbot: Applied Botanics 1.2.1
		appleskin: AppleSkin 2.4.0+mc1.18.2
		arcanus: Arcanus 1.29
		architects_palette: Architect's Palette Fabric 2.2
		architectury: Architectury 4.5.76
		archon: Archon 0.3.1
			cardinal-components-base: Cardinal Components API (base) 4.1.4
			cardinal-components-entity: Cardinal Components API (entities) 4.1.4
		armorsoundtweak: Armor Sound Tweak 5.1.1
			com_electronwill_night-config_core: core 3.6.5
			com_electronwill_night-config_toml: toml 3.6.5
			fabric-api-base: Fabric API Base 0.4.4+d7c144a860
			fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 2.1.0+cc71601c60
			fabric-resource-loader-v0: Fabric Resource Loader (v0) 0.5.2+446e059560
		artifacts: Artifacts 7.0.3+fabric
			expandability: ExpandAbility 6.0.0
			step-height-entity-attribute: Step Height Entity Attribute 1.0.0
		artis: Artis-Recrafted 2.4.1+1.18.2
			advanced_runtime_resource_pack: Runtime Resource Pack 0.5.7
		attributefix: AttributeFix 14.0.2
		authme: Auth Me 3.1.0
		autoconfig1u: Auto Config v1 Updated 3.4.0
		autorun: AutoRun 0.4.0
		autotag: AutoTag 1.1.0
		auudio: Auudio 1.0.3
		badpackets: Bad Packets 0.1.2
		balm-fabric: Balm 3.1.0+0
		bcc: BetterCompatibilityChecker fabric-1.0.5
		bclib: BCLib 1.4.7
		beenfo: Beenfo 1.18.2-fabric0.47.10-1.3.3
			crowdin-translate: CrowdinTranslate 1.4+1.18.2
			gbfabrictools: GBfabrictools 1.3.4+1.18.2
		besmirchment: Besmirchment 1.18.2-11
			reach-entity-attributes: Reach Entity Attributes 2.1.1
			terraform-wood-api-v1: Terraform Wood API (v1) 3.0.0
		betteranimalsplus: Better Animals Plus 1.18.2-11.0.5
		betterdeserttemples: YUNG's Better Desert Temples 1.18.2-Fabric-1.2
		betterend: Better End 1.1.1
		betterf3: BetterF3 1.2.5
		betterfpsdist: Better FPS distance Mod 1.18-1.8
		bettermineshafts: YUNG's Better Mineshafts 1.18.2-Fabric-2.2
		betternether: Better Nether 6.1.2
		betterstrongholds: YUNG's Better Strongholds 1.18.2-Fabric-2.1.1
		betterthirdperson: Better Third Person 1.8.1
		bewitchment: Bewitchment 1.18-22
			fabric-permissions-api-v0: fabric-permissions-api 0.1-SNAPSHOT
		bhmenu: BHMenu-Fabric 1.17.1-1.18.2-1.3
		big_items_duh: Big items, duh! 1.1.2+mc1.18.2
			amecsapi: Amecs API 1.3.6+mc22w06a
			coat: Coat 1.0.0-beta.17+mc1.18.2
			fabric-key-binding-api-v1: Fabric Key Binding API (v1) 1.0.12+54e5b2ec60
			tweed4_annotated: tweed4_annotated 1.3.0
			tweed4_base: tweed4_base 1.5.0+mc1.18.2
			tweed4_data: tweed4_data 1.2.1+mc1.18.2
			tweed4_data_hjson: tweed4_data_hjson 1.1.0
			tweed4_tailor_coat: tweed4_tailor_coat 1.1.2+mc1.18.2
			tweed4_tailor_screen: tweed4_tailor_screen 1.1.1+mc1.18.2
		bitsandchisels: BitsAndChisels 2.6.13
			stacc: Stacc 1.2.3
		blockus: Blockus 2.4.7+1.18.2
		bno: Basic Nether Ores 1.18.2-7.2.0-Fabric
		bookshelf: Bookshelf 13.2.36
		bosses_of_mass_destruction: Bosses of Mass Destruction (Beta) 1.3.7-1.18.2
			maelstrom_library: Maelstrom Library 1.2.4-1.18.2
			multipart_entities: MultipartEntities 1.1.5-1.18.2
		botania: Botania 1.18.2-434-FABRIC
			fiber: fiber 0.23.0-2
		breakprogress: Break Progress 1.0.1
		bsvsb: Better Sodium Video Settings Button 2.0.5
		buildinggadgets: st'ructure tools 1.0.22
			mm: Manningham Mills 2.3
		byg: Oh The Biomes You'll Go 1.4
		cacao: Croptopia's Chocolaterie 1.2
		can-i-mine-this-block: cAn i MiNe thIS bLOCk? 1.2.0
		capybara: Capybara 1.0.6
		carpet: Carpet Mod 1.4.69
		carpet-extra: Carpet Extra 1.4.72
		carpet-tis-addition: Carpet TIS Addition 1.37.0
			conditional-mixin: conditional mixin 0.3.0
			org_yaml_snakeyaml: snakeyaml 1.30
		catwalksinc: Catwalks Inc. 1.3.0
		chalk: Chalk 2.0.1+1.18.2
		chat_heads: Chat Heads 0.6.0
		chesttracker: Chest Tracker 1.1.16
			whereisit: Where Is It 1.14.10
		chisel: Chisel Refabricated 1.4.5
		cleancut: CleanCut 1.18.2-5.0-fabric
		cleardespawn: Clear Despawn 1.1.7
		clickthrough: ClickThrough 1.18.2-fabric0.47.10-0.4
		clienttweaks: Client Tweaks 7.1.0
		climbladdersfast: ClimbLaddersFast 2.2.2-1.18
		cloth-api: Cloth API 3.2.64
			cloth-client-events-v0: Cloth Client Events v0 3.2.64
			cloth-common-events-v1: Cloth Common Events v1 3.2.64
			cloth-datagen-api-v1: Cloth Datagen v1 3.2.64
			cloth-scissors-api-v1: Cloth Scissors API v1 3.2.64
			cloth-utils-v1: Cloth Utils v1 3.2.64
		cloth-config: Cloth Config v6 6.2.62
			cloth-basic-math: cloth-basic-math 0.6.1
		clumps: Clumps 8.0.0+10
		colormeoutlines: Color Me Outlines 1.1.0
		computercraft: CC: Restitched 1.100.8
		conjuring: Conjuring 1.0.22+1.18
		consistency_plus: Consistency Plus 0.5.0+1.18.2
			stonecutter_recipe_tags: Stonecutter Recipe Tags 3.0.1+1.18.bc850d5.fabric
		continuity: Continuity 2.0.0+1.18.2
		coxinhautilities: Coxinha Utilities 1.3+1.18.2
			omega-config-gui: Omega Config GUI 1.2.3-1.18.1
				cloth-config-lite: cloth-config-lite 2.0.6
			team_reborn_energy: Energy 2.2.0
		craftingtweaks: Crafting Tweaks 14.0.3
		craftpresence: CraftPresence 1.8.8
		crawl: Crawl 0.10.6
		create: Create mc1.18.2_v0.4.1+637
			com_google_code_findbugs_jsr305: jsr305 3.0.2
			fake-player-api: Fake Player API 0.3.0
			flywheel: Flywheel 1.18-0.7.0.26
			forge_tags: Forge Tags 2.1
			milk: Milk Lib 0.3.2
			porting_lib: Porting Lib 1.1.317-beta+1.18.2-dev.7ad1f24
				serialization_hooks: Serialization Hooks 0.2.0+1.18.f5d4aa6
			registrate-fabric: Registrate for Fabric MC1.18.2-1.0.3
		createaddition: Create Crafts & Additions ${version}
		createplus: CreatePlus 1.0
		creativecore: CreativeCore (Fabric) 2.6.12
		creeperoverhaul: Creeper Overhaul 1.3.1
		creeperspores: Creeper Spores 1.8.0
		croparia: Croparia 3.8.3
		croptopia: Croptopia 2.0.5
			com_typesafe_config: config 1.4.1
			io_leangen_geantyref_geantyref: geantyref 1.3.11
			org_spongepowered_configurate-core: configurate-core 4.1.2
			org_spongepowered_configurate-hocon: configurate-hocon 4.1.2
		croptosis: Croptosis 1.5.0
		cull-less-leaves: Cull Less Leaves 1.0.1
		damagetilt: Damage Tilt 1.18-fabric-0.1.2
		dankstorage: Dank Storage 1.18.2-3.7
		dark-enchanting: Dark Enchanting 1.0.0+1.18.2
		darkutils: DarkUtilities 10.0.5
		dawn: Dawn API 3.3.1
		deathlog: DeathLog 0.2.9+1.18
		decorative_blocks: Decorative Blocks 2.1.0
		detailab: Detail Armor Bar 2.6.2+1.18-fabric
		dimdoors: DimensionalDoors 4.0.4
			cardinal-components-chunk: Cardinal Components API (chunks) 4.1.4
			cardinal-components-item: Cardinal Components API (items) 4.1.4
			cardinal-components-level: Cardinal Components API (world saves) 4.1.4
			cardinal-components-world: Cardinal Components API (worlds) 4.1.4
			com_flowpowered_flow-math: flow-math 1.0.3
			com_github_dimensionaldevelopment_poly2tri_java: poly2tri.java 0.1.1
			curse_maven_wthit-3707010: wthit-3707010 440979
			matrix: Matrix 1.0.0
			org_jgrapht_jgrapht-core: jgrapht-core 1.1.0
		disable_custom_worlds_advice: Disable Custom Worlds Advice 2.0
		disenchanter: Disenchanter 0.1.6+1.18
		dml-refabricated: Deep Mob Learning: Refabricated 1.18.2
			dml-refabricated-base: DML: Refabricated - Base 1.18.2
			dml-refabricated-events: DML: Refabricated - Vanilla Events 1.18.2
			dml-refabricated-modular-armor: DML: Refabricated - Glitch Armor 1.18.2
			dml-refabricated-rei: DML: Refabricated - REI Integration 1.18.2
			ktdatataglib: KtDataTagLib 1.6.5+1.18.2
		dmlsimulacrum: Deep Mob Learning: Simulacrum 0.5.4-beta
		doom: Doom Fabric 4.2.20
		doublejump: Double Jump Mod 1.0.1+mc1.18
		dragonloot: DragonLoot 1.1.0
		drippyloadingscreen: Drippy Loading Screen 1.6.4
		duckling: Duckling 1.0.5
		dummmmmmy: MmmMmmMmmMmm 1.18-1.5.0
		dynamicfps: Dynamic FPS 2.1.0
			com_moandjiezana_toml_toml4j: toml4j 0.7.2
		earthbounds: Earthbounds 1.18.2-1.1.3
		earthtojavamobs: Earth2Java 1.8.0+1.18.2
		eldritch_mobs: Eldritch Mobs 1.11.0
		ellemes_container_lib: Ellemes' Container Library 1.4.0-beta.2
		emotecraft: Emotecraft 2.1.3-SNAPSHOT-build.32
			bendy-lib: Bendy api 2.0.4
		enchdesc: EnchantmentDescriptions 10.0.4
		enhanced_attack_indicator: Enhanced Attack Indicator 1.0.3+1.18
		entityculling: EntityCulling-Fabric 1.5.1
		equipmentcompare: Equipment Compare 1.2.12
		exlineawnings: Exline's Awnings 1.0.3
		exlinefurniture: Exline's Furniture Mod 2.1.2
		expandeddelight: Expanded Delight 0.1.9
		expandedstorage: Expanded Storage 7.4.0-beta.4
		experiencebugfix: Experience Bug Fix 18
		explorerscompass: Explorer's Compass 1.18.2-2.1.0-fabric
		extended_drawers: Extended Drawers 1.3.1+mc.1.18.2
			com_github_llamalad7_mixinextras: MixinExtras 0.0.10
			graphlib: Graph Lib 0.2.4+1.18.2
			mconfig: Mconfig 1.2.0
				de_poiu_apron_apron: apron 2.1.1
		extra_classes_origins: Extra Classes - Origins 1.0.0
		extragenerators: Extra Generators 1.2.1-BETA+1.18
		extrakeybinds: ThatRobins Extra Origins Keybinds 0.2.0
		extraorigins: Extra Origins 1.18-11
		fabric: Fabric API 0.57.0+1.18.2
			fabric-api-lookup-api-v1: Fabric API Lookup API (v1) 1.6.2+2373a54560
			fabric-biome-api-v1: Fabric Biome API (v1) 8.0.6+651bcc5960
			fabric-blockrenderlayer-v1: Fabric BlockRenderLayer Registration (v1) 1.1.12+3ac43d9560
			fabric-command-api-v1: Fabric Command API (v1) 1.1.9+d7c144a860
			fabric-commands-v0: Fabric Commands (v0) 0.2.8+b4f4f6cd60
			fabric-containers-v0: Fabric Containers (v0) 0.1.22+d7c144a860
			fabric-content-registries-v0: Fabric Content Registries (v0) 3.1.1+c85f2e3860
			fabric-convention-tags-v1: Fabric Convention Tags 1.0.1+474e4f7960
			fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.2.1+ee261a3e60
			fabric-data-generation-api-v1: Fabric Data Generation API (v1) 3.0.0+9fcb91d260
			fabric-dimensions-v1: Fabric Dimensions API (v1) 2.1.20+489d6f8260
			fabric-entity-events-v1: Fabric Entity Events (v1) 1.4.8+d7c144a860
			fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.4.19+d7c144a860
			fabric-events-lifecycle-v0: Fabric Events Lifecycle (v0) 0.2.18+d7c144a860
			fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.13+d7c144a860
			fabric-item-api-v1: Fabric Item API (v1) 1.5.1+6c4e5d0960
			fabric-item-groups-v0: Fabric Item Groups (v0) 0.3.14+91896a4960
			fabric-keybindings-v0: Fabric Key Bindings (v0) 0.2.10+b4f4f6cd60
			fabric-loot-api-v2: Fabric Loot API (v2) 1.1.0+1997ad1260
			fabric-loot-tables-v1: Fabric Loot Tables (v1) 1.1.2+e747827960
			fabric-mining-level-api-v1: Fabric Mining Level API (v1) 2.1.4+cc71601c60
			fabric-models-v0: Fabric Models (v0) 0.3.6+d7c144a860
			fabric-networking-api-v1: Fabric Networking API (v1) 1.0.22+e6b169eb60
			fabric-networking-v0: Fabric Networking (v0) 0.3.9+b4f4f6cd60
			fabric-object-builder-api-v1: Fabric Object Builder API (v1) 2.1.3+032c981d60
			fabric-particles-v1: Fabric Particles (v1) 0.2.12+526dc1ac60
			fabric-registry-sync-v0: Fabric Registry Sync (v0) 0.9.9+0d9ab37260
			fabric-renderer-api-v1: Fabric Renderer API (v1) 0.4.13+d882b91560
			fabric-renderer-indigo: Fabric Renderer - Indigo 0.5.2+d005b03a60
			fabric-renderer-registries-v1: Fabric Renderer Registries (v1) 3.2.11+b4f4f6cd60
			fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.3.7+d7c144a860
			fabric-rendering-fluids-v1: Fabric Rendering Fluids (v1) 2.0.2+54e5b2ec60
			fabric-rendering-v0: Fabric Rendering (v0) 1.1.13+b4f4f6cd60
			fabric-rendering-v1: Fabric Rendering (v1) 1.10.7+54e5b2ec60
			fabric-resource-conditions-api-v1: Fabric Resource Conditions API (v1) 2.0.3+91b7aa6660
			fabric-screen-api-v1: Fabric Screen API (v1) 1.0.10+d882b91560
			fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.2.1+1f6558e860
			fabric-textures-v0: Fabric Textures (v0) 1.0.12+3ac43d9560
			fabric-transfer-api-v1: Fabric Transfer API (v1) 1.6.3+f4563ac860
			fabric-transitive-access-wideners-v1: Fabric Transitive Access Wideners (v1) 1.1.0+e747827960
		fabric-diagonal-panes: Fabric Diagonal Panes 0.6.1
		fabric-furnaces: Fabric Furnaces 2.1.1-1.18.2
		fabric-language-kotlin: Fabric Language Kotlin 1.8.1+kotlin.1.7.0
			org_jetbrains_kotlin_kotlin-reflect: kotlin-reflect 1.7.0
			org_jetbrains_kotlin_kotlin-stdlib: kotlin-stdlib 1.7.0
			org_jetbrains_kotlin_kotlin-stdlib-jdk7: kotlin-stdlib-jdk7 1.7.0
			org_jetbrains_kotlin_kotlin-stdlib-jdk8: kotlin-stdlib-jdk8 1.7.0
			org_jetbrains_kotlinx_atomicfu-jvm: atomicfu-jvm 0.18.0
			org_jetbrains_kotlinx_kotlinx-coroutines-core-jvm: kotlinx-coroutines-core-jvm 1.6.3
			org_jetbrains_kotlinx_kotlinx-coroutines-jdk8: kotlinx-coroutines-jdk8 1.6.3
			org_jetbrains_kotlinx_kotlinx-datetime-jvm: kotlinx-datetime-jvm 0.4.0
			org_jetbrains_kotlinx_kotlinx-serialization-cbor-jvm: kotlinx-serialization-cbor-jvm 1.3.3
			org_jetbrains_kotlinx_kotlinx-serialization-core-jvm: kotlinx-serialization-core-jvm 1.3.3
			org_jetbrains_kotlinx_kotlinx-serialization-json-jvm: kotlinx-serialization-json-jvm 1.3.3
		fabric-language-scala: Fabric Language Scala 1.1.0+scala.2.13.6
		fabricenchantments: Fabric Enchantments 0.7.2
		fabricloader: Fabric Loader 0.14.8
		fabricshieldlib: Fabric Shield Lib 1.5.3-1.18
		fabrictailor: Fabric Tailor 1.8.2
			config2brigadier: Config to Brigadier 1.1.1
		fallingleaves: Falling Leaves 1.11.1+1.18.2
		fallingtree: FallingTree 3.5.3
		fancymenu: FancyMenu 2.8.0
		farmersdelight: Farmer's Delight 1.18.2-0.2.1
		farmingforblockheads: Farming for Blockheads 10.0.2
		feature_nbt_deadlock_be_gone: Feature NBT Deadlock Be Gone - Fabric 2.0.0+1.18.2-rc1
		ferritecore: FerriteCore 4.2.1
		fireplacelib: Fireplace Lib 7.0.1+1.18.2
			annotateddi: Annotated DI 4.0.0+1.18.2
				aopalliance_aopalliance: aopalliance 1.0
				com_google_inject_guice: guice 5.1.0
				javax_inject_javax_inject: javax.inject 1
		fireworkfrenzy: Firework Frenzy 1.9
		flan: Flan 1.18.2-1.7.10
		fluidtank: Fluid Tank 18.5.0-fabric
		forgeconfigapiport: Forge Config API Port 3.2.0
		ftblibrary: FTB Library 1802.3.6-build.123
		ftbquests: FTB Quests 1802.3.8-build.101
		ftbteams: FTB Teams 1802.2.6-build.51
		fuelinfo: FuelInfo 1.0-SNAPSHOT
		gearreborn: Gear Reborn 1.18.2-0.1.14
		geckolib3: Geckolib 3.0.50
			com_eliotlash_mclib_mclib: mclib 18
			com_eliotlash_molang_molang: molang 18
		genesis: Genesis 1.18.2-1.0.1
		givemehats: Give Me Hats! 2.0.4
		go-fish: Go Fish 1.5.0-1.18.2
		gobber2: Gobber2 2.5.75
			pugh_lib: Pugh Lib 1.3.0
			pugh_tools: Pugh Tools 1.2.5
		goldenhoppers: Golden Hoppers 1.3.3
		graveyard: The Graveyard 1.9
		graveyard_biomes: The Graveyard Biomes 1.1
		grounded_origins: Grounded Origins 1.2.0
			apugli: Apugli 1.6.2
		guardiansgalore: GuardiansGalore 1.18.2-3.0
		guardvillagers: Guard Villagers Fabric 1.18.2-1.0.14
		halfdoors: Half Doors 1.18.2-fabric-1.3.7
		hammermod: War-Hammers Mod fabric-1.18.2-v1.0.1
		harvest_scythes: Harvest Scythes 2.5.1
		healthoverlay: Health Overlay 6.2.4
		hexcasting: Hex Casting 0.9.1
			cardinal-components: Cardinal Components API 4.1.4
		hookshot: Hookshot 25.0
		horseinfo: Horse Info 0.4.1-1.18
		horsestatsvanilla: Horse Stats Vanilla 4.1.10
		hoverpets: Hover Pets 0.3.3
		hyperlighting: Hyper Lighting 1.2.3
			me_hypherionmc_night-config_core: core 3.6.5_custom
			me_hypherionmc_night-config_toml: toml 3.6.5_custom
		iceberg: Iceberg 1.0.38
		iknowwhatimdoing: I Know What I'm Doing 4.1.0
		illuminations: Illuminations 1.10.4
		impaled: Impaled 1.1.3
		impersonate: Impersonate 2.5.0
		improved-stations: Improved Stations 2.1.0
		incantationem: Incantationem 1.1.3+1.18.2
		indium: Indium 1.0.6+mc1.18.2
		indrev: Industrial Revolution 1.14.0-BETA
			magna: Magna 1.7.0-1.18-pre1
		inmis: Inmis 2.6.0-1.18.2
		inventoryhud: Inventory HUD + 3.4.2
		inventoryprofilesnext: Inventory Profiles Next 1.5.3
		iris: Iris 1.2.5
			org_anarres_jcpp: jcpp 1.4.14
		itemborders: Item Borders 1.1.5
		itemfilters: Item Filters 1802.2.7-build.29
		itemscroller: Item Scroller 0.16.0
		jamlib: JamLib 0.0.5
		java: OpenJDK 64-Bit Server VM 17
		justenoughkeys: Just Enough Keys 0.5.3
		kibe: Kibe 1.9.8-BETA+1.18
		kjsextras: KubeJS Extras 3.0.0
		konkrete: Konkrete 1.3.3
		krypton: Krypton 0.1.9
			com_velocitypowered_velocity-native: velocity-native 1.1.0-SNAPSHOT
		kubejs: KubeJS 1802.5.4-build.510
		kubejs_botania: KubeJS Botania 1.0.2
		lambdabettergrass: LambdaBetterGrass 1.2.4+1.18
			spruceui: SpruceUI 3.3.3+1.18
		lambdynlights: LambDynamicLights 2.1.0+1.17
			pride: Pride Lib 1.1.0+1.17
		lavajava: Lava Java 0.4.0
		lazydfu: LazyDFU 0.1.2
		legendarytooltips: Legendary Tooltips 1.2.5
		libblockattributes: LibBlockAttributes 0.10.2
			libblockattributes_core: LibBlockAttributes (Core) 0.10.2
			libblockattributes_fluids: LibBlockAttributes (Fluids) 0.10.2
			libblockattributes_items: LibBlockAttributes (Items) 0.10.2
		libra: Libra 0.5.31
		lifts: Lifts 1.4.1-BETA+1.18
		lightestlamp: Lightest Lamps 1.0.0
		lightoverlay: Light Overlay 6.0.5
		lithium: Lithium 0.7.10
		logbegone: Log Begone 1.0.1
		lovely_snails: Lovely Snails 1.0.4+1.18
		macawsbridgesbyg: Macaw's Bridges - BYG 1.18.2-1.2
		magicfungi: Magic Fungi 0.7.4-BETA+1.18.2
		malilib: MaLiLib 0.12.1
		marketcrates: Marketcrates 1.4.1
		mavm: More Axolotl Variants Mod 1.0.8a
		maxhealthfix: MaxHealthFix 5.0.1
		mcda: MC Dungeons Armors 2.0.6
		mcdar: MC Dungeons Artifacts 1.4.8
		mcdw: MC Dungeons Weapons 4.4.0
			enchant_giver: Enchant Giver 1.2.1
		mcwbridges: Macaw's Bridges 2.0.3
		mcwfences: Macaw's Fences and Walls 1.0.5
		mcwlights: Macaw's Lights and Lamps 1.0.3
		mcwpaintings: Macaw's Paintings 1.0.3
		mcwwindows: Macaw's Windows 2.0.3
		megane: megane 7.7.2
			megane-alloy-forgery: megane-alloy-forgery 7.7.2
			megane-api: megane-api 7.7.2
			megane-applied-energistics-2: megane-applied-energistics-2 7.7.2
			megane-create: megane-create 7.7.2
			megane-deep-mob-learning-simulacrum: megane-deep-mob-learning-simulacrum 7.7.2
			megane-extra-generators: megane-extra-generators 7.7.2
			megane-fabric-transfer: megane-fabric-transfer 7.7.2
			megane-industrial-revolution: megane-industrial-revolution 7.7.2
			megane-kibe: megane-kibe 7.7.2
			megane-lib-block-attributes: megane-lib-block-attributes 7.7.2
			megane-reborn-core: megane-reborn-core 7.7.2
			megane-reborn-energy: megane-reborn-energy 7.7.2
			megane-runtime: megane-runtime 7.7.2
			megane-tech-reborn: megane-tech-reborn 7.7.2
			megane-vanilla: megane-vanilla 7.7.2
			megane-wireless-networks: megane-wireless-networks 7.7.2
		megaparrot: Megaparrot 1.0.5
		mermaid: Mod 1.0.0
		midnightlib: MidnightLib 0.4.4
		milk_plus: Milk+ 3.0.1
			dripstone_fluid_lib: Dripstone Fluid Lib 1.2.0
		minecraft: Minecraft 1.18.2
		minieffects: Mini Effects 4.1.0
		miningutility: Mining Utility 1.2.3+1.18
		mo_glass: Mo Glass 1.6.1-MC1.18.2
		mobifier: Mobifier 1.0.3
		mobz: MobZ 3.3.4
		mocolors: Mo' Colors 1.4.0
		modern_industrialization: Modern Industrialization 1.2.1
		moderndynamics: Modern Dynamics 0.2.3-beta
		modmenu: Mod Menu 3.2.3
		morebannerfeatures: More Banner Features 1.1.3
		morevillagers: More Villagers 3.3.2
		mostructures: Mo' Structures 1.4.2+1.18.2
		mtmechs: Magitek Mechs 1.0.12
		multibeds: MultiBeds 1.2.5
		myloot: myLoot 2.1.3-1.18
		myrtrees: Myrtrees 1.1.0-build.29
		mythicmetals: Mythic Metals 0.14.1
		mythicmounts: Mythic Mounts 1.18.2-7.0
		naturescompass: Nature's Compass 1.18.2-2.0.3-fabric
		no_fog: No Fog 1.2.2+1.16.5-1.18.2
		nomadbooks: Nomad Books 1.0.1
		notenoughcrashes: Not Enough Crashes 4.1.6+1.18.2
		omega-config: OmegaConfig 1.2.3-1.18.1
		onsoulfire: On Soul Fire 1.18-3
		origins: Origins 1.4.1
			apoli: Apoli 2.3.3
				calio: Calio 1.5.1
		origins-classes: Origins: Classes 1.3.0
		overweight_farming: Overweight Farming 1.18.2-1.5-fabric
		owo: o?o 0.7.2-no-cme+1.18
		paginatedadvancements: Paginated Advancements 1.0.1
		paintings: Paintings++ 9.1.2.1
		patchouli: Patchouli 1.18.2-71.1-FABRIC
		paucal: PAUCAL 0.4.7
		pehkui: Pehkui 3.3.3+1.14.4-1.19.1
			kanos_config: Kanos Config 0.3.1+1.14.4-1.19
		phonos: Phonos 0.3+1.18.2
			jsonem: JsonEM 0.1.1
		phosphor: Phosphor 0.8.1
		pickupnotifier: Pick Up Notifier 3.2.0
		pigpen: PigPen 8.0.1
		plantinajar: Plant In A Jar 2.3.1
			libgui: LibGui 5.4.2+1.18.2
				jankson: Jankson 4.0.0+j1.2.0
				libninepatch: LibNinePatch 1.1.0
			org_objenesis_objenesis: objenesis 3.2
		platforms: Platforms 1.2.4
		playerabilitylib: Pal 1.5.1
		pling: Pling 1.5.0
		plushies: Plushie Mod 1.2
		polymer-all: Polymer (Packed) 0.2.0-rc.4.2+1.18.2
			polymer: Polymer (Core) 0.2.0-rc.4.2+1.18.2
				packet_tweaker: Packet Tweaker 0.3.0+1.18.2
				polymer-legacy: Polymer (Compatibility) 0.1.9+0.2.0-rc.4.2+1.18.2
			polymer-blocks-ext: Polymer Blocks 0.1.0-alpha.7+1.18.2
		polymorph: Polymorph 0.0.21-1.18.2
			cardinal-components-block: Cardinal Components API (blocks) 4.1.4
		prefab: Prefab 3.1.5
		presencefootsteps: Presence Footsteps 1.5.1
			kirin: Kirin UI 1.10.0
		probejs: ProbeJS 3.1.5
		publicguiannouncement: Public Gui Announcement 3.2.0.1
		pureminingdimension: PureMiningDimension 1.0.1
			customportalapi: Custom Portal Api 0.0.1-beta51-1.18
		puzzleslib: Puzzles Lib 3.3.5
		quarryplus: QuarryPlus 18.4.573
		quartzelv: Quartz Elevator 2.1.2+1.18.2
		questsadditions: Quests Additions 1.3.1
		quickshulker: Quick Shulker 1.3.6-1.18
			kyrptconfig: Kyrpt Config 1.3.4-1.18
				blue_endless_jankson: jankson 1.2.1
			shulkerutils: shulkerutils 1.0.4-1.18
		ratsmischief: Rat's Mischief 1.3.7
		reborncore: Reborn Core 5.2.0
		redbits: Red Bits 1.13.3
			interference: Interference API 1.4.1
		redstonebits: Redstone Bits 1.8.2
		reeses-sodium-options: Reese's Sodium Options 1.4.3+mc1.18.2-build.42
		repurposed_structures: Repurposed Structures 4.1.14+1.18.2
		resourceful_tools: Resourceful Tools 1.2.37
		respawnablepets: Respawnable Pets 1.18-4
		rhino: Rhino 1802.1.14-build.190
		rightclickharvest: Right Click Harvest 2.1.1
		rocks: This Rocks! 1.6.0
		roughlyenoughitems: Roughly Enough Items 8.3.502
		roughlyenoughresources: Roughly Enough Resources 2.5.0
		rpgstats: RPGStats 4.3.13+1.18.2
			server_translations_api: Server Translations API 1.4.12+1.18.2
		runelic: Runelic 11.0.1
		sandwichable: Sandwichable 1.3+1.18.2
		secretrooms: Secret Rooms 1.3.1+1.18.2
		shetiphiancore: ShetiPhianCore 1.2.11
			myron: Myron 1.6.3+1.18.1
		shulkerboxtooltip: Shulker Box Tooltip 3.0.10+1.18.2
		silkspawners: SilkSpawners 1.1.1
		skinlayers: 3d Skin Layers 1.4.6-mc1.18.2
		skylorlib: SkyLib 1.3.35
		slimyboyos: Slimy Boyos 4.0.0.7
		sodium: Sodium 0.4.1+build.15
			org_joml_joml: joml 1.10.2
		sodium-extra: Sodium Extra 0.4.5+mc1.18.2-build.42
			caffeineconfig: CaffeineConfig 1.1.0
		someforgepatchesported: Some Forge Patches Ported 1.0.3
		spectrum: Spectrum 1.4.2-1.18.2-chaos_and_exploration
			additionalentityattributes: Additionalentityattributes 1.0.0+1.18.2
			bannerpp: Banner++ 2.0.6-teb.1+mc.1.18.2
			incubus_core: Incubus Core 1.7-rc.4
			satin: Satin 1.7.2
		spoornpacks: SpoornPacks 4.2.2-1.18.2
			com_fasterxml_jackson_core_jackson-annotations: jackson-annotations 2.13.1
			com_fasterxml_jackson_core_jackson-core: jackson-core 2.13.1
			com_fasterxml_jackson_core_jackson-databind: jackson-databind 2.13.1
		spoornweaponattributes: SpoornWeaponAttributes 3.4.6-1.18
			net_objecthunter_exp4j: exp4j 0.4.8
		sprout: Sprout 1.3.1
		stoneholm: Stoneholm 1.4.3
		suggestion_tweaker: Suggestion Tweaker 1.18.2-1.2.0
		tacocraft: TacoCraft 1.7.4-1.18.2
		techreborn: Tech Reborn 5.2.0
		teenycoal: Teeny Coal 1.1.3-1.16.x-1.17.x-1.18.x-1.19-snapshot
		tempad: Tempad 1.2.4
		tenshilib: TenshiLib 1.18.2-1.6.7
		tep: Totally Enough Pain 1.0.7
		terrablender: TerraBlender 1.1.0.102
		terrarianslimes: Terrarian Slimes 1.2.1-BETA+1.18
		things: Things 0.2.18+1.18
		tiered: Tiered 1.1.0
		timeoutout: TimeOut Out 1.0.1+1.18
		tinyskeletons: Tiny Skeletons 3.2.1
		toms_storage: Tom's Simple Storage Mod 1.3.4
		toolstats: ToolStats 9.0.3
		tooltipfix: ToolTip Fix 1.0.4-1.18
		torohealth: ToroHealth Damage Indicators 1.18-fabric-2
		tradingpost: Trading Post 3.2.0
		trashslot: TrashSlot 11.0.2
		travelersbackpack: Traveler's Backpack 1.18.2-7.1.2
		trinkets: Trinkets 3.3.1
		twigs: Twigs 1.1.3-patch2+1.18.2
		universal-graves: Universal Graves 2.0.3+1.18.2
			hologram-api: Hologram API 0.2.1+1.18-pre5
			placeholder-api: Placeholder API 1.1.3+1.17.1
			sgui: sgui 1.0.2+1.18.2
		upc: UPC 0.0.2
		valley: ValleyCraft 2.3.1-1.18.2
		veggie_way: The Veggie Way 1.2.32
		veinmining: Vein Mining 0.0.13-1.18.2
		villager-hats: Villager Hats 1.4.0
		villagernames: Villager Names 4.0.4
		visuality: Visuality 0.4.2
			goosik-config: goosik-config 0.2.0
			tlcosmetica: Cosmetica 0.4.0
		voidz: VoidZ 1.0.7
		voyager: Voyager v2 2.1.0-1.18-1.19.x
		walljump: Wall-Jump! 1.4.7+1.18.2
		wandering_collector: Wandering Collector 1.1.2+mc1.18.2
		waterdripsound: Drip Sounds 1.18-0.3.0
		waystones: Waystones 2.5.5+mc1.18.2
		weaponthrow: Weapon Throw 1.18.2-1.7
		whisperwoods: Whisperwoods 1.18.2-2.1.0
		wi_zoom: WI Zoom 1.4-MC1.18.2
		winged: Winged Mod 1.18.2-3.2.0
		wirelessnetworks: Wireless Networks 1.5.1
		wmitaf: WMITAF 2.3.0
		wthit: wthit 4.11.0
		xaerominimap: Xaero's Minimap 22.11.1
		xaeroworldmap: Xaero's World Map 1.25.1
		xlpackets: XLPackets 2.1-1.17.1
		xps: Xp Obelisk 0.4.1.r_for_1.18.x_Fabric
		xxxx: MinePop 1.0.0-1.18.2
		yungsapi: YUNG's API 1.18.2-Fabric-2.0.8
		zihlaunchpads: ZIHLaunchpads 1.2.0
	Flywheel Backend: Uninitialized
	Launched Version: 1.18.2
	Backend library: LWJGL version 3.2.2 build 10
	Backend API: Unknown
	Window size: <not initialized>
	GL Caps: Using framebuffer using OpenGL 3.2
	GL debug messages: <disabled>
	Using VBOs: Yes
	Is Modded: Definitely; Client brand changed to 'fabric'
	Type: Client (map_client.txt)
	CPU: <unknown>
	Suspected Mods: Minecraft (minecraft), Annotated DI (annotateddi), Fabric Loader (fabricloader), Fireplace Lib (fireplacelib), Not Enough Crashes (notenoughcrashes), guice (com_google_inject_guice)

Additional Information

No response

Conditional Loading based on mod dependency

As a modder, I'd like the ability to easily have one file injected if mod dependencies are met, and another if they aren't.

Perhaps allowing a dependency list in the annotation field would be the way to go here. I can probably parse them similar to how Fabric parses dependencies. That still leaves the question of how to prioritize if multiple Implementations' dependencies are met - or if I should even try to handle that.

Conflict with VS2 upon mixin load

This Mod Version

4.0.1

Other Mod Name

Valkyrien Skies 2

Other Mod Version

2.1.0-beta.10

What mod loader(s) are you seeing the problem on?

Forge

Mod Loader Version

40.2.0

Problem Description

After putting Annotated DI into my pack (due to adding Overlord), I've experienced a crash on the earliest stages of loading.
Crash report included:
https://mclo.gs/TUuhPfM

Correction: I've started this post as a CC: Tweaked (ver. 1.101.2) compatibility issue, but after I got to trying to reproduce it with a minimal setup, it turned out to actually be a Valkyrien Skies 2 issue:
https://mclo.gs/JgTFoPk

I have seen the other issue of this nature by one of the authors of VS, but I thought it might be helpful to point out that the issue still exists, and provide logs to what actually happens.

Steps To Reproduce

  1. Add the following mods:
    • Annotated DI
    • Kotlin for Forge
    • Valkyrien Skies 2
  2. Launch the game
  3. Experience a ResolutionException: Modules javax.inject and annotateddi export package javax.inject to module jackson.kotlin.dsl

Crash Report or Error Logs

https://mclo.gs/TUuhPfM - with big pack

https://mclo.gs/JgTFoPk - minimal setup

Additional Information

No response

Lock down injection sources

Is your feature request related to a problem? Please describe.
As a modder, I want to reduce the risk of other mods trying to mess with my injections by binding their own classes to my api

Describe the solution you'd like
Prevent bindings from sources other than the mod providing the interface. Perhaps allow mods to override this behavior (per interface or globally) with specific allowed mods or allow any mod.

JIJ or relocate dependencies, shading javax.inject causes ResolutionException in Forge

This Mod Version

unknown

Other Mod Name

Valkyrien Skies 2

Other Mod Version

2.1.0-beta1

What mod loader(s) are you seeing the problem on?

Forge

Mod Loader Version

1.18.2

Problem Description

See: ValkyrienSkies/Valkyrien-Skies-2#249. Your mod shades javax.inject rather than using include, which causes a crash on Forge which expects each package to only appear in one mod jar at a time.

You should use include("javax.inject:javax.inject:1") in your build.gradle and do the same for your other libraries and their transitive dependencies, or use shadowJar to relocate those packages so they don't conflict with other mods.

Steps To Reproduce

No response

Crash Report or Error Logs

No response

Additional Information

No response

Per-Mod Injectors

Is your feature request related to a problem? Please describe.

  1. Forge doesn't support having multiple "entrypoints". Because class loading and "active mod container" detection seems to be handled differently, it's not a great idea to invoke everything from Annotated Di's side during setup. But we can't wait until after setup for access to an Injector either.
  2. If anything is wrong with any mod's setup in the global injector, it's difficult to see which.

Describe the solution you'd like
Rather than a single Injector, use a separate injector for each mod which only pulls its own config and any dependencies' configs. This default is the "auto" injector for that mod. An api method with no parameters can be used to grab this (it will look at active mod container). It is also possible to get another mod's "auto" injector by passing in a modid. Lastly, manually building an injector by passing a list of modids should be allowed.

Loading would look something like:

  1. Build a list of modids and their corresponding DI configs.
  2. On Fabric, call the entrypoints to get custom modules and store those too
  3. On Fabric, call the "Injector Ready" entrypoints for each mod, building the injectors as we iterate and wrap in a try/catch in case something goes wrong. This way we know which mod(s) are broken.
  4. On Forge, other mods call Annotated DI to register their custom modules.
  5. On Forge, other mods call Annotated DI to build their injectors during their own entrypoints.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.