-
-
Notifications
You must be signed in to change notification settings - Fork 2
Console
English | 日本語
Experimental. This came in with the Tool window library 1.1.0, released with framework 1.2.0 (2026-09-17).
The Console tab of the Tool window (F1, with Developer tools turned on in Options → Mods → Drag'n Wash ModFramework) shows the log live, in colour, and lets you type commands. It's for people who make or debug mods, so players never need it.
Every line BepInEx logs, from any mod and from Unity, shows up here with its level and its source (the log source's name, such as DragNWash.ModFramework.Assets or Unity Log). The console keeps the last 2,000 lines. BepInEx/LogOutput.log still gets everything, and the console only picks what to show you.
| Level | Colour | Typical use |
|---|---|---|
| Fatal, Error | red | crashes, exceptions |
| Warning | amber | a replacement clash, an unreadable file, the Direct3D 12 notice |
| Message | accent | results meant for a person ("Replacements applied in 3 places") |
| Info | normal | ordinary progress |
| Debug | muted | detail; hidden by default |
If an error comes in while the tab isn't open, the tab button reads Console ! until you open it.
On Direct3D 12, from Tool window 1.1.1 with core 1.3.0, the console shows translated text instead of ? while the core batches up font atlas uploads (see Crash reports).
There are three ways to do it. They all write the same settings, which live in the Tool window's config file, so they survive a restart.
- On the tab itself there's a button per level to show or hide it, and a box that filters by source.
- With commands:
log show debug,log show info off,log level unity info,log level DragNWash.ModFramework.Assets debug,log level default warning,log filter Assets. - On the Mods screen, under Options → Mods → Drag'n Wash ModFramework: Tool window → the Console section, there's
[Console] Show(the levels shown) and[Console] Levels(the lowest level per source).
By default, mods show Info and above, Unity's own log shows Warning and above, and Debug is hidden. You can hide errors too, but then the tab tells you, so nothing gets missed by accident.
Type in the line at the bottom and press Enter. As you type, the list above the line shows what could come next: command names for the first word, then whatever the command offers for its arguments (levels and sources for log, textures / reload and so on for assets). Tab fills in the highlighted one, up and down move through the list, and Escape hides it. When there's no list, up and down walk through the history.
| Command | Does |
|---|---|
help, help <name>
|
lists commands, or describes one |
log <n> |
the last n lines |
log show <level> [off], `log level <source |
unity |
mods |
loaded plugins, with the features the framework found unavailable |
mods network |
what each mod says it connects to, and what it was actually seen connecting to this session (Going online) |
mods reload <guid>, `mods watch on |
off` |
scene |
the loaded scene |
clear, cls
|
clears the console (same as log clear) |
assets textures [filter], assets replacements, assets apply, assets reload
|
from the Assets library |
inspect ... |
selects an object, or sets a value, from the Inspector library |
op ... |
the operations mods registered; see below (experimental) |
If a command throws, the console prints the error in red with the name of the mod that owns it, and nothing else happens. There's no scripting language and none is planned. Commands are just what mods register.
Experimental. This came in with framework 1.4.0 and may change or go away in a later version.
op gets you into the Operations registry, which is the list of things each library can do, by name (library.noun.verb).
| Command | Does |
|---|---|
op |
lists every operation with its description; the ones that change something are marked [write]
|
op help <name> |
describes one: read or write, which mod it comes from, each parameter (type, required or not, the accepted choices) and what it returns |
op <name> key=value ... |
runs it and prints the result as JSON; a list comes one item per line, with the count at the end |
Completion offers operation names first, then the chosen operation's parameters as name=. If an argument isn't key=value, it's refused and you get the operation's description instead.
The Tool window registers one operation of its own, log.read, which returns the last console lines, newest last. It takes max (1 to 500, 50 if you leave it out), source (only lines whose source contains this) and level (this level and anything more severe). For example: op log.read max=20 level=Warning.
ToolWindow.AddCommand(MyMod.Guid, "tl", "tl reload | tl find <text>", args =>
{
if (args.Length > 0 && args[0] == "reload") { Reload(); return "Reloaded."; }
return "tl reload | tl find <text>";
});- A fifth argument lets you offer completions. It gets the words typed after the name (the last one may be partial, or
""right after a space) and returns what could go there. - Use one lower-case word for the name. If another mod registered the same name first, yours only runs as
yourguid:name(the short form after the last dot works too), andhelplists both. - Return the text to print, with
\nbetween lines. Anything people shouldn't do without thinking (changing a save, for example) should ask for a--yesargument. - To print from somewhere else, use
ConsoleLog.Print(text, LogLevel). Your normal BepInEx logging already shows up with your mod's name. - Keep command text ASCII, or call
ToolWindow.PrepareCharactersfor whatever you print (the window's font is rasterised at startup).
Players
Mod authors
- Getting started
- Playing well with others (the guide)
- Going online
- Installer
- Mod reload
- Overrides (no code)
- Graphs (no code, makes things happen)
Tools (F1, developer tools)
- Inspector
- Console
- Code graph
- Bridge (AI clients, MCP)
API
日本語
- ホーム
- プレイヤー向け · ランチャー · FAQ · クラッシュレポート
- はじめての Mod · ほかの Mod と一緒に動かす · 外と通信する Mod · インストーラー · Mod の再読み込み · Overrides · Graphs
- Inspector · Console · コードのグラフ · Bridge
- 中核 API · 操作の登録簿 · Text · Dialogue · Tool window · Assets · Flags and saves · GameEvents · SettingMeta
Links
- Repository
- Releases
- Changelog
- Design records: DESIGN · ROADMAP · CONTENT_POLICY