Skip to content
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

[Feature Request] Mod Support #74

Open
Diyagi opened this issue Nov 30, 2024 · 0 comments
Open

[Feature Request] Mod Support #74

Diyagi opened this issue Nov 30, 2024 · 0 comments

Comments

@Diyagi
Copy link
Contributor

Diyagi commented Nov 30, 2024

Since im lacking time to work on this i will leave it in here in case anyone wants to fiddle with it.
Implementing mod support for the container is possible, the idea i had in mind was to:

1. Mod Specification Using Environment Variables

Mods can be specified through an environment variable, using the format:
mod-id:version

  • Example: core-lib:3.2.1
  • Key Details:
    • The version can be omitted to default to the latest version of the mod.
    • Multiple mods can be specified as a comma-separated list:
      core-lib:3.2.1,corelibentity:4.0.4,corelibresources,corelibcommands:3.2.1

2. Downloading Mods from Mod.io

  • Mods will be downloaded using the Mod.io API.
  • An API key is required and must be supplied by the user via an environment variable.
    • Note: While mods can technically be downloaded from Mod.io without an API key, doing so violates their Terms of Service (TOS).

3. Handling Downloaded Mods

  • Mods downloaded from Mod.io are provided in a compressed format (ZIP).
  • The container must:
    1. Uncompress the mods into a specific folder.
    2. Each mod’s files should be placed in a folder named after its mod-id.
      • For example, if the mod ID is core-lib, its files should go into:
        <target-folder>/core-lib/
    3. The target folder should be specified by an environment variable (already declared in the Dockerfile).

4. Managing Mod Updates

The container should be able to identify and manage mod updates:

  • Since the mod version is not specified in its manifest, a local file should be maintained.
    • This file will list all installed mods along with their versions.
  • When updating mods:
    • Mods in the environment variable list are updated to the specified or latest version.
    • Any mods not in the list should be deleted to avoid conflicts or redundancy.

5. Optional: Dependency Resolution

  • Dependency resolution is possible but complex to implement.
  • Consider adding this feature for advanced mod compatibility. However, it may require significant effort and careful handling of dependencies.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant