GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - MonoMod/MonoMod: C# modding swiss army knife, powered by cecil.

BranchesTags
Open more actions menu

Latest commit

 

History

2,902 Commits
2,902 Commits

Folders and files

NameName
Last commit message
Last commit date
.config
.config
 
 
.github
.github
 
 
.vscode
.vscode
 
 
artifacts/package/release
artifacts/package/release
 
 
build
build
 
 
docfx
docfx
 
 
docs
docs
 
 
src
src
 
 
tools
tools
 
 
.editorconfig
.editorconfig
 
 
.git-blame-ignore-revs
.git-blame-ignore-revs
 
 
.gitignore
.gitignore
 
 
Directory.Build.props
Directory.Build.props
 
 
Directory.Build.rsp
Directory.Build.rsp
 
 
Directory.Build.targets
Directory.Build.targets
 
 
LICENSE
LICENSE
 
 
MonoMod.slnx
MonoMod.slnx
 
 
MonoMod.snk
MonoMod.snk
 
 
README.md
README.md
 
 
global.json
global.json
 
 
icon.png
icon.png
 
 
nuget.config
nuget.config
 
 

Repository files navigation

MonoMod

MonoMod Discord General purpose .NET assembly modding "basework", powered by cecil.
MIT-licensed.

Build and Test

| NuGet: Utils | NuGet: RuntimeDetour | NuGet: HookGen | |--|--|--|--|--| | Utils | RuntimeDetour | HookGen | | Version | Version | Version |

... or download fresh build artifacts for the last commit.

Sections

  • Introduction
  • Using RuntimeDetour

Introduction

MonoMod is a modding "basework" (base tools + framework).
Mods / mod loaders for the following games are already using it in one way or another:

  • Terraria: tModLoader, TerrariaHooks
  • Hollow Knight: HollowKnight.Modding
  • Celeste: Everest
  • Risk of Rain 2: BepInExPack (BepInEx + MonoMod + R2API)
  • Enter the Gungeon: Mod the Gungeon
  • Rain World: RainDB via BepInEx
  • Totally Accurate Battle Simulator: TABS-Multiplayer
  • Salt and Sanctuary: Salt.Modding
  • Nimbatus: Nimbatus-Mods via Partiality
  • Dungeon of the Endless: DungeonOfTheEndless-Mod via Partiality
  • FEZ: FEZMod (defunct)
  • And many more! Ping me on Discord if your mod uses MonoMod!

It consists of the following modular components:

  • MonoMod.Patcher: The ahead-of-time MonoMod patcher and relinker.
  • MonoMod.Utils: Utilities and helpers that not only benefit MonoMod, but also mods in general. It contains classes such as PlatformDetection, FastReflectionHelper, DynamicMethodHelper, DynamicMethodDefinition, DynDll and the ModInterop namespace.
  • MonoMod.DebugIL: Enable IL-level debugging of third-party assemblies in Visual Studio / MonoDevelop.
  • MonoMod.Core: The core upon which runtime method detouring is built.
  • MonoMod.RuntimeDetour: A flexible and easily extensible runtime detouring library, supporting x86/x86_64 on .NET Framework, .NET Core, and Mono.
  • MonoMod.RuntimeDetour.HookGen: A utility to generate a "hook helper .dll" for any IL assembly. This allows you to hook methods in runtime mods as if they were events. Built with MonoMod and RuntimeDetour.
  • MonoMod.Backports: A collection of BCL backports, enabling the use of many new language and library features, as far back as .NET Framework 3.5.

Why?

  • Cross-version compatibility, even with obfuscated assemblies.
  • Cross-platform compatibility, even if the game uses another engine (f.e. Celeste uses XNA on Windows, FNA on macOS and Linux).
  • Use language features which otherwise wouldn't be supported (f.e. C# 7 in Unity 4.3).
  • Patch on the player's machine with a basic mod installer. No need to pre-patch, no redistribution of game data, no copyright violations.
  • With HookGen, runtime hooks are as simple as On.Namespace.Type.Method += (orig, a, b, c) => { /* ... */ }
  • With HookGen IL, you can manipulate IL at runtime and even inline C# delegate calls between instructions.
  • Modularity allows you to mix and match. Use only what you need!

About

C# modding swiss army knife, powered by cecil.

monomod.dev/

Topics

c-sharpcecilcilcross-platformdetoursmoddingmonkey-patchingmonomsilnet-frameworkpatchingunity

Resources

Readme
MIT license
Activity
Custom properties

Stars

1.0k stars

Watchers

19 watching

Forks

156 forks
Report repository

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.