Ύφασμα Hytale API: Ο πλήρης οδηγός ανάπτυξης πρόσθετων Server

By HytaleCharts Team Category: guides 7 min read

Όλα όσα χρειάζεστε για να ξεκινήσετε την κατασκευή plugins του εξυπηρετητή Hytale. Αυτός ο οδηγός καλύπτει την εγκατάσταση Java 25, τον κύκλο ζωής plugin, το σύστημα διπλής εκδήλωσης (EventBus + ECS), την εγγραφή εντολών, στοιχεία οντότητας, δηλωτικό.json μορφή, και την ανάπτυξη στο CurseForge.

Το σύστημα plugin του εξυπηρετητή Hytale δίνει στους προγραμματιστές βαθύ έλεγχο σε κάθε πτυχή του παιχνιδιού. Αν έχετε γράψει Bukkit ή Spigot plugins για Minecraft, η μετάβαση είναι απλή — αλλά η αρχιτεκτονική του Hytale είναι θεμελιωδώς διαφορετική με τρόπους που έχουν σημασία. Αυτός ο οδηγός σας καθοδηγεί σε όλα από την αρχική εγκατάσταση μέχρι την ανάπτυξη παραγωγής. Αρχιτεκτονική Επισκόπηση Πριν από τη συγγραφή οποιουδήποτε κώδικα, καταλάβετε πώς λειτουργεί το modding του Hytale: < ul> < li>< strong> Ο πελάτης είναι υποδοχέας. Ο πελάτης C# του Hytale χειρίζεται γραφικά, είσοδο και ήχο — αλλά δεν περιέχει λογική παιχνιδιού. Όλες οι προσομοιώσεις εκτελούνται στον εξυπηρετητή Java, ακόμη και σε singleplayer. Όλα είναι από την πλευρά του διακομιστή. Όταν οι παίκτες ενταχθούν σε ένα moded server, προσαρμοσμένα περιουσιακά στοιχεία και ροή συμπεριφοράς αυτόματα. Δεν χρειάζονται mods πελάτη. < li>< strong>Τέσσερις κατηγορίες συρσίματος υπάρχουν: Data Assets (JSON), Art Assets (Blockbench μοντέλα), Server Plugins (Java), και Visual Scripting (που έρχεται σύντομα). Τα plugins Server είναι η πιο ισχυρή κατηγορία - σας δίνουν πλήρη πρόσβαση Java στο χρόνο λειτουργίας του διακομιστή, συμπεριλαμβανομένου του Συστήματος Συστατικό Οντοτήτων, αγωγό γεγονότων, πλαίσιο εντολών, και παγκόσμια χειραγώγηση. De περιβάλλοντος ανάπτυξης Προαπαιτούμενα < πίνακα> < thead> < tr>εργαλείο Παροχή Σημειώσεις < tbody> < tr>Java25+ Το Hytale χρησιμοποιεί σύγχρονα χαρακτηριστικά συμπεριλαμβανομένων των εικονικών νημάτων (Project Loom) < tr>IntelliJ IDEAΚοινότητα ή Ultimate < td>Συνιστάται IDE — δωρεάν κοινοτική έκδοση λειτουργεί μια χαρά < tr>9.2.0+Κατασκευασμένο σύστημα (που περιλαμβάνεται στο πρότυπο plugin) < tr>Git Οποιαδήποτε πρόσφατη έκδοση Για την κλωνοποίηση του επίσημου προτύπου Κλείστε το επίσημο πρότυπο Hypixel Studios παρέχει ένα επίσημο πρότυπο plugin στο GitHub: git κλώνος https://github.com/HytaleModding/plugin-template.git Το Πρώτο μου Πρόσθετο CD MyFirstPlugin Άνοιξε το έργο στο IntelliJ IDEA και άσε τον Gradle να συγχρονιστεί. Το πρότυπο περιλαμβάνει τη σωστή δομή καταλόγου, τις ρυθμίσεις κατασκευής και τις εξαρτήσεις API του διακομιστή. Εναλλακτικά, το HytaleIO Γεννήτρια έργου στο hytaleio.com/γεννήτρια έργου μπορεί να δημιουργήσει Plugin, Mod, ή Full (combo) σκαλωσιές έργου με ένα web UI. Διάρθρωση προσθέτων Κάθε πρόσθετο Hytale ακολουθεί αυτή τη διάταξη καταλόγου: < pre> < code>το plugin σας / - Η Πλούτζιν σου. java # Κύριο σημείο εισόδου - Δηλωτικό. json # Μεταδεδομένα πρόσθετου (απαιτείται) Κτίριο.gradle.kts .gradle.kts └ - - - - gradle. properties μανιφέστο.json Κάθε πρόσθετο απαιτεί ένα manifest.json στη ρίζα του μεταγλωττισμένου JAR. Αυτό είναι το ισοδύναμο της Hytale του Bukkit plugin.yml: < pre>< code> { " Ομάδα: "com.το όνοα σα", "Όνομα: "Το πρόσθετο σαςName", "Main": "com.το όνομά σας.το plugin σας. "Έκδοση: "1.0.0", "Περιγραφή": "Τι κάνει το plugin σας", "Αντικείμενο: "Έκδοση σέρβις": "* " Αποθέματα: {}, " προαιρετικές δαπάνες": {}, "Πριν: [], "Ασφαλής": ψευδής, " Περιλαμβάνει Asset Pack": ψευδής } < p> Το αναγνωριστικό πρόσθετων σχηματίζεται ως < code> Ομάδα:Όνομα (π.χ., com.το όνομά σας:YourPluginName). Ο < κωδικός>Κύριος σημεία πεδίου στην κατηγορία εισόδου σας - να πάρει αυτό λάθος και το plugin δεν θα φορτώσει. Πλουτός κύκλου ζωής Η κύρια τάξη σας εκτείνεται JavaPlugin και έχει τέσσερις φάσεις κύκλου ζωής: δημόσια τάξη Το πρόσθετο επεκτείνεται Πρόσθετο JavaPlugin { public YourPlugin (@Nonnull JavaPluginInit init) { super(init)· GetLogger ().info("Plugin κατασκευασμένο!"), } Παράκαμψη @Overide δημόσια κενή ρύθμιση () { // Φάση 2: Εγγραφή γεγονότων, εντολών, συστημάτων ECS // Αυτό είναι όπου το μεγαλύτερο μέρος του κωδικού εγγραφής σας πηγαίνει } Παράκαμψη @Overide δημόσιο κενό αρχής () { // Φάση 3: Ο εξυπηρετητής είναι έτοιμος για παίκτες // Έναρξη προγραμματισμένων εργασιών, άνοιγμα συνδέσεων } Παράκαμψη @Overide δημόσιο άκυρο κλείσιμο () { // Φάση 4: Καθαρισμός πριν σταματήσει ο εξυπηρετητής // Αποθήκευση δεδομένων, στενές συνδέσεις, ακύρωση εργασιών } } < πίνακα> < thead> < tr>Φάση Μέθοδος Τι να κάνετε εδώ < tbody> Κατασκευή < tr>1. Βασική αρχικοποίηση, καταγραφή < tr>2. Set < code> ρύθμιση() < td> Εγγραφή γεγονότων, εντολών, εξαρτημάτων και συστημάτων ECS < tr> < td>3. Έναρξη < td> < code> έναρξη () < td> Έναρξη εργασιών, ο εξυπηρετητής δέχεται παίκτες < tr> 4. Κλείσιμο shutdown() Αποθήκευση δεδομένων, πόροι καθαρισμού Το σύστημα διπλού γεγονότος < p> Αυτή είναι η πιο σημαντική ιδέα που πρέπει να κατανοήσουμε. Hytale έχει δύο ξεχωριστά συστήματα συμβάντων, και χρησιμοποιώντας το λάθος είναι ένα κοινό λάθος. Περιστατικό Λεωφορείο — Γεγονότα Global Server Το EventBus χειρίζεται εκδηλώσεις σε επίπεδο server όπως συνδέσεις παικτών, συνομιλία και παγκόσμια φόρτωση. Εγγραφή χειριστές μέσω του EventRegistry που παρέχονται στο plugin σας: < pre> < code>@ Αντικατάσταση δημόσια κενή ρύθμιση () { // Σύγχρονο παγκόσμιο γεγονός GetEventRegistry(). registerGlobal ( (στα Αγγλικά). Παίκτης ReadyEvent.class, γεγονός - > { GetLogger().info("Ο παίκτης εντάχθηκε: " + event.getPlayer ().getUsername ()? } ), // Async γεγονός (όπως PlayerChatEvent) GetEventRegistry().registerAsyncGlobal( ΠαίκτηςChatEvent.class, μέλλον -> { Το μέλλον. τότεΑποδοχή(event -> { εάν (event.getMessage().περιέχει("spam")) { event.setΑκύρωση( true)? } }), } ), } Βασικό γεγονός Εκδηλώσεις λεωφορείων: < ul> < li>< code>PlayerConnectEvent / < code>PlayerDisconnectEvent — κύκλος ζωής σύνδεσης < li>< code>PlayerReadyEvent — ο παίκτης είναι πλήρως φορτωμένος και έτοιμος < li>< code>ΠαίκτηςChatEvent — μηνύματα συνομιλίας (async, cancelable) AddPlayerToWorldEvent — Ο παίκτης μπαίνει σε έναν κόσμο < li>< code>ΞεκινήστεΠαγκόσμιοΕκδήλωση / < code>ΠροσθέστεΠαγκόσμιοΕκδήλωση / < code>ΑφαιρέστεΠαγκόσμιο Γεγονός — παγκόσμια διαχείριση Προτεραιότητες γεγονότων: Χρήση Event Priority. ΠΡΩΤΟ για να εκτελέσετε πρώτα και να τροποποιήσετε τα γεγονότα πριν τα δουν άλλοι χειριστές. Χρήση Event Priority. LAT για να δείτε την τελική κατάσταση μετά από όλες τις άλλες χειριστές έχουν επεξεργαστεί. ΕΚ Γεγονότα — Ενέργειες ειδικές για την οντότητα Εκδηλώσεις επιπέδου Entity όπως block breaking, block placeing και φθορές αντιμετωπίζονται μέσω του Entity Component System, όχι των EventBus. Δημιουργείτε ένα ΟντότηταEventSystem: δημόσια τάξη BlockBreakHandler επεκτείνει την οντότηταEventSystem Hytale χρησιμοποιεί μια προσαρμοσμένη αρχιτεκτονική ECS. Η κατανόηση αυτού είναι απαραίτητη για οποιοδήποτε μη-trivial plugin. Κορεές έννοιες < ul> Entity — απλά μια μοναδική ταυτότητα, δεν περιέχει τα ίδια τα δεδομένα < li>< strong>Component — καθαρό δοχείο δεδομένων που συνδέεται με μια οντότητα System — λογική που επεξεργάζεται οντότητες με συγκεκριμένους συνδυασμούς στοιχείων Ref — ασφαλής χειρισμός σε μια οντότητα (ποτέ αποθήκευση άμεσων αναφορών οντότητας) Store — διαχειρίζεται οντότητες που χρησιμοποιούν Αρχέτυπα για αποτελεσματική διάταξη μνήμης Προσαρμοσμένα συστατικά Βαθμολογία δημόσιας τάξης Εφαρμογή δεδομένων Συνιστώσα { βαθμός δημόσιας υπηρεσίας = 0· δημόσια ομάδα συμβολοσειρών = "", από καιρό στο κοινό Στο = System.current TimeMillis(), Παράκαμψη @Overide δημόσιος κλώνος ScoreData() { Αντίγραφο ScoreData = νέα ScoreData(), copy.score = αυτό.score· Ελήφθη. ομάδα = αυτή.ομάδα; Ελήφθη. Ενωμένοι Στο = αυτό. Στο; αντίγραφο επιστροφής· } } Οι συντάκτες πρέπει να εφαρμόσουν clone(). Συνδέστε τα σε οντότητες για να αποθηκεύσετε προσαρμοσμένα δεδομένα - βαθμολογίες, ομάδες, δροσιές, απογραφές, ή οποιαδήποτε κατάσταση που αφορά το παιχνίδι. Κατανόηση PlayerRef A "Player" στο Hytale δεν είναι μια ειδική τάξη - είναι μια οντότητα που αποτελείται από συστατικά στοιχεία. Το PlayerRef είναι ένα συστατικό που αποθηκεύει το όνομα χρήστη του παίκτη, το UUID, τη γλώσσα και τον χειριστή δικτύου. Παραμένει ενεργό όσο ο παίκτης είναι συνδεδεμένος. Εγγραφή υπολογιστή Σύνδεσεις υλοποιούν τη διασύνδεση < code>Σύνδεση : δημόσια τάξη Spawn Η εντολή υλοποιεί την εντολή { Παράκαμψη @Overide δημόσια συμβολοσειρά getName () { return " spawn"; } Παράκαμψη @Overide δημόσια άκυρη εκτέλεση (αποστολέας CommandSend, συμβολοσειρά[] args) { εάν (απόδειξη του παίκτη παίκτη) { // Παίκτης τηλεμεταφοράς για αναπαραγωγή αποστολή μηνύματος (" τηλεμεταφορά σε γόνο);), } } } // Εγγραφή στην εγκατάσταση () commandRegistry.registerCommand( new SpawnCommand()), Και τα δύο Player και CommandSend support hasPermission() checks. Το ενσωματωμένο σύστημα αδειών υποστηρίζει τις άδειες σε επίπεδο χρήστη, την κληρονομιά της ομάδας, και το wildcard που ταιριάζουν. Κατασκευή και ανάπτυξη Κτίριο < pre> < code>./ gradlew build < p> Το JAR εξόδου πηγαίνει στο build/libs/. Διαδρομές ανάπτυξης < πίνακα> < thead> < tr>Πλατφόρμα Κατάλογος Mod < tbody> < tr>Windows (τοπικά) < code>%AppData%/Roaming/Hytale/UserData/Mods/ < tr> εξυπηρετητής Linux < code>/opt/hytale/Server/mods/ Η επαναφόρτωση θερμών υλικών υποστηρίζεται εν μέρει για μικρές αλλαγές — χρήση Ctrl+F9 στο Intelli J για την ανοικοδόμηση χωρίς πλήρη επανεκκίνηση. Σημαντικές αλλαγές απαιτούν επανεκκίνηση του εξυπηρετητή. Το EventRegistry καθαρίζει αυτόματα τους χειριστές όταν ένα πρόσθετο ξεφορτώνει. Εκδόσεις στο CurseForge Το CurseForge αναγνωρίζει τρεις τύπους mod: < ul> Packs — packs (στοιχεία JSON, μοντέλα, υφές) Plugins — αρχεία Java JAR χρησιμοποιώντας το διακομιστή API Πρόωρη πρόσθετα — πρόσθετοι bootstrap για μετασχηματισμούς χαμηλής ποιότητας (προηγμένες, χρήση με φειδώ) Κοινοτικοί πόροι < p> Η κοινότητα που ασχολείται με το γλάσο έχει κατασκευάσει εκτενή τεκμηρίωση πέρα από αυτό που παρέχει το Hypixel Studios: < πίνακα> < thead> < tr>Πηγή Focus < tbody> < tr>HytaleModding.dev Οδηγοί, γιατροί, εργαλεία — 8.000+ μέλη της Έριδας < tr>Britakee Studios GitBookΚατανοητικά δοκιμασμένα μαθήματα για πακέτα και πρόσθετα < tr>HytaleDocs.com Κοινοτική αναφορά wiki και API < tr>Hytale-Toolkit (GitHub)Ασυνόδευτη πηγή, javadocs, σημασιολογική αναζήτηση κώδικα < tr>Patcher (GitHub) Περιήγηση στον εξυπηρετητή JAR ως έργο IntelliJ Σημείωση: Ο εξυπηρετητής JAR δεν είναι obfuscated και μπορεί να αποσυναρμολογηθεί ελεύθερα. Η Hypixel Studios έχει δεσμευτεί να κυκλοφορήσει τον πλήρη πηγαίο κώδικα του διακομιστή μέσα σε 1-2 μήνες από την έναρξη της EA. Τι έρχεται < ul> Αποκάλυψη πηγαίου κώδικα Server — αναμένεται έως τον Μάρτιο 2026 Οραματικό σενάριο — σενάριο με βάση κόμβους για μη προγραμματιστές (παρόμοια με τα μη αληθινά Blueprints) Ανάπτυξη bounties — Hypixel Studios σχεδιάζει να προσφέρει bounties για κοινοτικές συνεισφορές Επίσημη επέκταση τεκμηρίωσης - αναγνωρίζεται ως ελλιπής, διευρύνεται με βάση την ανατροφοδότηση της κοινότητας Έτοιμος να αναπτύξει το plugin σας; List your moded server on