A C# plugin loader for Monster Hunter World based on .NET 8.0.
For more detailed documentation and tutorials, visit the wiki.
- Install .NET 8.0 (Get the .NET Desktop Runtime 8.0.x)
- Download the latest release from the releases page and extract it into your Monster Hunter World directory.
For more detailed instructions visit the wiki.
- Install the Visual Studio 2022 17.8 Preview 2 or later.
- Create a new .NET 8.0 class library project and add a reference to the
SharpPluginLoader.CoreNuGet package. - Create a class that implements the
SharpPluginLoader.Core.IPlugininterface. - Put the compiled assembly into
nativePC/plugins/CSharp. Assemblies are also allowed to be in subdirectories.
- Clone the repository with submodules:
git clone --recursive git@github.com:Fexty12573/SharpPluginLoader.git
- Setup vcpkg IDE integration if you haven't already done so:
- Open
Developer PowerShell for Visual Studio - Run
vcpkg integrate install
- Open
- Generate cimgui VS project:
- Open
Developer PowerShell for Visual Studio cd SharpPluginLoader\dependencies\cimgui\cmake -B . -G 'Visual Studio 17 2022'
- Open
- Open
mhw-cs-plugin-loader.slnx - Build solution
Build -> Build Solution
To create release packages you can use the make-package.py script. It will build everything and package it into a ready to use zip.
make-package.py [-h] [-c {Release,Debug}] [-m] sln_dir tag
Create a release of the plugin loader
positional arguments:
sln_dir The directory of the solution
tag The tag to use for the release in the format x.x.x[.x]
options:
-h, --help show this help message and exit
-c {Release,Debug}, --config {Release,Debug}
The configuration to build
-m, --msbuild-in-path
Set if msbuild is in the PATH environment variable
Example invocation: python make-package.py -c Release -m ./ 0.1.0
- Make sure all projects are compiled in Debug mode.
- Open the
mhw-cs-plugin-loaderproject properties, make sure the Debug configuration is selected and go to General > Debugging. Here set the Debugger Type to Mixed (.NET Core). - In the Attach to Process dialog, make sure Managed (.NET Core, .NET 5+) and Native are selected.
If you would like to contribute, feel free to fork the repository and make a PR. If you would like to join the core development team you can contact me on Discord @fexty.
- safetyhook - Native hooking library
- Reloaded.Hooks - Managed hooking library
- cimgui - C wrapper for Dear ImGui
- Dear ImGui - GUI library
- ImGui.NET - C# wrapper for Dear ImGui
- tinyobjloader - Wavefront OBJ loader
- nlohmann-json - C++ JSON library
- zlib - Compression library
- DirectXMath - DirectX Math library
- PicoSHA2 - header-only SHA256 library
- DirectXTK[12] - DirectX Toolkit, used for loading and managing textures
- Lyra: Creating the logo
- ImDevinC: Lots of testing and feedback to get Linux support working
- jn64: Writing the complete Linux installation instructions
- Ando: Writing the preloader and generally improving the native side
