-
Notifications
You must be signed in to change notification settings - Fork 126
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
fix: Mod versioning #828
base: main
Are you sure you want to change the base?
fix: Mod versioning #828
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Works fine in testing. Didn't test the squirrel functions though.
Launch game with no
enabledmods.json
file at all
2024-11-22.22-25-28.mp4
Launch game with an invalid
enabledmods.json
file (not following JSON format)
2024-11-22.22-28-03.mp4
Launch game with
enabledmods.json
using old format
2024-11-22.22-29-57.mp4
Launch game with
enabledmods.json
using new format
2024-11-22.22-35-02.mp4
Note that in all 3 scenarios where enabledmods.json
was incorrect, the fixed auto-generated enabledmods.json
was read correctly instead, and all mods loaded fine
Associated mods PR: R2Northstar/NorthstarMods#903
Problem
Whether through manual installation or through mod auto-downloading, several versions of the same mod can be installed in Northstar, which currently does not handle this:
main_status.webm
This video was recorded using a profile with two Parkour mod versions,
v0.1.2
andv0.2.1
: note how the client does not distinguish between the two versions (version displayed in the UI is the same for both mods), and is not capable of (de)activating any of them.Description
New
enabledmods.json
formatSince the current
enabledmods.json
format does not allow for multiple mod versions, it has been reworked.With this PR, if "old" file format is detected,
enabledmods.json
will automatically be converted to "new" format.Old format
New format
(new
enabledmods.json
format also means mod managers will have to adapt)Squirrel-exposed functions
NSIsModEnabled(string modName)
is nowNSIsModEnabled(string modName, string modVersion)
;NSSetModEnabled(string modName, bool enabled)
is nowNSSetModEnabled(string modName, string modVersion, bool enabled)
;NSIsModRemote(string modName)
is nowNSIsModRemote(string modName, string modVersion)
;NSGetModVersionByModName(string modName)
is nowNSGetModVersions(string modName)
;NSGetModsInformation
method, that returns a list of mods with all associated information at once (and not only names likeNSGetModNames
currently does it);NSGetModsInformation
, the following functions were removed:NSGetModDescriptionByModName
,NSGetModDownloadLinkByModName
,NSGetModLoadPriority
,NSIsModRequiredOnClient
,NSGetModConvarsByModName
Result
multiple_versions_handling.webm
This video was recorded using a profile with two Parkour mod versions,
v0.1.2
andv0.2.1
: the client now differentiate the two versions (they both appear correctly on the UI), and is capable (de)activating any of them.Closes #670.
Closes #757.
Supercedes #758.
Testing (manifesto format)
As this PR modifies your
enabledmods.json
file, you might want to copy it somewhere safe before testing.Test scenarios
Launch game:
with no
enabledmods.json
file at allenabledmods.json
should be created using new formatwith an invalid
enabledmods.json
file (not following JSON format)enabledmods.json
should be renamed intoenabledmods.json.old
enabledmods.json
should be created using new formatwith
enabledmods.json
using old formatenabledmods.json
file should be renamed intoenabledmods.json.old
enabledmods.json
should be recreated using new formatwith
enabledmods.json
using new formatenabledmods.json
configuration (you can check that in the Mods menu)TODOs
UnloadMods
methodGenerateModsConfigurationFile
method (since mod entries are already created ~L667)NSSetModEnabled(name,bool
toNSSetModEnabled(name,ver,bool
)