LookAtMySuitBot/js/node_modules/mineflayer/docs/es/CONTRIBUTING_ES.md

90 lines
4.6 KiB
Markdown
Raw Normal View History

2023-12-24 20:08:39 -05:00
# Contribuir
Mineflayer originalmente fue hecho mayormemente por [andrewrk](http://github.com/andrewrk)
pero ha sido arreglado y mejorado mucho por muchos [contribuyentes](https://github.com/andrewrk/mineflayer/graphs/contributors).
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](test/internalTest.js) : tests que se hacen con un servidor simple creado con node-minecraft-protocol
* [tests externos](test/externalTests/) : 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](test/externalTests)
Un ejemplo : [test/externalTests/digAndBuild.js](https://github.com/PrismarineJS/mineflayer/blob/master/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](https://github.com/andrewrk/mineflayer#third-party-plugins)
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](https://github.com/andrewrk/mineflayer-navigate/blob/e24cb6a868ce64ae43bea2d035832c15ed01d301/index.js#L18))
3. esa función devuelve una función para introducir el plugin con argumento el object del bot ([ejemplo](https://github.com/andrewrk/mineflayer-navigate/blob/e24cb6a868ce64ae43bea2d035832c15ed01d301/index.js#L23))
4. a partir de esa función se pueden añadir más funcionalidades al bot ([ejemplo](https://github.com/andrewrk/mineflayer-navigate/blob/e24cb6a868ce64ae43bea2d035832c15ed01d301/index.js#L32))
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](https://github.com/andrewrk/mineflayer-navigate/tree/e24cb6a868ce64ae43bea2d035832c15ed01d301) 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 :
```js
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](https://github.com/andrewrk/mineflayer/blob/a8736c4ea473cf1a609c5a29046c0cdad006d429/lib/plugins/bed.js#L10)
### 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](../CONTRIBUTING.md)