Commands and permissions¶
Commands¶
| Command | What it does |
|---|---|
/vote |
The vote links, plus your totals, streak and points |
/vote top |
The leaderboard, all time and this month |
/vote party |
How far the vote party has filled |
/vote shop |
Spend vote points |
/voting setup |
Everything a vote site's form asks for, click-to-copy |
/voting editor |
The in-game editor: rewards, milestones, party, shop, sites |
/voting status |
Port, tokens, votes received, rejected, queued, storage, network |
/voting top |
The leaderboard, for staff |
/voting board add <type> [name] |
Place a leaderboard hologram and open move mode |
/voting board move [name] |
Move and resize the board you are near |
/voting board remove [name] |
Take one down |
/voting board list |
Every board and where it stands |
/voting points <player> <give\|take\|set> <n> |
Adjust a balance |
/voting js <expression> |
Try a reward condition and see true or false |
/voting test <player> [site] |
Run a vote through the whole pipeline |
/voting token <site> |
Make a token for one site |
/voting key |
Copy the RSA public key |
/voting reload |
Reload config and rewards, reopen the port |
/testvote <player> [site] |
The same as /voting test, for muscle memory |
/voting also answers to /evoting, /votify and /ballot.
Permissions¶
| Node | Default | Grants |
|---|---|---|
embervoting.vote |
everyone | /vote and its pages |
embervoting.admin |
operators | Setup, the editor, tokens, test votes, points, reload |
Rewards can require any permission node you like, so donor tiers need no extra setup here: give the rank a node, put that node on the reward.
Placeholders¶
With PlaceholderAPI installed:
| Placeholder | Shows |
|---|---|
%embervoting_total% |
The player's lifetime votes |
%embervoting_month% |
Their votes this month |
%embervoting_streak% |
Their daily streak |
%embervoting_points% |
Their vote point balance |
%embervoting_sites_today% |
Sites they have voted on today |
%embervoting_sites_total% |
Sites you have listed |
%embervoting_last% |
How long since they voted |
%embervoting_party_count% |
Votes towards the party |
%embervoting_party_needed% |
Votes a party takes |
%embervoting_party_left% |
Votes still to go |
%embervoting_top_1_name% |
The top voter's name (any number) |
%embervoting_top_1_votes% |
Their vote count |
%embervoting_topmonth_1_name% |
This month's leader (any number) |
%embervoting_topmonth_1_votes% |
Their votes this month |
For developers¶
Ember Voting fires two events. Its own comes first and can be cancelled, which stops everything else including the compatibility event:
@EventHandler
public void onVote(com.emberplugins.voting.api.EmberVoteEvent event) {
event.vote(); // username, service name, address, timestamp
event.protocol(); // 1 for RSA, 2 for token, 0 for a test vote
event.test(); // true when an admin sent it
event.setCancelled(true);
}
Then the long-standing com.vexsoftware.votifier.model.VotifierEvent, which
is what vote-aware plugins have listened for since 2013, so they work with no
changes. The plugin declares provides: Votifier, so getPlugin("Votifier")
finds it and a softdepend on Votifier is satisfied.
Files¶
| File | Holds |
|---|---|
config.yml |
Port, tokens, storage, network, points, effects, messages |
rewards.yml |
Every reward list, milestones, shop and sites |
votes.yml |
Totals, streaks, points, party counter (YAML storage only) |
queue.yml |
Votes owed to offline players (YAML storage only) |
rsa/ |
The key pair older vote sites use |