The BepInEx console will not appear when launching like it does for other games on Thunderstore (you can turn it back on in your BepInEx.cfg file). If your PEAK crashes on startup, add -dx12 to your launch parameters.
Decompiled source of PocketPassport v1.0.0
PEAK_PocketPassport.dll
Decompiled a month agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using PEAKLib.UI; using PEAKLib.UI.Elements; using UnityEngine; using UnityEngine.Events; using Zorro.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("PEAK_PocketPassport\u200b")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("PEAK_PocketPassport\u200b")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("77d850cd-e943-4d4b-9a01-a02cdd35b827")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Peak_PocketPassport; [BepInPlugin("com.Xiaohai.PocketPassport", "PocketPassport\u200b", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { [HarmonyPatch] private static class Patch { private static bool setParent; private static PauseMenuMainPage back; [HarmonyPatch(typeof(PauseMenuMainPage), "OnEnable")] [HarmonyPostfix] private static void PauseMenuMainPage_OnEnablePatch(PauseMenuMainPage __instance) { if ((Object)(object)back == (Object)null) { setParent = false; } if (!setParent) { Instance.closePage = delegate { __instance.OnResumeClicked(); }; try { __instance.OnSettingsClicked(); } catch { } back = __instance; } } [HarmonyPatch(typeof(PauseMenuSettingsMenuPage), "Start")] [HarmonyPostfix] private static void PauseMenuSettingsMenuPage_StartPatch(PauseMenuSettingsMenuPage __instance) { if (setParent) { return; } Transform val = ((Component)__instance).gameObject.transform.Find("UI_MainMenuButton_PASSEPORT"); if ((Object)(object)val != (Object)null) { logger.LogInfo((object)"已经成功找到UI_MainMenuButton_PASSEPORT!"); Transform val2 = ((Component)__instance).gameObject.transform.parent.Find("MainPage/MainPage/Options"); if ((Object)(object)val2 != (Object)null) { val.SetParent(val2); Transform val3 = val.parent.Find("UI_MainMenuButton_LeaveGame"); int siblingIndex = val.GetSiblingIndex(); int siblingIndex2 = val3.GetSiblingIndex(); val.SetSiblingIndex(siblingIndex2); val3.SetSiblingIndex(siblingIndex); logger.LogInfo((object)"已经成功设置父对象!"); setParent = true; __instance.BackClicked(); } else { logger.LogError((object)"没有找到Options!!!"); } } else { logger.LogError((object)"没有找到UI_MainMenuButton_PASSEPORT!"); } } } public const string PLUGIN_GUID = "com.Xiaohai.PocketPassport"; public const string PLUGIN_NAME = "PocketPassport\u200b"; public const string PLUGIN_VERSION = "1.0.0"; public Action closePage; public static Plugin Instance { get; private set; } public static ManualLogSource logger => ((BaseUnityPlugin)Instance).Logger; private void Awake() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) Instance = this; ((BaseUnityPlugin)this).Logger.LogInfo((object)"已加载 PocketPassport\u200b v1.0.0"); new Harmony("com.Xiaohai.PocketPassport").PatchAll(); } private void Start() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown MenuAPI.AddToSettingsMenu(new BuilderDelegate(CreateButton)); } private void CreateButton(Transform parent) { //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Expected O, but got Unknown try { MainMenuPageHandler componentInParent = ((Component)parent).GetComponentInParent<MainMenuPageHandler>(); PauseMenuHandler componentInParent2 = ((Component)parent).GetComponentInParent<PauseMenuHandler>(); if ((Object)(object)componentInParent == (Object)null && (Object)(object)componentInParent2 == (Object)null) { throw new Exception("Failed to get a UIPageHandler"); } UIPage val = ((componentInParent != null) ? ((UIPageHandler)componentInParent).GetPage<MainMenuSettingsPage>() : null) ?? ((componentInParent2 != null) ? ((UIPageHandler)componentInParent2).GetPage<PauseMenuSettingsMenuPage>() : null); if ((Object)(object)val == (Object)null) { throw new Exception("Failed to get the parent settings page"); } TranslationKey val2 = MenuAPI.CreateLocalization("PASSEPORT").AddLocalization("PASSEPORT", (Language)0).AddLocalization("PASSEPORT", (Language)1) .AddLocalization("PASSAPORTO", (Language)2) .AddLocalization("PASS", (Language)3) .AddLocalization("PASAPORTE", (Language)4) .AddLocalization("PASAPORTE", (Language)5) .AddLocalization("PASSAPORTE", (Language)6) .AddLocalization("ПАСПОРТ", (Language)7) .AddLocalization("ПАСПОРТ", (Language)8) .AddLocalization("护照", (Language)9) .AddLocalization("護照", (Language)10) .AddLocalization("パスポート", (Language)11) .AddLocalization("여권", (Language)12); PeakMenuButton val3 = ElementExtensions.SetPosition<PeakMenuButton>(ElementExtensions.ParentTo<PeakMenuButton>(ElementExtensions.SetLocalizationIndex<PeakMenuButton>(MenuAPI.CreatePauseMenuButton("PASSEPORT"), val2).SetColor(new Color(0.2f, 0.7f, 0.3f), true), parent), new Vector2(960f, 258f)).SetWidth(277f); if (val3 != null) { val3.OnClick((UnityAction)delegate { closePage(); PassportManager.instance.ToggleOpen(); }); } } catch (Exception arg) { ((BaseUnityPlugin)this).Logger.LogError((object)$"Failed to create button: {arg}"); } } }