mirror of
https://github.com/Jacobwasbeast/LegacyWeaveLoader.git
synced 2026-06-01 18:44:30 +00:00
fa195fdc2e373323beaac89af9367004711d53b3
Rename across entire codebase: - LegacyForge -> WeaveLoader (identifiers, namespaces, classes, DLLs) - LegacyForgeRuntime -> WeaveLoaderRuntime (C++ project) - LegacyForge.API/Core/Launcher -> WeaveLoader.API/Core/Launcher (C# projects) - [LegacyForge] -> [WeaveLoader] (log prefixes) - legacyforge -> weaveloader (config files, log files, backup suffixes) - Display name "Weave Loader" in README, CONTRIBUTING, LICENSE
Weave Loader
An SKSE-style mod loader for Minecraft Legacy Edition. Weave Loader injects into the game process at runtime, hooks key engine functions, and hosts the .NET runtime to load C# mods. Zero game source modifications required.
How It Works
- Weave Loader.exe launches the game in a suspended state and injects
WeaveLoaderRuntime.dll - The runtime DLL uses PDB debug symbols to locate game functions (
MinecraftWorld_RunStaticCtors,Minecraft::tick, etc.) - MinHook detours those functions to insert mod lifecycle callbacks
- The .NET CoreCLR runtime is hosted inside the game process via hostfxr
WeaveLoader.Corediscovers and loads C# mod assemblies from themods/folder- Mods use the
WeaveLoader.APIto register blocks, items, entities, and subscribe to game events using Fabric-style namespaced string IDs
Project Structure
ModLoader/
├── WeaveLoader.Launcher/ C# launcher (the exe users run)
├── WeaveLoaderRuntime/ C++ DLL (injected into game process)
├── WeaveLoader.Core/ C# mod management (loaded inside game)
├── WeaveLoader.API/ C# mod API (what mod authors reference)
└── ExampleMod/ Sample mod for reference
Building
Prerequisites
- Visual Studio 2022 or later (with C++ and .NET workloads)
- .NET 8.0 SDK or later
- CMake 3.24 or later
- The game must be compiled with PDB generation
Build Steps
C++ Runtime DLL:
cd WeaveLoaderRuntime
cmake -B build -A x64
cmake --build build --config Release
C# Projects:
dotnet build Weave Loader.sln
Usage
- Build Weave Loader (see above)
- Copy the output files to a folder:
Weave Loader.exeWeaveLoaderRuntime.dllWeaveLoader.Core.dllWeaveLoader.API.dll
- Create a
mods/folder and drop mod DLLs in it - Run
Weave Loader.exe-- it will ask for the game exe path on first launch - The game starts with mods loaded
Writing a Mod
Create a new .NET 8 class library and reference WeaveLoader.API:
using WeaveLoader.API;
[Mod("mymod", Name = "My Mod", Version = "1.0.0", Author = "You")]
public class MyMod : IMod
{
public void OnInitialize()
{
var myBlock = Registry.Block.Register("mymod:cool_block",
new BlockProperties()
.Material(MaterialType.Stone)
.Hardness(2.0f)
.Resistance(10f));
Logger.Info("My Mod loaded!");
}
}
Build it, copy the DLL to mods/, and launch via Weave Loader.
License
Languages
C++
72.6%
C#
26.8%
CMake
0.6%