AutoHookGenPatcher
MonoMod's HookGen as a Fully Automatic BepInEx Patcher.
Date uploaded | 7 months ago |
Version | 1.0.2 |
Download link | Hamunii-AutoHookGenPatcher-1.0.2.zip |
Downloads | 48322 |
Dependency string | Hamunii-AutoHookGenPatcher-1.0.2 |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100Hamunii-DetourContext_Dispose_Fix
A BepInEx patcher to fix MonoMod.RuntimeDetour's DetourContext.Dispose not working.
Preferred version: 1.0.3README
AutoHookGenPatcher
Automatically generates MonoMod.RuntimeDetour.HookGen's MMHOOK
files during the BepInEx preloader phase.
Manual Installation:
Move the BepInEx
folder from the ZIP file to the BepInEx
folder of the game.
This project is not officially linked with BepInEx nor with MonoMod.
This software is based off of HookGenPatcher by HarbingerOfMe, which is also licensed under MIT.
Differences to the original HookGenPatcher
- Instead of only having a fixed list of files to generate MMHOOK files for, AutoHookGenPatcher will get the MMHOOK file references from installed plugins, and generates those MMHOOK files if possible.
- AutoHookGenPatcher makes use of a cache file to quickly check if everything is still up to date, without needing to check every MMHOOK file for that information.
- Hook Generation is now multithreaded, meaning that generating multiple MMHOOK files takes less time. For example, generating an MMHOOK file for every file in the
Managed
directory of Lethal Company takes about 22.5 seconds instead of 40.0 seconds it would take with no multithreading, on my machine.
Usage For Developers
Note: By default, AutoHookGenPatcher already generates an MMHOOK
assembly for Assembly-CSharp.dll
. So if you only need MMHOOK_Assembly-CSharp.dll
, you don't need to do anything.
Using AutoHookGenPatcher is really simple, and the only thing you need to do is tell it to generate the MMHOOK files you want in the first place. This can be by editing the config file AutoHookGenPatcher.cfg
, and setting the [Generate MMHOOK File for All Plugins]
setting's Enabled
value to true
:
[Generate MMHOOK File for All Plugins]
## If enabled, AutoHookGenPatcher will generate MMHOOK files for all plugins
## even if their MMHOOK files were not referenced by other plugins.
## Use this for getting the MMHOOK files you need for your plugin.
# Setting type: Boolean
# Default value: false
Enabled = true
## Automatically disable the above setting after the MMHOOK files have been generated.
# Setting type: Boolean
# Default value: true
Disable After Generating = true
When you publish your mod, make sure to add AutoHookGenPatcher as a dependency in the package you upload.
Q&A
How does AutoHookGenPatcher figure out which MMHOOK files my mod references?
- During the BepInEx Preloader phase, AutoHookGenPatcher will open and read the metadata of every DLL file* for referenced assemblies and looks for references that start with
MMHOOK_
. It will then check if any installed assemblies match the rest of the name, and will run MonoMod's HookGen on those assemblies if they exist.
*This is only done if the date modified metadata of the assembly on disk is newer than previous known date in AutoHookGenPatcher's cache file, if a cache entry exists for the assembly. Referenced MMHOOK
assemblies are also saved in the cache.
CHANGELOG
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.0.4] - 2024-5-2
Fixed
- Thunderstore description no longer has the second word also start with a capital letter
Other
- Uploaded to Thunderstore's Lethal Company Mod Database
[1.0.3] - 2024-4-12
Fixed
- Handle error in case of BadImageFormatException when reading assemblies
[1.0.2] - 2024-4-5
Fixed
- Handle error if two non-plugin assemblies with the same name exist
[1.0.1] - 2024-4-4
Changed
- Thunderstore CLI is now used for building the Thunderstore package
- Improved README to explain better what AutoHookGenPatcher does
Fixed
- Fixed a bug which prevented AutoHookGenPatcher from generating new version of MMHOOK assembly if that MMHOOK assembly existed already
- Minor typos in README
Other
- Uploaded to Thunderstore's Plasma Mod Database
[1.0.0] - 2024-4-2
Changed
Initial release — Differences to the original HookGenPatcher
- Instead of only having a fixed list of files to generate MMHOOK files for, AutoHookGenPatcher will get the MMHOOK file references from installed plugins, and generates those MMHOOK files if possible.
- AutoHookGenPatcher makes use of a cache file to quickly check if everything is still up to date, without needing to check every MMHOOK file for that information.
- Hook Generation is now multithreaded, meaning that generating multiple MMHOOK files takes less time. For example, generating an MMHOOK file for every file in the
Managed
directory of Lethal Company takes about 22.5 seconds instead of 40.0 seconds it would take with no multithreading, on my machine.