Skyrim Special Edition
0 of 0

File information

Last updated

Original upload

Created by


Uploaded by


Virus scan

Safe to use

About this mod

NL_MCM is an object oriented module based extension of the SkyUI MCM scripts. It primarily functions as a redistributable framework that allows mod authors to separate their MCM pages into individual scripts.

Permissions and credits



NL_MCM is an object oriented module based extension of SkyUI MCM scripts. It functions as a redistributable framework that allows mod authors to separate their MCM pages into individual scripts, as well as dynamically attaching and detaching them to MCM menus. It also contains several advanced QoL features to make writing MCMs easier.

Key Features

  • Modularity
    - You can have 1 Core MCM menu, and release other mods that can attach as pages to that menu
  • Advanced state options
    - Allow several options to use the same state logic
  • Automatic key conflict handling
    - You no longer need to deal with any key conflicts yourself
  • Unregister and register pages on the fly
    - You could make a quest dynamically add or remove pages from the MCM menu
  • Automatic paragraph handling
    - Supports html formatting
  • Built-in font formats for different purposes
    - Fonts will automatically switch depending on the installed UI skin
  • Open and Exit MCM functionality
    - Create direct quick hotkeys to your mcm menu and open/close the MCM menu on command
  • Individual page version support
    - You can now update pages individually instead of the whole MCM using a new version tracking system
  • Extended control over pages
    - Set landing pages, set splash screens, force page switches and rename them at any time
  • Built-in preset saving functionality
    - Requires JContainers and supports persistent MCM settings that carry over between save games

Compatible With

For Users:

As a user, you only need to download the main file to ensure that your load order supports mods using the NL_MCM framework. Alternatively, mod authors might have already bundled NL_MCM together with their own mod, in which case you can download the main file and overwrite their version to ensure you are always running the latest version of NL_MCM.

Load Order

Preferably overwrite the nl_mcm files in any other mods that redistribute the scripts.

For Mod Authors:

At its core, NL_MCM functions as a wrapper for the SkyUI MCM API interface, retaining most of the original functionality. This in turn, means that SkyUI is still needed as a end-user dependency, and that the SkyUI SDK is required to compile NL_MCM mods.


To get started with building a MCM using the NL_MCM framework, check out the Github project page and the Quickstart wiki page. Alternatively, you can jump straight ahead to the examples if you know what you are doing.

JContainers Support

NL_MCM has built in JContainers support, which enables you to easily add preset support to your mod if users have it installed. To make matters even better, there is no limit to how many of these presets you can have, or how you want to store them (want users to be able to name their own presets? No problem!). Look at the pre-existing examples to see how this can be implemented.

Good to know

Although most of the NL_MCM API is very similar or identical to the SkyUI MCM API, it is important to take note of the exclusion of the dated option ID system. Instead NL_MCM works solely with a variation of the SkyUI State API, which introduces a new parameter to the state events:

; Select event in the old State event API:
event OnSelectST()

; Select event in the new state event API
event OnSelectST(string state_id)
; The state_id parameter can either be ignored, or used to facilitate advanced state options that share logic.
; In short: The event works identical to the old one apart from the addition of a new parameter.

; Another example:
; Old
event OnInputAcceptST(string str)

; New
event OnInputAcceptST(string state_id, string str)

Notably the following events have also had their name/parameters changed:


; (1) Original SkyUI MCM API:
event OnPageReset(string page)

; (1) NL_MCM API:
event OnPageDraw()

; (2) Original SkyUI MCM API:
event OnConfigInit()

; (2) NL_MCM API
event OnPageInit()

; (3) Original SkyUI MCM API:
event OnKeyMapChangeST(int keyCode, string conflictControl, string conflictName)

; (3) NL_MCM API:
event OnKeyMapChangeST(string state_id, int keyCode)