ModN Vote
A privacy-first, yes/no voting plugin with Integrity hashing
📖About ModN Vote
ModNVote
Modern, transparent community voting for PaperMC 1.21.x
ModNVote is a privacy‑first yes/no voting plugin for Minecraft servers. It’s designed to:
- Keep vote choices out of console logs.
- Detect if anyone tampers with the vote data.
- Give staff clear tools to audit and investigate issues.
✨ Key Features
- GUI voting –
/modnvoteopens a Yes/No GUI. Players click to vote.- No
/modnvote yes//modnvote nocommands. - Vote choices are not logged as commands in console.
- No
- Single vote per player – limited by UUID (per round).
- IP‑based duplicate prevention – with a configurable bypass node.
- Cryptographic integrity seal over tallies and voter UUID list using HMAC‑SHA256.
- Integrity‑first voting – the existing tally must be cryptographically valid before a new vote is accepted.
- Compromise detection – if someone edits the database by hand, ModNVote will notice and refuse further voting until the issue is resolved.
- Status with self‑awareness –
/modnvote statusshows:- YES / NO tallies,
- current integrity status (valid vs compromised), and
- whether the tally currently includes a vote from the viewer.
- Admin tools – audit summaries, grouped IP audits, round reset and config reload.
- PlaceholderAPI support – expose tallies and percentages for scoreboards / UIs.
- Built for PaperMC 1.21.x and Java 21.
ModNVote is the spiritual successor to PineVote, rebuilt cleanly under the MODN METL brand with a stronger focus on privacy and integrity.
🕊️ Privacy & Integrity
Privacy
- Players vote via a GUI. Only
/modnvoteappears in logs, not the specific yes/no choice. - Vote details are stored in SQLite, not echoed to console.
- Admin audits can reveal who participated, but not which way players voted just from logs alone.
Integrity
- ModNVote computes an HMAC‑SHA256 over:
- round id,
- YES / NO tallies, and
- ordered list of UUIDs who participated.
- The seal is verified before each vote and for
/modnvote status//modnvote verify. - If the seal fails, the system is flagged as compromised and new votes are rejected until reset or fixed.
There is intentionally no force‑approve mechanism for compromised tallies.
🕹️ Commands
All commands are /modnvote ...:
/modnvote– open the Yes/No GUI and cast your vote./modnvote status– show tallies, integrity status, and whether your vote is included./modnvote verify– manually re‑verify cryptographic integrity./modnvote reset– clear the current round and reset tallies./modnvote reload– reload configuration./modnvote audit– quick numeric summary (total, bypass, YES, NO)./modnvote fullaudit– group voters by IP and split bypass vs others.
🔐 Permissions
modnvote.use – allow /modnvote (GUI)
modnvote.vote – allow casting a vote
modnvote.status – allow /modnvote status
modnvote.verify – allow /modnvote verify
modnvote.admin.reset – allow /modnvote reset
modnvote.admin.reload – allow /modnvote reload
modnvote.admin.audit – allow /modnvote audit
modnvote.admin.fullaudit – allow /modnvote fullaudit
modnvote.bypass – bypass IP‑based duplicate check
The bypass node is configurable and can be pointed at an existing alt‑account / anti‑VPN plugin’s bypass permission.
🔌 PlaceholderAPI
If PlaceholderAPI is present, ModNVote registers placeholders such as:
%modnvote_yes%
%modnvote_no%
%modnvote_total%
%modnvote_yes_percent%
%modnvote_no_percent%
Ideal for scoreboards, sidebars, bossbars, etc.
⚙️ Requirements
- Server: PaperMC 1.21.x
- Java: 21
- Dependencies:
- Optional: PlaceholderAPI
📥 Installation
- Download the latest
modnvote-*.jar. - Drop it into your
plugins/folder. - Restart the server.
- Configure permissions (e.g. with LuckPerms).
- Ask players to use
/modnvoteto open the GUI and vote.
🧭 Roadmap
- Multi‑question polls with richer GUIs.
- MySQL support for large networks.
- Time‑boxed votes with automatic start/stop.
- Optional external dashboard integration.
📜 License & Credits
- License: MIT
- Copyright (c) 2025 MODN METL LTD
- Developed by Jamie E. Thompson (@jamjet3)
- Community testing: Pinecraft Equestrian SMP
If you use ModNVote on your server, a star on the GitHub repo is always appreciated! 🚀