docs: update references from FrikaMF to gregCore throughout documentation

Revised multiple documentation files to replace instances of "FrikaMF" with "gregCore," reflecting the updated naming conventions and project structure. This change enhances consistency and clarity across the documentation, ensuring that users and contributors have accurate information regarding the framework and its components.
This commit is contained in:
Marvin
2026-04-10 18:28:55 +02:00
parent 658e3db2a4
commit fcac837bd9
25 changed files with 107 additions and 73 deletions

View File

@@ -13,7 +13,7 @@ The repository **stays one Git repo**. The goal is **clear boundaries** between
| Top-level | Purpose |
|-----------|---------|
| `gregCore/framework/` | Core MelonLoader framework (`gregCore/framework/FrikaMF.csproj`, `Sdk/`, `ModLoader/`, entry `framework/Main.cs`) |
| `gregCore/framework/` | Core MelonLoader framework (`gregCore/framework/gregCore.csproj`, `Sdk/`, `ModLoader/`, entry `framework/Main.cs`) |
| `mods/` | Gameplay mods (`FMF.Mod.*`, `FMF.*.dll` style) |
| `plugins/` | FFM plugins (`FFM.Plugin.*`) |
| `Templates/` | Scaffolds for new mods/plugins |
@@ -38,12 +38,12 @@ flowchart LR
|-------|--------|---------------|
| **1** | Docs, `tools/`, naming wiki, hook catalog script | Docusaurus build green; script generates catalog |
| **2** | `git mv` former `ModsAndPlugins/``mods/` / `plugins/` | Done — `.csproj` relative paths unchanged (depth preserved); CI/docs updated |
| **3** | Framework sources under `framework/` | Done — `FrikaMF.sln` points at `framework\framework/FrikaMF.csproj`; plugins reference `..\..\framework\framework/FrikaMF.csproj` |
| **3** | Framework sources under `framework/` | Done — `gregCore.sln` points at `framework\framework/gregCore.csproj`; plugins reference `..\..\framework\framework/gregCore.csproj` |
| **4** | CI matrix: docs + dotnet; `plugin-client-redirects` for old URLs | PR checks match local workflow |
## Path updates checklist (Phase 2 applied)
- [x] `FrikaMF.sln` project paths (`plugins\FFM.Plugin.*`)
- [x] `gregCore.sln` project paths (`plugins\FFM.Plugin.*`)
- [x] `.github/workflows` (CodeQL, release assets, Discord feed)
- [x] Contributor docs and mod/plugin wiki pages (`Project Path` lines)
- [ ] [`wiki/docusaurus.config.js`](https://github.com/mleem97/gregFramework/blob/master/wiki/docusaurus.config.js) redirects (only if public URLs must map old paths)

View File

@@ -15,7 +15,7 @@ These folders typically sit **next to each other** in a developer workspace (see
| Area | Path (on disk) | Role |
|------|----------------|------|
| **Framework core** | `gregCore/` | Runtime, hooks, Harmony, bridge — build **`gregCore/FrikaMF.sln`**; main project **`gregCore/framework/FrikaMF.csproj`**; templates under `gregCore/Templates/` |
| **Framework core** | `gregCore/` | Runtime, hooks, Harmony, bridge — build **`gregCore/gregCore.sln`**; main project **`gregCore/framework/gregCore.csproj`**; templates under `gregCore/Templates/` |
| **Mods (split repos)** | `gregMod.<Name>/` (directly under `gregFramework/`) | Standalone gameplay mods (`FMF.*` assemblies); **not** nested under a `gregMods/` umbrella |
| **Extensions / framework plugins (split repos)** | `gregExt.<Name>/` (directly under `gregFramework/`) | FFM framework plugins (`FFM.Plugin.*`); **not** under legacy `StandaloneMods/` paths |
| **Documentation** | `gregWiki/` ([`mleem97/gregWiki`](https://github.com/mleem97/gregWiki)) | **This site**: Docusaurus app at repo root, all authored pages under `docs/` |
@@ -32,7 +32,7 @@ These folders typically sit **next to each other** in a developer workspace (see
| Concern | Where to look |
|---------|----------------|
| Framework `.csproj` | `gregCore/framework/FrikaMF.csproj` (solution: `gregCore/FrikaMF.sln`) |
| Framework `.csproj` | `gregCore/framework/gregCore.csproj` (solution: `gregCore/gregCore.sln`) |
| Plugins (`FFM.Plugin.*`) — authoring | `gregExt.<Name>/` (e.g. `gregExt.AssetExporter/`) |
| Plugins — optional mirrors | `gregCore/plugins/greg.Plugin.*` (und ältere `FFM.Plugin.*`-Spiegel je nach Branch) |
| Mod sources (`FMF.*`) | `gregMod.<Name>/` |
@@ -45,19 +45,19 @@ Documentation is maintained in this repository under `docs/`; historical GitHub
## .NET projects on disk (`*.csproj`)
- **Framework:** `gregCore/framework/FrikaMF.csproj` via **`gregCore/FrikaMF.sln`**.
- **Framework:** `gregCore/framework/gregCore.csproj` via **`gregCore/gregCore.sln`**.
- **Plugins:** primary checkouts **`gregExt.<Name>/`** (assembly `FFM.Plugin.*.dll`); duplicates under `gregCore/plugins/` for all-in-one builds.
- **Mods:** **`gregMod.<Name>/`** at workspace root (`FMF.*.csproj` names vary).
- **GregModManager:** `gregModmanager/WorkshopUploader.csproj` (separate from the MelonLoader framework solution).
## Build status (framework project)
- `gregCore/framework/FrikaMF.csproj` does not compile the WorkshopManager app; that builds from `gregModmanager/WorkshopUploader.csproj`.
- `gregCore/framework/gregCore.csproj` does not compile the WorkshopManager app; that builds from `gregModmanager/WorkshopUploader.csproj`.
- `dotnet build` on the framework solution (when present under `gregCore/`) builds core + optional `gregCore/plugins/*`**not** split-repo `gregExt.*` / `gregMod.*` folders unless you add them to the solution.
## `FrikaMF.sln` drift (action items)
## `gregCore.sln` drift (action items)
1. **Mods outside solution**: Standalone mod projects under `gregMod.*` are usually **not** in `FrikaMF.sln`; build them per repo or add them if you want one `dotnet build` for everything.
1. **Mods outside solution**: Standalone mod projects under `gregMod.*` are usually **not** in `gregCore.sln`; build them per repo or add them if you want one `dotnet build` for everything.
2. **Templates vs framework visibility**: Template projects under `gregCore/Templates/` may fail `dotnet build` with `CS0122` if internal API visibility does not match template expectations — treat templates as **samples** until the project graph is aligned.
@@ -85,15 +85,15 @@ Documentation is maintained in this repository under `docs/`; historical GitHub
## Hook / event sources of truth (code)
- **Native pipeline (`EventIds``greg.*`):** [`gregCore/framework/src/Sdk/GregNativeEventHooks.cs`](https://github.com/mleem97/gregFramework/blob/main/gregCore/framework/src/Sdk/GregNativeEventHooks.cs) with numeric ids in [`EventDispatcher.cs` (`EventIds`)](https://github.com/mleem97/gregFramework/blob/main/gregCore/framework/src/ModLoader/EventDispatcher.cs) — wiki table: [greg hooks catalog](../reference/greg-hooks-catalog.md); generator [`gregCore/tools/Generate-GregHookCatalog.ps1`](https://github.com/mleem97/gregFramework/blob/main/gregCore/tools/Generate-GregHookCatalog.ps1).
- **Native pipeline (`EventIds``greg.*`):** [`gregCore/framework/Sdk/GregNativeEventHooks.cs`](https://github.com/mleem97/gregFramework/blob/main/gregCore/framework/Sdk/GregNativeEventHooks.cs) with numeric ids in [`EventDispatcher.cs` (`EventIds`)](https://github.com/mleem97/gregFramework/blob/main/gregCore/framework/ModLoader/EventDispatcher.cs) — wiki table: [greg hooks catalog](../reference/greg-hooks-catalog.md); generator [`gregCore/tools/Generate-GregHookCatalog.ps1`](https://github.com/mleem97/gregFramework/blob/main/gregCore/tools/Generate-GregHookCatalog.ps1).
- **Canonical `greg.*` registry (JSON):** `greg_hooks.json` (repo root; mirrored under `gregCore/gregFramework/`) — regenerate with [`scripts/Generate-GregHooksFromIl2CppDump.ps1`](https://github.com/mleem97/gregFramework/blob/main/gregCore/scripts/Generate-GregHooksFromIl2CppDump.ps1); overview [Greg hooks & event runtime](../framework/greg-hooks-and-events.md).
- **Legacy spellings:** [`GregCompatBridge`](https://github.com/mleem97/gregFramework/blob/main/gregCore/framework/src/Sdk/GregCompatBridge.cs) + optional `legacy` fields in `greg_hooks.json`.
- **Legacy spellings:** [`GregCompatBridge`](https://github.com/mleem97/gregFramework/blob/main/gregCore/framework/Sdk/GregCompatBridge.cs) + optional `legacy` fields in `greg_hooks.json`.
## Debugging (MelonLoader, IL2CPP, Unity)
- **Build first:** `dotnet build gregCore/FrikaMF.sln -c Debug` (requires MelonLoader + IL2CPP interop under `MelonLoader/` for your game install, or `lib/references/MelonLoader` — see `tools/refresh_refs.py`).
- **Build first:** `dotnet build gregCore/gregCore.sln -c Debug` (requires MelonLoader + IL2CPP interop under `MelonLoader/` for your game install, or `lib/references/MelonLoader` — see `tools/refresh_refs.py`).
- **Attach:** Run **Data Center** with MelonLoader, then attach your IDEs **.NET / CoreCLR** debugger to the game process (process name usually matches the game executable). Breakpoints hit in **Debug** builds of mods/plugins copied into `Mods/`.
- **`FFM.Plugin.AssetExporter`:** The project links `framework/Main.cs` (and related files) **and** references `FrikaMF.csproj`, which would normally produce **CS0436** duplicate-type warnings. Those are **suppressed** in the plugin `.csproj` (`NoWarn`); do not remove the project reference without linking the rest of the `FrikaMF` sources.
- **`FFM.Plugin.AssetExporter`:** The project links `framework/Main.cs` (and related files) **and** references `gregCore.csproj`, which would normally produce **CS0436** duplicate-type warnings. Those are **suppressed** in the plugin `.csproj` (`NoWarn`); do not remove the project reference without linking the rest of the `gregCore` sources.
## Related

View File

@@ -6,7 +6,7 @@ description: greg.* hooks, GregEventDispatcher, GregNativeEventHooks, greg_hooks
# Greg hooks & event runtime
The **`FrikaModdingFramework.dll`** assembly is built from **`gregCore/framework/FrikaMF.csproj`** and combines Harmony patches, C# events (`GregEventDispatcher`), and the Rust/native bridge. Mod authors mainly care about **three surfaces**:
The **`gregCore.dll`** assembly is built from **`gregCore/framework/gregCore.csproj`** and combines Harmony patches, C# events (`GregEventDispatcher`), and the Rust/native bridge. Mod authors mainly care about **three surfaces**:
| Surface | Role | Typical entry |
|---------|------|----------------|
@@ -21,20 +21,20 @@ New **documentation** identifiers still follow **`FMF.<Domain>.*`** — see [FMF
| Path | Role |
|------|------|
| **Repo root** `greg_hooks.json` | Source of truth: `name`, `patchTarget`, `strategy`, `payloadSchema`, optional `legacy`. |
| **Next to `FrikaModdingFramework.dll`** | Copied from the monorepo root on build so **`GregCompatBridge`** can resolve legacy names. |
| **Next to `gregCore.dll`** | Copied from the monorepo root on build so **`GregCompatBridge`** can resolve legacy names. |
Regenerate: `gregCore/scripts/Generate-GregHooksFromIl2CppDump.ps1` when Il2Cpp/interop inputs change.
## `GregEventDispatcher` / SDK
Implementation: **`gregCore/framework/src/Sdk/GregEventDispatcher.cs`** (`namespace gregFramework.Core`). API: **`On` / `Once` / `Off` / `Emit`**, **`OnCancelable` / `InvokeCancelable`**, **`UnregisterAll(modId)`**.
Implementation: **`gregCore/framework/Sdk/GregEventDispatcher.cs`** (`namespace gregFramework.Core`). API: **`On` / `Once` / `Off` / `Emit`**, **`OnCancelable` / `InvokeCancelable`**, **`UnregisterAll(modId)`**.
Build stable hook strings with **`GregHookName.Create(GregDomain.*, "Action")`** or **`GregNativeEventHooks.*`** constants.
## Native events (`EventIds`)
- **`EventIds` and `EventDispatcher`:** `gregCore/framework/src/ModLoader/EventDispatcher.cs` (numeric ids aligned with Rust).
- **Mapping → `greg.*`:** **`GregNativeEventHooks`** (`gregCore/framework/src/Sdk/GregNativeEventHooks.cs`); emission via **`GregHookIntegration`** in the same ModLoader tree.
- **`EventIds` and `EventDispatcher`:** `gregCore/framework/ModLoader/EventDispatcher.cs` (numeric ids aligned with Rust).
- **Mapping → `greg.*`:** **`GregNativeEventHooks`** (`gregCore/framework/Sdk/GregNativeEventHooks.cs`); emission via **`GregHookIntegration`** in the same ModLoader tree.
- **Wiki table:** [greg hooks catalog](/wiki/reference/greg-hooks-catalog) (generator: `gregCore/tools/Generate-GregHookCatalog.ps1`).
## Lua event & hook subscriptions

View File

@@ -8,39 +8,62 @@ The workspace is **multi-repo**: several Git checkouts live **side by side** und
| Folder | Role |
|--------|--------|
| **`gregCore/`** | Framework: **`gregCore/FrikaMF.sln`**, main project **`gregCore/framework/FrikaMF.csproj`**; SDK under `framework/src/Sdk/`; MCP under `gregCore/mcp-server/` |
| **`gregCore/`** | Framework: **`gregCore/gregCore.sln`**, main project **`gregCore/framework/gregCore.csproj`**; SDK under `framework/Sdk/`; MCP under `gregCore/mcp-server/` |
| **`gregMod.<Name>/`** | Gameplay mods (often `FMF.*` assemblies), **flat** next to `gregCore/` (umbrella **`gregMods/`** is deprecated) |
| **`gregExt.<Name>/`** | Framework plugins (`FFM.Plugin.*` / `greg.Plugin.*`), also flat (**`gregExtensions/`** deprecated) |
| **`gregModmanager/`** | GregModManager / Workshop UI (`WorkshopUploader.csproj`) |
| **`gregDataCenterExporter/`** | Exporter, templates, mirrors |
| **`gregWiki/`** | This documentation site (Docusaurus) |
Rust/native mods are loaded through the core FFI layer; bridge code lives under **`gregCore/framework/src/ModLoader/`**.
Rust/native mods are loaded through the core FFI layer; bridge code lives under **`gregCore/framework/ModLoader/`** (including **`LanguageBridges/`** and **`LanguageBridges/LuaModules/`** for the Lua `greg.*` API).
## Build the framework
```bash
dotnet build gregCore/FrikaMF.sln -c Release
dotnet build gregCore/gregCore.sln -c Release
```
Or open **`gregCore/FrikaMF.sln`** in your IDE. For CI without a local game install, many projects support **`-p:CI=true`** (see each `.csproj`).
Or open **`gregCore/gregCore.sln`** in your IDE and build the **`gregCore/framework/gregCore.csproj`** output. A **Release** build produces **`gregCore.dll`** (the MelonLoader framework assembly — not a legacy `FrikaModdingFramework.dll` name).
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/lib/references/MelonLoader`** (e.g. `python gregCore/tools/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](/wiki/reference/modding-language-requirement). Lua API tables: [Language Bridges README](https://github.com/mleem97/gregFramework/blob/main/gregCore/framework/ModLoader/LanguageBridges/README.md).
## 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](/wiki/reference/greg-hooks-catalog), source `gregCore/framework/src/Sdk/GregNativeEventHooks.cs` |
| **EventId → `greg.*` (native / FFI pipeline)** | **`GregNativeEventHooks`** — [greg hooks catalog](/wiki/reference/greg-hooks-catalog), source `gregCore/framework/Sdk/GregNativeEventHooks.cs` |
| **`FMF.*` documentation naming** | [FMF hook naming](/wiki/reference/fmf-hook-naming) |
| **Architecture** | [Greg hooks & event runtime](/wiki/framework/greg-hooks-and-events) |
| **Legacy spellings** | **`GregCompatBridge`** loads **`greg_hooks.json`** next to **`FrikaModdingFramework.dll`** |
| **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/FrikaMF.csproj`** (see **`mods/GregShowcaseMod/`**).
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/`**.

View File

@@ -26,7 +26,7 @@ Paths are relative to the **`gregFramework/`** workspace root (split repos clone
| Path | Purpose |
|------|---------|
| `gregCore/framework/FrikaMF.csproj` (via `gregCore/FrikaMF.sln`) | Core MelonLoader framework DLL |
| `gregCore/framework/gregCore.csproj` (via `gregCore/gregCore.sln`) | Core MelonLoader framework DLL |
| `gregExt.*/` | FFM framework plugins (`FFM.Plugin.*` assemblies — one repo per plugin) |
| `gregMod.*/` | Standalone gameplay mods (`FMF.*` assemblies) |
| `gregModmanager/WorkshopUploader.csproj` | GregModManager MAUI app |
@@ -38,7 +38,7 @@ Paths are relative to the **`gregFramework/`** workspace root (split repos clone
### Build everything (solution)
```bash
dotnet build gregCore/FrikaMF.sln -c Release
dotnet build gregCore/gregCore.sln -c Release
```
### Build standalone mods (per split repo)
@@ -65,7 +65,7 @@ Each mod/plugin gets its own folder under `<GameRoot>/workshop/`:
├── FrikaModFramework/
│ ├── content/
│ │ └── Mods/
│ │ └── FrikaModdingFramework.dll
│ │ └── gregCore.dll
│ ├── metadata.json
│ └── preview.png
├── FFM.Plugin.Multiplayer/

View File

@@ -18,7 +18,7 @@ The following components are built and packaged for Steam Workshop distribution:
| Component | Assembly | Workshop content path | Tags |
|-----------|----------|----------------------|------|
| FrikaModFramework | `FrikaModdingFramework.dll` | `content/Mods/` | modded, melonloader, framework, fmf |
| FrikaModFramework | `gregCore.dll` | `content/Mods/` | modded, melonloader, framework, fmf |
### FMF Plugins
@@ -57,7 +57,7 @@ The following components are built and packaged for Steam Workshop distribution:
### Manual installation
1. Download the DLL from the Workshop or a release.
2. Framework: place `FrikaModdingFramework.dll` in `<Data Center>/Mods/`.
2. Framework: place `gregCore.dll` in `<Data Center>/Mods/`.
3. Plugins: place `FFM.Plugin.*.dll` in `<Data Center>/FMF/Plugins/`.
4. Mods: place `FMF.*.dll` in `<Data Center>/Mods/`.
5. Start the game and check `MelonLoader/Latest.log`.
@@ -67,7 +67,7 @@ The following components are built and packaged for Steam Workshop distribution:
```text
Data Center/
├── Mods/
│ ├── FrikaModdingFramework.dll
│ ├── gregCore.dll
│ ├── FMF.ConsoleInputGuard.dll
│ ├── FMF.GregifyEmployees.dll
│ ├── FMF.HexLabelMod.dll
@@ -85,7 +85,7 @@ Data Center/
│ └── ModCfg/
└── workshop/
├── FrikaModFramework/
│ ├── content/Mods/FrikaModdingFramework.dll
│ ├── content/Mods/gregCore.dll
│ └── metadata.json
├── FFM.Plugin.Multiplayer/
│ ├── content/FMF/Plugins/FFM.Plugin.Multiplayer.dll
@@ -114,5 +114,5 @@ See also: [Contributor Guide](./contributor-workshop)
|-----------|----------|
| All mods/plugins | Data Center (Steam App 4170200) |
| All mods/plugins | MelonLoader (IL2CPP, stable) |
| FMF Plugins | FrikaModdingFramework.dll in Mods/ |
| FMF Plugins | gregCore.dll in Mods/ |
| Gregtools Modmanager | Windows 10 1809+ (self-contained, no runtime install needed) |

View File

@@ -18,7 +18,7 @@ Runtime names look like `greg.<DOMAIN>.<Action>`. Always build them with `GregHo
## Registry
**`greg_hooks.json`** at the **gregFramework** repository root is the canonical catalog (`description`, `payloadSchema`, `strategy`, optional `legacy`). A copy is emitted next to **`FrikaModdingFramework.dll`** for `GregCompatBridge` legacy resolution.
**`greg_hooks.json`** at the **gregFramework** repository root is the canonical catalog (`description`, `payloadSchema`, `strategy`, optional `legacy`). A copy is emitted next to **`gregCore.dll`** for `GregCompatBridge` legacy resolution.
Authoritative documentation: [greg hooks registry (IL2CPP)](/wiki/reference/greg-hooks-registry) — regeneration script, whitelist, and Harmony deduplication rules.

View File

@@ -98,7 +98,7 @@ If anything is missing, follow the instructions shown.
### Mod does not load in-game
- Check `MelonLoader/Latest.log` in the game directory.
- Ensure `FrikaModdingFramework.dll` is in `<game>/Mods/`.
- Ensure `gregCore.dll` is in `<game>/Mods/`.
- Verify the mod DLL is also in `<game>/Mods/` or `<game>/FMF/Plugins/`.
### Subscription does not appear

View File

@@ -6,13 +6,13 @@ slug: /audiences/newbies
## Goal
Get FrikaMF running safely and understand the minimum concepts.
Get gregCore running safely and understand the minimum concepts.
## Start here
1. Install MelonLoader and run the game once.
2. Copy `FrikaModdingFramework.dll` into `Data Center/Mods`.
3. Add the mod that depends on FrikaMF.
2. Copy `gregCore.dll` into `Data Center/Mods`.
3. Add the mod that depends on gregCore.
4. Check `MelonLoader/Latest.log`.
## Read next

View File

@@ -35,5 +35,5 @@ Do not redistribute game binaries or extracted assets. Workshop packages should
## CI / agents
- `FrikaMF.csproj` builds on Windows agents that have either a Steam *Data Center* install **or** a populated `lib/references/MelonLoader/` (from `refresh_refs.py`).
- `gregCore.csproj` builds on Windows agents that have either a Steam *Data Center* install **or** a populated `lib/references/MelonLoader/` (from `refresh_refs.py`).
- `gregModmanager/WorkshopUploader.csproj` targets **.NET 9** MAUI (`net9.0-windows…`); build it on Windows (not Linux-hosted runners unless cross-compilation is configured).

View File

@@ -1,6 +1,6 @@
# DevServer API — beta channels (`gregframework.eu`)
This document defines the **intended** client contract for the FrikaMF **WorkshopUploader** “Betas” panel. The server may be implemented separately; keep URLs and tokens configurable.
This document defines the **intended** client contract for the gregCore **WorkshopUploader** “Betas” panel. The server may be implemented separately; keep URLs and tokens configurable.
## Base URL

View File

@@ -17,7 +17,7 @@ Describe the runtime as a **layered system**, not a flat list of DLLs:
| Layer | Role | Typical workspace artifacts |
|--------|--------|------------------------------|
| **1. ModManager (front-end)** | UI to enable/disable mods and plugins, ordering, configuration, game state (e.g. no save loaded, level loading). Talks to the framework through **well-defined** interfaces (shared library, config files, IPC, named pipes, HTTP — depending on implementation). | `gregModmanager/`**Gregtools Modmanager** (MAUI, e.g. `WorkshopUploader.csproj`). |
| **2. Modding framework / SDK** | Stable API surface for plugins and mods: lifecycle, events, versioning, dependencies, logging, error handling. Hooks Unity / MelonLoader / IL2CPP and **maps** low-level events to **framework events** (hook proxy). | `gregCore/` — e.g. `framework/` (`FrikaMF`), Harmony integration, **native FFI** (`FfiBridge`), hook registry. |
| **2. Modding framework / SDK** | Stable API surface for plugins and mods: lifecycle, events, versioning, dependencies, logging, error handling. Hooks Unity / MelonLoader / IL2CPP and **maps** low-level events to **framework events** (hook proxy). | `gregCore/` — e.g. `framework/` (**`gregCore` runtime**), Harmony integration, **native FFI** (`FfiBridge`), hook registry. |
| **3. Plugins** | Extend the framework (new services, hook types, optional ModManager UI). Clear extension points. | `FFM.Plugin.*`, repos **`gregExt.<Name>/`**. |
| **4. Mods** | User extensions via the **documented** framework API; avoid direct IL2CPP details where possible; load in isolation; soft-fail on errors. | `FMF.*`, repos **`gregMod.<Name>/`**. |
@@ -56,7 +56,7 @@ When documentation or API design must choose, use this **order**:
- **Language:** **English only** for all user-facing documentation in `docs/`, the homepage, and UI strings in this site.
- **Repos:** Keep paths such as `gregCore/`, `gregMod.*`, `gregExt.*`, `gregModmanager/` consistent with the [Workspace map](/wiki/workspace) and [Repository architecture](/wiki/framework/architecture).
- **No invented APIs:** New pages must not promise hooks or events that are not evidenced in core/registry — link to [FMF hooks](/wiki/framework/fmf-hooks) and the [Hooks catalog](/wiki/reference/fmf-hooks-catalog).
- **Cross-links:** Entry [Developers & contributors](/wiki/developers), architecture [Repository architecture](/wiki/framework/architecture), language rule [Modding language (C# only)](/wiki/reference/modding-language-requirement).
- **Cross-links:** Entry [Developers & contributors](/wiki/developers), architecture [Repository architecture](/wiki/framework/architecture), language rule [Modding language support](/wiki/reference/modding-language-requirement).
## See also

View File

@@ -3,16 +3,16 @@ title: Framework
sidebar_label: Framework
---
**Language:** mod, plugin, and extension **logic must be written in C#** — see [Modding language (C# only)](/wiki/reference/modding-language-requirement).
**Languages:** gameplay and script mods can be written in **C#**, **Lua** (MoonSharp, `greg.*` API), or **Rust / native** (FFI) — see [Modding language support](/wiki/reference/modding-language-requirement). **Lua API reference** (events, hooks, Unity handles, I/O): [Language Bridges README](https://github.com/mleem97/gregFramework/blob/main/gregCore/framework/ModLoader/LanguageBridges/README.md).
**Stack position:** gameplay **mods** sit on top of **plugins** and the **framework SDK**; the **ModManager** (MAUI) is the out-of-game front-end — see [System architecture & documentation principles](/wiki/meta/system-architecture-principles).
The core `FrikaMF` runtime provides:
The core runtime ships as **`gregCore.dll`** (MelonLoader loads this assembly; not a legacy **`FrikaModdingFramework.dll`** name). It provides:
- Harmony patch integration for gameplay hooks
- Event dispatch and stable event contracts
- Native bridge for Rust modules
- Shared game API abstractions for mod authors
- Event dispatch and stable event contracts (`greg.*`)
- Language bridges (C# direct, **Lua** via `LuaLanguageBridge`, **Rust** via `FFIBridge` / `RustLanguageBridgeAdapter`)
- Shared game API abstractions for mod authors (C# SDK and Lua `greg.*` modules)
## Core references

View File

@@ -46,9 +46,9 @@ Harmony patches in **gregFramework** emit stable **`greg.<DOMAIN>.<Action>`** st
## Native pipeline: `GregNativeEventHooks` (replaces `HookNames`)
Numeric **`EventIds`** are mapped to canonical **`greg.*`** strings in **`GregNativeEventHooks`** ([source](https://github.com/mleem97/gregFramework/blob/main/gregCore/framework/src/Sdk/GregNativeEventHooks.cs)), aligned with **`greg_hooks.json`** where that file names the patched method. Logging uses **`GregNativeEventHooks.Resolve(uint)`**; unknown ids → **`greg.SYSTEM.UnmappedNativeEvent`**.
Numeric **`EventIds`** are mapped to canonical **`greg.*`** strings in **`GregNativeEventHooks`** ([source](https://github.com/mleem97/gregFramework/blob/main/gregCore/framework/Sdk/GregNativeEventHooks.cs)), aligned with **`greg_hooks.json`** where that file names the patched method. Logging uses **`GregNativeEventHooks.Resolve(uint)`**; unknown ids → **`greg.SYSTEM.UnmappedNativeEvent`**.
**`GregCompatBridge`** ([source](https://github.com/mleem97/gregFramework/blob/main/gregCore/framework/src/Sdk/GregCompatBridge.cs)) redirects **deprecated** hook spellings (including older documentation-style names) to the current **`greg.*`** string — see also `legacy` entries in **`greg_hooks.json`**.
**`GregCompatBridge`** ([source](https://github.com/mleem97/gregFramework/blob/main/gregCore/framework/Sdk/GregCompatBridge.cs)) redirects **deprecated** hook spellings (including older documentation-style names) to the current **`greg.*`** string — see also `legacy` entries in **`greg_hooks.json`**.
**Policy**

View File

@@ -15,8 +15,8 @@ The old table generated from **`HookNames.cs`** has been **removed**. Runtime ma
| Topic | Where |
|-------|--------|
| **EventId → `greg.*` (FFI / native pipeline)** | [greg hooks catalog](./greg-hooks-catalog.md) — generated from `gregCore/framework/src/Sdk/GregNativeEventHooks.cs` and `EventIds` in `EventDispatcher.cs` |
| **Il2Cpp hook registry (JSON)** | `greg_hooks.json` at repo root; copied next to `FrikaModdingFramework.dll` on build |
| **EventId → `greg.*` (FFI / native pipeline)** | [greg hooks catalog](./greg-hooks-catalog.md) — generated from `gregCore/framework/Sdk/GregNativeEventHooks.cs` and `EventIds` in `EventDispatcher.cs` |
| **Il2Cpp hook registry (JSON)** | `greg_hooks.json` at repo root; copied next to `gregCore.dll` on build |
| **`FMF.*` documentation policy** | [FMF hook naming](./fmf-hook-naming.md) — naming for new *documentation* IDs (not byte-for-byte every runtime string) |
## Regenerate the wiki table

View File

@@ -21,22 +21,31 @@ greg.<DOMAIN>.<Action>
In Mods vorzugsweise **`GregHookName.Create(GregDomain.*, "Action")`** oder Konstanten aus **`GregNativeEventHooks`** verwenden.
### Lua-Zugriff auf dieselben Hooks
Lua-Skripte (MoonSharp, **`greg.*`**) können dieselben **`greg.*`**-Strings nutzen:
- **`greg.on(hookName, fn)`** — Callback am **`GregEventDispatcher`** (beliebige registrierte **`greg.*`**-Events).
- **`greg.hook.before(hookName, fn)`** / **`greg.hook.after(hookName, fn)`** — Harmony-Prefix bzw. -Postfix über den HookBinder (Patches parallel zur Registry).
Details zum Laufzeitmodell, Payloads und Katalog: [Greg hooks & event runtime](/wiki/framework/greg-hooks-and-events). API-Tabellen: [Language Bridges README](https://github.com/mleem97/gregFramework/blob/main/gregCore/framework/ModLoader/LanguageBridges/README.md).
## Registry-Datei `greg_hooks.json`
| Ort | Rolle |
|-----|--------|
| **Repo-Root** `greg_hooks.json` | Eincheckter Katalog (`name`, `patchTarget`, `strategy`, `payloadSchema`, optional `legacy`). |
| **Neben `FrikaModdingFramework.dll`** | Build-Kopie für **`GregCompatBridge`**. |
| **Neben `gregCore.dll`** | Build-Kopie für **`GregCompatBridge`**. |
## Code-Layout (gregFramework-Repo)
| Pfad | Zweck |
|------|--------|
| **`gregCore/framework/src/Sdk/`** | **`gregFramework.Core`**: `GregEventDispatcher`, `GregHookName`, `GregDomain`, `GregPayload`, `GregCompatBridge`, **`GregNativeEventHooks`** |
| **`gregCore/framework/src/ModLoader/`** | `EventDispatcher`, `HarmonyPatches`, FFI, `GregHookIntegration`, Services |
| **`gregCore/framework/Sdk/`** | **`gregFramework.Core`**: `GregEventDispatcher`, `GregHookName`, `GregDomain`, `GregPayload`, `GregCompatBridge`, **`GregNativeEventHooks`** |
| **`gregCore/framework/ModLoader/`** | `EventDispatcher`, `HarmonyPatches`, FFI, `GregHookIntegration`, Services |
| **`gregCore/framework/harmony/`** | Optional: generierte Domain-Harmony-Klassen (Skript **`Generate-GregHooksFromIl2CppDump.ps1`**) |
Das Projekt **`gregCore/framework/FrikaMF.csproj`** fasst diese Quellen zusammen; Harmony erkennt alle `[HarmonyPatch]`-Typen in der Assembly.
Das Projekt **`gregCore/framework/gregCore.csproj`** fasst diese Quellen zusammen; Harmony erkennt alle `[HarmonyPatch]`-Typen in der Assembly.
## Regeneration
@@ -44,12 +53,12 @@ Das Projekt **`gregCore/framework/FrikaMF.csproj`** fasst diese Quellen zusammen
pwsh -NoProfile -File gregCore/scripts/Generate-GregHooksFromIl2CppDump.ps1
```
Anschließend **FrikaMF** neu bauen.
Anschließend **gregCore** neu bauen.
### Generator (Kurz)
- Emittiert Postfix-Stubs mit **`GregEventDispatcher.Emit`**, filtert häufige Unity-Loops und Lärm.
- **Harmony-Ausschluss:** Das Skript wertet **`framework/src/ModLoader/HarmonyPatches.cs`** aus, damit z.B. **`Player.UpdateCoin`** nicht doppelt generiert wird (Hand-Patch + **`InvokeCancelable`** / **`GregHookIntegration`**).
- **Harmony-Ausschluss:** Das Skript wertet **`framework/ModLoader/HarmonyPatches.cs`** aus, damit z.B. **`Player.UpdateCoin`** nicht doppelt generiert wird (Hand-Patch + **`InvokeCancelable`** / **`GregHookIntegration`**).
## Mod-Autor:innen

View File

@@ -11,7 +11,7 @@ import ModReleasePage from '@site/src/components/ModReleasePage';
dllName="FMF.JoniMLCompatMod.dll"
releaseReady={false}
version="NotReleasedYet"
author="mleem97 / FrikaMF Community"
author="mleem97 / gregCore Community"
category="Mod"
dependencies={['MelonLoader']}
codeLanguages={['C#']}

View File

@@ -11,9 +11,9 @@ import ModReleasePage from '@site/src/components/ModReleasePage';
dllName="FFM.Plugin.AssetExporter.dll"
releaseReady={false}
version="NotReleasedYet"
author="mleem97 / FrikaMF Community"
author="mleem97 / gregCore Community"
category="Plugin"
dependencies={['MelonLoader', 'FrikaMF']}
dependencies={['MelonLoader', 'gregCore']}
codeLanguages={['C#']}
description="Provides export-focused tooling for asset-related workflows in Data Center modding pipelines."
banner="Asset exporter plugin release"

View File

@@ -11,11 +11,11 @@ import ModReleasePage from '@site/src/components/ModReleasePage';
dllName="FFM.Plugin.Multiplayer.dll"
releaseReady={false}
version="NotReleasedYet"
author="mleem97 / FrikaMF Community"
author="mleem97 / gregCore Community"
category="Plugin"
dependencies={['MelonLoader', 'FrikaMF']}
dependencies={['MelonLoader', 'gregCore']}
codeLanguages={['C#']}
description="Contains multiplayer-oriented plugin functionality for FrikaMF ecosystems."
description="Contains multiplayer-oriented plugin functionality for gregCore ecosystems."
banner="Multiplayer plugin release"
releaseNotesPath="/wiki/plugins/ffm-plugin-multiplayer"
/>

View File

@@ -11,9 +11,9 @@ import ModReleasePage from '@site/src/components/ModReleasePage';
dllName="FFM.Plugin.PlayerModels.dll"
releaseReady={false}
version="NotReleasedYet"
author="mleem97 / FrikaMF Community"
author="mleem97 / gregCore Community"
category="Plugin"
dependencies={['MelonLoader', 'FrikaMF']}
dependencies={['MelonLoader', 'gregCore']}
codeLanguages={['C#']}
description="Extends player model handling and related rendering/gameplay presentation behavior."
banner="Player models plugin release"

View File

@@ -11,9 +11,9 @@ import ModReleasePage from '@site/src/components/ModReleasePage';
dllName="FFM.Plugin.Sysadmin.dll"
releaseReady={false}
version="NotReleasedYet"
author="mleem97 / FrikaMF Community"
author="mleem97 / gregCore Community"
category="Plugin"
dependencies={['MelonLoader', 'FrikaMF']}
dependencies={['MelonLoader', 'gregCore']}
codeLanguages={['C#']}
description="Provides sysadmin-focused controls and quality-of-life command utilities."
banner="Sysadmin plugin release"

View File

@@ -11,9 +11,9 @@ import ModReleasePage from '@site/src/components/ModReleasePage';
dllName="FFM.Plugin.WebUIBridge.dll"
releaseReady={false}
version="NotReleasedYet"
author="mleem97 / FrikaMF Community"
author="mleem97 / gregCore Community"
category="Plugin"
dependencies={['MelonLoader', 'FrikaMF']}
dependencies={['MelonLoader', 'gregCore']}
codeLanguages={['C#']}
description="Bridges runtime data to web interfaces for dashboards and remote overlays."
banner="Web UI bridge plugin release"

View File

@@ -12,7 +12,7 @@ import ModReleasePage from '@site/src/components/ModReleasePage';
dllName="FMF.ModPathRedirector.dll"
releaseReady={true}
version="1.5.0"
author="DataCenterExporter / FrikaMF Community"
author="DataCenterExporter / gregCore Community"
category="MelonLoader plugin"
dependencies={['MelonLoader', 'Steam (client)', 'Data Center']}
codeLanguages={['C#']}

View File

@@ -10,7 +10,7 @@ Authoritative reference material for the framework and documentation site.
- [Wiki mapping](/wiki/reference/wiki-mapping) — how paths line up across systems.
- [Mod store vision](/wiki/reference/mod-store-vision) — product direction notes.
- [Modding language (C# only)](/wiki/reference/modding-language-requirement) — mods, plugins, extensions: **C#** only.
- [Modding language support](/wiki/reference/modding-language-requirement) — mods, plugins, extensions: **C#** only.
- [FMF hook naming](/wiki/reference/fmf-hook-naming) — conventions for hook identifiers.
- [FMF hooks catalog](/wiki/reference/fmf-hooks-catalog) — generated listing from framework sources.
- [greg hooks registry (IL2CPP)](/wiki/reference/greg-hooks-registry) — `greg.*` Harmony hooks, `greg_hooks.json`, codegen from Il2Cpp unpack.

View File

@@ -10,7 +10,7 @@ The **gregFramework** folder groups several repositories (split layout). Use thi
| Area | Folder | Role |
|------|--------|------|
| **Framework core** | `gregCore/` | MelonLoader host: **`gregCore/FrikaMF.sln`** / **`gregCore/framework/FrikaMF.csproj`**, templates, **`gregCore/mcp-server/`**, optional `gregCore/plugins/` mirrors |
| **Framework core** | `gregCore/` | MelonLoader host: **`gregCore/gregCore.sln`** / **`gregCore/framework/gregCore.csproj`** → runtime **`gregCore.dll`**; **`framework/ModLoader/LanguageBridges/`** (incl. **`LuaModules/`** for Lua `greg.*`); templates, **`gregCore/mcp-server/`**, optional `gregCore/plugins/` mirrors |
| **Gameplay mods** | `gregMod.<Name>/` | Standalone mods (`FMF.*`) — **directly under `gregFramework/`** (the `gregMods/` umbrella is deprecated) |
| **Framework plugins** | `gregExt.<Name>/` | FFM plugins (`FFM.Plugin.*`) — **directly under `gregFramework/`** (the `gregExtensions/` umbrella is deprecated) |
| **GregModManager (MAUI)** | `gregModmanager/` | **Gregtools Modmanager** — UI for managing mods/plugins; `WorkshopUploader.csproj`, **`WorkshopUploader.exe`**. See [Architecture principles](/wiki/meta/system-architecture-principles). |
@@ -23,6 +23,8 @@ The **gregFramework** folder groups several repositories (split layout). Use thi
| **Examples** | `exGregFramework/` | Example / bootstrap layout |
| **Helper** | `siblingRepos/` | Scripts to clone related repos |
**Rust / native FFI:** implementiert im **Framework-Core** (`gregCore/framework/src/ModLoader/FfiBridge.cs`, zusammen mit `Core.cs`).
**Rust / native FFI:** implementiert im **Framework-Core** (`gregCore/framework/ModLoader/FfiBridge.cs`, zusammen mit `Core.cs`).
**Lua script mods (in-game):** nach Build/Install unter **`Data Center/Mods/ScriptMods/lua/`** (Modulordner mit `.lua`-Dateien; siehe [Language Bridges README](https://github.com/mleem97/gregFramework/blob/main/gregCore/framework/ModLoader/LanguageBridges/README.md)).
**Detailed inventory** (paths, `.csproj`, hooks): [Repository inventory](../contributors/repo-inventory).