diff --git a/docs/README.md b/docs/README.md
index 5e87845d4..b4619de42 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -8,8 +8,8 @@
[![Official Discord](https://img.shields.io/static/v1.svg?label=OFFICIAL&message=DISCORD&color=blue&logo=discord&style=for-the-badge)](https://discord.gg/GsEFRM8)
-| EN [English](README.md) | RU [русский](ru/README_RU.md) | ES [Español](es/README_ES.md) | FR [Français](fr/README_FR.md) | TR [Türkçe](tr/README_TR.md) | ZH [中文](zh/README_ZH_CN.md) |
-|-------------------------|----------------------------|----------------------------|----------------------------|----------------------------|----------------------------|
+| EN [English](README.md) | RU [русский](ru/README_RU.md) | ES [Español](es/README_ES.md) | FR [Français](fr/README_FR.md) | TR [Türkçe](tr/README_TR.md) | ZH [中文](zh/README_ZH_CN.md) | BR [Português](br/README_BR.md) |
+|-------------------------|----------------------------|----------------------------|----------------------------|----------------------------|-------------------------|--------------------|
Create Minecraft bots with a powerful, stable, and high level JavaScript [API](api.md), also usable from Python.
diff --git a/docs/br/CONTRIBUTING_BR.md b/docs/br/CONTRIBUTING_BR.md
new file mode 100644
index 000000000..7b3749274
--- /dev/null
+++ b/docs/br/CONTRIBUTING_BR.md
@@ -0,0 +1,84 @@
+# Contribuir
+
+O Mineflayer foi originalmente criado principalmente por [andrewrk](http://github.com/andrewrk), mas tem sido muito aprimorado e corrigido por muitos [contribuidores](https://github.com/andrewrk/mineflayer/graphs/contributors). Portanto, é importante saber a melhor maneira de contribuir para o Mineflayer.
+
+## Organização de Problemas
+
+Temos 3 etiquetas para 3 fases de organização de problemas:
+
+* Estágio 1: (Fase 1) criado por alguém novo no projeto, não sabemos se merece uma implementação / solução
+* Estágio 2: (Fase 2) ideia promissora, mas é necessário pensar mais sobre o assunto antes de implementá-lo
+* Estágio 3: (Fase 3) a ideia é muito precisa, só precisa ser programada
+
+Links como https://github.com/PrismarineJS/mineflayer/issues?q=is%3Aopen+is%3Aissue+-label%3AStage1 podem ser usados como filtro para a fase 1 se você estiver procurando coisas prontas para serem contribuídas.
+
+## Criando Testes
+O Mineflayer possui dois tipos de testes:
+
+ * [Testes internos](test/internalTest.js): testes feitos com um servidor simples criado com o node-minecraft-protocol
+ * [Testes externos](test/externalTests/): testes feitos com um servidor Vanilla
+
+O objetivo desses testes é determinar automaticamente o que funciona e o que não funciona no Mineflayer, tornando mais fácil a correção de problemas.
+
+### Criando um Teste Externo
+
+Para criar um teste externo, basta criar um arquivo em [test/externalTests](test/externalTests).
+
+Um exemplo: [test/externalTests/digAndBuild.js](https://github.com/PrismarineJS/mineflayer/blob/master/test/externalTests/digAndBuild.js)
+
+Esse arquivo deve exportar uma função que retorna uma função ou um array de funções que recebem o objeto bot e um callback como parâmetros, e deve conter verificações para determinar se a função testada falhou.
+
+## Criando um Plugin de Terceiros
+O Mineflayer suporta plugins; qualquer pessoa pode criar um plugin que adiciona uma API de nível mais alto acima do Mineflayer.
+
+Vários plugins de terceiros foram [criados](https://github.com/andrewrk/mineflayer#third-party-plugins).
+
+Para criar um novo plugin, você deve:
+
+1. Criar um novo repositório.
+2. No seu arquivo index.js, exportar uma função para inicializar o plugin com o argumento Mineflayer ([exemplo](https://github.com/andrewrk/mineflayer-navigate/blob/e24cb6a868ce64ae43bea2d035832c15ed01d301/index.js#L18)).
+3. Essa função deve retornar uma função para introduzir o plugin com o objeto bot ([exemplo](https://github.com/andrewrk/mineflayer-navigate/blob/e24cb6a868ce64ae43bea2d035832c15ed01d301/index.js#L23)).
+4. A partir dessa função, você pode adicionar mais funcionalidades ao bot ([exemplo](https://github.com/andrewrk/mineflayer-navigate/blob/e24cb6a868ce64ae43bea2d035832c15ed01d301/index.js#L32)).
+
+Como o objeto Mineflayer é passado como argumento, esse plugin de terceiros não deve depender do Mineflayer (não deve haver referência ao Mineflayer no package.json).
+
+Veja um [exemplo completo](https://github.com/andrewrk/mineflayer-navigate/tree/e24cb6a868ce64ae43bea2d035832c15ed01d301) aqui.
+
+## Relatando Bugs
+O Mineflayer funciona bem na maioria das situações, mas às vezes ainda pode ter bugs.
+
+Ao encontrar um bug, é melhor relatar o erro fornecendo as seguintes informações:
+
+* O que você está tentando fazer (o objetivo em inglês).
+* O que você tentou (o código).
+* O que aconteceu.
+* O que você esperava que acontecesse.
+
+## Código do Mineflayer
+Aqui estão algumas coisas a se considerar ao criar uma solicitação de pull (pull request) ou fazer um commit:
+
+### Tratamento de Erros
+Na maioria dos casos, o Mineflayer não deve quebrar ou travar o bot. Mesmo se algo der errado, o bot pode seguir uma rota alternativa para alcançar o objetivo.
+
+Isso significa que não devemos usar `throw new Error("erro")`, mas sim passar o erro junto com o callback.
+
+Por exemplo:
+
+```js
+function myfunction (param1, callback) {
+ let toDo = 1
+ toDo = 2
+ if (toDo === 2) { // everything worked (todo está funcionado)
+ callback()
+ } else {
+ callback(new Error('something failed')) // (algo falhou)
+ }
+}
+```
+
+Veja outro exemplo no [código do Mineflayer](https://github.com/andrewrk/mineflayer/blob/a8736c4ea473cf1a609c5a29046c0cdad006d429/lib/plugins/bed.js#L10).
+
+### Atualizando a Documentação
+A tabela de conteúdo no arquivo docs/api.md é gerada com o Doctoc. Após atualizar o arquivo, você deve executar doctoc docs/api.md para atualizar a tabela de conteúdo.
+
+Esta documentação não é oficialmente mantida; para ver as informações mais recentes, consulte a documentação original: [unstable_api](../CONTRIBUTING.md).
\ No newline at end of file
diff --git a/docs/br/FAQ_BR.md b/docs/br/FAQ_BR.md
new file mode 100644
index 000000000..8a7aefdbb
--- /dev/null
+++ b/docs/br/FAQ_BR.md
@@ -0,0 +1,169 @@
+## Perguntas Frequentes
+
+Este documento de perguntas frequentes tem o objetivo de ajudar as pessoas com informações básicas.
+
+## Como ocultar erros?
+
+Para ocultar erros, você pode adicionar a opção `hideErrors: true` nas configurações ao criar o bot. Também é possível usar os seguintes eventos:
+
+```js
+client.on('error', () => {})
+client.on('end', () => {})
+```
+
+## Meu evento de chat não está sendo emitido em um servidor personalizado. Como posso resolver isso?
+
+Alguns servidores Spigot, em particular certos plugins, utilizam formatos personalizados de chat. Nesse caso, é necessário analisar esses formatos com expressões regulares personalizadas. Recomenda-se ler e modificar o arquivo [chat_parsing.js](https://github.com/PrismarineJS/mineflayer/blob/master/examples/chat_parsing.js) para que funcione com o plugin de chat específico do seu servidor. Você também pode consultar http://prismarinejs.github.io/mineflayer/#/tutorial?id=custom-chat para obter mais informações.
+
+## Como posso coletar informações de um plugin de chat personalizado?
+
+A maioria dos servidores de Minecraft possui plugins que enviam mensagens ao chat quando ocorrem eventos. Se a informação enviada for simples, você pode utilizar a solução mencionada anteriormente. No entanto, se as mensagens contêm muita informação em um único bloco de texto, outra opção é utilizar o evento `"messagestr"`, que permite analisar as mensagens de forma mais fácil.
+
+**Exemplo:**
+
+Suponha que a mensagem seja semelhante a esta:
+
+```
+(!) U9G ganhou o /jackpot e recebeu
+$26,418,402,450! Eles compraram 2,350,000 (76.32%) bilhetes
+de um total de 3,079,185 bilhetes vendidos!
+```
+
+```js
+const regex = {
+ first: /\(!\) (.+) ganhou o \/jackpot e recebeu +/,
+ second: /\$(.+)! Eles compraram (.+) \((.+)%\) bilhetes do total de /,
+ third: /(.+) bilhetes vendidos!/
+}
+
+let jackpot = {}
+bot.on('messagestr', msg => {
+ if (regex.first.test(msg)) {
+ const username = msg.match(regex.first)[1]
+ jackpot.username = username
+ } else if (regex.second.test(msg)) {
+ const [, moneyWon, boughtTickets, winPercent] = msg.match(regex.second)
+ jackpot.moneyWon = parseInt(moneyWon.replace(/,/g, ''))
+ jackpot.boughtTickets = parseInt(boughtTickets.replace(/,/g, ''))
+ jackpot.winPercent = parseFloat(winPercent)
+ } else if (regex.third.test(msg)) {
+ const totalTickets = msg.match(regex.third)[1]
+ jackpot.totalTickets = parseInt(totalTickets.replace(/,/g, ''))
+ onDone(jackpot)
+ jackpot = {}
+ }
+})
+```
+
+## Como posso enviar um comando?
+
+Usando `bot.chat()`.
+
+**Exmemplo:**
+```js
+bot.chat('/give @p diamond')
+```
+
+### É possível criar vários bots e controlá-los separadamente?
+
+Você pode criar bots diferentes com a função `createBot` e executar ações diferentes para cada um deles. Dê uma olhada no arquivo `multiple.js` para mais informações.
+
+### Como faço para o bot largar todo o seu inventário?
+
+Você pode usar a função `bot.inventory.items()` para obter uma matriz dos itens no inventário do bot. Você pode criar uma função recursiva para largar cada item usando `bot.toss()`. Veja um exemplo [aqui](https://gist.github.com/dada513/3d88f772be4224b40f9e5d1787bd63e9).
+
+### Como vejo os pacotes que foram enviados/recebidos?
+
+Você pode ativar o modo de depuração. Para obter mais informações, consulte [este link](https://github.com/PrismarineJS/mineflayer/blob/master/docs/br/README_BR.md#depuraci%C3%B3n).
+
+### Quero evitar desconexões devido a lag no servidor, como posso fazer isso?
+
+Uma maneira de evitar desconexões devido à latência no servidor é aumentar o valor na opção `checkTimeoutInterval` (por exemplo, `300*1000`, que representa 5 minutos, em vez do valor padrão, que é 30 segundos). Se mesmo assim você continuar sendo desconectado do servidor, você pode se reconectar automaticamente usando este exemplo [aqui](https://github.com/PrismarineJS/mineflayer/blob/master/examples/reconnector.js).
+
+### Como posso obter a descrição/texto de um item?
+
+Você pode usar a propriedade `item.nbt`. É recomendável utilizar a biblioteca `prismarine-nbt`. O método `nbt.simplify()` pode ser útil para simplificar a obtenção da descrição de um item.
+
+**Exemplo:**
+```js
+function getLore (item) {
+ let message = ''
+ if (item.nbt == null) return message
+
+ const nbt = require('prismarine-nbt')
+ const ChatMessage = require('prismarine-chat')(bot.version)
+
+ const data = nbt.simplify(item.nbt)
+ const display = data.display
+ if (display == null) return message
+
+ const lore = display.Lore
+ if (lore == null) return message
+ for (const line of lore) {
+ message += new ChatMessage(line).toString()
+ message += '\n'
+ }
+
+ return message
+}
+```
+
+### Como posso enviar uma mensagem do console para o servidor?
+
+Você pode usar uma biblioteca como `repl` para ler o que você escreve no console e usar `bot.chat()` para enviá-lo para o servidor. Você pode encontrar um exemplo [aqui](https://github.com/PrismarineJS/mineflayer/blob/master/examples/repl.js).
+
+### Ao criar um plugin, como posso especificar outro plugin como dependência?
+
+Na função `inject()` do seu plugin, você pode executar a função `bot.loadPlugin()` para carregar esse plugin. Se o plugin já estiver carregado anteriormente, nada acontecerá.
+
+Nota: a ordem em que os plugins são carregados é dinâmica; você nunca deve chamar outro plugin em sua função `inject()`.
+
+### Como posso usar um proxy SOCKS5?
+
+Nas opções de `mineflayer.createBot(opções)`, remova o seu `host` das opções e coloque as informações necessárias nas variáveis `PROXY_IP`, `PROXY_PORT`, `PROXY_USERNAME`, `PROXY_PASSWORD`, `MC_SERVER_IP` e `MC_SERVER_PORT`. Em seguida, adicione o seguinte ao seu objeto de opções:
+
+```js
+connect: (client) => {
+ socks.createConnection({
+ proxy: {
+ host: PROXY_IP,
+ port: PROXY_PORT,
+ type: 5,
+ userId: PROXY_USERNAME,
+ password: PROXY_PASSWORD
+ },
+ command: 'connect',
+ destination: {
+ host: MC_SERVER_IP,
+ port: MC_SERVER_PORT
+ }
+ }, (err, info) => {
+ if (err) {
+ console.log(err)
+ return
+ }
+ client.setSocket(info.socket)
+ client.emit('connect')
+ })
+}
+```
+
+# Erros Comuns
+
+### `UnhandledPromiseRejectionWarning: Error: Failed to read asymmetric key`
+
+Isso ocorre quando você fornece uma versão incorreta ao mineflayer, ou o mineflayer detecta a versão errada.
+
+### `TypeError: Cannot read property '?' of undefined`
+
+Você pode estar tentando acessar uma propriedade do bot que ainda não existe; tente acessar a propriedade após o evento `spawn`.
+
+### `SyntaxError: Unexpected token '?'`
+
+Atualize a versão do seu Node.js.
+
+### O bot não consegue quebrar/colocar blocos ou abrir baús
+
+Verifique se a proteção do spawn não está impedindo o bot de realizar a ação.
+
+Esta documentação não é oficial. Para as informações mais atualizadas, consulte a documentação original: [FAQ](../FAQ.md).
\ No newline at end of file
diff --git a/docs/br/README_BR.md b/docs/br/README_BR.md
new file mode 100644
index 000000000..8d69ee730
--- /dev/null
+++ b/docs/br/README_BR.md
@@ -0,0 +1,228 @@
+# Mineflayer
+
+[![NPM version](https://badge.fury.io/js/mineflayer.svg)](http://badge.fury.io/js/mineflayer)
+[![Build Status](https://github.com/PrismarineJS/mineflayer/workflows/CI/badge.svg)](https://github.com/PrismarineJS/mineflayer/actions?query=workflow%3A%22CI%22)
+[![Discord](https://img.shields.io/badge/chat-on%20discord-brightgreen.svg)](https://discord.gg/GsEFRM8)
+[![Gitter](https://img.shields.io/badge/chat-on%20gitter-brightgreen.svg)](https://gitter.im/PrismarineJS/general)
+[![Irc](https://img.shields.io/badge/chat-on%20irc-brightgreen.svg)](https://irc.gitter.im/)
+
+[![Try it on gitpod](https://img.shields.io/badge/try-on%20gitpod-brightgreen.svg)](https://gitpod.io/#https://github.com/PrismarineJS/mineflayer)
+
+| EN [English](../README.md) | RU [русский](../ru/README_RU.md) | ES [Español](../es/README_ES.md) | FR [Français](../fr/README_FR.md) | TR [Türkçe](../tr/README_TR.md) | ZH [中文](../zh/README_ZH_CN.md) | BR [Português](../br/README_BR.md) |
+|-------------------------|----------------------------|----------------------------|----------------------------|----------------------------|-----------------|-----------------|
+
+Crie bots para o Minecraft com uma API JavaScript poderosa, estável e de alto nível.
+
+Primeira vez usando o Node.js? Você pode querer começar com o tutorial [tutorial](../tutorial.md)
+
+## Recursos
+
+ * Suporta Minecraft 1.8, 1.9, 1.10, 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17, 1.18, 1.19 e 1.20.
+ * Conhecimento e rastreamento de entidades.
+ * Conhecimento de blocos. Você pode consultar o mundo ao seu redor em milissegundos para encontrar qualquer bloco.
+ * Física e movimento - lida com todas as caixas delimitadoras.
+ * Ataque a entidades e uso de veículos.
+ * Gerenciamento de inventário.
+ * Criação, baús, dispensadores, mesas de encantamento.
+ * Escavação e construção.
+ * Diversas funcionalidades, como saber sua saúde e se está chovendo.
+ * Ativação de blocos e uso de itens.
+ * Chat.
+
+### Planos para o Futuro
+- Dê uma olhada em nossos [projetos atuais](https://github.com/PrismarineJS/mineflayer/wiki/Big-Prismarine-projects)
+
+## Instalação
+- Primeiro, instale o Node.js >= 14 a partir do [nodejs.org](https://nodejs.org/)
+
+`npm install mineflayer`
+
+## Documentação
+
+| Link | Descrição |
+|---|---|
+| [tutorial](../tutorial.md) | Comece com o Node.js e o Mineflayer |
+| [FAQ_BR.md](FAQ_BR.md) | Alguma dúvida? Confira isso |
+| [api_br.md](api_br.md) [unstable_api_br.md](unstable_api_br.md) | Toda a documentação da API |
+| [history.md](../history.md) | Histórico de mudanças do Mineflayer |
+| [examples/](https://github.com/PrismarineJS/mineflayer/tree/master/examples) | Todos os exemplos do Mineflayer |
+
+## Contribuições
+
+Por favor, leia [CONTRIBUTING_BR.md](CONTRIBUTING_BR.md) e [prismarine-contribute](https://github.com/PrismarineJS/prismarine-contribute)
+
+## Uso
+
+**Vídeos**
+
+Você pode encontrar um tutorial que explica o processo de começar um bot [aqui](https://www.youtube.com/watch?v=ltWosy4Z0Kw) (em inglês).
+
+Se você quiser aprender mais, pode verificar [aqui,](https://www.youtube.com/playlist?list=PLh_alXmxHmzGy3FKbo95AkPp5D8849PEV) os códigos usados nos vídeos [aqui](https://github.com/TheDudeFromCI/Mineflayer-Youtube-Tutorials)
+
+[](https://www.youtube.com/watch?v=ltWosy4Z0Kw)
+[](https://www.youtube.com/watch?v=UWGSf08wQSc)
+[](https://www.youtube.com/watch?v=ssWE0kXDGJE)
+[](https://www.youtube.com/watch?v=walbRk20KYU)
+
+**Começando**
+
+Se não for especificada uma versão, a versão do servidor será detectada automaticamente. Se nenhuma forma de autenticação for especificada, o login da Mojang será usado automaticamente.
+
+### Exemplo: echo
+```js
+const mineflayer = require('mineflayer')
+
+const bot = mineflayer.createBot({
+ host: 'localhost', // IP do servidor de Minecraft
+ username: 'email@example.com', // Nome de usuário da conta, e-mail se for premium
+ password: '12345678' // Senha para servidores premium
+ // port: 25565, // Altere apenas se for um servidor que não usa a porta padrão (25565)
+ // version: false, // Altere apenas se for necessário uma versão específica
+ // auth: 'mojang', // Altere apenas se você tiver uma conta Microsoft (nesse caso, seria auth: 'microsoft')
+})
+
+bot.on('chat', (username, message) => {
+ if (username === bot.username) return
+ bot.chat(message)
+})
+
+// Imprimir erros e o motivo do kick se você for expulso:
+bot.on('kicked', (reason, loggedIn) => console.log(reason, loggedIn))
+bot.on('error', err => console.log(err))
+```
+
+### Veja o que o seu bot faz
+
+Graças ao projeto [prismarine-viewer](https://github.com/PrismarineJS/prismarine-viewer), você pode visualizar em uma guia do seu navegador o que o seu bot está fazendo.
+
+Tudo o que você precisa fazer é executar `npm install prismarine-viewer` e adicionar o seguinte ao seu bot:
+
+```js
+const { mineflayer: mineflayerViewer } = require('prismarine-viewer')
+bot.once('spawn', () => {
+ mineflayerViewer(bot, { port: 3007, firstPerson: true }) // a porta é onde o plug-in será hospedado no navegador, e firstPerson é para escolher se você deseja a visualização em primeira pessoa ou não
+})
+```
+
+E você poderá ver uma representação *ao vivo* como esta:
+
+[](https://prismarinejs.github.io/prismarine-viewer/)
+
+#### Exemplos Ruins
+
+| Exemplo | Descrição |
+|---|---|
+| [viewer](https://github.com/PrismarineJS/mineflayer/tree/master/examples/viewer) | Visualize o que seu bot vê no jogo |
+| [pathfinder](https://github.com/Karang/mineflayer-pathfinder/blob/master/examples/test.js) | Faça seu bot se locomover automaticamente para qualquer localização |
+| [chest](https://github.com/PrismarineJS/mineflayer/blob/master/examples/chest.js) | Aprenda a usar baús, fornos, dispensadores e mesas de encantamento |
+| [digger](https://github.com/PrismarineJS/mineflayer/blob/master/examples/digger.js) | Aprenda como criar um bot que pode quebrar blocos |
+| [discord](https://github.com/PrismarineJS/mineflayer/blob/master/examples/discord.js) | Conecte um bot Discord com um bot Mineflayer |
+| [jumper](https://github.com/PrismarineJS/mineflayer/blob/master/examples/jumper.js) | Aprenda a se mover, pular, usar veículos e atacar entidades próximas |
+| [ansi](https://github.com/PrismarineJS/mineflayer/blob/master/examples/ansi.js) | Exibe todas as mensagens do chat no console com suas cores correspondentes |
+| [guard](https://github.com/PrismarineJS/mineflayer/blob/master/examples/guard.js) | Crie um bot que defenda uma área predefinida de mobs |
+| [multiple-from-file](https://github.com/PrismarineJS/mineflayer/blob/master/examples/multiple_from_file.js) | Use um arquivo de texto com contas para criar bots |
+
+Mais exemplos na pasta de [exemplos](https://github.com/PrismarineJS/mineflayer/tree/master/examples)
+
+### Módulos
+
+A maioria do desenvolvimento está ocorrendo em pequenos módulos npm que são usados pelo Mineflayer.
+
+#### O Caminho do Node™
+
+> "Quando os aplicativos são bem feitos, eles são apenas o resíduo realmente específico da aplicação que não pode ser tão facilmente abstraído. Todos os componentes legais e reutilizáveis sublimam no GitHub e no npm, onde todos podem colaborar para avançar a comunidade." — substack de ["como eu escrevo módulos"](https://gist.github.com/substack/5075355)
+
+#### Módulos
+Estes são os principais módulos que compõem o Mineflayer:
+
+| Módulo | Descrição |
+|---|---|
+| [minecraft-protocol](https://github.com/PrismarineJS/node-minecraft-protocol) | Analisa e cria pacotes do Minecraft, autenticação e criptografia.
+| [minecraft-data](https://github.com/PrismarineJS/minecraft-data) | Módulo independente de linguagem que fornece dados do Minecraft para clientes, servidores e bibliotecas.
+| [prismarine-physics](https://github.com/PrismarineJS/prismarine-physics) | Motor de física para entidades do Minecraft
+| [prismarine-chunk](https://github.com/PrismarineJS/prismarine-chunk) | Representa um pedaço do Minecraft
+| [node-vec3](https://github.com/PrismarineJS/node-vec3) | Usa vetores 3D com testes sólidos
+| [prismarine-block](https://github.com/PrismarineJS/prismarine-block) | Representa um bloco e suas informações associadas no Minecraft
+| [prismarine-chat](https://github.com/PrismarineJS/prismarine-chat) | Analisador de mensagens de chat do Minecraft (retirado do Mineflayer)
+| [node-yggdrasil](https://github.com/PrismarineJS/node-yggdrasil) | Biblioteca Node.js para interagir com o sistema de autenticação da Mojang conhecido como Yggdrasil.
+| [prismarine-world](https://github.com/PrismarineJS/prismarine-world) | Implementação principal dos mundos do Minecraft para o Prismarine
+| [prismarine-windows](https://github.com/PrismarineJS/prismarine-windows) | Representa as interfaces do Minecraft
+| [prismarine-item](https://github.com/PrismarineJS/prismarine-item) | Representa um item e suas informações associadas no Minecraft
+| [prismarine-nbt](https://github.com/PrismarineJS/prismarine-nbt) | Analisador de NBT para node-minecraft-protocol
+| [prismarine-recipe](https://github.com/PrismarineJS/prismarine-recipe) | Representa receitas de crafting do Minecraft
+| [prismarine-biome](https://github.com/PrismarineJS/prismarine-biome) | Representa um bioma e suas informações associadas no Minecraft
+| [prismarine-entity](https://github.com/PrismarineJS/prismarine-entity) | Representa uma entidade e suas informações associadas no Minecraft
+
+### Depuração
+
+Você pode habilitar a depuração do protocolo usando a variável de ambiente `DEBUG`:
+
+```bash
+DEBUG="minecraft-protocol" node [...]
+```
+
+No Windows:
+```
+set DEBUG=minecraft-protocol
+node seu_arquivo.js
+```
+
+## Plugins de Terceiros
+
+Mineflayer tem a capacidade de instalar plugins; qualquer pessoa pode criar um plugin que adiciona uma API de alto nível ao Mineflayer.
+
+Os mais atualizados e úteis são:
+
+* [pathfinder](https://github.com/Karang/mineflayer-pathfinder) - algoritmo de busca A* avançado com muitos recursos configuráveis
+* [prismarine-viewer](https://github.com/PrismarineJS/prismarine-viewer) - visualizador de chunks na web
+* [web-inventory](https://github.com/ImHarvol/mineflayer-web-inventory) - visualizador de inventário na web
+* [statemachine](https://github.com/TheDudeFromCI/mineflayer-statemachine) - API para comportamentos mais complexos
+* [Armor Manager](https://github.com/G07cha/MineflayerArmorManager) - gerenciamento automático de armaduras
+* [Collect Block](https://github.com/TheDudeFromCI/mineflayer-collectblock) - API rápida e simples para coletar blocos.
+* [Dashboard](https://github.com/wvffle/mineflayer-dashboard) - Painel de controle para um bot do Mineflayer
+* [PVP](https://github.com/TheDudeFromCI/mineflayer-pvp) - API simples para PVP e PVE.
+* [auto-eat](https://github.com/LINKdiscordd/mineflayer-auto-eat) - Plugin para comer automaticamente.
+* [Tool](https://github.com/TheDudeFromCI/mineflayer-tool) - Plugin com uma API de alto nível para selecionar automaticamente a melhor arma/ferramenta.
+* [Hawkeye](https://github.com/sefirosweb/minecraftHawkEye) - Plugin para mirar automaticamente com arcos.
+
+Mas também dê uma olhada em:
+
+* [radar](https://github.com/andrewrk/mineflayer-radar/) - interface de radar na web usando canvas e socket.io [Demo no Youtube](https://www.youtube.com/watch?v=FjDmAfcVulQ)
+* [blockfinder](https://github.com/Darthfett/mineflayer-blockFinder) - encontra blocos no mundo tridimensional
+* [scaffold](https://github.com/andrewrk/mineflayer-scaffold) - ir para um destino específico mesmo que seja necessário construir ou quebrar blocos para alcançá-lo [Demo no Youtube](http://youtu.be/jkg6psMUSE0)
+* [auto-auth](https://github.com/G07cha/MineflayerAutoAuth) - autenticação automática por chat
+* [Bloodhound](https://github.com/Nixes/mineflayer-bloodhound) - determina quem e/ou o que é responsável por causar dano a outra entidade
+* [tps](https://github.com/SiebeDW/mineflayer-tps) - obter o tps atual (tps processado)
+* [panorama](https://github.com/IceTank/mineflayer-panorama) - tirar imagens panorâmicas do seu mundo
+
+## Projetos que Usam o Mineflayer
+
+* [rom1504/rbot](https://github.com/rom1504/rbot)
+ - [YouTube - construindo uma escada espiral](https://www.youtube.com/watch?v=UM1ZV5200S0)
+ - [YouTube - replicando uma estrutura](https://www.youtube.com/watch?v=0cQxg9uDnzA)
+* [Darthfett/Helperbot](https://github.com/Darthfett/Helperbot)
+* [vogonistic/voxel](https://github.com/vogonistic/mineflayer-voxel) - visualiza o que o bot está fazendo usando voxel.js
+* [JonnyD/Skynet](https://github.com/JonnyD/Skynet) - registra a atividade de um jogador em uma API online
+* [MinecraftChat](https://github.com/rom1504/MinecraftChat) (última versão de código aberto, criada por AlexKvazos) - Interface de chat na web para o Minecraft
+* [Cheese Bot](https://github.com/Minecheesecraft/Cheese-Bot) - bot com uma interface limpa. Feito com Node-Webkit. http://bot.ezcha.net/
+* [Chaoscraft](https://github.com/schematical/chaoscraft) - bot de Minecraft que usa algoritmos genéticos, veja [seus vídeos no YouTube](https://www.youtube.com/playlist?list=PLLkpLgU9B5xJ7Qy4kOyBJl5J6zsDIMceH)
+* [hexatester/minetelegram](https://github.com/hexatester/minetelegram) - ponte para o Telegram, feita com Mineflayer e Telegraf.
+* [e centenas mais](https://github.com/PrismarineJS/mineflayer/network/dependents) - todos os projetos que usam o Mineflayer e foram detectados pelo GitHub.
+
+## Testes
+
+### Executar Todos os Testes
+
+Basta executar: `npm test`
+
+### Executar Testes para uma Versão Específica do Minecraft
+Execute `npm test -- -g `, onde `` é uma versão do Minecraft, como `1.12`, `1.15.2`...
+
+### Executar um Teste Específico
+Execute `npm test -- -g `, onde `` é o nome do teste que você deseja executar, como `bed`, `useChests`, `rayTrace`...
+
+## Licença
+
+[MIT](LICENSE)
+
+Esta documentação não é oficialmente mantida. Para ver as últimas atualizações, consulte a documentação original: [unstable_api](../README.md)
diff --git a/docs/br/api_br.md b/docs/br/api_br.md
new file mode 100644
index 000000000..ec5d4fde1
--- /dev/null
+++ b/docs/br/api_br.md
@@ -0,0 +1,2038 @@
+
+
+**Tabela de conteúdos** *gerada com [DocToc](https://github.com/thlorenz/doctoc)*
+
+- [API](#api)
+ - [Enums](#enums)
+ - [minecraft-data](#minecraft-data)
+ - [mcdata.blocks](#mcdatablocks)
+ - [mcdata.items](#mcdataitems)
+ - [mcdata.materials](#mcdatamaterials)
+ - [mcdata.recipes](#mcdatarecipes)
+ - [mcdata.instruments](#mcdatainstruments)
+ - [mcdata.biomes](#mcdatabiomes)
+ - [mcdata.entities](#mcdataentities)
+ - [Clases](#clases)
+ - [vec3](#vec3)
+ - [mineflayer.Location](#mineflayerlocation)
+ - [Entity](#entity)
+ - [Block](#block)
+ - [Biome](#biome)
+ - [Item](#item)
+ - [windows.Window (base class)](#windowswindow-base-class)
+ - [window.deposit(itemType, metadata, count, [callback])](#windowdeposititemtype-metadata-count-callback)
+ - [window.withdraw(itemType, metadata, count, [callback])](#windowwithdrawitemtype-metadata-count-callback)
+ - [window.close()](#windowclose)
+ - [Recipe](#recipe)
+ - [mineflayer.Container](#mineflayercontainer)
+ - [mineflayer.Furnace](#mineflayerfurnace)
+ - [furnace "update"](#furnace-update)
+ - [furnace.takeInput([callback])](#furnacetakeinputcallback)
+ - [furnace.takeFuel([callback])](#furnacetakefuelcallback)
+ - [furnace.takeOutput([callback])](#furnacetakeoutputcallback)
+ - [furnace.putInput(itemType, metadata, count, [cb])](#furnaceputinputitemtype-metadata-count-cb)
+ - [furnace.putFuel(itemType, metadata, count, [cb])](#furnaceputfuelitemtype-metadata-count-cb)
+ - [furnace.inputItem()](#furnaceinputitem)
+ - [furnace.fuelItem()](#furnacefuelitem)
+ - [furnace.outputItem()](#furnaceoutputitem)
+ - [furnace.fuel](#furnacefuel)
+ - [furnace.progress](#furnaceprogress)
+ - [mineflayer.EnchantmentTable](#mineflayerenchantmenttable)
+ - [enchantmentTable "ready"](#enchantmenttable-ready)
+ - [enchantmentTable.targetItem()](#enchantmenttabletargetitem)
+ - [enchantmentTable.xpseed](#enchantmenttablexpseed)
+ - [enchantmentTable.enchantments](#enchantmenttableenchantments)
+ - [enchantmentTable.enchant(choice, [callback])](#enchantmenttableenchantchoice-callback)
+ - [enchantmentTable.takeTargetItem([callback])](#enchantmenttabletaketargetitemcallback)
+ - [enchantmentTable.putTargetItem(item, [callback])](#enchantmenttableputtargetitemitem-callback)
+ - [enchantmentTable.putLapis(item, [callback])](#enchantmenttableputlapisitem-callback)
+ - [mineflayer.anvil](#mineflayeranvil)
+ - [anvil.combine(itemOne, itemTwo[, name, callback])](#anvilcombineitemone-itemtwo-name-callback)
+ - [anvil.combine(item[, name, callback])](#anvilcombineitem-name-callback)
+ - [villager "ready"](#villager-ready)
+ - [villager.trades](#villagertrades)
+ - [villager.trade(tradeIndex, [times], [cb])](#villagertradetradeindex-times-cb)
+ - [mineflayer.ScoreBoard](#mineflayerscoreboard)
+ - [ScoreBoard.name](#scoreboardname)
+ - [ScoreBoard.title](#scoreboardtitle)
+ - [ScoreBoard.itemsMap](#scoreboarditemsmap)
+ - [ScoreBoard.items](#scoreboarditems)
+ - [mineflayer.BossBar](#mineflayerbossbar)
+ - [BossBar.title](#bossbartitle)
+ - [BossBar.health](#bossbarhealth)
+ - [BossBar.dividers](#bossbardividers)
+ - [BossBar.entityUUID](#bossbarentityuuid)
+ - [BossBar.shouldDarkenSky](#bossbarshoulddarkensky)
+ - [BossBar.isDragonBar](#bossbarisdragonbar)
+ - [BossBar.createFog](#bossbarcreatefog)
+ - [BossBar.color](#bossbarcolor)
+ - [Bot](#bot)
+ - [mineflayer.createBot(options)](#mineflayercreatebotoptions)
+ - [Properties](#properties)
+ - [bot.world](#botworld)
+ - [world "blockUpdate" (oldBlock, newBlock)](#world-blockupdate-oldblock-newblock)
+ - [world "blockUpdate:(x, y, z)" (oldBlock, newBlock)](#world-blockupdatex-y-z-oldblock-newblock)
+ - [bot.entity](#botentity)
+ - [bot.entities](#botentities)
+ - [bot.username](#botusername)
+ - [bot.spawnPoint](#botspawnpoint)
+ - [bot.heldItem](#bothelditem)
+ - [bot.game.levelType](#botgameleveltype)
+ - [bot.game.dimension](#botgamedimension)
+ - [bot.game.difficulty](#botgamedifficulty)
+ - [bot.game.gameMode](#botgamegamemode)
+ - [bot.game.hardcore](#botgamehardcore)
+ - [bot.game.maxPlayers](#botgamemaxplayers)
+ - [bot.game.serverBrand](#botgameserverbrand)
+ - [bot.physicsEnabled](#botphysicsenabled)
+ - [bot.player](#botplayer)
+ - [bot.players](#botplayers)
+ - [bot.isRaining](#botisraining)
+ - [bot.rainState](#botrainstate)
+ - [bot.thunderState](#botthunderstate)
+ - [bot.chatPatterns](#botchatpatterns)
+ - [bot.settings.chat](#botsettingschat)
+ - [bot.settings.colorsEnabled](#botsettingscolorsenabled)
+ - [bot.settings.viewDistance](#botsettingsviewdistance)
+ - [bot.settings.difficulty](#botsettingsdifficulty)
+ - [bot.settings.skinParts](#botsettingsskinparts)
+ - [bot.settings.skinParts.showCape](#botsettingsskinpartsshowcape)
+ - [bot.settings.skinParts.showJacket](#botsettingsskinpartsshowjacket)
+ - [bot.settings.skinParts.showLeftSleeve](#botsettingsskinpartsshowleftsleeve)
+ - [bot.settings.skinParts.showRightSleeve](#botsettingsskinpartsshowrightsleeve)
+ - [bot.settings.skinParts.showLeftPants](#botsettingsskinpartsshowleftpants)
+ - [bot.settings.skinParts.showRightPants](#botsettingsskinpartsshowrightpants)
+ - [bot.settings.skinParts.showHat](#botsettingsskinpartsshowhat)
+ - [bot.experience.level](#botexperiencelevel)
+ - [bot.experience.points](#botexperiencepoints)
+ - [bot.experience.progress](#botexperienceprogress)
+ - [bot.health](#bothealth)
+ - [bot.food](#botfood)
+ - [bot.foodSaturation](#botfoodsaturation)
+ - [bot.oxygenLevel](#botoxygenlevel)
+ - [bot.physics](#botphysics)
+ - [bot.simpleClick.leftMouse (slot)](#botsimpleclickleftmouse-slot)
+ - [bot.simpleClick.rightMouse (slot)](#botsimpleclickrightmouse-slot)
+ - [bot.time.doDaylightCycle](#bottimedodaylightcycle)
+ - [bot.time.bigTime](#bottimebigtime)
+ - [bot.time.time](#bottimetime)
+ - [bot.time.timeOfDay](#bottimetimeofday)
+ - [bot.time.day](#bottimeday)
+ - [bot.time.isDay](#bottimeisday)
+ - [bot.time.moonPhase](#bottimemoonphase)
+ - [bot.time.bigAge](#bottimebigage)
+ - [bot.time.age](#bottimeage)
+ - [bot.quickBarSlot](#botquickbarslot)
+ - [bot.inventory](#botinventory)
+ - [bot.targetDigBlock](#bottargetdigblock)
+ - [bot.isSleeping](#botissleeping)
+ - [bot.scoreboards](#botscoreboards)
+ - [bot.scoreboard](#botscoreboard)
+ - [bot.controlState](#botcontrolstate)
+ - [Events](#events)
+ - ["chat" (username, message, translate, jsonMsg, matches)](#chat-username-message-translate-jsonmsg-matches)
+ - ["whisper" (username, message, translate, jsonMsg, matches)](#whisper-username-message-translate-jsonmsg-matches)
+ - ["actionBar" (jsonMsg)](#actionbar-jsonmsg)
+ - ["message" (jsonMsg, position)](#message-jsonmsg-position)
+ - ["messagestr" (message, messagePosition, jsonMsg)](#messagestr-message-messageposition-jsonmsg)
+ - ["inject_allowed"](#inject_allowed)
+ - ["login"](#login)
+ - ["spawn"](#spawn)
+ - ["respawn"](#respawn)
+ - ["game"](#game)
+ - ["resourcePack" (url, hash)](#resourcepack-url-hash)
+ - ["title"](#title)
+ - ["rain"](#rain)
+ - ["weatherUpdate"](#weatherupdate)
+ - ["time"](#time)
+ - ["kicked" (reason, loggedIn)](#kicked-reason-loggedin)
+ - ["end"](#end)
+ - ["error" (err)](#error-err)
+ - ["spawnReset"](#spawnreset)
+ - ["death"](#death)
+ - ["health"](#health)
+ - ["breath"](#breath)
+ - ["entitySwingArm" (entity)](#entityswingarm-entity)
+ - ["entityHurt" (entity)](#entityhurt-entity)
+ - ["entityDead" (entity)](#entitydead-entity)
+ - ["entityTaming" (entity)](#entitytaming-entity)
+ - ["entityTamed" (entity)](#entitytamed-entity)
+ - ["entityShakingOffWater" (entity)](#entityshakingoffwater-entity)
+ - ["entityEatingGrass" (entity)](#entityeatinggrass-entity)
+ - ["entityWake" (entity)](#entitywake-entity)
+ - ["entityEat" (entity)](#entityeat-entity)
+ - ["entityCriticalEffect" (entity)](#entitycriticaleffect-entity)
+ - ["entityMagicCriticalEffect" (entity)](#entitymagiccriticaleffect-entity)
+ - ["entityCrouch" (entity)](#entitycrouch-entity)
+ - ["entityUncrouch" (entity)](#entityuncrouch-entity)
+ - ["entityEquip" (entity)](#entityequip-entity)
+ - ["entitySleep" (entity)](#entitysleep-entity)
+ - ["entitySpawn" (entity)](#entityspawn-entity)
+ - ["itemDrop" (entity)](#itemdrop-entity)
+ - ["playerCollect" (collector, collected)](#playercollect-collector-collected)
+ - ["entityGone" (entity)](#entitygone-entity)
+ - ["entityMoved" (entity)](#entitymoved-entity)
+ - ["entityDetach" (entity, vehicle)](#entitydetach-entity-vehicle)
+ - ["entityAttach" (entity, vehicle)](#entityattach-entity-vehicle)
+ - ["entityUpdate" (entity)](#entityupdate-entity)
+ - ["entityEffect" (entity, effect)](#entityeffect-entity-effect)
+ - ["entityEffectEnd" (entity, effect)](#entityeffectend-entity-effect)
+ - ["playerJoined" (player)](#playerjoined-player)
+ - ["playerUpdated" (player)](#playerupdated-player)
+ - ["playerLeft" (player)](#playerleft-player)
+ - ["blockUpdate" (oldBlock, newBlock)](#blockupdate-oldblock-newblock)
+ - ["blockUpdate:(x, y, z)" (oldBlock, newBlock)](#blockupdatex-y-z-oldblock-newblock)
+ - ["blockPlaced" (oldBlock, newBlock)](#blockplaced-oldblock-newblock)
+ - ["chunkColumnLoad" (point)](#chunkcolumnload-point)
+ - ["chunkColumnUnload" (point)](#chunkcolumnunload-point)
+ - ["soundEffectHeard" (soundName, position, volume, pitch)](#soundeffectheard-soundname-position-volume-pitch)
+ - ["hardcodedSoundEffectHeard" (soundId, soundCategory, position, volume, pitch)](#hardcodedsoundeffectheard-soundid-soundcategory-position-volume-pitch)
+ - ["noteHeard" (block, instrument, pitch)](#noteheard-block-instrument-pitch)
+ - ["pistonMove" (block, isPulling, direction)](#pistonmove-block-ispulling-direction)
+ - ["chestLidMove" (block, isOpen, block2)](#chestlidmove-block-isopen-block2)
+ - ["blockBreakProgressObserved" (block, destroyStage)](#blockbreakprogressobserved-block-destroystage)
+ - ["blockBreakProgressEnd" (block)](#blockbreakprogressend-block)
+ - ["diggingCompleted" (block)](#diggingcompleted-block)
+ - ["diggingAborted" (block)](#diggingaborted-block)
+ - ["move"](#move)
+ - ["forcedMove"](#forcedmove)
+ - ["mount"](#mount)
+ - ["dismount" (vehicle)](#dismount-vehicle)
+ - ["windowOpen" (window)](#windowopen-window)
+ - ["windowClose" (window)](#windowclose-window)
+ - ["sleep"](#sleep)
+ - ["wake"](#wake)
+ - ["experience"](#experience)
+ - ["scoreboardCreated" (scoreboard)](#scoreboardcreated-scoreboard)
+ - ["scoreboardDeleted" (scoreboard)](#scoreboarddeleted-scoreboard)
+ - ["scoreboardTitleChanged" (scoreboard)](#scoreboardtitlechanged-scoreboard)
+ - ["scoreUpdated" (scoreboard, item)](#scoreupdated-scoreboard-item)
+ - ["scoreRemoved" (scoreboard, item)](#scoreremoved-scoreboard-item)
+ - ["scoreboardPosition" (position, scoreboard)](#scoreboardposition-position-scoreboard)
+ - ["bossBarCreated" (bossBar)](#bossbarcreated-bossbar)
+ - ["bossBarDeleted" (bossBar)](#bossbardeleted-bossbar)
+ - ["bossBarUpdated" (bossBar)](#bossbarupdated-bossbar)
+ - ["heldItemChanged" (heldItem)](#helditemchanged-helditem)
+ - ["physicsTick" ()](#physicstick-)
+ - ["chat:name" (matches)](#chatname-matches)
+ - [Functions](#functions)
+ - [bot.blockAt(point, extraInfos=true)](#botblockatpoint-extrainfostrue)
+ - [bot.waitForChunksToLoad(cb)](#botwaitforchunkstoloadcb)
+ - [bot.blockInSight(maxSteps, vectorLength)](#botblockinsightmaxsteps-vectorlength)
+ - [bot.blockAtCursor(maxDistance=256)](#botblockatcursormaxdistance256)
+ - [bot.canSeeBlock(block)](#botcanseeblockblock)
+ - [bot.findBlocks(options)](#botfindblocksoptions)
+ - [bot.findBlock(options)](#botfindblockoptions)
+ - [bot.canDigBlock(block)](#botcandigblockblock)
+ - [bot.recipesFor(itemType, metadata, minResultCount, craftingTable)](#botrecipesforitemtype-metadata-minresultcount-craftingtable)
+ - [bot.recipesAll(itemType, metadata, craftingTable)](#botrecipesallitemtype-metadata-craftingtable)
+ - [bot.nearestEntity(match = (entity) => { return true })](#botnearestentitymatch--entity---return-true-)
+ - [Methods](#methods)
+ - [bot.end()](#botend)
+ - [bot.quit(reason)](#botquitreason)
+ - [bot.tabComplete(str, cb, [assumeCommand], [sendBlockInSight])](#bottabcompletestr-cb-assumecommand-sendblockinsight)
+ - [bot.chat(message)](#botchatmessage)
+ - [bot.whisper(username, message)](#botwhisperusername-message)
+ - [bot.chatAddPattern(pattern, chatType, description)](#botchataddpatternpattern-chattype-description)
+ - [bot.addChatPattern(name, pattern, chatPatternOptions)](#botaddchatpatternname-pattern-chatpatternoptions)
+ - [bot.addChatPatternSet(name, patterns, chatPatternOptions)](#botaddchatpatternsetname-patterns-chatpatternoptions)
+ - [bot.removeChatPattern(name)](#botremovechatpatternname)
+ - [bot.awaitMessage(...args)](#botawaitmessageargs)
+ - [bot.setSettings(options)](#botsetsettingsoptions)
+ - [bot.loadPlugin(plugin)](#botloadpluginplugin)
+ - [bot.loadPlugins(plugins)](#botloadpluginsplugins)
+ - [bot.hasPlugin(plugin)](#bothaspluginplugin)
+ - [bot.sleep(bedBlock, [cb])](#botsleepbedblock-cb)
+ - [bot.isABed(bedBlock)](#botisabedbedblock)
+ - [bot.wake([cb])](#botwakecb)
+ - [bot.setControlState(control, state)](#botsetcontrolstatecontrol-state)
+ - [bot.getControlState(control)](#botgetcontrolstatecontrol)
+ - [bot.clearControlStates()](#botclearcontrolstates)
+ - [bot.lookAt(point, [force], [callback])](#botlookatpoint-force-callback)
+ - [bot.look(yaw, pitch, [force], [callback])](#botlookyaw-pitch-force-callback)
+ - [bot.updateSign(block, text)](#botupdatesignblock-text)
+ - [bot.equip(item, destination, [callback])](#botequipitem-destination-callback)
+ - [bot.unequip(destination, [callback])](#botunequipdestination-callback)
+ - [bot.tossStack(item, [callback])](#bottossstackitem-callback)
+ - [bot.toss(itemType, metadata, count, [callback])](#bottossitemtype-metadata-count-callback)
+ - [bot.dig(block, [forceLook = true], [digFace], [callback])](#botdigblock-forcelook--true-digface-callback)
+ - [bot.stopDigging()](#botstopdigging)
+ - [bot.digTime(block)](#botdigtimeblock)
+ - [bot.acceptResourcePack()](#botacceptresourcepack)
+ - [bot.denyResourcePack()](#botdenyresourcepack)
+ - [bot.placeBlock(referenceBlock, faceVector, cb)](#botplaceblockreferenceblock-facevector-cb)
+ - [bot.placeEntity(referenceBlock, faceVector)](#botplaceentityreferenceblock-facevector)
+ - [bot.activateBlock(block, [callback])](#botactivateblockblock-callback)
+ - [bot.activateEntity(entity, [callback])](#botactivateentityentity-callback)
+ - [bot.activateEntityAt(entity, position, [callback])](#botactivateentityatentity-position-callback)
+ - [bot.consume(callback)](#botconsumecallback)
+ - [bot.fish(callback)](#botfishcallback)
+ - [bot.activateItem(offHand=false)](#botactivateitemoffhandfalse)
+ - [bot.deactivateItem()](#botdeactivateitem)
+ - [bot.useOn(targetEntity)](#botuseontargetentity)
+ - [bot.attack(entity)](#botattackentity)
+ - [bot.swingArm([hand], showHand)](#botswingarmhand-showhand)
+ - [bot.mount(entity)](#botmountentity)
+ - [bot.dismount()](#botdismount)
+ - [bot.moveVehicle(left,forward)](#botmovevehicleleftforward)
+ - [bot.setQuickBarSlot(slot)](#botsetquickbarslotslot)
+ - [bot.craft(recipe, count, craftingTable, [callback])](#botcraftrecipe-count-craftingtable-callback)
+ - [bot.writeBook(slot, pages, [callback])](#botwritebookslot-pages-callback)
+ - [bot.openContainer(containerBlock or containerEntity)](#botopencontainercontainerblock-or-containerentity)
+ - [bot.openChest(chestBlock or minecartchestEntity)](#botopenchestchestblock-or-minecartchestentity)
+ - [bot.openFurnace(furnaceBlock)](#botopenfurnacefurnaceblock)
+ - [bot.openDispenser(dispenserBlock)](#botopendispenserdispenserblock)
+ - [bot.openEnchantmentTable(enchantmentTableBlock)](#botopenenchantmenttableenchantmenttableblock)
+ - [bot.openAnvil(anvilBlock)](#botopenanvilanvilblock)
+ - [bot.openVillager(villagerEntity)](#botopenvillagervillagerentity)
+ - [bot.trade(villagerInstance, tradeIndex, [times], [cb])](#bottradevillagerinstance-tradeindex-times-cb)
+ - [bot.setCommandBlock(pos, command, [options])](#botsetcommandblockpos-command-options)
+ - [bot.supportFeature(name)](#botsupportfeaturename)
+ - [bot.waitForTicks(ticks)](#botwaitforticksticks)
+ - [Lower level inventory methods](#lower-level-inventory-methods)
+ - [bot.clickWindow(slot, mouseButton, mode, cb)](#botclickwindowslot-mousebutton-mode-cb)
+ - [bot.putSelectedItemRange(start, end, window, slot)](#botputselecteditemrangestart-end-window-slot)
+ - [bot.putAway(slot)](#botputawayslot)
+ - [bot.closeWindow(window)](#botclosewindowwindow)
+ - [bot.transfer(options, cb)](#bottransferoptions-cb)
+ - [bot.openBlock(block)](#botopenblockblock)
+ - [bot.openEntity(entity)](#botopenentityentity)
+ - [bot.moveSlotItem(sourceSlot, destSlot, cb)](#botmoveslotitemsourceslot-destslot-cb)
+ - [bot.updateHeldItem()](#botupdatehelditem)
+ - [bot.getEquipmentDestSlot(destination)](#botgetequipmentdestslotdestination)
+ - [bot.creative](#botcreative)
+ - [bot.creative.setInventorySlot(slot, item, [callback])](#botcreativesetinventoryslotslot-item-callback)
+ - [bot.creative.flyTo(destination, [cb])](#botcreativeflytodestination-cb)
+ - [bot.creative.startFlying()](#botcreativestartflying)
+ - [bot.creative.stopFlying()](#botcreativestopflying)
+
+
+
+# API
+
+## Enums
+
+Esses enums estão armazenados em um projeto independente da linguagem [minecraft-data](https://github.com/PrismarineJS/minecraft-data) e acessados pelo [node-minecraft-data](https://github.com/PrismarineJS/node-minecraft-data).
+
+### minecraft-data
+Os dados estão disponíveis no módulo [node-minecraft-data](https://github.com/PrismarineJS/node-minecraft-data)
+
+`require('minecraft-data')(bot.version)` te dá acesso a eles.
+
+### mcdata.blocks
+Blocos ordenados por ID.
+
+### mcdata.items
+Itens ordenados por ID.
+
+### mcdata.materials
+A chave é o material. O valor é um objeto com a chave sendo o ID da ferramenta e o valor é o multiplicador de eficiência.
+
+### mcdata.recipes
+Receitas ordenadas por ID.
+
+### mcdata.instruments
+Ferramentas ordenadas por ID.
+
+### mcdata.biomes
+Biomas ordenados por ID.
+
+### mcdata.entities
+Entidades ordenadas por ID.
+
+## Clases
+
+### vec3
+
+Veja [andrewrk/node-vec3](https://github.com/andrewrk/node-vec3)
+
+Todos os pontos no mineflayer são instâncias dessa classe.
+
+- x - sul
+- y - para cima
+- z - oeste
+
+Funções e métodos que requerem um ponto aceitam instâncias `Vec3`, uma matriz com 3 valores e um objeto com as propriedades `x`, `y` e `z`.
+
+### mineflayer.Location
+
+### Entity
+
+Entidades representam jogadores, mobs e objetos. Elas são emitidas em muitos eventos, mas você pode acessar sua própria entidade com `bot.entity`.
+Veja [prismarine-entity](https://github.com/PrismarineJS/prismarine-entity)
+
+### Block
+
+Veja [prismarine-block](https://github.com/PrismarineJS/prismarine-block)
+
+Além disso, `block.blockEntity` é um campo adicional com os dados da entidade do bloco em formato de `Object`.
+```js
+// sign.blockEntity
+{
+ x: -53,
+ y: 88,
+ z: 66,
+ id: 'minecraft:sign', // 'Sign' in 1.10
+ Text1: { toString: Function }, // ChatMessage object
+ Text2: { toString: Function }, // ChatMessage object
+ Text3: { toString: Function }, // ChatMessage object
+ Text4: { toString: Function } // ChatMessage object
+}
+```
+
+### Biome
+
+Veja [prismarine-biome](https://github.com/PrismarineJS/prismarine-biome)
+
+### Item
+
+Veja [prismarine-item](https://github.com/PrismarineJS/prismarine-item)
+
+### windows.Window (base class)
+
+Veja [prismarine-windows](https://github.com/PrismarineJS/prismarine-windows)
+
+#### window.deposit(itemType, metadata, count, [callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento ao ser concluída.
+
+- `itemType` - ID numérico do item.
+- `metadata` - valor numérico. `null` significa que qualquer valor coincide.
+- `count` - quantos itens devem ser depositados. `null` é um alias para 1.
+- `callback(err)` - (opcional) - executado ao ser concluída.
+
+#### window.withdraw(itemType, metadata, count, [callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento ao ser concluída.
+
+ * `itemType` - ID numérico do item
+ * `metadata` - valor numérico. `null` significa que qualquer valor é correspondente.
+ * `count` - quantos itens devem ser retirados. `null` é um alias para 1.
+ * `callback(err)` - (opcional) - executado ao finalizar
+
+#### window.close()
+
+Fecha a interface/janela.
+
+### Recipe
+
+Veja [prismarine-recipe](https://github.com/PrismarineJS/prismarine-recipe).
+
+### mineflayer.Container
+
+Estende windows.Window para baús, dispensadores, etc...
+Veja `bot.openContainer(blocoDoBaú ou entidadeDeCarrinhoDeMinério)`.
+
+### mineflayer.Furnace
+
+Estende windows.Window para fornalhas, fundidores, etc...
+Veja `bot.openFurnace(blocoDaFornalha)`.
+
+#### Furnace "update"
+
+É emitido quando `fornalha.combustível` e/ou `fornalha.progresso` são atualizados.
+
+#### furnace.takeInput([callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+ * `callback(err, item)`
+
+#### furnace.takeFuel([callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+ * `callback(err, item)`
+
+#### furnace.takeOutput([callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+ * `callback(err, item)`
+
+#### furnace.putInput(itemType, metadata, count, [cb])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+#### furnace.putFuel(itemType, metadata, count, [cb])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+#### furnace.inputItem()
+
+Retorna uma instância `Item` que é o item de entrada.
+
+#### furnace.fuelItem()
+
+Retorna uma instância `Item` que é o combustível.
+
+#### furnace.outputItem()
+
+Retorna uma instância `Item` que é o item de saída.
+
+#### furnace.fuel
+
+Quanto combustível resta, variando de 0 a 1.
+
+#### furnace.progress
+
+Quanto o item está avançado no processo, variando de 0 a 1.
+
+### mineflayer.EnchantmentTable
+
+Estende windows.Window para mesas de encantamento.
+Veja `bot.openEnchantmentTable(blocoDaMesaDeEncantamento)`.
+
+#### enchantmentTable "ready"
+
+É emitido quando `mesaDeEncantamento.encantamentos` está completo e você pode escolher um encantamento executando `mesaDeEncantamento.encantar(escolha)`.
+
+#### enchantmentTable.targetItem()
+
+Retorna os itens de entrada e saída.
+
+#### enchantmentTable.xpseed
+
+A semente de XP de 16 bits enviada pelo servidor.
+
+#### enchantmentTable.enchantments
+
+Array de comprimento 3 com três encantamentos que você pode escolher.
+`level` pode ser -1 se o servidor ainda não enviou os dados.
+
+Parece com:
+
+```js
+[
+ {
+ level: 3
+ },
+ {
+ level: 4
+ },
+ {
+ level: 9
+ }
+]
+```
+
+#### enchantmentTable.enchant(choice, [callback])
+
+Esta função também retorna uma `Promise`, com o `item` como argumento quando concluída.
+
+* `escolha` - [0-2], o índice do encantamento que você deseja escolher.
+* `callback(err, item)` - (opcional) executado ao finalizar.
+
+#### enchantmentTable.takeTargetItem([callback])
+
+Esta função também retorna uma `Promise`, com o `item` como argumento quando concluída.
+
+* `callback(err, item)`
+
+#### enchantmentTable.putTargetItem(item, [callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+* `callback(err)`
+
+#### enchantmentTable.putLapis(item, [callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+* `callback(err)`
+
+### mineflayer.anvil
+
+Estende a janela de janelas para bigornas.
+Veja `bot.openAnvil(anvilBlock)`.
+
+#### anvil.combine(itemUm, itemDois[, nome, callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+* `callback(err)` - para usar o retorno de chamada, o nome deve estar vazio ('').
+
+#### anvil.combine(item[, nome, callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+* `callback(err)`
+
+#### villager "ready"
+
+É emitido quando `vilarejo.trocas` foram carregadas.
+
+#### villager.trades
+
+Array de negociações
+
+Semelhante a:
+
+```js
+[
+ {
+ firstInput: Item,
+ output: Item,
+ hasSecondItem: false,
+ secondaryInput: null,
+ disabled: false,
+ tooluses: 0,
+ maxTradeuses: 7
+ },
+ {
+ firstInput: Item,
+ output: Item,
+ hasSecondItem: false,
+ secondaryInput: null,
+ disabled: false,
+ tooluses: 0,
+ maxTradeuses: 7
+ },
+ {
+ firstInput: Item,
+ output: Item,
+ hasSecondItem: true,
+ secondaryInput: Item,
+ disabled: false,
+ tooluses: 0,
+ maxTradeuses: 7
+ }
+]
+```
+
+#### villager.trade(tradeIndex, [times], [cb])
+É o mesmo que [bot.trade(villagerInstance, tradeIndex, [times], [cb])](#bottradevillagerinstance-tradeindex-times-cb)
+
+### mineflayer.ScoreBoard
+
+#### ScoreBoard.name
+
+Nome do placar.
+
+#### ScoreBoard.title
+
+O título do placar (nem sempre é o mesmo que o nome).
+
+#### ScoreBoard.itemsMap
+
+Um objeto com todos os itens do placar nele.
+```js
+{
+ wvffle: { name: 'wvffle', value: 3 },
+ dzikoysk: { name: 'dzikoysk', value: 6 }
+}
+```
+
+#### ScoreBoard.items
+
+Uma matriz com todos os itens no placar.
+```js
+[
+ { name: 'dzikoysk', value: 6 },
+ { name: 'wvffle', value: 3 }
+]
+```
+
+### mineflayer.BossBar
+
+#### BossBar.title
+
+Título da barra de vida do chefe, instância de ChatMessage
+
+#### BossBar.health
+
+Porcentagem da vida do chefe, de `0` a `1`
+
+#### BossBar.dividers
+
+Número de divisores na barra, pode ser `0`, `6`, `10`, `12` ou `20`
+
+#### BossBar.entityUUID
+
+UUID da entidade do chefe
+
+#### BossBar.shouldDarkenSky
+
+Determina se o céu deve escurecer ou não
+
+#### BossBar.isDragonBar
+
+Determina se a barra é a barra de vida do dragão
+
+#### BossBar.createFog
+
+Determina se a barra cria neblina ou não
+
+#### BossBar.color
+
+Determina el color de la barra entre `pink`, `blue`, `red`, `green`, `yellow`, `purple` y `white` (`rosa`, `azul`, `rojo`, `verde`, `amarillo`, `morado` y `blanco`)
+
+## Bot
+
+### mineflayer.createBot(options)
+
+Crie e retorne uma instância da classe Bot.
+
+`options` é um objeto que contém propriedades opcionais:
+ * username : (usuário) o valor padrão é 'Player'
+ * port : (porta) o valor padrão é 25565
+ * password : (senha) pode ser omitida (se os tokens também forem omitidos, tentará conectar no modo offline)
+ * host : (ip) o valor padrão é localhost
+ * version : se omitido, tentará determinar automaticamente a versão. Por exemplo: "1.12.2"
+ * auth : (autenticação) o valor padrão é 'mojang', também pode ser 'microsoft'
+ * clientToken : gerado se uma senha for fornecida
+ * accessToken : gerado se uma senha for fornecida
+ * logErrors : o valor padrão é true, retém erros e os imprime
+ * hideErrors : o valor padrão é true, para ocultar erros (mesmo se logErrors for true)
+ * keepAlive : envia pacotes keepAlive: o valor padrão é true
+ * checkTimeoutInterval : o valor padrão é `30*1000` (30s), verifica se o pacote keepAlive foi recebido neste período, desconecta o bot se não for recebido.
+ * loadInternalPlugins : o valor padrão é true
+ * storageBuilder : uma função opcional, que recebe a versão e o nome do mundo (worldName) como argumentos e retorna uma instância de algo com a mesma API que prismarine-provider-anvil. Será usado para salvar o mundo.
+ * client : uma instância de node-minecraft-protocol, se não for especificado, o mineflayer criará seu próprio cliente. Isso é útil para usar o mineflayer por meio de um proxy de vários clientes ou para um cliente vanilla e um cliente mineflayer.
+ * plugins : objeto: o valor padrão é {}
+ - pluginName : false : não carrega o plugin interno com esse nome, por exemplo, `pluginName`
+ - pluginName : true : carrega o plugin interno com esse nome, por exemplo, `pluginName`, mesmo se loadInternalPlugins estiver definido como false
+ - pluginName : função para introduzir : carrega um plugin de terceiros (externo), anulando o plugin interno com o mesmo nome, por exemplo, `pluginName`
+ * physicsEnabled : o valor padrão é true, se o bot deve ser afetado pela física, pode ser modificado através de bot.physicsEnabled
+ * [chat](#bot.settings.chat)
+ * [colorsEnabled](#bot.settings.colorsEnabled)
+ * [viewDistance](#bot.settings.viewDistance)
+ * [difficulty](#bot.settings.difficulty)
+ * [skinParts](#bot.settings.skinParts)
+ * chatLengthLimit : o valor máximo de caracteres que podem ser enviados com uma única mensagem. Se não for especificado, será 100 em versões anteriores à 1.11 e 256 na 1.11 e posteriores.
+
+### Properties
+
+#### bot.world
+
+Uma representação sincronizada do mundo. Confira a documentação em http://github.com/PrismarineJS/prismarine-world
+
+#### world "blockUpdate" (oldBlock, newBlock)
+
+É emitido quando um bloco é atualizado. Retorna o bloco antigo `oldBlock` e o novo bloco `newBlock`.
+
+Observação: `oldBlock` pode ser `null`.
+
+#### world "blockUpdate:(x, y, z)" (oldBlock, newBlock)
+
+É emitido quando um bloco em uma coordenada é atualizado. Retorna o bloco antigo `oldBlock` e o novo bloco `newBlock`.
+
+Observação: `oldBlock` pode ser `null`.
+
+
+#### bot.entity
+
+Sua própria entidade. Consulte `Entity`.
+
+#### bot.entities
+
+Todas as entidades próximas. Este objeto é um mapa de entityId (id da entidade) para entity (entidade).
+
+#### bot.username
+
+Use isso para descobrir seu próprio nome.
+
+#### bot.spawnPoint
+
+Coordenadas do ponto de spawn, para onde todas as bússolas apontam.
+
+#### bot.heldItem
+
+O item na mão do bot, apresentado como uma instância [prismarine-item](https://github.com/PrismarineJS/prismarine-item) especificado com seus metadados, dados NBT, etc.
+
+#### bot.game.levelType
+
+Tipo do nível do jogo.
+
+#### bot.game.dimension
+
+Tipo da dimensão.
+
+#### bot.game.difficulty
+
+Tipo de dificuldade do jogo.
+
+#### bot.game.gameMode
+
+Modo de jogo do bot.
+
+#### bot.game.hardcore
+
+Se o jogo está no modo hardcore ou não.
+
+#### bot.game.maxPlayers
+
+O número máximo de jogadores no jogo.
+
+#### bot.game.serverBrand
+
+A marca do servidor.
+
+#### bot.physicsEnabled
+
+Se a física deve ser habilitada, o valor padrão é true.
+
+#### bot.player
+
+Objeto do jogador do bot
+```js
+{
+ username: 'player',
+ displayName: { toString: Function }, // Objeto ChatMessage.
+ gamemode: 0,
+ ping: 28,
+ entity: entity // nulo se você estiver muito longe (fora da zona renderizada)
+}
+```
+
+#### bot.players
+
+Mapa dos nomes dos jogadores no jogo.
+
+#### bot.isRaining
+
+Determina se está chovendo.
+
+#### bot.rainState
+
+Um número indicando o nível de chuva atual. Se não estiver chovendo, este valor será 0. Quando começa a chover, o valor aumenta gradualmente para 1. E quando para de chover, diminui gradualmente para 0.
+
+Cada vez que `bot.rainState` muda, o evento "weatherUpdate" é emitido.
+
+#### bot.thunderState
+
+Um número indicando o nível de tempestade de raios atual. Se não houver tempestade, este valor será 0. Quando começa uma tempestade, o valor aumenta gradualmente para 1. E quando a tempestade para, diminui gradualmente para 0.
+
+Cada vez que `bot.thunderState` muda, o evento "weatherUpdate" é emitido.
+
+Isso é semelhante ao `bot.rainState`, mas para tempestades de raios. Para tempestades de raios, `bot.rainState` e `bot.thunderState` mudarão.
+
+#### bot.chatPatterns
+
+Isso é uma matriz de objetos de padrões, no seguinte formato:
+{ /regex/, "chattype", "descrição")
+ * /regex/ - um padrão regex, deve ter pelo menos dois grupos de captura.
+ * 'chattype' - o tipo de chat que deve corresponder, pode ser "chat" (conversa) ou "whisper" (sussurro), ou qualquer outro.
+ * 'descrição' - descrição do padrão, opcional.
+
+#### bot.settings.chat
+
+Opções:
+
+ * `enabled` (ativado) (padrão)
+ * `commandsOnly` (apenasComandos)
+ * `disabled` (desativado)
+
+#### bot.settings.colorsEnabled
+
+Seu valor padrão é verdadeiro, se deve receber códigos de cor do servidor.
+
+#### bot.settings.viewDistance
+
+Opções:
+ * `far` (distante) (padrão)
+ * `normal`
+ * `short` (curto)
+ * `tiny` (minúsculo)
+
+#### bot.settings.difficulty
+
+O mesmo que em server.properties.
+
+#### bot.settings.skinParts
+
+Esses booleanos controlam se as partes externas da skin do jogador devem ser visíveis.
+
+##### bot.settings.skinParts.showCape
+
+Se você tem uma capa, pode desativá-la alterando isso para falso.
+
+##### bot.settings.skinParts.showJacket
+
+Se a parte externa do peito deve ser mostrada.
+
+##### bot.settings.skinParts.showLeftSleeve
+
+Se a parte externa do braço esquerdo deve ser mostrada.
+
+##### bot.settings.skinParts.showRightSleeve
+
+Se a parte externa do braço direito deve ser mostrada.
+
+##### bot.settings.skinParts.showLeftPants
+
+Se a parte externa da perna esquerda deve ser mostrada.
+
+##### bot.settings.skinParts.showRightPants
+
+Se a parte externa da perna direita deve ser mostrada.
+
+##### bot.settings.skinParts.showHat
+
+Se a parte externa da cabeça deve ser mostrada.
+
+#### bot.experience.level
+
+O nível de experiência do bot.
+
+#### bot.experience.points
+
+Total de pontos de experiência do bot.
+
+#### bot.experience.progress
+
+Entre 0 e 1 - a quantidade que falta para atingir o próximo nível.
+
+#### bot.health
+
+Números entre 0 e 20 representando o número de metades de coração.
+
+#### bot.food
+
+Números de 0 a 20 representando o número de metades de coxas de frango.
+
+#### bot.foodSaturation
+
+A saturação atua como um "suprimento" de comida. Se a saturação for maior que 0, o nível de comida não diminuirá. Os jogadores que entram no jogo têm automaticamente uma saturação de 5,0. Comer aumenta a saturação e o nível de comida.
+
+#### bot.oxygenLevel
+
+Número de 0 a 20 representando o número de metades de bolhas do nível de oxigênio.
+
+#### bot.physics
+
+Modifique esses números para alterar a gravidade, velocidade de salto, velocidade terminal, etc. Faça isso por sua própria conta e risco.
+
+#### bot.simpleClick.leftMouse (slot)
+
+Abstração de `bot.clickWindow(slot, 0, 0)`
+
+#### bot.simpleClick.rightMouse (slot)
+
+Abstração de `bot.clickWindow(slot, 1, 0)`
+
+#### bot.time.doDaylightCycle
+
+Se o gamerule doDaylightCycle está ativado ou desativado.
+
+#### bot.time.bigTime
+
+O número total de ticks desde o dia 0.
+
+Este valor é do tipo BigInt e é muito preciso, mesmo com valores muito grandes (mais de 2^51 - 1 ticks).
+
+#### bot.time.time
+
+O número total de ticks desde o dia 0.
+
+Como o limite de números em JavaScript é 2^51 - 1, bot.time.time é menos preciso em valores mais altos que esse limite. Portanto, é recomendado o uso de bot.time.bigTime. Sendo realista, provavelmente você nunca terá que usar bot.time.bigTime, já que ele naturalmente alcançará 2^51 - 1 ticks após cerca de 14.280.821 anos reais.
+
+#### bot.time.timeOfDay
+
+Hora do dia, em ticks.
+
+A hora é baseada em ticks, onde 20 ticks ocorrem a cada segundo. Há 24.000 ticks em um dia, o que torna os dias em Minecraft exatamente 20 minutos. A hora do dia é baseada no módulo 24.000 do timestamp. 0 é o amanhecer, 6.000 é o meio-dia, 12.000 é o anoitecer e 18.000 é a meia-noite.
+
+#### bot.time.day
+
+Dia do mundo.
+
+#### bot.time.isDay
+
+Se é dia ou não.
+
+Baseado no horário atual estar entre 13.000 e 23.000 ticks.
+
+#### bot.time.moonPhase
+
+Fase da lua.
+
+De 0 a 7, onde 0 é lua cheia.
+
+#### bot.time.bigAge
+
+Idade do mundo, em ticks.
+
+Este valor é do tipo BigInt e é preciso mesmo em valores muito altos (mais de 2^51 - 1 ticks).
+
+#### bot.time.age
+
+Idade do mundo, em ticks.
+
+Como o limite de números em JavaScript é 2^51 - 1, bot.time.age é menos preciso em valores mais altos que esse limite. Portanto, é recomendado o uso de bot.time.bigAge. Sendo realista, provavelmente você nunca terá que usar bot.time.bigAge, já que ele naturalmente alcançará 2^51 - 1 ticks após cerca de 14.280.821 anos reais.
+
+#### bot.quickBarSlot
+
+Qual slot está selecionado na barra de acesso rápido (0 - 8).
+
+#### bot.inventory
+
+Uma instância de janela (interface) representando seu inventário.
+
+#### bot.targetDigBlock
+
+O bloco que você está quebrando no momento, ou `null`.
+
+#### bot.isSleeping
+
+Booleano representando se você está dormindo ou não.
+
+#### bot.scoreboards
+
+Todos os placares que o bot conhece em um objeto com o formato nome do placar -> placar.
+
+#### bot.scoreboard
+
+Todos os placares que o bot conhece em um objeto com o formato exibição de placar -> placar.
+- `belowName` - placar exibido abaixo do nome
+- `sidebar` - placar exibido na barra lateral
+- `list` - placar exibido na lista
+- `0-18` - entradas definidas no protocolo
+
+#### bot.controlState
+
+Um objeto que contém os estados de controle principais: ['frente', 'trás', 'esquerda', 'direita', 'pular', 'correr', 'agachar'].
+
+Esses valores podem ser usados em bot.setControlState.
+
+### Events
+
+#### "chat" (username, message, translate, jsonMsg, matches)
+
+Somente é emitido quando um jogador conversa publicamente.
+- `username` - o jogador que enviou a mensagem (compare com `bot.username` para ignorar suas próprias mensagens).
+- `message` - mensagem sem códigos de cores.
+- `translate` - tipo de mensagem no chat. Nulo para a maioria das mensagens do Bukkit.
+- `jsonMsg` - mensagem JSON não modificada do servidor.
+- `matches` - matriz de correspondências retornadas pelas expressões regulares. Pode ser nulo.
+
+#### "whisper" (username, message, translate, jsonMsg, matches)
+
+Somente é emitido quando um jogador conversa com você em particular (sussurro).
+- `username` - o jogador que enviou a mensagem.
+- `message` - mensagem sem códigos de cores.
+- `translate` - tipo de mensagem no chat. Nulo para a maioria das mensagens do Bukkit.
+- `jsonMsg` - mensagem JSON não modificada do servidor.
+- `matches` - matriz de correspondências retornadas pelas expressões regulares. Pode ser nulo.
+
+#### "actionBar" (jsonMsg)
+
+Este evento é emitido para cada mensagem do servidor que aparece na barra de ação.
+
+ * `jsonMsg` - mensagem JSON não modificada do servidor
+
+#### "message" (jsonMsg, position)
+
+Este evento é emitido para cada mensagem do servidor, incluindo chats.
+
+ * `jsonMsg` - mensagem JSON não modificada do servidor
+
+ * `position` - (>= 1.8.1): a posição da mensagem de chat pode ser
+ * chat
+ * sistema
+ * informações_do_jogo
+
+#### "messagestr" (message, messagePosition, jsonMsg)
+
+Similar a "message", mas converte a mensagem JSON em uma string antes de ser emitida.
+
+#### "inject_allowed"
+
+Este evento é emitido quando o arquivo index é carregado. Você pode carregar mcData ou os plugins aqui, mas é melhor esperar pelo evento "spawn".
+
+#### "login"
+
+É emitido após se registrar no servidor. No entanto, provavelmente você desejará aguardar o evento "spawn" antes de fazer qualquer coisa.
+
+#### "spawn"
+
+É emitido quando você se registra e aparece no mundo ou quando ressurge após a morte. Normalmente, este é o evento que você deseja receber antes de fazer qualquer coisa no servidor.
+
+#### "respawn"
+
+É emitido ao mudar de dimensões ou imediatamente antes de aparecer. Normalmente, você vai querer ignorar esse evento e esperar até que o evento "spawn" seja emitido.
+
+#### "game"
+
+É emitido quando o servidor altera algumas de suas propriedades.
+
+#### "resourcePack" (url, hash)
+
+É emitido quando o servidor envia um pacote de recursos.
+
+#### "title"
+
+É emitido quando o servidor exibe um título.
+
+ * `text` - texto do título
+
+#### "rain"
+
+É emitido quando começa a chover ou quando para de chover. Se estiver chovendo quando você entrar no servidor, este evento será emitido.
+
+#### "weatherUpdate"
+
+É emitido quando o estado de chuva (`bot.thunderState` ou `bot.rainState`) muda. Se estiver chovendo quando você entrar no servidor, este evento será emitido.
+
+#### "time"
+
+É emitido quando o servidor altera ou atualiza a hora. Veja `bot.time`.
+
+#### "kicked" (reason, loggedIn)
+
+É emitido quando o bot é expulso do servidor. `motivo` é uma mensagem de chat com o motivo da expulsão. `loggedIn` será `true` se o cliente já estava conectado quando foi expulso e `false` se o cliente foi expulso durante o processo de registro.
+
+#### "end"
+
+É emitido quando você não está mais conectado ao servidor.
+
+#### "error" (err)
+
+É emitido quando ocorre um erro.
+
+#### "spawnReset"
+
+É emitido quando você não pode mais ressurgir em sua cama e seu ponto de ressurgimento é redefinido.
+
+#### "death"
+
+É emitido ao morrer.
+
+#### "health"
+
+É emitido quando sua vida ou nível de comida mudam.
+
+#### "breath"
+
+É emitido quando seu nível de oxigênio muda.
+
+#### "entitySwingArm" (entity)
+
+É emitido quando uma entidade move o braço.
+
+#### "entityHurt" (entity)
+
+É emitido quando uma entidade se machuca.
+
+#### "entityDead" (entity)
+
+É emitido quando uma entidade morre.
+
+#### "entityTaming" (entity)
+
+É emitido quando uma entidade está sendo domesticada.
+
+#### "entityTamed" (entity)
+
+É emitido quando uma entidade é domesticada.
+
+#### "entityShakingOffWater" (entity)
+
+É emitido quando uma entidade se sacode para se secar (por exemplo, lobos).
+
+#### "entityEatingGrass" (entity)
+
+É emitido quando uma entidade come grama.
+
+#### "entityWake" (entity)
+
+É emitido quando uma entidade acorda.
+
+#### "entityEat" (entity)
+
+É emitido quando uma entidade come.
+
+#### "entityCriticalEffect" (entity)
+
+É emitido quando uma entidade recebe um ataque crítico.
+
+#### "entityMagicCriticalEffect" (entity)
+
+É emitido quando uma entidade recebe um ataque crítico com poções.
+
+#### "entityCrouch" (entity)
+
+É emitido quando uma entidade se agacha.
+
+#### "entityUncrouch" (entity)
+
+É emitido quando uma entidade para de se agachar.
+
+#### "entityEquip" (entity)
+
+É emitido quando uma entidade equipa algo.
+
+#### "entitySleep" (entity)
+
+É emitido quando uma entidade dorme.
+
+#### "entitySpawn" (entity)
+
+É emitido quando uma entidade aparece.
+
+#### "itemDrop" (entity)
+
+É emitido quando uma entidade solta itens (os itens também são entidades).
+
+#### "playerCollect" (collector, collected)
+
+É emitido quando uma entidade coleta um item.
+
+ * `coletor` - a entidade que coletou o item.
+ * `coletado` - a entidade que foi coletada (o item).
+
+#### "entityGone" (entity)
+
+É emitido quando uma entidade desaparece (morre, despawna).
+
+#### "entityMoved" (entity)
+
+É emitido quando uma entidade se move.
+
+#### "entityDetach" (entity, vehicle)
+
+É emitido quando uma entidade sai de um veículo.
+
+#### "entityAttach" (entity, vehicle)
+
+É emitido quando uma entidade entra em um veículo.
+
+ * `entidade` - a entidade que entrou
+ * `veículo` - a entidade do veículo (carrinho, cavalo)
+
+#### "entityUpdate" (entity)
+
+É emitido quando uma entidade atualiza uma de suas propriedades.
+
+#### "entityEffect" (entity, effect)
+
+É emitido quando uma entidade recebe um efeito.
+
+#### "entityEffectEnd" (entity, effect)
+
+É emitido quando um efeito em uma entidade termina.
+
+#### "playerJoined" (player)
+
+É emitido quando um jogador entra no servidor.
+
+#### "playerUpdated" (player)
+
+É emitido quando um jogador atualiza uma de suas propriedades.
+
+#### "playerLeft" (player)
+
+É emitido quando um jogador se desconecta do servidor.
+
+#### "blockUpdate" (oldBlock, newBlock)
+
+(É melhor usar este evento a partir de bot.world em vez de bot diretamente) É emitido quando um bloco é atualizado. Retorna `blocoAntigo` e `blocoNovo`.
+
+Observação: `blocoAntigo` pode ser `null`.
+
+#### "blockUpdate:(x, y, z)" (oldBlock, newBlock)
+
+(É melhor usar este evento a partir de bot.world em vez de bot diretamente) É emitido quando um bloco em uma coordenada específica é atualizado. Retorna `blocoAntigo` e `blocoNovo`.
+
+Observação: `blocoAntigo` pode ser `null`.
+
+#### "blockPlaced" (oldBlock, newBlock)
+
+É emitido quando o bot coloca um bloco. Retorna `blocoAntigo` e `blocoNovo`.
+
+Observação: `blocoAntigo` pode ser `null`.
+
+#### "chunkColumnLoad" (point)
+
+É emitido quando um chunk é carregado.
+
+#### "chunkColumnUnload" (point)
+
+É emitido quando um chunk é descarregado. `ponto` é a coordenada do canto do chunk com os valores x, y e z mais baixos.
+
+#### "soundEffectHeard" (soundName, position, volume, pitch)
+
+Isso ocorre quando o cliente ouve um efeito sonoro com um nome específico.
+
+ * `nomeSom`: nome do efeito sonoro
+ * `posição`: uma instância Vec3 indicando o ponto de onde o som originou
+ * `volume`: volume em ponto flutuante, 1.0 é 100%
+ * `altura`: pitch em números inteiros, 63 é 100%
+
+#### "hardcodedSoundEffectHeard" (soundId, soundCategory, position, volume, pitch)
+
+Isso ocorre quando o cliente ouve um efeito sonoro codificado.
+
+ * `idSom`: ID do efeito sonoro
+ * `categoriaSom`: categoria do efeito sonoro
+ * `posição`: uma instância Vec3 indicando o ponto de onde o som originou
+ * `volume`: volume em ponto flutuante, 1.0 é 100%
+ * `altura`: pitch em números inteiros, 63 é 100%
+
+#### "noteHeard" (block, instrument, pitch)
+
+Isso ocorre quando um bloco de notas é disparado em algum lugar.
+
+ * `bloco`: uma instância de Bloco, o bloco que emitiu o som
+ * `instrumento`:
+ - `id`: identificação numérica
+ - `nome`: um dos seguintes [`harpa`, `contrabaixo`, `caixa de bateria`, `baquetas`, `bateria grave`]
+ * `tom`: O tom da nota (entre 0 e 24, inclusivos, onde 0 é o mais baixo e 24 é o mais alto). Você pode ler mais (sobre como os valores de tom correspondem às notas na vida real) aqui: [Página oficial da Minecraft Wiki](http://minecraft.wiki/w/Note_Block).
+
+#### "pistonMove" (block, isPulling, direction)
+
+Isso ocorre quando um pistão se move.
+
+#### "chestLidMove" (block, isOpen, block2)
+
+Isso ocorre quando a tampa de um baú se move.
+
+* `bloco`: uma instância de Bloco, o bloco da tampa que se moveu. O bloco à direita se for um baú duplo.
+* `estáAberto`: número de jogadores que têm o baú aberto.
+* `bloco2`: uma instância de Bloco, a outra metade do bloco onde a tampa se moveu. Nulo se não for um baú duplo.
+
+#### "blockBreakProgressObserved" (block, destroyStage)
+
+Isso ocorre quando o cliente observa um bloco enquanto ele está sendo quebrado.
+
+ * `bloco`: uma instância de Bloco, o que está sendo quebrado.
+ * `estágioDestruicao`: número inteiro correspondente ao progresso (0-9).
+
+#### "blockBreakProgressEnd" (block)
+
+Isso ocorre quando o cliente observa um bloco que termina de ser quebrado.
+Isso ocorre quando o processo foi concluído ou cancelado.
+
+ * `bloco`: uma instância de Bloco, o bloco que não está mais sendo quebrado.
+
+#### "diggingCompleted" (block)
+
+Isso ocorre quando a quebra de um bloco foi concluída.
+ * `bloco` - o bloco que já não existe.
+
+#### "diggingAborted" (block)
+
+Isso ocorre quando o processo de quebra de um bloco foi abortado.
+ * `bloco` - o bloco que ainda existe.
+
+#### "move"
+
+Se emite cuando o bot se move. Se deseja a posição atual, você pode usar `bot.entity.position` e se quiser descobrir a posição anterior, use `bot.entity.positon.minus(bot.entity.velocity)`.
+
+#### "forcedMove"
+
+Se emite quando o bot é movido forçadamente pelo servidor (teletransporte, spawn, ...). Se deseja a posição atual, use `bot.entity.position`.
+
+#### "mount"
+
+Se emite quando o bot sobe em uma entidade, como um minecart. Para acessar a entidade, use `bot.vehicle`.
+
+Para subir em uma entidade, use `mount`.
+
+#### "dismount" (vehicle)
+
+Se emite quando você desce de uma entidade.
+
+#### "windowOpen" (window)
+
+Se emite quando você começa a usar uma mesa de criação, baú, mesa de poções, etc.
+
+#### "windowClose" (window)
+
+Se emite quando você não está mais usando uma mesa de criação, baú, etc.
+
+#### "sleep"
+
+Se emite quando você dorme.
+
+#### "wake"
+
+Se emite quando você acorda.
+
+#### "experience"
+
+Se emite quando `bot.experience.*` muda.
+
+#### "scoreboardCreated" (scoreboard)
+
+Se emite quando um placar é criado.
+
+#### "scoreboardDeleted" (scoreboard)
+
+Se emite quando um placar é excluído.
+
+#### "scoreboardTitleChanged" (scoreboard)
+
+Se emite quando o título de um placar é atualizado.
+
+#### "scoreUpdated" (scoreboard, item)
+
+Se emite quando a pontuação de um item no placar é atualizada.
+
+#### "scoreRemoved" (scoreboard, item)
+
+Se emite quando a pontuação de um item no placar é removida.
+
+#### "scoreboardPosition" (position, scoreboard)
+
+Se emite quando a posição de um placar é atualizada.
+
+#### "bossBarCreated" (bossBar)
+
+Se emite quando uma barra de vida de chefe é criada.
+
+#### "bossBarDeleted" (bossBar)
+
+Se emite quando uma barra é excluída.
+
+#### "bossBarUpdated" (bossBar)
+
+Se emite quando uma barra é atualizada.
+
+#### "heldItemChanged" (heldItem)
+
+Se emite quando o item que você está segurando muda.
+
+#### "physicsTick" ()
+
+Se emite a cada tick se bot.physicsEnabled estiver em true.
+
+#### "chat:name" (matches)
+
+Se emite quando todos os padrões de chat têm correspondências.
+
+### Functions
+
+#### bot.blockAt(point, extraInfos=true)
+
+Retorna o bloco no `point` (um Vec3) ou `null` se esse ponto não estiver carregado. Se `extraInfos` estiver definido como true, também retorna informações sobre placas, quadros e entidades de blocos (mais lento). Veja `Block`.
+
+#### bot.waitForChunksToLoad(cb)
+
+Essa função também retorna uma `Promise`, com `void` como argumento quando a carga dos chunks estiver completa.
+
+O `cb` é executado quando bastantes chunks são carregados.
+
+#### bot.blockInSight(maxSteps, vectorLength)
+
+Obsoleto, usar `blockAtCursor` no lugar.
+
+Retorna o bloco que está no cursor do bot ou `null`.
+ * `maxSteps` - Número de passos do traçado de raios, o valor padrão é 256.
+ * `vectorLength` - Comprimento do vetor do traçado de raios, o valor padrão é `5/16`.
+
+#### bot.blockAtCursor(maxDistance=256)
+
+Retorna o bloco que está no cursor do bot ou `null`.
+ * `maxDistance` - Distância máxima à qual o bloco pode estar do olho, o valor padrão é 256.
+
+#### bot.canSeeBlock(block)
+
+Retorna verdadeiro ou falso dependendo se o bot pode ver o `block` (bloco).
+
+#### bot.findBlocks(options)
+
+Encontra os blocos mais próximos do ponto especificado.
+ * `options` - Opções de pesquisa:
+ - `point` - A posição a partir da qual começar a pesquisa (centro). Padrão: a posição do bot.
+ - `matching` - Uma função que retorna verdadeiro se o bloco atender às condições. Também pode ser um ID de bloco ou uma matriz de IDs.
+ - `useExtraInfo` - Pode ser de dois tipos para manter a compatibilidade inversa.
+ - **boolean** - Você fornece sua função `matching` com mais informações - mais lento.
+ - **function** - É feito em duas etapas, se o bloco atender às condições da função `matching`, ele passa para `useExtraInfo` com informações adicionais.
+ - `maxDistance` - A distância máxima de pesquisa, padrão: 16.
+ - `count` - Número de blocos a serem encontrados antes de retornar os resultados. Padrão: 1. Pode retornar menos se não houver blocos suficientes.
+
+Retorna um array (pode estar vazio) com as coordenadas dos blocos encontrados (não retorna instâncias de blocos). O array é ordenado (os mais próximos primeiro).
+
+#### bot.findBlock(options)
+
+Semelhante a `bot.blockAt(bot.findBlocks(options)[0])`. Retorna um único bloco ou `null`.
+
+#### bot.canDigBlock(block)
+
+Retorna se o `block` está dentro do alcance e se pode ser escavado.
+
+#### bot.recipesFor(itemType, metadata, minResultCount, craftingTable)
+
+Retorna uma lista de instâncias `Recipe` (receita) que você pode usar para criar `itemType` com `metadata`.
+
+ * `itemType` - ID numérico do item que deseja criar.
+ * `metadata` - o valor numérico da metadados do item que deseja criar, `null` significa "com qualquer valor de metadados".
+ * `minResultCount` - baseia-se no seu inventário atual, qualquer receita da lista retornada poderá produzir esse número de itens. `null` significa `1`.
+ * `craftingTable` - uma instância `Block` (mesa de criação). Se for `null`, apenas receitas que podem ser feitas no inventário serão incluídas na lista.
+
+#### bot.recipesAll(itemType, metadata, craftingTable)
+
+Semelhante a bot.recipesFor, mas não verifica se o bot tem materiais suficientes para a receita.
+
+#### bot.nearestEntity(match = (entity) => { return true })
+
+Retorna a entidade mais próxima do bot, correspondendo à função (padrão: todas as entidades).
+Retorna null se nenhuma entidade for encontrada.
+
+### Methods
+
+#### bot.end()
+
+Encerra a conexão com o servidor.
+
+#### bot.quit(reason)
+
+Para se desconectar do servidor de forma elegante com um motivo (padrão: 'disconnect.quitting').
+
+#### bot.tabComplete(str, cb, [assumeCommand], [sendBlockInSight])
+
+Essa função também retorna uma `Promise`, com `matches` como argumento quando a conclusão é feita.
+
+Solicita a conclusão da mensagem de chat (para comandos).
+ * `str` - String para completar.
+ * `callback(matches)`
+ - `matches` - Array de strings correspondentes.
+ * `assumeCommand` - Campo enviado ao servidor, padrão: false.
+ * `sendBlockInSight` - Campo enviado ao servidor, padrão: true. Mude para false se desejar maior eficiência.
+
+#### bot.chat(message)
+
+Envia uma mensagem pública no chat. Divide mensagens grandes em pedaços e as envia como várias mensagens, se necessário.
+
+#### bot.whisper(username, message)
+
+Atalho para "/tell " (usuário). Todas as partes serão sussurradas ao usuário.
+
+#### bot.chatAddPattern(pattern, chatType, description)
+
+#### bot.addChatPattern(name, pattern, chatPatternOptions)
+
+Adicione um padrão regex à lista de padrões do bot. Útil para servidores Bukkit onde o formato do chat muda com frequência.
+ * `pattern` - padrão regex para corresponder
+ * `chatType` - o evento que o bot emite quando o padrão corresponde, por exemplo, "chat" ou "whisper"
+ * 'description' - Opcional, descrição do padrão
+
+#### bot.addChatPattern(name, pattern, chatPatternOptions)
+
+** isso é semelhante a `bot.addChatPatternSet(name, [pattern], chatPatternOptions)`
+
+Cria um evento que é emitido sempre que um padrão corresponde, o evento será chamado "chat:name", sendo "name" o nome fornecido.
+* `name` - o nome usado para o evento
+* `pattern` - expressão regular a ser testada nas mensagens
+* `chatPatternOptions` - objeto
+ * `repeat` - padrão: true, se continuar testando após corresponder uma vez
+ * `parse` - em vez de retornar a mensagem, retorne os grupos capturados pela regex
+ * `deprecated` - (**unstable**) usado por bot.chatAddPattern para manter a compatibilidade, provavelmente será removido
+
+Retorna um número que pode ser usado em bot.removeChatPattern() para remover esse padrão.
+
+#### bot.addChatPatternSet(name, patterns, chatPatternOptions)
+
+Cria um evento que é emitido sempre que todos os padrões correspondem, o evento será chamado "chat:name", sendo "name" o nome fornecido.
+* `name` - o nome usado para o evento
+* `patterns` - expressões regulares a serem testadas nas mensagens
+* `chatPatternOptions` - objeto
+ * `repeat` - padrão: true, se continuar testando após corresponder uma vez
+ * `parse` - em vez de retornar a mensagem, retorne os grupos capturados pela regex
+
+Retorna um número que pode ser usado em bot.removeChatPattern() para remover esse conjunto de padrões.
+
+#### bot.removeChatPattern(name)
+
+Remove um padrão / conjuntos de padrões
+* `name`: string ou número
+
+Se o nome for uma string, todos os padrões com esse nome serão removidos; caso contrário, se for um número, apenas o padrão exato será removido.
+
+#### bot.awaitMessage(...args)
+
+Promessa que é resolvida quando uma das mensagens fornecidas é cumprida.
+
+Exemplo:
+
+```js
+async function wait () {
+ await bot.awaitMessage(' hello world') // resolve "hello world" no chat por flatbot (se resolve quando um usuário chamado flatbot escreve "hello world" no chat)
+ await bot.awaitMessage([' hello', ' world']) // resolve "hello" ou "world" no chat por flatbot (se resolve quando um usuário chamado flatbot escreve "hello" ou "world" no chat)
+ await bot.awaitMessage([' hello', ' world'], [' im', ' batman']) // resolve "hello" ou "world" ou "im" ou "batman" no chat por flatbot (se resolve quando um usuário chamado flatbot escreve "hello world", "world", "im" ou "batman" no bater papo)
+ await bot.awaitMessage(' hello', ' world') // resolve "hello" ou "world" no chat do flatbot
+ await bot.awaitMessage(/ (.+)/) // resolve na primeira mensagem correspondente ao regex (se resolve quando um usuário chamado flatbot escreve algo que coincide com o padrão)
+}
+```
+
+#### bot.setSettings(options)
+
+Veja a propriedade `bot.settings`.
+
+#### bot.loadPlugin(plugin)
+
+Introduz um Plugin. Não faz nada se o plugin já estiver carregado/introduzido.
+
+ * `plugin` - função
+
+```js
+function somePlugin (bot, options) {
+ function someFunction () {
+ bot.chat('Yay!')
+ }
+
+ bot.myPlugin = {} // Boas práticas para API de plugin de namespace (faça isso para evitar erros como myPlugin não está definido)
+ bot.myPlugin.someFunction = someFunction
+}
+
+const bot = mineflayer.createBot({})
+bot.loadPlugin(somePlugin)
+bot.once('login', function () {
+ bot.myPlugin.someFunction() // Yay!
+})
+```
+
+#### bot.loadPlugins(plugins)
+
+Introduz plugins, veja `bot.loadPlugin`.
+ * `plugins` - array de funções
+
+#### bot.hasPlugin(plugin)
+
+Verifica se o plugin já está carregado (ou previsto para carregar) no bot.
+
+#### bot.sleep(bedBlock, [cb])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Dormir em uma cama. `bedBlock` deve ser uma instância `Block` que é uma cama. `cb` é uma função que pode ter um parâmetro de erro se o bot não conseguir dormir.
+
+#### bot.isABed(bedBlock)
+
+Retorna verdadeiro se `bedBlock` for uma cama.
+
+#### bot.wake([cb])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Acordar de uma cama. `cb` é uma função que pode ter um parâmetro de erro se o bot não conseguir acordar.
+
+#### bot.setControlState(control, state)
+
+Este é o método principal para controlar os movimentos do bot. É semelhante a pressionar teclas no Minecraft.
+Por exemplo, forward como true fará o bot se mover para a frente. Forward como false fará o bot parar de se mover para a frente.
+Você pode usar bot.lookAt com isso para controlar o movimento. O exemplo jumper.js mostra como fazer isso.
+
+ * `control` - Um dos seguintes: ['forward', 'back', 'left', 'right', 'jump', 'sprint', 'sneak']
+ * `state` - `true` ou `false`
+
+#### bot.getControlState(control)
+
+#### bot.getControlState(control)
+
+Retorna verdadeiro se o controle estiver ativado.
+
+* `control` - um dos seguintes ['forward', 'back', 'left', 'right', 'jump', 'sprint', 'sneak']
+
+#### bot.clearControlStates()
+
+Desativa todos os controles.
+
+#### bot.lookAt(point, [force], [callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Move a cabeça.
+
+ * `point` - uma instância [Vec3](https://github.com/andrewrk/node-vec3) - move a cabeça para olhar para este ponto.
+ * `force` - Veja `force` em `bot.look`.
+ * `callback()` - opcional, executado quando você está olhando para o `point`.
+
+#### bot.look(yaw, pitch, [force], [callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Move a cabeça.
+
+ * `yaw` - O número de radianos para girar em torno do eixo vertical, começando pelo leste, no sentido anti-horário.
+ * `pitch` - O número de radianos para olhar para cima ou para baixo. 0 significa olhar em frente. PI / 2 significa para cima. -PI / 2 significa para baixo.
+ * `force` - Se presente e verdadeiro, pula a transição suave. Especifique como verdadeiro se você quiser valores precisos para soltar itens ou atirar flechas. Isso não é necessário para cálculos do lado do cliente, como mover-se.
+ * `callback()` - opcional, executado quando você está olhando para `yaw` e `pitch`.
+
+#### bot.updateSign(block, text)
+
+Altera o texto em um sinal.
+
+#### bot.equip(item, destination, [callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Equipar um item do inventário.
+
+ * `item` - instância `Item`. Veja `window.items()`.
+ * `destination` - `"hand"` (mão), `null` é um alias para isso.
+ - `"head"` (cabeça)
+ - `"torso"` (peito)
+ - `"legs"` (pernas)
+ - `"feet"` (pés)
+ - `"off-hand"` (mão esquerda), quando disponível.
+ * `callback(error)` - opcional, executado quando o bot equipou o item ou quando falhou em fazê-lo.
+
+#### bot.unequip(destination, [callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Remove um item do destino.
+
+#### bot.tossStack(item, [callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Descarta a pilha de itens especificada.
+ * `item` - a pilha de itens que você deseja descartar.
+ * `callback(error)` - opcional, executado quando o bot terminou de descartar ou quando falhou em fazê-lo.
+
+#### bot.toss(itemType, metadata, count, [callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+ * `itemType` - ID numérico do item que você deseja descartar.
+ * `metadata` - metadados do item que você deseja descartar. `null` para qualquer metadados.
+ * `count` - quantos itens você deseja descartar. `null` significa `1`.
+ * `callback(err)` - (opcional) executado quando o bot terminou de descartar ou quando falhou em fazê-lo.
+
+#### bot.dig(block, [forceLook = true], [digFace], [callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Começa a quebrar o `block` (bloco) com o item na mão.
+Observe os eventos "diggingCompleted" e "diggingAborted".
+
+Nota: ao começar a quebrar um bloco, você não poderá quebrar outro bloco até terminar de quebrar aquele bloco ou executar `bot.stopDigging()`.
+
+ * `block` - o bloco que você deseja quebrar.
+ * `forceLook` - (opcional) se for verdadeiro, olha rapidamente para o bloco e começa a quebrá-lo. Se for falso, olha lentamente para o bloco antes de começar a quebrá-lo. Além disso, pode ser 'ignore', para que o bot não olhe para o bloco ao quebrá-lo.
+ * `digFace` - (opcional) Padrão: 'auto', olha para o centro do bloco e quebra-o a partir do topo. Também pode ser um vetor Vec3 da face do bloco para onde o bot deve olhar. Por exemplo: ```vec3(0, 1, 0)``` para quebrar a face de cima. Também pode ser 'raycast', isso verifica se alguma face é visível para começar a quebrar por essa face, o que é útil em servidores com um anti-cheat.
+ * `callback(err)` - (opcional) executado quando o bot quebrou o bloco ou quando falhou em fazê-lo.
+
+#### bot.stopDigging()
+
+Parar de quebrar o escavar o bloco.
+
+#### bot.digTime(block)
+
+Retorna quanto tempo levará para quebrar o bloco, em milissegundos.
+
+#### bot.acceptResourcePack()
+
+Aceitar o pacote de recursos.
+
+#### bot.denyResourcePack()
+
+Negar o pacote de recursos.
+
+#### bot.placeBlock(referenceBlock, faceVector, cb)
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+ * `referenceBlock` - o bloco ao lado do bloco que deseja colocar
+ * `faceVector` - uma das seis direções cardeais, por exemplo, `new Vec3(0, 1, 0)` para o lado de cima, indicando a face do bloco de referência.
+ * `cb` será executado quando o servidor confirmar que o bloco foi colocado.
+
+O bloco será colocado em `referenceBlock.position.plus(faceVector)` (posição do bloco de referência mais o vetor de face).
+
+#### bot.placeEntity(referenceBlock, faceVector)
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+ * `referenceBlock` - o bloco ao lado de onde deseja colocar a entidade.
+ * `faceVector` - uma das seis direções cardeais, por exemplo, `new Vec3(0, 1, 0)` para a face de cima, indicando a face do bloco de referência.
+
+A entidade será colocada em `referenceBlock.position.plus(faceVector)` (posição do bloco de referência mais o vetor de face).
+
+#### bot.activateBlock(block, [callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Ativar um bloco, como bater em um bloco de nota ou abrir uma porta.
+
+ * `block` - o bloco a ser ativado.
+ * `callback(err)` - (opcional) executado quando o bot ativa o bloco ou falha ao fazê-lo.
+
+#### bot.activateEntity(entity, [callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Ativar uma entidade, por exemplo, com aldeões.
+
+ * `entity` - a entidade a ser ativada.
+ * `callback(err)` - (opcional) executado quando o bot ativa a entidade ou falha ao fazê-lo.
+
+#### bot.activateEntityAt(entity, position, [callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Ativar uma entidade na posição especificada, útil para suportes de armadura.
+
+ * `entity` - a entidade a ser ativada.
+ * `position` - a posição onde você deve clicar.
+ * `callback(err)` - (opcional) executado quando o bot ativa a entidade ou falha ao fazê-lo.
+
+#### bot.consume(callback)
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Consumir ou beber o item na mão.
+
+ * `callback(error)` - executado quando o bot consome o item ou falha ao fazê-lo.
+
+#### bot.fish(callback)
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Pescar com a vara de pescar na mão.
+
+ * `callback(error)` - (opcional) executado quando o bot pescou algo ou falhou ao fazê-lo.
+
+#### bot.activateItem(offHand=false)
+
+Ativar o item na mão. Isso é usado para comer, atirar flechas, jogar ovos, etc.
+O parâmetro opcional pode ser `false` para a mão esquerda.
+
+#### bot.deactivateItem()
+
+Desativar o item na mão. Isso é como atirar uma flecha, parar de comer, etc.
+
+#### bot.useOn(targetEntity)
+
+Usar o item na mão na instância de `Entity` (entidade). Isso é usado para colocar uma sela em um cavalo, ou usar tesouras em uma ovelha, por exemplo.
+
+#### bot.attack(entity)
+
+Atacar a entidade ou criatura.
+
+#### bot.swingArm([hand], showHand)
+
+Reproduz a animação de mover o braço.
+
+ * `mão` - a mão que será animada, pode ser `esquerda` ou `direita`. Padrão: `direita`
+ * `mostrarMão` - um booleano que indica se adicionar a mão ao pacote para mostrar a animação. Padrão: `verdadeiro`
+
+#### bot.mount(entity)
+
+Subir em uma entidade. Para descer, use `bot.dismount`.
+
+#### bot.dismount()
+
+Desce da entidade em que você está montado.
+
+#### bot.moveVehicle(left,forward)
+
+Mover o veículo:
+
+ * esquerda pode ser -1 ou 1: -1 significa direita, 1 significa esquerda
+ * frente pode ser -1 ou 1: -1 significa para trás, 1 significa para a frente
+
+Todas as direções são relativas à direção em que o bot está olhando.
+
+#### bot.setQuickBarSlot(slot)
+
+ * `slot` - pode ser de 0 a 8, a posição da barra de acesso rápido
+
+#### bot.craft(recipe, count, craftingTable, [callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+ * `receita` - Uma instância de `Receita`. Veja `bot.receitasPara`.
+ * `quantidade` - Quantas vezes você deseja repetir a ação.
+ Se você deseja criar `8` varas com tábuas de madeira, você colocaria
+ `quantidade` como `2`. `null` significa `1`.
+ * `mesaDeCriação` - Uma instância de `Bloco`, a mesa de criação que você deseja usar. Se a criação não exigir uma mesa, este argumento pode ser deixado como `null`.
+ * `retorno` - (opcional) Executado quando o bot terminou a criação e o inventário foi atualizado.
+
+#### bot.writeBook(slot, pages, [callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+ * `slot` é um número de posição no inventário (36 é o primeiro slot, etc.).
+ * `páginas` é um array de strings representando as páginas.
+ * `retorno(erro)` - opcional. Executado quando o bot terminou de escrever ou ocorreu um erro.
+
+#### bot.openContainer(containerBlock or containerEntity)
+
+Abre um recipiente.
+Retorna uma promise com uma instância de `Container` que representa o recipiente que você está abrindo.
+
+#### bot.openChest(chestBlock or minecartchestEntity)
+
+Obsoleto. O mesmo que `openContainer`
+
+#### bot.openFurnace(furnaceBlock)
+
+Abre um forno.
+Retorna uma promise com uma instância de `Forno` que representa o forno que você está abrindo.
+
+#### bot.openDispenser(dispenserBlock)
+
+Obsoleto. O mesmo que `openContainer`
+
+#### bot.openEnchantmentTable(enchantmentTableBlock)
+
+Retorna uma promise com uma instância de `MesaDeEncantamento` que representa a mesa de encantamento que você está abrindo.
+
+#### bot.openAnvil(anvilBlock)
+
+Retorna uma promise com uma instância de `bigorna` que representa a bigorna que você está abrindo.
+
+#### bot.openVillager(villagerEntity)
+
+Retorna uma promise com uma instância de `Aldeão` que representa a janela de negociação que você está abrindo
+O evento `pronto` na instância de `Aldeão` pode ser usado para saber quando as negociações estão prontas
+
+#### bot.trade(villagerInstance, tradeIndex, [times], [cb])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Use a instância de `Aldeão` para fazer negociações.
+
+#### bot.setCommandBlock(pos, command, [options])
+
+Altera as propriedades de um bloco de comandos na posição `posição`.
+Exemplo de `opções`:
+```js
+{
+ modo: 2,
+ rastrearSaída: verdadeiro,
+ condicional: falso,
+ sempreAtivo: verdadeiro
+}
+```
+opções.modo pode ter 3 valores: 0 (SEQUÊNCIA), 1 (AUTO), 2 (REDSTONE)
+Todas as opções têm padrão como falso, exceto modo que é 2 (para se assemelhar ao bloco de comandos do Minecraft).
+
+#### bot.supportFeature(name)
+
+Isso pode ser usado para verificar se uma característica está disponível na versão do bot do Minecraft. Normalmente, isso é usado para lidar com funções específicas de uma versão.
+
+Você pode encontrar a lista de características em [./lib/features.json](https://github.com/PrismarineJS/mineflayer/blob/master/lib/features.json) arquivo.
+
+#### bot.waitForTicks(ticks)
+
+Esta função retorna uma promessa e espera que o número de ticks especificado passe no jogo; esta função é semelhante à função setTimeout do JavaScript, mas funciona com o relógio físico do jogo.
+
+### Lower level inventory methods
+
+Esses são métodos de nível mais baixo para o inventário e podem ser úteis em algumas situações, mas é melhor usar os métodos apresentados acima sempre que possível.
+
+#### bot.clickWindow(slot, mouseButton, mode, cb)
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Clique na janela/interface atual; os detalhes estão em https://wiki.vg/Protocol#Click_Window
+ * slot - número que representa a posição na janela
+ * mouseButton - 0 para clique esquerdo e 1 para clique direito
+ * mode - mineflayer só tem o modo 0 disponível
+
+#### bot.putSelectedItemRange(start, end, window, slot)
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Mova o item na posição `slot` em um intervalo especificado.
+
+#### bot.putAway(slot)
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Mova o item para a posição `slot` no inventário.
+
+#### bot.closeWindow(window)
+
+Feche a janela/interface.
+ * janela - a janela a ser fechada
+
+#### bot.transfer(options, cb)
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Transfira um item de um intervalo para outro. `opções` é um objeto com:
+
+ * `janela`: a janela para onde o item será movido
+ * `tipoItem`: o tipo de item a ser movido (ID numérico)
+ * `metadata`: a metadados do item a ser movido
+ * `inícioOrigem` e `fimOrigem`: o intervalo de origem
+ * `inícioDestino` e `fimDestino`: o intervalo de destino
+
+#### bot.openBlock(block)
+
+Abra um bloco, como um baú; retorna uma promessa com `Janela` sendo a janela aberta.
+
+ * `bloco` é o bloco a ser aberto
+
+#### bot.openEntity(entity)
+
+Abra uma entidade com um inventário, como um aldeão; retorna uma promessa com `Janela` sendo a janela aberta.
+
+ * `entidade` é a entidade a ser aberta
+
+#### bot.moveSlotItem(sourceSlot, destSlot, cb)
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Mova um item de uma posição `origemSlot` para outra `destinoSlot` em uma janela.
+
+#### bot.updateHeldItem()
+
+Atualize `bot.heldItem`.
+
+#### bot.getEquipmentDestSlot(destination)
+
+Retorna o ID da posição de equipamento pelo nome do destino.
+
+O destino pode ser:
+* cabeça - (cabeça)
+* peito - (peito)
+* pernas - (pernas)
+* pés - (pés)
+* mão - (mão)
+* mão secundária - (mão esquerda)
+
+### bot.creative
+
+Esta coleção de APIs é útil no modo criativo.
+A detecção e a troca de modo não estão implementadas,
+mas é assumido e muitas vezes é necessário que o bot esteja no modo criativo para que essas funcionalidades funcionem.
+
+#### bot.creative.setInventorySlot(slot, item, [callback])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Fornece ao bot o item especificado na posição especificada.
+Se for executado duas vezes antes que a primeira execução seja concluída, a primeira execução conterá um erro.
+
+ * `slot` é um número de posição no inventário (onde 36 é a primeira posição, etc.).
+ * `item` é uma instância de [prismarine-item](https://github.com/PrismarineJS/prismarine-item) com seus metadados, dados nbt, etc.
+ Se `item` for `null`, o item nessa posição será removido
+ * `retorno(erro)` (opcional) é uma função de retorno que é executada quando o servidor aceita a transação ou quando a transação falha.
+
+Se este método alterar algo, será emitido `bot.inventory.on("updateSlot")`.
+
+#### bot.creative.flyTo(destination, [cb])
+
+Esta função também retorna uma `Promise`, com `void` como argumento quando concluída.
+
+Execute `startFlying()` e mova-se a uma velocidade constante em um espaço tridimensional em linha reta até o destino.
+`destino` é um `Vec3`, e as coordenadas `x` e `z` às vezes terminarão em `.5`.
+Essa operação não funcionará se houver algum obstáculo no caminho,
+portanto, é recomendável voar distâncias curtas.
+
+Quando o bot chegar ao destino, `cb` será executado.
+
+Este método não procurará automaticamente o caminho.
+Espera-se que uma implementação de busca de caminho use este método para se mover < 2 blocos de cada vez.
+
+Para parar de voar (voltar à física normal), você pode executar `stopFlying()`.
+
+#### bot.creative.startFlying()
+
+Altera `bot.physics.gravity` para `0`.
+Para voltar à física normal, você pode executar `stopFlying()`.
+
+Este método é útil se você quiser flutuar enquanto quebra o bloco abaixo de você.
+Não é necessário executar esta função antes de executar `flyTo()`.
+
+Observação: enquanto você voa, `bot.entity.velocity` não é preciso.
+
+#### bot.creative.stopFlying()
+
+Restaura `bot.physics.gravity` ao seu valor original.
\ No newline at end of file
diff --git a/docs/br/unstable_api_br.md b/docs/br/unstable_api_br.md
new file mode 100644
index 000000000..1b07b86f5
--- /dev/null
+++ b/docs/br/unstable_api_br.md
@@ -0,0 +1,20 @@
+
+
+**Tabla de contenidos** *generado con [DocToc](https://github.com/thlorenz/doctoc)*
+
+- [API inestable : bot._](#api-instable--bot_)
+ - [bot._client](#bot_client)
+
+
+
+# API instável: bot._
+
+Esses métodos e classes são úteis em alguns casos especiais, mas não são estáveis e podem mudar a qualquer momento.
+
+## bot._client
+
+`bot._client` é criado usando [node-minecraft-protocol](https://github.com/PrismarineJS/node-minecraft-protocol).
+Lida com a escrita e recepção de pacotes.
+O comportamento pode mudar (por exemplo, em cada nova versão do Minecraft), portanto, é melhor usar os métodos do mineflayer, se possível.
+
+Esta documentação não é oficialmente mantida. Se você deseja ver as últimas novidades, por favor, consulte a documentação original: [unstable_api](../unstable_api.md)
diff --git a/docs/es/README_ES.md b/docs/es/README_ES.md
index 27203a019..7e80c62c3 100644
--- a/docs/es/README_ES.md
+++ b/docs/es/README_ES.md
@@ -8,8 +8,8 @@
[![Try it on gitpod](https://img.shields.io/badge/try-on%20gitpod-brightgreen.svg)](https://gitpod.io/#https://github.com/PrismarineJS/mineflayer)
-| EN [English](../README.md) | RU [русский](../ru/README_RU.md) | ES [Español](../es/README_ES.md) | FR [Français](../fr/README_FR.md) | TR [Türkçe](../tr/README_TR.md) |
-|-------------------------|----------------------------|----------------------------|----------------------------|----------------------------|
+| EN [English](../README.md) | RU [русский](../ru/README_RU.md) | ES [Español](../es/README_ES.md) | FR [Français](../fr/README_FR.md) | TR [Türkçe](../tr/README_TR.md) | ZH [中文](../zh/README_ZH_CN.md) | BR [Português](../br/README_BR.md) |
+|-------------------------|----------------------------|----------------------------|----------------------------|----------------------------|----------------------------|----------------------------|
Crea bots para Minecraft con una API de JavaScript potente, estable y de alto nivel.
diff --git a/docs/fr/README_FR.md b/docs/fr/README_FR.md
index c8bd0fbab..273205bea 100644
--- a/docs/fr/README_FR.md
+++ b/docs/fr/README_FR.md
@@ -9,8 +9,8 @@
[![Try it on gitpod](https://img.shields.io/badge/try-on%20gitpod-brightgreen.svg)](https://gitpod.io/#https://github.com/PrismarineJS/mineflayer)
-| EN [Anglais](../README.md) | RU [Russe](../ru/README_RU.md) | ES [Espagnol](../es/README_ES.md) | FR [Français](README_FR.md) | TR [Türkçe](../tr/README_TR.md) | ZH [Chinois](../zh/README_ZH_CN.md) |
-|-------------------------|----------------------------|----------------------------|----------------------------|----------------------------|----------------------------|
+| EN [Anglais](../README.md) | RU [Russe](../ru/README_RU.md) | ES [Espagnol](../es/README_ES.md) | FR [Français](README_FR.md) | TR [Türkçe](../tr/README_TR.md) | ZH [Chinois](../zh/README_ZH_CN.md) | BR [Portuguese](../br/README_BR.md) |
+|-------------------------|----------------------------|----------------------------|----------------------------|----------------------------|----------------------------|----------------------------|
Créé des robots Minecraft avec API stable, puissante et facilement maniable, [API](api.md).
diff --git a/docs/ru/README_RU.md b/docs/ru/README_RU.md
index b50d6ae00..c187586e1 100644
--- a/docs/ru/README_RU.md
+++ b/docs/ru/README_RU.md
@@ -8,8 +8,8 @@
[![Официальный дискорд](https://img.shields.io/static/v1.svg?label=OFFICIAL&message=DISCORD&color=blue&logo=discord&style=for-the-badge)](https://discord.gg/GsEFRM8)
-| EN [English](../README.md) | RU [русский](../ru/README_RU.md) | ES [Español](../es/README_ES.md) | FR [Français](../fr/README_FR.md) | TR [Türkçe](../tr/README_TR.md) | ZH [中文](../zh/README_ZH_CN.md) |
-|-------------------------|----------------------------|----------------------------|----------------------------|----------------------------|----------------------------|
+| EN [English](../README.md) | RU [русский](../ru/README_RU.md) | ES [Español](../es/README_ES.md) | FR [Français](../fr/README_FR.md) | TR [Türkçe](../tr/README_TR.md) | ZH [中文](../zh/README_ZH_CN.md) | BR [Portuguese](../br/README_BR.md) |
+|-------------------------|----------------------------|----------------------------|----------------------------|----------------------------|----------------------------|----------------------------|
Создавайте ботов Minecraft с помощью мощного, стабильного и высокоуровневого JavaScript [API](api_ru.md), также можете использовать Python.
diff --git a/docs/tr/README_TR.md b/docs/tr/README_TR.md
index 9172db231..dc175e372 100644
--- a/docs/tr/README_TR.md
+++ b/docs/tr/README_TR.md
@@ -9,8 +9,8 @@
[![Try it on gitpod](https://img.shields.io/badge/try-on%20gitpod-brightgreen.svg)](https://gitpod.io/#https://github.com/PrismarineJS/mineflayer)
-| EN [English](../README.md) | RU [русский](../ru/README_RU.md) | ES [Español](../es/README_ES.md) | FR [Français](../fr/README_FR.md) | TR [Türkçe](../tr/README_TR.md) | ZH [中文](../zh/README_ZH_CN.md) |
-|-------------------------|----------------------------|----------------------------|----------------------------|----------------------------|----------------------------|
+| EN [English](../README.md) | RU [русский](../ru/README_RU.md) | ES [Español](../es/README_ES.md) | FR [Français](../fr/README_FR.md) | TR [Türkçe](../tr/README_TR.md) | ZH [中文](../zh/README_ZH_CN.md) | BR [Portuguese](../br/README_BR.md) |
+|-------------------------|----------------------------|----------------------------|----------------------------|----------------------------|----------------------------|----------------------------|
JavaScript ile güçlü, stabil ve üst seviye Minecraft botları oluşturabileceğiniz bir [API](api.md).
diff --git a/docs/zh/README_ZH_CN.md b/docs/zh/README_ZH_CN.md
index 27bd62d96..1a59a7685 100644
--- a/docs/zh/README_ZH_CN.md
+++ b/docs/zh/README_ZH_CN.md
@@ -10,8 +10,8 @@
[![Try it on gitpod](https://img.shields.io/badge/try-on%20gitpod-brightgreen.svg)](https://gitpod.io/#https://github.com/PrismarineJS/mineflayer)
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/PrismarineJS/mineflayer/blob/master/docs/mineflayer.ipynb)
-| EN [English](../README.md) | RU [русский](../ru/README_RU.md) | ES [Español](../es/README_ES.md) | FR [Français](../fr/README_FR.md) | TR [Türkçe](../tr/README_TR.md) | ZH [中文](../zh/README_ZH_CN.md)
-|-------------------------|----------------------------|----------------------------|----------------------------|----------------------------|----------------------------|
+| EN [English](../README.md) | RU [русский](../ru/README_RU.md) | ES [Español](../es/README_ES.md) | FR [Français](../fr/README_FR.md) | TR [Türkçe](../tr/README_TR.md) | ZH [中文](../zh/README_ZH_CN.md) | BR [Portuguese](../br/README_BR.md) |
+|-------------------------|----------------------------|----------------------------|----------------------------|----------------------------|----------------------------|----------------------------|
使用强大、稳定、高级的JavaScript [API](../api.md) 来开发Minecraft机器人,同时支持 Python。