# Vote A mod for Minetest adding an API to allow voting on servers. Version 0.1 Created by [rubenwardy](http://rubenwardy.com) Copyright (c) 2015, no rights reserved Licensed under WTFPL or CC0 (you choose) # Settings * vote.maximum_active - maximum votes running at a time, votes are queued if it reaches this. Defaults to 1. # Example ```lua minetest.register_chatcommand("vote_kick", { privs = { interact = true }, func = function(name, param) if not minetest.get_player_by_name(param) then minetest.chat_send_player(name, "There is no player called '" .. param .. "'") end vote.new_vote(name, { description = "Kick player " .. param, help = "/yes, /no or /abstain", name = param, duration = 60, on_result = function(self, result, results) if result == "yes" then minetest.chat_send_all("Vote passed, " .. #results.yes .. " to " .. #results.no .. ", " .. self.name .. " will be kicked.") minetest.kick_player(self.name, "The vote to kick you passed") else minetest.chat_send_all("Vote failed, " .. #results.yes .. " to " .. #results.no .. ", " .. self.name .. " remains ingame.") end end, on_vote = function(self, name, value) minetest.chat_send_all(name .. " voted " .. value .. " to '" .. self.description .. "'") end }) end }) ``` # API ## Results * voted - a key-value table. voted[name] = true if a player called name voted. * abstain - a list of the names of players who abstained. * <option> - a list of the names of players who voted for this option. For example: ```lua results = { voted = { one = true, two = true, three = true, four = true } yes = {"one", "three"}, no = {"two"} abstain = {"four"} } ``` ## Values * description - required. * help - recommended. How to respond to the vote. * duration - the duration of the vote, before it expires. * perc_needed - if yes/no, this is the percentage needed to pass. * options - a list of possible options. (not fully supported yet) ## Methods * can_vote(self, name) - return true if player `name` can vote on this issue. * on_start(self) - called when vote starts. Return false to cancel. * on_decide(self, results) - see results section. Return the winning result. * on_result(self, result, results) - when vote ends, result is the winning result * on_vote(self, name, value) - called when a player casts a vote * on_abstain(self, name) - called when a player abstains