Cómo contribuir

From DragonMineZ Wiki
Revision as of 23:36, 13 October 2026 by Shokkoh (talk | contribs) (Translation sync from dragonminez-wiki repository)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cómo contribuir explica cómo ayudar a DragonMineZ: reportar errores, probar versiones, sugerir funciones, mejorar la documentación o trabajar en el código. Sea lo que sea que quieras hacer, el equipo estará encantado de colaborar contigo. Sigue estas pautas para que el proceso sea fluido para todos los colaboradores. Si quieres hacer una donación al proyecto, consulta Apoyar el proyecto en Patreon.

Primeros pasos

  1. Lee el Código de Conducta. Al contribuir, aceptas respetar el Código de Conducta.
  2. Revisa los issues existentes. Mira los issues para ver si alguien ya reportó tu problema o propuso tu idea.
  3. Haz un fork del repositorio y clona tu fork en tu entorno local para probar y desarrollar (ver abajo).
  4. Prepara tu entorno con las herramientas que se indican abajo.

Para clonar tu fork:

git clone https://github.com/your-username/DragonMineZ.git

Asegúrate de tener instaladas estas herramientas:

  • Java Development Kit (JDK) 17 (la compilación usa una toolchain de Java 17)
  • Git
  • Un IDE compatible con Gradle (IntelliJ IDEA o Eclipse)

No necesitas instalar Gradle ni Forge por tu cuenta: el repositorio incluye el wrapper de Gradle (gradlew / gradlew.bat), que descarga Gradle, Minecraft Forge (1.20.1-47.4.10) y todas las dependencias en la primera compilación.

Si no vas a hacer un fork del repositorio ni a crear un addon, puedes saltarte el paso 3. Para desarrollar addons, consulta Primeros pasos con addons.

Compilar y ejecutar

Ejecuta estos comandos desde la raíz del repositorio (./gradlew en Linux y macOS, .\gradlew.bat en Windows):

Comando Qué hace
./gradlew build Compilación completa. El jar que se distribuye es build/libs/dragonminez-<version>.jar (incluye las librerías de base de datos); el jar -slim no está pensado para distribuirse.
./gradlew runClient Inicia un cliente de desarrollo (directorio de trabajo run/).
./gradlew runServer Inicia un servidor dedicado de desarrollo (directorio de trabajo run/).
./gradlew runData Ejecuta la generación de datos (directorio de trabajo run-data/) y escribe en src/generated/resources/. Ejecútalo después de cambiar los proveedores de datagen y revisa el diff generado.
  • No hay una suite de pruebas automatizadas. Valida tu cambio con build y, si afecta a la jugabilidad, probándolo en runClient y/o runServer.
  • Los mods de desarrollo solo para el cliente (JEI runtime, shaders, etc.) solo se añaden a runClient. Mantenlo así para que no se filtren en los datos generados ni en el servidor dedicado.
  • La optimización de recursos (PackSquash) se ejecuta en CI y está desactivada por defecto en las compilaciones locales. Puedes forzarla con -PoptimizeResources=true o -PoptimizeResources=false.

Traducciones

  • src/main/resources/assets/dragonminez/lang/en_us.json es el archivo de idioma de origen. Añade ahí una entrada por cada texto nuevo que puedan ver los jugadores y mantén estables las claves existentes.
  • Los demás idiomas los traduce la comunidad en Crowdin. El archivo en inglés se sube a Crowdin automáticamente cuando cambia en main.
  • Antes de abrir un pull request, comprueba que todos los archivos de idioma sean JSON válido con scripts/check_lang.sh (necesita jq).

Cómo contribuir

Reportar errores

Si encontraste un error, abre un reporte de error e incluye todos los detalles posibles:

  • Una descripción clara del problema
  • Pasos para reproducirlo
  • Resultado esperado y resultado real
  • Capturas de pantalla, logs o reportes de crash, si los hay

Probar el juego

Cualquiera puede probar las versiones públicas y compartir lo que encuentre con el equipo: errores, exploits, problemas de balance, crashes o cualquier otra cosa que parezca rara. No necesitas ser desarrollador ni abrir un pull request para ayudar de esta forma.

  • Prueba solo versiones públicas. No pruebes versiones internas o sin publicar a menos que te hayan dado acceso explícito.
  • Comparte lo que encuentres en un reporte de error o en Discord.
  • Si lo que encuentras es una vulnerabilidad de seguridad (por ejemplo, algo que se podría explotar para perjudicar a otros jugadores o servidores), sigue la Política de seguridad en lugar de abrir un issue público.

Sugerir funciones

¿Tienes una gran idea? Abre una solicitud de función e incluye:

  • Una explicación clara y concisa de la función
  • Sus posibles beneficios e impacto
  • Alternativas o conceptos relacionados

