Hytale Server API Reference: Udalosti, Zpravy a Pruvodce vyvojem pluginu

By HytaleCharts Team Category: technical 6 min read

Zvladnete vyvoj serveru Hytale s nasi komplexni API referenci. Naucte se o PlayerConnectEvent, PlayerDisconnectEvent, tride Message pro formatovani chatu, registraci prikazu a tvorbe prvniho pluginu pomoci Java architektury Legacy Engine.

Pochopeni architektury serveru Hytale API serveru Hytale je postaveno na robustni architekture zalozene na Jave, ktera bude znama kazdemu, kdo pracoval s pluginy pro servery Minecraft. S navratem k Legacy Engine maji nyni vyvojari pristup ke zralemu, dobre otestovanemu kodovemu zakladu, ktery uprednostnuje pristupnost moddingu pred slozitosti multiplatformnich reseni. V srdci serveru lezi balicek com.hypixel.hytale.server.core, ktery poskytuje zaklad pro vsechny serverove operace. To zahrnuje spravu hracu, zpracovani svetu, dispatching udalosti a zpracovani prikazu. Udalosti pripojeni hracu: Zpracovani vstupu a odchodu Jednim z nejcastejsich pozadavku na jakykoli serverovy plugin je reagovani na pripojeni nebo odpojeni hracu. API Hytale pro tento ucel poskytuje dve zakladni udalosti. PlayerConnectEvent Vyvolana pri uspesnem pripojeni hrace k serveru, tato udalost vam da pristup k referenci hrace pred jeho uplnym spawnem do sveta. Klicove vlastnosti zahrnuji: playerRef - Instance PlayerRef obsahujici UUID, uzivatelske jmeno a sitove informace player - Entita Player, ktera bude hrace reprezentovat ve svete world - Instance World, ke ktere se pripojuji holder - Drzitel uloziste entit pro pristup ke komponentam Na rozdil od nekterych jinych udalosti, PlayerConnectEvent nelze zrusit. Pokud potrebujete zabranit hraci v pripojeni, meli byste to resit na urovni autentizace. eventRegistry.register(PlayerConnectEvent::class.java) { event -> val player = event.playerRef logger.info("Player connected: ${player.username}") // Send welcome message player.sendMessage(Message.raw("Welcome to the server!")) } PlayerDisconnectEvent Vyvolana pri odchodu hrace ze serveru, tato udalost obsahuje dulezity kontext o duvodu odpojeni: playerRef - Reference odchazejiciho hrace disconnectReason - Enum oznacujici timeout, kick, odchod nebo vypnuti serveru Tato udalost je take nezrusitelna, protoze odpojeni jiz nastalo na sitove urovni. Trida Message: Formatovani textu Vlastnici serveru, kteri chteji vytvorit kvalitni chatove prostredi, stravi znacny cas s tridou Message. Nachazi se v jadrovem balicku pro zpravy a poskytuje fluent API pro tvorbu formatovaneho textu. Zakladni tvorba zprav // Simple text message val msg = Message.raw("Hello, world!") // With color formatting val styled = Message.raw("Important!") .color("red") .bold(true) .italic(false) .monospace(true) Nahrazovani parametru Pro dynamicky obsah pouzijte zastupne symboly parametru: val welcome = Message.raw("Welcome, {name}! You have {coins} coins.") .param("name", player.username) .param("coins", playerData.coinBalance.toString()) Klikatelne odkazy Zpravy mohou obsahovat klikatelne hypertextove odkazy: val linked = Message.raw("Click here to visit our website") .link("https://example.com") Vzory registrace udalosti Udalostni system Hytale podporuje jak synchronni, tak asynchronni zpracovani udalosti, coz dava vyvojarum flexibilitu podle jejich pozadavku na vykon. Synchronni registrace Pro udalosti vyzadujici okamzite zpracovani na serverovem vlakne: eventRegistry.register(PlayerInteractEvent::class.java) { event -> if (event.actionType == ActionType.RIGHT_CLICK) { // Process the interaction event.setCancelled(true) } } Asynchronni registrace Pro udalosti, ktere lze zpracovat mimo hlavni vlakno (napr. moderace chatu): eventRegistry.registerAsync(PlayerChatEvent::class.java) { future -> future.thenApply { event -> // Perform async chat filtering if (containsBannedWords(event.content)) { event.setCancelled(true) } event } } Referencni tabulka beznych udalosti Rychla reference pro nejcasteji pouzivane udalosti pri vyvoji serveru: Nazev udalostiZrusitelnaKlicove vlastnosti PlayerConnectEventNeplayerRef, player, world, holder PlayerDisconnectEventNeplayerRef, disconnectReason PlayerChatEventAno (Async)sender, targets, content, formatter PlayerInteractEventAnoplayer, actionType, itemInHand, targetBlock, targetEntity PlayerDeathEventNeplayer PlayerRespawnEventNeplayer BreakBlockEventAnoitemInHand, targetBlock, blockType PlaceBlockEventAnoitemInHand, targetBlock, rotation DamageBlockEventAnoitemInHand, targetBlock, currentDamage, damage DropItemEventAnoitem, location CraftRecipeEventAnocraftedRecipe, quantity Tvorba vlastnich prikazu System prikazu vam umoznuje registrovat lomitko prikazy, ktere mohou hraci spoustet v chatu. Zakladni implementace prikazu class MyCommand : Command { override fun getName(): String = "mycommand" override fun execute(sender: CommandSender, args: Array<String>) { sender.sendMessage(Message.raw("Hello from my custom command!")) } } // Register in your plugin's setup phase commandRegistry.registerCommand(MyCommand()) Pouziti CommandManager Prikazy muzete take spoustet programove: val commandManager = CommandManager.get() commandManager.handleCommand(sender, "time day") Zivotni cyklus a struktura pluginu Kazdy serverovy plugin Hytale rozsiruji zakladni tridu JavaPlugin, ktera poskytuje zakladni registry a hooks zivotniho cyklu. Faze zivotniho cyklu pluginu Construction - Vytvoreni instance tridy pluginu PreLoad - Asynchronni inicializace pred startem serveru Setup - Registrace komponent, udalosti a prikazu Start - Server je pripraven prijimat hrace Shutdown - Uklid pred zastavenim serveru Klicove vlastnosti pluginu // Available in your plugin class logger: HytaleLogger // Logging capability manifest: PluginManifest? // Plugin metadata from manifest file eventRegistry: EventRegistry // Register event listeners commandRegistry: CommandRegistry // Register commands dataDirectory: Path // Plugin storage location taskRegistry: TaskRegistry // Scheduled task management Pomocnik pro konfiguraci Pluginy mohou snadno nacitat konfiguracni soubory JSON: // Using default config.json val config: Config<MyConfigClass> = withConfig(MyConfigClass.CODEC) // Using custom filename val config: Config<MyConfigClass> = withConfig("custom-name.json", MyConfigClass.CODEC) Prace s hraci Trida PlayerRef je vasim primarnim rozhranim pro interakci s pripojenymi hraci. Identita a poloha hrace val player: PlayerRef = event.playerRef // Identity val uuid: UUID = player.uuid val name: String = player.username val language: String = player.language // Position val transform: Transform = player.transform val worldUuid: UUID = player.worldUuid val headRotation: Vector3f = player.headRotation Pristup k entite hrace Pro hlubsi interakce, jako je sprava inventare, pristupte k entite Player: val playerEntity: Player = player.entity // Inventory operations val inventory: Inventory = playerEntity.inventory playerEntity.sendInventory() // UI managers val hotbar = playerEntity.hotbarManager val windows = playerEntity.windowManager val pages = playerEntity.pageManager val hud = playerEntity.hudManager // Permissions val canBuild: Boolean = playerEntity.hasPermission("server.build") Sprava svetu a vesmiru Singleton Universe poskytuje pristup ke vsem svetum a pripojenym hracum. val universe = Universe.get() // Player access val allPlayers: List<PlayerRef> = universe.players val playerCount: Int = universe.playerCount val specificPlayer: PlayerRef? = universe.getPlayer(uuid) // World access val worlds: Map<String, World> = universe.worlds val defaultWorld: World? = universe.defaultWorld val specificWorld: World? = universe.getWorld("my-world") // World management val newWorld: CompletableFuture<World> = universe.addWorld("new-world") val loaded: CompletableFuture<World> = universe.loadWorld("existing-world") Upozorneni na bezpecnost vlaken Pristup ke komponentam musi probihat na vlakne sveta. Vzdy zabalte operace do bloku execute: world.execute { // Safe component access here val entities = world.getEntities() } Dalsi kroky pro serverove vyvojare S touto API referenci jako zakladem jste pripraveni zacit tvorit pluginy pro servery Hytale. Klicove zdroje k prozkoumani: Entity Component System (ECS) pro pokrocilou manipulaci s entitami Vestavene moduly jako NPC, Portaly a systemy questu Vizualni skriptovaci system pro herni chovani Sitovy protokol pro zpracovani vlastnich paketu Pamatujte, ze s postupem Hytale pres Early Access se API muze vyvijet. Zustavejte ve spojeni s komunitou a sledujte oficialni dokumentaci.