mineflayer 4.14.0 → 4.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,42 +17,44 @@ jobs:
17
17
  with:
18
18
  node-version: 18.x
19
19
  - run: npm i && npm run lint
20
+
21
+ PrepareSupportedVersions:
22
+ runs-on: ubuntu-latest
23
+ outputs:
24
+ matrix: ${{ steps.set-matrix.outputs.matrix }}
25
+
26
+ steps:
27
+ - uses: actions/checkout@v2
28
+ - name: Use Node.js 18.x
29
+ uses: actions/setup-node@v1.4.4
30
+ with:
31
+ node-version: 18.x
32
+ - id: set-matrix
33
+ run: |
34
+ node -e "
35
+ const testedVersions = require('./lib/version').testedVersions;
36
+ console.log('matrix='+JSON.stringify({'include': testedVersions.map(mcVersion => ({mcVersion}))}))
37
+ " >> $GITHUB_OUTPUT
20
38
 
21
39
  MinecraftServer:
40
+ needs: PrepareSupportedVersions
22
41
  runs-on: ubuntu-latest
23
42
  strategy:
24
- matrix:
25
- javaVersion: [1.8]
26
- mcVersion: ['1.8.8', '1.9.4', '1.10.2', '1.11.2', '1.12.2', '1.13.2', '1.14.4', '1.15.2', '1.16.5']
27
- include:
28
- - javaVersion: 16
29
- mcVersion: '1.17.1'
30
- - javaVersion: 17
31
- mcVersion: '1.18.2'
32
- - javaVersion: 17
33
- mcVersion: '1.19'
34
- - javaVersion: 17
35
- mcVersion: '1.19.2'
36
- - javaVersion: 17
37
- mcVersion: '1.19.3'
38
- - javaVersion: 17
39
- mcVersion: '1.19.4'
40
- - javaVersion: 17
41
- mcVersion: '1.20.1'
43
+ matrix: ${{fromJson(needs.PrepareSupportedVersions.outputs.matrix)}}
42
44
  fail-fast: false
43
45
 
44
46
  steps:
45
47
  - uses: actions/checkout@v2
46
- - name: Use Node.js ${{ matrix.node-version }}
48
+ - name: Use Node.js 18.x
47
49
  uses: actions/setup-node@v1.4.4
48
50
  with:
49
51
  node-version: 18.x
50
52
  - name: Setup Java JDK
51
53
  uses: actions/setup-java@v1.4.3
52
54
  with:
53
- java-version: ${{ matrix.javaVersion }}
55
+ java-version: 17
54
56
  java-package: jre
55
57
  - name: Install Dependencies
56
58
  run: npm install
57
59
  - name: Start Tests
58
- run: npm run mocha_test -- -g ${{ matrix.mcVersion }}
60
+ run: npm run mocha_test -- -g ${{ matrix.mcVersion }}v
package/README.md CHANGED
@@ -8,8 +8,8 @@
8
8
 
