Want your own school names in EduLife?
As of the next update, EduLife can discover naming-pool mods made by anyone — no coordination with the EduLife author needed, no reference to EduLife's own code required.
Live-confirmed: EduLife's "School Naming Pool" dropdown in the game's Options panel lists a proof-of-concept companion mod alongside "Default (Built-in)" with zero coordination between the two mods. Discovery works end to end.
The contract
Add a class anywhere in your mod whose type name ends in EduLifeNamingPool, with exactly these two public static members:
public static class MyCoolNamesEduLifeNamingPool
{
// Shown in EduLife's "School Naming Pool" dropdown.
public static string PoolDisplayName => "My Cool Names";
// Called with exactly one of these four strings. Return an array of
// names for that tier, or an empty array if you don't have any for it.
public static string[] GetNames(string tier) => tier switch
{
"Elementary" => new[] { "Example Elementary", "Sample Primary School" },
"HighSchool" => new[] { "Example High School" },
"College" => new[] { "Example College" },
"University" => new[] { "Example University" },
_ => System.Array.Empty<string>(),
};
}
That's it. No EduLife.dll reference, no shared assembly, no registration call. EduLife finds you by scanning loaded assemblies for the naming convention above.
Where this goes: add a new .cs file anywhere in your own mod's C# project (the same project created from the CS2 Modding Toolchain template that builds your .dll) — for example NamingPools/MyCoolNamesEduLifeNamingPool.cs. It doesn't need to be registered in your Mod.cs entry point or anywhere else. As long as the file is part of your mod's project and gets compiled into your mod's .dll, EduLife finds it automatically once your mod loads — nothing to wire up on your end beyond writing the class.
What to know
- Your class doesn't need to be
static classliterally — it just needs those two members to bepublicandstatic. A small typo in your own class declaration won't silently break discovery. tieris always one of the four strings shown above, verbatim — no other values are ever passed.- If your
GetNamesthrows, returnsnull, or returns an empty array for a tier a school actually needs, EduLife falls back to its own built-in names for that tier — a bad pool never leaves a school unnamed. - If two installed pools use the same
PoolDisplayName, EduLife picks one (whichever it scans last) and logs a warning naming both — pick something distinctive to avoid this. - Discovery re-checks periodically (about every 30 seconds of game time), so a pool mod that loads a little late still gets found without needing a restart.
- Players select your pool from EduLife's own Options menu — nothing extra needed on your end for that part either.
Questions or issues? Drop them on the EduLife forum thread ↗ or in the comments on the mod page.