Mod:Component Explorer
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
Installation
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.
Usage
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.
Entity list
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 Name
, Tags
, and File
fields.
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.
Entity picker
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.
Entity window
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.
Component window
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.
Lua Console
The Lua console allows you to quickly and easily evaluate Lua expressions.
To see the value of an expression you must either print
it or use 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 print
or return
you won't see the result of the expression. Using the print
function on a table will show something like "table: 0x160501d8", using 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.
Logger window/overlay
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 :^)
Wiki Wands
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!
Settings
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!
Main Window
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.
Default Windows
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.
XML defaults
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.
Pause settings
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.
Development
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.