A governance and economy framework: councils of six, decrees, reputation, and player-driven law.
A Fabric server-side governance, voting, lightweight economy, and guild system designed for council-style roleplay servers.
The Hexarchate (or any council you define) can create, debate, and vote on decrees in-game, with automatic quorum/majority handling, a season history log, an optional multi-tier currency (Gold/Silver/Copper by default), and player guilds with shared treasuries.
Current version: 0.2.1 (Minecraft 1.21.1, Fabric)
council.json).councilName used in decree-related messages.ceremonySound in council.json (e.g. decrees_of_the_six:council_chime)./decrees decree list [page] and /decrees history [page]./decrees decree list status <draft|voting|enacted|rejected|cancelled> [page]./decrees decree list my [page] and /decrees decree list active [page]./decrees stats ... and /decrees status [id].[Yes] [No] [Abstain]) for council members when a decree is opened.Leader / Officer / Veteran / Member / Recruit),/decrees, /money, /economy, /guild, and /vox guild commands.economy_config.json./money) for checking balances, paying other players, and viewing your own transaction log./moneyadmin) for granting / seizing money and managing the Treasury./economy) for help and live reloading of economy config.G/S/C form (e.g. 2G 4S 30C Scales)./guild commands).The guild system is fully server-side and uses the same economy backend. Guilds are stored persistently in a world data file managed by the mod (not meant to be edited manually).
Leader, Officer, Veteran, Member, Recruit,Leader = "High Chancellor", Officer = "First Blade", etc.Internal permission roles:
Leader – full control.Officer – strong management powers.Veteran – minor management powers.Member – normal access, no management.Recruit – probationary / newcomer.Each role can have a guild-specific title, set by the guild leader, for flavour/RP. Internally, permissions are based on the roles; titles are just display.
This is primarily a server-side mod. Clients do not need to install it to use /decrees, /money, or /guild commands.
Installing the mod on the client is optional but enables the G-key “Hexarchate Panel” screen.
Build or download the mod JAR (usually in build/libs/).
Place the JAR into your server's mods/ folder.
Start the server once to generate default config files.
Edit the config files under:
config/decrees_of_the_six/council.json
config/decrees_of_the_six/voting_rules.json
config/decrees_of_the_six/economy_config.json
Use /decrees reload and /economy reload in-game (as an op) after editing configs, or restart the server.
Guild and economy data stores (accounts, transactions, guilds) are managed automatically by the mod and saved on server shutdown. They should not be edited by hand.
council.jsonDefines global flags, the council name, ceremony sound, and council seats.
Example:
{
"councilName": "Hexarchate of Salmon",
"decreesEnabled": true,
"opsOnly": false,
"ceremonySound": "decrees_of_the_six:council_chime",
"seats": [
{
"id": "overseer_regent",
"displayName": "Overseer-Regent"
}
]
}
Fields:
councilName (string, optional)
"Hexarchate of Salmon"). /decrees council create <name>.decreesEnabled (boolean)
true → all decree features work normally. false → decree creation, opening, voting, etc. are disabled (players get a message).opsOnly (boolean)
false → only council seats can create/open/vote (normal mode). true → only ops can create/open/delete/vote on decrees (safety mode / emergency override).ceremonySound (string, optional)
"decrees_of_the_six:council_chime" for a sound defined in your sounds.json. seats (array) – each seat:
id – internal ID (e.g. "overseer_regent"). Used in saves & logs. displayName – pretty name shown in chat (e.g. "Overseer-Regent"). holderUuid (optional) – UUID of the player currently holding that seat.You typically assign seat holders in-game using /decrees seat set instead of editing holderUuid by hand.
/decrees council create <name>will:
- Set
councilNameto<name>,- Force
decreesEnabled = true,- Force
opsOnly = false.
voting_rules.jsonControls how votes are evaluated.
Example:
{
"minQuorumPercent": 60,
"votingDurationMinutes": 30,
"majorityMode": "SIMPLE",
"tiesPass": false
}
Fields:
minQuorumPercent
Minimum % of active seats that must vote for the decree to be valid.
Example: 60 with 5 active seats → at least 3 votes needed.
votingDurationMinutes
How long voting stays open once a decree is opened.0 or less → no time limit (will resolve when everyone votes or via force).
majorityMode
"SIMPLE" → more YES than NO and at least half + 1 of the votes. "TWO_THIRDS" → at least 2/3 of the votes must be YES.tiesPass
true → YES = NO counts as ENACTED. false → YES = NO counts as REJECTED.Finalised decrees (status becomes ENACTED, REJECTED, or CANCELLED) are appended to a history log, e.g.:
config/decrees_of_the_six/decrees_history.log
The log typically includes:
/decrees decree force) This is meant for season records / lore.
economy_config.jsonControls how the currency behaves and how amounts are displayed.
Example:
{
"enabled": true,
"currencyName": "Scales",
"goldName": "Gold",
"silverName": "Silver",
"copperName": "Copper",
"copperPerSilver": 10,
"copperPerGold": 100
}
Fields (high level):
enabled (boolean)
false, the money system is effectively disabled (commands will refuse to run).currencyName (string)
"Scales", "Crowns", "Marks".goldName, silverName, copperName (strings)
copperPerSilver, copperPerGold (ints)
1 Silver = 10 Copper, 1 Gold = 100 Copper.Economy data (accounts + transactions + guild Treasuries) is stored in a separate JSON file (e.g. economy_store.json) next to your other Decrees config. It is not meant to be edited by hand.
Seats are defined in council.json under "seats".
Seats are used to:
/decrees decree list active.All seat management commands are op-only:
/decrees seat list
Shows all seats, their display names, and current holder (player name or <empty>).
/decrees seat set <seat_id> <player>
Assigns a player to a seat.
If the player already holds a different seat, that old seat is cleared automatically.
/decrees seat clear <seat_id>
Removes the holder from a seat (seat becomes empty).
Typical flow for a council session:
Create a decree (DRAFT)
A council member runs:
/decrees decree create <title>
This creates a new decree in DRAFT status, linked to their seat.
Edit details (optional but recommended)
/decrees decree edit title <id> <new_title>
/decrees decree edit description <id> <text>
/decrees decree edit category <id> <category>
/decrees decree edit expiry <id> none
/decrees decree edit expiry <id> <days>
Open for voting (VOTING)
/decrees decree open <id>
votingDurationMinutes) if configured. [Yes] [No] [Abstain] buttons in chat.Council votes
Each council seat holder uses:
/decrees vote <id> yes
/decrees vote <id> no
/decrees vote <id> abstain
or clicks the vote buttons to prefill the vote command.
Automatic resolution
When:
the system automatically sets the decree to ENACTED, REJECTED, or (if forced) CANCELLED according to the rules in voting_rules.json, then logs the change and notifies the council.
Review results / history
/decrees decree results <id> – detailed counts, quorum info, timer state. decrees_history.log for permanent record. /decrees history [page] for an in-game, paginated history view./decrees council create <name> (op only)This command:
councilName) to <name>.decreesEnabled = true).opsOnly = false).ceremonySound in council.json) to all online players.Use this once per season when the council is founded, or again if you want to ceremonially “re-convene” it after changes.
When a council member joins, they get a reminder if they have pending votes:
#3, #7, #12...).When only one active seat is left to vote on a decree, the server broadcasts a message indicating which seat is still pending.
/decrees help
Show a short command overview.
/decrees reload (op only)
Reload council.json and voting_rules.json from disk.
/decrees status
Show voting status for all decrees currently in VOTING.
/decrees status <id>
Show detailed voting status for a specific decree.
/decrees history [page]
Paginated history of completed decrees.
/decrees config decreesEnabled on|off (op only)
Enable or disable the decrees system globally.
/decrees config opsOnly on|off (op only)
Toggle ops-only mode.
/decrees config show (op only)
Show current system status, including council name and your seat (if any).
/decrees stats seats
Show per-seat statistics for created decrees and votes.
/decrees stats me
Show statistics for your own seat.
/decrees stats seat <seat_id>
Show statistics for a specific seat.
/decrees council create <name> (op only)/decrees seat list /decrees seat set <seat_id> <player> /decrees seat clear <seat_id>/decrees decree list [page]
List all decrees (paginated).
/decrees decree list my [page]
List decrees created by your seat (council members only), with pagination.
/decrees decree list active [page]
List all decrees currently in VOTING, including your own vote if you hold a seat, with pagination.
/decrees decree list status <draft|voting|enacted|rejected|cancelled> [page]
List decrees filtered by status, with pagination.
/decrees decree list category <category>
List decrees in a given category.
/decrees decree info <id>
Show full info (title, description, category, expiry, creator, votes).
/decrees decree results <id>
Show detailed vote results, quorum status, majority mode, and timer state.
/decrees decree create <title>
Create a new decree in DRAFT (council only, or ops if opsOnly is true).
/decrees decree open <id>
Open a DRAFT decree for voting.
/decrees decree edit title <id> <new_title>
/decrees decree edit description <id> <new_description>
/decrees decree edit category <id> <new_category>
/decrees decree edit expiry <id> none
/decrees decree edit expiry <id> <days>
/decrees decree delete <id>
Delete a decree (council only / ops depending on config).
/decrees decree force <id> enacted|rejected|cancelled (op only)
Force the final status of a decree (escape hatch if rules misbehave or get stuck).
/decrees vote <id> yes|no|abstain[Yes] [No] [Abstain] hints.)Player-facing commands:
/money
Show your own balance in G/S/C form.
/money balance <player>
Show another player’s balance.
/money pay <player> <amount>
Pay another player.
<amount> supports:150)1G 5S 20C, 2g, 10s, 50c (case-insensitive)./money log
Show your recent transactions.
Admin / treasury commands:
/moneyadmin grant <player> <amount>
Mint money directly to a player.
/moneyadmin seize <player> <amount>
Remove money from a player.
/moneyadmin treasury deposit <amount>
Move money from the executor to the global Treasury.
/moneyadmin treasury withdraw <amount>
Move money from the global Treasury to the executor.
/moneyadmin log
Show recent transactions across the whole system (for audit).
Economy meta:
/economy help
Overview of all money and treasury commands, plus a short explanation of denominations.
/economy reload (op only)
Reload economy_config.json from disk.
Player guild commands:
/guild create <name>
Create a new guild (one guild per player).
You become the Leader and a guild Treasury account is created.
/guild invite <player>
/guild accept
/guild deny
Invite other players to your guild and let them accept or deny.
/guild leave
Leave your current guild.
/guild kick <player>
Remove a player from the guild.
/guild promote <player>
/guild demote <player>
Change a member’s rank within Leader / Officer / Veteran / Member / Recruit.
(Leader can adjust all non-leader ranks; Officers can adjust Veteran/Member/Recruit.)
/guild setmotd <text>
Set a guild description / MOTD for info screens.
/guild setopen <true|false>
Mark the guild as open or closed for future open-join features (stored now, used later).
/guild setmax <number>
Optional member cap (stored now, used later).
/guild settitle <leader|officer|veteran|member|recruit> <title>
Set guild-specific display titles for ranks (e.g. "High Chancellor", "First Blade").
/guild balance
Show the guild Treasury balance in G/S/C.
/guild deposit <G> <S> <C>
Deposit money from your personal account into the guild Treasury.
/guild withdraw <G> <S> <C>
Leader-only: withdraw money from the guild Treasury to your personal account.
Admin / Vox Imperion commands:
/vox guild info <name>
Inspect any guild:
/vox guild setleader <guild> <player>
Force-transfer leadership to another player.
/vox guild disband <guild>
Force disband a guild.
Remaining guild funds are redirected to the Council Treasury (configurable pattern in code).
/vox guild rename <guild> <newName>
Emergency rename for trolling / violations.
Vox commands are bound to the Vox Imperion council seat via the council permission system (with an op fallback).
Ops:
/decrees reload/decrees council create <name>/decrees seat .../decrees decree force .../decrees config .../economy reload/moneyadmin ... commands/vox guild ... commandsopsOnly = true, ops can also create/open/delete/vote on decrees even without a seat.Council members (players who hold a seat):
decreesEnabled = true and opsOnly = false).Guild members:
/guild commands according to their rank:/guild balance, /guild deposit, /guild leave, basic info./guild withdraw.Regular players:
/money, /money balance, /money pay, /money log if the economy is enabled./guild commands (subject to your server rules).opsOnly and make them ops (not recommended).If
decreesEnabledisfalse, mutating decree commands are blocked even for ops
(except/decrees reloadand/decrees decree force).
Ifeconomy_config.enabledisfalse, all money and guild Treasury commands will refuse to run.
This mod uses semantic versioning.
See CHANGELOG.md for a detailed list of changes per version.
Decrees of the Six is licensed under the MIT License.
See LICENSE for full details.