/LJ-Resonite-Mods

Resonite mods by a desktop linux privacy nerd.

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

Resonite-Mods

Discord Latest release AGPL-3 Lines of code

This repository contains some of my mods for Resonite using MonkeyLoader.

Note that the license is AGPL, meaning you might be obligated to provide the source code (with any modifications you've made) for these mods if someone asks you when you're using them. This is meant to stop people from creating private malicious clients. I may choose to change the license in the future to a more permissive one.

Warning

No warranty is provided for these mods, 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.

Mod list

If you want the feature enough to get the mod for it, you should probably also go give a thumbs up on the issue tracker if there is one.

Screenmode Tweaks

Small tweaks to make screen (desktop) mode less miserable.

Current options include:

  • Changing vSync
  • Setting max focused FPS
  • Setting max unfocused FPS

Latest Log

Creates a symbolic link in the Resonite folder named Latest.log to the latest log file that was created on launch.

So you can keep following the file (with tail -F Latest.log on linux for example) without needing to constantly change the filename and such.

Linux Fixes

Fixes the most annoying bugs that I come accross whilst playing Resonite on linux.

Currently implements:

  • Centers mouse on context menu open
  • Fixes being able to rotate the grabbed object
  • Reverses the reverse mouse scroll direction.

Privacy Shield

A few attempts at improving privacy slightly.

The main feature is making all requests (excluding local:// and resdb://) require you granting permission to it, instead of just logix ones. It uses the same domain allowlist/blocklist as the normal logix requests. So no more tracking pixels!

The other semi-sensible feature is spoofing the local timezone. It's disabled by default, and any changes will require a restart.

Also includes a slightly questionable feature, FPS spoofing. Questionable as it might also just break some things, doesn't really protect you, and can be summarized as:

Your scientists were so preoccupied with whether or not they could, they didn't stop to think if they should.

The FPS spoofing allows sensible values (so pick like between 30-60), and disables with anything else (so -1 for example). It doesn't spoof anything other than the Local User's FPS (so dT or the PerformanceMetrics component will leak your real FPS). But it does at least currently provide some privacy from some session user manager type of UIs. I'd kindly ask you to not to try to work around this if you're making tools, at least if your tool isn't opt-in. Since I think that this is a somewhat decent way to opt-out of FPS tracking.

For developers

Getting started

Since YellowDogManStudios has said to not distribute the reference packages, building the mods becomes a pain in the ass. Please go voice your concern on their issue tracker (#456) to make this shit less painful. It really should just be dotnet build and it works because everything is public, but nooooo.

You need to get the reference packages for the game, for example with the ReferencePackageGenerator After that, add them to a feed dotnet nuget add source --username lj --password ghp_ --store-password-in-clear-text --name ResoniteModdingGroup https://nuget.pkg.github.com/ResoniteModdingGroup/index.json style, though of course replacing this with a local fs feed for example

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 ScreenmodeTweaks/ScreenmodeTweaks.csproj to build ScreenmodeTweaks in development mode or dotnet build -c Release Resonite-Mods.csproj to build all the mods 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!

Contacting & contributing

Contact me on the FrooxEngine Modding discord server, 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 Resonite team is reading this, do feel free to get in touch!