También puedes sugerir funciones en el servidor de Discord.

Enviar pull requests

Paso 1: Crea una rama. main contiene la línea estable actual; la próxima versión se desarrolla en su propia rama de versión (por ejemplo, v2.2). Basa tu rama en aquella a la que va dirigido tu cambio; si no estás seguro, pregunta en Discord. Usa un nombre de rama descriptivo:

git checkout -b fix/short-description

Paso 2: Haz tus cambios.

  • Escribe código limpio y conciso.
  • Prueba tus cambios en local para asegurarte de que funcionan como esperas.
  • Sigue las convenciones y estándares de código del proyecto.

Paso 3: Haz commit de tus cambios con un mensaje de commit significativo:

git commit -m "Fix: Resolved issue with XYZ feature"

Paso 4: Sube tus cambios (push).

git push origin fix/short-description

Paso 5: Abre un pull request. Ve a tu fork en GitHub y envía un pull request.

  • Describe los cambios y enlaza los issues relacionados.
  • Prepárate para discutir y revisar tu código según los comentarios.
  • Cada pull request se compila automáticamente con el workflow Compile Check (./gradlew build). Si falla, tu pull request no se fusionará. Los workflows de quienes contribuyen por primera vez pueden necesitar la aprobación de un mantenedor antes de ejecutarse.

Comprobaciones automáticas

Workflow Cuándo se ejecuta Qué hace
Compile Check Cada pull request, y los push a cualquier rama excepto main que toquen código, recursos o archivos de Gradle Ejecuta ./gradlew build
Java CI Pull requests y push a main que toquen Java o build.gradle.kts Ejecuta ./gradlew build y envía el grafo de dependencias
Crowdin Check & Upload Push a main que toquen la carpeta lang, cada 2 días o manualmente Valida los archivos de idioma con scripts/check_lang.sh y sube en_us.json a Crowdin
CodeQL Diario Análisis de seguridad del código Java y de los workflows

Los mantenedores publican las versiones en Modrinth y CurseForge desde main con sus workflows de publicación.

Pautas para colaboradores

  1. Estándares de código
    • Usa nombres descriptivos para variables y métodos.
    • Formatea el código de manera consistente (sangría, espaciado, etc.).
    • Escribe comentarios para la lógica compleja.
  2. Documentación
    • Actualiza o añade documentación para las funciones nuevas o modificadas.
    • Asegúrate de que esta wiki refleje los cambios importantes.
  3. Pruebas
    • Prueba a fondo en los escenarios relevantes, incluido un servidor dedicado (runServer) cuando tu cambio toque clases del cliente, red o lógica del servidor.
    • Corrige cualquier problema de linting o de compilación antes de enviar tu pull request.
  4. Compatibilidad
    • Muchos sistemas leen JSON que editan jugadores, dueños de servidores y autores de addons (configuraciones, misiones, deseos, paquetes de Esferas del Dragón). No renombres ni elimines claves de configuración, campos JSON, claves de guardado NBT ni nombres de registro sin hablarlo antes: los mundos y configuraciones antiguos deben seguir cargando.
    • Los paquetes de red se identifican por su orden de registro: añade los paquetes nuevos al final de NetworkHandler.register(), nunca en medio.
    • Valida en el servidor todo lo que envíe un cliente; nunca confíes en el cliente para estadísticas, desbloqueos, misiones, deseos o progreso.
  5. Documentación del proyecto
    • CLAUDE.md y la carpeta AI/ (Agents.md, Context.md, Memory.md, QuestAddonAPI.md) describen en detalle la arquitectura, los sistemas de datos, la compilación y la automatización de versiones. Están escritos para asistentes de programación con IA, pero son igual de útiles para colaboradores humanos: lee AI/Context.md antes de hacer cambios grandes.

Comunidad

Únete al servidor de Discord para conversar en tiempo real.

Apoyar el proyecto en Patreon

DragonMineZ es un proyecto impulsado por la comunidad, y tu apoyo ayuda al equipo a seguir mejorándolo y a lanzar nuevas funciones. Considera hacerte patrocinador en Patreon para apoyar el desarrollo y el mantenimiento del mod. Los patrocinadores reciben beneficios exclusivos, como:

  • Acceso anticipado a nuevas funciones
  • Novedades del detrás de escena
  • Reconocimiento en la comunidad

Cada aporte, por pequeño que sea, ayuda a que DragonMineZ siga mejorando.

Licencia

Al contribuir, aceptas que tus contribuciones se publiquen bajo la misma licencia que rige el proyecto.

Gracias

Al equipo le entusiasma ver tus contribuciones e ideas. Si tienes alguna pregunta o necesitas ayuda, contacta al equipo.