Preguntas Frecuentes (FAQ)¶
Respuestas a preguntas comunes sobre el desarrollo de plugins para Hytale.
General¶
¿Es legal modificar Hytale?¶
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¶
- Verificar que el JAR está en
earlyplugins/ - Verificar el archivo
META-INF/services/ - 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?¶
- Usar
System.out.println()extensivamente - Imprimir bytecode con
TraceClassVisitor - Verificar bytecode con
CheckClassAdapter - Usar debugger remoto de Java
¿Cómo veo qué clases se están transformando?¶
Agregar logging en el método transform():
¿Cómo verifico si mi transformación es correcta?¶
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¶
- Troubleshooting: Solución de problemas específicos
- Glosario: Términos y conceptos
¿Más preguntas? Consulta la documentación completa