From 2ab88955d26011996c86256e68532f37d50ca396 Mon Sep 17 00:00:00 2001 From: Lillie <75392499+iLillie@users.noreply.github.com> Date: Wed, 10 Dec 2025 17:23:01 +0100 Subject: [PATCH 1/5] bump qpm dependencies and fix GameScenesManager changes ++ --- qpm.json | 17 +++++++--- qpm.shared.json | 90 ++++++++++++++++++++++++++++--------------------- src/hooks.cpp | 17 +++++----- src/songs.cpp | 4 +-- 4 files changed, 75 insertions(+), 53 deletions(-) diff --git a/qpm.json b/qpm.json index 4403cd7..ead1671 100644 --- a/qpm.json +++ b/qpm.json @@ -1,11 +1,12 @@ { + "$schema": "https://raw.githubusercontent.com/QuestPackageManager/QPM.Package/refs/heads/main/qpm.schema.json", "version": "0.1.0", "sharedDir": "shared", "dependenciesDir": "extern", "info": { "name": "MetaCore", "id": "metacore", - "version": "1.6.2", + "version": "1.7.0", "url": "https://github.com/Metalit/MetaCore", "additionalData": { "overrideSoName": "libmetacore.so", @@ -38,6 +39,7 @@ "pwsh ./scripts/pull-tombstone.ps1 -analyze" ] }, + "ndk": "^27.3.13750724", "qmodIncludeDirs": [ "./build", "./extern/libs" @@ -48,7 +50,7 @@ "dependencies": [ { "id": "beatsaber-hook", - "versionRange": "^6.4.2", + "versionRange": "^7.3.0", "additionalData": {} }, { @@ -60,7 +62,7 @@ }, { "id": "bs-cordl", - "versionRange": "^4008.0.0", + "versionRange": "^4100.0.0", "additionalData": {} }, { @@ -75,7 +77,7 @@ }, { "id": "custom-types", - "versionRange": "^0.18.3", + "versionRange": "^0.19.0", "additionalData": { "private": true } @@ -93,6 +95,11 @@ "additionalData": { "private": true } + }, + { + "id": "flamingo", + "versionRange": "^1.1.2", + "additionalData": {} } ] -} +} \ No newline at end of file diff --git a/qpm.shared.json b/qpm.shared.json index b14b4d6..afefc5c 100644 --- a/qpm.shared.json +++ b/qpm.shared.json @@ -7,7 +7,7 @@ "info": { "name": "MetaCore", "id": "metacore", - "version": "1.6.2", + "version": "1.7.0", "url": "https://github.com/Metalit/MetaCore", "additionalData": { "overrideSoName": "libmetacore.so", @@ -40,6 +40,7 @@ "pwsh ./scripts/pull-tombstone.ps1 -analyze" ] }, + "ndk": "^27.3.13750724", "qmodIncludeDirs": [ "./build", "./extern/libs" @@ -50,7 +51,7 @@ "dependencies": [ { "id": "beatsaber-hook", - "versionRange": "^6.4.2", + "versionRange": "^7.3.0", "additionalData": {} }, { @@ -62,7 +63,7 @@ }, { "id": "bs-cordl", - "versionRange": "^4008.0.0", + "versionRange": "^4100.0.0", "additionalData": {} }, { @@ -77,7 +78,7 @@ }, { "id": "custom-types", - "versionRange": "^0.18.3", + "versionRange": "^0.19.0", "additionalData": { "private": true } @@ -95,6 +96,11 @@ "additionalData": { "private": true } + }, + { + "id": "flamingo", + "versionRange": "^1.1.2", + "additionalData": {} } ] }, @@ -102,13 +108,9 @@ { "dependency": { "id": "custom-types", - "versionRange": "=0.18.3", + "versionRange": "=0.19.0", "additionalData": { - "soLink": "https://github.com/QuestPackageManager/Il2CppQuestTypePatching/releases/download/v0.18.3/libcustom-types.so", - "debugSoLink": "https://github.com/QuestPackageManager/Il2CppQuestTypePatching/releases/download/v0.18.3/debug_libcustom-types.so", "overrideSoName": "libcustom-types.so", - "modLink": "https://github.com/QuestPackageManager/Il2CppQuestTypePatching/releases/download/v0.18.3/CustomTypes.qmod", - "branchName": "version/v0_18_3", "compileOptions": { "cppFlags": [ "-Wno-invalid-offsetof" @@ -117,27 +119,42 @@ "cmake": true } }, - "version": "0.18.3" + "version": "0.19.0" + }, + { + "dependency": { + "id": "libil2cpp", + "versionRange": "=0.5.0", + "additionalData": { + "headersOnly": true, + "compileOptions": { + "systemIncludes": [ + "il2cpp/external/baselib/Include", + "il2cpp/external/baselib/Platforms/Android/Include" + ] + } + } + }, + "version": "0.5.0" }, { "dependency": { "id": "rapidjson-macros", - "versionRange": "=2.1.0", + "versionRange": "=2.2.0", "additionalData": { "headersOnly": true, - "branchName": "version/v2_1_0", "cmake": false } }, - "version": "2.1.0" + "version": "2.2.0" }, { "dependency": { "id": "bs-cordl", - "versionRange": "=4008.0.0", + "versionRange": "=4100.0.1", "additionalData": { "headersOnly": true, - "branchName": "version/v4008_0_0", + "branchName": "version/v4100_0_1", "compileOptions": { "includePaths": [ "include" @@ -146,24 +163,24 @@ "cppFlags": [ "-DNEED_UNSAFE_CSHARP", "-fdeclspec", - "-DUNITY_2021", + "-DUNITY_6", "-DHAS_CODEGEN", "-Wno-invalid-offsetof" ] } } }, - "version": "4008.0.0" + "version": "4100.0.1" }, { "dependency": { "id": "paper2_scotland2", - "versionRange": "=4.6.4", + "versionRange": "=4.7.0", "additionalData": { - "soLink": "https://github.com/Fernthedev/paperlog/releases/download/v4.6.4/libpaper2_scotland2.so", + "soLink": "https://github.com/Fernthedev/paperlog/releases/download/v4.7.0/libpaper2_scotland2.so", "overrideSoName": "libpaper2_scotland2.so", - "modLink": "https://github.com/Fernthedev/paperlog/releases/download/v4.6.4/paper2_scotland2.qmod", - "branchName": "version/v4_6_4", + "modLink": "https://github.com/Fernthedev/paperlog/releases/download/v4.7.0/paper2_scotland2.qmod", + "branchName": "version/v4_7_0", "compileOptions": { "systemIncludes": [ "shared/utfcpp/source" @@ -172,7 +189,7 @@ "cmake": false } }, - "version": "4.6.4" + "version": "4.7.0" }, { "dependency": { @@ -196,13 +213,12 @@ { "dependency": { "id": "beatsaber-hook", - "versionRange": "=6.4.2", + "versionRange": "=7.3.0", "additionalData": { - "soLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v6.4.2/libbeatsaber-hook.so", - "debugSoLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v6.4.2/debug_libbeatsaber-hook.so", + "soLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v5.0.0/libbeatsaber-hook.so", + "debugSoLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v5.0.0/debug_libbeatsaber-hook.so", "overrideSoName": "libbeatsaber-hook.so", - "modLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v6.4.2/beatsaber-hook.qmod", - "branchName": "version/v6_4_2", + "branchName": "master", "compileOptions": { "cppFlags": [ "-Wno-extra-qualification" @@ -211,7 +227,7 @@ "cmake": true } }, - "version": "6.4.2" + "version": "7.3.0" }, { "dependency": { @@ -258,19 +274,17 @@ }, { "dependency": { - "id": "libil2cpp", - "versionRange": "=0.4.0", + "id": "flamingo", + "versionRange": "=1.1.2", "additionalData": { - "headersOnly": true, - "compileOptions": { - "systemIncludes": [ - "il2cpp/external/baselib/Include", - "il2cpp/external/baselib/Platforms/Android/Include" - ] - } + "soLink": "https://github.com/sc2ad/Flamingo/releases/download/v1.1.2/libflamingo.so", + "debugSoLink": "https://github.com/sc2ad/Flamingo/releases/download/v1.1.2/debug_libflamingo.so", + "overrideSoName": "libflamingo.so", + "modLink": "https://github.com/sc2ad/Flamingo/releases/download/v1.1.2/flamingo.qmod", + "branchName": "version/v1_1_2" } }, - "version": "0.4.0" + "version": "1.1.2" } ] } \ No newline at end of file diff --git a/src/hooks.cpp b/src/hooks.cpp index 7cc0a3a..d9ab3a1 100644 --- a/src/hooks.cpp +++ b/src/hooks.cpp @@ -1,6 +1,7 @@ #include "hooks.hpp" #include "GlobalNamespace/AnnotatedBeatmapLevelCollectionsViewController.hpp" +#include "System/Collections/Generic/IReadOnlyList_1.hpp" #include "GlobalNamespace/AudioTimeSyncController.hpp" #include "GlobalNamespace/BeatmapObjectExecutionRatingsRecorder.hpp" #include "GlobalNamespace/BeatmapObjectManager.hpp" @@ -296,9 +297,9 @@ MAKE_AUTO_HOOK_MATCH( // initialize as soon as the scene is loaded MAKE_AUTO_HOOK_MATCH( GameScenesManager_PushScenes_Delegate, - &GameScenesManager::__c__DisplayClass40_0::_PushScenes_b__1, + &GameScenesManager::__c__DisplayClass44_0::_PushScenes_b__1, void, - GameScenesManager::__c__DisplayClass40_0* self, + GameScenesManager::__c__DisplayClass44_0* self, Zenject::DiContainer* container ) { CheckInitialize(self->scenesTransitionSetupData); @@ -309,9 +310,9 @@ MAKE_AUTO_HOOK_MATCH( // initialize on level restarts as well MAKE_AUTO_HOOK_MATCH( GameScenesManager_ReplaceScenes_Delegate_AfterLoad, - &GameScenesManager::__c__DisplayClass42_0::_ReplaceScenes_b__2, + &GameScenesManager::__c__DisplayClass47_0::_ReplaceScenes_b__2, void, - GameScenesManager::__c__DisplayClass42_0* self, + GameScenesManager::__c__DisplayClass47_0* self, Zenject::DiContainer* container ) { CheckInitialize(self->scenesTransitionSetupData); @@ -442,9 +443,9 @@ MAKE_AUTO_HOOK_MATCH( // track when gameplay scenes are removed MAKE_AUTO_HOOK_MATCH( GameScenesManager_PopScenes_Delegate, - &GameScenesManager::__c__DisplayClass41_0::_PopScenes_b__0, + &GameScenesManager::__c__DisplayClass45_0::_PopScenes_b__0, void, - GameScenesManager::__c__DisplayClass41_0* self, + GameScenesManager::__c__DisplayClass45_0* self, Zenject::DiContainer* container ) { CheckSceneFinish(); @@ -455,9 +456,9 @@ MAKE_AUTO_HOOK_MATCH( // track when gameplay scenes are replaced for level restarts MAKE_AUTO_HOOK_MATCH( GameScenesManager_ReplaceScenes_Delegate_AfterUnload, - &GameScenesManager::__c__DisplayClass42_0::_ReplaceScenes_b__0, + &GameScenesManager::__c__DisplayClass47_0::_ReplaceScenes_b__0, void, - GameScenesManager::__c__DisplayClass42_0* self, + GameScenesManager::__c__DisplayClass47_0* self, Zenject::DiContainer* container ) { CheckSceneFinish(); diff --git a/src/songs.cpp b/src/songs.cpp index 874f7ed..03d89e5 100644 --- a/src/songs.cpp +++ b/src/songs.cpp @@ -91,8 +91,8 @@ void MetaCore::Songs::GetSongCover(BeatmapLevel* beatmap, std::function StringW conversions -static BeatmapLevel* FindLevelInternal(StringW levelId) { - return MetaCore::Game::GetAppDiContainer()->Resolve()->GetBeatmapLevel(levelId); +static BeatmapLevel* FindLevelInternal(StringW levelId, bool ignoreCase = false) { + return MetaCore::Game::GetAppDiContainer()->Resolve()->GetBeatmapLevel(levelId, ignoreCase); } BeatmapLevel* MetaCore::Songs::FindLevel(std::string levelId) { From cf5d3a083e959c3cdd3cb00dd6fb904065add6c7 Mon Sep 17 00:00:00 2001 From: Lillie <75392499+iLillie@users.noreply.github.com> Date: Fri, 12 Dec 2025 12:18:20 +0100 Subject: [PATCH 2/5] chore: update packageVersion --- mod.template.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod.template.json b/mod.template.json index 92925e4..c021d36 100644 --- a/mod.template.json +++ b/mod.template.json @@ -6,7 +6,7 @@ "author": "Metalit", "version": "${version}", "packageId": "com.beatgames.beatsaber", - "packageVersion": "1.40.8_7379", + "packageVersion": "1.41.0_11623", "description": "Provides way too many utilities for mod developers", "dependencies": [], "modFiles": ["${binary}"], From 0501a535d646f6da3b87c911fdfb7ee4ec81f9f5 Mon Sep 17 00:00:00 2001 From: Lillie <75392499+iLillie@users.noreply.github.com> Date: Fri, 12 Dec 2025 12:20:11 +0100 Subject: [PATCH 3/5] chore: beatsaber-hook update to 7.4.0 --- qpm.json | 2 +- qpm.shared.json | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/qpm.json b/qpm.json index ead1671..070c92a 100644 --- a/qpm.json +++ b/qpm.json @@ -50,7 +50,7 @@ "dependencies": [ { "id": "beatsaber-hook", - "versionRange": "^7.3.0", + "versionRange": "^7.4.0", "additionalData": {} }, { diff --git a/qpm.shared.json b/qpm.shared.json index afefc5c..dcfa52c 100644 --- a/qpm.shared.json +++ b/qpm.shared.json @@ -51,7 +51,7 @@ "dependencies": [ { "id": "beatsaber-hook", - "versionRange": "^7.3.0", + "versionRange": "^7.4.0", "additionalData": {} }, { @@ -213,12 +213,13 @@ { "dependency": { "id": "beatsaber-hook", - "versionRange": "=7.3.0", + "versionRange": "=7.4.0", "additionalData": { - "soLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v5.0.0/libbeatsaber-hook.so", - "debugSoLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v5.0.0/debug_libbeatsaber-hook.so", + "soLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v7.4.0/libbeatsaber-hook.so", + "debugSoLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v7.4.0/debug_libbeatsaber-hook.so", "overrideSoName": "libbeatsaber-hook.so", - "branchName": "master", + "modLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v7.4.0/beatsaber-hook.qmod", + "branchName": "version/v7_4_0", "compileOptions": { "cppFlags": [ "-Wno-extra-qualification" @@ -227,7 +228,7 @@ "cmake": true } }, - "version": "7.3.0" + "version": "7.4.0" }, { "dependency": { From 8d58e203a7368f60baaee49c472281e7e9d2a18c Mon Sep 17 00:00:00 2001 From: Lillie <75392499+iLillie@users.noreply.github.com> Date: Fri, 12 Dec 2025 21:29:14 +0100 Subject: [PATCH 4/5] chore: qpm restore --- qpm.shared.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/qpm.shared.json b/qpm.shared.json index dcfa52c..8be99a4 100644 --- a/qpm.shared.json +++ b/qpm.shared.json @@ -110,7 +110,11 @@ "id": "custom-types", "versionRange": "=0.19.0", "additionalData": { + "soLink": "https://github.com/QuestPackageManager/Il2CppQuestTypePatching/releases/download/v0.19.0/libcustom-types.so", + "debugSoLink": "https://github.com/QuestPackageManager/Il2CppQuestTypePatching/releases/download/v0.19.0/debug_libcustom-types.so", "overrideSoName": "libcustom-types.so", + "modLink": "https://github.com/QuestPackageManager/Il2CppQuestTypePatching/releases/download/v0.19.0/CustomTypes.qmod", + "branchName": "version/v0_19_0", "compileOptions": { "cppFlags": [ "-Wno-invalid-offsetof" From ce93e2bc31631cc85e73cc2011ec50cb89e33310 Mon Sep 17 00:00:00 2001 From: Lillie <75392499+iLillie@users.noreply.github.com> Date: Wed, 17 Dec 2025 23:56:42 +0100 Subject: [PATCH 5/5] fix dependencies restore --- qpm.json | 4 +-- qpm.shared.json | 67 +++++++++++++++++++++++++------------------------ 2 files changed, 36 insertions(+), 35 deletions(-) diff --git a/qpm.json b/qpm.json index 070c92a..72754cc 100644 --- a/qpm.json +++ b/qpm.json @@ -50,7 +50,7 @@ "dependencies": [ { "id": "beatsaber-hook", - "versionRange": "^7.4.0", + "versionRange": "=7.4.1", "additionalData": {} }, { @@ -72,7 +72,7 @@ }, { "id": "rapidjson-macros", - "versionRange": "^2.1.0", + "versionRange": "^3.0.0", "additionalData": {} }, { diff --git a/qpm.shared.json b/qpm.shared.json index 8be99a4..cc2fa01 100644 --- a/qpm.shared.json +++ b/qpm.shared.json @@ -51,7 +51,7 @@ "dependencies": [ { "id": "beatsaber-hook", - "versionRange": "^7.4.0", + "versionRange": "=7.4.1", "additionalData": {} }, { @@ -73,7 +73,7 @@ }, { "id": "rapidjson-macros", - "versionRange": "^2.1.0", + "versionRange": "^3.0.0", "additionalData": {} }, { @@ -125,32 +125,17 @@ }, "version": "0.19.0" }, - { - "dependency": { - "id": "libil2cpp", - "versionRange": "=0.5.0", - "additionalData": { - "headersOnly": true, - "compileOptions": { - "systemIncludes": [ - "il2cpp/external/baselib/Include", - "il2cpp/external/baselib/Platforms/Android/Include" - ] - } - } - }, - "version": "0.5.0" - }, { "dependency": { "id": "rapidjson-macros", - "versionRange": "=2.2.0", + "versionRange": "=3.0.0", "additionalData": { "headersOnly": true, + "branchName": "version/v3_0_0", "cmake": false } }, - "version": "2.2.0" + "version": "3.0.0" }, { "dependency": { @@ -195,6 +180,19 @@ }, "version": "4.7.0" }, + { + "dependency": { + "id": "scotland2", + "versionRange": "=0.1.7", + "additionalData": { + "soLink": "https://github.com/sc2ad/scotland2/releases/download/v0.1.7/libsl2.so", + "debugSoLink": "https://github.com/sc2ad/scotland2/releases/download/v0.1.7/debug_libsl2.so", + "overrideSoName": "libsl2.so", + "branchName": "version/v0_1_7" + } + }, + "version": "0.1.7" + }, { "dependency": { "id": "fmt", @@ -217,13 +215,13 @@ { "dependency": { "id": "beatsaber-hook", - "versionRange": "=7.4.0", + "versionRange": "=7.4.1", "additionalData": { - "soLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v7.4.0/libbeatsaber-hook.so", - "debugSoLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v7.4.0/debug_libbeatsaber-hook.so", + "soLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v7.4.1/libbeatsaber-hook.so", + "debugSoLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v7.4.1/debug_libbeatsaber-hook.so", "overrideSoName": "libbeatsaber-hook.so", - "modLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v7.4.0/beatsaber-hook.qmod", - "branchName": "version/v7_4_0", + "modLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v7.4.1/beatsaber-hook.qmod", + "branchName": "version/v7_4_1", "compileOptions": { "cppFlags": [ "-Wno-extra-qualification" @@ -232,7 +230,7 @@ "cmake": true } }, - "version": "7.4.0" + "version": "7.4.1" }, { "dependency": { @@ -251,16 +249,19 @@ }, { "dependency": { - "id": "scotland2", - "versionRange": "=0.1.6", + "id": "libil2cpp", + "versionRange": "=0.5.0", "additionalData": { - "soLink": "https://github.com/sc2ad/scotland2/releases/download/v0.1.6/libsl2.so", - "debugSoLink": "https://github.com/sc2ad/scotland2/releases/download/v0.1.6/debug_libsl2.so", - "overrideSoName": "libsl2.so", - "branchName": "version/v0_1_6" + "headersOnly": true, + "compileOptions": { + "systemIncludes": [ + "il2cpp/external/baselib/Include", + "il2cpp/external/baselib/Platforms/Android/Include" + ] + } } }, - "version": "0.1.6" + "version": "0.5.0" }, { "dependency": {