Skip to content

Commit

Permalink
Merge branch 'PrismarineJS:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
frej4189 authored Jan 14, 2024
2 parents 0e59cae + 298d442 commit 30accc6
Show file tree
Hide file tree
Showing 41 changed files with 2,997 additions and 242 deletions.
44 changes: 23 additions & 21 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,42 +17,44 @@ jobs:
with:
node-version: 18.x
- run: npm i && npm run lint

PrepareSupportedVersions:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}

steps:
- uses: actions/checkout@v2
- name: Use Node.js 18.x
uses: actions/[email protected]
with:
node-version: 18.x
- id: set-matrix
run: |
node -e "
const testedVersions = require('./lib/version').testedVersions;
console.log('matrix='+JSON.stringify({'include': testedVersions.map(mcVersion => ({mcVersion}))}))
" >> $GITHUB_OUTPUT
MinecraftServer:
needs: PrepareSupportedVersions
runs-on: ubuntu-latest
strategy:
matrix:
javaVersion: [1.8]
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']
include:
- javaVersion: 16
mcVersion: '1.17.1'
- javaVersion: 17
mcVersion: '1.18.2'
- javaVersion: 17
mcVersion: '1.19'
- javaVersion: 17
mcVersion: '1.19.2'
- javaVersion: 17
mcVersion: '1.19.3'
- javaVersion: 17
mcVersion: '1.19.4'
- javaVersion: 17
mcVersion: '1.20.1'
matrix: ${{fromJson(needs.PrepareSupportedVersions.outputs.matrix)}}
fail-fast: false

steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
- name: Use Node.js 18.x
uses: actions/[email protected]
with:
node-version: 18.x
- name: Setup Java JDK
uses: actions/[email protected]
with:
java-version: ${{ matrix.javaVersion }}
java-version: 17
java-package: jre
- name: Install Dependencies
run: npm install
- name: Start Tests
run: npm run mocha_test -- -g ${{ matrix.mcVersion }}
run: npm run mocha_test -- -g ${{ matrix.mcVersion }}v
8 changes: 4 additions & 4 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@

[![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)

| <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>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) |
|-------------------------|----------------------------|----------------------------|----------------------------|----------------------------|-------------------------|--------------------|

Create Minecraft bots with a powerful, stable, and high level JavaScript [API](api.md), also usable from Python.

First time using Node.js? You may want to start with the [tutorial](tutorial.md). Know Python? Checkout some [Python examples](https://github.com/PrismarineJS/mineflayer/tree/master/examples/python) and try out [Mineflayer on Google Colab](https://colab.research.google.com/github/PrismarineJS/mineflayer/blob/master/docs/mineflayer.ipynb).

## Features

* Supports 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 and 1.20.
* Supports Minecraft 1.8 to 1.20.2 (1.8, 1.9, 1.10, 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17, 1.18, 1.19 and 1.20)
* Entity knowledge and tracking.
* Block knowledge. You can query the world around you. Milliseconds to find any block.
* Physics and movement - handle all bounding boxes
Expand All @@ -35,7 +35,7 @@ First time using Node.js? You may want to start with the [tutorial](tutorial.md)

## Installation

First install Node.js >= 14 from [nodejs.org](https://nodejs.org/) then:
First install Node.js >= 18 from [nodejs.org](https://nodejs.org/) then:

`npm install mineflayer`

Expand Down
15 changes: 11 additions & 4 deletions docs/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@
- ["blockBreakProgressEnd" (block, entity)](#blockbreakprogressend-block-entity)
- ["diggingCompleted" (block)](#diggingcompleted-block)
- ["diggingAborted" (block)](#diggingaborted-block)
- ["usedFirework"](#usedfirework)
- ["usedfirework"](#usedfirework)
- ["move"](#move)
- ["forcedMove"](#forcedmove)
- ["mount"](#mount)
Expand Down Expand Up @@ -291,7 +291,7 @@
- [bot.getExplosionDamages(entity, position, radius, [rawDamages])](#botgetexplosiondamagesentity-position-radius-rawdamages)
- [bot.lookAt(point, [force])](#botlookatpoint-force)
- [bot.look(yaw, pitch, [force])](#botlookyaw-pitch-force)
- [bot.updateSign(block, text)](#botupdatesignblock-text)
- [bot.updateSign(block, text, back = false)](#botupdatesignblock-text-back--false)
- [bot.equip(item, destination)](#botequipitem-destination)
- [bot.unequip(destination)](#botunequipdestination)
- [bot.tossStack(item)](#bottossstackitem)
Expand Down Expand Up @@ -331,6 +331,7 @@
- [bot.setCommandBlock(pos, command, [options])](#botsetcommandblockpos-command-options)
- [bot.supportFeature(name)](#botsupportfeaturename)
- [bot.waitForTicks(ticks)](#botwaitforticksticks)
- [bot.respawn()](#botrespawn)
- [Lower level inventory methods](#lower-level-inventory-methods)
- [bot.clickWindow(slot, mouseButton, mode)](#botclickwindowslot-mousebutton-mode)
- [bot.putSelectedItemRange(start, end, window, slot)](#botputselecteditemrangestart-end-window-slot)
Expand Down Expand Up @@ -1396,7 +1397,7 @@ Fires when a note block goes off somewhere.
* `pitch`: The pitch of the note (between 0-24 inclusive where 0 is the
lowest and 24 is the highest). More information about how the pitch values
correspond to notes in real life are available on the
[official Minecraft wiki](http://www.minecraftwiki.net/wiki/Note_Block).
[official Minecraft wiki](http://minecraft.wiki/w/Note_Block).

#### "pistonMove" (block, isPulling, direction)

Expand Down Expand Up @@ -1429,10 +1430,12 @@ This occurs whether the process was completed or aborted.

* `block` - the block that still exists

#### "usedfirework"
#### "usedFirework" (fireworkEntityId)

Fires when the bot uses a firework while elytra flying.

* `fireworkEntityId` - the entity id of the firework.

#### "move"

Fires when the bot moves. If you want the current position, use
Expand Down Expand Up @@ -2101,6 +2104,10 @@ The list of available features can be found inside the [./lib/features.json](htt

This is a promise-based function that waits for a given number of in-game ticks to pass before continuing. This is useful for quick timers that need to function with specific timing, regardless of the given physics tick speed of the bot. This is similar to the standard Javascript setTimeout function, but runs on the physics timer of the bot specifically.

#### bot.respawn()

When `respawn` option is disabled, you can call this method manually to respawn.

### Lower level inventory methods

These are lower level methods for the inventory, they can be useful sometimes but prefer the inventory methods presented above if you can.
Expand Down
84 changes: 84 additions & 0 deletions docs/br/CONTRIBUTING_BR.md
Original file line number Diff line number Diff line change
@@ -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).
Loading

0 comments on commit 30accc6

Please sign in to comment.