# Meath00k Commands

<p class="callout warning">The Meathook tool is required to execute special commands like **noclip** and **notarget**.</p>

### Meath00k Tool

**Meath00k (aka M347h00k or Monkeyhook) *by Chrispy* - [Download](https://github.com/brongo/m3337ho0o0ok/releases/latest)**  
\- Meath00k unlocks developer commands and allows you to edit your level in-game.  
*To install: Download `<strong>XINPUT1_3.dll</strong>` and place it into the DOOM Eternal installation directory (like how you installed the Mod Injector).*

### Basic Meathook Commands

<table border="1" id="bkmrk-command-information-" style="border-collapse: collapse; width: 100%; height: 466px;"><tbody><tr style="height: 69px;"><td class="align-center" style="width: 33.3333%; height: 69px;">##### **Command**

</td><td class="align-center" style="width: 33.3333%; height: 69px;">##### **Information**

</td><td class="align-center" style="width: 33.3333%; height: 69px;">##### **Example**

</td></tr><tr style="height: 28px;"><td style="width: 33.3333%; height: 28px;">**chrispy  
</td><td style="width: 33.3333%; height: 28px;">Spawns an entity at the position of your cross-hair. See [EntityDefs](https://wiki.eternalmods.com/books/7-miscellaneous/chapter/entitydefs) for more possible spawns.</td><td style="width: 33.3333%; height: 28px;">`<strong>chrispy ai/heavy/hellknight</strong>`

`<strong>chrispy pickup/powerup/berserk</strong>`

</td></tr><tr style="height: 49px;"><td style="width: 33.3333%; height: 49px;">**noclip**</td><td style="width: 33.3333%; height: 49px;">Allows the player to pass through geometer unhindered. This command is toggle-able by itself.</td><td style="width: 33.3333%; height: 49px;">`<strong>noclip</strong>`</td></tr><tr style="height: 49px;"><td style="width: 33.3333%; height: 49px;">**notarget**</td><td style="width: 33.3333%; height: 49px;">Prevents the player from being target-able, which makes the AI idle. This command is toggle-able by itself.</td><td style="width: 33.3333%; height: 49px;">`<strong>notarget</strong>`</td></tr></tbody></table>

### All Meathook Commands

<table border="1" id="bkmrk-command-information--0" style="border-collapse: collapse; width: 100%; height: 1306px;"><tbody><tr style="height: 69px;"><td class="align-center" style="width: 33.3333%; height: 69px;">##### **Command**

</td><td class="align-center" style="width: 33.3333%; height: 69px;">##### **Information**

</td><td class="align-center" style="width: 33.3333%; height: 69px;">##### **Example**

</td></tr><tr style="height: 28px;"><td style="width: 33.3333%; height: 28px;">**mh\_active\_encounter**</td><td style="width: 33.3333%; height: 28px;">Get the list of active encounter managers.</td><td style="width: 33.3333%; height: 28px;">`<strong>mh_active_encounter</strong>`</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_ang2mat**</td><td style="width: 33.3333%; height: 31px;">mh\_ang2mat pitch yaw roll : converts the pitch, yaw and roll values for idAngles to a decl - formatted matrix, copying the result to your clipboard.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_angleincr**</td><td style="width: 33.3333%; height: 31px;">&lt;double&gt; amount to inc/dec by with angle editing.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_cpuinfo**</td><td style="width: 33.3333%; height: 31px;">Takes no args, dumps info about your cpu for dev purposes.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_current\_checkpoint**</td><td style="width: 33.3333%; height: 31px;">Get the current checkpoint name.</td><td style="width: 33.3333%; height: 31px;">`<strong>mh_current_checkpoint</strong>`</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_dump\_bmodel**</td><td style="width: 33.3333%; height: 31px;">&lt;name&gt; &lt;output path&gt; &lt;skip\_compression&gt; Finds a staticmodel and then executes writestaticbmodel to the provided path.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_dumpeventdefs**</td><td style="width: 33.3333%; height: 31px;">mh\_dumpeventdefs &lt;as enum = 0/1&gt;</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_dumpmap**</td><td style="width: 33.3333%; height: 31px;">Dump current idMapLocal to a .map file.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_dumppropidxinfo**</td><td style="width: 33.3333%; height: 31px;">Debug command for dumping the corresponding addresses/rvas for property indices.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_editor**</td><td style="width: 33.3333%; height: 31px;">Sets up the editor session.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_editor\_keys**</td><td style="width: 33.3333%; height: 31px;">Tells you editor stuff.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_editor\_spawn**</td><td style="width: 33.3333%; height: 31px;">Spawns an entity, saving it to the map and grabbing it for manipulation.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_end\_spawnrec**</td><td style="width: 33.3333%; height: 31px;">No args, closes current spawnfile.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_force\_reload**</td><td style="width: 33.3333%; height: 31px;">Force reload current level.</td><td style="width: 33.3333%; height: 31px;">`<strong>mh_force_reload</strong>`</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_gencvarset**</td><td style="width: 33.3333%; height: 31px;">Regenerate doom\_eternal\_cvars\_generated.cpp/hpp for mh build.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_genpropset**</td><td style="width: 33.3333%; height: 31px;">Regenerated doom\_eternal\_properties\_generated.cpp/hpp for use in mh builds. Not for users.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_grab**</td><td style="width: 33.3333%; height: 31px;">Grab an object.</td><td style="width: 33.3333%; height: 31px;">**`mh_grab` (while facing an object)**</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_justforme**</td><td style="width: 33.3333%; height: 31px;">The password is: **inut4splenda** This unlocks advanced commands that are only useful for the developer of the meathook tool.</td><td style="width: 33.3333%; height: 31px;">`<strong>mh_justforme</strong>`</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_killAi**</td><td style="width: 33.3333%; height: 31px;">Kills all living AI.</td><td style="width: 33.3333%; height: 31px;">**`mh_killai`**</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_kw**</td><td style="width: 33.3333%; height: 31px;">Searches all types, enums, typedefs, their comments, field names, typename, template args,eventdefs,vtbl names, cvar names, cvar descriptions for the provided keywords.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_list\_entity\_types**</td><td style="width: 33.3333%; height: 31px;">&lt;filter&gt; lists the names of all subclasses of idEntity with optional filter.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_list\_resource\_lists**</td><td style="width: 33.3333%; height: 31px;">Lists all resource lists by classname/typename, copying the result to the clipboard (the clipboard might not be helpful here).</td><td style="width: 33.3333%; height: 31px;">`<strong>mh_list_resource_lists</strong>`</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_list\_resources\_of\_class**</td><td style="width: 33.3333%; height: 31px;">&lt;resourcelist classname&gt; lists all resources in a given list, copying result to clipboard.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_locate\_fspec\_char\_uses**</td><td style="width: 33.3333%; height: 31px;">&lt;char&gt; Finds all usages of a provided char in event formatspecs/rettypes.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_optimize**</td><td style="width: 33.3333%; height: 31px;">Patches the engine to make stuff run faster. Do not use online, might result in slightly different floating point results (probably not though).</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_printentitydef**</td><td style="width: 33.3333%; height: 31px;">Print the entitydef of the entity with the provided name to the console.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_randomact**</td><td style="width: 33.3333%; height: 31px;">&lt;distance&gt; &lt;scalar&gt; uses scalar + random values to randomly change the color, scale, and velocity of all entities within distance from player.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_reload\_decl**</td><td style="width: 33.3333%; height: 31px;">mh\_reload\_decl &lt;classname(ex:idDeclWeapon)&gt; &lt;decl path&gt;</td><td style="width: 33.3333%; height: 31px;">`<strong>mh_reload_decl idDeclEntitydef ai/heavy/hellknight</strong>`</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_removeAi**</td><td style="width: 33.3333%; height: 31px;">Removes all living AI.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_ScriptCmd**</td><td style="width: 33.3333%; height: 31px;">&lt;event&gt; &lt;args&gt; ai\_ScriptCmd resurrected, now copies the results of the eventcall to your clipboard for chaining commands together.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_ScriptCmdEnt**</td><td style="width: 33.3333%; height: 31px;">&lt;entity&gt; &lt;event&gt; &lt;args&gt; ai\_ScriptCmdEnt resurrected, now copies the results of the eventcall to your clipboard for chaining commands together.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_set\_charscaling**</td><td style="width: 33.3333%; height: 31px;">&lt;w&gt; &lt;h&gt; smallchar w/h override</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_spawnfile**</td><td style="width: 33.3333%; height: 31px;">&lt;spawn file path&gt; spawns the entities at the positions from the file.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_spawninfo**</td><td style="width: 33.3333%; height: 31px;">Copy your current position and orientation, formatted as spawnPosition and spawnOrientation to the clipboard.</td><td style="width: 33.3333%; height: 31px;">`<strong>mh_spawninfo</strong>`</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_spmap**</td><td style="width: 33.3333%; height: 31px;">&lt;map name&gt; shortcut for map maps/game/sp/&lt;map name&gt;/&lt;map name&gt;</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_start\_spawnrec**</td><td style="width: 33.3333%; height: 31px;">&lt;spawn file path&gt; starts recording all chrispy/rechrispy spawns/spawn positions to a file for later exec by mh\_spawnfile.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_test\_genbmodel**</td><td style="width: 33.3333%; height: 31px;">&lt;obj path&gt; &lt;output path&gt; (YOU MUST BE ON V1 WITH RANDOMBASEADDR FLAG OFF ON EXE FOR THIS RIGHT NOW) generate bmodel in standalone resource from .obj</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_testgui**</td><td style="width: 33.3333%; height: 31px;">Displays a test GUI. This does not go away until you quit the game</td><td style="width: 33.3333%; height: 31px;">`<strong>mh_testgui</strong>`</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_testmaterial**</td><td style="width: 33.3333%; height: 31px;">Takes one arg, a material name. Renders the material to the test window. Passing no args clears the test window.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr><tr style="height: 31px;"><td style="width: 33.3333%; height: 31px;">**mh\_type**</td><td style="width: 33.3333%; height: 31px;">Dump fields for provided class.</td><td style="width: 33.3333%; height: 31px;">  
</td></tr></tbody></table>

### See Also

- [Commands (CMD)](https://wiki.eternalmods.com/books/3-command-console/page/commands-cmd)
- [Console Variables (CVAR)](https://wiki.eternalmods.com/books/3-command-console/page/console-variables-cvar)
- [Entities](https://wiki.eternalmods.com/books/5-level-modding/chapter/entities)