Hytale Server API Reference: Events, Messages kai Odigos Anaptyxis Plugins

By HytaleCharts Team Category: technical 6 min read

Kataktiste tin anaptyxi server Hytale me tin periliptiki anafora API mas. Mathete gia to PlayerConnectEvent, PlayerDisconnectEvent, tin klasi Message gia morfopoiisi synoilias, katagraphes entolon kai dimiourgias tou protou sas plugin chrisimopoiontas tin architektoniki Java tou Legacy Engine.

Katanoisi tis Architektonikis Server Hytale To API tou server Hytale einai chtismeno se mia isyri architektoniki vasismeni sti Java, pou tha einai oikeia se opoion echei doulepsei me plugins serverion Minecraft. Me tin epistrophi sto Legacy Engine, oi programmatistes echounn pleon prosvasi se mia orimi, kala dokimasmeni vasi kodika pou protereiopoiei tin prosvasimotita tou modding enanti tis poliplokotitas pollapon platformon. Stin kardia tou server vriskemati to paketo com.hypixel.hytale.server.core, pou parechei ti vasi gia oles tis leitourgies tou server. Afto perilamvanei ti diacheirisi paichton, tin epexergasia kosmon, tin apostoli gegononon kai tin epexergasia entolon. Gegonota Syndesis Paichton: Diacheirisi Eisodou kai Exodou Mia apo tis pio koines apaitiseis gia opoiodipote plugin server einai i antapokrasi stous paichtes pou syndeonentai i apochorroun. To API tou Hytale parechei dyo vasika gegonota gia afton ton skopo. PlayerConnectEvent Energopoieitai otan enas paiichtis syndeethai me epitychia ston server, afto to gegonos sas dinei prosvasi stin anafora tou paichti prin emfanistei pliros ston kosmo. Ta kyria charaktiristika perilamvanoun: playerRef - To stigmiotypo PlayerRef pou periechei UUID, onoma christi kai plirofories diktyou player - I ontotita Player pou tha tous ekprosopisei ston kosmo world - To stigmiotypo World sto opoio syndeonentai holder - O katochos apothikeusis ontotiton gia prosvasi se stoicheia Se antithesi me merika alla gegonota, to PlayerConnectEvent den einai akyrosimo. An chreiazetai na empodisetai enan paichti apo to na syndethei, prepei na to diacheiristeitai sto epipedo pistopoiisis. 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 Energopoieitai otan enas paiichtis fygei apo ton server, afto to gegonos periechei simantiko plaisio gia ton logo tis aposyndesis: playerRef - I anafora tou paichti pou fygei disconnectReason - Enum pou ypodeiknei timeout, kick, exodo i termatismo server Afto to gegonos den einai episis akyrosimo, dioti i aposyndesi echei idi symvei sto epipedo diktyou. I Klasi Message: Morfopoiisi Plousiou Keimenou Oi idiokites server pou theloune na dimiourgisoun kompes empiries synoilias tha perasoun simantiko chrono me tin klasi Message. Vriskemasti sto paketo pyrina minimakon, parechei ena reousto API gia tin kataskevi morfopoiimenou keimenou. Vasiki Dimiourgia Minimatos // 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) Antikatastasi Parametron Gia dynamiko periechomeno, chrisimopoiiste symvola kratisis thesis parametron: val welcome = Message.raw("Welcome, {name}! You have {coins} coins.") .param("name", player.username) .param("coins", playerData.coinBalance.toString()) Syndesmoi me Klik Ta minimata boroun na perilamvanoun ypersyndesmoous me klik: val linked = Message.raw("Click here to visit our website") .link("https://example.com") Protypa Katagrafis Gegononon To systima gegononon tou Hytale ypostirizei toso sygchroni oso kai asygchroni diacheirisi gegononon, dinontas stous programmatistes efkampsia analoga me tis apaitiseis apodosis. Sygchroni Katarafi Gia gegonota pou chreiazontai amesi epexergasia sto nimata tou server: eventRegistry.register(PlayerInteractEvent::class.java) { event -> if (event.actionType == ActionType.RIGHT_CLICK) { // Process the interaction event.setCancelled(true) } } Asygchroni Katagafi Gia gegonota pou boroun na epexergastoun ektos tou kyriou nimatos (opos i metriasi synoilias): eventRegistry.registerAsync(PlayerChatEvent::class.java) { future -> future.thenApply { event -> // Perform async chat filtering if (containsBannedWords(event.content)) { event.setCancelled(true) } event } } Pinakas Anaforas Koinon Gegononon Edo einai mia grigi anafora gia ta pio sychna chrisimopoioumena gegonota stin anaptyxi server: Onoma GegonotosAkyrosimoKyria Charaktiristika PlayerConnectEventOchiplayerRef, player, world, holder PlayerDisconnectEventOchiplayerRef, disconnectReason PlayerChatEventNai (Async)sender, targets, content, formatter PlayerInteractEventNaiplayer, actionType, itemInHand, targetBlock, targetEntity PlayerDeathEventOchiplayer PlayerRespawnEventOchiplayer BreakBlockEventNaiitemInHand, targetBlock, blockType PlaceBlockEventNaiitemInHand, targetBlock, rotation DamageBlockEventNaiitemInHand, targetBlock, currentDamage, damage DropItemEventNaiitem, location CraftRecipeEventNaicraftedRecipe, quantity Kataskevi Prosarmosmernon Entolon To systima entolon sas epetrepei na katachorisite entoles slash pou oi paichtes boroun na ektelesoun sto chat. Vasiki Ylopoiisi Entolis 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()) Chrisi tou CommandManager Boreite episis na ekteleite entoles programmatistika: val commandManager = CommandManager.get() commandManager.handleCommand(sender, "time day") Kyklos Zois kai Domi Plugin Kathe plugin server Hytale epekteinei tin vasiki klasi JavaPlugin, pou parechei vasika mitroa kai hooks kyklou zois. Faseis Kyklou Zois Plugin Construction - Dimiourgia stigmiotypou klasis plugin PreLoad - Asygchroni archikopiiisi prin tin ekkiniisi tou server Setup - Katagrati stoicheion, gegononon kai entolon Start - O server einai etoimos na dechrei paichtes Shutdown - Katharismo prin ton termatismo tou server Kyria Charaktiristika Plugin // 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 Voithos Diametrisis Ta plugins boroun efkola na fortosoun archeia diametrisis 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) Ergasia me Paichtes I klasi PlayerRef einai to kyrio sas interface gia alliliepidrasi me syndedememnous paichtes. Taftotita kai Thesi Paichti 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 Prosvasi stin Ontotita Paichti Gia vatyteres alliliepidrasis opos i diacheirisi apothekou, prostete stin ontotita 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") Diacheirisi Kosmon kai Sympantos To singleton Universe parechei prosvasi se olous tous kosmous kai syndedemernous paichtes. 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") Proeidopoiisi Asfalias Nimaton I prosvasi sta stoicheia prepei na ginnetai sto nima tou kosmou. Panta perivilete tis leitourgies sto block execute: world.execute { // Safe component access here val entities = world.getEntities() } Epomena Vimata gia Programmatistes Server Me aftin tin anafora API os vasi, eiste etoimoi na archisete na chtizete plugins server Hytale. Kyrioi poroi gia exerevnisi: To Entity Component System (ECS) gia proigmeni diacheirisi ontotiton Ensomaomtena modules opos NPCs, Portals kai systimata Quests To systima optikis scripting gia symperifores paichniidiou Protokollo diktyou gia diacheirisi prosarmosmernon paketonn Thymithite oti kathos to Hytale prohoraei meso tis proimis prosvasisis, to API boreri na exelichthei. Meinte syndedemernoi me tin koinotita kai tin episimi tekmiriosi kathos anaptysetai.