Compare commits

...

9 commits

Author SHA1 Message Date
SDraw
9e31663969
Version bump, additional credits, late settings initialization
# Conflicts:
#	ml_vpc/Properties/AssemblyInfo.cs
2025-11-19 13:08:20 +03:00
kafeijao
84572273cf
ml_vpc: added options to use cookies from browsers and enable/disable the mod completely 2025-11-19 13:02:21 +03:00
SDraw
801b533187
Update for nightly game build from 17-11-2025 2025-11-19 12:57:27 +03:00
SDraw
5008e6a6ef
Merge pull request #2 from hanetzer/formatting-v2
Formatting 2: Electric Boogaloo
2025-11-03 00:15:23 +03:00
Hanz
a2d123290c not everything builds on debug configuration 2025-08-19 18:14:34 -05:00
Hanz
125d83f45c add copy command for non-windows platforms 2025-08-18 17:07:52 -05:00
Hanz
e6f27aad77 copy command only exists on windows 2025-08-18 17:07:52 -05:00
Hanz
84bd61c4e2 normalize line endings to crlf, remove bom, add editorconfig 2025-08-18 17:07:48 -05:00
Hanz
d80405d7c0 gitconfig should be gitattributes, my bad 2025-08-18 14:25:29 -05:00
75 changed files with 509 additions and 169 deletions

16
.editorconfig Normal file
View file

@ -0,0 +1,16 @@
root = true
[*]
charset = utf-8
end_of_line = crlf
indent_size = 4
indent_style = space
trim_trailing_whitespace = true
[*.csproj]
indent_size = 2
indent_style = space
[*.props]
indent_size = 2
indent_style = space

1
.gitattributes vendored Normal file
View file

@ -0,0 +1 @@
* text=auto eol=crlf

View file

@ -1 +0,0 @@
*.{cs,csproj,sln} text=auto eol=crlf

View file

@ -1,4 +1,4 @@
using ABI_RC.Core.EventSystem;
using ABI_RC.Core.EventSystem;
using ABI_RC.Core.InteractionSystem;
using ABI_RC.Core.Networking;
using ABI_RC.Core.Util;

View file

@ -1,4 +1,4 @@
using System.Reflection;
using System.Reflection;
[assembly: AssemblyTitle("AvatarChangeInfo")]
[assembly: AssemblyVersion("1.0.3")]

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ReferencePath>C:\Games\Steam\common\ChilloutVR\MelonLoader\;C:\Games\Steam\common\ChilloutVR\ChilloutVR_Data\Managed\</ReferencePath>

View file

