DPC Zettelkasten Open in the explorer

Medieval Factions

The flagship plugin — a Kotlin Spigot plugin simulating sovereign nations, and the reference implementation every DPC convention points at.

Medieval Factions is a Spigot plugin written in Kotlin that lets players organise into feudal nations. It is the largest repository in the organization and the most heavily documented, and DPC Conventions names it as the reference implementation the other plugins are measured against.

What it simulates

Players form a Faction, gain Player Power by playing, and spend that power's collective total on territory via the Demesne Limit. Around that core sit diplomacy (Faction Relationship, Vassalage), internal governance (Faction Role, Faction Permission, Faction Flag), and a set of props for roleplay (Law, Gate, Locked Block, duels).

The design bet running through all of it: give players the mechanics of sovereignty and let the politics be emergent. See Law for the clearest statement of that principle — the plugin stores a faction's laws and refuses to enforce them.

Version 5 was a rewrite

Version 4 was Java with flat-file JSON storage. Version 5 is Kotlin over a real database, and its development was led by alyphen, creator of RPKit. The architecture described in Plugin Architecture — services over repositories over jOOQ Persistence, immutable data classes, Optimistic Locking — arrived with that rewrite.

The seam between the two generations is still visible: Legacy Data Migration exists to carry version 4 servers across, and Fiefs still builds against a version 4 jar.

Integration surface

Other software attaches at four points: Faction Events (react), Service Layer (read and write), Notification and Map Integration (supply an implementation), and DPC API Faction Sync (push data out).

Its documentation lives beside the code per Two-Tier Documentation: USER_GUIDE.md, COMMANDS.md, CONFIG.md, FACTION_FLAGS.md, and DATABASE_QUERYING.md.

Sources

Linked from