Files
gregWiki/docs/framework/greg-hooks-and-events.md
Marvin 9605741570 fix(docs): update documentation for clarity and structure
- Revised the `getting-started.md` and `documentation-layout.md` files to improve clarity and organization of content.
- Enhanced descriptions and added tables for better readability in the `getting-started.md` file.
- Updated the `greg-hooks-registry.md` to reflect changes in the hook mapping and clarify the role of `greg_hooks.json`.
- Adjusted the `fmf-hook-naming.md` and `fmf-hooks-catalog.md` to emphasize the transition from legacy naming conventions to the new `greg.*` format.

This commit aims to improve the overall clarity and usability of the documentation, ensuring users have a better understanding of the framework and its components.
2026-04-10 04:34:18 +02:00

3.7 KiB
Raw Blame History

title, sidebar_label, description
title sidebar_label description
Greg hooks & event runtime Greg hooks & events greg.* hooks, GregEventDispatcher, GregNativeEventHooks, greg_hooks.json, Rust FFI event ids, and compat aliases.

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:

Fläche Zweck Typischer Einstieg
greg.* Hook-Strings Kanonische Namen für Harmony-/Mod-Code; Registry in greg_hooks.json. GregEventDispatcher.On("greg....", handler, modId) in gregFramework.Core
Native Pipeline (EventIdsgreg.*) Gleiche Spielmomente wie FFI-Events; zentral GregNativeEventHooks. Konstanten / Resolve(uint) in gregFramework.Core.GregNativeEventHooks
Legacy-Aliase Alte String-Schreibweisen → kanonisches greg.*. GregCompatBridge (+ optional Einträge in greg_hooks.json legacy)

Neue öffentliche Dokumentations-IDs folgen weiterhin FMF.<Domain>.* — siehe FMF hook naming. Die Laufzeit für die native Kette ist greg.* wie in GregNativeEventHooks und greg_hooks.json.

greg_hooks.json (Version 2)

Pfad Rolle
Repo-Root greg_hooks.json Quelle der Wahrheit: 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.

Regenerieren: gregCore/scripts/Generate-GregHooksFromIl2CppDump.ps1 bei geändertem Il2Cpp-/Interop-Stand.

GregEventDispatcher / SDK

Implementierung: 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.

Native Events (EventIds)

  • EventIds und EventDispatcher: gregCore/framework/src/ModLoader/EventDispatcher.cs (Rust-kompatible numerische IDs).
  • Mapping → greg.*: GregNativeEventHooks (gregCore/framework/src/Sdk/GregNativeEventHooks.cs); Emission über GregHookIntegration im selben ModLoader-Baum.
  • Katalog (Wiki): greg hooks catalog (Generator: gregCore/tools/Generate-GregHookCatalog.ps1).

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/.

MelonLoader-Einstiege (eine 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.

Tooling

  • MCP: greg_hook_registry, greg_hook_search, … mit dataRootgregCore/MCP server.
  • Legacy-Seite FMF hooks catalog verweist nur noch auf GregNativeEventHooks / greg-Katalog (kein HookNames.cs mehr).

Siehe auch