tacoslayer36-NameBending icon

NameBending

Change your name and title to anything you like

Last updated 15 hours ago
Total downloads 2225
Total rating 5 
Categories Mods
Dependency string tacoslayer36-NameBending-2.0.0
Dependants 0 other packages depend on this package

This mod requires the following mods to function

Reverb_and___and_Spice-UIFramework-0.8.0 icon
Reverb_and___and_Spice-UIFramework

A UI For settings in Rumble VR

Preferred version: 0.8.0
UlvakSkillz-RumbleModdingAPI-5.1.5 icon
UlvakSkillz-RumbleModdingAPI

API to Help Modders Get Started and to remove the necessity of GameObject.Find

Preferred version: 5.1.5

README

Screenshot1

Installation

  1. Install MelonLoader v0.7.2+
  2. Drop Mods and UserData folders into Rumble Source Directory
  3. Play the game

Description

This mod allows you to set your username and title to anything you like. No more character limits or boring, static names.

Your custom username and title will only show up to others who also have the mod!

Features

  • Much higher character limit (~8,000)
  • Variations: Automatically switch between variations every scene load
  • Animation: Cycle through different frames in real time
  • Custom fonts: Choose from 11 preset fonts
  • Alt text: Text to show to those who do not have the mod
    • Standard limits apply (static, 1-71 characters)
    • Does not work on titles
  • Images:
    • Insert image links to have them show up
    • Must be verified in the Discord first

Usage

Simple Configuration

  • Open the UI (F9 on the keyboard)
  • Go to the Simple Config tab
  • Make sure the Enable Simple Config box is checked
  • Input the values you want to change
  • Refresh your name

Advanced Configuration

  • Rename the provided JSON files to remove the word TEMPLATE (UserData/NameBending/customBentNameTEMPLATE.json and UserData/NameBending/customBentTitleTEMPLATE.json)
  • Open them in your favorite text editor and replace the default values with your specifications

You can preview your customizations by going to the Name Plate category in the UI and enabling Nameplate Preview.

Changes you make with this mod will only show up in certain places (name plates, the MatchInfo board, RumbleHUD plates) and not on in others: (park board, leaderboard, friends list).

If you change your custom name or title while the game is open, press N to update it. This hotkey can be changed in the UI settings.

JSON Format

The provided JSON file templates should get you started in the JSON files. Here is a comprehensive guide to the formatting:

customBentName.json/customBentTitle.json
doRandomVariations: false Whether to choose variations randomly, or in order
variations The different possibilities of names/titles to show up when names are refreshed (such as on scene loads)
weight: "1" Formatted as a string, but is a number that represents the liklihood of a variation to be randomly chosen relative to all the other weights. If set to `HOST`, will be equivalent to a value of 1 when user is the host, and 0 if client. `CLIENT` produces opposite results
altText: "" Only available for names. The text that users who do not have the mod will see on your nameplate, as well as some other places such as the MatchInfo board or RumbleHUD plates
prohibitSaving: false If set to true, others will not automatically save your name to a file (overriding the `Save Names To File` advanced setting)
frameDuration: 1000 An integer that describes how long each frame of your animation will last. Set in milliseconds, so `1000` is equivalent to 1 frame per second
loopFrames: true When disabled, your animation will play once and freeze on the final frame
interpolation: false When enabled, fields that are set within frames will interpolate their values to smoothly animate between them
loopInterpolation: true When enabled along with `interpolation` and `loopFrames`, will allow the final frame to interpolate back to the first frame
enableFields: true Enables field processing
autoScaling: true Can be disabled to prevent the automatic squishing that is applied to text in nameplates when it gets to long
frames See Frames
fonts See Fonts
fields See Fields
depths See Depths
images See Images

You can make sure your JSON is correct with a validator like JSON Lint

Frames

Frames are used to create animations. They are defined with an index (the part of the animation they appear in) and a string (the frame itself). Each frame is like a regular name, but the mod will cycle through them to create an animation. The index numbers are usually defined in order (0, 1, 2, 3...) but they can skip numbers to hold on frames for longer.

Frames Example
{
	"altText": "Frame Guy",
	"frameDuration": 500,
	
	"frames":
	{
		"0": "A",
		"1": "AL",
		"2": "ALP",
		"3": "ALPH",
		"4": "ALPHA",
		"15": "ALPHA S",
		"16": "ALPHA SH",
		"17": "ALPHA SHA",
		"18": "ALPHA SHAL",
		"19": "ALPHA SHALE",
		"30": "ALPHA SHALE",
	}
}