@ -1,4 +1,4 @@
namespace ml_dht
namespace ml_dht
{
class DataParser
{

View file

@ -1,4 +1,4 @@
using ABI.CCK.Components;
using ABI.CCK.Components;
using ABI_RC.Core.Player;
using ABI_RC.Core.Player.EyeMovement;
using ABI_RC.Systems.IK;

View file

@ -1,4 +1,4 @@
using ABI.CCK.Components;
using ABI.CCK.Components;
using ABI_RC.Core.Player;
using ABI_RC.Core.Player.EyeMovement;
using ABI_RC.Systems.FaceTracking;

View file

@ -1,4 +1,4 @@
using System.IO;
using System.IO;
using System.IO.MemoryMappedFiles;
namespace ml_dht

View file

@ -1,4 +1,4 @@
[assembly: MelonLoader.MelonInfo(typeof(ml_dht.DesktopHeadTracking), "DesktopHeadTracking", "1.3.4", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonInfo(typeof(ml_dht.DesktopHeadTracking), "DesktopHeadTracking", "1.3.4", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]

View file

@ -1,4 +1,4 @@
using System;
using System;
using System.IO;
using System.Reflection;

View file

@ -1,4 +1,4 @@
using System;
using System;
using System.Runtime.InteropServices;
struct TrackingData

View file

@ -1,4 +1,4 @@
using ABI.CCK.Components;
using ABI.CCK.Components;
using ABI_RC.Core.Savior;
using ABI_RC.Core.UI;
using System.Reflection;

View file

@ -1,4 +1,4 @@
// Add own menu
// Add own menu
{
let l_block = document.createElement('div');
l_block.innerHTML = `

View file

@ -1,4 +1,4 @@
using ABI_RC.Core.UI;
using ABI_RC.Core.UI;
using UnityEngine;
namespace ml_drs

View file

@ -1,4 +1,4 @@
[assembly: MelonLoader.MelonInfo(typeof(ml_drs.DesktopReticleSwitch), "DesktopReticleSwitch", "1.0.1", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonInfo(typeof(ml_drs.DesktopReticleSwitch), "DesktopReticleSwitch", "1.0.1", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]

View file

@ -1,4 +1,4 @@
using ABI_RC.Core.EventSystem;
using ABI_RC.Core.EventSystem;
using ABI_RC.Core.IO;
using ABI_RC.Core.Networking;
using ABI_RC.Core.Util;

View file

@ -1,4 +1,4 @@
[assembly: MelonLoader.MelonInfo(typeof(ml_egn.ExtendedGameNotifications), "ExtendedGameNotifications", "1.0.3", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonInfo(typeof(ml_egn.ExtendedGameNotifications), "ExtendedGameNotifications", "1.0.3", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]

View file

@ -1,4 +1,4 @@
using ABI_RC.Core.InteractionSystem;
using ABI_RC.Core.InteractionSystem;
using ABI_RC.Core.Networking;
using ABI_RC.Core.Savior;
using ABI_RC.Core.UI;

View file

@ -1,4 +1,4 @@
using ABI.CCK.Scripts;
using ABI.CCK.Scripts;
using ABI_RC.Core.InteractionSystem;
using ABI_RC.Core.Player;
using ABI_RC.Core.Savior;

View file

@ -1,4 +1,4 @@
using System.Reflection;
using System.Reflection;
[assembly: AssemblyTitle("FourPointTracking")]
[assembly: AssemblyVersion("1.0.9")]

View file

@ -1,4 +1,4 @@
using System;
using System;
using System.IO;
using System.Reflection;

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ReferencePath>C:\Games\Steam\common\ChilloutVR\MelonLoader\;C:\Games\Steam\common\ChilloutVR\ChilloutVR_Data\Managed\</ReferencePath>

View file

@ -1,4 +1,4 @@
{
{
let l_block = document.createElement('div');
l_block.innerHTML = `
<div class ="settings-subcategory">

View file

@ -1,4 +1,4 @@
using ABI_RC.Core;
using ABI_RC.Core;
using System;
using System.Reflection;

View file

@ -1,4 +1,4 @@
using ABI.CCK.Components;
using ABI.CCK.Components;
using ABI_RC.Core.Player;
using System;
using System.Reflection;

View file

@ -1,4 +1,4 @@
using ABI_RC.Core.Player;
using ABI_RC.Core.Player;
using System.Collections;
namespace ml_gmf.Fixes

View file

@ -1,4 +1,4 @@
using ABI_RC.Systems.InputManagement;
using ABI_RC.Systems.InputManagement;
using ABI_RC.Systems.InputManagement.XR;
using System;
using System.Reflection;

View file

@ -1,4 +1,4 @@
namespace ml_gmf
namespace ml_gmf
{
public class GameMainFixes : MelonLoader.MelonMod
{

View file

@ -1,4 +1,4 @@
[assembly: MelonLoader.MelonInfo(typeof(ml_gmf.GameMainFixes), "GameMainFixes", "1.0.0", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonInfo(typeof(ml_gmf.GameMainFixes), "GameMainFixes", "1.0.0", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]

View file

@ -1,4 +1,4 @@
using ABI_RC.Core.UI;
using ABI_RC.Core.UI;
using DarkRift.Client;
using System.Reflection;

View file

@ -1,4 +1,4 @@
using System.Reflection;
using System.Reflection;
[assembly: AssemblyTitle("ServerConnectionInfo")]
[assembly: AssemblyVersion("1.0.2")]

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ReferencePath>C:\Games\Steam\common\ChilloutVR\MelonLoader\;C:\Games\Steam\common\ChilloutVR\ChilloutVR_Data\Managed\</ReferencePath>

View file

@ -1,4 +1,4 @@
using ABI_RC.Core;
using ABI_RC.Core;
using ABI_RC.Core.Player;
using ABI_RC.Core.Player.EyeMovement;
using ABI_RC.Core.Savior;

View file

@ -1,4 +1,4 @@
[assembly: MelonLoader.MelonInfo(typeof(ml_vet.ViveEyeTracking), "ViveEyeTracking", "1.0.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonInfo(typeof(ml_vet.ViveEyeTracking), "ViveEyeTracking", "1.0.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]

View file

@ -1,4 +1,4 @@
using System;
using System;
using System.IO;
using System.Reflection;

View file

@ -1,4 +1,4 @@
using ABI_RC.Core.InteractionSystem;
using ABI_RC.Core.InteractionSystem;
using System;
using System.Collections.Generic;

View file

@ -1,4 +1,4 @@
using ABI_RC.Core.Savior;
using ABI_RC.Core.Savior;
using ABI_RC.Core.UI;
using System.Reflection;

View file

@ -1,4 +1,4 @@
{
{
let l_block = document.createElement('div');
l_block.innerHTML = `
<div class ="settings-subcategory">

View file

@ -1,4 +1,4 @@
[assembly: MelonLoader.MelonInfo(typeof(ml_amt.AvatarMotionTweaker), "AvatarMotionTweaker", "1.5.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonInfo(typeof(ml_amt.AvatarMotionTweaker), "AvatarMotionTweaker", "1.5.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]

View file

@ -92,7 +92,8 @@
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" />
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition="$([MSBuild]::IsOSPlatform('Windows'))" />
<Exec Command="cp -f &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition=" '$(OS)' != 'Windows_NT' " />
</Target>
</Project>

View file

@ -1,4 +1,4 @@
[assembly: MelonLoader.MelonInfo(typeof(ml_asl.AvatarSyncedLook), "AvatarSyncedLook", "1.1.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonInfo(typeof(ml_asl.AvatarSyncedLook), "AvatarSyncedLook", "1.1.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]

View file

@ -69,7 +69,8 @@
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" />
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition="$([MSBuild]::IsOSPlatform('Windows'))" />
<Exec Command="cp -f &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition=" '$(OS)' != 'Windows_NT' " />
</Target>
</Project>

View file

@ -1,4 +1,4 @@
[assembly: MelonLoader.MelonInfo(typeof(ml_bft.BetterFingersTracking), "BetterFingersTracking", "1.1.3", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonInfo(typeof(ml_bft.BetterFingersTracking), "BetterFingersTracking", "1.1.3", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]

View file

@ -94,7 +94,8 @@
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" />
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition="$([MSBuild]::IsOSPlatform('Windows'))" />
<Exec Command="cp -f &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition=" '$(OS)' != 'Windows_NT' " />
</Target>
</Project>

View file

@ -29,7 +29,7 @@ namespace ml_lme
public override void ModuleAdded()
{
base.ModuleAdded();
base.InputEnabled = Settings.Enabled;
base.InputModuleEnabled = Settings.Enabled;
base.HapticFeedback = false;
m_inVR = Utils.IsInVR();
@ -159,7 +159,7 @@ namespace ml_lme
public override void UpdateInput()
{
if(base.InputEnabled)
if(base.InputModuleEnabled)
{
LeapParser.LeapData l_data = LeapManager.Instance.GetLatestData();
@ -360,7 +360,7 @@ namespace ml_lme
// Settings changes
void OnEnableChanged(bool p_state)
{
base.InputEnabled = p_state;
base.InputModuleEnabled = p_state;
m_handVisibleLeft &= p_state;
m_handVisibleRight &= p_state;

View file

@ -1,4 +1,4 @@
[assembly: MelonLoader.MelonInfo(typeof(ml_lme.LeapMotionExtension), "LeapMotionExtension", "1.6.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonInfo(typeof(ml_lme.LeapMotionExtension), "LeapMotionExtension", "1.6.3", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]

View file

@ -4,7 +4,7 @@
<TargetFramework>netstandard2.1</TargetFramework>
<Platforms>x64</Platforms>
<PackageId>LeapMotionExtension</PackageId>
<Version>1.6.2</Version>
<Version>1.6.3</Version>
<Authors>SDraw</Authors>
<Company>SDraw</Company>
<Product>LeapMotionExtension</Product>
@ -110,7 +110,8 @@
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" />
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition="$([MSBuild]::IsOSPlatform('Windows'))" />
<Exec Command="cp -f &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition=" '$(OS)' != 'Windows_NT' " />
</Target>
</Project>

View file

@ -1,4 +1,4 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.33214.272
@ -39,15 +39,19 @@ Global
{714806A3-E6FC-46F6-9D1D-89C77FEBAF06}.Debug|x64.ActiveCfg = Debug|x64
{714806A3-E6FC-46F6-9D1D-89C77FEBAF06}.Release|x64.ActiveCfg = Release|x64
{714806A3-E6FC-46F6-9D1D-89C77FEBAF06}.Release|x64.Build.0 = Release|x64
{714806A3-E6FC-46F6-9D1D-89C77FEBAF06}.Debug|x64.Build.0 = Debug|x64
{77EA76B1-3709-4FC5-BDBD-8F77160E6DA3}.Debug|x64.ActiveCfg = Debug|x64
{77EA76B1-3709-4FC5-BDBD-8F77160E6DA3}.Release|x64.ActiveCfg = Release|x64
{77EA76B1-3709-4FC5-BDBD-8F77160E6DA3}.Release|x64.Build.0 = Release|x64
{77EA76B1-3709-4FC5-BDBD-8F77160E6DA3}.Debug|x64.Build.0 = Debug|x64
{5B614459-234A-443D-B06D-34FF81ADA67E}.Debug|x64.ActiveCfg = Debug|x64
{5B614459-234A-443D-B06D-34FF81ADA67E}.Release|x64.ActiveCfg = Release|x64
{5B614459-234A-443D-B06D-34FF81ADA67E}.Release|x64.Build.0 = Release|x64
{5B614459-234A-443D-B06D-34FF81ADA67E}.Debug|x64.Build.0 = Debug|x64
{118675AA-9AC7-4B0C-BFB1-FA1691619502}.Debug|x64.ActiveCfg = Debug|x64
{118675AA-9AC7-4B0C-BFB1-FA1691619502}.Release|x64.ActiveCfg = Release|x64
{118675AA-9AC7-4B0C-BFB1-FA1691619502}.Release|x64.Build.0 = Release|x64
{118675AA-9AC7-4B0C-BFB1-FA1691619502}.Debug|x64.Build.0 = Debug|x64
{608CDBD6-8E29-43B7-BCBF-7E3967430A24}.Debug|x64.ActiveCfg = Debug|x64
{608CDBD6-8E29-43B7-BCBF-7E3967430A24}.Debug|x64.Build.0 = Debug|x64
{608CDBD6-8E29-43B7-BCBF-7E3967430A24}.Release|x64.ActiveCfg = Release|x64
@ -59,12 +63,15 @@ Global
{5B4EC6EF-541A-47D2-B602-915205590553}.Debug|x64.ActiveCfg = Debug|x64
{5B4EC6EF-541A-47D2-B602-915205590553}.Release|x64.ActiveCfg = Release|x64
{5B4EC6EF-541A-47D2-B602-915205590553}.Release|x64.Build.0 = Release|x64
{5B4EC6EF-541A-47D2-B602-915205590553}.Debug|x64.Build.0 = Debug|x64
{7E493C28-7202-46F8-9789-D6C6FF7E5241}.Debug|x64.ActiveCfg = Debug|x64
{7E493C28-7202-46F8-9789-D6C6FF7E5241}.Release|x64.ActiveCfg = Release|x64
{7E493C28-7202-46F8-9789-D6C6FF7E5241}.Release|x64.Build.0 = Release|x64
{7E493C28-7202-46F8-9789-D6C6FF7E5241}.Debug|x64.Build.0 = Debug|x64
{331C995D-9648-44AD-8B02-D5F3A89FDC1F}.Debug|x64.ActiveCfg = Debug|x64
{331C995D-9648-44AD-8B02-D5F3A89FDC1F}.Release|x64.ActiveCfg = Release|x64
{331C995D-9648-44AD-8B02-D5F3A89FDC1F}.Release|x64.Build.0 = Release|x64
{331C995D-9648-44AD-8B02-D5F3A89FDC1F}.Debug|x64.Build.0 = Debug|x64
{7CF37B93-9341-422D-845C-9AB96DB4D0A1}.Debug|x64.ActiveCfg = Debug|x64
{7CF37B93-9341-422D-845C-9AB96DB4D0A1}.Debug|x64.Build.0 = Debug|x64
{7CF37B93-9341-422D-845C-9AB96DB4D0A1}.Release|x64.ActiveCfg = Release|x64
@ -76,6 +83,7 @@ Global
{C4659F60-3FED-4F43-88E4-969907D4C7A6}.Debug|x64.ActiveCfg = Debug|x64
{C4659F60-3FED-4F43-88E4-969907D4C7A6}.Release|x64.ActiveCfg = Release|x64
{C4659F60-3FED-4F43-88E4-969907D4C7A6}.Release|x64.Build.0 = Release|x64
{C4659F60-3FED-4F43-88E4-969907D4C7A6}.Debug|x64.Build.0 = Debug|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View file

@ -1,4 +1,4 @@
[assembly: MelonLoader.MelonInfo(typeof(ml_pah.PlayerAvatarHistory), "PlayerAvatarHistory", "1.0.0", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonInfo(typeof(ml_pah.PlayerAvatarHistory), "PlayerAvatarHistory", "1.0.0", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]

View file

@ -54,7 +54,8 @@
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" />
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition="$([MSBuild]::IsOSPlatform('Windows'))" />
<Exec Command="cp -f &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition=" '$(OS)' != 'Windows_NT' " />
</Target>
</Project>

View file

@ -1,4 +1,4 @@
[assembly: MelonLoader.MelonInfo(typeof(ml_pam.PickupArmMovement), "PickupArmMovement", "1.2.3", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonInfo(typeof(ml_pam.PickupArmMovement), "PickupArmMovement", "1.2.3", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPriority(1)]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]

View file

@ -83,7 +83,8 @@
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" />
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition="$([MSBuild]::IsOSPlatform('Windows'))" />
<Exec Command="cp -f &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition=" '$(OS)' != 'Windows_NT' " />
</Target>
</Project>

View file

@ -1,4 +1,4 @@
[assembly: MelonLoader.MelonInfo(typeof(ml_pin.PlayersInstanceNotifier), "PlayersInstanceNotifier", "1.1.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonInfo(typeof(ml_pin.PlayersInstanceNotifier), "PlayersInstanceNotifier", "1.1.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]

View file

@ -86,7 +86,8 @@
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" />
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition="$([MSBuild]::IsOSPlatform('Windows'))" />
<Exec Command="cp -f &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition=" '$(OS)' != 'Windows_NT' " />
</Target>
</Project>

View file

@ -1,4 +1,4 @@
[assembly: MelonLoader.MelonInfo(typeof(ml_pmc.PlayerMovementCopycat), "PlayerMovementCopycat", "1.1.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonInfo(typeof(ml_pmc.PlayerMovementCopycat), "PlayerMovementCopycat", "1.1.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPriority(3)]
[assembly: MelonLoader.MelonAdditionalDependencies("BTKUILib")]

View file

@ -17,7 +17,8 @@
</PropertyGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" />
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition="$([MSBuild]::IsOSPlatform('Windows'))" />
<Exec Command="cp -f &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition=" '$(OS)' != 'Windows_NT' " />
</Target>
<ItemGroup>

View file

@ -1,4 +1,4 @@
[assembly: MelonLoader.MelonInfo(typeof(ml_ppu.PlayerPickUp), "PlayerPickUp", "1.0.1", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonInfo(typeof(ml_ppu.PlayerPickUp), "PlayerPickUp", "1.0.1", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonOptionalDependencies("PlayerRagdollMod")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]

View file

@ -75,7 +75,8 @@
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" />
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition="$([MSBuild]::IsOSPlatform('Windows'))" />
<Exec Command="cp -f &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition=" '$(OS)' != 'Windows_NT' " />
</Target>
</Project>

View file

@ -1,4 +1,4 @@
[assembly: MelonLoader.MelonInfo(typeof(ml_prm.PlayerRagdollMod), "PlayerRagdollMod", "1.2.4", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonInfo(typeof(ml_prm.PlayerRagdollMod), "PlayerRagdollMod", "1.2.4", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPriority(2)]
[assembly: MelonLoader.MelonAdditionalDependencies("BTKUILib")]

View file

@ -93,7 +93,8 @@
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" />
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition="$([MSBuild]::IsOSPlatform('Windows'))" />
<Exec Command="cp -f &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition=" '$(OS)' != 'Windows_NT' " />
</Target>
</Project>

View file

@ -1,4 +1,4 @@
[assembly: MelonLoader.MelonInfo(typeof(ml_vei.ViveExtendedInput), "ViveExtendedInput", "1.1.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonInfo(typeof(ml_vei.ViveExtendedInput), "ViveExtendedInput", "1.1.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]

View file

@ -78,7 +78,8 @@
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" />
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition="$([MSBuild]::IsOSPlatform('Windows'))" />
<Exec Command="cp -f &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition=" '$(OS)' != 'Windows_NT' " />
</Target>
</Project>

View file

@ -1,3 +1,4 @@
using System;
using ABI_RC.VideoPlayer;
using System.Reflection;
using System.IO;
@ -17,10 +18,59 @@ namespace ml_vpc
ms_cookiesPath = Path.Combine(MelonLoader.Utils.MelonEnvironment.UserDataDirectory, "cookies.txt");
}
public override void OnLateInitializeMelon()
{
Settings.Init();
}
static void OnGetYoutubeVideoMetaData_Prefix(ref string parameter)
{
if(File.Exists(ms_cookiesPath))
try
{
if (!Settings.Enabled)
return;
switch (Settings.Mode)
{
case Settings.CookieMode.File:
if (File.Exists(ms_cookiesPath))
parameter += string.Format(" --cookies \"{0}\"", ms_cookiesPath);
else
MelonLoader.MelonLogger.Warning("Cookies file not found in: '" + ms_cookiesPath + "'");
break;
case Settings.CookieMode.BrowserFirefox:
parameter += " --cookies-from-browser firefox";
break;
case Settings.CookieMode.BrowserBrave:
parameter += " --cookies-from-browser brave";
break;
case Settings.CookieMode.BrowserChrome:
parameter += " --cookies-from-browser chrome";
break;
case Settings.CookieMode.BrowserChromium:
parameter += " --cookies-from-browser chromium";
break;
case Settings.CookieMode.BrowserEdge:
parameter += " --cookies-from-browser edge";
break;
case Settings.CookieMode.BrowserOpera:
parameter += " --cookies-from-browser opera";
break;
case Settings.CookieMode.BrowserSafari:
parameter += " --cookies-from-browser safari";
break;
case Settings.CookieMode.BrowserVivaldi:
parameter += " --cookies-from-browser vivaldi";
break;
case Settings.CookieMode.BrowserWhale:
parameter += " --cookies-from-browser whale";
break;
}
}
catch(Exception e)
{
MelonLoader.MelonLogger.Warning(e);
}
}
}
}

View file

@ -1,4 +1,5 @@
[assembly: MelonLoader.MelonInfo(typeof(ml_vpc.VideoPlayerCookies), "VideoPlayerCookies", "1.0.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonInfo(typeof(ml_vpc.VideoPlayerCookies), "VideoPlayerCookies", "1.0.3", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]
[assembly: MelonLoader.MelonAdditionalCredits("kafeijao")]

View file

@ -7,6 +7,21 @@ This mod allows yt-dlp to use cookies for playing YouTube videos.
* Put `VideoPlayerCookies.dll` in `Mods` folder of game
# Usage
Available mod's settings in `Settings - General - Video Player Cookies`:
* **Enabled:** Whether this mod adds cookie parameters or not; `true` by default.
* **Cookie fetch mode:** cookies fetch method; `Cookie text file` by default.
* **Cookie text file** *(default)* fetches cookies from your `cookies.txt` file, check [How to create cookies.txt](#how-to-create-cookiestxt)
* **Browser Firefox** fetches cookies directly from FireFox browser. *requires to be logged-in on YouTube in FireFox*
* **Browser Brave** fetches cookies directly from Brave browser. *requires to be logged-in on YouTube in Brave*
* **Browser Chrome** fetches cookies directly from Chrome browser. *requires to be logged-in on YouTube in Chrome*
* **Browser Chromium** fetches cookies directly from Chromium browser. *requires to be logged-in on YouTube in Chromium*
* **Browser Edge** fetches cookies directly from Edge browser. *requires to be logged-in on YouTube in Edge*
* **Browser Opera** fetches cookies directly from Opera browser. *requires to be logged-in on YouTube in Opera*
* **Browser Safari** fetches cookies directly from Safari browser. *requires to be logged-in on YouTube in Safari*
* **Browser Vivaldi** fetches cookies directly from Vivaldi browser. *requires to be logged-in on YouTube in Vivaldi*
* **Browser Whale** fetches cookies directly from Whale browser. *requires to be logged-in on YouTube in Whale*
# How to create cookies.txt
* Acquire cookies for YouTube from your browser:
* Chromium-based browsers: [Get cookies.txt LOCALLY](https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc) extension
* Firefox-based browsers: [cookies.txt](https://addons.mozilla.org/en-US/firefox/addon/cookies-txt) extension

View file

@ -0,0 +1,30 @@
using System;
using System.IO;
using System.Reflection;
namespace ml_vpc
{
static class ResourcesHandler
{
readonly static string ms_namespace = typeof(ResourcesHandler).Namespace;
public static string GetEmbeddedResource(string p_name)
{
string l_result = "";
Assembly l_assembly = Assembly.GetExecutingAssembly();
try
{
Stream l_libraryStream = l_assembly.GetManifestResourceStream(ms_namespace + ".resources." + p_name);
StreamReader l_streadReader = new StreamReader(l_libraryStream);
l_result = l_streadReader.ReadToEnd();
}
catch(Exception e)
{
MelonLoader.MelonLogger.Error(e);
}
return l_result;
}
}
}

144
ml_vpc/Settings.cs Normal file
View file

@ -0,0 +1,144 @@
using ABI_RC.Core.InteractionSystem;
using System;
using System.Collections.Generic;
namespace ml_vpc
{
static class Settings
{
internal class SettingEvent<T>
{
event Action<T> m_action;
public void AddListener(Action<T> p_listener) => m_action += p_listener;
public void RemoveListener(Action<T> p_listener) => m_action -= p_listener;
public void Invoke(T p_value) => m_action?.Invoke(p_value);
}
public enum CookieMode
{
File = 0,
BrowserFirefox,
BrowserBrave,
BrowserChrome, // This one might not work
BrowserChromium,
BrowserEdge,
BrowserOpera,
BrowserSafari,
BrowserVivaldi,
BrowserWhale,
}
private enum ModSetting
{
Enabled = 0,
Mode,
}
public static bool Enabled { get; private set; } = true;
public static CookieMode Mode { get; private set; } = CookieMode.File;
static MelonLoader.MelonPreferences_Category ms_category = null;
static List<MelonLoader.MelonPreferences_Entry> ms_entries = null;
public static readonly SettingEvent<bool> OnEnabledChanged = new SettingEvent<bool>();
public static readonly SettingEvent<CookieMode> OnModeChanged = new SettingEvent<CookieMode>();
internal static void Init()
{
ms_category = MelonLoader.MelonPreferences.CreateCategory("VPC", null, true);
ms_entries = new List<MelonLoader.MelonPreferences_Entry>()
{
ms_category.CreateEntry(nameof(ModSetting.Enabled), Enabled),
ms_category.CreateEntry(nameof(ModSetting.Mode), (int)CookieMode.File),
};
Enabled = (bool)ms_entries[(int)ModSetting.Enabled].BoxedValue;
Mode = (CookieMode)ms_entries[(int)ModSetting.Mode].BoxedValue;
MelonLoader.MelonCoroutines.Start(WaitMainMenuUi());
}
private static System.Collections.IEnumerator WaitMainMenuUi()
{
while(ViewManager.Instance == null)
yield return null;
while(ViewManager.Instance.cohtmlView == null)
yield return null;
while(ViewManager.Instance.cohtmlView.Listener == null)
yield return null;
ViewManager.Instance.cohtmlView.Listener.ReadyForBindings += () =>
{
ViewManager.Instance.cohtmlView.View.BindCall("OnToggleUpdate_" + ms_category.Identifier, new Action<string, string>(OnToggleUpdate));
ViewManager.Instance.cohtmlView.View.BindCall("OnDropdownUpdate_" + ms_category.Identifier, new Action<string, string>(OnDropdownUpdate));
};
ViewManager.Instance.cohtmlView.Listener.FinishLoad += (_) =>
{
ViewManager.Instance.cohtmlView.View.ExecuteScript(ResourcesHandler.GetEmbeddedResource("mods_extension.js"));
ViewManager.Instance.cohtmlView.View.ExecuteScript(ResourcesHandler.GetEmbeddedResource("mod_menu.js"));
MelonLoader.MelonCoroutines.Start(UpdateMenuSettings());
};
}
private static System.Collections.IEnumerator UpdateMenuSettings()
{
while(!ViewManager.Instance.IsReady || !ViewManager.Instance.IsViewShown)
yield return null;
foreach(var l_entry in ms_entries)
ViewManager.Instance.cohtmlView.View.TriggerEvent("updateModSetting", ms_category.Identifier, l_entry.DisplayName, l_entry.GetValueAsString());
}
private static void OnToggleUpdate(string p_name, string p_value)
{
try
{
if(Enum.TryParse(p_name, out ModSetting l_setting) && bool.TryParse(p_value, out bool l_value))
{
switch(l_setting)
{
case ModSetting.Enabled:
{
Enabled = l_value;
OnEnabledChanged.Invoke(Enabled);
}
break;
}
ms_entries[(int)l_setting].BoxedValue = l_value;
}
}
catch(Exception e)
{
MelonLoader.MelonLogger.Error(e);
}
}
private static void OnDropdownUpdate(string p_name, string p_value)
{
try
{
if(Enum.TryParse(p_name, out ModSetting l_setting) && int.TryParse(p_value, out int l_value))
{
switch(l_setting)
{
case ModSetting.Mode:
{
Mode = (CookieMode)l_value;
OnModeChanged.Invoke(Mode);
}
break;
}
ms_entries[(int)l_setting].BoxedValue = l_value;
}
}
catch(Exception e)
{
MelonLoader.MelonLogger.Error(e);
}
}
}
}

12
ml_vpc/Utils.cs Normal file
View file

@ -0,0 +1,12 @@
using ABI_RC.Core.UI;
using System.Reflection;
namespace ml_vpc
{
static class Utils
{
static readonly FieldInfo ms_view = typeof(CohtmlControlledViewWrapper).GetField("_view", BindingFlags.Instance | BindingFlags.NonPublic);
public static void ExecuteScript(this CohtmlControlledViewWrapper p_instance, string p_script) => (ms_view?.GetValue(p_instance) as cohtml.Net.View)?.ExecuteScript(p_script);
}
}

View file

@ -6,7 +6,7 @@
<AssemblyName>VideoPlayerCookies</AssemblyName>
<Authors>SDraw</Authors>
<Company>SDraw</Company>
<Version>1.0.2</Version>
<Version>1.0.3</Version>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@ -15,9 +15,15 @@
</PropertyGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" />
<Exec Command="copy /y &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition="$([MSBuild]::IsOSPlatform('Windows'))" />
<Exec Command="cp -f &quot;$(TargetPath)&quot; &quot;$(CVRPath)/Mods/&quot;" Condition=" '$(OS)' != 'Windows_NT' " />
</Target>
<ItemGroup>
<EmbeddedResource Include="../js/mods_extension.js" Link="resources/mods_extension.js" />
<EmbeddedResource Include="resources/mod_menu.js" />
</ItemGroup>
<ItemGroup>
<Reference Include="0Harmony">
<HintPath>$(CVRPath)/MelonLoader/net35/0Harmony.dll</HintPath>
@ -29,6 +35,16 @@
<Private>false</Private>
<SpecificVersion>false</SpecificVersion>
</Reference>
<Reference Include="cohtml.Net">
<HintPath>$(CVRPath)/ChilloutVR_Data/Managed/cohtml.Net.dll</HintPath>
<Private>false</Private>
<SpecificVersion>false</SpecificVersion>
</Reference>
<Reference Include="Cohtml.Runtime">
<HintPath>$(CVRPath)/ChilloutVR_Data/Managed/Cohtml.Runtime.dll</HintPath>
<Private>false</Private>
<SpecificVersion>false</SpecificVersion>
</Reference>
<Reference Include="MelonLoader">
<HintPath>$(CVRPath)/MelonLoader/net35/MelonLoader.dll</HintPath>
<Private>false</Private>

View file

@ -0,0 +1,37 @@
{
let l_block = document.createElement('div');
l_block.innerHTML = `
<div class ="settings-subcategory">
<div class ="subcategory-name">Video Player Cookies</div>
<div class ="subcategory-description"></div>
</div>
<div class ="row-wrapper">
<div class ="option-caption" data-tooltip="Whether the mod is enabled or not">Enabled: </div>
<div class ="option-input">
<div id="Enabled" class ="inp_toggle no-scroll" data-current="true"></div>
</div>
</div>
<div class ="row-wrapper">
<div class ="option-caption" data-tooltip="The way cookies are fetched">Cookie fetch mode: </div>
<div class ="option-input">
<div id="Mode" class ="inp_dropdown no-scroll" data-options="0:Cookie text file,1:Browser Firefox,2:Browser Brave,3:Browser Chrome,4:Browser Chromium,5:Browser Edge,6:Browser Opera,7:Browser Safari,8:Browser Vivaldi,9:Browser Whale" data-current="0"></div>
</div>
</div>
`;
document.getElementById('settings-general').appendChild(l_block);
// Toggles
for (let l_toggle of l_block.querySelectorAll('.inp_toggle'))
modsExtension.addSetting('VPC', l_toggle.id, modsExtension.createToggle(l_toggle, 'OnToggleUpdate_VPC'));
// Sliders
for (let l_slider of l_block.querySelectorAll('.inp_slider'))
modsExtension.addSetting('VPC', l_slider.id, modsExtension.createSlider(l_slider, 'OnSliderUpdate_VPC'));
// Dropdowns
for (let l_dropdown of l_block.querySelectorAll('.inp_dropdown'))
modsExtension.addSetting('VPC', l_dropdown.id, modsExtension.createDropdown(l_dropdown, 'OnDropdownUpdate_VPC'));
}