Modificare Hytale API: Ghidul complet de dezvoltare a modulului server

După: nume Categorie: : nume : minute min citește

Tot ce ai nevoie pentru a începe construirea plugin-uri Hytale server. Acest ghid se referă la configurarea Java 25, ciclul de viață al modulului, sistemul dual de evenimente (EvenimentBus + ECS), înregistrarea comenzii, componentele entității, formatul manifest.json și implementarea pe CurseForge.

Sistemul de plugin al serverului Hytale oferă dezvoltatorilor un control profund asupra fiecărui aspect al jocului. Dacă ați scris plugin-uri Bukkit sau Spigot pentru Minecraft, tranziția este simplă, dar arhitectura Hytale este fundamental diferită în moduri care contează. Acest ghid vă plimbă prin tot ceea ce de la configurarea inițială la implementarea producției. Arhitectură Prezentare generală Inainte de a scrie orice cod, intelegeti cum functioneaza modding-ul lui Hytale: Clientul este un randator. Hytale's C# client se ocupă de grafică, intrare, și audio, dar nu conține logica jocului. Toate simulările rulează pe serverul Java, chiar și în singleplayer. Totul este pe server. Când jucătorii se alătură automat unui server modificat, activele personalizate și fluxul comportamental. Nu este nevoie de moduri client. Patru categorii de modding există: Active de date (JSON), Active de Artă (modele Blockbench), Module Server (Java) și Scripting Visual (în curând). Modulele Server sunt cea mai puternica categorie de plugin-uri care iti ofera acces Java complet la runtime-ul serverului, inclusiv la Sistemul Component al Entitatii, la conducta de evenimente, la cadrul de comanda si la manipularea mondiala. Development Environment Setup Precondiții ToolVersionNotes Java25+ Hytale folosește caracteristici moderne, inclusiv fire virtuale (Project Loom) Ideea IntelliJ Community sau Ultimate Recomandată IDE Gradle 9.2.0+ Sistem de construcţie (inclus în modelul de modul) Git Orice versiune recentă Pentru clonarea șablonului oficial Clone the Official Model Hypixel Studios oferă un model oficial de plugin pe GitHub: git clone A se vedea nota de subsol 1. Primul meu plugin cd MyFirstPlugin Deschide proiectul in IntelliJ IDEA si lasa Gradle sa se sincronizeze. Șablonul include structura corectă a directorului, configurarea clădirii și dependențele serverului API. Alternatively, the HytaleIO Generator de proiect la Hytaleio.com/generator de proiect poate crea plugin, Mod, sau schela de proiect full (combo) cu un UI web. Structura plugin Name lugin/ Src/main/java/com/yourname/yourplugin/ Plugin-ul tău. java # Punctul principal de intrare Src/main/Resurse/ Manifestaţi. metadatele modulului json # (necesare) (modele, texturi) Construieşte.gradle.kts Setări.gradle.kts manifest.json Fiecare modul necesită un manifest.json la rădăcina JAR compilat. Acesta este echivalentul lui Hytale al lui Bukkit plugin.yml: { "Group": "com.yourname," "Nume": "YourPluginName," "Main": "com.yourname.yourplugin.YourPlugin," "Versiune": "1.0." "Descriere": "Ce face plugin-ul tău," "Autori": [{"Numele": "Numele tău"}, "ServerVersion": "*," "Dep tendinţe": {}, "Opţional Dep tendinţe": {}, "Loadfore": [], "Disabled by Default": fals, "IncludeAssetPack": fals } Identificatorul modulului este format ca Grup:Nume (de exemplu, com.yourname:YourPluginName). The Main puncte de câmp pentru clasa de intrare Lugin Lifecycle Clasa ta principală se extinde JavaPlugin și are patru faze ale ciclului de viață: Clasă publică Prelungește modulul JavaPlugin { public YourPlugin(@Nonnull JavaPluginInit init) { super (minit); getLogger().info("Plugin built!"); } @ Override configurarea vidului public() { - Nu. Faza 2: Inregistreaza evenimente, comenzi, sisteme ECS - Nu. Acest lucru este în cazul în care cea mai mare parte a codului de înregistrare merge } @ Override pornirea nulă publică() { - Nu. Faza 3: Serverul este gata pentru jucători - Nu. Începe sarcinile programate, conexiuni deschise } @ Override închiderea nulă publică() { - Nu. Faza 4: Curățare înainte de oprirea serverului - Nu. Salvează date, închide conexiunile, anulează sarcinile } } PhaseMetoda Ce să fac aici? Traducerea şi adaptarea: Inițializare de bază, logare 2. Setup setup() Evenimente de înregistrare, comenzi, componente și sisteme ECS 3. Start start() Start sarcini, serverul acceptă jucători 4. Shutdown shutdown() Economisiți date, resurse de curățare Sistemul Dual Event Acesta este cel mai important concept de înțeles. Hytale are două sisteme separate de evenimente și utilizarea greșită este o greșeală comună. Eveniment Autobuz The EventBus se ocupă de evenimente la nivel de server, cum ar fi conexiuni jucător, chat, și încărcare mondială. Manipulatori de registru prin EvenimentRegistry furnizate plugin-ului dvs.: @ Suprascrie configurarea vidului public() { Eveniment global Synchronous getEventRegistry () RegisterGlobal( PlayerReadyEvenimente.clase, eveniment - > { getLogger().info("Player s-a alăturat: " + eveniment.getPlayer().getUsername()); } ); // Eveniment Async (ca PlayerChatEveniment) getEventRegistry () RegisterAsyncglobal( PlayerChatEvenimente.clasă, viitor - > { viitor. apoi Accept (eveniment - > { dacă (eveniment.getMessage().conține("spam"))) { eveniment.setAnulat (adevărat); } }); } ); } Traducerea şi adaptarea: Evenimente cu autobuzul: PlayerConnectEveniment / PlayerDisconnectEvent Ciclul de viață al conexiunii PlayerReadyEveniment Jucător complet încărcat și gata PlayerChatEvent AddPlayerToWorldEvent player entry a world StartWorldEvent / AddWorldEvent / RemoveWorld Eveniment Priorități de eveniment: Utilizare EvenimentPrioritate. EARLY pentru a rula mai întâi și a modifica evenimentele înainte de a le vedea alți participanți. Utilizare EvenimentPrioritate. LATE pentru a vedea starea finală după ce toți ceilalți participanți au procesat. ECS Evenimente Entity- level events like block breaking, block placeting, and daune are manipulate prin Entity component System, not the EventBus. Creezi un ENTITATEA System: Clasă publică BlockBreakHandler Extindere Environment EventSystem