Files
gregCore/docs/01_getting-started/quickstart.md
T

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)

  1. Build or obtain gregCore.dll.
  2. Copy it to Data Center/Mods/ (same folder as other MelonLoader mods).
  3. C# mods: additional managed mods stay under Data Center/Mods/ as usual.
  4. Lua mods: place .lua trees under Data Center/Mods/ScriptMods/lua/ (per Language Bridges layout; same Mods/ root as gregCore.dll).
  5. Rust / native mods: place modules under Data Center/Mods/RustMods/.
  6. 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) GregNativeEventHooksgreg 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

  1. Create gregMod.<Name>/ under gregFramework/ (or clone a template).
  2. Add ProjectReference to gregCore/framework/gregCore.csproj (see mods/GregShowcaseMod/).
  3. Use gregFramework.Core (GregEventDispatcher, GregHookName, GregNativeEventHooks, …).
  4. Templates: gregCore/Templates/greg.BasedModTemplate/ or mirrored templates under gregDataCenterExporter/Templates/.

Reference mod: mods/GregShowcaseMod/Documentation hub.

Documentation site (gregWiki/)

  • Markdown under gregWiki/docs/
  • Docker: from gregWiki/ root — see gregWiki/README.md
  • MCP: MCP references — server code under gregAddons/mcp-server/