Repository navigation
Releases
Releases · MCME/CommonerVote
CommonerVote 2.0.1 for Minecraft 26.2
[2.0.1] - 2026-11-06
Changed
- The promotion command and the commoner group are set in each server's
config.yml, under the keys 1.2.9 used
(promotionCommand,commonerGroupName), and no longer with/vote config. A missing key gets the default, and the
first start deletes the two old rows fromcommonervote_settings. - A value in those two keys that cannot be used logs a SEVERE line and disables the plugin on that server. The group
must be one name of letters, digits,_and-, and the command must be one line that contains<player>. Both must
be text, so a number ornoneeds quotes. - The welcome, announcement and guest texts allow colours and formatting only. Any other tag stays in the text as typed.
Added
- Every save of the settings is logged: who made it and, for each setting it changed, the old and the new value.
- The startup log states the promotion command and group in use.
Fixed
- A stored text that MiniMessage cannot parse, such as one with an old
§colour code, now shows as typed. It used to
stop whatever was showing it, which could leave a promotion without its welcome and announcement.
Installing
- Put the jar on every Paper backend where players vote or are voted for. It is not needed on the Velocity proxy.
- Requires Paper 26.2, Java 25 and LuckPerms.
- Upgrading from 2.0.0: read Upgrading from 2.0.0 in the README before you swap the first jar.
sha256: b3c3191779923212cbd2e1e1f245c9245ea6ccdfe1db46b783341ab5bb0d57a0
CommonerVote 2.0.0 for Minecraft 26.2
[2.0.0] - 2026-10-21
A rewrite for Paper 26.2 and Java 25. The votes table is unchanged, so every existing vote carries over.
Added
- Six dialogs, built with Paper's Dialog API:
- for the team, the list of guests online on the server and the vote dialog (cast, renew or withdraw, with an optional
reason); - for guests, a "Becoming a Commoner" dialog with their progress, and a welcome dialog at the promotion;
- for admins, the review dialogs (the candidates, and the votes for one player) and the settings dialogs.
- for the team, the list of guests online on the server and the vote dialog (cast, renew or withdraw, with an optional
- Shared settings, kept in the new
commonervote_settingstable and edited in game with/vote config
(commonervote.config). Every server on the same database uses them. - "Promote now" in the review dialog and
/vote promote <player>, behind the new permissioncommonervote.promote.
Each asks a player for confirmation first. - A LuckPerms guard on every promotion: a player with a direct group other than
defaultand the groups in the
promotableGroupssetting is not promoted, so the promotion command can no longer demote a ranked player. The review
list marks such a player, the log gets one INFO line per player and session, and "Promote now" tells the admin which
group blocks it. - An action-bar note for a guest who was voted for, on any server of the network. It never names the voter.
- A network-wide promotion announcement, and a welcome dialog for a guest who was promoted while offline, shown at
their next join. - The
commonervote_promotionstable, which records who was promoted and whether they have seen the welcome. - Permission-aware tab completion, and plain-text
review,clearandpromotefor the console. /vote reviewwithout a name, which lists the candidates.- Automated tests, and a GitHub Actions build that runs
mvn -B verify.
Changed
- The XP bar is a progress meter only for players without
commonervote.exempt. Everyone withcommonervote.exempt
gains XP as normal. /vote helplists only the subcommands you may use, and no longer crashes from the console.- There is one vote lifetime for the whole network,
validityDays(100 days by default), instead of one per server. - Expired votes are kept in the table as history and only stop counting. Before,
/vote scoreand/vote review
deleted them. /voteis a Brigadier command, with permission-aware tab completion, and/commonervote:voteworks too. Player
names are found in any case and through LuckPerms, so a player who has only been on another server is found as well.- Settings now live in the database (
/vote config).config.ymlonly keeps thedatabasesection anduseBungee:
the other 1.2.9 keys are ignored, and the startup log names the ones still in the file. - Changing
votesNeededrescales every stored vote, so each keeps its worth in whole votes. <player>in the promotion command is replaced by the player's UUID, which LuckPerms accepts, instead of their name.
A name can be out of date, and a renamed guest's old name could point the command at somebody else.- A failure of the database tells the player "The vote database is unreachable. Try again in a minute." and logs a
WARNING line with a stack trace at most once a minute. - Database work runs on one dedicated thread, over a fresh connection for each piece of work, with the MySQL driver that
Paper provides. - Requires Paper 26.2, Java 25 and LuckPerms (
depend). - Jars are named
CommonerVote-<version>-<DEV|SNAPSHOT|RELEASE>-<commit id>.jar.
Fixed
- A
-voterreview dropped the last recipient, and showed nothing when there was only one; the option is gone (see
Removed). - Reasons lost their spaces ("great builder" became "greatbuilder").
/vote scoreand/vote reviewran a database DELETE on the main thread, which could stall the server.- Servers with different vote lifetimes deleted votes that the other servers still counted.
- The keep-alive task wrote three log lines every minute, and it raced with the queries over one shared connection
("Packets out of order" errors). - Nobody gained XP: every XP gain of every player was cancelled, whatever the
useXpBaroption said. /vote helpfrom the console threw a ClassCastException.- A fresh install crashed on every join and command, because the jar shipped no
config.yml. - The plugin declared
commonervote.voterwhile the code checkedcommonervote.vote. - Two quick votes could promote a guest twice, because LuckPerms applies the promotion command late. The command also
ran without a look at the player's other groups, andparent setthen dropped them. - Looking up an offline player could block the main thread: a typed name could make the server ask Mojang, and a name
shown was read from the player's data file on disk. Typed names are now looked up in LuckPerms off the main thread,
and the names shown come from memory or LuckPerms. A player who had only been on another server was also reported as
unknown. - Sending a message through the proxy while nobody was online threw a NullPointerException.
/commonervote:voteprinted the usage instead of running.- Scores showed raw decimals such as
33.33333333333333%. - Values set with
/vote configwere saved with a trailing space, which broke numbers such as the vote lifetime. - File storage gave a normal vote a staff vote's weight and could not read back its own file; it is gone (see Removed).
Removed
- File storage (
votes.yml); the votes are always in the database. - The
applycommand and itscommonervote.applypermission, and theapplicationNeeded,allowMultipleVotesand
useDatabaseoptions. /vote review <player> -voter(the list of what one voter voted for).- The PluginUtils dependency, and the bundled MariaDB driver.
- The Votifier
loadbeforeentry andload: STARTUPinplugin.yml. - The
commonervote.voterpermission, which nothing checked.
Installing
- Put the jar on every Paper backend where players vote or are voted for. It is not needed on the Velocity proxy.
- Requires Paper 26.2, Java 25 and LuckPerms. For cross-server updates, the proxy needs
bungee-plugin-message-channel = true. - Upgrading from 1.x: see Upgrading in the README. The
database:block of the existingconfig.ymlkeeps working unchanged.
sha256: 11bc19f25a059de123813dbd19b62011dc6b9f81121999f572e562d9c614bd30
version 1.2.5 for mc 1.13
Merge pull request #18 from MCME/development version 1.2.5