DPC Zettelkasten Open in the explorer

Faction Domain Model

Guided path through the nouns of the simulation — factions, power, land, and the relationships between them.

The domain model is small enough to hold in your head, and almost all of it hangs off one number. This map walks it in dependency order rather than alphabetically.

Start with power

Every player carries Player Power, a scalar that rises with time online and falls on death. A Faction's Faction Power is the sum of its members' power, plus a conditional contribution from its vassals. That single number is the currency of the whole simulation: it decides how much land a faction may hold, via the Demesne Limit.

This is the design's central lever. Territory is not bought, it is staffed — land follows people, and a faction that empties out loses its grip on the map.

Then land

Land is claimed one Minecraft chunk at a time; see Claimed Chunk. Whether a non-member may build inside a claim depends on Faction Flag settings and, for members, on the Faction Permission granted by their Faction Role.

Then politics

Factions relate to each other through Faction Relationship — allied, at war, or bound in the liege/vassal hierarchy described in Vassalage. Relationship changes are two-sided, which is what Approval Request exists to mediate.

Then the trimmings

Several features are self-contained and can be read in any order once the above is clear: Law (a faction's written rules), Gate (redstone-triggered walls), and Locked Block (per-player container locks that operate independently of faction land).

Two more sit at the edge of the model, where the simulation touches the players directly rather than the factions: Faction Chat Channel (three private audiences computed from the diplomacy graph at send time) and Duel (a consented fight nobody dies in, and the one record here with no faction on it).

What ties it together

Nothing in this map is stored as an object graph — every one of these concepts is persisted through its own repository, and read back through the Service Layer. If you are tracing a value from a command to the database, Plugin Architecture is the map you want next.

Linked from