This will display an animation as if the letters are appearing one after the other, but pausing after each full word

Fonts

Fonts can be specified in a "fonts" object formatted similarly to "frames" (requiring an index number and a font). Place it in the same place as the frames, within a variation. Not every font has to have a corresponding frame, and not every frame has to have a corresponding font.

The available fonts are as follows:

  • Arial
  • ChineseRocks
  • ComicSans
  • Crumble
  • Impact
  • Minecraft
  • Roboto
  • SGA
  • TimesNewRoman
  • Tumble
  • TokiPona
  • Avasinistral
  • Wingdings
  • Papyrus
  • Cascadia
  • Hollywood
  • HighwayGothic
  • GoodDogPlain (Default)
Fonts Example
{
	"altText": "Font Guy",
	"frameDuration": 500,
	
	"frames":
	{
		"0": "Do you like...",
		"4": "Arial?",
		"5": "Chinese Rocks?",
		"6": "Comic Sans?",
		"7": "CRUMBLE?",
		"8": "Impact?",
		"9": "Minecraft?",
		"10": "Roboto?",
		"11": "Times New Roman?",
		"12": "TUMBLE?",
		"16": "No?",
		"20": "Then we'll stick with Good Dog Plain",
		"28": "Then we'll stick with Good Dog Plain"
	},
	
	"fonts":
	{
		"0": "GoodDogPlain",
		"4": "Arial",
		"5": "ChineseRocks",
		"6": "ComicSans",
		"7": "Crumble",
		"8": "Impact",
		"9": "Minecraft",
		"10": "Roboto",
		"11": "TimesNewRoman",
		"12": "Tumble",
		"16": "GoodDogPlain"
	}
}

This will cycle between fonts as the animation plays.

Fields

Fields are like variables, allowing you to store, edit, reuse, and animate between values. There are also Factory Fields which allow you to use procedural values, such as random numbers.

You create a field with an identifier and a default value. When the identifier is used within a frame (surrounded by curly braces {}), it will be replaced with the field's current value.

Simple Fields Example
{
	"frameDuration": 600,

	"fields":
	{
		"c": "<#F00>"
	},

	"frames":
	{
		"0": "{c}Red",
		"1": "{c}Fox",
		"2": "{c}Red Fox",
		"15": "{c}Red Fox"
	}
}

Here, a field called c is used to store a color, then applied to each frame. The first frame {c}Red will be interpreted as <#F00>Red. This allows for the user to easily change the color and have it apply to every frame.

Dynamic Fields Example
{
	"frameDuration": 300,
	"interpolation": true,
			
	"fields":
	{
		"a": "#F80",
		"b": "#F30"
	},
	"frames":
	{
		"0": "<{a=#F80}>Rumble <{b=#F30}>Guy!",
		"1": "<{a=#F30}>Rumble <{b=#F80}>Guy!"
	}
}

Field values can be changed dynamically within frames by using an equal sign = after the identifier, then the new value. Here, the interpolation property has been enabled, so the colors will smoothly fade between the two frames.

Factory Fields Example
{
	"fields":
	{
		"pos_x": "RANDOM|-0.2|0.2",
		"pos_y": "RANDOM|-0.5|0.2",
		"rot": "RANDOM|-5|5",
	},
	"frames":
	{
		"0": "<space={pos_x}><voffset={pos_y}><rotate={rot}>A"
	}
}

This example uses the Factory Field RANDOM to produce a random value every time the frame is drawn. The field's value is defined with the Factory Field in all capital letters, followed by the minimum and maximum values separated by vertical bars |. Every time a Rumble frame is rendered, a random value between the min and max will be used. All Factory Fields are listed below:

  • RANDOM: A random value between the first and second parameter is pulled every Rumble frame
    • FRAME_: A modifier to be combined with RANDOM; pulls a random value every frame of your animation instead
    • INSTANCE_: A modifier to be combined with RANDOM; pulls a different random value for each instance of the field

