Cale de setup: Dashboard → Editează serverul → Recompense vote (și Detalii Minecraft pentru Votifier).
01
Cum funcționează
1
Jucătorul deschide linkul tău de vote, ideal cu ?p=USERNAME ca formularul să fie precompletat.
2
Trimite vote-ul. Aplicăm un cooldown de 24 de ore pe IP (și pe contul autentificat). Dacă recompensele sunt configurate, username-ul / parametrul e obligatoriu.
3
Notificăm sistemele tale de recompense: HTTP GET către URL-ul de postback și/sau un pachet Votifier către hostul Minecraft — cu același parametru și IP-ul votantului.
4
Tu acorzi recompensa. Eșecurile de livrare pe partea ta sunt logate aici, dar nu șterg vote-ul.
Alege o metodă
HTTP Postback
Cel mai bun pentru website-uri, launcher-e și jocuri non-Minecraft. Pentru Minecraft e o alternativă opțională la Votifier (sau un plus dacă recompensezi și pe website).
Funcționează pentru orice joc de pe listă
Tu controlezi punctele, cooldown-urile, logging-ul
Când lovim postback-ul tău cu p_resp=Razor, jucătorul Razor a votat. Valoarea ip e adresa folosită pe această listă.
Ce ar trebui să facă scriptul tău
Verifică că cererea vine de pe IP-ul public al acestei liste.
Sanitizează p_resp și ip (nu avea încredere în input brut).
Confirmă că contul / personajul există în baza ta de date.
Aplică propriul cooldown de recompensă dacă ai nevoie de ceva mai strict decât 24 de ore.
Acordă puncte, monede sau iteme; loghează evenimentul; returnează HTTP 200.
Exemplu postback.php
Hostează asta pe site-ul tău de recompense, nu neapărat pe această listă de vote. Setează VOTE_LIST_IP pe IP-ul public outbound al acestui website înainte să treci live.
<?php
/**
* Example vote postback receiver for YOUR game website / CMS.
*
* Configure this URL on your listing under Dashboard → Edit server → Vote Rewards.
* This list will call it ONLY after a successful vote:
*
* https://yoursite.com/postback.php?p_resp=PARAMETER&ip=USERIP
*
* PARAMETER is the username / account id the player entered on the vote form
* (or the value from ?p= on your incentive voting link).
*
* Docs: /voting-check
*/
define('DEBUG', 0); // set to 1 to write _postback.log
define('LOG_FILE', __DIR__ . '/_postback.log');
/**
* Only accept callbacks from the vote list's public IP.
* Leave empty to skip the allowlist (not recommended in production).
*
* Example: define('VOTE_LIST_IP', '203.0.113.10');
*/
define('VOTE_LIST_IP', '');
$ipRequest = $_SERVER['HTTP_CF_CONNECTING_IP']
?? (isset($_SERVER['HTTP_X_FORWARDED_FOR'])
? trim(explode(',', (string) $_SERVER['HTTP_X_FORWARDED_FOR'])[0])
: null)
?? $_SERVER['REMOTE_ADDR']
?? '';
$ipRequest = trim((string) $ipRequest);
if (VOTE_LIST_IP !== '' && $ipRequest !== VOTE_LIST_IP) {
if (DEBUG) {
error_log(date('[Y-m-d H:i] ') . "[Invalid] Request from {$ipRequest}" . PHP_EOL, 3, LOG_FILE);
}
http_response_code(403);
exit('Forbidden');
}
if (DEBUG) {
error_log(date('[Y-m-d H:i] ') . "[OK] Valid callback: {$ipRequest}" . PHP_EOL, 3, LOG_FILE);
}
// Clean parameters from the vote list (letters, numbers, underscore, hyphen).
$p = preg_replace('/[^A-Za-z0-9_\-]+/', '', (string) ($_GET['p_resp'] ?? '')) ?? '';
$userIp = preg_replace('/[^0-9a-fA-F:\.]+/', '', (string) ($_GET['ip'] ?? '')) ?? '';
if ($p === '') {
http_response_code(400);
exit('Missing p_resp');
}
if (DEBUG) {
error_log(date('[Y-m-d H:i] ') . "[GET] Parameters [p_resp]={$p} [ip]={$userIp}" . PHP_EOL, 3, LOG_FILE);
}
// ---------------------------------------------------------------------------
// Connect to your database, verify account $p exists, enforce your own
// cooldown if needed, then grant vote points / items to $p (voted from $userIp).
// We send p_resp + ip ONLY when that player successfully voted on the list.
// ---------------------------------------------------------------------------
http_response_code(200);
echo 'OK';
03
Minecraft Votifier
Putem împinge vote-ul direct pe serverul tău Minecraft. Un plugin listener rulează apoi comenzile de recompensă.
Firewall: permite TCP inbound de pe IP-ul public al acestui website către portul tău Votifier (implicit 8192). Nu expune portul pe tot internetul dacă poți evita.
1
Jucătorul introduce username-ul Minecraft pe pagina noastră de vote (sau ajunge via ?p=Steve).
2
Vote-ul reușește pe această listă.
3
Ne conectăm la hostul/portul Votifier și livrăm pachetul de vote.
4
Listener-ul tău acordă crate-uri, key-uri, bani etc.
Activează Votifier la Detalii Minecraft, alege NuVotifier v2 sau Classic, apoi introdu host, port și token sau cheia publică RSA.
Instalează NuVotifier (classic RSA și protocol v2) sau classic Votifier, plus un listener pentru versiunea ta de Minecraft (GAListener, SuperbVote sau un listener custom).
Classic / v1: lipește fișierul public.key complet. Hostul și portul vin din config.yml. Ține debug: true cât timp conectezi această listă, apoi oprește-l.
host: YOUR_PUBLIC_IP
port: 8192
debug: true
Pachetele identifică această listă ca: JoinGameServers
04
NuVotifier v2
Protocolul v2 înlocuiește RSA cu un token partajat și un challenge one-time. Mapează un token pe numele de service al acestei liste sau folosește token-ul default.
Greeting-ul nu are challenge — folosește Classic sau upgrade NuVotifier și activează v2.
Semnătură invalidă / service necunoscut
Token greșit sau numele de service nu e mapat. Adaugă numele de service al listei sau folosește default.
Conexiune eșuată / timeout
Host/port greșit, Votifier offline sau firewall care blochează IP-ul acestei liste.
Niciun răspuns
Interferență proxy/plugin; activează debug NuVotifier și încearcă din nou.
05
Checklist de testare
Salvează setările listing-ului fără erori de validare.
Deschide un link cu incentive — câmpul username ar trebui să se precompleteze din ?p=.
Dă un vote. Ar trebui să vezi starea de succes. Un al doilea vote în 24 de ore trebuie blocat.
Verifică postback: activează DEBUG în receiver; confirmă că p_resp și ip ajung.
Verifică Votifier: cu debug true, consola Minecraft ar trebui să arate un vote incoming pentru username-ul tău și numele de service al acestei liste.
Confirmă recompensa in-game sau pe site. Dacă nu vine, repară listener-ul — vote-ul pe listă tot contează.
Încercările de livrare sunt înregistrate în vote_reward_logs (ok / fail / skipped). Un callback eșuat nu anulează niciodată vote-ul pe această listă.
06
FAQ & troubleshooting
Nu. Guest-urile pot vota. Conturile autentificate împart aceleași reguli de cooldown de 24 de ore, ca să prevenim abuzul.
Dacă ai configurat un URL de postback sau Votifier, avem nevoie de un parametru ca să știm pe cine să recompensezi. Fără recompense configurate, username-ul rămâne opțional.
Da. Ambele rulează după un vote reușit. Eșecurile sunt independente.
Trebuie să fie un URL public http(s). Localhost, .local, IP-uri private (ex. 10.*, 192.168.*) și URL-urile cu credențiale încorporate sunt blocate.
Confirmă că vote-ul a reușit pe această listă. Verifică logurile de postback sau output-ul de debug NuVotifier. Verifică allowlist-urile pe firewall și că username-ul se potrivește cu un cont in-game. Cooldown-ul listei e de 24 de ore; cooldown-ul tău de recompensă poate diferi.
Doar A–Z, a–z, 0–9, _ și -. Orice altceva e eliminat. Ține parametrii ≤ 32 caractere.
Instalează aplicațiaAdaugă JoinGameServers pe ecranul principal pentru acces rapid.