Hytale Sunucu API Referansi: Olaylar, Mesajlar ve Eklenti Gelistirme Rehberi

By HytaleCharts Team Category: technical 6 min read

Kapsamli API referansimizla Hytale sunucu gelistirmede uzmanlasin. PlayerConnectEvent, PlayerDisconnectEvent, sohbet bicimlendirme icin Message sinifi, komut kaydi ve Legacy Engine'in Java tabanli mimarisini kullanarak ilk eklentinizi olusturmayi ogrenin.

Hytale Sunucu Mimarisini Anlamak Hytale sunucu API'si, Minecraft sunucu eklentileriyle calismis herkesin asina olacagi saglam bir Java tabanli mimari uzerine insa edilmistir. Legacy Engine'e geri donusle birlikte, gelistiriciler artik platformlar arasi karmasiklik yerine mod gelistirme erisilebilirligini on plana koyan olgun, iyi test edilmis bir kod tabanina erisebilmektedir. Sunucunun merkezinde, tum sunucu tarafli islemler icin temel saglayan com.hypixel.hytale.server.core paketi bulunur. Bu, oyuncu yonetimi, dunya isleme, olay dagitimi ve komut islemesini icerir. Oyuncu Baglanti Olaylari: Giris ve Cikis Isleme Herhangi bir sunucu eklentisi icin en yaygin gereksinimlerden biri, oyuncularin katilmasina veya ayrilmasina yanit vermektir. Hytale API bu amacla iki temel olay saglar. PlayerConnectEvent Bir oyuncu sunucuya basariyla baglandiginda tetiklenen bu olay, oyuncu dunyaya tamamen dogmadan once oyuncu referansina erisim saglar. Temel ozellikler sunlardir: playerRef - UUID, kullanici adi ve ag bilgilerini iceren PlayerRef ornegi player - Oyuncuyu dunyada temsil edecek Player varligi world - Katildiklari World ornegi holder - Bilesen erisimi icin varlik deposu tutucu Diger bazi olaylarin aksine, PlayerConnectEvent iptal edilemez. Bir oyuncunun katilmasini engellemeniz gerekiyorsa, bunu kimlik dogrulama katmaninda ele almalisiniz. 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 Bir oyuncu sunucudan ayrildiginda tetiklenen bu olay, neden baglantisinin kesildigine dair onemli baglam icerir: playerRef - Ayrilan oyuncunun referansi disconnectReason - Zaman asimi, atilma, cikis veya sunucu kapanmasini gosteren enum Bu olay da iptal edilemez cunku baglanti kesintisi ag seviyesinde zaten gerceklesmistir. Message Sinifi: Zengin Metin Bicimlendirme Cilali sohbet deneyimleri olusturmak isteyen sunucu sahipleri, Message sinifiyla onemli zaman gecirecektir. Cekirdek mesajlasma paketinde bulunan bu sinif, bicimlendirilmis metin olusturmak icin akici bir API saglar. Temel Mesaj Olusturma // 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) Parametre Degistirme Dinamik icerik icin parametre yer tutucularini kullanin: val welcome = Message.raw("Welcome, {name}! You have {coins} coins.") .param("name", player.username) .param("coins", playerData.coinBalance.toString()) Tiklanabilir Baglantilar Mesajlar tiklanabilir koprular icerebilir: val linked = Message.raw("Click here to visit our website") .link("https://example.com") Olay Kayit Kaliplari Hytale olay sistemi hem senkron hem de asenkron olay islemesini destekleyerek, gelistiricilere performans gereksinimlerine gore esneklik saglar. Senkron Kayit Sunucu is parcaciginda aninda islenmesi gereken olaylar icin: eventRegistry.register(PlayerInteractEvent::class.java) { event -> if (event.actionType == ActionType.RIGHT_CLICK) { // Process the interaction event.setCancelled(true) } } Asenkron Kayit Ana is parcacigi disinda islenebilecek olaylar icin (sohbet moderasyonu gibi): eventRegistry.registerAsync(PlayerChatEvent::class.java) { future -> future.thenApply { event -> // Perform async chat filtering if (containsBannedWords(event.content)) { event.setCancelled(true) } event } } Yaygin Olay Referans Tablosu Sunucu gelistirmede en sik kullanilan olaylar icin hizli referans: Olay AdiIptal EdilebilirTemel Ozellikler PlayerConnectEventHayirplayerRef, player, world, holder PlayerDisconnectEventHayirplayerRef, disconnectReason PlayerChatEventEvet (Asenkron)sender, targets, content, formatter PlayerInteractEventEvetplayer, actionType, itemInHand, targetBlock, targetEntity PlayerDeathEventHayirplayer PlayerRespawnEventHayirplayer BreakBlockEventEvetitemInHand, targetBlock, blockType PlaceBlockEventEvetitemInHand, targetBlock, rotation DamageBlockEventEvetitemInHand, targetBlock, currentDamage, damage DropItemEventEvetitem, location CraftRecipeEventEvetcraftedRecipe, quantity Ozel Komutlar Olusturma Komut sistemi, oyuncularin sohbette calistirabilecegi egik cizgi komutlarini kaydetmenize olanak tanir. Temel Komut Uygulamasi 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()) CommandManager Kullanimi Komutlari programatik olarak da calistirabilirsiniz: val commandManager = CommandManager.get() commandManager.handleCommand(sender, "time day") Eklenti Yasam Dongusu ve Yapisi Her Hytale sunucu eklentisi, temel kayit defterleri ve yasam dongusu kancalari saglayan JavaPlugin temel sinifini genisletir. Eklenti Yasam Dongusu Asamalari Construction - Eklenti sinifi ornekleme PreLoad - Sunucu baslamadan once asenkron baslatma Setup - Bilesenleri, olaylari ve komutlari kaydetme Start - Sunucu oyunculari kabul etmeye hazir Shutdown - Sunucu durmadan once temizlik Temel Eklenti Ozellikleri // 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 Yapilandirma Yardimcisi Eklentiler JSON yapilandirma dosyalarini kolayca yukleyebilir: // Using default config.json val config: Config<MyConfigClass> = withConfig(MyConfigClass.CODEC) // Using custom filename val config: Config<MyConfigClass> = withConfig("custom-name.json", MyConfigClass.CODEC) Oyuncularla Calisma PlayerRef sinifi, bagli oyuncularla etkilesim icin birincil arayuzunuzdur. Oyuncu Kimligi ve Konumu 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 Oyuncu Varligi Erisimi Envanter yonetimi gibi daha derin etkilesimler icin Player varligina erisin: 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") Dunya ve Evren Yonetimi Universe singleton'i tum dunyelara ve bagli oyunculara erisim saglar. 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") Is Parcacigi Guvenligi Uyarisi Bilesen erisimi dunya is parcaciginda gerceklesmelidir. Islemleri her zaman execute bloguna sarin: world.execute { // Safe component access here val entities = world.getEntities() } Sunucu Gelistiricileri Icin Sonraki Adimlar Bu API referansini temel alarak, Hytale sunucu eklentileri olusturmaya hazirsiniz. Kesfedilecek temel kaynaklar: Gelismis varlik manipulasyonu icin Entity Component System (ECS) NPC'ler, Portallar ve Gorev sistemleri gibi yerlesik moduller Oyun davranislari icin gorsel betikleme sistemi Ozel paket isleme icin ag protokolu Hytale erken erisim surecinde ilerledikce API'nin gelisebilecegini unutmayin. Toplulukla baglantida kalin ve resmi dokumantasyonu gelistikce takip edin.