mirror of
https://github.com/mleem97/gregWiki.git
synced 2026-04-11 03:29:19 +02:00
docs: update terminology and improve clarity across documentation
- Revised the tagline in `docusaurus.config.js` to reflect the focus on Data Center. - Enhanced descriptions in `getting-started.md`, `intro.md`, and various mod documentation files for consistency and clarity. - Updated references to the game name, removing "Waseku" for a more streamlined presentation. - Improved the structure and readability of tables and lists throughout the documentation. This commit aims to ensure the documentation is clear, consistent, and accurately represents the project, enhancing usability for both mod developers and players.
This commit is contained in:
@@ -8,7 +8,7 @@ This folder is the **single source of truth** for the public Docusaurus site. Th
|
|||||||
|------|------|--------|
|
|------|------|--------|
|
||||||
| **Landing** | [`intro` → `/wiki`](/wiki) | Mod author wiki home. |
|
| **Landing** | [`intro` → `/wiki`](/wiki) | Mod author wiki home. |
|
||||||
| **Topics hub** | [`topics/`](./topics/index.md) | Cross-cutting overviews (security, FFI, multiplayer, assets, meta). |
|
| **Topics hub** | [`topics/`](./topics/index.md) | Cross-cutting overviews (security, FFI, multiplayer, assets, meta). |
|
||||||
| **Mods & plugins** | [`mods/`](./mods/), [`plugins/`](./plugins/) | Gameplay mods (`FMF.*`) and framework plugins (`FFM.Plugin.*`). |
|
| **Mods & plugins** | [`mods/`](./mods/), [`plugins/`](./plugins/) | Gameplay mods (`FMF.*`) and framework plugins (`greg.Plugin.*` / `FFM.Plugin.*` depending on repo). |
|
||||||
| **Releases** | [`releases/`](./releases/) | Per-artifact release notes. |
|
| **Releases** | [`releases/`](./releases/) | Per-artifact release notes. |
|
||||||
| **Reference** | [`reference/`](./reference/) | Hooks, naming, MCP, generated catalogs. |
|
| **Reference** | [`reference/`](./reference/) | Hooks, naming, MCP, generated catalogs. |
|
||||||
| **Contributors** | [`contributors/`](./contributors/) | Repo layout, Docusaurus workflow, design system. |
|
| **Contributors** | [`contributors/`](./contributors/) | Repo layout, Docusaurus workflow, design system. |
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ The repository **stays one Git repo**. The goal is **clear boundaries** between
|
|||||||
|
|
||||||
| Top-level | Purpose |
|
| Top-level | Purpose |
|
||||||
|-----------|---------|
|
|-----------|---------|
|
||||||
| `framework/` | Core MelonLoader framework (`framework/FrikaMF.csproj`, `framework/FrikaMF/`, entry `Main.cs`) |
|
| `gregCore/framework/` | Core MelonLoader framework (`gregCore/framework/FrikaMF.csproj`, `Sdk/`, `ModLoader/`, entry `framework/Main.cs`) |
|
||||||
| `mods/` | Gameplay mods (`FMF.Mod.*`, `FMF.*.dll` style) |
|
| `mods/` | Gameplay mods (`FMF.Mod.*`, `FMF.*.dll` style) |
|
||||||
| `plugins/` | FFM plugins (`FFM.Plugin.*`) |
|
| `plugins/` | FFM plugins (`FFM.Plugin.*`) |
|
||||||
| `Templates/` | Scaffolds for new mods/plugins |
|
| `Templates/` | Scaffolds for new mods/plugins |
|
||||||
|
|||||||
@@ -6,52 +6,52 @@ description: greg.* hooks, GregEventDispatcher, GregNativeEventHooks, greg_hooks
|
|||||||
|
|
||||||
# Greg hooks & event runtime
|
# Greg hooks & event runtime
|
||||||
|
|
||||||
Die Assembly **`FrikaModdingFramework.dll`** entsteht aus **`gregCore/framework/FrikaMF.csproj`** und bündelt Harmony-Patches, C#-Events (`GregEventDispatcher`), sowie die Rust-/Native-Bridge. Für Mod-Autor:innen sind im Wesentlichen **drei Flächen** relevant:
|
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**:
|
||||||
|
|
||||||
| Fläche | Zweck | Typischer Einstieg |
|
| Surface | Role | Typical entry |
|
||||||
|--------|--------|---------------------|
|
|---------|------|----------------|
|
||||||
| **`greg.*` Hook-Strings** | Kanonische Namen für Harmony-/Mod-Code; Registry in **`greg_hooks.json`**. | `GregEventDispatcher.On("greg....", handler, modId)` in **`gregFramework.Core`** |
|
| **`greg.*` hook strings** | Canonical names for Harmony/mod code; registry in **`greg_hooks.json`**. | `GregEventDispatcher.On("greg....", handler, modId)` in **`gregFramework.Core`** |
|
||||||
| **Native Pipeline (`EventIds` → `greg.*`)** | Gleiche Spielmomente wie FFI-Events; zentral **`GregNativeEventHooks`**. | Konstanten / `Resolve(uint)` in **`gregFramework.Core.GregNativeEventHooks`** |
|
| **Native pipeline (`EventIds` → `greg.*`)** | Same gameplay moments as FFI events; centralized in **`GregNativeEventHooks`**. | Constants / `Resolve(uint)` on **`gregFramework.Core.GregNativeEventHooks`** |
|
||||||
| **Legacy-Aliase** | Alte String-Schreibweisen → kanonisches **`greg.*`**. | **`GregCompatBridge`** (+ optional Einträge in **`greg_hooks.json`** `legacy`) |
|
| **Legacy aliases** | Old spellings → canonical **`greg.*`**. | **`GregCompatBridge`** (+ optional **`legacy`** entries in **`greg_hooks.json`**) |
|
||||||
|
|
||||||
Neue **öffentliche Dokumentations-IDs** folgen weiterhin **`FMF.<Domain>.*`** — siehe [FMF hook naming](/wiki/reference/fmf-hook-naming). Die **Laufzeit** für die native Kette ist **`greg.*`** wie in **`GregNativeEventHooks`** und **`greg_hooks.json`**.
|
New **documentation** identifiers still follow **`FMF.<Domain>.*`** — see [FMF hook naming](/wiki/reference/fmf-hook-naming). **Runtime** strings for the native chain are **`greg.*`** as defined by **`GregNativeEventHooks`** and **`greg_hooks.json`**.
|
||||||
|
|
||||||
## `greg_hooks.json` (Version 2)
|
## `greg_hooks.json` (version 2)
|
||||||
|
|
||||||
| Pfad | Rolle |
|
| Path | Role |
|
||||||
|------|--------|
|
|------|------|
|
||||||
| **Repo-Root** `greg_hooks.json` | Quelle der Wahrheit: `name`, `patchTarget`, `strategy`, `payloadSchema`, optional `legacy`. |
|
| **Repo root** `greg_hooks.json` | Source of truth: `name`, `patchTarget`, `strategy`, `payloadSchema`, optional `legacy`. |
|
||||||
| **Neben `FrikaModdingFramework.dll`** | Wird per `FrikaMF.csproj` aus dem Monorepo-Root kopiert, damit **`GregCompatBridge`** Legacy-Namen auflösen kann. |
|
| **Next to `FrikaModdingFramework.dll`** | Copied from the monorepo root on build so **`GregCompatBridge`** can resolve legacy names. |
|
||||||
|
|
||||||
Regenerieren: `gregCore/scripts/Generate-GregHooksFromIl2CppDump.ps1` bei geändertem Il2Cpp-/Interop-Stand.
|
Regenerate: `gregCore/scripts/Generate-GregHooksFromIl2CppDump.ps1` when Il2Cpp/interop inputs change.
|
||||||
|
|
||||||
## `GregEventDispatcher` / SDK
|
## `GregEventDispatcher` / SDK
|
||||||
|
|
||||||
Implementierung: **`gregCore/framework/src/Sdk/GregEventDispatcher.cs`** (`namespace gregFramework.Core`). API: **`On` / `Once` / `Off` / `Emit`**, **`OnCancelable` / `InvokeCancelable`**, **`UnregisterAll(modId)`**.
|
Implementation: **`gregCore/framework/src/Sdk/GregEventDispatcher.cs`** (`namespace gregFramework.Core`). API: **`On` / `Once` / `Off` / `Emit`**, **`OnCancelable` / `InvokeCancelable`**, **`UnregisterAll(modId)`**.
|
||||||
|
|
||||||
Hook-Strings stabil mit **`GregHookName.Create(GregDomain.*, "Action")`** oder den **`GregNativeEventHooks.*`**-Konstanten bauen.
|
Build stable hook strings with **`GregHookName.Create(GregDomain.*, "Action")`** or **`GregNativeEventHooks.*`** constants.
|
||||||
|
|
||||||
## Native Events (`EventIds`)
|
## Native events (`EventIds`)
|
||||||
|
|
||||||
- **`EventIds`** und **`EventDispatcher`:** `gregCore/framework/src/ModLoader/EventDispatcher.cs` (Rust-kompatible numerische IDs).
|
- **`EventIds` and `EventDispatcher`:** `gregCore/framework/src/ModLoader/EventDispatcher.cs` (numeric ids aligned with Rust).
|
||||||
- **Mapping → `greg.*`:** **`GregNativeEventHooks`** (`gregCore/framework/src/Sdk/GregNativeEventHooks.cs`); Emission über **`GregHookIntegration`** im selben ModLoader-Baum.
|
- **Mapping → `greg.*`:** **`GregNativeEventHooks`** (`gregCore/framework/src/Sdk/GregNativeEventHooks.cs`); emission via **`GregHookIntegration`** in the same ModLoader tree.
|
||||||
- **Katalog (Wiki):** [greg hooks catalog](/wiki/reference/greg-hooks-catalog) (Generator: `gregCore/tools/Generate-GregHookCatalog.ps1`).
|
- **Wiki table:** [greg hooks catalog](/wiki/reference/greg-hooks-catalog) (generator: `gregCore/tools/Generate-GregHookCatalog.ps1`).
|
||||||
|
|
||||||
## Rust FFI
|
## Rust FFI
|
||||||
|
|
||||||
Rust-/Native-Mods erhalten **numerische** Event-IDs; C# spiegelt dieselben Momente als **`greg.*`** über **`GregHookIntegration`**, sobald der Code läuft (auch ohne aktive FFI-Verbindung für die greg-Oberfläche). Bridge-Code: **`FfiBridge` / `FFIBridge`** unter `framework/src/ModLoader/`.
|
Rust/native mods receive **numeric** event ids; C# mirrors the same moments as **`greg.*`** through **`GregHookIntegration`** while the game runs (including when the FFI connection is down for the managed **`greg.*` surface). Bridge code: **`FfiBridge` / `FFIBridge`** under `framework/src/ModLoader/`.
|
||||||
|
|
||||||
## MelonLoader-Einstiege (eine DLL)
|
## MelonLoader entry points (one DLL)
|
||||||
|
|
||||||
Je nach Build können mehrere **`MelonMod`**-Typen in derselben Assembly liegen (z. B. Framework-Hauptplugin, AssetExporter-Pfade) — **`MelonInfo`** / **`MelonGame`** in den Quellen prüfen.
|
Depending on the build, multiple **`MelonMod`** types may ship in the same assembly (e.g. main framework plugin vs. AssetExporter paths) — check **`MelonInfo`** / **`MelonGame`** in source.
|
||||||
|
|
||||||
## Tooling
|
## Tooling
|
||||||
|
|
||||||
- **MCP:** `greg_hook_registry`, `greg_hook_search`, … mit `dataRoot` → **`gregCore/`** — [MCP server](/wiki/reference/mcp-server).
|
- **MCP:** `greg_hook_registry`, `greg_hook_search`, … with `dataRoot` → **`gregCore/`** — [MCP server](/wiki/reference/mcp-server).
|
||||||
- **Legacy-Seite [FMF hooks catalog](/wiki/reference/fmf-hooks-catalog)** verweist nur noch auf **`GregNativeEventHooks`** / greg-Katalog (kein `HookNames.cs` mehr).
|
- **[FMF hooks catalog](/wiki/reference/fmf-hooks-catalog)** is now a **short redirect** to **`GregNativeEventHooks`** / [greg hooks catalog](/wiki/reference/greg-hooks-catalog) (the old **`HookNames.cs`** table is gone).
|
||||||
|
|
||||||
## Siehe auch
|
## See also
|
||||||
|
|
||||||
- [Repository architecture](/wiki/framework/architecture)
|
- [Repository architecture](/wiki/framework/architecture)
|
||||||
- [FFI, hooks & Lua (Hub)](/wiki/topics/ffi-and-hooks/overview)
|
- [FFI, hooks & Lua (hub)](/wiki/topics/ffi-and-hooks/overview)
|
||||||
- [Getting started](/wiki/getting-started)
|
- [Getting started](/wiki/getting-started)
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ The **Hex Label** mod adds in-world hex color labels for cable spinners and rack
|
|||||||
| **Assembly** | `FMF.HexLabelMod.dll` |
|
| **Assembly** | `FMF.HexLabelMod.dll` |
|
||||||
| **Version** | `00.01.0009` |
|
| **Version** | `00.01.0009` |
|
||||||
| **Author** | mleem97 |
|
| **Author** | mleem97 |
|
||||||
| **Game** | Waseku — Data Center (App 4170200) |
|
| **Game** | Data Center (App 4170200) |
|
||||||
| **Workshop Tags** | `modded`, `melonloader`, `mod` |
|
| **Workshop Tags** | `modded`, `melonloader`, `mod` |
|
||||||
|
|
||||||
## Downloads
|
## Downloads
|
||||||
|
|||||||
@@ -1,53 +1,53 @@
|
|||||||
---
|
---
|
||||||
title: Getting started
|
title: Getting started
|
||||||
sidebar_label: Getting started
|
sidebar_label: Getting started
|
||||||
description: Workspace-Layout (gregFramework), gregCore bauen, Hooks & erste Mod-Schritte.
|
description: Workspace layout (gregFramework), building gregCore, hooks, and your first mod.
|
||||||
---
|
---
|
||||||
|
|
||||||
Der Workspace ist **multi-repo**: unter einem gemeinsamen Ordner `gregFramework/` liegen mehrere Git-Repos **flach** nebeneinander. **Logik:** **ModManager → Framework / SDK → Plugins → Mods** — siehe [System architecture & documentation principles](/wiki/meta/system-architecture-principles).
|
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](/wiki/meta/system-architecture-principles).
|
||||||
|
|
||||||
| Ordner | Inhalt |
|
| Folder | Role |
|
||||||
|--------|--------|
|
|--------|--------|
|
||||||
| **`gregCore/`** | Framework: **`gregCore/FrikaMF.sln`**, Hauptprojekt **`gregCore/framework/FrikaMF.csproj`**; SDK unter `framework/src/Sdk/`; MCP unter `gregCore/mcp-server/` |
|
| **`gregCore/`** | Framework: **`gregCore/FrikaMF.sln`**, main project **`gregCore/framework/FrikaMF.csproj`**; SDK under `framework/src/Sdk/`; MCP under `gregCore/mcp-server/` |
|
||||||
| **`gregMod.<Name>/`** | Gameplay-Mods (`FMF.*`-Assemblies üblich), **flach** neben `gregCore/` (Umbrella **`gregMods/`** ist veraltet) |
|
| **`gregMod.<Name>/`** | Gameplay mods (often `FMF.*` assemblies), **flat** next to `gregCore/` (umbrella **`gregMods/`** is deprecated) |
|
||||||
| **`gregExt.<Name>/`** | Framework-Plugins (`FFM.Plugin.*` / `greg.Plugin.*`), ebenfalls flach (**`gregExtensions/`** veraltet) |
|
| **`gregExt.<Name>/`** | Framework plugins (`FFM.Plugin.*` / `greg.Plugin.*`), also flat (**`gregExtensions/`** deprecated) |
|
||||||
| **`gregModmanager/`** | GregModManager / Workshop-UI (`WorkshopUploader.csproj`) |
|
| **`gregModmanager/`** | GregModManager / Workshop UI (`WorkshopUploader.csproj`) |
|
||||||
| **`gregDataCenterExporter/`** | Exporter, Templates, Spiegel |
|
| **`gregDataCenterExporter/`** | Exporter, templates, mirrors |
|
||||||
| **`gregWiki/`** | Diese Doku (Docusaurus) |
|
| **`gregWiki/`** | This documentation site (Docusaurus) |
|
||||||
|
|
||||||
Rust-/Native-Mods werden vom Core über die FFI-Schicht geladen; Bridge-Code lebt im **`framework/src/ModLoader/`**-Baum von **gregCore**.
|
Rust/native mods are loaded through the core FFI layer; bridge code lives under **`gregCore/framework/src/ModLoader/`**.
|
||||||
|
|
||||||
## Framework bauen
|
## Build the framework
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
dotnet build gregCore/FrikaMF.sln -c Release
|
dotnet build gregCore/FrikaMF.sln -c Release
|
||||||
```
|
```
|
||||||
|
|
||||||
Oder `gregCore/FrikaMF.sln` in der IDE öffnen. Für CI ohne lokale Spiel-Installation oft: **`-p:CI=true`** (siehe jeweilige `.csproj`-Targets).
|
Or open **`gregCore/FrikaMF.sln`** in your IDE. For CI without a local game install, many projects support **`-p:CI=true`** (see each `.csproj`).
|
||||||
|
|
||||||
**Voraussetzungen:** MelonLoader **net6**-Assemblies und Il2Cpp-Interop des Spiels — entweder aus `{Game}/MelonLoader/` oder aus **`gregCore/lib/references/MelonLoader`** (z. B. via `python gregCore/tools/refresh_refs.py`). Umgebungsvariable **`DATA_CENTER_GAME_DIR`** hilft beim Auflösen des Spielpfads.
|
**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.
|
||||||
|
|
||||||
## Hooks & Registries
|
## Hooks and registries
|
||||||
|
|
||||||
| Thema | Wo |
|
| Topic | Where |
|
||||||
|--------|-----|
|
|-------|--------|
|
||||||
| **Kanonische `greg.*` (JSON, Il2Cpp)** | Repo-Root **`greg_hooks.json`**; Regeneration: **`gregCore/scripts/Generate-GregHooksFromIl2CppDump.ps1`** |
|
| **Canonical `greg.*` (JSON, Il2Cpp)** | Repo root **`greg_hooks.json`**; regenerate: **`gregCore/scripts/Generate-GregHooksFromIl2CppDump.ps1`** |
|
||||||
| **EventId → `greg.*` (FFI / natives Pipeline)** | **`GregNativeEventHooks`** — [greg hooks catalog](/wiki/reference/greg-hooks-catalog), Quellcode `gregCore/framework/src/Sdk/GregNativeEventHooks.cs` |
|
| **EventId → `greg.*` (native / FFI pipeline)** | **`GregNativeEventHooks`** — [greg hooks catalog](/wiki/reference/greg-hooks-catalog), source `gregCore/framework/src/Sdk/GregNativeEventHooks.cs` |
|
||||||
| **Doku-Namenskonvention `FMF.*`** | [FMF hook naming](/wiki/reference/fmf-hook-naming) |
|
| **`FMF.*` documentation naming** | [FMF hook naming](/wiki/reference/fmf-hook-naming) |
|
||||||
| **Architektur Überblick** | [Greg hooks & event runtime](/wiki/framework/greg-hooks-and-events) |
|
| **Architecture** | [Greg hooks & event runtime](/wiki/framework/greg-hooks-and-events) |
|
||||||
| **Legacy-Strings** | **`GregCompatBridge`** lädt **`greg_hooks.json`** neben **`FrikaModdingFramework.dll`** |
|
| **Legacy spellings** | **`GregCompatBridge`** loads **`greg_hooks.json`** next to **`FrikaModdingFramework.dll`** |
|
||||||
|
|
||||||
## Ersten Mod starten
|
## Start a new mod
|
||||||
|
|
||||||
1. Neues Repo **`gregMod.<Name>/`** unter `gregFramework/` anlegen (oder Template klonen).
|
1. Create **`gregMod.<Name>/`** under `gregFramework/` (or clone a template).
|
||||||
2. **`ProjectReference`** auf **`gregCore/framework/FrikaMF.csproj`** setzen (wie **`mods/GregShowcaseMod/`**).
|
2. Add **`ProjectReference`** to **`gregCore/framework/FrikaMF.csproj`** (see **`mods/GregShowcaseMod/`**).
|
||||||
3. API **`gregFramework.Core`** (`GregEventDispatcher`, `GregHookName`, `GregNativeEventHooks`, …).
|
3. Use **`gregFramework.Core`** (`GregEventDispatcher`, `GregHookName`, `GregNativeEventHooks`, …).
|
||||||
4. Vorlagen: **`gregCore/Templates/greg.BasedModTemplate/`** oder gespiegelte Templates unter **`gregDataCenterExporter/Templates/`**.
|
4. Templates: **`gregCore/Templates/greg.BasedModTemplate/`** or mirrored templates under **`gregDataCenterExporter/Templates/`**.
|
||||||
|
|
||||||
Referenz-Mod: **`mods/GregShowcaseMod/`** — [Greg hooks showcase](/wiki/guides/mod-developers/greg-hooks-showcase).
|
Reference mod: **`mods/GregShowcaseMod/`** — [Greg hooks showcase](/wiki/guides/mod-developers/greg-hooks-showcase).
|
||||||
|
|
||||||
## Dokumentations-Site (`gregWiki/`)
|
## Documentation site (`gregWiki/`)
|
||||||
|
|
||||||
- Markdown unter **`gregWiki/docs/`**
|
- Markdown under **`gregWiki/docs/`**
|
||||||
- Docker: im **`gregWiki/`**-Root `docker build` / `docker run` (siehe **`gregWiki/README.md`**)
|
- Docker: from **`gregWiki/`** root — see **`gregWiki/README.md`**
|
||||||
- MCP: [mcp-server](/wiki/reference/mcp-server) — Server unter **`gregCore/mcp-server/`**
|
- MCP: [mcp-server](/wiki/reference/mcp-server) — server code under **`gregCore/mcp-server/`**
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ Authoritative documentation: [greg hooks registry (IL2CPP)](/wiki/reference/greg
|
|||||||
**Pattern A — dynamic (anonymous types from compiler):**
|
**Pattern A — dynamic (anonymous types from compiler):**
|
||||||
|
|
||||||
```csharp
|
```csharp
|
||||||
private static void OnMoneyChanged(object payload)
|
private static void OnCoinChanged(object payload)
|
||||||
{
|
{
|
||||||
dynamic p = payload;
|
dynamic p = payload;
|
||||||
float delta = (float)p.coinChangeAmount;
|
float delta = (float)p.coinChangeAmount;
|
||||||
@@ -62,7 +62,7 @@ Use **`GregPayload.Dump(payload)`** for one-line debug strings.
|
|||||||
|
|
||||||
## Prefix hooks and cancellation
|
## Prefix hooks and cancellation
|
||||||
|
|
||||||
Hooks that run **before** the original method (Harmony Prefix) can call **`GregEventDispatcher.InvokeCancelable(hookName, payload)`**. Mods register **`GregEventDispatcher.OnCancelable(hookName, p => bool, modId)`**; if any handler returns `false`, the integration can skip the original (e.g. `Player.UpdateCoin`).
|
Hooks that run **before** the original method (Harmony Prefix) can call **`GregEventDispatcher.InvokeCancelable(hookName, payload)`**. Mods register **`GregEventDispatcher.OnCancelable(hookName, p => bool, modId)`**; if any handler returns `false`, the integration can skip the original (e.g. `Player.UpdateCoin`). Der Showcase nutzt **`GregNativeEventHooks.PlayerCoinChanged`** (`greg.PLAYER.CoinChanged`).
|
||||||
|
|
||||||
Showcase: enable `blockNegativeTransactions` in `content/modconfig.json` to register a veto on large negative `coinChangeAmount` values.
|
Showcase: enable `blockNegativeTransactions` in `content/modconfig.json` to register a veto on large negative `coinChangeAmount` values.
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ description: Getting started, mod config, debugging — curated docs for FMF mod
|
|||||||
- [Getting started](/wiki/getting-started) and [Documentation hub](/wiki/developers)
|
- [Getting started](/wiki/getting-started) and [Documentation hub](/wiki/developers)
|
||||||
- [Framework overview](/wiki/mods/framework) — runtime capabilities and repo layout
|
- [Framework overview](/wiki/mods/framework) — runtime capabilities and repo layout
|
||||||
- [FMF hooks](/wiki/framework/fmf-hooks) — hook surface (generated article)
|
- [FMF hooks](/wiki/framework/fmf-hooks) — hook surface (generated article)
|
||||||
- [FMF hook naming](/wiki/reference/fmf-hook-naming) and [hooks catalog](/wiki/reference/fmf-hooks-catalog)
|
- [FMF hook naming](/wiki/reference/fmf-hook-naming); runtime map: [greg hooks catalog](/wiki/reference/greg-hooks-catalog) (see also [FMF hooks catalog (legacy redirect)](/wiki/reference/fmf-hooks-catalog))
|
||||||
- [Contributor workshop](/wiki/guides/contributors/contributor-workshop) — builds, CI, and PRs
|
- [Contributor workshop](/wiki/guides/contributors/contributor-workshop) — builds, CI, and PRs
|
||||||
- [Mods](/wiki/mods/) — gameplay mods (`FMF.*`) and release pages
|
- [Mods](/wiki/mods/) — gameplay mods (`FMF.*`) and release pages
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
id: intro
|
id: intro
|
||||||
title: Mod author wiki
|
title: Mod author wiki
|
||||||
slug: /
|
slug: /
|
||||||
description: Technical documentation for Data Center Simulator mod and plugin authors — gregFramework, hooks, workspace, and releases.
|
description: Technical documentation for Data Center mod and plugin authors — gregFramework, hooks, workspace, and releases.
|
||||||
---
|
---
|
||||||
|
|
||||||
# Mod author wiki
|
# Mod author wiki
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ Provides guardrails around console input handling and accidental interactions.
|
|||||||
| **Assembly** | `FMF.ConsoleInputGuard.dll` |
|
| **Assembly** | `FMF.ConsoleInputGuard.dll` |
|
||||||
| **Version** | `00.01.0001` |
|
| **Version** | `00.01.0001` |
|
||||||
| **Author** | mleem97 |
|
| **Author** | mleem97 |
|
||||||
| **Game** | Waseku — Data Center (App 4170200) |
|
| **Game** | Data Center (App 4170200) |
|
||||||
| **Workshop Tags** | `modded`, `melonloader`, `mod` |
|
| **Workshop Tags** | `modded`, `melonloader`, `mod` |
|
||||||
| **Workshop Content Path** | `content/Mods/` |
|
| **Workshop Content Path** | `content/Mods/` |
|
||||||
| **Needs FMF** | No (standalone MelonLoader mod) |
|
| **Needs FMF** | No (standalone MelonLoader mod) |
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ Applies themed employee customization to hiring-related gameplay flows.
|
|||||||
| **Assembly** | `FMF.GregifyEmployees.dll` |
|
| **Assembly** | `FMF.GregifyEmployees.dll` |
|
||||||
| **Version** | `00.01.0009` |
|
| **Version** | `00.01.0009` |
|
||||||
| **Author** | mleem97 |
|
| **Author** | mleem97 |
|
||||||
| **Game** | Waseku — Data Center (App 4170200) |
|
| **Game** | Data Center (App 4170200) |
|
||||||
| **Workshop Tags** | `modded`, `melonloader`, `mod` |
|
| **Workshop Tags** | `modded`, `melonloader`, `mod` |
|
||||||
| **Workshop Content Path** | `content/Mods/` |
|
| **Workshop Content Path** | `content/Mods/` |
|
||||||
| **Needs FMF** | No (standalone MelonLoader mod) |
|
| **Needs FMF** | No (standalone MelonLoader mod) |
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ sidebar_label: FMF.HexLabelMod
|
|||||||
|
|
||||||
## Purpose
|
## Purpose
|
||||||
|
|
||||||
Standalone MelonLoader mod for **Data Center** (Waseku) that overlays the hex color code of each `CableSpinner` and `Rack` directly in-world, so you can identify cable and rack colors at a glance without opening any menu.
|
Standalone MelonLoader mod for **Data Center** that overlays the hex color code of each `CableSpinner` and `Rack` directly in-world, so you can identify cable and rack colors at a glance without opening any menu.
|
||||||
|
|
||||||
Rewritten from the former root `HexLabelMod` for the FrikaModdingFramework workflow, now running fully standalone.
|
Rewritten from the former root `HexLabelMod` for the FrikaModdingFramework workflow, now running fully standalone.
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ Provides language/localization compatibility bridging for mixed mod stacks.
|
|||||||
| **Assembly** | `FMF.JoniMLCompatMod.dll` |
|
| **Assembly** | `FMF.JoniMLCompatMod.dll` |
|
||||||
| **Version** | `00.01.0009` |
|
| **Version** | `00.01.0009` |
|
||||||
| **Author** | mleem97 |
|
| **Author** | mleem97 |
|
||||||
| **Game** | Waseku — Data Center (App 4170200) |
|
| **Game** | Data Center (App 4170200) |
|
||||||
| **Workshop Tags** | `modded`, `melonloader`, `mod` |
|
| **Workshop Tags** | `modded`, `melonloader`, `mod` |
|
||||||
| **Workshop Content Path** | `content/Mods/` |
|
| **Workshop Content Path** | `content/Mods/` |
|
||||||
| **Needs FMF** | No (standalone MelonLoader mod) |
|
| **Needs FMF** | No (standalone MelonLoader mod) |
|
||||||
|
|||||||
@@ -19,6 +19,6 @@ The core `FrikaMF` runtime provides:
|
|||||||
- [FMF hooks (generated)](/wiki/framework/fmf-hooks) — hook surface and categories (deklarativ; kann der JSON-Registry folgen)
|
- [FMF hooks (generated)](/wiki/framework/fmf-hooks) — hook surface and categories (deklarativ; kann der JSON-Registry folgen)
|
||||||
- [FMF hook naming](/wiki/reference/fmf-hook-naming) — **`FMF.*`** Doku-Konvention
|
- [FMF hook naming](/wiki/reference/fmf-hook-naming) — **`FMF.*`** Doku-Konvention
|
||||||
- [greg hooks catalog](/wiki/reference/greg-hooks-catalog) — **EventId → `greg.*`** (`GregNativeEventHooks`, generiert)
|
- [greg hooks catalog](/wiki/reference/greg-hooks-catalog) — **EventId → `greg.*`** (`GregNativeEventHooks`, generiert)
|
||||||
- [FMF hooks catalog](/wiki/reference/fmf-hooks-catalog) — Kurzüberblick / Redirect (ersetzt altes `HookNames`)
|
- [FMF hooks catalog](/wiki/reference/fmf-hooks-catalog) — short redirect (replaces old `HookNames`)
|
||||||
- [greg hooks registry (IL2CPP)](/wiki/reference/greg-hooks-registry) — `greg_hooks.json`, Generator, Harmony-Deduplizierung
|
- [greg hooks registry (IL2CPP)](/wiki/reference/greg-hooks-registry) — `greg_hooks.json`, Generator, Harmony-Deduplizierung
|
||||||
- [Framework architecture](/wiki/framework/architecture) — runtime layout and bridges
|
- [Framework architecture](/wiki/framework/architecture) — runtime layout and bridges
|
||||||
|
|||||||
@@ -5,31 +5,31 @@ slug: /reference/fmf-hooks-catalog
|
|||||||
description: Redirect — native EventId → greg.* mapping now lives in GregNativeEventHooks; see greg hooks catalog.
|
description: Redirect — native EventId → greg.* mapping now lives in GregNativeEventHooks; see greg hooks catalog.
|
||||||
---
|
---
|
||||||
|
|
||||||
<!-- Former auto-generated page; content replaced — do not restore old HookNames tables. -->
|
<!-- Former auto-generated page; replaced — do not restore old HookNames tables. -->
|
||||||
|
|
||||||
# FMF hooks catalog (legacy)
|
# FMF hooks catalog (legacy)
|
||||||
|
|
||||||
Die frühere, aus **`HookNames.cs`** generierte Tabelle wurde **entfernt**. Die Laufzeit mappt numerische **`EventIds`** heute zentral über **`GregNativeEventHooks`** auf kanonische **`greg.*`**-Strings (siehe auch **`GregCompatBridge`** für veraltete Schreibweisen).
|
The old table generated from **`HookNames.cs`** has been **removed**. Runtime mapping of numeric **`EventIds`** to canonical **`greg.*`** strings is centralized in **`GregNativeEventHooks`** (see **`GregCompatBridge`** for deprecated spellings).
|
||||||
|
|
||||||
## Aktuelle Quellen
|
## Current sources
|
||||||
|
|
||||||
| Thema | Wo |
|
| Topic | Where |
|
||||||
|--------|-----|
|
|-------|--------|
|
||||||
| **EventId → `greg.*` (FFI / natives Pipeline)** | [greg hooks catalog](./greg-hooks-catalog.md) — generiert aus `gregCore/framework/src/Sdk/GregNativeEventHooks.cs` und `EventIds` in `EventDispatcher.cs` |
|
| **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` im Repo-Root; Kopie neben `FrikaModdingFramework.dll` beim Build |
|
| **Il2Cpp hook registry (JSON)** | `greg_hooks.json` at repo root; copied next to `FrikaModdingFramework.dll` on build |
|
||||||
| **Doku-Politik `FMF.*`** | [FMF hook naming](./fmf-hook-naming.md) — Namenskonvention für neue *Dokumentations*-IDs (nicht 1:1 jedes Runtime-Strings) |
|
| **`FMF.*` documentation policy** | [FMF hook naming](./fmf-hook-naming.md) — naming for new *documentation* IDs (not byte-for-byte every runtime string) |
|
||||||
|
|
||||||
## Katalog neu erzeugen
|
## Regenerate the wiki table
|
||||||
|
|
||||||
Im **gregCore**-Repo (gregWiki-Checkout liegt typischerweise **nebendran**):
|
From the **gregCore** repo (with **gregWiki** checked out **next to** **gregCore**):
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
./tools/Generate-GregHookCatalog.ps1
|
./tools/Generate-GregHookCatalog.ps1
|
||||||
```
|
```
|
||||||
|
|
||||||
Aktualisiert `gregWiki/docs/reference/greg-hooks-catalog.md`.
|
Updates `gregWiki/docs/reference/greg-hooks-catalog.md`.
|
||||||
|
|
||||||
## Siehe auch
|
## See also
|
||||||
|
|
||||||
- [greg hooks catalog](./greg-hooks-catalog.md)
|
- [greg hooks catalog](./greg-hooks-catalog.md)
|
||||||
- [Greg hooks & event runtime](/wiki/framework/greg-hooks-and-events)
|
- [Greg hooks & event runtime](/wiki/framework/greg-hooks-and-events)
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ description: Auto-generated catalog of native pipeline hook strings from GregNat
|
|||||||
|
|
||||||
# greg hooks catalog
|
# greg hooks catalog
|
||||||
|
|
||||||
This page is **generated** from `gregCore/framework/src/Sdk/GregNativeEventHooks.cs` and `EventIds` in `EventDispatcher.cs`.
|
This page is **generated** from `gregCore/framework/Sdk/GregNativeEventHooks.cs` and `EventIds` in `EventDispatcher.cs`.
|
||||||
|
|
||||||
**Generated:** 2026-04-10 02:07:09 UTC
|
**Generated:** 2026-04-10 02:43:33 UTC
|
||||||
|
|
||||||
## Hook string constants
|
## Hook string constants
|
||||||
|
|
||||||
@@ -110,7 +110,7 @@ Unknown event ids resolve to ``greg.SYSTEM.UnmappedNativeEvent`` via ``GregNativ
|
|||||||
|
|
||||||
## See also
|
## See also
|
||||||
|
|
||||||
- [greg hooks registry](./greg-hooks-registry.md)
|
- [greg hook naming](./greg-hook-naming.md)
|
||||||
- [EventIds source](https://github.com/mleem97/gregFramework/blob/main/gregCore/framework/src/ModLoader/EventDispatcher.cs)
|
- [EventIds source](https://github.com/mleem97/gregFramework/blob/main/gregCore/framework/ModLoader/EventDispatcher.cs)
|
||||||
- [GregNativeEventHooks source](https://github.com/mleem97/gregFramework/blob/main/gregCore/framework/src/Sdk/GregNativeEventHooks.cs)
|
- [GregNativeEventHooks source](https://github.com/mleem97/gregFramework/blob/main/gregCore/framework/Sdk/GregNativeEventHooks.cs)
|
||||||
- [Greg hooks & event runtime](/wiki/framework/greg-hooks-and-events)
|
- [Greg hooks & event runtime](/wiki/framework/greg-hooks-and-events)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
title: 'gregFramework',
|
title: 'gregFramework',
|
||||||
tagline: 'Mod-author documentation for Data Center Simulator; players use /players and the mod catalog.',
|
tagline: 'Mod-author documentation for Data Center; players use /players and the mod catalog.',
|
||||||
favicon: 'img/logo.svg',
|
favicon: 'img/logo.svg',
|
||||||
url: 'https://frikadellental.de',
|
url: 'https://frikadellental.de',
|
||||||
baseUrl: '/',
|
baseUrl: '/',
|
||||||
@@ -264,7 +264,7 @@ const config = {
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
copyright: `Copyright ${new Date().getFullYear()} <a href="https://meyermedia.eu" target="_blank" rel="noopener noreferrer">Meyer Media</a><br/>This wiki is a community project and is not affiliated with WASEKU or the game.`,
|
copyright: `Copyright ${new Date().getFullYear()} <a href="https://meyermedia.eu" target="_blank" rel="noopener noreferrer">Meyer Media</a><br/>This wiki is a community project and is not affiliated with the developer or publisher of Data Center.`,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ export const en: HomepageContent = {
|
|||||||
'datacentermods.com is in preparation. Until it launches, use the player guides in the wiki and the mod catalog on this site.',
|
'datacentermods.com is in preparation. Until it launches, use the player guides in the wiki and the mod catalog on this site.',
|
||||||
communityTitle: 'Community',
|
communityTitle: 'Community',
|
||||||
communityText:
|
communityText:
|
||||||
'This site documents gregFramework, community mods, and plugins for Data Center Simulator.',
|
'This site documents gregFramework, community mods, and plugins for Data Center.',
|
||||||
docsEndUserTitle: 'Players',
|
docsEndUserTitle: 'Players',
|
||||||
docsEndUserDescription: 'Install, update, FAQ, troubleshooting.',
|
docsEndUserDescription: 'Install, update, FAQ, troubleshooting.',
|
||||||
docsModDevsTitle: 'Mod developers',
|
docsModDevsTitle: 'Mod developers',
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ export default function HomePage(): JSX.Element {
|
|||||||
return (
|
return (
|
||||||
<Layout
|
<Layout
|
||||||
title="Home"
|
title="Home"
|
||||||
description="gregFramework: player help at /players, mod catalog, and mod-author wiki at /wiki for Data Center Simulator."
|
description="gregFramework: player help at /players, mod catalog, and mod-author wiki at /wiki for Data Center."
|
||||||
>
|
>
|
||||||
<main className="bg-background text-on-surface font-sans min-h-screen editorial-bleed bg-hero-gradient">
|
<main className="bg-background text-on-surface font-sans min-h-screen editorial-bleed bg-hero-gradient">
|
||||||
<section className="hero-motion-wrap relative flex min-h-[72vh] flex-col items-center justify-center overflow-hidden px-4 py-24 text-center">
|
<section className="hero-motion-wrap relative flex min-h-[72vh] flex-col items-center justify-center overflow-hidden px-4 py-24 text-center">
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export default function PlayersPage(): JSX.Element {
|
|||||||
return (
|
return (
|
||||||
<Layout
|
<Layout
|
||||||
title="For players"
|
title="For players"
|
||||||
description="Install and use Data Center Simulator mods: MelonLoader, Greg Mod Manager, Workshop, and troubleshooting."
|
description="Install and use Data Center mods: MelonLoader, Greg Mod Manager, Workshop, and troubleshooting."
|
||||||
>
|
>
|
||||||
<main className="bg-background text-on-surface mx-auto max-w-3xl px-4 py-16 font-sans">
|
<main className="bg-background text-on-surface mx-auto max-w-3xl px-4 py-16 font-sans">
|
||||||
<p className="mb-2 text-sm font-semibold uppercase tracking-wider text-primary">
|
<p className="mb-2 text-sm font-semibold uppercase tracking-wider text-primary">
|
||||||
@@ -35,7 +35,7 @@ export default function PlayersPage(): JSX.Element {
|
|||||||
<ul className="list-inside list-disc space-y-2 text-on-surface-variant">
|
<ul className="list-inside list-disc space-y-2 text-on-surface-variant">
|
||||||
<li>
|
<li>
|
||||||
<a href={STEAM_STORE} className="text-primary hover:underline">
|
<a href={STEAM_STORE} className="text-primary hover:underline">
|
||||||
Data Center Simulator
|
Data Center
|
||||||
</a>{' '}
|
</a>{' '}
|
||||||
on Steam (AppID 4170200)
|
on Steam (AppID 4170200)
|
||||||
</li>
|
</li>
|
||||||
@@ -50,7 +50,7 @@ export default function PlayersPage(): JSX.Element {
|
|||||||
<h2 className="mb-3 font-headline text-2xl font-bold">MelonLoader</h2>
|
<h2 className="mb-3 font-headline text-2xl font-bold">MelonLoader</h2>
|
||||||
<ol className="list-inside list-decimal space-y-2 text-on-surface-variant">
|
<ol className="list-inside list-decimal space-y-2 text-on-surface-variant">
|
||||||
<li>Download the latest MelonLoader installer from the official MelonLoader GitHub.</li>
|
<li>Download the latest MelonLoader installer from the official MelonLoader GitHub.</li>
|
||||||
<li>Run it, select <strong>Data Center Simulator</strong>, choose the <strong>IL2CPP</strong> profile.</li>
|
<li>Run it, select <strong>Data Center</strong>, choose the <strong>IL2CPP</strong> profile.</li>
|
||||||
<li>Start the game once and exit so interop assemblies are generated.</li>
|
<li>Start the game once and exit so interop assemblies are generated.</li>
|
||||||
<li>If something fails, check <code className="text-sm">MelonLoader/Latest.log</code> in the game folder.</li>
|
<li>If something fails, check <code className="text-sm">MelonLoader/Latest.log</code> in the game folder.</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|||||||
Reference in New Issue
Block a user