![UlvakSkillz-RumbleModdingAPI-3.0.3 icon](https://gcdn.thunderstore.io/live/repository/icons/UlvakSkillz-RumbleModdingAPI-3.0.3.png.128x128_q95.jpg)
RumbleModdingAPI
API to Help Modders Get Started and to remove the necessity of GameObject.Find
By UlvakSkillz
Date uploaded | 3 months ago |
Version | 3.0.3 |
Download link | UlvakSkillz-RumbleModdingAPI-3.0.3.zip |
Downloads | 16 |
Dependency string | UlvakSkillz-RumbleModdingAPI-3.0.3 |
This mod requires the following mods to function
![LavaGang-MelonLoader-0.6.4 icon](https://gcdn.thunderstore.io/live/repository/icons/LavaGang-MelonLoader-0.6.4.png.64x64_q95.png)
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 The Ring:
- Calls.GameObjects.Map0.*
- Able to be Called in The Pit:
- Calls.GameObjects.Map1.*
Help And Other Resources
Get help and find other resources in the Modding Discord: https://discord.gg/fsbcnZgzfa
CHANGELOG
Version 3.1.1
- Fixed doesOpponentHaveMod Function
Version 3.1.0
- Added Opponent Mod List Grabbing
- Added Calls.Mods.getMyModString()
- Added Calls.Mods.getOpponentModString()
- Added Calls.Mods.getMyMods()
- Added Calls.Mods.getOpponentMods()
- Added Calls.Mods.doesOpponentHaveMod(string modName, string modVersion, bool matchVersion)
- Added Action onModStringRecieved (this is where you add a listener to check matching mods)
Version 3.0.6
- Fixed WorldTurotial/CombatCarving Returns
Version 3.0.5
- (Actually) (ACTUALLY MOVED DLL THIS TIME) Updated to MelonLoader v0.6.2+
Version 3.0.4
- (Actually) Updated to MelonLoader v0.6.2+
Version 3.0.3
- Updated to MelonLoader v0.6.2+
Version 3.0.2
- Fixed ReadMe
- Made MapInitialized Invoke after getting Health
Version 3.0.1
- Log Statements Get their ModName again
Version 3.0.0
- Updated to MelonLoader 0.6.2
Version 2.2.3
- Fixed Calls.GameObjects.Map1.Map1Production.MainStaticGroup calls pointing to wrong spot
- Added Mod Color
Version 2.2.2
- Removed left over Log Message
Version 2.2.1
- Fixed Changelog Formatting
- Changed System.Action isMapInitialized to static System.Action onMapInitialized
Version 2.2.0
- Created Changelog
- Added "Calls.Create" Class with "NewButton" and "NewText" Methods
- Added "System.Action isMapInitialized" so others can add a listener to do something on every scene change after it is done initializing each scene change.
- Added Calls.ControllerMap.(Left/Right)Controller.Get(Trigger, Grip, Primary, Secondary, Joystick, JoystickClick)
- Changed Managers away from GameObject.Find to ManagerType.instance
Version 2.1.4
- Fixed File Pathing to Structure Pools
Version 2.1.3
- Fixed File Pathing to Both Match Slabs in Both Maps
Version 2.1.2
- Added Calls.IsMapInitialized()
- Actually Fixed IsHost()
Version 2.1.1
- Fixed IsHost() Always Returning True (except in Park)
- Removed Unused GameObject.Find() that Eluded Deletion
Version 2.1.0
- Replaced Calls.Scene.SceneChangeDone with Calls.Scene.WhenSceneChanged
- Added "Calls.GameObjects" and Child Calls to get almost any GameObject
Version 2.0.0
- Updated to no longer create an instance of the API for every mod that uses it but instead works as a Data Server.
- Moved Methods into Different Call Paths to Help Organization
- Added Method Calls.IsHost
- Players in Actor Number Order
Help And Other Resources
Get help and find other resources in the Modding Discord: https://discord.gg/fsbcnZgzfa