Hytale permite la creación de complementos y mods a través del servidor, pero para comprender mejor su funcionamiento puede ser útil explorar el código del HytaleServer.jar. Esto se hace mediante descompilación y preparación de un entorno que facilite la navegación del código fuente.
La herramienta oficial patcher permite configurar un proyecto listo para explorar Hytale Server, incluyendo la descompilación de paquetes clave y la creación de un proyecto Maven para navegar el código en un IDE.
Cómo crear un MOD de Hytale: Guía completa paso a paso desde cero
¿Por qué explorar HytaleServer.jar?
Si agregas un .jar compilado como biblioteca, IntelliJ solo permite descompilar clase por clase, sin funcionalidades de búsqueda avanzada. Por ejemplo:
- No puedes hacer clic derecho sobre una clase y usar Find Usages
- Tampoco es fácil rastrear instancias, referencias o jerarquías de herencia
El patcher genera un proyecto completo del servidor donde puedes:
- Buscar cualquier clase o función
- Navegar paquetes y dependencias
- Explorar la estructura de código que maneja eventos, players, NPCs, worldgen, y más
Si surge algún problema, contacta al autor en este post en el Discord de Hytale Modding.
Instrucciones paso a paso
Si prefieres videos, existe un excelente tutorial de Hyphen45, aunque las instrucciones escritas han sido actualizadas y mejoradas desde entonces.
1. Clonar el repositorio del patcher
git clone https://github.com/HytaleModding/patcher.git
cd patcher
2. Crear un entorno virtual de Python
Dependiendo del sistema operativo, usa uno de estos comandos:
python -m venv .venvpython3 -m venv .venv(Linux)py -3.13 -m venv .venv(Windows, recomendado si tienes varias versiones de Python)
3. Activar el entorno virtual
Windows:
- CMD:
".venv\Scripts\activate" - PowerShell:
.\.venv\Scripts\activate
- CMD:
Linux/macOS:
source .venv/bin/activate
A partir de ahora, usa
pythondentro del venv para ejecutar comandos.
4. Instalar dependencias de Python
pip install -r requirements.txt
5. Instalar y configurar herramientas externas
Asegúrate de tener estas dependencias y de que estén en tu PATH:
git– Descargar aquíjava– JDK 25 o superiorjar– incluido en el JDKmvn– Descargar aquí, y añadirbina tu PATH
Después de actualizar tu PATH, cierra las terminales abiertas y abre una nueva para que los cambios surtan efecto.
Verifica con:git --version,mvn --version,java --version,jar --version.
6. Ubicar HytaleServer.jar
- Colócalo en la raíz del repositorio patcher
- O define la variable de entorno
HYTALESERVER_JAR_PATHcon la ruta del.jar
7. Ejecutar el setup del patcher
python run.py setup
¿Qué hace este comando?
- Copia
HytaleServer.jara:
work/download
- (Windows) Soluciona la colisión de nombres
META-INF/license - Descompila solo el paquete
com.hypixelusando Vineflower y guarda el resultado en:
work/decompile
- Configura un proyecto Maven en:
hytale-server
- Agrega todas las demás librerías necesarias en
pom.xmlautomáticamente
Luego puedes abrir
hytale-serveren tu IDE favorito, por ejemplo IntelliJ IDEA. Configura SDK y Language level a 25 enCtrl+Alt+Shift+S > Project.
Nota: El código descompilado puede no estar completamente funcional, pero es útil para exploración y referencias.
Añadiendo HytaleServer como dependencia
- En la terminal, dentro de
hytale-server/src/main/javaejecuta:
jar -f hytale-server-stripped.jar -c com
- Luego, aún en la misma carpeta:
mvn install:install-file -Dfile=hytale-server-stripped.jar -DgroupId="com.hypixel.hytale" -DartifactId=HytaleServer-stripped -Dversion="1.0-SNAPSHOT" -Dpackaging=jar
- Finalmente, en tu proyecto de plugin, agrega esta dependencia en tu
pom.xml:
<dependency>
<groupId>com.hypixel.hytale</groupId>
<artifactId>HytaleServer-stripped</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>provided</scope>
<!-- otras dependencias también... -->
</dependency>
Recargando proyectos Maven
En IntelliJ, a veces necesitarás recargar el proyecto Maven:
- Haz clic en el ícono “m” en la parte derecha (Maven Projects)
- Si no lo ves: habilítalo en View → Tool Windows → Maven
Esto garantiza que cualquier cambio en
pom.xmlse aplique correctamente en tu proyecto.