^ These can be combined with underscores _ (e.g: INSTANCE_RANDOM or FRAME_RANDOM or FRAME_INSTANCE_RANDOM)

  • FRAME_PROGRESS: A value between 0 and 1 based on how far along the current frame is. When a frame is first shown, this value is 0. When a frame is just about to change to the next one, this value is ~1. This can be mapped between any two values using the parameters (e.g: FRAME_PROGRESS|10|15)
  • LOOP_PROGRESS: Same as FRAME_PROGRESS but applies across the entire current loop instead of one frame
  • FRAME: The index of the current frame. Parameters used for this field define Dilation instead of Remapping, meaning the first parameter is the starting value, and the second parameter is a multiplier (e.g: FRAME|10|3 will start with 10 on the first frame, then go up by 3 every frame)
  • TIMER: The time in seconds since the name was first loaded. Dilates similar to FRAME.
Nested Fields Example
{
	"frameDuration": 500,
	"autoScaling": false,
	
	"fields":
	{
		"pos_x": "INSTANCE_RANDOM|-0.1|0.1",
		"pos_y": "INSTANCE_RANDOM|-0.1|0.1",
		"rot": "INSTANCE_RANDOM|-5|5",
		"c": "<space={pos_x}><voffset={pos_y}><rotate={rot}>A</cspace></voffset></rotate>",
	},
	"frames":
	{
		"0": "<scale=1.05><pos=0.1>{c}{c}{c}{c}{c}{c}{c}{c}{c}{c}{c}{c}"
	}
}

In this example, fields are used within other fields. The previous fields example (of a vibrating letter A) is used, but everything is encapsulated into one field c. This field can then be used many times to simplify the process. INSTANCE_RANDOM is also used so that each letter A has different random values.

Formatted Fields Example
{
	"frameDuration": 500,
	
	"fields":
	{
		"a|.0": "TIMER|0|10"
	}

	"frames":
	{
		"0": "{a}"
	}
}

Fields can be formatted to control how they appear. Formatting options are defined along with the identifier, separted by a vertical bar |. Available formats are as follows:

  • None: no formatting is specified
  • Significant Figures: The amount of 0's after a decimal in the formatting definition determines the amount of digits that will appear for decimal numbers (e.g: "a|0.00" could show something like 3.14)
  • Round: The value of the number before the a decimal specifies that the output will be a multiple of that number (e.g: "a|2" would be able to show values 2, 4, 6, 8...)
  • Hex: The value is interpreted in hexidecimal. This can be combined with Significant Figures (e.g: "a|#|2" could show something like 0F)
Advanced Fields Example
{
	"frameDuration": 50,
	"autoScaling": false,
	
	"fields":
	{
		"g1|#|2": "INSTANCE_FRAME_RANDOM|150|200",
		"g2|#|2": "INSTANCE_FRAME_RANDOM|50|120",
		"c1": "<#FF{g1}00>",
		"c2": "<#FF{g2}00>"
	},
	"frames":
	{
		"0": "<scale=0.87%>{c1}T{c1}a{c1}c{c1}o{c2}S{c2}l{c2}a{c2}y{c2}e{c2}r"
	}
}

In this example, fields are used to randomize colors. The green value of a color specified in the c1 and c2 is randomized between two specified extremes, then included in the rest of the color code.

Depths

Depths are formatted similarly to frames and fonts, but with a number specified for each index. This number will push the text forward/backward off the nameplate, and can be animated per frame.

Images

Images are supported through links. If an image is on the internet and can be accessed directly with a link, it can be used. If you'd like to upload your own image, I recommend using Dropbox (instructions for this can be found here: https://dev.to/devded/how-to-host-images-with-dropbox-43hi)

They are defined in their own section, just like Frames, Fonts, and Fields. Each image has 7 parameters:

  • link: The image link provided to you by a moderator once your image has been approved
  • token: The password-like token provided to you by a moderator once your image has been approved
  • x: the horizontal location of the image on your nameplate
  • y: the vertical location of the image on your nameplate
  • w: the width to scale the image to
  • h: the height to scale the image to
  • z: the forward/backward depth the image uses to be layered above/below other images or the nameplate itself

Images but be verified by moderators in the RUMBLE Modding Discord before they will be visible

This can be done by posting a link to your image in the #image-verification channel under the Mod Resources tab in the Rumble Modding Discord server. A moderator will reply to you with the link and token you need to use (as specified above). If either the link or the token don't match exactly, or the image hosted at the link changes at all, the image will not show.

There is a setting to allow yourself to see any images, even if they haven't been verified. This requires you to accept a disclaimer outlining the risks within the UI.


Help And Other Resources

Get help and find other resources in the Modding Discord: https://discord.gg/fsbcnZgzfa