DPC Zettelkasten Open in the explorer

Medieval Factions Map

Mid-level map of the flagship — routes to the domain model and the architecture, and names the seams other software attaches to.

Medieval Factions is the largest codebase in the organization and the reference implementation for everything else. It carries enough distinct material to need two maps rather than one, and this note is the fork between them.

The two halves

**Faction Domain Model — what the simulation is.** Factions, power, land, diplomacy, governance. Read this if you want to understand the game, or if you are deciding what a feature should do.

**Plugin Architecture — how the code is arranged.** Services, repositories, persistence, concurrency. Read this if you are deciding where a feature should live.

The split is clean in practice: a change almost always starts in one and lands in the other.

The seams

Four places other software attaches, each covered by its own note under Plugin Architecture or Plugin Ecosystem:

Seam What attaches Note
Bukkit events Anything reacting to a faction change Faction Events
Service registry Anything reading or writing faction state Service Layer
Pluggable interfaces Optional plugins supplying an implementation Notification · Map Integration
Outbound HTTP The community website DPC API Faction Sync

If you are writing an Expansion Plugin, the first two are the ones you want.

Reading the source

Documentation lives beside the code by convention — see Two-Tier Documentation. USER_GUIDE.md, COMMANDS.md, CONFIG.md, FACTION_FLAGS.md, DATABASE_QUERYING.md, and FAQ.md are all in the repository root. Start there before reading Kotlin.

Where it sits

Up: Dan's Plugins Community. Sideways: Plugin Ecosystem for the plugins around it, Web and Infrastructure for where its data goes.

Sources

Linked from