Hytale Server API referanse: Hendelser, Meldinger og Plugin Development Guide

Etter :navn Kategori: :navn : minutter min les

Master Hytale serverutvikling med vår omfattende API referanse. Lær om PlayerConnect Event, PlayerDisconnect Event, Meldingsklassen for chatformatering, kommandoregistrering og å bygge ditt første plugin ved hjelp av Legacy Motors Java-baserte arkitektur.

Forstå Hytale Server Architecture Hytale server API er bygget på en robust Java-basert arkitektur som vil føle seg kjent for alle som har jobbet med Minecraft server plugins. Med retur til Legacy Engine har utviklere nå tilgang til en moden, godt testet kodebase som prioriterer modifisering av tilgjengelighet over tverrplattform kompleksitet. I hjertet av serveren sitter com.hypixel.hytale.server.core pakken, som gir grunnlaget for alle server-side operasjoner. Dette inkluderer spillerhåndtering, verdenshåndtering, arrangementssending og kommandobehandling. Player-tilkoblingsarrangementer: Håndtering av bli med og forlat Et av de vanligste kravene til alle server-plugin er å svare på spillere som slutter eller forlater. Hytale API gir to viktige hendelser til dette formålet. PlayerConnectEvent Fired når en spiller med suksess kobler til serveren, gir denne hendelsen deg tilgang til spillerens referanse før de fullt ut gyter inn i verden. Nøkkelegenskaper inkluderer: playerRef - SpillerRef-instansen som inneholder UUID, brukernavn og nettverksinformasjon spiller - Spillerenheten som vil representere dem i verden verden - Verdensinstansen de er sammen med holder - Entiteten lagrer innehaver for komponenttilgang I likhet med andre hendelser, PlayerConnect Hendelsen er ikke kancellerbar. Hvis du må hindre en spiller i å bli med, bør du håndtere dette på autentiseringslaget i stedet. eventRegistry.register(PlayerConnectEvent::class.java) { event -> val spiller = event.playerRef logger.info("Player tilkoblet: ${player.username}") // Send velkomstmelding player.sendMessage(Message.raw(" Velkommen til serveren!")) } PlayerConnectEvent Triggeret når en spiller forlater serveren, denne hendelsen inneholder viktig kontekst om why De frakoblet: playerRef - Den avgående spillerens referanse forbindReason - Enum indikerer tidsavbrudd, kick, avslutt eller serveravslutting Denne hendelsen er også ikke-kancellerbar siden frakoblingen allerede har skjedd på nettverksnivå. Meldingsklassen: Rik tekstformatering Server eiere som ønsker å skape polert chat opplevelser vil tilbringe betydelig tid med Meldingsklassen. Ligger i kjernemeldingspakken, gir den et flytende API for å bygge formatert tekst. Basisk melding opprettelse / Enkel tekstmelding Val msg = Melding.raw(" Hei, verden!") // Med fargeformatering val styled = Melding.raw(" Viktig!") .color("rød") .bold(true) .italisk(falsk) .monospace(true) Parametersubstitusjon For dynamisk innhold, bruk parameter plassholdere: val velkomst = Melding.raw(" Velkommen, {name}! Du har {coins} mynter .") .param("navn", player.username) .param("coins", playerData.coinBalance.toString()) Klikbare lenker Meldinger kan inneholde klikkbare hyperlenker: val linked = Melding.raw(-Klikk her for å besøke vår hjemmeside") .link("https://example.com") Event Registreringsmønster Hytale hendelsessystemet støtter både synkron og asynkron hendelseshåndtering, noe som gir utviklere fleksibilitet basert på deres ytelseskrav. Synkronisert Registrering For hendelser som trenger umiddelbar behandling på servertråden: eventregistry.register(PlayerInteractEvent::class.java) { event -> hvis (event.action Type == ActionType.RIGHT_CLICK) { // Prosesser interaksjonen event.set Avbryt( true) } } Asynkron Registrering For hendelser som kan behandles av hovedtråden (som chat-moderasjon): eventRegistry.registerAsync(PlayerChathevent::class.java) { future -> Fremtiden. Bruk deretter { hendelse -> // Utfør async chat filtrering dersom (inneholderBannedWords(event.content)) { event.set Avbryt( true) } hendelse } } Common Event referansetabell Her er en rask referanse til de mest brukte hendelsene i serverutviklingen: Event navn Avbrytelig Nøkkelegenskaper PlayerConnectEvent IngenplayerRef, spiller, verden, holder PlayerConnectEvent IngenplayerRef, frakoblingReason PlayerChatEventJa (Async)sender, mål, innhold, materiale PlayerInteractEventJaspiller, handling Type, elementInHand, målBlock, målEntity PlayerDeathEvent Neispiller PlayerRessawnEvent Neispiller BreakBlockEventJaitem InHand, targetBlock, blockType PlaceBlockEventJaitemInHand, goalBlock, rotasjon DamageBlockEventJaitem InHand, goalBlock, currentDamage, skade DropItemEventJaitem, plassering> CraftRecipeEvent JacreatedRecipe, mengde Bygge egendefinerte kommandoer Kommandosystemet lar deg registrere skråstrekkommandoer som spillere kan kjøre i chatten. Basisk kommando implementasjon klasse MyCommand : Kommando { Overstyr moro getName(): String = " minkommando" overstyr morsom kjøring(sender: CommandSender, args: Array) { Sender.sendMessage(Message.raw("Hello fra min egendefinerte kommando!")) } } // Registrer deg i innstillingsfasen til plugin commandRegistry.registerCommand(MyCommand()) Bruke kommandomanager Du kan også programmere kommandoer: val commandManager = CommandManager.get() commandManager.handleCommand(sender, "tidsdag") Plugin livssyklus og struktur Every Hytale server plugin utvider JavaPlugin-baseklassen, som gir viktige registre og livssyklus kroker. Plugin livssyklusfaser Construction - Plugin klasse øyeblikkelig Preload - Async initialisering før serveren starter Setup - Registrer komponenter, hendelser og kommandoer Start - Serveren er klar til å akseptere spillere Slå av - Opprydding før serveren stopper Key-tilleggsegenskaper / Tilgjengelig i din plugin klasse logger: HytaleLogger // Loggeevne manifest: PluginManifest? // Plugin metadata fra manifestfil EventRegistry: EventRegistry // Registrer hendelseslyttere commandRegistry: CommandRegistry // Registrer kommandoer Data Katalog: Sti // Plugin- lagringssted oppgaveRegistry: TaskRegistry // Planlagt oppgavehåndtering Configuration Helper Plugins kan enkelt laste JSON konfigurasjonsfiler: / Bruker standard oppsett.json valgoppsett: Config = medConfig(MyConfigClass.CODEC) // Bruke egendefinert filnavn Val-oppsett: Konfigurasjon = withConfig("custom-name.json", MyConfigClass.CODEC) Arbeide med spillere PlayerRef-klassen er ditt primære grensesnitt for samspill med tilkoblede spillere. Spilleridentitet og plassering val spiller: PlayerRef = event.playerRef // Identifikasjon val uuid: UUID = player.uuid Valnavn: String = player.username valspråk: String = player.language // Posisjon Val transform: Transform = player.transform val worldUuid: UUID = player.worldUuid Val headRotation: Vector3f = player.headRotation Spiller Entity Access For dypere interaksjoner som inventarhåndtering, kan du få tilgang til spillerenheten: val playerEntity: Player = player.entity // Oppfinnelse val inventar: Inventory = playerEntity.inventory playerEntity.sendInventory() // UI- ledere Val hotbar = playerEntity.hotbarManager val vinduer = playerEntity.windowManager Val sider = playerEntity.pageManager Val hud = playerEntity.hudManager // Tillatelser Val kan bygge: Bolsk = playerEntity.hasPermission("server.build") World and Universe Management Universet singleton gir tilgang til alle verdener og tilkoblede spillere. valunivers = Universe.get() // Spillertilgang val allPlayers: List = universe.players Val spiller Tal: Int = univers.playerCount Val spesifikkPlayer: PlayerRef? = universe.getPlayer(uuid) // Verdenstilgang Valverdener: Kart = universum.verdener val standard Verden: World? = univers.defaultWorld Val spesifikt Verden: Verden? = universum.getWorld (" min verden") // World Management Val newWorld: KompletableFuture = universe.addWorld("ny verden") Val lastet: Komplettbar Future = universe.loadWorld(" eksisterende-verden") Trå sikkerhetsadvarsel Komponert tilgang må skje på verdenstråden. Alltid wrap operasjoner i kjøringsblokken: verden.utløp { // Sikker tilgang til komponenten her val enheter = world.getEntities() } Neste trinn for serverutviklere Med denne API-referansen som ditt fundament er du klar til å begynne å bygge Hytale-servertillegg. Nøkkelressurser for å utforske neste: Entitetskomponentsystemet (ECS) for avansert enhetsmanipulering Built-in-moduler som NPC-er, portaler og Quest-systemer Det visuelle skriptsystemet for spilladferd Nettverksprotokoll for egendefinert pakkehåndtering Husk at når Hytale beveger seg gjennom Early Access, kan API utvikle seg. Hold kontakten med fellesskapet og offisiell dokumentasjon etter hvert som den utvikler seg.