Hytale Modding API: Täydellinen palvelinliitännäinen kehitysopas

Nimi: Luokka:: nimi : minuutteja min lue

Kaikki mitä tarvitset aloittaaksesi Hytale-palvelimen pluginsin rakentamisen. Tämä opas kattaa Java 25-asennuksen, plugin elinkaaren, kaksi tapahtumajärjestelmää (EventBus + ECS), komentorekisteröinnin, yhteisökomponentit, manifesti.json-formaatin ja CurseForgen käyttöönoton.

Hytalen palvelimen plugin-järjestelmä antaa kehittäjille syvän hallinnan pelin kaikkiin näkökohtiin. Jos olet kirjoittanut Bukkit tai Spigot plugins Minecraft, siirtyminen on yksinkertainen ... mutta Hytale n arkkitehtuuri on pohjimmiltaan erilainen tavalla, joka on tärkeä. Tämä opas opas opastaa sinua läpi kaiken alusta tuotantokäyttöön. Arkkitehtuuri Yleiskatsaus Ennen koodin kirjoittamista on ymmärrettävä, miten Hytalen modaus toimii: Asiakas on renderöijä. Hytalen C#-asiakas käsittelee grafiikkaa, syötettä ja ääntä, mutta se ei sisällä pelilogiikkaa. Kaikki simulointi toimii Java-palvelimella, jopa yhden pelaajan palvelimella. Kaikki on palvelimen puolella. Kun pelaajat liittyvät modded palvelimen, mukautetun omaisuuden ja käyttäytymisvirran automaattisesti. Asiakasmuutoksia ei tarvita. Neljä modausluokkaa: Data Assets (JSON), Art Assets (Blockbench mallit), Server Plugins (Java), ja Visual Scripting (tulevat pian). Server-liitännäiset ovat tehokkain luokka Kehitysympäristön asetukset Edeltavat opinnot < tr > < th > Tool < th > Versio < th > Huomiot Java 25+ Hytale käyttää nykyaikaisia ominaisuuksia, kuten virtuaalilankaa (hanke Loom) IntelliJ IDEA Yhteisön tai Ultimate Suositeltu IDE Gradle 9.2.0+ Rakennettu järjestelmä (sisältyy plugin-malliin) Git > Kaikki viimeaikaiset versiot Kloonaaminen virallinen malli Poista virallinen malli Hypixel Studios tarjoaa virallisen plugin mallin GitHub: git klooni https://github.com/HytaleModding/plugin-template.git MyFirst-liitännäinen cd MyFirst-liitännäinen Avaa projekti IntelliJ IDEAssa ja anna Gradlen synkronoida. Malli sisältää oikean hakemistorakenteen, kokoonpanon ja palvelimen API-riippuvuudet. Vaihtoehtoisesti HytaleIO Project Generator at hytaleio.com/project-generaattori voi luoda liitännän, modin tai Full (combo) projektitelineet web UI. Liitännäisen rakenne Jokainen Hytale-liitännäinen seuraa tätä hakemistoa: < < koodi > your- plugin / Src/main/java/com/nimesi/yourplugin/ Sinun liitännäisesi. Java # Päätulopiste Src/main/resources/ - Ilmeisesti. json # Liitännäisen metatiedot (pakollinen) Yhteiset/ # Yhteiset varat (mallit, tekstuurit) Palvelin/ # Palvelinpuolen tietovarat Building.gradle.kts Settings.gradle.kts Luokka: ominaisuudet manifest.json Jokainen plugin vaatii manifest.json kootun JAR:n juurella. Tämä vastaa Bukkitin plugin.yml : { "Ryhmä": "com. your name," "Nimi": "PluginName," "Main": "com. your name. your plugin. "Versio": "1.0,0" "Kuvaus": "Mitä plugin tekee" "Tekijät": [{Nimi': 'Nimi'} 'ServerVersion': '*', "Tarkastus": {} "Vapaaehtoisetehdot": {} LoadBefore: [] "DisabledByDefault": väärä 'SisältääAssetPackin': väärä } Liitännäisen tunniste on Ryhmä:Nimi (esim., com.nimi:PluginName ). Main Kenttäpisteet sisääntuloluokkaan ... saat tämän väärin ja plugin ei lataa. Liitännäinen Elinkaari Pääluokkasi ulottuu JavaPlugin ja sillä on neljä elinkaarivaihetta: julkinen luokka Liitännäinen pidentää Java-liitännäinen { julkinen YourPlugin(@Nonnull JavaPluginInit init) { super(init); getLogger().info("Liitännäinen rakennettu!"); } @Override julkinen tyhjiöasetus() { / Vaihe 2: Rekisteröi tapahtumat, komennot, ECS-järjestelmät / Täällä suurin osa rekisteröintikoodista menee. } @Override julkinen tyhjä alku() { / Vaihe 3: Palvelin on valmis pelaajille / Aloita aikataulun mukaiset tehtävät, avoimet yhteydet } @Override julkinen tyhjiön pysäytys() { / Vaihe 4: Siivous ennen palvelinten pysähtymistä / Tallenna tiedot, läheiset yhteydet, peruuta tehtävät } } phase Menetelmä Mitä tehdä tässä 1. Rakentaminen Konstruktori Perusalustaminen, puunkorjuu 2. Aseta setup() Rekisteröi tapahtumat, komennot, ECS-komponentit ja järjestelmät 3. alkustart() Käynnistä tehtävät, palvelin hyväksyy pelaajat 4. Sammutus shutdown() Tallenna tiedot, puhdistusresurssit kaksoistapahtumajärjestelmä Tämä on tärkein käsite ymmärtää. Hytale on kaksi erillistä tapahtumajärjestelmää , ja väärän käyttö on yleinen virhe. Tapahtuma Bussi - Global Server Events The EventBus käsittelee palvelimen kokoisia tapahtumia, kuten pelaajayhteyksiä, chat ja maailman lataamista. Rekisteröidy käsittelijät kautta EventyRegistry toimitetaan plugin: @@ Ohita julkinen tyhjiöasetus() { / / / Synkroninen maailmanlaajuinen tapahtuma getEvent Registry().registerGlobal( PelaajareadyEvent.class, tapahtuma - > { getLogger().info("Player yhdistetty: " + event.getPlayer().getUsername() } ); / / Async tapahtuma (kuten PlayerChatEvent) getEventRegistry().registerAsyncGlobal( PelaajaChatEvent.class, Tulevaisuudessa -> { Tulevaisuus. SittenAccept(event -> { jos (event.getMessage().sisältää(" roskaposti")) { tapahtuma.setCancelled(true); } }); } ); } avaintapahtuma Bussitapahtumat: PlayerConnectEvent / PlayerDisconnectionEvent Yhdistyksen elinkaari PlayerReadyEvent Pelaaja täysin ladattu ja valmis PlayerChatEvent LisääPlayerToWorldEvent StartWorldEvent / LisäWorldEvent / PoistaWorld Tapahtuma Maailmanhallinto Tapahtuman painopisteet: Käytä TapahtumaPriority. EARLY ajaa ensin ja muuttaa tapahtumia ennen kuin muut käsittelijät näkevät ne. Käytä TapahtumaPriority. Myöhäinen nähdä lopullinen tila sen jälkeen, kun kaikki muut käsittelijät ovat käsitelleet. ECS Tapahtumat Entity-tason tapahtumia, kuten lohkon murtumia, lohkon sijoittamista ja vaurioita käsitellään Entity Component System , ei EventBus. Luot YksikköEventSystem : julkinen luokka BlockBreakHandler laajentaa EntityEventSystem { @Override Julkinen kysely getQuery() { / / Kohdeyhteisöt, joilla on erityisiä osia return Query.builder().building(); } @Override julkinen luokka < BreakBlockEvent> getEventType() { palautus BreakBlockEvent.-luokka; } @Override julkinen tyhjä kahva(EntityStore store, Komentopuskuri BreakBlock Tapahtumatapahtuma) { / Käsittele lohkokatkos / Peruuta suodatinvaiheessa, ei täällä } } Kriittinen sääntö: Peru ECS-tapahtumat vain suodattimen -vaiheen aikana. Peruutus tarkastusvaiheessa ei vaikuta, koska toimenpide on jo toteutettu. Entiteettikomponenttijärjestelmä (ECS) Hytale käyttää ECS-arkkitehtuuria. Tämän ymmärtäminen on välttämätöntä kaikille muille plugin. Core Concepts Entity Component ... System Ref ... Store Asiakkaat komponentit julkinen luokka Tietosovellukset Osa { julkinen pistemäärä = 0; julkinen merkkijonoryhmä = "; julkinen At = System.currentTimeMillis(); @Override julkinen ScoreData klooni() { ScoreData kopio = uusi ScoreData(); copy.score = this.score; Selvä. tiimi = tämä ryhmä; Selvä. liittynyt At = tämä. At; palautuskappale; } } Ohjaajien on toteutettava klooni() . Liittäkää ne yksiköihin tallentamaan mukautettuja tietoja. Ymmärrettävä pelaajaRef A "Player" Hytale ei ole erityinen luokka ... se on kokonaisuus koostuu osista. PlayerRef on itse asiassa komponentti, joka tallentaa pelaajan käyttäjänimen, UUID, kielen ja verkon käsittelijän. Se pysyy aktiivisena niin kauan kuin pelaajalla on yhteys. Command Registration Commands implement the Command liitäntä: julkinen luokka Komento toteuttaa komennon { @Override public String getName() { return "spawn"; } @Override julkinen tyhjiö suorittaa(CommandSender lähettäjä, String[] args) { jos (pelaaja-esimerkki) { / Teleportti-soitin lähettäjä.sendMessage("Teleporting to spanwn..." } } } // Rekisteröidy asennuksessa() komentoRekisteröityCommand(uusi SpawnCommand()); Molemmat Player ja CommandSender tuki hasPermission() tarkastukset. Sisäänrakennettu käyttölupajärjestelmä tukee käyttäjätason käyttöoikeuksia, ryhmäperintöä ja widcard-yhteensopivuutta. Rakentaminen ja käyttöönotto Rakennus ./gradientti rakennus Tuotos JAR menee building/libs/. Käyttöpolut Platform Mod-hakemisto Istuimet (paikallinen) %AppData%/Roaming/Hytale/UserData/Mods/ Linux-palvelin /opt/hytale/Server/mods/ Hot reloading on osittain tuettu pienissä muutoksissa J rakentaa uudelleen ilman täydellistä uudelleenkäynnistystä. Suuret muutokset edellyttävät palvelimen uudelleenkäynnistystä. EventRegistry puhdistaa käsittelijät automaattisesti, kun plugin purkaa. Kustantaminen kiroukseen CurseForge tunnistaa kolme mod-tyyppiä: Pakkaukset Plugins Java JAR -tiedostot palvelimella API Early-liitännäiset ... Yhteisön varat Modding-yhteisö on rakentanut laajaa dokumentaatiota pidemmälle kuin mitä Hypixel Studios tarjoaa: Resource Focus HytaleModding.dev Oppaat, asiakirjat, työkalut Britakee Studios GitBook Laaja-alaiset testatut tutoriaalit pakkauksille ja plugineille HytaleDocs.com Community wiki and API reference Hytale-Toolkit (GitHub) Koostumaton lähde, javadocs, semanttinen koodihaku Patcher (GitHub) Selaa Jar-palvelinta IntelliJ-projektina Huom. Palvelin JAR ei ole obfuscated ja voidaan vapaasti hajottaa. Hypixel Studios on sitoutunut vapauttamaan koko palvelimen lähdekoodin 1 Mitä tulee Server-lähdekoodin julkaisu Odotetaan maaliskuuhun 2026 mennessä Visual Scripting Kehityspalkkiot Hypixel Studios aikoo tarjota palkkioita yhteisön rahoitusosuudesta Virallinen dokumentaatiolaajennus . Valmiina ottamaan käyttöön plugin? Listaa muokattu palvelin HytaleCharts jotta pelaajat voivat löytää luomuksen. Pienoispelikohtaiset kehitysmallit: ks. Custom Minigames Guide .