Details
Target: Obenseuer 0.5.08 (buildid 25969064), Unity 6000.0.77f1 Mono, BepInEx 6 Unity.Mono (be.788, the tested build) or BepInEx 5 (5.4.23 or later). Namespace: ObenseuerCore. Logs go to BepInEx\logs\obenseuer.moddingframework.levels.log.
Everything not listed in this reference is internal and may change without notice.
The framework changes one game method when it starts, so it can tell your mod when the game is about to change level. This page calls that a feature group: its name is obenseuer.moddingframework.levels, the name you will see in the log.
When you can call it
- Call everything from your mod’s normal code (
OnLoad, event handlers,Update), not from a background thread you started. The game and Unity only run safely on the main thread (see the glossary). This goes for the code that handlesChangingtoo. - It is safe to call any of it at any time, even on the main menu or while a save is loading. With no scene to look in,
All()gives an empty list,Getgivesnull, andSetLocked,UseandChangeTogivefalse. Those three also givefalsewhile a save is loading or being written.
What to check for and what comes back
Levels.IsAvailabletells you whetherChangingworks. It isfalsewhen the framework could not set up the event, or when the feature group was turned off. The reads,SetLocked,UseandChangeTokeep working.- Nothing here throws an error to you. A
nullor unknown id finds nothing.
If something fails to set up
The framework changes some of the game’s methods when it starts. If a game update breaks one of them, the framework turns off the feature group that depends on it, and writes error lines to the group’s log file in BepInEx\logs. The rest of the framework keeps working.
- If the framework cannot change the game’s level change method,
Changingstops and the rest keeps working.IsAvailablebecomesfalse. (The method isChangelevel.ChangeLevel.)