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.
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.
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
- Color Customizer
- Third person camera
- KeyRebinder
- Speed Multiplier
- Player Rotater
- Rotate It
- M.A Logger
- More Filters
- Hop Lib
A simple plugin to skip the intro scene automatically.
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.
Allows you to toggle to a third person mode with a keybind, and zoom in and out with your mouse scroll wheel.
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
A plugin that allows changing your flying speed.
A plugin that allows rotating your own avatar whilst in flying mode.
Ever wanted to rotate items in desktop mode? Well now you can with this plugin! With configurable rotation speed and keybinds.
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
Adds more features related to content filtering. Currently it only has an option to feature spawn audio.
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.
- 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
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!
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.
And running MelonLoader still requires .NET framework anyway, which BepInEx does not, leading to less wine/proton tinkering.
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.