9
9
  [![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)
10
10
 
11
- | <sub>EN</sub> [English](README.md) | <sub>RU</sub> [русский](ru/README_RU.md) | <sub>ES</sub> [Español](es/README_ES.md) | <sub>FR</sub> [Français](fr/README_FR.md) | <sub>TR</sub> [Türkçe](tr/README_TR.md) | <sub>ZH</sub> [中文](zh/README_ZH_CN.md) |
12
- |-------------------------|----------------------------|----------------------------|----------------------------|----------------------------|----------------------------|
11
+ | <sub>EN</sub> [English](README.md) | <sub>RU</sub> [русский](ru/README_RU.md) | <sub>ES</sub> [Español](es/README_ES.md) | <sub>FR</sub> [Français](fr/README_FR.md) | <sub>TR</sub> [Türkçe](tr/README_TR.md) | <sub>ZH</sub> [中文](zh/README_ZH_CN.md) | <sub>BR</sub> [Português](br/README_BR.md) |
12
+ |-------------------------|----------------------------|----------------------------|----------------------------|----------------------------|-------------------------|--------------------|
13
13
 
14
14
  Create Minecraft bots with a powerful, stable, and high level JavaScript [API](api.md), also usable from Python.
15
15
 
package/docs/README.md CHANGED
@@ -8,8 +8,8 @@
8
8
 
9
9
  [![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)
10
10
 
11
- | <sub>EN</sub> [English](README.md) | <sub>RU</sub> [русский](ru/README_RU.md) | <sub>ES</sub> [Español](es/README_ES.md) | <sub>FR</sub> [Français](fr/README_FR.md) | <sub>TR</sub> [Türkçe](tr/README_TR.md) | <sub>ZH</sub> [中文](zh/README_ZH_CN.md) |
12
- |-------------------------|----------------------------|----------------------------|----------------------------|----------------------------|----------------------------|
11
+ | <sub>EN</sub> [English](README.md) | <sub>RU</sub> [русский](ru/README_RU.md) | <sub>ES</sub> [Español](es/README_ES.md) | <sub>FR</sub> [Français](fr/README_FR.md) | <sub>TR</sub> [Türkçe](tr/README_TR.md) | <sub>ZH</sub> [中文](zh/README_ZH_CN.md) | <sub>BR</sub> [Português](br/README_BR.md) |
12
+ |-------------------------|----------------------------|----------------------------|----------------------------|----------------------------|-------------------------|--------------------|
13
13
 
14
14
  Create Minecraft bots with a powerful, stable, and high level JavaScript [API](api.md), also usable from Python.
15
15
 
package/docs/api.md CHANGED
@@ -1396,7 +1396,7 @@ Fires when a note block goes off somewhere.
1396
1396
  * `pitch`: The pitch of the note (between 0-24 inclusive where 0 is the
1397
1397
  lowest and 24 is the highest). More information about how the pitch values
1398
1398
  correspond to notes in real life are available on the
1399
- [official Minecraft wiki](http://www.minecraftwiki.net/wiki/Note_Block).
1399
+ [official Minecraft wiki](http://minecraft.wiki/w/Note_Block).
1400
1400
 
1401
1401
  #### "pistonMove" (block, isPulling, direction)
1402
1402
 
@@ -1429,10 +1429,12 @@ This occurs whether the process was completed or aborted.
1429
1429
 
1430
1430
  * `block` - the block that still exists
1431
1431
 
1432
- #### "usedfirework"
1432
+ #### "usedFirework" (fireworkEntityId)
1433
1433
 
1434
1434
  Fires when the bot uses a firework while elytra flying.
1435
1435
 
1436
+ * `fireworkEntityId` - the entity id of the firework.
1437
+
1436
1438
  #### "move"
1437
1439
 
1438
1440
  Fires when the bot moves. If you want the current position, use
@@ -0,0 +1,84 @@
1
+ # Contribuir
2
+
3
+ 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.
4
+
5
+ ## Organização de Problemas
6
+
7
+ Temos 3 etiquetas para 3 fases de organização de problemas:
8
+
9
+ * Estágio 1: (Fase 1) criado por alguém novo no projeto, não sabemos se merece uma implementação / solução
10
+ * Estágio 2: (Fase 2) ideia promissora, mas é necessário pensar mais sobre o assunto antes de implementá-lo
11
+ * Estágio 3: (Fase 3) a ideia é muito precisa, só precisa ser programada
12
+
13
+ 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.
14
+
15
+ ## Criando Testes
16
+ O Mineflayer possui dois tipos de testes:
17
+
18
+ * [Testes internos](test/internalTest.js): testes feitos com um servidor simples criado com o node-minecraft-protocol
19
+ * [Testes externos](test/externalTests/): testes feitos com um servidor Vanilla
20
+
21
+ 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.
22
+
23
+ ### Criando um Teste Externo
24
+
25
+ Para criar um teste externo, basta criar um arquivo em [test/externalTests](test/externalTests).
26
+
27
+ Um exemplo: [test/externalTests/digAndBuild.js](https://github.com/PrismarineJS/mineflayer/blob/master/test/externalTests/digAndBuild.js)
28
+
29
+ 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.
30
+
31
+ ## Criando um Plugin de Terceiros
32
+ O Mineflayer suporta plugins; qualquer pessoa pode criar um plugin que adiciona uma API de nível mais alto acima do Mineflayer.
33
+
34
+ Vários plugins de terceiros foram [criados](https://github.com/andrewrk/mineflayer#third-party-plugins).
35
+
36
+ Para criar um novo plugin, você deve:
37
+
38
+ 1. Criar um novo repositório.
39
+ 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)).
40
+ 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)).
41
+ 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)).
42
+
43
+ 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).
44
+
45
+ Veja um [exemplo completo](https://github.com/andrewrk/mineflayer-navigate/tree/e24cb6a868ce64ae43bea2d035832c15ed01d301) aqui.
46
+
47
+ ## Relatando Bugs
48
+ O Mineflayer funciona bem na maioria das situações, mas às vezes ainda pode ter bugs.
49
+
50
+ Ao encontrar um bug, é melhor relatar o erro fornecendo as seguintes informações:
51
+
52
+ * O que você está tentando fazer (o objetivo em inglês).
53
+ * O que você tentou (o código).
54
+ * O que aconteceu.
55
+ * O que você esperava que acontecesse.
56
+
57
+ ## Código do Mineflayer
58
+ Aqui estão algumas coisas a se considerar ao criar uma solicitação de pull (pull request) ou fazer um commit:
59
+
60
+ ### Tratamento de Erros
61
+ 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.
62
+
63
+ Isso significa que não devemos usar `throw new Error("erro")`, mas sim passar o erro junto com o callback.
64
+
65
+ Por exemplo:
66
+
67
+ ```js
68
+ function myfunction (param1, callback) {
69
+ let toDo = 1
70
+ toDo = 2
71
+ if (toDo === 2) { // everything worked (todo está funcionado)
72
+ callback()
73
+ } else {
74
+ callback(new Error('something failed')) // (algo falhou)
75
+ }
76
+ }
77
+ ```
78
+
79
+ Veja outro exemplo no [código do Mineflayer](https://github.com/andrewrk/mineflayer/blob/a8736c4ea473cf1a609c5a29046c0cdad006d429/lib/plugins/bed.js#L10).
80
+
81
+ ### Atualizando a Documentação
82
+ 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.
83
+
84
+ Esta documentação não é oficialmente mantida; para ver as informações mais recentes, consulte a documentação original: [unstable_api](../CONTRIBUTING.md).
@@ -0,0 +1,169 @@
1
+ ## Perguntas Frequentes
2
+
3
+ Este documento de perguntas frequentes tem o objetivo de ajudar as pessoas com informações básicas.
4
+
5
+ ## Como ocultar erros?
6
+
7
+ 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:
8
+
9
+ ```js
10
+ client.on('error', () => {})
11
+ client.on('end', () => {})
12
+ ```
13
+
14
+ ## Meu evento de chat não está sendo emitido em um servidor personalizado. Como posso resolver isso?
15
+
16
+ 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.
17
+
18
+ ## Como posso coletar informações de um plugin de chat personalizado?
19
+
20
+ 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.
21
+
22
+ **Exemplo:**
23
+
24
+ Suponha que a mensagem seja semelhante a esta:
25
+
26
+ ```
27
+ (!) U9G ganhou o /jackpot e recebeu
28
+ $26,418,402,450! Eles compraram 2,350,000 (76.32%) bilhetes
29
+ de um total de 3,079,185 bilhetes vendidos!
30
+ ```
31
+
32
+ ```js
33
+ const regex = {
34
+ first: /\(!\) (.+) ganhou o \/jackpot e recebeu +/,
35
+ second: /\$(.+)! Eles compraram (.+) \((.+)%\) bilhetes do total de /,
36
+ third: /(.+) bilhetes vendidos!/
37
+ }
38
+
39
+ let jackpot = {}
40
+ bot.on('messagestr', msg => {
41
+ if (regex.first.test(msg)) {
42
+ const username = msg.match(regex.first)[1]
43
+ jackpot.username = username
44
+ } else if (regex.second.test(msg)) {
45
+ const [, moneyWon, boughtTickets, winPercent] = msg.match(regex.second)
46
+ jackpot.moneyWon = parseInt(moneyWon.replace(/,/g, ''))
47
+ jackpot.boughtTickets = parseInt(boughtTickets.replace(/,/g, ''))
48
+ jackpot.winPercent = parseFloat(winPercent)
49
+ } else if (regex.third.test(msg)) {
50
+ const totalTickets = msg.match(regex.third)[1]
51
+ jackpot.totalTickets = parseInt(totalTickets.replace(/,/g, ''))
52
+ onDone(jackpot)
53
+ jackpot = {}
54
+ }
55
+ })
56
+ ```
57
+
58
+ ## Como posso enviar um comando?
59
+
60
+ Usando `bot.chat()`.
61
+
62
+ **Exmemplo:**
63
+ ```js
64
+ bot.chat('/give @p diamond')
65
+ ```
66
+
67
+ ### É possível criar vários bots e controlá-los separadamente?
68
+
69
+ 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.
70
+
71
+ ### Como faço para o bot largar todo o seu inventário?
72
+
73
+ 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).
74
+
75
+ ### Como vejo os pacotes que foram enviados/recebidos?
76
+
77
+ 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).
78
+
79
+ ### Quero evitar desconexões devido a lag no servidor, como posso fazer isso?
80
+
81
+ 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).
82
+
83
+ ### Como posso obter a descrição/texto de um item?
84
+
85
+ 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.
86
+
87
+ **Exemplo:**
88
+ ```js
89
+ function getLore (item) {
90
+ let message = ''
91
+ if (item.nbt == null) return message
92
+
93
+ const nbt = require('prismarine-nbt')
94
+ const ChatMessage = require('prismarine-chat')(bot.version)
95
+
96
+ const data = nbt.simplify(item.nbt)
97
+ const display = data.display
98
+ if (display == null) return message
99
+
100
+ const lore = display.Lore
101
+ if (lore == null) return message
102
+ for (const line of lore) {
103
+ message += new ChatMessage(line).toString()
104
+ message += '\n'
105
+ }
106
+
107
+ return message
108
+ }
109
+ ```
110
+
111
+ ### Como posso enviar uma mensagem do console para o servidor?
112
+
113
+ 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).
114
+
115
+ ### Ao criar um plugin, como posso especificar outro plugin como dependência?
116
+
117
+ 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á.
118
+
119
+ Nota: a ordem em que os plugins são carregados é dinâmica; você nunca deve chamar outro plugin em sua função `inject()`.
120
+
121
+ ### Como posso usar um proxy SOCKS5?
122
+
123
+ 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:
124
+
125
+ ```js
126
+ connect: (client) => {
127
+ socks.createConnection({
128
+ proxy: {
129
+ host: PROXY_IP,
130
+ port: PROXY_PORT,
131
+ type: 5,
132
+ userId: PROXY_USERNAME,
133
+ password: PROXY_PASSWORD
134
+ },
135
+ command: 'connect',
136
+ destination: {
137
+ host: MC_SERVER_IP,
138
+ port: MC_SERVER_PORT
139
+ }
140
+ }, (err, info) => {
141
+ if (err) {
142
+ console.log(err)
143
+ return
144
+ }
145
+ client.setSocket(info.socket)
146
+ client.emit('connect')
147
+ })
148
+ }
149
+ ```
150
+
151
+ # Erros Comuns
152
+
153
+ ### `UnhandledPromiseRejectionWarning: Error: Failed to read asymmetric key`
154
+
155
+ Isso ocorre quando você fornece uma versão incorreta ao mineflayer, ou o mineflayer detecta a versão errada.
156
+
157
+ ### `TypeError: Cannot read property '?' of undefined`
158
+
159
+ Você pode estar tentando acessar uma propriedade do bot que ainda não existe; tente acessar a propriedade após o evento `spawn`.
160
+
161
+ ### `SyntaxError: Unexpected token '?'`
162
+
163
+ Atualize a versão do seu Node.js.
164
+
165
+ ### O bot não consegue quebrar/colocar blocos ou abrir baús
166
+
167
+ Verifique se a proteção do spawn não está impedindo o bot de realizar a ação.
168
+
169
+ Esta documentação não é oficial. Para as informações mais atualizadas, consulte a documentação original: [FAQ](../FAQ.md).
@@ -0,0 +1,228 @@
1
+ # Mineflayer
2
+
3
+ [![NPM version](https://badge.fury.io/js/mineflayer.svg)](http://badge.fury.io/js/mineflayer)
4
+ [![Build Status](https://github.com/PrismarineJS/mineflayer/workflows/CI/badge.svg)](https://github.com/PrismarineJS/mineflayer/actions?query=workflow%3A%22CI%22)
5
+ [![Discord](https://img.shields.io/badge/chat-on%20discord-brightgreen.svg)](https://discord.gg/GsEFRM8)
6
+ [![Gitter](https://img.shields.io/badge/chat-on%20gitter-brightgreen.svg)](https://gitter.im/PrismarineJS/general)
7
+ [![Irc](https://img.shields.io/badge/chat-on%20irc-brightgreen.svg)](https://irc.gitter.im/)
8
+
9
+ [![Try it on gitpod](https://img.shields.io/badge/try-on%20gitpod-brightgreen.svg)](https://gitpod.io/#https://github.com/PrismarineJS/mineflayer)
10
+
11
+ | <sub>EN</sub> [English](../README.md) | <sub>RU</sub> [русский](../ru/README_RU.md) | <sub>ES</sub> [Español](../es/README_ES.md) | <sub>FR</sub> [Français](../fr/README_FR.md) | <sub>TR</sub> [Türkçe](../tr/README_TR.md) | <sub>ZH</sub> [中文](../zh/README_ZH_CN.md) | <sub>BR</sub> [Português](../br/README_BR.md) |
12
+ |-------------------------|----------------------------|----------------------------|----------------------------|----------------------------|-----------------|-----------------|
13
+
14
+ Crie bots para o Minecraft com uma API JavaScript poderosa, estável e de alto nível.
15
+
16
+ Primeira vez usando o Node.js? Você pode querer começar com o tutorial [tutorial](../tutorial.md)
17
+
18
+ ## Recursos
19
+
20
+ * 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.
21
+ * Conhecimento e rastreamento de entidades.
22
+ * Conhecimento de blocos. Você pode consultar o mundo ao seu redor em milissegundos para encontrar qualquer bloco.
23
+ * Física e movimento - lida com todas as caixas delimitadoras.
24
+ * Ataque a entidades e uso de veículos.
25
+ * Gerenciamento de inventário.
26
+ * Criação, baús, dispensadores, mesas de encantamento.
27
+ * Escavação e construção.
28
+ * Diversas funcionalidades, como saber sua saúde e se está chovendo.
29
+ * Ativação de blocos e uso de itens.
30
+ * Chat.
31
+
32
+ ### Planos para o Futuro
33
+ - Dê uma olhada em nossos [projetos atuais](https://github.com/PrismarineJS/mineflayer/wiki/Big-Prismarine-projects)
34
+
35
+ ## Instalação
36
+ - Primeiro, instale o Node.js >= 14 a partir do [nodejs.org](https://nodejs.org/)
37
+
38
+ `npm install mineflayer`
39
+
40
+ ## Documentação
41
+
42
+ | Link | Descrição |
43
+ |---|---|
44
+ | [tutorial](../tutorial.md) | Comece com o Node.js e o Mineflayer |
45
+ | [FAQ_BR.md](FAQ_BR.md) | Alguma dúvida? Confira isso |
46
+ | [api_br.md](api_br.md) [unstable_api_br.md](unstable_api_br.md) | Toda a documentação da API |
47
+ | [history.md](../history.md) | Histórico de mudanças do Mineflayer |
48
+ | [examples/](https://github.com/PrismarineJS/mineflayer/tree/master/examples) | Todos os exemplos do Mineflayer |
49
+
50
+ ## Contribuições
51
+
52
+ Por favor, leia [CONTRIBUTING_BR.md](CONTRIBUTING_BR.md) e [prismarine-contribute](https://github.com/PrismarineJS/prismarine-contribute)
53
+
54
+ ## Uso
55
+
56
+ **Vídeos**
57
+
58
+ 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).
59
+
60
+ 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)
61
+
62
+ [<img src="https://img.youtube.com/vi/ltWosy4Z0Kw/0.jpg" alt="tutorial 1" width="200">](https://www.youtube.com/watch?v=ltWosy4Z0Kw)
63
+ [<img src="https://img.youtube.com/vi/UWGSf08wQSc/0.jpg" alt="tutorial 2" width="200">](https://www.youtube.com/watch?v=UWGSf08wQSc)
64
+ [<img src="https://img.youtube.com/vi/ssWE0kXDGJE/0.jpg" alt="tutorial 3" width="200">](https://www.youtube.com/watch?v=ssWE0kXDGJE)
65
+ [<img src="https://img.youtube.com/vi/walbRk20KYU/0.jpg" alt="tutorial 4" width="200">](https://www.youtube.com/watch?v=walbRk20KYU)
66
+
67
+ **Começando**
68
+
69
+ 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.
70
+
71
+ ### Exemplo: echo
72
+ ```js
73
+ const mineflayer = require('mineflayer')
74
+
75
+ const bot = mineflayer.createBot({
76
+ host: 'localhost', // IP do servidor de Minecraft
77
+ username: 'email@example.com', // Nome de usuário da conta, e-mail se for premium
78
+ password: '12345678' // Senha para servidores premium
79
+ // port: 25565, // Altere apenas se for um servidor que não usa a porta padrão (25565)
80
+ // version: false, // Altere apenas se for necessário uma versão específica
81
+ // auth: 'mojang', // Altere apenas se você tiver uma conta Microsoft (nesse caso, seria auth: 'microsoft')
82
+ })
83
+
84
+ bot.on('chat', (username, message) => {
85
+ if (username === bot.username) return
86
+ bot.chat(message)
87
+ })
88
+
89
+ // Imprimir erros e o motivo do kick se você for expulso:
90
+ bot.on('kicked', (reason, loggedIn) => console.log(reason, loggedIn))
91
+ bot.on('error', err => console.log(err))
92
+ ```
93
+
94
+ ### Veja o que o seu bot faz
95
+
96
+ 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.
97
+
98
+ Tudo o que você precisa fazer é executar `npm install prismarine-viewer` e adicionar o seguinte ao seu bot:
99
+
100
+ ```js
101
+ const { mineflayer: mineflayerViewer } = require('prismarine-viewer')
102
+ bot.once('spawn', () => {
103
+ 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
104
+ })
105
+ ```
106
+
107
+ E você poderá ver uma representação *ao vivo* como esta:
108
+
109
+ [<img src="https://prismarinejs.github.io/prismarine-viewer/test_1.16.1.png" alt="viewer" width="500">](https://prismarinejs.github.io/prismarine-viewer/)
110
+
111
+ #### Exemplos Ruins
112
+
113
+ | Exemplo | Descrição |
114
+ |---|---|
115
+ | [viewer](https://github.com/PrismarineJS/mineflayer/tree/master/examples/viewer) | Visualize o que seu bot vê no jogo |
116
+ | [pathfinder](https://github.com/Karang/mineflayer-pathfinder/blob/master/examples/test.js) | Faça seu bot se locomover automaticamente para qualquer localização |
117
+ | [chest](https://github.com/PrismarineJS/mineflayer/blob/master/examples/chest.js) | Aprenda a usar baús, fornos, dispensadores e mesas de encantamento |
118
+ | [digger](https://github.com/PrismarineJS/mineflayer/blob/master/examples/digger.js) | Aprenda como criar um bot que pode quebrar blocos |
119
+ | [discord](https://github.com/PrismarineJS/mineflayer/blob/master/examples/discord.js) | Conecte um bot Discord com um bot Mineflayer |
120
+ | [jumper](https://github.com/PrismarineJS/mineflayer/blob/master/examples/jumper.js) | Aprenda a se mover, pular, usar veículos e atacar entidades próximas |
121
+ | [ansi](https://github.com/PrismarineJS/mineflayer/blob/master/examples/ansi.js) | Exibe todas as mensagens do chat no console com suas cores correspondentes |
122
+ | [guard](https://github.com/PrismarineJS/mineflayer/blob/master/examples/guard.js) | Crie um bot que defenda uma área predefinida de mobs |
123
+ | [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 |
124
+
125
+ Mais exemplos na pasta de [exemplos](https://github.com/PrismarineJS/mineflayer/tree/master/examples)
126
+
127
+ ### Módulos
128
+
129
+ A maioria do desenvolvimento está ocorrendo em pequenos módulos npm que são usados pelo Mineflayer.
130
+
131
+ #### O Caminho do Node™
132
+
133
+ > "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)
134
+
135
+ #### Módulos
136
+ Estes são os principais módulos que compõem o Mineflayer:
137
+
138
+ | Módulo | Descrição |
139
+ |---|---|
140
+ | [minecraft-protocol](https://github.com/PrismarineJS/node-minecraft-protocol) | Analisa e cria pacotes do Minecraft, autenticação e criptografia.
141
+ | [minecraft-data](https://github.com/PrismarineJS/minecraft-data) | Módulo independente de linguagem que fornece dados do Minecraft para clientes, servidores e bibliotecas.
142
+ | [prismarine-physics](https://github.com/PrismarineJS/prismarine-physics) | Motor de física para entidades do Minecraft
143
+ | [prismarine-chunk](https://github.com/PrismarineJS/prismarine-chunk) | Representa um pedaço do Minecraft
144
+ | [node-vec3](https://github.com/PrismarineJS/node-vec3) | Usa vetores 3D com testes sólidos
145
+ | [prismarine-block](https://github.com/PrismarineJS/prismarine-block) | Representa um bloco e suas informações associadas no Minecraft
146
+ | [prismarine-chat](https://github.com/PrismarineJS/prismarine-chat) | Analisador de mensagens de chat do Minecraft (retirado do Mineflayer)
147
+ | [node-yggdrasil](https://github.com/PrismarineJS/node-yggdrasil) | Biblioteca Node.js para interagir com o sistema de autenticação da Mojang conhecido como Yggdrasil.
148
+ | [prismarine-world](https://github.com/PrismarineJS/prismarine-world) | Implementação principal dos mundos do Minecraft para o Prismarine
149
+ | [prismarine-windows](https://github.com/PrismarineJS/prismarine-windows) | Representa as interfaces do Minecraft
150
+ | [prismarine-item](https://github.com/PrismarineJS/prismarine-item) | Representa um item e suas informações associadas no Minecraft
151
+ | [prismarine-nbt](https://github.com/PrismarineJS/prismarine-nbt) | Analisador de NBT para node-minecraft-protocol
152
+ | [prismarine-recipe](https://github.com/PrismarineJS/prismarine-recipe) | Representa receitas de crafting do Minecraft
153
+ | [prismarine-biome](https://github.com/PrismarineJS/prismarine-biome) | Representa um bioma e suas informações associadas no Minecraft
154
+ | [prismarine-entity](https://github.com/PrismarineJS/prismarine-entity) | Representa uma entidade e suas informações associadas no Minecraft
155
+
156
+ ### Depuração
157
+
158
+ Você pode habilitar a depuração do protocolo usando a variável de ambiente `DEBUG`:
159
+
160
+ ```bash
161
+ DEBUG="minecraft-protocol" node [...]
162
+ ```
163
+
164
+ No Windows:
165
+ ```
166
+ set DEBUG=minecraft-protocol
167
+ node seu_arquivo.js
168
+ ```
169
+
170
+ ## Plugins de Terceiros
171
+
172
+ Mineflayer tem a capacidade de instalar plugins; qualquer pessoa pode criar um plugin que adiciona uma API de alto nível ao Mineflayer.
173
+
174
+ Os mais atualizados e úteis são:
175
+
176
+ * [pathfinder](https://github.com/Karang/mineflayer-pathfinder) - algoritmo de busca A* avançado com muitos recursos configuráveis
177
+ * [prismarine-viewer](https://github.com/PrismarineJS/prismarine-viewer) - visualizador de chunks na web
178
+ * [web-inventory](https://github.com/ImHarvol/mineflayer-web-inventory) - visualizador de inventário na web
179
+ * [statemachine](https://github.com/TheDudeFromCI/mineflayer-statemachine) - API para comportamentos mais complexos
180
+ * [Armor Manager](https://github.com/G07cha/MineflayerArmorManager) - gerenciamento automático de armaduras
181
+ * [Collect Block](https://github.com/TheDudeFromCI/mineflayer-collectblock) - API rápida e simples para coletar blocos.
182
+ * [Dashboard](https://github.com/wvffle/mineflayer-dashboard) - Painel de controle para um bot do Mineflayer
183
+ * [PVP](https://github.com/TheDudeFromCI/mineflayer-pvp) - API simples para PVP e PVE.
184
+ * [auto-eat](https://github.com/LINKdiscordd/mineflayer-auto-eat) - Plugin para comer automaticamente.
185
+ * [Tool](https://github.com/TheDudeFromCI/mineflayer-tool) - Plugin com uma API de alto nível para selecionar automaticamente a melhor arma/ferramenta.
186
+ * [Hawkeye](https://github.com/sefirosweb/minecraftHawkEye) - Plugin para mirar automaticamente com arcos.
187
+
188
+ Mas também dê uma olhada em:
189
+
190
+ * [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)
191
+ * [blockfinder](https://github.com/Darthfett/mineflayer-blockFinder) - encontra blocos no mundo tridimensional
192
+ * [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)
193
+ * [auto-auth](https://github.com/G07cha/MineflayerAutoAuth) - autenticação automática por chat
194
+ * [Bloodhound](https://github.com/Nixes/mineflayer-bloodhound) - determina quem e/ou o que é responsável por causar dano a outra entidade
195
+ * [tps](https://github.com/SiebeDW/mineflayer-tps) - obter o tps atual (tps processado)
196
+ * [panorama](https://github.com/IceTank/mineflayer-panorama) - tirar imagens panorâmicas do seu mundo
197
+
198
+ ## Projetos que Usam o Mineflayer
199
+
200
+ * [rom1504/rbot](https://github.com/rom1504/rbot)
201
+ - [YouTube - construindo uma escada espiral](https://www.youtube.com/watch?v=UM1ZV5200S0)
202
+ - [YouTube - replicando uma estrutura](https://www.youtube.com/watch?v=0cQxg9uDnzA)
203
+ * [Darthfett/Helperbot](https://github.com/Darthfett/Helperbot)
204
+ * [vogonistic/voxel](https://github.com/vogonistic/mineflayer-voxel) - visualiza o que o bot está fazendo usando voxel.js
205
+ * [JonnyD/Skynet](https://github.com/JonnyD/Skynet) - registra a atividade de um jogador em uma API online
206
+ * [MinecraftChat](https://github.com/rom1504/MinecraftChat) (última versão de código aberto, criada por AlexKvazos) - Interface de chat na web para o Minecraft <https://minecraftchat.net/>
207
+ * [Cheese Bot](https://github.com/Minecheesecraft/Cheese-Bot) - bot com uma interface limpa. Feito com Node-Webkit. http://bot.ezcha.net/
208
+ * [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)
209
+ * [hexatester/minetelegram](https://github.com/hexatester/minetelegram) - ponte para o Telegram, feita com Mineflayer e Telegraf.
210
+ * [e centenas mais](https://github.com/PrismarineJS/mineflayer/network/dependents) - todos os projetos que usam o Mineflayer e foram detectados pelo GitHub.
211
+
212
+ ## Testes
213
+
214
+ ### Executar Todos os Testes
215
+
216
+ Basta executar: `npm test`
217
+
218
+ ### Executar Testes para uma Versão Específica do Minecraft
219
+ Execute `npm test -- -g <versão>`, onde `<versão>` é uma versão do Minecraft, como `1.12`, `1.15.2`...
220
+
221
+ ### Executar um Teste Específico
222
+ Execute `npm test -- -g <nome_do_teste>`, onde `<nome_do_teste>` é o nome do teste que você deseja executar, como `bed`, `useChests`, `rayTrace`...
223
+
224
+ ## Licença
225
+
226
+ [MIT](LICENSE)
227
+
228
+ Esta documentação não é oficialmente mantida. Para ver as últimas atualizações, consulte a documentação original: [unstable_api](../README.md)