Skip to content

Latest commit

 

History

History
89 lines (58 loc) · 4.57 KB

CONTRIBUTING_ES.md

File metadata and controls

89 lines (58 loc) · 4.57 KB

Contribuir

Mineflayer originalmente fue hecho mayormemente por andrewrk pero ha sido arreglado y mejorado mucho por muchos contribuyentes. Por eso es importante saber cual es la mejor manera de contribuir a mineflayer.

Organización de problemas

Tenemos 3 etiquetas para 3 fases de organizar los problemas:

  • Stage 1: (Fase 1) creado por alguien nuevo al proyecto, no sabemos si merece una implementación / solución
  • Stage 2: (Fase 2) idea prometedora, pero se necesita pensar más sobre el tema antes de implementarlo
  • Stage 3: (Fase 3) la idea es muy precisa, solo hace falta programarlo

Los links como https://github.com/PrismarineJS/mineflayer/issues?q=is%3Aopen+is%3Aissue+-label%3AStage1 se pueden usar como filtro para la fase 1 si estás buscando cosas que están listas para que sean contribuidas

Creando tests

Mineflayer tiene dos tipos de tests :

  • tests internos : tests que se hacen con un servidor simple creado con node-minecraft-protocol
  • tests externos : tests que se hacen con un servidor vanilla

El objectivo de estos tests es saber automáticamente qué funciona y qué no funciona en mineflayer, así es más fácil hacer funcionar mineflayer.

Creando un text externo

Para crear un test externo solo tienes que crear un archivo en test/externalTests

Un ejemplo : test/externalTests/digAndBuild.js

Ese archivo tiene que exportar una función que devuelve una función o un array de funciones que necesitan como parámetros el object de bot y un callback para cuando haya finalizado, debería contener asserts para saber si la función testeada ha fallado.

Creando un plugin de terceros

Mineflayer admite plugins; cualquiera puede crear un plugin que añade una API con un nivel más alto encima de Mineflayer.

Bastantes plugins de terceros han sido creados

Para crear un plugin nuevo tienes que :

  1. crear un repositorio nuevo
  2. en tu archivo index.js, exportar una función para inicializar el plugin con argumento mineflayer (ejemplo)
  3. esa función devuelve una función para introducir el plugin con argumento el object del bot (ejemplo)
  4. a partir de esa función se pueden añadir más funcionalidades al bot (ejemplo)

Como el object de mineflayer fue pasado como argumento, ese plugin de terceros no tiene que depender en mineflayer (no hay mineflayer en el package.json)

Mira un ejemplo completo here.

Reportando bugs

Mineflayer funciona bien para la mayoría de cosas, pero a veces sigue teniendo bugs.

Cuando encuentras uno es mejor que informes sobre el error proporcionando esta información :

  • que quieres hacer (el objetivo en english)
  • que es lo que has intentado (el código)
  • que ha pasado
  • que esperabas que pasara

Código de Mineflayer

Algunas cosas para pensar al crear un Pull Request (solicitud de pull) o hacer un commit :

Gestión de errores

En la mayoría de casos, mineflayer no debería romper/crashear el bot. Incluso si algo falla, el bot puede coger una ruta alternativa para coseguir el objetivo.

Con esto se refiere a que no deberíamos usar el throw new Error("error") sino pasar el error junto al callback.

Por ejemplo :

function myfunction (param1, callback) {
  // do stuff
  let toDo = 1
  toDo = 2
  if (toDo === 2) { // everything worked (todo ha funcionado)
    callback()
  } else {
    callback(new Error('something failed')) // (algo ha fallado)
  }
}

Mira otro ejemplo en el código de mineflayer

Actualizando la documentación

La tabla de contenidos del docs/api.md está hecho con doctoc. Tras actualizar el archivo, deberías ejecutar doctoc docs/api.md para actualizar la tabla de contenidos.

Esta documentación no está mantenida oficialmente, si quiere ver las últimas novedades, por favor dirijase a la documentación original: unstable_api