Component Explorer is a mod with a bunch of useful utilities for modders.
It has the following features:
- Entity and component viewer
- Lua console
- logger.txt window and overlay
- Magic Numbers (Steam Only)
- Debug (Steam Only)
- Wiki Wands
Component Explorer requires 'unsafe' mode for some functionality and can therefore not be uploaded to the Steam workshop. The mod is available for download from modworkshop.net https://modworkshop.net/mod/39637. Component Explorer uses Mod:Noita Dear ImGui to render its user interface so you'll also need to download and install that mod, it's available here: https://github.com/dextercd/Noita-Dear-ImGui/releases.
The 'Unsafe mods' option must be set to 'Allowed' to enable Component Explorer and Noita Dear ImGui. Make sure that Noita Dear ImGui is placed above Component Explorer in the mod load order else the mod won't work.
Once Component Explorer is properly installed, you should see its main window when you enter a run. The main window shows what version of the mod you're using and has a link to the mod's homepage. From the 'View' menu in the window's menu bar you can toggle on/off features of Component Explorer.
The entities list window displays all entities that currently exist. By default child entities are not in the list but you can use the checkbox to include them. The search input will look for matches in the
Once you find the entity you're interested in, you can use the 'Open' button to create a new window for operating on that entity.
Another way to open an entity window is by using the 'Entity Picker' functionality, this allows you to select an entity that's on your screen.
Activate the picker by using the 'Entity Picker' option in the view menu or by using the keyboard shortcut
ctrl+shift+e. Once activated, you should see a window following the cursor. When the cursor is near one or more entities, they should appear in the window as a numbered list. Hitting the digit corresponding to an entity should open up a new entity window. You can hit
escape to cancel the action.
The entity window shows all kind of properties of the entity and allows you to change a lot of them.
The Attributes section shows some basic info on the entity, such as it's position, rotation, scale, it's name and it's filename. There's a button to remove the entity and a button to copy the entity XML to your clipboard.
The Tags section shows all tags the entity has. You can remove tags or add new ones, there's a button for toggling tags that are commonly used.
The Child Entities section shows a tree-view of all child entities. You can use the buttons to the right of the entities to open up a new entity window for them.
The Components section lists all component on the entity. You can enable/disable components from here or add new ones. The 'Open' button opens up a new window for operating on the component.
The component window allows you to investigate and change various properties of a component.
From the Attributes section you can copy the component's XML to the clipboard. You can also enable/disable the component or remove it completely from the entity.
The Tags section shows some component tags that have a special meaning in Noita. You can remove/add the tags using the checkboxes. (Due to limitations in Noita's modding API, it does not allow you to work with arbitrary tags on the component, this is different from the Tags section in entity windows.)
Members, Privates, Privates, Objects, and Custom data types section correspond with the same sections listed in the
tools_modding/component_documentation.txt file. You can view and change the component's field values from here. Note that not all fields are currently available.
Component/Entity windows toggle
If you've opened up a bunch of component or entity windows you can use these two menu options to get them out of the way for a bit. Once you re-enable the toggles, the windows should reappear.
The Lua console allows you to quickly and easily evaluate Lua expressions.
To see the value of an expression you must either
return. An expression such as
1 + 2 will fail to parse, while
print(1 + 2) or
return 1 + 2 works as expected. An expression such as
math.sqrt(2) will parse correctly but without
return you won't see the result of the expression. Using the
return on a table will recursively display the whole table.
Right clicking on an evaluated command or its output will show several options such as copying the command/output or reevaluating the command.
From the Lua console you can use some of the internal functions of Component Explorer, for instance, running
watch_entity(1) will open up an entity window for the entity with ID 1.
The logger window/overlay displays the contents of the logger.txt file. Be sure to install the Enable Logger mod to get the most use out of this.
The overlay can not be scrolled back to see earlier entries, this is possible with the logger window if you turn off auto scroll.
Magic Numbers (Steam Only)
View and edit magic number values. Only available on the latest (April 23 2021) Steam version of noita.exe.
It's normally not possible to change magic numbers from a mod because there's no option for it in the modding API. This was implemented by finding the addresses where the magic numbers are located and then reading/writing them using the unrestricted modding API. Since the game doesn't expect most of these numbers to change during a run, changing values might not have any effect or may make the game unstable. A lot of stuff does work exactly as expected.
Debug (Steam Only)
Enable debug features inside the Steam version of noita.exe. These features are normally only available in noita_dev.exe.
Many debug settings work but some require other debug settings to be enabled. The disclaimer for the magic numbers also count for this window.. it's normally not possible to enable these feature from a mod so it may cause instability. It's still very useful :^)
Turns the currently held wand into Template:Wand or Template:Wand Card format. You can copy the text and paste it right into this wiki!
Component Explorer has a bunch of settings so that you can tune it to your personal tastes. If you think some behaviour of Component Explorer should be customisable, give me a ping and I'll think about it!
Choose where the main/control window should go. This is the menu bar through which you open/close individual features. You can put the menu on any side of the screen and choose how far left/right or up/down it should go on the side that you selected.
The main window settings take effect as soon as you unpause the game.
Choose what windows should be open at the start of a run. These settings take effect as soon as you start a new run or restart the game.
Choose how the entities/components should be serialized to XML. These settings take effect as soon as you start a new run or restart the game.
Whether the Component Explorer windows should be visible while the game is paused. These settings take effect as soon as you start a new run or restart the game.
Component Explorer is still in active development. It's source code is hosted on GitHub: https://github.com/dextercd/Noita-Component-Explorer. You're more than welcome to open merge requests or raise issues there. You can also post question or issues in the Discord release post.
This project uses Python/Jinja2 to generate the UI and XML serialisation code for all 160 different components. CMake is a build system that's used to orchestrate this and create the final mod zip file. As long as you're not making changes to the generated code you shouldn't have to worry too much about this when developing fixes or new features. Give me a ping in Discord (dextercd#7326) if you wish to contribute and need help with this.