From a8e0553e53532fe83913f12c7a1a80edbd083dff Mon Sep 17 00:00:00 2001 From: NotAKidoS <37721153+NotAKidoS@users.noreply.github.com> Date: Sat, 12 Apr 2025 02:41:43 -0500 Subject: [PATCH 1/7] [DoubleTapJumpToExitSeat] Initial push --- .../DoubleTapJumpToExitSeat.csproj | 6 + DoubleTapJumpToExitSeat/Main.cs | 103 ++++++++++++++++++ .../Properties/AssemblyInfo.cs | 32 ++++++ DoubleTapJumpToExitSeat/README.md | 14 +++ DoubleTapJumpToExitSeat/format.json | 23 ++++ 5 files changed, 178 insertions(+) create mode 100644 DoubleTapJumpToExitSeat/DoubleTapJumpToExitSeat.csproj create mode 100644 DoubleTapJumpToExitSeat/Main.cs create mode 100644 DoubleTapJumpToExitSeat/Properties/AssemblyInfo.cs create mode 100644 DoubleTapJumpToExitSeat/README.md create mode 100644 DoubleTapJumpToExitSeat/format.json diff --git a/DoubleTapJumpToExitSeat/DoubleTapJumpToExitSeat.csproj b/DoubleTapJumpToExitSeat/DoubleTapJumpToExitSeat.csproj new file mode 100644 index 0000000..5a8badc --- /dev/null +++ b/DoubleTapJumpToExitSeat/DoubleTapJumpToExitSeat.csproj @@ -0,0 +1,6 @@ + + + + YouAreMineNow + + diff --git a/DoubleTapJumpToExitSeat/Main.cs b/DoubleTapJumpToExitSeat/Main.cs new file mode 100644 index 0000000..91c268e --- /dev/null +++ b/DoubleTapJumpToExitSeat/Main.cs @@ -0,0 +1,103 @@ +using System.Reflection; +using ABI_RC.Core.InteractionSystem; +using ABI_RC.Core.Savior; +using ABI_RC.Systems.InputManagement; +using ABI_RC.Systems.Movement; +using HarmonyLib; +using MelonLoader; +using UnityEngine; + +namespace NAK.DoubleTapJumpToExitSeat; + +public class DoubleTapJumpToExitSeatMod : MelonMod +{ + #region Melon Preferences + + public static readonly MelonPreferences_Category Category = + MelonPreferences.CreateCategory(nameof(DoubleTapJumpToExitSeatMod)); + + public static readonly MelonPreferences_Entry EntryOnlyInVR = + Category.CreateEntry("only_in_vr", false, display_name: "Only In VR", description: "Should this behaviour only be active in VR?"); + + #endregion Melon Preferences + + #region Melon Events + + public override void OnInitializeMelon() + { + #region CVRSeat Patches + + HarmonyInstance.Patch( + typeof(CVRSeat).GetMethod(nameof(CVRSeat.Update), + BindingFlags.NonPublic | BindingFlags.Instance), + prefix: new HarmonyMethod(typeof(DoubleTapJumpToExitSeatMod).GetMethod(nameof(OnPreCVRSeatUpdate), + BindingFlags.NonPublic | BindingFlags.Static)) + ); + + #endregion CVRSeat Patches + + #region ViewManager Patches + + HarmonyInstance.Patch( + typeof(ViewManager).GetMethod(nameof(ViewManager.Update), + BindingFlags.NonPublic | BindingFlags.Instance), + prefix: new HarmonyMethod(typeof(DoubleTapJumpToExitSeatMod).GetMethod(nameof(OnPreViewManagerUpdate), + BindingFlags.NonPublic | BindingFlags.Static)), + postfix: new HarmonyMethod(typeof(DoubleTapJumpToExitSeatMod).GetMethod(nameof(OnPostViewManagerUpdate), + BindingFlags.NonPublic | BindingFlags.Static)) + ); + + #endregion ViewManager Patches + } + + #endregion Melon Events + + #region Harmony Patches + + private static float lastJumpTime = -1f; + private static bool wasJumping; + + private static bool OnPreCVRSeatUpdate(CVRSeat __instance) + { + if (!__instance.occupied) return false; + + // Crazy? + bool jumped = CVRInputManager.Instance.jump; + bool justJumped = jumped && !wasJumping; + wasJumping = jumped; + if (justJumped && (!EntryOnlyInVR.Value || MetaPort.Instance.isUsingVr)) + { + float t = Time.time; + if (t - lastJumpTime <= BetterBetterCharacterController.DoubleJumpFlightTimeOut) + { + lastJumpTime = -1f; + __instance.ExitSeat(); + return false; + } + lastJumpTime = t; + } + + // Double update this frame (this ensures Extrapolate / Every Frame Updated objects are seated correctly) + if (__instance.vrSitPosition.position != __instance._lastPosition || __instance.vrSitPosition.rotation != __instance._lastRotation) + __instance.MovePlayerToSeat(__instance.vrSitPositionReady ? __instance.vrSitPosition : __instance.transform); + + // Steal sync + if (__instance.lockControls) + { + if (__instance._spawnable != null) __instance._spawnable.ForceUpdate(4); + if (__instance._objectSync != null) __instance._objectSync.ForceUpdate(4); + } + + return false; // don't call original method + } + + // ReSharper disable once RedundantAssignment + private static void OnPreViewManagerUpdate(ref bool __state) + => (__state, BetterBetterCharacterController.Instance._isSitting) + = (BetterBetterCharacterController.Instance._isSitting, false); + + private static void OnPostViewManagerUpdate(ref bool __state) + => BetterBetterCharacterController.Instance._isSitting = __state; + + #endregion Harmony Patches +} \ No newline at end of file diff --git a/DoubleTapJumpToExitSeat/Properties/AssemblyInfo.cs b/DoubleTapJumpToExitSeat/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..fd30036 --- /dev/null +++ b/DoubleTapJumpToExitSeat/Properties/AssemblyInfo.cs @@ -0,0 +1,32 @@ +using MelonLoader; +using NAK.DoubleTapJumpToExitSeat.Properties; +using System.Reflection; + +[assembly: AssemblyVersion(AssemblyInfoParams.Version)] +[assembly: AssemblyFileVersion(AssemblyInfoParams.Version)] +[assembly: AssemblyInformationalVersion(AssemblyInfoParams.Version)] +[assembly: AssemblyTitle(nameof(NAK.DoubleTapJumpToExitSeat))] +[assembly: AssemblyCompany(AssemblyInfoParams.Author)] +[assembly: AssemblyProduct(nameof(NAK.DoubleTapJumpToExitSeat))] + +[assembly: MelonInfo( + typeof(NAK.DoubleTapJumpToExitSeat.DoubleTapJumpToExitSeatMod), + nameof(NAK.DoubleTapJumpToExitSeat), + AssemblyInfoParams.Version, + AssemblyInfoParams.Author, + downloadLink: "https://github.com/NotAKidoS/NAK_CVR_Mods/tree/main/DoubleTapJumpToExitSeat" +)] + +[assembly: MelonGame("Alpha Blend Interactive", "ChilloutVR")] +[assembly: MelonPlatform(MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)] +[assembly: MelonPlatformDomain(MelonPlatformDomainAttribute.CompatibleDomains.MONO)] +[assembly: MelonColor(255, 246, 25, 99)] // red-pink +[assembly: MelonAuthorColor(255, 158, 21, 32)] // red +[assembly: HarmonyDontPatchAll] + +namespace NAK.DoubleTapJumpToExitSeat.Properties; +internal static class AssemblyInfoParams +{ + public const string Version = "1.0.0"; + public const string Author = "NotAKidoS"; +} \ No newline at end of file diff --git a/DoubleTapJumpToExitSeat/README.md b/DoubleTapJumpToExitSeat/README.md new file mode 100644 index 0000000..df6f722 --- /dev/null +++ b/DoubleTapJumpToExitSeat/README.md @@ -0,0 +1,14 @@ +# DoubleTapJumpToExitSeat + +Literally the mod name. + +--- + +Here is the block of text where I tell you this mod is not affiliated with or endorsed by ABI. +https://documentation.abinteractive.net/official/legal/tos/#7-modding-our-games + +> This mod is an independent creation not affiliated with, supported by, or approved by Alpha Blend Interactive. + +> Use of this mod is done so at the user's own risk and the creator cannot be held responsible for any issues arising from its use. + +> To the best of my knowledge, I have adhered to the Modding Guidelines established by Alpha Blend Interactive. diff --git a/DoubleTapJumpToExitSeat/format.json b/DoubleTapJumpToExitSeat/format.json new file mode 100644 index 0000000..b7fa28e --- /dev/null +++ b/DoubleTapJumpToExitSeat/format.json @@ -0,0 +1,23 @@ +{ + "_id": -1, + "name": "DoubleTapJumpToExitSeat", + "modversion": "1.0.0", + "gameversion": "2025r179", + "loaderversion": "0.6.1", + "modtype": "Mod", + "author": "NotAKidoS", + "description": "Literally the mod name.", + "searchtags": [ + "double", + "jump", + "chair", + "seat" + ], + "requirements": [ + "None" + ], + "downloadlink": "https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r46/DoubleTapJumpToExitSeat.dll", + "sourcelink": "https://github.com/NotAKidoS/NAK_CVR_Mods/tree/main/DoubleTapJumpToExitSeat/", + "changelog": "- Initial Release", + "embedcolor": "#00FFFF" +} \ No newline at end of file From 8764339ac8b462dce73d2617df3260930455120e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 12 Apr 2025 07:41:58 +0000 Subject: [PATCH 2/7] [NAK_CVR_Mods] Update mod list in README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index cb01fcb..56402aa 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ | [ASTExtension](ASTExtension/README.md) | Extension mod for [Avatar Scale Tool](https://github.com/NotAKidoS/AvatarScaleTool): | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r46/ASTExtension.dll) | | [AvatarQueueSystemTweaks](AvatarQueueSystemTweaks/README.md) | Small tweaks to the Avatar Queue System. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r46/AvatarQueueSystemTweaks.dll) | | [CustomSpawnPoint](CustomSpawnPoint/README.md) | Replaces the unused Images button in the World Details page with a button to set a custom spawn point. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r46/CustomSpawnPoint.dll) | +| [DoubleTapJumpToExitSeat](DoubleTapJumpToExitSeat/README.md) | Literally the mod name. | No Download | | [FuckToes](FuckToes/README.md) | Prevents VRIK from autodetecting toes in HalfbodyIK. | No Download | | [KeepVelocityOnExitFlight](KeepVelocityOnExitFlight/README.md) | Keeps the player's velocity when exiting flight mode. Makes it possible to fling yourself like in Garry's Mod. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r46/KeepVelocityOnExitFlight.dll) | | [LazyPrune](LazyPrune/README.md) | Prevents loaded objects from immediately unloading on destruction. Should prevent needlessly unloading & reloading all avatars/props on world rejoin or GS reconnection. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r46/LazyPrune.dll) | From 89b8f19288aced61416e7b8ad3cf5ce9baa14c8d Mon Sep 17 00:00:00 2001 From: NotAKidoS <37721153+NotAKidoS@users.noreply.github.com> Date: Sat, 12 Apr 2025 03:33:10 -0500 Subject: [PATCH 3/7] [YouAreMyPropNowWeAreHavingSoftTacosLaterMod] added settingd --- .../Main.cs | 71 +++++++++++++++++-- 1 file changed, 64 insertions(+), 7 deletions(-) diff --git a/YouAreMyPropNowWeAreHavingSoftTacosLater/Main.cs b/YouAreMyPropNowWeAreHavingSoftTacosLater/Main.cs index 645f7c0..b4f22de 100644 --- a/YouAreMyPropNowWeAreHavingSoftTacosLater/Main.cs +++ b/YouAreMyPropNowWeAreHavingSoftTacosLater/Main.cs @@ -21,6 +21,25 @@ namespace NAK.YouAreMyPropNowWeAreHavingSoftTacosLater; public class YouAreMyPropNowWeAreHavingSoftTacosLaterMod : MelonMod { + #region Melon Preferences + + public static readonly MelonPreferences_Category Category = + MelonPreferences.CreateCategory(nameof(YouAreMyPropNowWeAreHavingSoftTacosLaterMod)); + + public static readonly MelonPreferences_Entry EntryTrackPickups = + Category.CreateEntry("track_pickups", true, display_name: "Track Pickups", description: "Should pickups be tracked?"); + + public static readonly MelonPreferences_Entry EntryTrackAttachments = + Category.CreateEntry("track_attachments", true, display_name: "Track Attachments", description: "Should attachments be tracked?"); + + public static readonly MelonPreferences_Entry EntryTrackSeats = + Category.CreateEntry("track_seats", true, display_name: "Track Seats", description: "Should seats be tracked?"); + + public static readonly MelonPreferences_Entry EntryOnlySpawnedByMe = + Category.CreateEntry("only_spawned_by_me", true, display_name: "Only Spawned By Me", description: "Should only props spawned by me be tracked?"); + + #endregion Melon Preferences + #region Melon Events public override void OnInitializeMelon() @@ -58,6 +77,24 @@ public class YouAreMyPropNowWeAreHavingSoftTacosLaterMod : MelonMod ); #endregion CVRAttachment Patches + + #region CVRSeat Patches + + HarmonyInstance.Patch( + typeof(CVRSeat).GetMethod(nameof(CVRSeat.SitDown), + BindingFlags.Public | BindingFlags.Instance), + postfix: new HarmonyMethod(typeof(YouAreMyPropNowWeAreHavingSoftTacosLaterMod).GetMethod(nameof(OnCVRSeatSitDown), + BindingFlags.NonPublic | BindingFlags.Static)) + ); + + HarmonyInstance.Patch( + typeof(CVRSeat).GetMethod(nameof(CVRSeat.ExitSeat), + BindingFlags.Public | BindingFlags.Instance), + postfix: new HarmonyMethod(typeof(YouAreMyPropNowWeAreHavingSoftTacosLaterMod).GetMethod(nameof(OnCVRSeatExitSeat), + BindingFlags.NonPublic | BindingFlags.Static)) + ); + + #endregion CVRSeat Patches #region CVRSyncHelper Patches @@ -129,26 +166,41 @@ public class YouAreMyPropNowWeAreHavingSoftTacosLaterMod : MelonMod private static void OnCVRPickupObjectOnGrab(CVRPickupObject __instance) { - if (!GetPropData(__instance.GetComponentInParent(true), out CVRSyncHelper.PropData propData)) return; + if (!EntryTrackPickups.Value) return; + if (!TryGetPropData(__instance.GetComponentInParent(true), out CVRSyncHelper.PropData propData)) return; if (!_heldPropData.Contains(propData)) _heldPropData.Add(propData); } private static void OnCVRPickupObjectOnDrop(CVRPickupObject __instance) { - if (!GetPropData(__instance.GetComponentInParent(true), out CVRSyncHelper.PropData propData)) return; + if (!TryGetPropData(__instance.GetComponentInParent(true), out CVRSyncHelper.PropData propData)) return; if (_heldPropData.Contains(propData)) _heldPropData.Remove(propData); } private static void OnCVRAttachmentAttachInternal(CVRAttachment __instance) { - if (!GetPropData(__instance.GetComponentInParent(true), out CVRSyncHelper.PropData propData)) return; + if (!EntryTrackAttachments.Value) return; + if (!TryGetPropData(__instance.GetComponentInParent(true), out CVRSyncHelper.PropData propData)) return; if (!_heldPropData.Contains(propData)) _heldPropData.Add(propData); } private static void OnCVRAttachmentDeAttach(CVRAttachment __instance) { if (!__instance._isAttached) return; // Can invoke DeAttach without being attached - if (!GetPropData(__instance.GetComponentInParent(true), out CVRSyncHelper.PropData propData)) return; + if (!TryGetPropData(__instance.GetComponentInParent(true), out CVRSyncHelper.PropData propData)) return; + if (_heldPropData.Contains(propData)) _heldPropData.Remove(propData); + } + + private static void OnCVRSeatSitDown(CVRSeat __instance) + { + if (!EntryTrackSeats.Value) return; + if (!TryGetPropData(__instance.GetComponentInParent(true), out CVRSyncHelper.PropData propData)) return; + if (!_heldPropData.Contains(propData)) _heldPropData.Add(propData); + } + + private static void OnCVRSeatExitSeat(CVRSeat __instance) + { + if (!TryGetPropData(__instance.GetComponentInParent(true), out CVRSyncHelper.PropData propData)) return; if (_heldPropData.Contains(propData)) _heldPropData.Remove(propData); } @@ -161,7 +213,7 @@ public class YouAreMyPropNowWeAreHavingSoftTacosLaterMod : MelonMod if (type != DownloadTask.ObjectType.Prop) return true; // Only care about props // toAttach is our instanceId, lets find the propData - if (!GetPropDataById(toAttach, out CVRSyncHelper.PropData newPropData)) return true; + if (!TryGetPropDataById(toAttach, out CVRSyncHelper.PropData newPropData)) return true; // Check if this is a prop we requested to spawn Vector3 identity = GetIdentityKeyFromPropData(newPropData); @@ -307,13 +359,18 @@ public class YouAreMyPropNowWeAreHavingSoftTacosLaterMod : MelonMod #region Util - private static bool GetPropData(CVRSpawnable spawnable, out CVRSyncHelper.PropData propData) + private static bool TryGetPropData(CVRSpawnable spawnable, out CVRSyncHelper.PropData propData) { if (spawnable == null) { propData = null; return false; } + if (EntryOnlySpawnedByMe.Value && !spawnable.IsMine()) + { + propData = null; + return false; + } foreach (CVRSyncHelper.PropData data in CVRSyncHelper.Props) { if (data.InstanceId != spawnable.instanceId) continue; @@ -324,7 +381,7 @@ public class YouAreMyPropNowWeAreHavingSoftTacosLaterMod : MelonMod return false; } - private static bool GetPropDataById(string instanceId, out CVRSyncHelper.PropData propData) + private static bool TryGetPropDataById(string instanceId, out CVRSyncHelper.PropData propData) { foreach (CVRSyncHelper.PropData data in CVRSyncHelper.Props) { From 1f99312c22024bc15f405a674649171d82b4203d Mon Sep 17 00:00:00 2001 From: NotAKidoS <37721153+NotAKidoS@users.noreply.github.com> Date: Sat, 12 Apr 2025 04:05:48 -0500 Subject: [PATCH 4/7] [WindowFocusCheckFix] iniyial push --- WindowFocusCheckFix/Main.cs | 39 +++++++++++++++++++ .../Properties/AssemblyInfo.cs | 32 +++++++++++++++ WindowFocusCheckFix/README.md | 14 +++++++ .../WindowFocusCheckFix.csproj | 6 +++ WindowFocusCheckFix/format.json | 23 +++++++++++ 5 files changed, 114 insertions(+) create mode 100644 WindowFocusCheckFix/Main.cs create mode 100644 WindowFocusCheckFix/Properties/AssemblyInfo.cs create mode 100644 WindowFocusCheckFix/README.md create mode 100644 WindowFocusCheckFix/WindowFocusCheckFix.csproj create mode 100644 WindowFocusCheckFix/format.json diff --git a/WindowFocusCheckFix/Main.cs b/WindowFocusCheckFix/Main.cs new file mode 100644 index 0000000..24d5de5 --- /dev/null +++ b/WindowFocusCheckFix/Main.cs @@ -0,0 +1,39 @@ +using System.Reflection; +using ABI_RC.Core; +using HarmonyLib; +using MelonLoader; +using UnityEngine; + +namespace NAK.WindowFocusCheckFix; + +public class WindowFocusCheckFixMod : MelonMod +{ + #region Melon Events + + public override void OnInitializeMelon() + { + #region WindowFocusManager Patches + + HarmonyInstance.Patch( + typeof(WindowFocusManager).GetMethod(nameof(WindowFocusManager.IsWindowFocused), + BindingFlags.NonPublic | BindingFlags.Static), + prefix: new HarmonyMethod(typeof(WindowFocusCheckFixMod).GetMethod(nameof(OnPreWindowFocusManagerIsWindowFocused), + BindingFlags.NonPublic | BindingFlags.Static)) + ); + + #endregion WindowFocusManager Patches + } + + #endregion Melon Events + + #region Harmony Patches + + // ReSharper disable once RedundantAssignment + private static bool OnPreWindowFocusManagerIsWindowFocused(ref bool __result) + { + __result = Application.isFocused; // use Unity method instead + return false; + } + + #endregion Harmony Patches +} \ No newline at end of file diff --git a/WindowFocusCheckFix/Properties/AssemblyInfo.cs b/WindowFocusCheckFix/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1f95200 --- /dev/null +++ b/WindowFocusCheckFix/Properties/AssemblyInfo.cs @@ -0,0 +1,32 @@ +using MelonLoader; +using NAK.WindowFocusCheckFix.Properties; +using System.Reflection; + +[assembly: AssemblyVersion(AssemblyInfoParams.Version)] +[assembly: AssemblyFileVersion(AssemblyInfoParams.Version)] +[assembly: AssemblyInformationalVersion(AssemblyInfoParams.Version)] +[assembly: AssemblyTitle(nameof(NAK.WindowFocusCheckFix))] +[assembly: AssemblyCompany(AssemblyInfoParams.Author)] +[assembly: AssemblyProduct(nameof(NAK.WindowFocusCheckFix))] + +[assembly: MelonInfo( + typeof(NAK.WindowFocusCheckFix.WindowFocusCheckFixMod), + nameof(NAK.WindowFocusCheckFix), + AssemblyInfoParams.Version, + AssemblyInfoParams.Author, + downloadLink: "https://github.com/NotAKidoS/NAK_CVR_Mods/tree/main/WindowFocusCheckFix" +)] + +[assembly: MelonGame("Alpha Blend Interactive", "ChilloutVR")] +[assembly: MelonPlatform(MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)] +[assembly: MelonPlatformDomain(MelonPlatformDomainAttribute.CompatibleDomains.MONO)] +[assembly: MelonColor(255, 246, 25, 99)] // red-pink +[assembly: MelonAuthorColor(255, 158, 21, 32)] // red +[assembly: HarmonyDontPatchAll] + +namespace NAK.WindowFocusCheckFix.Properties; +internal static class AssemblyInfoParams +{ + public const string Version = "1.0.0"; + public const string Author = "NotAKidoS"; +} \ No newline at end of file diff --git a/WindowFocusCheckFix/README.md b/WindowFocusCheckFix/README.md new file mode 100644 index 0000000..5c2dbe0 --- /dev/null +++ b/WindowFocusCheckFix/README.md @@ -0,0 +1,14 @@ +# WindowFocusCheckFix + +Fixes window focus check on specific Linux distribution. ????!??!?! + +--- + +Here is the block of text where I tell you this mod is not affiliated with or endorsed by ABI. +https://documentation.abinteractive.net/official/legal/tos/#7-modding-our-games + +> This mod is an independent creation not affiliated with, supported by, or approved by Alpha Blend Interactive. + +> Use of this mod is done so at the user's own risk and the creator cannot be held responsible for any issues arising from its use. + +> To the best of my knowledge, I have adhered to the Modding Guidelines established by Alpha Blend Interactive. diff --git a/WindowFocusCheckFix/WindowFocusCheckFix.csproj b/WindowFocusCheckFix/WindowFocusCheckFix.csproj new file mode 100644 index 0000000..5a8badc --- /dev/null +++ b/WindowFocusCheckFix/WindowFocusCheckFix.csproj @@ -0,0 +1,6 @@ + + + + YouAreMineNow + + diff --git a/WindowFocusCheckFix/format.json b/WindowFocusCheckFix/format.json new file mode 100644 index 0000000..9fe9458 --- /dev/null +++ b/WindowFocusCheckFix/format.json @@ -0,0 +1,23 @@ +{ + "_id": -1, + "name": "WindowFocusCheckFix", + "modversion": "1.0.0", + "gameversion": "2025r179", + "loaderversion": "0.6.1", + "modtype": "Mod", + "author": "NotAKidoS", + "description": "Fixes window focus check on specific Linux distribution. ????!??!?!\n", + "searchtags": [ + "prop", + "spawn", + "friend", + "load" + ], + "requirements": [ + "None" + ], + "downloadlink": "https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r46/WindowFocusCheckFix.dll", + "sourcelink": "https://github.com/NotAKidoS/NAK_CVR_Mods/tree/main/WindowFocusCheckFix/", + "changelog": "- Initial Release", + "embedcolor": "#00FFFF" +} \ No newline at end of file From 446a89f35d0643dcb66e486d7ddbb3fe26f75fab Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 12 Apr 2025 09:06:01 +0000 Subject: [PATCH 5/7] [NAK_CVR_Mods] Update mod list in README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 56402aa..77e26db 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ | [SmootherRay](SmootherRay/README.md) | Smoothes your controller while the raycast lines are visible. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r46/SmootherRay.dll) | | [Stickers](Stickers/README.md) | Stickers! Allows you to place small images on any surface. Requires both users to have the mod installed. Synced over Mod Network. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r46/Stickers.dll) | | [ThirdPerson](ThirdPerson/README.md) | Original repo: https://github.com/oestradiol/CVR-Mods | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r46/ThirdPerson.dll) | +| [WindowFocusCheckFix](WindowFocusCheckFix/README.md) | Fixes window focus check on specific Linux distribution. ????!??!?! | No Download | | [YouAreMyPropNowWeAreHavingSoftTacosLater](YouAreMyPropNowWeAreHavingSoftTacosLater/README.md) | Lets you bring held & attached props through world loads. | No Download | ### Experimental Mods From 1f8435edb9fe4f5245b5f13d0437e5b0aa26c38f Mon Sep 17 00:00:00 2001 From: NotAKidoS <37721153+NotAKidoS@users.noreply.github.com> Date: Sat, 12 Apr 2025 04:29:25 -0500 Subject: [PATCH 6/7] nvm --- WindowFocusCheckFix/Main.cs | 39 ------------------- .../Properties/AssemblyInfo.cs | 32 --------------- WindowFocusCheckFix/README.md | 14 ------- .../WindowFocusCheckFix.csproj | 6 --- WindowFocusCheckFix/format.json | 23 ----------- 5 files changed, 114 deletions(-) delete mode 100644 WindowFocusCheckFix/Main.cs delete mode 100644 WindowFocusCheckFix/Properties/AssemblyInfo.cs delete mode 100644 WindowFocusCheckFix/README.md delete mode 100644 WindowFocusCheckFix/WindowFocusCheckFix.csproj delete mode 100644 WindowFocusCheckFix/format.json diff --git a/WindowFocusCheckFix/Main.cs b/WindowFocusCheckFix/Main.cs deleted file mode 100644 index 24d5de5..0000000 --- a/WindowFocusCheckFix/Main.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System.Reflection; -using ABI_RC.Core; -using HarmonyLib; -using MelonLoader; -using UnityEngine; - -namespace NAK.WindowFocusCheckFix; - -public class WindowFocusCheckFixMod : MelonMod -{ - #region Melon Events - - public override void OnInitializeMelon() - { - #region WindowFocusManager Patches - - HarmonyInstance.Patch( - typeof(WindowFocusManager).GetMethod(nameof(WindowFocusManager.IsWindowFocused), - BindingFlags.NonPublic | BindingFlags.Static), - prefix: new HarmonyMethod(typeof(WindowFocusCheckFixMod).GetMethod(nameof(OnPreWindowFocusManagerIsWindowFocused), - BindingFlags.NonPublic | BindingFlags.Static)) - ); - - #endregion WindowFocusManager Patches - } - - #endregion Melon Events - - #region Harmony Patches - - // ReSharper disable once RedundantAssignment - private static bool OnPreWindowFocusManagerIsWindowFocused(ref bool __result) - { - __result = Application.isFocused; // use Unity method instead - return false; - } - - #endregion Harmony Patches -} \ No newline at end of file diff --git a/WindowFocusCheckFix/Properties/AssemblyInfo.cs b/WindowFocusCheckFix/Properties/AssemblyInfo.cs deleted file mode 100644 index 1f95200..0000000 --- a/WindowFocusCheckFix/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,32 +0,0 @@ -using MelonLoader; -using NAK.WindowFocusCheckFix.Properties; -using System.Reflection; - -[assembly: AssemblyVersion(AssemblyInfoParams.Version)] -[assembly: AssemblyFileVersion(AssemblyInfoParams.Version)] -[assembly: AssemblyInformationalVersion(AssemblyInfoParams.Version)] -[assembly: AssemblyTitle(nameof(NAK.WindowFocusCheckFix))] -[assembly: AssemblyCompany(AssemblyInfoParams.Author)] -[assembly: AssemblyProduct(nameof(NAK.WindowFocusCheckFix))] - -[assembly: MelonInfo( - typeof(NAK.WindowFocusCheckFix.WindowFocusCheckFixMod), - nameof(NAK.WindowFocusCheckFix), - AssemblyInfoParams.Version, - AssemblyInfoParams.Author, - downloadLink: "https://github.com/NotAKidoS/NAK_CVR_Mods/tree/main/WindowFocusCheckFix" -)] - -[assembly: MelonGame("Alpha Blend Interactive", "ChilloutVR")] -[assembly: MelonPlatform(MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)] -[assembly: MelonPlatformDomain(MelonPlatformDomainAttribute.CompatibleDomains.MONO)] -[assembly: MelonColor(255, 246, 25, 99)] // red-pink -[assembly: MelonAuthorColor(255, 158, 21, 32)] // red -[assembly: HarmonyDontPatchAll] - -namespace NAK.WindowFocusCheckFix.Properties; -internal static class AssemblyInfoParams -{ - public const string Version = "1.0.0"; - public const string Author = "NotAKidoS"; -} \ No newline at end of file diff --git a/WindowFocusCheckFix/README.md b/WindowFocusCheckFix/README.md deleted file mode 100644 index 5c2dbe0..0000000 --- a/WindowFocusCheckFix/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# WindowFocusCheckFix - -Fixes window focus check on specific Linux distribution. ????!??!?! - ---- - -Here is the block of text where I tell you this mod is not affiliated with or endorsed by ABI. -https://documentation.abinteractive.net/official/legal/tos/#7-modding-our-games - -> This mod is an independent creation not affiliated with, supported by, or approved by Alpha Blend Interactive. - -> Use of this mod is done so at the user's own risk and the creator cannot be held responsible for any issues arising from its use. - -> To the best of my knowledge, I have adhered to the Modding Guidelines established by Alpha Blend Interactive. diff --git a/WindowFocusCheckFix/WindowFocusCheckFix.csproj b/WindowFocusCheckFix/WindowFocusCheckFix.csproj deleted file mode 100644 index 5a8badc..0000000 --- a/WindowFocusCheckFix/WindowFocusCheckFix.csproj +++ /dev/null @@ -1,6 +0,0 @@ - - - - YouAreMineNow - - diff --git a/WindowFocusCheckFix/format.json b/WindowFocusCheckFix/format.json deleted file mode 100644 index 9fe9458..0000000 --- a/WindowFocusCheckFix/format.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "_id": -1, - "name": "WindowFocusCheckFix", - "modversion": "1.0.0", - "gameversion": "2025r179", - "loaderversion": "0.6.1", - "modtype": "Mod", - "author": "NotAKidoS", - "description": "Fixes window focus check on specific Linux distribution. ????!??!?!\n", - "searchtags": [ - "prop", - "spawn", - "friend", - "load" - ], - "requirements": [ - "None" - ], - "downloadlink": "https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r46/WindowFocusCheckFix.dll", - "sourcelink": "https://github.com/NotAKidoS/NAK_CVR_Mods/tree/main/WindowFocusCheckFix/", - "changelog": "- Initial Release", - "embedcolor": "#00FFFF" -} \ No newline at end of file From 8ad74b5ef66bfe74c60fce715f7e046ac98dc00b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 12 Apr 2025 09:29:46 +0000 Subject: [PATCH 7/7] [NAK_CVR_Mods] Update mod list in README --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 77e26db..56402aa 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,6 @@ | [SmootherRay](SmootherRay/README.md) | Smoothes your controller while the raycast lines are visible. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r46/SmootherRay.dll) | | [Stickers](Stickers/README.md) | Stickers! Allows you to place small images on any surface. Requires both users to have the mod installed. Synced over Mod Network. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r46/Stickers.dll) | | [ThirdPerson](ThirdPerson/README.md) | Original repo: https://github.com/oestradiol/CVR-Mods | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r46/ThirdPerson.dll) | -| [WindowFocusCheckFix](WindowFocusCheckFix/README.md) | Fixes window focus check on specific Linux distribution. ????!??!?! | No Download | | [YouAreMyPropNowWeAreHavingSoftTacosLater](YouAreMyPropNowWeAreHavingSoftTacosLater/README.md) | Lets you bring held & attached props through world loads. | No Download | ### Experimental Mods