Πώς το Votifier παραδίδει μια ψήφο
- Ένας παίκτης ψηφίζει τον server σου σε μια λίστα.
- Η λίστα ανοίγει μια σύνδεση TCP στον server σου στο port του Votifier και στέλνει το όνομα του παίκτη, το δικό της service name, μια διεύθυνση και ένα timestamp.
- Το NuVotifier ελέγχει το μήνυμα (κλειδί RSA για v1, token για v2) και πυροδοτεί ένα vote event.
- Ένα plugin ανταμοιβών όπως το VotingPlugin ακούει αυτό το event και δίνει την ανταμοιβή.
Το ίδιο το NuVotifier δεν δίνει τίποτα. Έρχεται χωρίς κανέναν listener, οπότε χρειάζεσαι πάντα ένα δεύτερο plugin για τις ανταμοιβές.
Βήμα 1: Εγκατάστησε το NuVotifier σε Paper ή Spigot
Βάλε το JAR του NuVotifier στον φάκελο plugins και ξεκίνα τον server μία φορά. Φτιάχνει το config του, ένα ζεύγος κλειδιών RSA και ένα token. Η κονσόλα τυπώνει το token στην πρώτη εκκίνηση: 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:votes- Το
hostείναι η διεύθυνση όπου ακούει το NuVotifier. Από προεπιλογή παίρνει την IP για την οποία είναι ρυθμισμένος ο server σου ή0.0.0.0για όλα τα interfaces. - Το
portείναι το port του Votifier, από προεπιλογή8192. Δεν πρέπει να είναι το port του Minecraft. - Το
tokens.defaultχρησιμοποιείται για κάθε λίστα, εκτός αν προσθέσεις token κάτω από το service name μιας λίστας. - Τα κλειδιά για το v1 δημιουργούνται στο
plugins/Votifier/rsa/ωςpublic.keyκαιprivate.key.
Βήμα 2: Κάνε το port προσβάσιμο
Οι λίστες συνδέονται από το internet, οπότε το port του Votifier πρέπει να είναι ανοιχτό για εισερχόμενες συνδέσεις TCP. Εδώ αποτυγχάνουν τα περισσότερα setups.
- Shared hosting: πολλά panels ανοίγουν μόνο το port του παιχνιδιού. Πρόσθεσε ένα επιπλέον port στο panel και βάλε ακριβώς αυτόν τον αριθμό στο
port. Κάποιοι hosts σου δίνουν τον αριθμό μόνοι τους. - Δικό σου VPS ή root server: επίτρεψε το port στο firewall, για παράδειγμα
ufw allow 8192/tcp. - Στο σπίτι: κάνε port forwarding στο router σου προς το μηχάνημα που τρέχει τον server.
Κάνε restart τον server αφού αλλάξεις το config. Το NuVotifier έχει επίσης το /nvreload, που τρέχει από την κονσόλα.
Βήμα 3: Διάλεξε v1 (δημόσιο κλειδί) ή v2 (token)
| Πρωτόκολλο v1 | Πρωτόκολλο v2 | |
|---|---|---|
| Μυστικό | Ζεύγος κλειδιών RSA | Κοινό token |
| Τι χρειάζεται η λίστα | Το περιεχόμενο του rsa/public.key | Το token από το tokens.default |
| Υποστήριξη | Κλασικό Votifier· το μιλούν οι περισσότερες λίστες | Το NuVotifier και οι λίστες που το υποστηρίζουν |
Μη δώσεις ποτέ σε κανέναν το private.key. Αν μια λίστα υποστηρίζει v2, το token είναι η πιο απλή επιλογή: μία γραμμή, κανένα αρχείο κλειδιού. Το BestMCServerList υποστηρίζει και τα δύο, οπότε διάλεξε ό,τι θέλεις στη σελίδα Votifier.
Κράτα το disable-v1-protocol: false σε μεμονωμένο server. Το ίδιο το NuVotifier προειδοποιεί ότι πολλές λίστες μιλούν μόνο v1.
Βήμα 4: Networks με Velocity ή BungeeCord
Σε ένα network, η λίστα συνδέεται στο proxy. Το NuVotifier τρέχει στο proxy και προωθεί τις ψήφους στους backend servers όπου βρίσκεται το plugin ανταμοιβών. Το wiki του NuVotifier προτείνει plugin messaging για τα περισσότερα 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"Στο BungeeCord τα ίδια κλειδιά βρίσκονται στο plugins/NuVotifier/config.yml σε μορφή YAML. Το cache = "file" κρατά τις ψήφους για παίκτες που είναι offline και τις παραδίδει αργότερα.
Κάθε backend server (Paper)
port: -1
forwarding:
method: pluginMessaging
pluginMessaging:
channel: nuvotifier:votesΤο port: -1 απενεργοποιεί τον listener στο backend, έτσι μόνο το proxy δέχεται ψήφους. Βεβαιώσου ότι οι backends είναι προσβάσιμοι μόνο μέσω του proxy, αλλιώς κάποιος θα μπορούσε να στείλει ψεύτικες ψήφους.
Η άλλη επιλογή, method = "proxy", στέλνει τις ψήφους από το proxy σε ένα port του NuVotifier σε κάθε backend, ρυθμισμένο με διεύθυνση, port και token ανά server κάτω από το [forwarding.proxy.<name>]. Δεν έχει cache ψήφων, οπότε το plugin messaging συνήθως ταιριάζει καλύτερα.
Βήμα 5: Βάλε τα στοιχεία και στείλε δοκιμαστική ψήφο
- Δοκίμασε πρώτα τοπικά:
/testvote Steve serviceName=BestMCServerListστο Paper ή/ptestvoteμε τα ίδια ορίσματα στο proxy. Αν αντιδράσει το plugin ανταμοιβών, το εσωτερικό κομμάτι δουλεύει. - Στο BestMCServerList, άνοιξε τον server σου στο dashboard και πήγαινε στο Votifier. Βάλε τη δημόσια διεύθυνση του server ή του proxy, το port και το token (v2) ή το δημόσιο κλειδί (v1) και αποθήκευσε.
- Πάτησε Αποστολή δοκιμαστικής ψήφου. Στέλνουμε μια ψήφο για το
TestVoteπου δεν μετράει στην κατάταξη, και το log παράδοσης δείχνει μέσα σε δευτερόλεπτα αν έφτασε.
Οι ψήφοι από το BestMCServerList έχουν το service name BestMCServerList. Οι παίκτες Bedrock που μπαίνουν μέσω Geyser και Floodgate ψηφίζουν με το όνομά τους μαζί με το πρόθεμα, για παράδειγμα .Steve, και το όνομα φτάνει στο NuVotifier χωρίς αλλαγές. Κάθε όνομα Minecraft μπορεί να ψηφίσει μία φορά ανά server ανά ημερολογιακή ημέρα, με βάση την ώρα Europe/Berlin.
Δεν είσαι ακόμα στη λίστα; Πρόσθεσε τον server σου πρώτα και μετά γύρνα σε αυτό το βήμα.
Συχνά λάθη και λύσεις
| Πρόβλημα | Τι να ελέγξεις |
|---|---|
| Connection refused | Το NuVotifier δεν τρέχει ή ακούει σε άλλο port. Σύγκρινε το port στο config με αυτό που έβαλες. |
| Timed out | Ένα firewall ή ο host πετάει την κίνηση. Άνοιξε το port για TCP ή ζήτα από τον host ένα επιπλέον port. |
| Η δοκιμή φτάνει, οι παίκτες δεν παίρνουν τίποτα | Δεν υπάρχει plugin ανταμοιβών. Η κονσόλα γράφει A vote was received, but you don't have any listeners available to listen for it. |
| Η ψήφος απορρίπτεται με v2 | Το token δεν ταιριάζει. Αντίγραψε ξανά το tokens.default, χωρίς κενά ή εισαγωγικά. |
| Δουλεύει στο proxy, όχι στο backend | Το backend δεν είναι ρυθμισμένο σε pluginMessaging ή τα ονόματα των channels διαφέρουν. |
| Μπήκε λάθος port | Απαντά το port του Minecraft αντί για το NuVotifier. Χρησιμοποίησε το port του Votifier. |
Μόλις αρχίσουν να φτάνουν ψήφοι, στήσε τις ανταμοιβές: ο οδηγός μας για ανταμοιβές ψήφων με VotingPlugin καλύπτει το service name, το VoteSites.yml και τα ημερήσια όρια. Για τη μεγάλη εικόνα, δες πώς βρίσκεις παίκτες για νέο server.