Hytale Server API Reference: Tapahtumat, Viestit ja Plugin Development Guide

Nimi: Luokka:: nimi : minuutteja min lue

Master Hytale -palvelimen kehittäminen kattavalla API-viittauksellamme. Opi PlayerConnect Tapahtuma, pelaaja Irrota yhteys Tapahtuma, Message luokka chat muotoilu, komento rekisteröinti, ja rakentaa ensimmäinen plugin käyttäen Legacy Engine's Java-pohjainen arkkitehtuuri.

Hytale Server Architecture Hytale palvelimen API on rakennettu vankka Java-pohjainen arkkitehtuuri, joka tuntuu tutulta kaikille, jotka ovat työskennelleet Minecraft palvelimen plugins. Kun Legacy Engine palaa, kehittäjillä on nyt pääsy kypsään, hyvin testattuun koodikantaan, joka asettaa modauksen esteettömyyden etusijalle yli platformin monimutkaisuuden. Palvelimen sydämessä on com.hypixel.hytale.server.core -paketti, joka tarjoaa perustan kaikille palvelinsivutoiminnoille. Tähän kuuluvat pelaajien hallinta, maailman käsittely, tapahtumien lähettäminen ja komentojen käsittely. Player-yhteystapahtumat: Liity ja jätä Yksi yleisimmistä vaatimuksista tahansa palvelimen plugin vastaa pelaajia liittyvät tai lähtevät. Hytale API tarjoaa kaksi olennaista tapahtumaa tätä tarkoitusta varten. PlayerConnectEvent Saattu, kun pelaaja on onnistuneesti yhteydessä palvelimeen, tämä tapahtuma antaa sinulle pääsyn soittimen viiteen ennen kuin he kokonaan kutevat maailmaan. Tärkeimmät ominaisuudet ovat: playerRef - PlayerRef instanssi sisältää UUID:n, käyttäjätunnuksen ja verkkotiedot player - Pelaajayhteisö, joka edustaa heitä maailmassa world - Maailman instanssi he liittyvät holder - Yhteisö tallentaa haltijalle osan PlayerConnect Event is not cancellable . Jos sinun täytyy estää pelaajaa liittymästä, sinun pitäisi käsitellä tätä todentamistasolla sen sijaan. eventyRekistery.register(PlayerConnectEvent::class.java) { tapahtuma -> val soitin = event.playerRef logger.info("Player connected: ${player.username}") / Lähetä tervetuliaisviesti soitin.sendMessage(Message.raw("Tervetuloa palvelimelle!") } PlayerDisconneventEvent Triggered kun pelaaja lähtee palvelimelta, tähän tapahtumaan sisältyy tärkeä asiayhteys, joka koskee why ne irrotettiin: playerRef - Poistuvan pelaajan viite disconnectReason - Enum osoittaa aikakatkaisua, potkua, lopettamista tai palvelimen sulkemista Tämä tapahtuma ei myöskään ole peruttavissa, koska yhteys on jo katkaistu verkon tasolla. Viestiluokka: Rikas tekstimuotoilu Server-omistajat, jotka haluavat luoda kiillotettuja chat-kokemuksia, viettävät paljon aikaa Viestikurssilla. Se sijaitsee ydinviestipaketti, se tarjoaa sujuvan API rakentaa muotoiltu teksti. Perusviestien luominen // Yksinkertainen tekstiviesti Val msg = Viesti.raw("Hei, maailma!") / joissa on värimuotoilu val styled = Message.raw("important!") .väri("punainen") .bold(tosi) .italic(false) Monoavaruus(tosi) Parametrin korvaus Käytä dynaamisen sisällön parametrin paikkoja: Tervetuloa, {nimi}! Sinulla on kolikoita.) .param("name," soitin.username) .param("kolikot," soitinData.coinBalance.toString() Klikkaavat linkit Tiedot voivat sisältää klikkaavia hyperlinkkejä: val linked = Viesti.raw("Klikkaa tästä vierailla sivuillamme") .link("https://example.com") Tapahtumarekisterikaaviot Hytale-tapahtumajärjestelmä tukee sekä synkronisen että asynkronisen tapahtuman käsittelyä, mikä antaa kehittäjille joustavuutta niiden suorituskykyvaatimusten perusteella. Synkroninen Rekisteröinti Tapahtumien, jotka vaativat välitöntä käsittelyä palvelimella: eventRekisteröidy.rekisteri(PlayerInteractEvent: class.jaava) { tapahtuma -> jos (tapahtuma) Tyyppi == ActionType.RIGHT_CLICK) { / Käsittele vuorovaikutusta event.setCancelled(true) } } Asynkroninen Rekisteröinti Tapahtumat, jotka voidaan käsitellä päälangasta (kuten chat maltillinen): eventyRekisteröidyAsync(PlayerChatTapahtuma: class.java) { future -> Tulevaisuus. sittenApply { event -> / Suorita async chat suodatus jos (sisältääBannedWords(event.content)) { event.setCancelled(true) } tapahtuma } } Yhteinen Tapahtuman viitetaulukko Tässä on pikaviittaus yleisimmin käytettyihin tapahtumiin palvelimen kehittämisessä: tapahtuman nimi t>t>Peruttavissa t> Avainominaisuudet PlayerConnectEvent Ei playerRef, soitin, maailma, haltija PlayerDisconnectEvent Ei playerRef, irrota yhteys Reason PlayerChatEvent Kyllä (Async) lähettäjä, tavoitteet, sisältö, formateria PlayerInteractEvent Kylläsoitin, toiminta Tyyppi, kohtaHand, kohdeLuokka, kohdeEntity PlayerKuolematapahtuma Ei soitin PlayerRespawnEvent Ei soitin BreakBlockEvent Kylläite InHand, objectBlock, blockType < tr > < td > PlaceBlockEvent Kyllä iteSisällä, kohteessaKello, kierto DamageBlockEvent Kylläite InHand, objectBlock, currentDamage, vaurio DropItemEvent Kylläite, sijainti CraftRecipeEvent Kyllä craftedRecipe, määrä Rakennuksen omat komennot Komentojärjestelmän avulla voit rekisteröidä slash-komennot, jotka pelaajat voivat suorittaa chatissa. Perusjohdon täytäntöönpano luokka MyCommand: komento { ohitushauska getName(): Merkkijono = "Mycommand" ohita hauska suoritus(lähettäjä: CommandSender, args: Array) { sender.sendMessage(Message.raw("Hei minun mukautettu komento!")) } } / / Rekisteröidy liitännäisen asetusvaiheessa komentoRekisteröityCommand(MyCommand()) Komentopäällikkö Voit myös ohjelmallisesti suorittaa komentoja: val commandManager = CommandManager.get() komentoManager.handleCommand(lähettäjä, "aikapäivä") Liitännäinen Elinkaari ja rakenne Jokainen Hytale-palvelinliitännäinen laajentaa JavaPlugin-perusluokkaa, joka tarjoaa olennaiset rekisterit ja elinkaarikoukkuja. Liitännän elinkaaren vaiheet Rakennus - Liitännäisen luokka instantiaatio PreLoad - Async- alustus ennen palvelimen alkua Setup - Rekisteröi komennot Start - Palvelin on valmis hyväksymään pelaajat Shutdown - Siivous ennen kuin palvelin pysähtyy Avainliitännäisen ominaisuudet // Saatavilla plugin luokassa logger: HytaleLogger // Kirjautumiskyky LiitännäinenManifest? / Liitännäisen metatiedot manifestitiedostosta Tapahtumarekisteri: Tapahtumarekisteri // Rekisteröi tapahtumakuulijat komentoRekisteröinti: komentorekisteri // Rekisterin komennot tiedot Kansio: Polku // Liitännäisen tallennuspaikka taskRegistry: TaskRegistry // Aikataulullinen tehtävänhallinta Konfiguraatioapulainen Liitännäiset voivat helposti ladata JSON-asetustiedostoja: // Käytät oletusta config.json Val config: Asetukset = Config(MyConfigClass.CODEC) // Oman tiedostonimen käyttäminen val config: Config = "custom-name.json," MyConfigClass.CODEC) Toiminta pelaajien kanssa PlayerRef-luokka on ensisijainen käyttöliittymä, jonka avulla voit toimia vuorovaikutuksessa toisiinsa liitettyjen pelaajien kanssa. Pelaajan henkilöllisyys ja sijainti val soitin: PlayerRef = event.playerRef // Henkilöllisyys val uud: UUID = soitin.uuid val nimi: String = soitin.username val language: String = soitin.language // Sijainti val transform: Transform = soitin.transform val worldUud: UUID = soitin.worldUud Val headRotation: Vector3f = pelaaja.headRotation Player Entity Access Syvempiä vuorovaikutussuhteita, kuten varastonhallintaa, varten Player-yhteisöön: val soitinEntity: Player = player.entity // Inventointitoimet val inventory: Inventory = soitinEntity. inventory PelaajaEntity.send Inventory() // Käyttöliittymäpäälliköt val hotbar = pelaajaEntity.hotbarManager val windows = soitinEntity.windowManager val pages = soitinEntity.pageManager val hud = pelaajaEntity.hudManager / / Käyttöluvat val canBuild: Boolean = soitinEntity.hasPermission("server.build") Maailman ja maailmankaikkeuden hallinta Universe singleton tarjoaa pääsyn kaikkiin maailmoihin ja niihin yhteydessä oleviin pelaajiin. val universumi = universumi.get() / Pelaajien pääsy val allPlayers: List = universe.players val soitin Lukumäärä: Int = universumi.playerCount val specificPlayer: PlayerRef? = universe.getPlayer(uuid) / / Maailmanlaajuinen pääsy Val maailmat: Kartta = universumi.maailmat val default Maailma: maailma? = maailmankaikkeus.oletusmaailma val specific Maailma: Maailma? = universumi.getWorld("Minun-world") // Maailmanhallinta val newWorld: CompletableFuture = universumi.addWorld ["uusi maailma") val ladattu: Completable Tulevaisuuden = universumi.loadWorld("olemassa oleva maailma") Luokan turvallisuusvaroitus Yhdistyneen pääsyn on tapahduttava maailmanlaajuisesti. Kääri toiminnot aina suorituslohkoon: world. execute { / Turvallinen pääsy komponenttiin val entities = world.getEntities() } Seuraavat askeleet palvelinkehittäjille Tällä API-viittauksella säätiönäsi olet valmis aloittamaan Hytale-palvelimen pluginsin rakentamisen. Seuraavan tutkimuksen keskeiset resurssit: Entiteettikomponenttijärjestelmä (ECS) edistyneen yhteisön manipuloimiseksi Rakennetut moduulit, kuten NPC:t, portaalit ja Quest-järjestelmät Pelikäyttäytymisen visuaalinen komentojärjestelmä Pakettien mukautetun käsittelyn verkkoprotokolla Muista, että kun Hytale siirtyy varhaisen pääsyn kautta, API voi kehittyä. Pysy yhteydessä yhteisöön ja virallisiin asiakirjoihin sen kehittyessä.