Hytale Server API Referens: Evenemang, Meddelanden och Plugin Development Guide

FrånHytaleCharts Team Kategori: Namn minuter min läst

Master Hytale serverutveckling med vår omfattande API-referens. Lär dig om PlayerConnect Event, PlayerDisconnect Event, Message-klassen för chattformgivning, kommandot registrering och bygga din första plugin med hjälp av Legacy Engine Java-baserade arkitektur.

Förstå Hytale Server Architecture Hytale server API är byggd på en robust Java-baserad arkitektur som kommer att känna sig bekant för alla som har arbetat med Minecraft server plugins. Med återkomsten till Legacy Engine har utvecklare nu tillgång till en mogen, vältestad kodbas som prioriterar modding tillgänglighet över plattformskomplexitet. I hjärtat av servern sitter com.hypixel.hytale.server.core-paketet, vilket ger grunden för alla server-side-operationer. Detta inkluderar spelarhantering, världshantering, händelsesändning och kommandohantering. Player Connection Events: Handling Join and Leave En av de vanligaste kraven för någon serverplugin svarar på spelare som går med eller lämnar. Hytale API ger två viktiga händelser för detta ändamål. PlayerConnectEvent Fylld när en spelare framgångsrikt ansluter till servern, ger den här händelsen dig tillgång till spelarens referens innan de helt spawn in i världen. Viktiga egenskaper inkluderar: playerRef - PlayerRef-instansen som innehåller UUID, användarnamn och nätverksinformation player - Spelarenheten som representerar dem i världen world - Världsinstansen de ansluter sig till holder - Företagsinnehavaren för komponentåtkomst Till skillnad från andra händelser PlayerConnect Event är inte inställbart . Om du behöver förhindra att en spelare går med, bör du hantera detta på autentiseringsskiktet istället. eventRegistry.register(PlayerConnectEvent::class.java) {Händelse -> Valspelare = event.playerRef logger.info ("Player ansluten: ${player.username}") //// Skicka välkomstmeddelande Player.sendMessage (Message.raw ("Välkommen till servern!") ≤/code> PlayerDisconnectEvent Triggered när en spelare lämnar servern innehåller denna händelse ett viktigt sammanhang om varför De avbröt: playerRef - Den avgående spelarens referens disconnectReason - Enum som anger timeout, kick, quit eller serverstängning Denna händelse är också icke-avbrytbar eftersom avkopplingen redan har inträffat på nätverksnivå. The Message Class: Rich Text Formatting Serverägare som vill skapa polerade chattupplevelser kommer att spendera betydande tid med meddelandeklassen. Beläget i kärnmeddelandepaketet ger det ett flytande API för att bygga formaterad text. Basic Message Creation /// Enkelt textmeddelande Val msg = Message.raw("Hello, world!") //// Med färg formatering Val stiled = Message.raw ("Viktigt!") .color("röd") .bold(sann) .italisk (falsk) .monospace(sann) Parametersubstitution För dynamiskt innehåll, använd parameterplatshållare: val Welcome = Message.raw("Välkommen, {namn}! Du har mynt.") .param("namn", player.username) .param("mynt", playerData.coinBalance.toString() Klickbara länkar Meddelanden kan innehålla klickbara hyperlänkar: val linked = Message.raw("Klicka här för att besöka vår hemsida") .link("https://example.com") Event Registreringsmönster Hytale-händelsesystemet stöder både synkron och asynkron händelsehantering, vilket ger utvecklarna flexibilitet baserat på deras prestandakrav. Synkron Registrering För händelser som behöver omedelbar bearbetning på servertråden: eventRegistry.register(PlayerInteractEvent::class.java) {Händelse -> Om (event.action) Typ == ActionType.RIGHT_CLICK) //// Processa interaktionen Event.setCancelled (sann) } ≤/code> Asynkron Registrering För händelser som kan bearbetas av huvudtråden (som chatt moderering): eventRegistry.registerAsync(PlayerChatEvent::class.java) {Framtid -> Framtiden. SedanApply { Event -> //// Utför async chat filtrering om (innehållerBannedWords(event.content)) { Event.setCancelled (sann) } händelse } ≤/code> Common Event Reference Table Här är en snabb referens för de vanligaste händelserna i serverutveckling: Event NameCancellable Key Properties PlayerConnectEvent NoplayerRef, player, world, holder PlayerDisconnectEvent NoplayerRef, disconnectReason PlayerChatEventYes (Async)sender, targets, content, formatter PlayerInteractEventYesplayer, action Typ, itemInHand, targetBlock, targetEntity PlayerDeathEvent Noplayer PlayerRespawnEvent Noplayer BreakBlockEventYesitem InHand, targetBlock, blockType PlaceBlockEventYesitemInHand, targetBlock, rotation DamageBlockEventYesitem InHand, targetBlock, currentDamage, skade DropItemEventYesitem, location CraftRecipeEvent JacraftedRecipe, kvantitet Building Custom Commands Kommandosystemet låter dig registrera slashkommandon som spelare kan utföra i chatt. Basic Command Implementation class MyCommand: Command override fun getName(): String = "mycommand" åsidosätta kul execute(sender: CommandSender, args: Array) Sändare.sendMessage (Message.raw ("Hej från mitt anpassade kommando!") } } // Registrera dig i plugins installationsfas kommandotRegistry.registerCommand(MyCommand() Använda kommandotManager Du kan också programmatiskt utföra kommandon: val commandManager = CommandManager.get() kommandoManager.handleCommand(sender, "time day") Plugin Lifecycle and Structure Varje Hytale-serverplugin sträcker sig JavaPlugin-basklassen, vilket ger viktiga register och livscykelkrokar. Plugin Lifecycle Phases Construction Plugin klass instantiation PreLoad - Async initialisering innan servern startar Setup - Registrera komponenter, händelser och kommandon Start - Server är redo att acceptera spelare Shutdown - Rengöring innan servern stannar Key Plugin Properties /// Finns i din plugin-klass logger: HytaleLogger // Logging kapacitet manifest: PluginManifest? //// Plugin metadata från manifestfil EventRegistry: EventRegistry // Registrera händelse lyssnare Registry: CommandRegistry // Registrera kommandon Datadata data Directory: Path // Plugin lagringsplats uppgiftRegistry: TaskRegistry // Schemalagd uppgiftshantering Konfigurationshjälpare Plugins kan enkelt ladda JSON-konfigurationsfiler: /// Använda standard config.json Val config: Config = withConfig (MyConfigClass.CODEC) // Använda anpassat filnamn Val config: Config = withConfig("custom-name.json", MyConfigClass.CODEC) Arbeta med spelare PlayerRef-klassen är ditt primära gränssnitt för att interagera med anslutna spelare. Player Identity and Location val player: PlayerRef = event.playerRef // Identitet Val uuid: UUID = player.uid Valnamn: String = player.username Valspråk: String = player.language //position Val transform: Transform = player.transform Val worldUuid: UUID = player.worldUuid Val headRotation: Vector3f = player.headRotation Player Entity Access För djupare interaktioner som lagerhantering, tillgång till spelarenheten: val playerEntity: Player = player.entity // Lagerverksamhet Val inventering: Inventory = playerEntity.inventory PlayerEntity.sendInventory() // UI-chefer Val hotbar = playerEntity.hotbarManager Val windows = playerEntity.windowManager Valsidor = playerEntity.pageManager Val hud = playerEntity.hudManager // Behörigheter Val canBuild: Boolean = playerEntity.hasPermission ("server.build") World and Universe Management Universum singleton ger tillgång till alla världar och anslutna spelare. val universum = Universe.get() //// Player Access Val allPlayers: List = Universum.players Valspelare Räkna: Int = universum.playerCount Val specifikPlayer: PlayerRef? = Universum.getPlayer(uid) // Världsåtkomst Valvärldar: Map = universe.worlds Val Default Världen: Världen? = Universum.defaultWorld Val specifika Världen: Världen? = Universum.getWorld ("min värld") // Världsledning Val newWorld: CompletableFuture = Universum.addWorld("new-world") Val laddad: Fullbordbar Future = Universum.loadWorld("existerande-värld") Thread Safety Warning Komponentåtkomst måste ske på världstråden. Alltid inslag i verkställande blocket: world.execute { //// Säker komponentåtkomst här Valentiteter = world.getEntities() ≤/code> Nästa steg för serverutvecklare Med denna API-referens som din grund är du redo att börja bygga Hytale-serverplugins. Viktiga resurser att utforska nästa: Entity Component System (ECS) för avancerad enhetsmanipulation Built-in moduler som NPCs, Portals och Quest system Det visuella skriptsystemet för spelbeteenden Nätprotokoll för anpassad pakethantering Kom ihåg att när Hytale rör sig genom tidig åtkomst kan API utvecklas. Håll kontakten med gemenskapen och den officiella dokumentationen när den utvecklas.