Skip to content

First minimal NML mod

✅ Working WBML structureWorldBox 0.51.2 build 719NeoModLoader 1.2.0.1

Make NeoModLoader load one tiny mod and print one unmistakable line to Player.log.

Do not add UI, Harmony patches, save data or game logic yet. First prove the skeleton loads.

Keep mod.json and Main.cs together inside one mod folder — the same kind of folder NML uses for other installed mods. This project has not yet WBML-verified one universal NML install path across setups, so this page intentionally does not invent a Windows path. If you already have a working NML mod, its location is the safest local reference until the NML lifecycle/setup suite is documented.

MyFirstMod/
├── mod.json
└── Main.cs

Use the Starter Mod Generator if you do not want to write the manifest by hand.

A minimal shape used by the working generator is:

{
"name": "My First Mod",
"GUID": "YourName.MyFirstMod",
"author": "YourName",
"version": "0.1.0",
"description": "My First Mod",
"targetGameBuild": 719,
"Dependencies": [],
"OptionalDependencies": [],
"IncompatibleWith": []
}

Choose the GUID once and keep it stable after release.

using NeoModLoader.api;
namespace YourName.MyFirstMod
{
public class Main : BasicMod<Main>
{
protected override void OnModLoad()
{
LogInfo("[My First Mod] Loaded");
}
}
}

You are done when the log contains your exact marker:

[My First Mod] Loaded

If the line never appears, do not debug gameplay code yet. The problem is still in loading/compilation/manifest setup.

Open the Player.log Analyzer or the C# compile error guide.

Add one feature from the Recipe Library. Keep the working load marker until the mod has become stable.