Dependency relationship design
We need to work on how to implement dependencies between mods, modpacks, clients and servers. These need to cover the following relationships:
- Modpacks depend on mods and minecraft clients. All the mods must have all the versions enabled for the modpack. For each version, there must exist a client with that specific version avaiable.
- Mods are available for a certain set of Minecraft versions. Each mod can depend on other mods (which must support at least the versions supported by the reverse-dependencies). Mods require at least one Minecraft client for each enabled version, which has that specific version enabled.
- Plugins behave like Mods, but only support servers.
- Servers behave somewhat like clients. Not all mods can be installed for servers, so care must be taken to distinguish between mods that support both and mods that support only clients.
Additionally, we must be able to have multiple versions of most things side-by-side. This is due to the fact that Minecraft mods are often pinned to Minecraft versions and Minecraft servers usually only support a very limited set of Minecraft client versions.
/cc @sebspeitel