Aller au contenu

Preguntas Frecuentes (FAQ)

Respuestas a preguntas comunes sobre el desarrollo de plugins para Hytale.

General

Esta documentación se basa en código descompilado y no es oficialmente soportada por Hypixel Studios. Usa bajo tu propio riesgo.

¿Puedo hacer dinero con mis plugins?

Consulta los términos de servicio de Hytale. Generalmente, los plugins gratuitos y de código abierto son más aceptados por la comunidad.

¿Los plugins funcionarán en futuras versiones?

No hay garantía. Las actualizaciones pueden romper plugins existentes. Mantén tu código actualizado.

Early Plugins

¿Qué es un Early Plugin?

Un plugin que se carga antes del servidor principal, permitiendo transformación de bytecode de clases del juego.

¿Por qué necesito ASM?

ASM es la biblioteca estándar para manipular bytecode Java. Es necesaria para transformar clases.

¿Puedo usar otros transformadores de bytecode?

Sí, puedes usar Javassist, ByteBuddy, etc., pero ASM es la más común y eficiente.

¿Los Early Plugins afectan el rendimiento?

La transformación ocurre una vez durante la carga. El impacto es mínimo si se implementa correctamente.

¿Puedo desactivar un Early Plugin sin reiniciar?

No. Los early plugins se cargan una vez al inicio y no pueden descargarse en caliente.

Meta System

¿Qué es el Meta System?

Sistema para asociar datos personalizados a objetos del juego de manera type-safe y eficiente.

¿Cuándo usar MetaKey persistente?

Para datos que deben guardarse entre sesiones del servidor (ej: puntos de experiencia).

¿Los metadatos afectan el rendimiento?

El acceso es O(1) usando arrays internos. El impacto es mínimo.

¿Puedo compartir MetaKeys entre plugins?

Sí, pero debes asegurar que usen el mismo MetaRegistry.

Interaction System

¿Qué es una Interaction?

Una operación que define qué sucede cuando se interactúa con el mundo (usar item, destruir bloque, etc.).

¿Puedo modificar interacciones existentes?

Sí, usando transformación de bytecode o creando nuevas interacciones.

¿Las interacciones personalizadas se sincronizan con el cliente?

Depende del tipo. Las ClientInteraction se sincronizan automáticamente.

Problemas Comunes

Mi plugin no se carga

  1. Verificar que el JAR está en earlyplugins/
  2. Verificar el archivo META-INF/services/
  3. Revisar logs del servidor

ClassNotFoundException

Tu plugin o el servidor no encuentra una clase. Verificar dependencias y classpath.

NoClassDefFoundError

Clase encontrada en compilación pero no en ejecución. Incluir dependencias en el JAR.

VerifyError

El bytecode transformado es inválido. Revisar transformación con ASM o usar CheckClassAdapter.

El servidor no inicia después de instalar mi plugin

Tu transformación está rompiendo el servidor. Comentar el código de transformación y depurar.

Debugging

¿Cómo depuro mi plugin?

  1. Usar System.out.println() extensivamente
  2. Imprimir bytecode con TraceClassVisitor
  3. Verificar bytecode con CheckClassAdapter
  4. Usar debugger remoto de Java

¿Cómo veo qué clases se están transformando?

Agregar logging en el método transform():

System.out.println("[Debug] Transformando: " + className);

¿Cómo verifico si mi transformación es correcta?

CheckClassAdapter.verify(
    new ClassReader(transformed),
    false,
    new PrintWriter(System.err)
);

Compatibilidad

¿Mi plugin funciona en cliente y servidor?

Los early plugins generalmente funcionan en ambos, pero debes probar en ambos entornos.

¿Puedo usar Java 11/17/21?

Hytale usa Java 17. Usa Java 17 para máxima compatibilidad.

¿Puedo mezclar Gradle y Maven?

Sí, pero elige uno para cada proyecto. No mezcles en el mismo proyecto.

Siguiente


¿Más preguntas? Consulta la documentación completa