Catalyst

Catalyst

Por CriticalRange 18 de enero de 2026
#bytecode#Catalizador#Catalyst#Desarrollo#Hytale#optimización#plugins#servidores

Optimización del rendimiento a nivel de bytecode para servidores de Hytale

Catalyst es un plugin de carga temprana que se integra en el pipeline de carga de clases de Hytale e inyecta optimizaciones directamente en el bytecode. En lugar de envolver APIs o parchear el JAR, modifica las clases a medida que se cargan, por lo que las optimizaciones se aplican en todas partes, de forma automática.

¿Por qué existe esto?

Los servidores de Hytale realizan muchas tareas que no siempre son necesarias. Los cofres se instancian durante la generación del mundo antes de que alguien esté cerca de ellos. Los fluidos se simulan durante la carga de chunks incluso cuando ningún jugador puede ver el resultado. El descubrimiento de ticks de bloques se ejecuta de manera ansiosa en cada precarga de chunk.

Catalyst pospone este trabajo hasta que realmente se necesita y añade un poco de agrupamiento/cache adicional. Los cambios ocurren a nivel de bytecode, por lo que no hay sobrecarga de API de plugins y no hay parches del juego que volver a aplicar cuando Hytale se actualiza.

¿Qué está funcionando realmente?

En este momento, el proyecto se encuentra en sus primeras etapas. Esto es lo que se ha implementado:

Transformer
¿Qué hace?

LazyBlockEntityTransformer
Pospone la creación de cofres/hornos/carteles hasta el primer acceso

LazyBlockTickTransformer
Retrasa el descubrimiento de ticks durante la precarga de chunks

LazyFluidTransformer
Salta la simulación de fluidos durante la carga de chunks

BatchBlockEntityTransformer
Cachea tipos de bloques y agrupa la colección de entidades

Todo es activable en tiempo de ejecución a través de /catalyst menu, sin necesidad de reiniciar.

Instalación

Para la mayoría de los usuarios:

  • Descarga el JAR más reciente desde: [PÁGINA DE LANZAMIENTOS – AÑADIR URL AQUÍ]
  • Colócalo en tu carpeta early-plugins/ (El plugin va en early-plugins/, no en mods/. Se ejecuta antes de que el servidor inicie, por lo que los transformadores pueden interceptar la carga de clases.):
    • Windows: C:Program FilesHytaleinstallearly-plugins
    • Linux (Flatpak): ~/.var/app/com.hypixel.HytaleLauncher/data/Hytale/install/early-plugins/
    • macOS: ~/Library/Application Support/Hytale/install/early-plugins/ (Puede que quieras verificar la ruta de macOS. Usé la ubicación estándar de soporte de aplicaciones de macOS porque no tengo un mac)
  • Reinicia tu servidor
  • Para desarrolladores:

    ./gradlew build
    ./gradlew deployEarlyPlugin

    El plugin va en early-plugins/, no en mods/. Se ejecuta antes de que el servidor inicie, por lo que los transformadores pueden interceptar la carga de clases.

    Encontrando el JAR de Hytale

    Si estás en Flatpak, las rutas están un poco escondidas:

    ~/.var/app/com.hypixel.HytaleLauncher/data/Hytale/
    └── install/
        ├── early-plugins/        # Coloca Catalyst aquí
        ├── mods/                 # Los plugins regulares van aquí
        └── release/package/game/latest/
            ├── Server/HytaleServer.jar
            └── Assets.zip

    Desarrollo

    El patrón de transformador es sencillo: extiende BaseTransformer, implementa transform(), y registra a través de META-INF/services. Si algo sale mal, devuelve el bytecode original y el servidor continúa normalmente.

    Todos los campos de configuración son volatile y legibles en tiempo de ejecución, por lo que puedes activar/desactivar optimizaciones sin reiniciar.

    ./gradlew build              # Construir JAR
    ./gradlew deployEarlyPlugin  # Desplegar en early-plugins/
    ./gradlew runServer          # Lanzar servidor con el mod cargado

    Documentación

    Estado

    Esto es experimental. Los plugins tempranos se ejecutan con acceso completo al sistema y pueden hacer que tu servidor se bloquee si algo sale mal. Prueba en un mundo no productivo primero, mantén copias de seguridad y reporta problemas.

    Licencia

    MIT — haz lo que quieras con este código, solo mantén el aviso de copyright.

    Relacionados:

    NoDefaultWorldMessages

    NoDefaultWorldMessages

    #bytecode#mensajes#Mundo

    Plugin temprano (transformador de bytecode) para desactivar los mensajes predeterminados de unión y salida del mundo, ya...

    Remove World Leave Message

    Remove World Leave Message

    #ASM#comunidad#Eliminar Mensaje de Salida del Mundo

    Me resultaba realmente molesto que pudieras activar el mensaje de entrada, pero no el de salida, así que creé un pequeño...

    HyDB

    HyDB

    #API#Base de datos#Desarrollo

    HyDB – API de Base de Datos SQLite Profesional para Hytale 📊 Resumen HyDB es un plugin base profesional para Hyta...

    Numdrassl

    Numdrassl

    #gaming#Hytale#Java

    Numdrassl – Hytale Proxy Server Un servidor proxy de Hytale de alto rendimiento y extensible, escrito en Java, que...