4.6 KiB
title, sidebar_label, description
| title | sidebar_label | description |
|---|---|---|
| Getting started | Getting started | Workspace layout (gregFramework), building gregCore, hooks, and your first mod. |
The workspace is multi-repo: several Git checkouts live side by side under a common gregFramework/ folder. Logical stack: ModManager ? Framework / SDK ? Plugins ? Mods — see System architecture & documentation principles.
| Folder | Role |
|---|---|
gregCore/ |
Framework Core: gregCore/gregCore.sln, main project gregCore/gregCore.csproj; SDK under gregSdk/ |
gregAddons/ |
Official addons and tools: Plugins, Templates, and Node.js-based tooling (MCP, Migrator) |
gregMod.<Name>/ |
Gameplay mods (often greg.* assemblies), flat next to gregCore/ |
gregModmanager/ |
GregModManager / Workshop UI (WorkshopUploader.csproj) |
gregWiki/ |
This documentation site (Docusaurus) |
Rust/native mods are loaded through the core FFI layer; bridge code lives under gregCore/gregModLoader/ (including LanguageBridges/ and LanguageBridges/LuaModules/ for the Lua greg.* API).
Build the framework
dotnet build gregCore/gregCore.sln -c Release
Or open gregCore/gregCore.sln in your IDE and build the gregCore/gregCore.csproj output. A Release build produces gregCore.dll (the MelonLoader framework assembly).
For CI without a local game install, many projects support -p:CI=true (see each .csproj).
Prerequisites: MelonLoader net6 assemblies and game Il2Cpp interop — either from {Game}/MelonLoader/ or gregCore/gregLib/references/MelonLoader (e.g. python gregCore/gregTools/refresh_refs.py). Set DATA_CENTER_GAME_DIR if MSBuild should discover the game path.
Quick install (matches gregCore/README.md)
- Build or obtain
gregCore.dll. - Copy it to
Data Center/Mods/(same folder as other MelonLoader mods). - C# mods: additional managed mods stay under
Data Center/Mods/as usual. - Lua mods: place
.luatrees underData Center/Mods/ScriptMods/lua/(per Language Bridges layout; sameMods/root asgregCore.dll). - Rust / native mods: place modules under
Data Center/Mods/RustMods/. - Launch the game and confirm load order in
MelonLoader/Latest.log.
Supported modding languages
gregCore supports three modding paths in parallel:
| Language | Role |
|---|---|
| C# | Full MelonLoader / IL2CPP interop, Harmony, plugins, and gregFramework.Core — the default for framework extensions and heavy mods. |
| Lua | MoonSharp-hosted scripts via LuaLanguageBridge; game access through the greg.* API (events, Harmony bindings, Unity handles). Deploy under Data Center/Mods/ScriptMods/lua/. |
| Rust / native | FFIBridge native pipeline; deploy under Data Center/Mods/RustMods/. |
Policy, paths, and trade-offs: Modding language support. Lua API tables: Language Bridges README.
Hooks and registries
| Topic | Where |
|---|---|
Canonical greg.* (JSON, Il2Cpp) |
Repo root greg_hooks.json; regenerate: gregCore/scripts/Generate-GregHooksFromIl2CppDump.ps1 |
EventId ? greg.* (native / FFI pipeline) |
GregNativeEventHooks — greg hooks catalog, source gregCore/framework/Sdk/GregNativeEventHooks.cs |
greg.* documentation naming |
greg hook naming |
| Architecture | Greg hooks & event runtime |
| Legacy spellings | GregCompatBridge loads greg_hooks.json next to gregCore.dll |
Start a new mod
- Create
gregMod.<Name>/undergregFramework/(or clone a template). - Add
ProjectReferencetogregCore/framework/gregCore.csproj(seemods/GregShowcaseMod/). - Use
gregFramework.Core(GregEventDispatcher,GregHookName,GregNativeEventHooks, …). - Templates:
gregCore/Templates/greg.BasedModTemplate/or mirrored templates undergregDataCenterExporter/Templates/.
Reference mod: mods/GregShowcaseMod/ — Documentation hub.
Documentation site (gregWiki/)
- Markdown under
gregWiki/docs/ - Docker: from
gregWiki/root — seegregWiki/README.md - MCP: MCP references — server code under
gregAddons/mcp-server/