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

Add NewMelonLoaderInstaller #1583

Draft
wants to merge 1 commit into
base: develop
Choose a base branch
from
Draft

Add NewMelonLoaderInstaller #1583

wants to merge 1 commit into from

Conversation

anttimaki
Copy link
Collaborator

MelonLoader has added support for recursive loading. This means mods, plugins and userLibs can all be placed in the same folder inside the profile folder instead of needing to copy each type to a specific subfolder. This in turn means we can namespace each installed mod into its own subfolder, which makes uninstalling the mods straightforward and removes the need to track installation state on a separate file.

The mod author still need to place plugins and userLibs to specific folders in their Thunderstore packages though.

In the profile, package's UserData folder (if any) gets copied to profile/UserData/[packageName] and everything else gets copied to profile/Mods/[packageName]. MelonLoader handles the rest.

This will require MelonLoader v0.6.7 or newer to work.

MelonLoader has added support for recursive loading. This means mods,
plugins and userLibs can all be placed in the same folder inside the
profile folder instead of needing to copy each type to a specific
subfolder. This in turn means we can namespace each installed mod into
its own subfolder, which makes uninstalling the mods straightforward
and removes the need to track installation state on a separate file.

The mod author still need to place plugins and userLibs to specific
folders in their Thunderstore packages though.

In the profile, package's UserData folder (if any) gets copied to
profile/UserData/[packageName] and everything else gets copied to
profile/Mods/[packageName]. MelonLoader handles the rest.

This will require MelonLoader v0.6.7 or newer to work.
@anttimaki
Copy link
Collaborator Author

This is a draft PR as the MelonLoader needs a new release for things to work as expected.

As for the naming, if we end up having two ML installer implementations at the same time, the new one could be renamed to RECURSIVE_MELON_LOADER, or the old one could be renamed to LEGACY_MELON_LOADER. If there's going to be only one then simple MELON_LOADER will do.

Currently (confirmtion pending) the idea is that mod packages would be structured as:

# mod.zip
  - Mods
    - my_first_mod.dll
  - Plugins
    - my_plugin.dll
  - UserLibs
    - helper_lib.dll
  - UserData
    - <custom folders and files>
  - my_second_mod.dll
  - <required files>

The files would get copied to profiles as:

# <profile>/
  - Mods
    - <packageName>
      - Mods
        - my_first_mod.dll
      - Plugins
        - my_plugin.dll
      - UserLibs
        - helper_lib.dll
      - my_second_mod.dll
      - <required files>   
  - UserData
    - <PackageName>
      - <custom folders and files>

The <required files> are copied to Mods folder as a manifest.json is needed to trigger the recursive loading of mods/plugins/user libs.

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

Successfully merging this pull request may close these issues.

1 participant