Hytale Server API Referencia: Eventos, Mensajes y Guía de Desarrollo de Plugin

Por HytaleCharts Team Categoría: : nombre :minutos min leer

Master Hytale desarrollo del servidor con nuestra referencia integral de API. Aprender acerca de PlayerConnect Evento, PlayerDisconnect Evento, la clase Mensaje para el formato de chat, registro de comandos y la construcción de su primer plugin utilizando la arquitectura basada en Java del Legacy Engine.

> > > Identificado La API de servidor Hytale está construida en una arquitectura sólida basada en Java que se sentirá familiar a cualquiera que haya trabajado con plugins de servidor Minecraft. Con el regreso al Legacy Engine, los desarrolladores ahora tienen acceso a una base de código madura y bien comprobada que prioriza la accesibilidad de modding sobre la complejidad multiplataforma. Identificado En el corazón del servidor se encuentra el paquete > > - El titular de la tienda de la entidad para el acceso del componente ■/ul contacto A diferencia de otros eventos, PlayerConnect El evento es неннименниханте / нених. Si necesita evitar que un jugador se una, debe manejar esto en la capa de autenticación en su lugar. (PlayerConnectEvent::class.java) { evento - título val player = event.playerRef logger.info("Player connected: ${player.username}") // Enviar mensaje de bienvenida player.sendMessage(Message.raw("Bienvenido al servidor!") } buscado/código asignado ■h3 usuarioDesconectarEvento indicado/h3 título ■p Confeccionado cuando un jugador sale del servidor, este evento incluye un contexto importante sobre יem confidencialwhy identificado/em título se desconectaron: Identificado - La referencia del jugador que sale No. - Enum indicando tiempo de salida, patada, parada o servidor cerrado ■/ul contacto Identificado Este evento también no es posible, ya que la desconexión ya se ha producido a nivel de red. La clase del mensaje: Texto rico Formato realizado/h2 confianza Los propietarios que buscan crear experiencias de chat pulido pasarán tiempo significativo con la clase Mensaje. Situada en el paquete de mensajería básica, proporciona una API fluida para construir texto formateado. ■h3 contactoBasic Mensaje Creación Identificado pre-concepto Mensaje de texto sencillo val msg = Message.raw("Hola, mundo!") // Con formato de color val estilod = Message.raw("Importante!") .color("red") .bold(true) .italic(falso) .monospace(true) buscado/codificar instrucciones ■h3 título de sustitución del parámetro Para contenido dinámico, utilice marcadores de posición del parámetro: "Welcome, {name}! Tienes monedas. .param("nombre", player.username) .param("coins", playerData.coinBalance.toString()) > > > > Los mensajes pueden incluir hipervínculos clicables: "Haga clic aquí para visitar nuestro sitio web" .link("https://example.com") < > > > > > Identificado El sistema de eventos Hytale admite la manipulación de eventos sincronizados y asincrónicos, dando flexibilidad a los desarrolladores sobre la base de sus requisitos de rendimiento. ▪h3⁄2 Registro: Para eventos que necesitan procesamiento inmediato en el hilo del servidor: нелителинанногонициRegistry.register(PlayerInteractEvent::class.java) { evento - título si (acción. Tipo == Tipo de acción.RIGHT_CLICK) { // Procesar la interacción event.setCancelled(true) } } buscado/código asignado ■h3 ConfAsynchronous Registro: Identificado Para eventos que pueden ser procesados fuera del hilo principal (como moderación de chat): нелинаниханногинаних.registry.registerAsync(PlayerChatEvent::class.java) { future - título futuro. entoncesApply { evento - título // Realizar filtros de chat asinc si (contieneWords(event.content) {} event.setCancelled(true) } evento } } buscado/código asignado ▪h2 Cuadro de referencia del evento Identificado Aquí hay una referencia rápida para los eventos más utilizados en el desarrollo del servidor: ■table - No. < < > > > > > > > Propiedades claves obtenidas/t] ■/thead título Identificado > > > No se realizó/td fieltro seleccionadorRef, jugador, mundo, titular buscado/td titulado No se puede hacer nada. No se realizó / no se llevó a cabo fielplayerRef, desconexiónReason buscado/td titulado > > > > > > > > > > > > > > > , > , > < > > > > > > > > Tipo, elementoInHand, targetBlock, targetEntity > > > No se realizó / no se llevó a cabo No se realizó / td > > > No se realizó / no se llevó a cabo No se realizó / td < > > > > > > > > > InHand, targetBlock, blockType Registrado/td < > > > > > > > > > > > > InHand, targetBlock, rotación: > > < > > > > > > > > InHand, targetBlock, currentDamage, damage won/td indica/tr < > > > > > > > > > > > > > - No. Si fuere realizado/td nombrado(a) Identificado/tbody ■/table hh2 Construyendo Mandos Personalizados realizados/h2 título Identificado El sistema de comandos le permite registrar comandos slash que los jugadores pueden ejecutar en chat. > > > > Identificar el código relativo MyCommand : Comando { override diversión getName(): String = "mycommand" override fun ejecuta(sender: CommandSender, args: Array curvalt;String curvagt;) { sender.sendMessage(Message.raw("Hola desde mi comando personalizado!") } } // Registro en la fase de configuración de su plugin comandoRegistry.registerCommand(MyCommand())) ■h3 títuloUsando el Manager del Mando Identificado También puede ejecutar comandos programáticamente: () commandManager.handleCommand(sender, "time day") ■h2 títuloPlugin Lifecycle and Structure Cada plugin de servidor Hytale extiende la clase base JavaPlugin, que proporciona registros esenciales y ganchos de ciclo de vida. < > > > } Identificado - No. - instantánea de clase de enchufe: Iniciación Async antes de iniciar el servidor < > > > > Registro de componentes, eventos y comandos seleccionados/li confidencial El servidor está listo para aceptar jugadores seleccionados/li confiar - No. - Limpieza antes de las paradas del servidor Identificado/oltimo * 3 propiedades de plugin de clave* Identificado pre-concepto Disponible en tu clase de plugin logger: HytaleLogger // Capacidad de registro manifiesto: PluginManifest? // Metadatos Plugin de archivo manifiesto eventoRegistry: EventRegistry // Escuchadores de eventos registrados comandoRegistry: CommandRegistry // Registrar comandos datos Directorio: Camino // Ubicación de almacenamiento taskRegistry: TaskRegistry // Gestión de tareas programada ■h3 títuloConfiguración Ayudante יp]Plugins puede cargar fácilmente archivos de configuración JSON: Identificado pre-concepto Usando config.json predeterminado Val config: Configular;MyConfigClass limit; = withConfig(MyConfigClass.CODEC) // Utilizando nombre de archivo personalizado val config: Config reducidalt;MyConfigClass complicadogt; = withConfig("custom-name.json", MyConfigClass.CODEC)Seguido/codificado Trabajar con jugadores seleccionados/h2 título Identificado La clase PlayerRef es su interfaz principal para interactuar con los jugadores conectados. Identidad y localización de los jugadores ■pre instrucciones especificado clave de usuario: PlayerRef = event.playerRef // Identidad val uuid: UUID = player.uid val nombre: String = player.username val language: String = player.language // Posición Val transforma: Transform = jugador.transform val worldUuid: UUID = jugador.worldUuid cabezal de valRotación: Vector3f = jugador.headRotation seleccionado/code contactos < > > > > Identificado Para interacciones más profundas como la gestión de inventarios, acceda a la entidad Player: Intity: Player = player.entity / Operaciones de inventario val inventario: Inventario = jugadorIntity.inventory playerEntity.sendInventory() // Administradores de la UI val hotbar = jugadorIntity.hotbarManager val windows = jugadorIntity.windowManager val pages = playerEntity.pageManager val hud = jugadorEntity.hudManager // Permisos val canBuild: Boolean = jugadorEntity.hasPermission("server.build") ■h2 tituladoWorld and Universe Management Identificado El singleton Universe proporciona acceso a todos los mundos y jugadores conectados. * * * * // Acceso del jugador val allPlayers: List plagalt;PlayerRef comprimidogt; = universo.players val jugador Cuenta: Int = universo.playerCount Val specificPlayer: PlayerRef? = universo.getPlayer(uid) / Acceso mundial mundos val: Mapa plagado; cuerda, mundo entero; = universo. Val default Mundo: Mundo? = universo.defaultWorld Val específico Mundo: Mundo? = universo.getWorld("mi mundo") / Gestión mundial val newWorld: CompletableFuture pllt;World limit; = universo.addWorld("new-world") val cargado: Completable Futuro implicado; mundialmente; = universo.loadWorld("existing-world") < > > > > El acceso obligatorio debe ocurrir en el hilo del mundo. Envolver siempre las operaciones en el bloque de ejecución: Identificar el código apropiadoworld.execute {} // Acceso seguro a componentes aquí val entities = world.getEntities() } buscado/código asignado > > Siguientes pasos para desarrolladores de servidores Identificado Con esta referencia de API como su fundación, usted está listo para comenzar a construir plugins de servidor Hytale. Recursos clave para explorar el siguiente: Identificado El Sistema de Componente de Entidades (ECS) para la manipulación de entidad avanzada Módulos incorporados como sistemas NPC, Portales y Búsquedas ■li El sistema de scripting visual para los comportamientos del juego protocolo de red para la manipulación de paquetes personalizados ■/ul contacto Recuerda que mientras Hytale se mueve a través de Early Access, la API puede evolucionar. Manténgase conectado con la comunidad y la documentación oficial como se desarrolla