Skip to content

Latest commit

 

History

History
86 lines (58 loc) · 6.5 KB

CONTRIBUTING_RU.md

File metadata and controls

86 lines (58 loc) · 6.5 KB

Вклад в проект

Изначально Mineflayer создал andrewrk, но с тех пор проект был улучшен и исправлен многими помощниками. Это то, почему важно знать, как внести свой вклад в mineflayer.

Организация проблем

У нас есть метки трёх стадий для организаций проблем:

  • Стадия 1: созданы каким-либо новичком, мы не знаем, нуждается ли это в реализации или исправлении
  • Стадия 2: многообещающая идея, но требует дополнительного обдумывания перед реализацией
  • Стадия 3: идея точно задана, осталось только сделать код

Ссылки по типу https://github.com/PrismarineJS/mineflayer/issues?q=is%3Aopen+is%3Aissue+-label%3AStage1 могут использоваться для показа только с меток первой стадии, если вы хотите развить какую-либо тему.

Создание тестов

Mineflayer имеет 2 вида тестов :

  • Внутренние тесты : Тесты, которые выполняются на простом сервере, созданном с помощью node-minecraft-protocol.
  • Внешние тесты : Тесты, который выполняются на ванильном сервере.

Цель этих тестов - автоматически определить, что работает, а что нет в mineflayer, чтобы было проще заставить mineflayer работать.

Создание внешних тестов

Для внешних тестов вам просто нужно создать файл в test/externalTests

Например : test/externalTests/digAndBuild.js

Этот файл должен экспортировать функцию, возвращающую функцию или массив функций, принимающих в качестве параметра объект бота и выполненный обратный вызов,
он должен содержать утверждения для проверки, если тестируемая функциональность не сработала.

Создание стороннего плагина

Mineflayer поддерживает плагины; любой желающий может создать плагин, который добавляет API еще более высокого уровня поверх Mineflayer.

Несколько сторонних плагинов, которые уже были сделаны вы можете найти здесь.

Для того чтобы создать новый плагин, вам необходимо :

  1. Создать новый репозиторий
  2. В вашем файле index.js, экспортировать функцию init, которая будет принимать mineflayer в качестве аргумента. (Пример)
  3. Эта функция возвращает функцию inject, которая принимает объект бота. (Пример)
  4. С помощью этой inject функции можно добавить функционал объекту бота. (Пример)

Поскольку объект mineflayer передается в параметре, этот новый пакет не должен зависеть от mineflayer (в package.json не должно быть зависимости mineflayer)

Смотрите полный пример здесь.

Сообщения об ошибках

Mineflayer хорошо работает в большинстве случаев, но иногда в нем все еще есть ошибки.

При обнаружении ошибки лучше всего сообщить о проблеме, предоставив следующую информацию :

  • что вы хотите сделать (цель на английском языке)
  • что вы делаете (ваш код)
  • что происходит
  • что вы ожидали увидеть

Код Mineflayer

Некоторые вещи, о которых следует подумать при отправке Pull Request или commit :

Обработка ошибок

В большинстве случаев mineflayer не должен выводить бота из строя. Даже если что-то не сработает, бот может воспользоваться альтернативным маршрутом, чтобы добраться до своей цели.

Это означает, что мы не должны использовать throw(new Error("error")), а вместо этого использовать соглашение node.js о передаче ошибки в обратном вызове. + Пример :

function myfunction (param1, callback) {
  // что-то делаем
  let toDo = 1
  toDo = 2
  if (toDo === 2) { // всё работает
    callback()
  } else {
    callback(new Error('что-то не так'))
  }
}

Вы можете посмотреть другие примеры в коде mineflayer

Обновление документации

Список содержимого документации docs/api.md is made with doctoc. After updating that file, you should run doctoc docs/api.md to update the table of content.