UIFramework

v0.10.3·Updated 2026-10-09

A UI For settings in Rumble VR

About this mod Author’s original text

btw: The changelog doubles as a feature list

New in 0.10.1/2

New feature: Made resize handles visible

  • Right handle for scale
  • Bottom handle to stretch downwards

Bug fix: Nullref error when the player doesn't have ModUI

Wasn't really motivated to be rigorous because everybody had ModUI😅

Bug fix: Continuous refresh error

Fixed the refresh method to not keep trying every frame when a part of the UI fails to build

New feature: Made UI Framework available in the loader

UI Framework can now be used in the loader.

New feature: Enabled Re-registration

Mods can now register themselves any time the game is running and re-register to change what categories they have and what order.

Bug fix: Null check for requestrefresh

In case anyone assigns a value before the UI is built

New in 0.10.0

New Feature: Window is now resizable

You can now scale the window or adjust its height.

  • Scale: Click and drag the right edge to make the window scale uniformly.
  • Height: Click and drag the bottom edge to adjust the height of the window.

New Feature: Increment and Decrement buttons in number fields

You can now click on buttons to increment or decrement values in number fields.

  • Integral types like ints, bytes, longs, etc. will increment and decrement by 1 by default.
  • Floating point types like floats and doubles will increment and decrement by 0.1 by default.

Note: This change has made floating point errors more obvious. I've opted to limit floating point types to display

1 decimal place by default. This can be easily overridden with the INumberBoxDescriptor UI Extension class.

New Feature: Advanced UI Customization for modders

You can now use the ICustomViewProvider interface to be able to pass your own custom representations to the UI Framework.

Default implementation: CustomViewProvider. More details in CustomUI

For Users

Drop the dll in your mods folder.

Default toggle is the F9 key

~~Changing a value of an entry automatically updates the value of the preference and is applied. How that preference's parent mod reacts depends on the modder's implementation.~~

  • the above is no longer true as of 0.8.0. Values will not update until the saved button has been clicked

The save button writes it to the file for permanent storage. Closing your game might also save preferences to file automatically depending on whether it's closed from the game window or through Steam. Stopping through Steam doesn't save because it force closes it.

For Modders

A (more) detailed API Overview exists over at

Basic Registration

Add [assembly: MelonAdditionalDependencies("UIFramework")] to your AssemblyInfo. This prevents your mod from calling on UIFramework before it's been initialized.

Define your MelonPreferences in OnInitializeMelon and then register them to the UI.

UI.RegisterMelon(this, TestCategory1, TestCategory2...);

~~Right now, support is limited to common types like string, int, bool, double, float, and enums without the flags attribute. Working on expanding this.~~

Type Support: Whatever works with Tomlet

Expanded Type Support details

Support is no longer limited to the types mentioned above. Serialization and parsing is now handled by Tomlet.

This means that it supports types described in Toml 1.0.0 and whatever Tomlet supports. You can even make your own custom mappers

Caveat: Types handled by Tomlet will be presented as regular text inputs and they might not always look good. Numerics will have the appropriate filters.

I do plan to continue expanding the number of custom UI presenters like I did with enums and booleans.

Optional: OnSave Event Handler

You can add an event handler that gets called when the save button is clicked while your mod is selected.

private void MyModSaved()

{

// Do something when the save button is clicked while your mod is selected

}

UI.RegisterMelon(this, OBSAutoRecorderSettings, TestCategory1, TestCategory2...).OnModSaved += MyModSave

Install & use Install: follow the bundled instructions

  1. Unzip the archive from playbuff and read the bundled readme / instructions first.
  2. Most mods rely on the game's mod loader — the usual route is a community mod manager (such as r2modman): pick this game, install, and it handles the loader and dependencies.
  3. For a manual install, put the mod files into the matching Mod / plugins folder inside the game directory.
  4. Launch the game to confirm it loaded; mods with listed dependencies need those installed as well.

Install locations vary a lot between mods — the bundled readme is the most reliable guide.

File & checksum

Filename
UIFramework-0.10.3.zip
File size
1.2 MiB