RumbleModdingAPI
API to Help Modders Get Started and to remove the necessity of GameObject.Find
By UlvakSkillz
Last updated | 2 months ago |
Total downloads | 3510 |
Total rating | 8 |
Categories | Mods Tools Libraries |
Dependency string | UlvakSkillz-RumbleModdingAPI-3.1.3 |
Dependants | 57 other packages depend on this package |
This mod requires the following mods to function
LavaGang-MelonLoader
The World's First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono
Preferred version: 0.6.4README
I created this API to Help others get into the Modding Scene for Rumble.
Video Guide
How to Include the API in your Project:
- Install MelonLoader Version 0.6.2+
- Run Game (This initialized MelonLoader) (Close at T-Pose)
- Put RumbleModdingAPI.dll in your Mods Folder
- Add RumbleModdingAPI.dll as a Reference in your Project.
- Add "using RumbleModdingAPI;" at the top of your code / with the other "using"s
- Call Methods Supplied By Typing "Calls." followed by the Method Name (Visual Studios Supplies the List)
- Calls.IsInitialized() - Use when messing with things in the loader to make sure API is ready
- Calls.Scene.[Methods] - Used to see if scene changed
- Calls.Managers.[Methods] - Used to access Managers
- Calls.Gym.[Methods] - Used to access Gym Specific Objects
- Calls.Park.[Methods] - Used to access Park Specific Objects
- Calls.Pools.Structures.Methods - Used to access Structure Pools
- Calls.Pools.ShiftStones.Methods - Used to access ShiftStone Pools
- Calls.Players.Methods - Used for Quick access to different Players
- Calls.Create.[Methods] - Used to create new Text/Buttons
- Calls.ControllerMap.(Left/Right)Controller.[Methods] - Used to read Controller Inputs
- Calls.onMapInitialized - System.Action to use as a listener to Auto-Run a Method when map is done Loading
In-Depth How to Setup a Project to Use the API:
-
Drag the Mods Folder into the RUMBLE Folder
-
Click Create New Project
-
Select Class Library (.NET Framework)
-
Name Project
-
Add References (Browse to "RUMBLE\MelonLoader\Managed" for Rumble References)
- Add MelonLoader.dll (MelonLoader Folder)
- Add RUMBLE.Runtime.dll (Managed Folder)
- Add RumbleModdingAPI.dll (Mods Folder)
-
Open Properties Dropdown and Open (double click) "AssemblyInfo.cs"
-
In AssemblyInfo.cs, Add Usings at the Top:
- using MelonLoader;
- using YourModsName;
- After the Usings, Put:
- [assembly: MelonInfo(typeof(Class1), "YourModsName", "1.0.0", "YourName")]
- [assembly: MelonGame("Buckethead Entertainment", "RUMBLE")]
-
Open Class File (default class name is "Class1")
-
Add usings at the Top:
- using MelonLoader;
- using RumbleModdingAPI;
-
Add " : MelonMod" after the Class Name
-
Inside the Class Add a Function:
- public override void OnSceneWasLoaded(int buildIndex, string sceneName) {}
- (Optional Test) Add Reference to Add this Line inside OnSceneWasLoaded: (On Gym Load, it'll output the player's name)
- if (sceneName == "Gym") { MelonLogger.Msg(Calls.Managers.GetPlayerManager().localPlayer.Data.GeneralData.PublicUsername); }
-
Build Project
-
Open File Explorer to "C:\Users\YOURUSER\source\repos\YOURPROJECT\YOURPROJECT\obj\Debug"
- Copy YOURPROJECT.dll into the Rumble Mods Folder (RUMBLE/Mods)
-
Open Rumble and Load into the Gym. Then Look at the Console (Black Window)
-
Subscribe to UlvakSkillz (and Like this Mod)
Calls:
- Able to be Called Anytime:
- Calls.GameObjects.DDOL.*
- Calls.IsInitialized()
- Calls.IsMapInitialized()
- Calls.Scene
- .WhenSceneChanged()
- .GetSceneName()
- Calls.Managers
- .GetGameManager()
- .GetNetworkManager()
- .GetPlayerManager()
- .GetInputManager()
- .GetSceneManager()
- .GetNotificationManager()
- .GetStackManager()
- .GetQualityManager()
- .GetSocialHandler()
- .GetSlabManager()
- .GetRecordingCamera()
- .GetCombatManager()
- .GetBHapticsManager()
- .GetPhotonHandler()
- .GetAudioManager()
- .GetSteamAudioManager()
- .GetUIGameObject()
- .GetPoolManager()
- Calls.Pools.Structures
- .GetPoolDisc()
- .GetPoolPillar()
- .GetPoolBall()
- .GetPoolCube()
- .GetPoolWall()
- .GetPoolSmallRock()
- .GetPoolLargeRock()
- .GetPoolBoulderBall()
- Calls.Pools.ShiftStones
- .GetPoolVolatileStone()
- .GetPoolChargeStone()
- .GetPoolSurgeStone()
- .GetPoolFlowStone()
- .GetPoolGuardStone()
- .GetPoolStubbornStone()
- .GetPoolAdamantStone()
- .GetPoolVigorStone()
- Calls.Players
- .IsHost()
- .GetAllPlayers()
- .GetLocalPlayer()
- .GetPlayerController()
- .GetEnemyPlayers()
- .GetClosestPlayer(UnityEngine.Vector3 pos, bool ignoreLocalController)
- .GetClosestPlayer(UnityEngine.Vector3 pos, PlayerController ignoreController)
- .GetPlayerByControllerType(RUMBLE.Players.ControllerType controllerType)
- .GetPlayerByActorNo(int actorNumber)
- .GetPlayersInActorNoOrder()
- .GetLocalHealthbarGameObject()
- Calls.Create (Callable after first Gym Load)
- .NewText()
- .NewText(string text, float textSize, Color textColor, UnityEngine.Vector3 textPosition, Quaternion textRotation)
- .NewButton()
- .NewButton(UnityEngine.Vector3 buttonPosition, Quaternion buttonRotation)
- .NewButton(Action action)
- .NewButton(UnityEngine.Vector3 buttonPosition, Quaternion buttonRotation, Action action)
- Calls.ControllerMap
- .LeftController.Get(Trigger, Grip, Primary, Secondary, Joystick, JoystickClick)
- .RightController.Get(Trigger, Grip, Primary, Secondary, Joystick, JoystickClick)
- Able to be Called in the Gym:
- Calls.GameObjects.Gym.*
- Calls.Gym
- .GetGymMailTube()
- .GetGymMatchConsole()
- .GetGymRegionSelectorGameObject()
- .GetGymBeltRack()
- .GetGymFriendBoard()
- .GetParkBoardBasicGymVariant()
- .GetGymParkBoardGymVariant()
- .GetGymHoward()
- .GetGymPoseGhostHandler()
- .GetGymDailyLeaderboard()
- .GetGymRankStatusSlabGameObject()
- .GetGymCommunitySlabGameObject()
- .GetGymShiftstoneQuickswapper()
- .GetGymShiftstoneCabinet()
- .GetGymGondolaGameObject()
- .GetGymRanksGameObject()
- .GetGymSpawnPointHandler()
- .GetGymMatchmakingHandler()
- .GetGymRewardHandler()
- Able to be Called in the Park:
- Calls.GameObjects.Park.*
- Calls.Park
- .GetParkSpawnPointHandler()
- .GetParkInstance()
- .GetParkFriendBoard()
- .GetParkBoardBasicParkVariant()
- .GetParkBoardParkVariant()
- .GetParkShiftstoneQuickswapper()
- Able to be Called in Matchmaking:
- Calls.Mods
- .getMyModString()
- .getOpponentModString()
- .getMyMods()
- .getOpponentMods()
- .doesOpponentHaveMod(string modName, string modVersion, bool matchVersion = true)
- Able to be Called in The Ring:
- Calls.GameObjects.Map0.*
- Able to be Called in The Pit:
- Calls.GameObjects.Map1.*
- Actions to Listen to:
- Calls.onMapInitialized (used shortly after scene change when api has scene items)
- Calls.onModStringRecieved (used right after mod list is recieved to check opponents mods)
Help And Other Resources
Get help and find other resources in the Modding Discord: https://discord.gg/fsbcnZgzfa