Como o Votifier entrega um voto
- Um jogador vota no teu servidor numa lista.
- A lista abre uma ligação TCP ao teu servidor na porta do Votifier e envia o nome do jogador, o seu próprio nome de serviço, um endereço e uma marca temporal.
- O NuVotifier verifica a mensagem (chave RSA no v1, token no v2) e dispara um evento de voto.
- Um plugin de recompensas como o VotingPlugin fica à escuta desse evento e dá a recompensa.
O NuVotifier, por si só, não dá nada. Vem sem nenhum listener, por isso precisas sempre de um segundo plugin para as recompensas.
Passo 1: Instala o NuVotifier em Paper ou Spigot
Coloca o JAR do NuVotifier na pasta plugins e inicia o servidor uma vez. Ele cria a sua config, um par de chaves RSA e um token. A consola mostra o token no primeiro arranque: Your default NuVotifier token is ….
host: 0.0.0.0
port: 8192
disable-v1-protocol: false
tokens:
default: <generated token>
forwarding:
method: none
pluginMessaging:
channel: nuvotifier:voteshosté o endereço em que o NuVotifier fica à escuta. Por predefinição usa o IP para o qual o teu servidor está configurado, ou0.0.0.0para todas as interfaces.porté a porta do Votifier,8192por predefinição. Não pode ser a porta do Minecraft.tokens.defaulté usado para todas as listas, a menos que acrescentes um token com o nome de serviço de uma lista.- As chaves para o v1 são criadas em
plugins/Votifier/rsa/comopublic.keyeprivate.key.
Passo 2: Torna a porta acessível
As listas ligam-se a partir da internet, por isso a porta do Votifier tem de estar aberta a ligações TCP de entrada. É aqui que a maioria das configurações falha.
- Alojamento partilhado: muitos painéis só abrem a porta do jogo. Adiciona uma porta extra no painel e coloca exatamente esse número em
port. Alguns hosts atribuem o número por ti. - VPS ou servidor dedicado próprio: permite a porta na firewall, por exemplo
ufw allow 8192/tcp. - Em casa: reencaminha a porta no teu router para a máquina onde corre o servidor.
Reinicia o servidor depois de alterares a config. O NuVotifier também tem o /nvreload, que corre a partir da consola.
Passo 3: Escolhe v1 (chave pública) ou v2 (token)
| Protocolo v1 | Protocolo v2 | |
|---|---|---|
| Segredo | Par de chaves RSA | Token partilhado |
| O que a lista precisa | Conteúdo de rsa/public.key | O token de tokens.default |
| Suporte | Votifier clássico; a maioria das listas fala-o | NuVotifier e listas que o suportem |
Nunca dês a ninguém o private.key. Se uma lista suportar v2, o token é a opção mais simples: uma linha, sem ficheiro de chave. A BestMCServerList suporta os dois, por isso escolhe o que preferires na tua página do Votifier.
Mantém disable-v1-protocol: false num servidor único. O próprio NuVotifier avisa que muitas listas só falam v1.
Passo 4: Networks Velocity ou BungeeCord
Numa network, a lista liga-se ao proxy. O NuVotifier corre no proxy e reencaminha os votos para os servidores de backend onde está o plugin de recompensas. A wiki do NuVotifier recomenda plugin messaging para a maioria das networks.
Proxy (Velocity)
host = "0.0.0.0"
port = 8192
disable-v1-protocol = false
[tokens]
default = "<generated token>"
[forwarding]
method = "pluginMessaging"
[forwarding.pluginMessaging]
channel = "nuvotifier:votes"
cache = "file"No BungeeCord, as mesmas chaves ficam em plugins/NuVotifier/config.yml, em formato YAML. cache = "file" guarda os votos de jogadores que estão offline e entrega-os mais tarde.
Todos os servidores de backend (Paper)
port: -1
forwarding:
method: pluginMessaging
pluginMessaging:
channel: nuvotifier:votesport: -1 desliga o listener no backend, para que só o proxy receba votos. Garante que os teus backends só são acessíveis através do proxy, senão alguém pode enviar votos falsos.
A outra opção, method = "proxy", envia os votos do proxy para uma porta do NuVotifier em cada backend, configurada com endereço, porta e token por servidor em [forwarding.proxy.<name>]. Não tem cache de votos, por isso o plugin messaging costuma ser a melhor escolha.
Passo 5: Introduz os dados e envia um voto de teste
- Testa primeiro localmente:
/testvote Steve serviceName=BestMCServerListno Paper, ou/ptestvotecom os mesmos argumentos no proxy. Se o teu plugin de recompensas reagir, a parte interna funciona. - Na BestMCServerList, abre o teu servidor no painel e vai a Votifier. Introduz o endereço público do servidor ou do proxy, a porta e o token (v2) ou a chave pública (v1), e guarda.
- Carrega em Enviar voto de teste. Enviamos um voto para
TestVoteque não conta para o ranking, e o registo de entregas mostra em segundos se chegou.
Os votos da BestMCServerList levam o nome de serviço BestMCServerList. Os jogadores Bedrock que entram através do Geyser e do Floodgate votam com o nome com prefixo, por exemplo .Steve, e o nome chega ao NuVotifier sem alterações. Cada nome de Minecraft pode votar uma vez por servidor e por dia de calendário, contado na hora de Europe/Berlin.
Ainda não estás listado? Adiciona primeiro o teu servidor e depois volta a este passo.
Erros comuns e soluções
| Problema | O que verificar |
|---|---|
| Ligação recusada | O NuVotifier não está a correr ou está à escuta noutra porta. Compara a porta na config com a que introduziste. |
| Tempo esgotado | Uma firewall ou o host bloqueiam o tráfego. Abre a porta para TCP ou pede ao host uma porta extra. |
| O teste chega, os jogadores não recebem nada | Não há plugin de recompensas. A consola regista A vote was received, but you don't have any listeners available to listen for it. |
| Voto rejeitado com v2 | O token não coincide. Copia outra vez o tokens.default, sem espaços nem aspas. |
| Funciona no proxy, não no backend | O backend não está definido para pluginMessaging, ou os nomes dos canais são diferentes. |
| Porta errada introduzida | Responde a porta do Minecraft em vez do NuVotifier. Usa a porta do Votifier. |
Quando os votos chegarem, configura as recompensas: o nosso guia de recompensas de voto com VotingPlugin trata do nome de serviço, do VoteSites.yml e dos limites diários. Para a visão geral, vê como arranjar jogadores para um servidor novo.