/CVR-Plugins

A mirror of my BepInEx plugins ("mods") for ChilloutVR. DLL's can be found from source website

Primary LanguageC#GNU General Public License v3.0GPL-3.0

CVR-Plugins

Discord Latest release Works in 2021r163p1 GPL-3 Lines of code

This repository contains some of my plugins for ChilloutVR using BepInEx 6.

To install, just follow the BepInEx guide for Unity games for windows. After that just drag'n'drop the DLLs into the BepInEx/plugins folder.

I encourage you join the CVR modding corner discord server if you need help or are interested in modding the game.

Warning

No warranty is provided for these plugins, and they're provided as-is. Please have a look at the source code & build from source for maximal safety. I also recommend mirroring this git repository if you want to make sure you always have access to the source code.

As far as I'm aware, the CVR devs allow modding to some extent now. This doesn't mean though that they endorse the mods by me or that I'm in any way representing or affiliated with CVR or Alpha Blend Interactive. It's up to you to make sure that you're following their rules & TOS, as I am only providing the code for my plugins and nothing else.

Plugin list

If you want the feature enough to get the plugin for it, you should probably also go upvote the feature request if there is one.

Skip intro

A simple plugin to skip the intro scene automatically.

Color Customizer

Roadmap entry

A plugin to allow customizing the colors.

Currently implemented:

  • Nameplates
  • Mic indicator
  • Menus Background
  • Menus lines
  • Menus text
  • Menus Icons
  • User status indicator

Menu related patches probably won't be added before CVR rolls out their new menu system. And maybe that'll make this plugin not need to implement them if it's natively supported.

Third person camera

Requires HopLib Roadmap entry

Allows you to toggle to a third person mode with a keybind, and zoom in and out with your mouse scroll wheel.

KeyRebinder

Requires HopLib Roadmap entry

A plugin to allow for some desktop mode keyboard rebinds, since the game does not include it as a feature.

Please note that the defaults are what I prefer, and for example have F1-8 rather than standard 1-8 for Gestures&States&Emotes. You can change the keys back easily by changing F1 to Alpha1 and so on in the config file.

The currently implemented keys are:

  • Mic standard & extra push to talk key
  • Zoom
  • Prone
  • Crouch
  • Gesture controls
  • State controls
  • Emote controls
  • Flying controls
  • Toggling hud & nameplates
  • Reconnecting keybinds
  • Optionally replace the non-individual finger control mode with gesture lock toggle
  • Other controls

Speed Multiplier

Requires HopLib Feature request

A plugin that allows changing your flying speed.

Player Rotater

Requires HopLib

A plugin that allows rotating your own avatar whilst in flying mode.

Rotate It

Requires HopLib Feature request

Ever wanted to rotate items in desktop mode? Well now you can with this plugin! With configurable rotation speed and keybinds.

M.A Logger

Requires HopLib

A plugin for logging things, to help figuring out the cause of Malicious Activity.

An example use case would be to get the last change before you crashed. Since if a lot of people crashed at once, it's probably a fault of the most recently loaded thing. Then you'll at least have the ID's of the avatar and the user who changed into it.

Current status:

  • Avatar changes
  • Prop spawns
  • Portal drops
  • Avatar state changes
  • Prop state changes

More Filters

Requires HopLib

Adds more features related to content filtering. Currently it only has an option to feature spawn audio.

Hop Lib

A library plugin for other plugins to use. Mainly supposed to help making mods more wholesome easily, leading to less code repeat & complex code needing to be implemented only once.

// This example is WIP; It very well might be fully outdated.
// Wait until HopLib reaches v1.x.x for it's APIs to be more stable.

void Awake() {
  HopApi.PortalLoaded += delegate {
    // Do stuff that doesn't require any data with an anonymous delegate.
   };
   // If you want to access the data of the event,
  HopApi.InstanceJoined += OnInstancedJoined;
}

void OnInstancedJoined(object sender, InstanceEventArgs ev) {
  if (ev.GamemodeId != "SocialVR") return;
  // Do stuff
}

It's still under heavy development, I'd suggest others don't rely on it yet, as I'm trying to figure out what are the most useful & required abstractions.

Mods under consideration

  • Progress bar/% on loading worlds
  • Make the menu follow the local player/camera.
  • Add local metadata to other players. Nicknames/notes/profile picture replacements even perhaps?
    • Also to avatars, so you can write a reminder for yourself to why you blocked that thing (super laggy or just very annoying, etc)
  • Nameplate overdraw, basically draw nameplates over everything else.
  • Give the user more details about why a prop was filtered. Maybe avatars too, but lesser priority because the tags are already visible in the menus.
  • Teleportation to another player or some other good way to be able to find & get to them in a huge world.
  • Better Content filtering
  • Avatar performance evaluator - currently it's very tedious to hide each avatar and see the FPS difference before and after

For developers

Building

Ensure that the required DLL's (listed in the Directory.build.props file and in the individual .csproj files) can be found from standard installation paths (check Directory.build.props). Then use the dotnet build command to build. A few examples include running dotnet build HopLib/HopLib.csproj to build HopLib in development mode or dotnet build -c Release CVR-Plugins.csproj to build all the plugins in release mode.

Alternatively you can try to open the folder in Visual Studio, but I cannot provide help for using that. If you do want to improve the situation, do feel free to contribute!

Why BepInEx and not MelonLoader

If you're asking: "MelonLoader is the tool used with VRC modding, so why not use it for CVR too?"

While it's a great tool, it requires .NET framework. Which is not available for linux. I can actually build my plugins on Linux with BepInEx and run them without needing to do wineprefix trickery.

Social VR Game mod loader comparison chart

And running MelonLoader still requires .NET framework anyway, which BepInEx does not, leading to less wine/proton tinkering.

Contacting & contributing

Contact me on the modding corner Discord, elsewhere, and/or possibly send me git patches if you've already written any code that you'd like to get merged.

Also if anyone from the CVR team is reading this, do feel free to get in touch! I tried to email you a few times but stopped after never hearing a reply.