diff --git a/qpm.json b/qpm.json index 6b22f7f..baa0fec 100644 --- a/qpm.json +++ b/qpm.json @@ -80,8 +80,8 @@ }, { "id": "beatsaber-hook", - "versionRange": "^9.0.0", + "versionRange": "^9.3.0", "additionalData": {} } ] -} \ No newline at end of file +} diff --git a/qpm.shared.json b/qpm.shared.json index fbd41df..84ba0ee 100644 --- a/qpm.shared.json +++ b/qpm.shared.json @@ -81,7 +81,7 @@ }, { "id": "beatsaber-hook", - "versionRange": "^9.0.0", + "versionRange": "^9.3.0", "additionalData": {} } ] @@ -153,13 +153,13 @@ { "dependency": { "id": "beatsaber-hook", - "versionRange": "=9.0.0", + "versionRange": "=9.3.0", "additionalData": { - "soLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v9.0.0/libbeatsaber-hook.so", - "debugSoLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v9.0.0/debug_libbeatsaber-hook.so", + "soLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v9.3.0/libbeatsaber-hook.so", + "debugSoLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v9.3.0/debug_libbeatsaber-hook.so", "overrideSoName": "libbeatsaber-hook.so", - "modLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v9.0.0/beatsaber-hook.qmod", - "branchName": "version/v9_0_0", + "modLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v9.3.0/beatsaber-hook.qmod", + "branchName": "version/v9_3_0", "compileOptions": { "cppFlags": [ "-Wno-extra-qualification" @@ -168,7 +168,7 @@ "cmake": true } }, - "version": "9.0.0" + "version": "9.3.0" }, { "dependency": { diff --git a/src/register.cpp b/src/register.cpp index a7963e2..93573a2 100644 --- a/src/register.cpp +++ b/src/register.cpp @@ -77,7 +77,11 @@ MAKE_HOOK(Type_GetClassOrElementClass, (nullptr), Il2CppClass*, Il2CppType* type return i2c::functions::Class_FromIl2CppType(type); } +#ifdef UNITY_6 +MAKE_HOOK(Class_Init, (nullptr), void, Il2CppClass* klass) { +#else MAKE_HOOK(Class_Init, (nullptr), bool, Il2CppClass* klass) { +#endif // If we are attempting to call Class::Init() on an Il2CppClass* that is a // custom Il2CppClass*, we need to ignore. if (!klass) { @@ -94,7 +98,11 @@ MAKE_HOOK(Class_Init, (nullptr), bool, Il2CppClass* klass) { #ifndef NO_VERBOSE_LOGS logger.debug("custom idx: {}", idx); #endif +#ifdef UNITY_6 + return; +#else return true; +#endif } } @@ -302,16 +310,26 @@ namespace custom_types { Paper::Logger::RegisterFileContextId(custom_types::logger.tag); logger.debug("Installing FromIl2CppType hook..."); +#ifdef UNITY_6 + i2c::install_hook>( + logger, (void*) i2c::functions::Class_FromIl2CppTypeNative + ); +#else if constexpr (sizeof(Il2CppCodeGenModule) < 104) { i2c::install_hook>(logger, (void*) i2c::functions::Class_FromIl2CppType); } else { i2c::install_hook>(logger, (void*) i2c::functions::Class_FromIl2CppType); } +#endif INSTALL_HOOK(logger, GlobalMetadata_GetTypeInfoFromHandle, (void*) i2c::functions::GlobalMetadata_GetTypeInfoFromHandle); INSTALL_HOOK( logger, GlobalMetadata_GetTypeInfoFromTypeDefinitionIndex, (void*) i2c::functions::GlobalMetadata_GetTypeInfoFromTypeDefinitionIndex ); +#ifdef UNITY_6 + INSTALL_HOOK(logger, Class_Init, (void*) i2c::functions::Class_InitNative); +#else INSTALL_HOOK(logger, Class_Init, (void*) i2c::functions::Class_Init); +#endif bool multiple; uintptr_t GetScriptingClassAddr = i2c::binary::libunity_unique_pattern(