private bool CheckVerifyLoaderVersionAttribute() { VerifyLoaderVersionAttribute verifyLoaderVersionAttribute = MelonUtils.PullAttributeFromAssembly <VerifyLoaderVersionAttribute>(Assembly); if (verifyLoaderVersionAttribute == null) { return(true); } if (CurrentMLVersion == null) { CurrentMLVersion = SemVersion.Parse(BuildInfo.Version); } bool is_acceptable = verifyLoaderVersionAttribute.IsMinimum ? (verifyLoaderVersionAttribute.SemVer <= CurrentMLVersion) : (verifyLoaderVersionAttribute.SemVer == CurrentMLVersion); if (!is_acceptable) { MelonLogger.Error($"Incompatible MelonLoader Version for {(is_plugin ? "Plugin" : "Mod")}: {FilePath}"); return(false); } return(true); }
private bool CheckVerifyLoaderVersionAttribute() { VerifyLoaderVersionAttribute verifyLoaderVersionAttribute = MelonUtils.PullAttributeFromAssembly <VerifyLoaderVersionAttribute>(Assembly); if (verifyLoaderVersionAttribute == null) { return(true); } if (CurrentMLVersionIntArr == null) { string[] versionArgs = BuildInfo.Version.Split('.'); CurrentMLVersionIntArr = new int[4]; CurrentMLVersionIntArr[0] = int.Parse(versionArgs[0]); CurrentMLVersionIntArr[1] = int.Parse(versionArgs[1]); CurrentMLVersionIntArr[2] = int.Parse(versionArgs[2]); CurrentMLVersionIntArr[3] = ((versionArgs.Length == 4) && !string.IsNullOrEmpty(versionArgs[3])) ? int.Parse(versionArgs[3]) : 0; } bool is_minimum = verifyLoaderVersionAttribute.IsMinimum; bool major_is_acceptable = is_minimum ? (verifyLoaderVersionAttribute.Major <= CurrentMLVersionIntArr[0]) : (verifyLoaderVersionAttribute.Major == CurrentMLVersionIntArr[0]); bool minor_is_acceptable = is_minimum ? (verifyLoaderVersionAttribute.Minor <= CurrentMLVersionIntArr[1]) : (verifyLoaderVersionAttribute.Minor == CurrentMLVersionIntArr[1]); bool patch_is_acceptable = is_minimum ? (verifyLoaderVersionAttribute.Patch <= CurrentMLVersionIntArr[2]) : (verifyLoaderVersionAttribute.Patch == CurrentMLVersionIntArr[2]); bool revision_is_acceptable = is_minimum ? (verifyLoaderVersionAttribute.Revision <= CurrentMLVersionIntArr[3]) : (verifyLoaderVersionAttribute.Revision == CurrentMLVersionIntArr[3]); if (!major_is_acceptable || !minor_is_acceptable || !patch_is_acceptable || !revision_is_acceptable) { MelonLogger.Error($"Incompatible MelonLoader Version for {(is_plugin ? "Plugin" : "Mod")}: {FilePath}"); return(false); } return(true); }