Plugins Folia
Το regionised multithreading του Folia αλλάζει πώς τα plugins προγραμματίζουν τη δουλειά. Πώς το Codexe φτιάχνει plugins ασφαλή για Folia και τι να γράψεις στο αίτημα.
Ενημερώθηκε
Σε αυτή τη σελίδα
Το Folia είναι το fork του Paper που κάνει tick σε διαφορετικές περιοχές του κόσμου σε διαφορετικά threads. Δεν υπάρχει ένα μοναδικό «main thread», οπότε ο συνηθισμένος προγραμματισμός εργασιών του Bukkit (Bukkit.getScheduler().runTask(...)) δεν ισχύει.
#Τι κάνει διαφορετικά το Codexe
Όταν διαλέγεις τον τύπο Folia, το plugin που δημιουργείται:
- προγραμματίζει τη δουλειά με τους schedulers region, entity, global region και async αντί για τον scheduler του Bukkit,
- δηλώνει
folia-supported: trueστοplugin.yml, - κάνει build πάνω στο API του Folia (Maven).
#Τι να γράψεις στο αίτημα
Όλα όσα λέει ο οδηγός για Spigot & Paper, συν λεπτομέρειες που εξαρτώνται από τον χρόνο: «teleport μετά από 3 δευτερόλεπτα», «επανάληψη κάθε λεπτό για κάθε παίκτη online». Εκεί διαφέρει περισσότερο ο κώδικας του Folia.
#Build και επαλήθευση
Τα plugins Folia μεταγλωττίζονται και ελέγχονται όπως κάθε άλλο plugin πριν γίνουν Έτοιμα. Η μεταγλώττιση αποδεικνύει ότι ο κώδικας κάνει build πάνω στο API του Folia. Η ασφάλεια των threads κατά την εκτέλεση εξαρτάται ακόμα από τη λογική, οπότε δοκίμασε σε έναν server Folia.
#Συχνά προβλήματα
| Σύμπτωμα | Πιθανή αιτία |
|---|---|
UnsupportedOperationException για τον scheduler | Κάποιος κώδικας (συχνά από μια εξάρτηση) χρησιμοποιεί τον scheduler του Bukkit. Ζήτα από το chat να τον μεταφέρει στον scheduler region ή entity. |
| Το plugin αρνείται να φορτώσει στο Folia | Λείπει το folia-supported: true από το plugin.yml. |