In the Release version of RoR2, Hopoo Games made a NetworkModCompatibilityHelper
class, which can be given a mod list that is then transformed into a hash that will be checked upon client connection in multiplayer.
If the hash doesnt correspond between the server and the connecting client, the connection is refused.
R2API will add mods to that mod list if they:
- Use the
NetworkCompatibility
Attribute, either as an custom assembly attribute, or at the top of their plugin class inheriting fromBaseUnityPlugin
with the first argument beingCompatibilityLevel.EveryoneMustHaveMod
. - Don't have the
NetworkCompatibility
Attribute but depend on R2API (have[BepInDependency("com.bepis.r2api")]
attribute).
R2API is a modding framework for other mods to work in, providing centralized and simplified APIs for Risk of Rain 2. This helps keeping mods compatible with each other.
At it's core, R2API should not change how the game behaves without any other mod installed. The only change is to keep mods out of quickplay and prismatic trials by request of the Hopoo Games team.
The contents of R2API
should be extracted into the BepInEx
folder, such that the files inside the plugins
folder in the zip sit in the plugins
folder in BepInEx.
Also you need to install HookGenPatcher because R2API wont function without it.
A lot of documentation is in the included xmldocs, and further information may be on the dedicated R2API wiki. Do not hestiate to ask in the modding discord too!
Unless you are a mod developer, you won't need this.
Want to get the latest versions of R2API? The latest bleeding edge builds of master
are hosted on Azure, and may be downloaded using the Artifacts
drop down menu.
Note that such builds may be unstable.
The most recent changelog can always be found on the GitHub. In this readme, only the most recent minor version will have a changelog.
Current
- ItemAPI now warns that ItemDef/EquipmentDef.pickupModelPrefab should have an ItemDisplay attached to them when they have ParentedPrefab display rules linked to them
- EliteAPI now exposes the default elite tiers array (through VanillaEliteTiers) before any changes are made to it for modder that want to change the vanilla elite tiers. Also, adding to the custom elite tier array now by default insert based on the cost multiplier of the elite tier.
- RecalculateStatsAPI now warns modders that the submodule could be not loaded
- Fix SoundAPI throwing on dedicated server
- Added TempVisualEffectAPI
3.0.59
- Extended SoundAPI for adding custom music
- Added support for using existing UnlockableDefs in UnlockableAPI
- fixing server unlockables
3.0.52
3.0.50
3.0.48
3.0.44
3.0.43
- IMPORTANT FOR MOD DEVS: R2API will no longer register mods to network if they don't depend on it with HardDependecy
- Added DeployableAPI
- Added DamageAPI
- Added RecalcStatsAPI, migrated from TILER2
- Updated DifficultyAPI, now has sprite ref overload
- RecalcStatsAPI fixes
- Missing MMHOOK/Publicized Assembly methods fixes
3.0.30
- Fixes for current patch
3.0.25
- IMPORTANT FOR MOD DEVS: R2API will no longer register mods to network if they don't depend on it
- DotAPI fixes
- EliteAPI fixes
3.0.13
- Updated UnlockableAPI, ItemDropAPI Overhall
- Update internals for 1.1.1.2 game version
- Removed MonsterItemsAPI
- Removed
patchers
folder
3.0.11
- Updated ResourceAPI error messages
- SurvivorAPI Fixes: A B
3.0.7
3.0.1
3.0.0
- Updated for the game
Anniversary Update
- No longer include
monomod
folder - Various API Fixes. Removed AssetsAPI, InvetoryAPI. Moved MMHook to separate mod called (HookGenPatcher)
- Removed obsolete APIs and methods: A B
- ItemAPI, ItemDropApi overhall. Added MonsterItemAPI: A B C D E F G
- LanguageAPI refactoring and fixes: A B
- Added ILLine
- Fix for networked achievements
- Added SceneAssetAPI
- Added InteractablesAPI