Village mayor elections, GUI controls, diplomacy, banks, bed rentals, trade routes, and civic events.
VillagePolitics
Player village politics, mayor elections, GUI controls, diplomacy, banks, bed rentals, trade routes, and civic events.
VillagePolitics is a Paper plugin that turns remembered villages into player-facing political communities. It adds village reputation, village relationships, mayor elections, civic policies, events, village banks, diplomacy, bed rentals, and trade route management.
VillagePolitics requires VillageMemory as the source of village records. It can also integrate with StormEconomy, StormHotels, VillageGrowth, StormQuests, StormContracts, and other server plugins when they are installed.
Features
- Track remembered villages from VillageMemory.
- Give players a
/politicsGUI for nearby village status, elections, reputation, relationships, events, banks, rentals, trade routes, and mayor controls. - Give mayors a
/mayorGUI for managing their village without needing admin commands. - Support player mayor elections with nomination, voting, term expiry, abdication, and recall flows.
- Keep voting focused on elections and recalls while elected mayors act directly.
- Notify eligible online villagers about elections, voting phases, mayor changes, directives, diplomacy changes, rental changes, and trade activity.
- Track player reputation with villages from defence, supplies, quests, repairs, diplomacy, bounties, block damage, villager attacks, golem attacks, and theft.
- Share positive reputation with nearby party members when StormParty is available.
- Track village-to-village relationship scores and relationship tiers.
- Let mayors set civic policies for growth focus, security focus, diplomacy stance, and event priority.
- Let mayors publish village notices.
- Let mayors spend bounded daily village budgets on security, wealth, influence, unrest reduction, wariness reduction, politics events, and civic contracts.
- Create deterministic StormEconomy bank names for villages when StormEconomy is installed.
- Migrate legacy village treasury values once into real StormEconomy banks with an audited migration reason.
- Show village bank state in player and admin status views.
- Let mayors request VillageGrowth housing, profession, or template builds when VillageGrowth is installed.
- Let mayors set other villages as trusted, neutral, or avoided.
- Let mayors configure village bed rentals when StormHotels is installed.
- Discover remembered VillageMemory beds and publish them as StormHotels rooms.
- Route village bed rental income into the village bank.
- Let mayors create village trade routes for resource movement and bank-to-bank payments.
- Use StormEconomy bank transfers for village trade payments.
- Request safe VillageGrowth resource transfers for trade routes, with refund attempts when transfers fail.
- Generate politics events such as supply drives, defence alerts, trade caravans, border disputes, peace talks, bounty notices, festivals, and sabotage investigations.
- Progress active events through matching player actions.
- Reward completed events through village treasury or village bank handling when economy support is enabled.
- Pause and resume village politics simulation per village.
- Keep status, save, backup, and reload visibility available even when the plugin is disabled in config.
- Honour
economy.enabled: falseby disabling fines and treasury rewards while keeping non-economy politics behaviour active. - Runtime status reports enabled state, economy state, village count, active events, storage health, and integration state.
- Missing optional integrations degrade cleanly instead of disabling the whole plugin.
Storage And Security
- SQLite storage is the default.
- YAML, SQLite, MySQL, and MariaDB storage are supported through the shared secure storage layer.
- SQLite paths are confined to the plugin data folder.
- Example MySQL and MariaDB URLs use certificate and hostname verification.
- Database credentials are handled through the shared secure storage layer.
- Player identity is stored by UUID rather than player name where identity matters.
- Mayor budget spending is bounded by the configured daily limit.
- Economy rewards and fines are capped by config.
- Village bank names are deterministic and constrained to StormEconomy bank-name rules.
- Legacy village treasury migration runs once per village and records an audit reason.
- Trade route payments use bank-to-bank transfers and attempt refunds if the resource transfer cannot complete.
- Config switches are enforced instead of silently ignored.
- Autosave persists newly discovered and refreshed village state.
Commands
Main command aliases:
/politics/mayor/villagepolitics/vpolitics
Player commands:
/politics/politics gui/politics nearby/politics reputation [village]/politics relations [village]/politics events [village]/politics mayor [village]/politics elections [village]
Mayor commands:
/mayor/mayor gui/mayor status [village]/mayor nominate [village]/mayor vote <candidate-name-or-uuid> [village]/mayor policies [policy] [value] [village]/mayor notice <notice text>/mayor budget <action> <minor-amount> [village]/mayor build housing|profession|template [value] [village]/mayor trust <other-village> trusted|neutral|avoided [village]/mayor rentals on|off|sync [rent-minor] [lease-minor] [village]/mayor trade <source-village> <destination-village> <material-group> <amount> [price-minor]/mayor abdicate [village]/mayor recall [village]
Mayor budget actions:
improve-securityimprove-wealthboost-influencereduce-unrestreduce-warinesssponsor-eventsponsor-contract
Admin commands:
/villagepolitics status/villagepolitics villages/villagepolitics inspect <village-id>/villagepolitics relation <first-village> <second-village> [score|tier] [reason]/villagepolitics reputation <player|uuid> <village> [set|add] <score> [reason]/villagepolitics event list [village]/villagepolitics event start <type> <village> [other-village]/villagepolitics event complete <event-uuid>/villagepolitics event cancel <event-uuid>/villagepolitics event expire <event-uuid>/villagepolitics event progress <event-uuid> <amount>/villagepolitics treasury <village> [set|add] <minor-amount>/villagepolitics mayor status <village>/villagepolitics mayor start <village> [reason]/villagepolitics mayor end <election-uuid> [complete|cancel] [reason]/villagepolitics mayor recall <village> [reason]/villagepolitics mayor set <village> <player|uuid> [term-days]/villagepolitics pause <village>/villagepolitics resume <village>/villagepolitics save/villagepolitics backup/villagepolitics reload
Permissions
Normal player permissions default to everyone.
Grant normal player access:
villagepolitics.defaults
Individual player permissions:
villagepolitics.politicsvillagepolitics.mayor
Every administrative permission defaults to operator access.
Grant everything:
villagepolitics.admin
Or assign individual admin permissions:
villagepolitics.admin.commandvillagepolitics.admin.statusvillagepolitics.admin.inspectvillagepolitics.admin.relationvillagepolitics.admin.reputationvillagepolitics.admin.eventvillagepolitics.admin.treasuryvillagepolitics.admin.mayorvillagepolitics.admin.pausevillagepolitics.admin.savevillagepolitics.admin.backupvillagepolitics.admin.reloadvillagepolitics.admin.bypass-cooldowns
Optional Integrations
VillagePolitics requires VillageMemory, but the rest of its integrations are optional.
- VillageMemory provides remembered village records, village beds, and village state used by VillagePolitics.
- StormEconomy provides real village bank accounts, treasury migration, fines, rewards, and bank-to-bank trade payments.
- StormHotels lets mayors rent village beds to other players, with income paid into the village bank.
- VillageGrowth accepts mayor build requests and safe resource-transfer requests for trade routes.
- StormContracts can receive mayor-funded civic contracts.
- StormQuests can contribute to politics events and village activity.
- Alignments can receive alignment changes from village-helping or village-harming actions.
- StormFactions can provide faction context for village politics.
- NPCs can support event actors such as village diplomats, traders, and wardens.
- ThunderPerms and other Bukkit permission managers can control VillagePolitics permissions through the normal Bukkit permission system.
These hooks are optional. If an optional plugin is missing, VillagePolitics keeps working with its own villages, reputation, elections, mayor controls, diplomacy, events, storage, and admin commands.
Notes
VillagePolitics is designed as a player-facing control centre for remembered villages. Players can inspect nearby villages, build reputation, stand for mayor, vote in elections, and follow village events.
Mayors can manage practical village direction through GUI and command controls: policies, notices, budgets, builds, diplomacy, rentals, and trade routes. Admins keep full command access for inspection, correction, event control, treasury management, mayor management, pause/resume, save, backup, and reload operations.
Normal use does not require an external database. SQLite is the default, while YAML, MySQL, and MariaDB are available for servers that prefer a different persistence backend.