<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
**Содержание**  *сгенерировано с помощью [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)
  - [Classes](#classes)
    - [vec3](#vec3)
    - [mineflayer.Location](#mineflayerlocation)
    - [Entity](#entity)
    - [Block](#block)
    - [Biome](#biome)
    - [Item](#item)
    - [windows.Window (base class)](#windowswindow-base-class)
    - [Recipe](#recipe)
    - [mineflayer.Chest](#mineflayerchest)
      - [chest.window](#chestwindow)
      - [chest "open"](#chest-open)
      - [chest "close"](#chest-close)
      - [chest "updateSlot" (oldItem, newItem)](#chest-updateslot-olditem-newitem)
      - [chest.close()](#chestclose)
      - [chest.deposit(itemType, metadata, count, [callback])](#chestdeposititemtype-metadata-count-callback)
      - [chest.withdraw(itemType, metadata, count, [callback])](#chestwithdrawitemtype-metadata-count-callback)
      - [chest.count(itemType, [metadata])](#chestcountitemtype-metadata)
      - [chest.items()](#chestitems)
    - [mineflayer.Furnace](#mineflayerfurnace)
      - [furnace "open"](#furnace-open)
      - [furnace "close"](#furnace-close)
      - [furnace "update"](#furnace-update)
      - [furnace "updateSlot" (oldItem, newItem)](#furnace-updateslot-olditem-newitem)
      - [furnace.close()](#furnaceclose)
      - [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.Dispenser](#mineflayerdispenser)
      - [dispenser "open"](#dispenser-open)
      - [dispenser "close"](#dispenser-close)
      - [dispenser "updateSlot" (oldItem, newItem)](#dispenser-updateslot-olditem-newitem)
      - [dispenser.close()](#dispenserclose)
      - [dispenser.items()](#dispenseritems)
      - [dispenser.deposit(itemType, metadata, count, [callback])](#dispenserdeposititemtype-metadata-count-callback)
      - [dispenser.withdraw(itemType, metadata, count, [callback])](#dispenserwithdrawitemtype-metadata-count-callback)
      - [dispenser.count(itemType, [metadata])](#dispensercountitemtype-metadata)
    - [mineflayer.EnchantmentTable](#mineflayerenchantmenttable)
      - [enchantmentTable "open"](#enchantmenttable-open)
      - [enchantmentTable "close"](#enchantmenttable-close)
      - [enchantmentTable "updateSlot" (oldItem, newItem)](#enchantmenttable-updateslot-olditem-newitem)
      - [enchantmentTable "ready"](#enchantmenttable-ready)
      - [enchantmentTable.close()](#enchantmenttableclose)
      - [enchantmentTable.targetItem()](#enchantmenttabletargetitem)
      - [enchantmentTable.enchantments](#enchantmenttableenchantments)
      - [enchantmentTable.enchant(choice, [callback])](#enchantmenttableenchantchoice-callback)
      - [enchantmentTable.takeTargetItem([callback])](#enchantmenttabletaketargetitemcallback)
      - [enchantmentTable.putTargetItem(item, [callback])](#enchantmenttableputtargetitemitem-callback)
    - [mineflayer.Villager](#mineflayervillager)
      - [villager "open"](#villager-open)
      - [villager "close"](#villager-close)
      - [villager "updateSlot" (oldItem, newItem)](#villager-updateslot-olditem-newitem)
      - [villager "ready"](#villager-ready)
      - [villager.close()](#villagerclose)
      - [villager.trades](#villagertrades)
    - [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.entity](#botentity)
      - [bot.entities](#botentities)
      - [bot.username](#botusername)
      - [bot.spawnPoint](#botspawnpoint)
      - [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.player](#botplayer)
      - [bot.players](#botplayers)
      - [bot.isRaining](#botisraining)
      - [bot.chatPatterns](#botchatpatterns)
      - [bot.settings.chat](#botsettingschat)
      - [bot.settings.colorsEnabled](#botsettingscolorsenabled)
      - [bot.settings.viewDistance](#botsettingsviewdistance)
      - [bot.settings.difficulty](#botsettingsdifficulty)
      - [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.physics](#botphysics)
      - [bot.time.day](#bottimeday)
      - [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)
      - ["login"](#login)
      - ["spawn"](#spawn)
      - ["respawn"](#respawn)
      - ["game"](#game)
      - ["title"](#title)
      - ["rain"](#rain)
      - ["time"](#time)
      - ["kicked" (reason, loggedIn)](#kicked-reason-loggedin)
      - ["end"](#end)
      - ["spawnReset"](#spawnreset)
      - ["death"](#death)
      - ["health"](#health)
      - ["entitySwingArm" (entity)](#entityswingarm-entity)
      - ["entityHurt" (entity)](#entityhurt-entity)
      - ["entityWake" (entity)](#entitywake-entity)
      - ["entityEat" (entity)](#entityeat-entity)
      - ["entityCrouch" (entity)](#entitycrouch-entity)
      - ["entityUncrouch" (entity)](#entityuncrouch-entity)
      - ["entityEquipmentChange" (entity)](#entityequipmentchange-entity)
      - ["entitySleep" (entity)](#entitysleep-entity)
      - ["entitySpawn" (entity)](#entityspawn-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)
      - ["playerLeft" (player)](#playerleft-player)
      - ["blockUpdate" (oldBlock, newBlock)](#blockupdate-oldblock-newblock)
      - ["blockUpdate:(x, y, z)" (oldBlock, newBlock)](#blockupdatex-y-z-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)](#chestlidmove-block-isopen)
      - ["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)
    - [Functions](#functions)
      - [bot.blockAt(point)](#botblockatpoint)
      - [bot.blockInSight(maxSteps, vectorLength)](#botblockinsightmaxsteps-vectorlength)
      - [bot.canSeeBlock(block)](#botcanseeblockblock)
      - [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)
    - [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.setSettings(options)](#botsetsettingsoptions)
      - [bot.loadPlugin(plugin)](#botloadpluginplugin)
      - [bot.loadPlugins(plugins)](#botloadpluginsplugins)
      - [bot.sleep(bedBlock, [cb])](#botsleepbedblock-cb)
      - [bot.isABed(bedBlock)](#botisabedbedblock)
      - [bot.wake([cb])](#botwakecb)
      - [bot.setControlState(control, state)](#botsetcontrolstatecontrol-state)
      - [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, [callback])](#botdigblock-callback)
      - [bot.stopDigging()](#botstopdigging)
      - [bot.digTime(block)](#botdigtimeblock)
      - [bot.placeBlock(referenceBlock, faceVector, cb)](#botplaceblockreferenceblock-facevector-cb)
      - [bot.activateBlock(block, [callback])](#botactivateblockblock-callback)
      - [bot.activateEntity(entity, [callback])](#botactivateentityentity-callback)
      - [bot.consume(callback)](#botconsumecallback)
      - [bot.fish(callback)](#botfishcallback)
      - [bot.activateItem()](#botactivateitem)
      - [bot.deactivateItem()](#botdeactivateitem)
      - [bot.useOn(targetEntity)](#botuseontargetentity)
      - [bot.attack(entity)](#botattackentity)
      - [bot.swingArm([hand])](#botswingarmhand)
      - [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.openChest(chestBlock or minecartchestEntity)](#botopenchestchestblock-or-minecartchestentity)
      - [bot.openFurnace(furnaceBlock)](#botopenfurnacefurnaceblock)
      - [bot.openDispenser(dispenserBlock)](#botopendispenserdispenserblock)
      - [bot.openEnchantmentTable(enchantmentTableBlock)](#botopenenchantmenttableenchantmenttableblock)
      - [bot.openVillager(villagerEntity)](#botopenvillagervillagerentity)
      - [bot.trade(villagerInstance, tradeIndex, [times], [cb])](#bottradevillagerinstance-tradeindex-times-cb)
      - [bot.setCommandBlock(pos, command, track_output)](#botsetcommandblockpos-command-track_output)
    - [Методы инвентаря низкого уровня](#%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B8%D0%BD%D0%B2%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D1%8F-%D0%BD%D0%B8%D0%B7%D0%BA%D0%BE%D0%B3%D0%BE-%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8F)
      - [bot.clickWindow(slot, mouseButton, mode, cb)](#botclickwindowslot-mousebutton-mode-cb)
      - [bot.putSelectedItemRange(start, end, window, slot, cb)](#botputselecteditemrangestart-end-window-slot-cb)
      - [bot.putAway(slot, cb)](#botputawayslot-cb)
      - [bot.closeWindow(window)](#botclosewindowwindow)
      - [bot.transfer(options, cb)](#bottransferoptions-cb)
      - [bot.openBlock(block, Class)](#botopenblockblock-class)
      - [bot.openEntity(entity, Class)](#botopenentityentity-class)
      - [bot.moveSlotItem(sourceSlot, destSlot, cb)](#botmoveslotitemsourceslot-destslot-cb)
      - [bot.updateHeldItem()](#botupdatehelditem)
    - [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)

<!-- END doctoc generated TOC please keep comment here to allow auto update -->

# API

## Enums

Эти данные хранятся не внутри библиотеки Mineflayer [minecraft-data](https://github.com/PrismarineJS/minecraft-data) ,
 и доступны через [node-minecraft-data](https://github.com/PrismarineJS/node-minecraft-data).

### minecraft-data
Данные доступны в модуле [node-minecraft-data](https://github.com/PrismarineJS/node-minecraft-data)

Используйте `require('minecraft-data')(bot.version)`

### mcdata.blocks
Идентификация блоков по ID

### mcdata.items
Идентификация предметов по ID

### mcdata.materials

Объект в качестве идентификатора элемента инструмента

### mcdata.recipes
Идентификация крафтов по ID

### mcdata.instruments
Идентификация инструментов по ID

### mcdata.biomes
Идентификация биомов по ID

### mcdata.entities
Идентификация существ по ID

## Classes

### vec3

Смотрите [andrewrk/node-vec3](https://github.com/andrewrk/node-vec3)

Все координаты библиотеки Mineflayer используют данный класс

 * x - юг
 * y - вверх
 * z - запад

Функции и методы, требующие точного аргумента, как правило, используют `Vec3`,
а также массив с тремя значениями "x", "y", "z"

### mineflayer.Location

### Entity

Существами являются игроки, мобы и объекты. Вы также можете получить доступ
к своему существу, используя `bot.entity`.
Смотрите [prismarine-entity](https://github.com/PrismarineJS/prismarine-entity)

### Block

Смотрите [prismarine-block](https://github.com/PrismarineJS/prismarine-block)

`block.blockEntity` является дополнительным значением с данными объекта "Object"
```js
// sign.blockEntity
{
  x: -53,
  y: 88,
  z: 66,
  id: 'minecraft:sign', // 'Sign' в 1.10
  Text1: { toString: Function }, // ChatMessage object
  Text2: { toString: Function }, // ChatMessage object
  Text3: { toString: Function }, // ChatMessage object
  Text4: { toString: Function } // ChatMessage object
}
```

### Biome

Смотрите [prismarine-biome](https://github.com/PrismarineJS/prismarine-biome)

### Item

Смотрите [prismarine-item](https://github.com/PrismarineJS/prismarine-item)

### windows.Window (base class)

Смотрите [prismarine-windows](https://github.com/PrismarineJS/prismarine-windows)

### Recipe

Смотрите [prismarine-recipe](https://github.com/PrismarineJS/prismarine-recipe)

### mineflayer.Chest

Предоставляет сеанс взаимодействия с сундуками ( Открытие и закрытие )
Смотрите `bot.openContainer(chestBlock or minecartchestEntity)`.

#### chest.window

Если сундук открыт, этим свойством является `ChestWindow`.
Если же сундук закрыт, этим свойством является `null`.

#### chest "open"

Срабатывает, когда сундук открыт

#### chest "close"

Срабатывает, когда сундук закрыт

#### chest "updateSlot" (oldItem, newItem)

Срабатывает, когда в просматриваемом Вами сундуке обновляются слоты

#### chest.close()

#### chest.deposit(itemType, metadata, count, [callback])

 * `itemType` - ID предмета
 * `metadata` - числовое значение. `null` может совпадать с чем угодно.
 * `count` - количество предметов. `null` является 1 предметом
 * `callback(err)` - (необязательно) - Срабатывает при успешном действии

#### chest.withdraw(itemType, metadata, count, [callback])

 * `itemType` - ID предмета
 * `metadata` - числовое значение. `null` может совпадать с чем угодно.
 * `count` - количество предметов. `null` является 1 предметом
 * `callback(err)` - (необязательно) - Срабатывает при успешном действии

#### chest.count(itemType, [metadata])

Возвращает количество предметов разных типов

 * `itemType` - ID предмета
 * `metadata` - (необязательно) - Срабатывает при успешном действии

#### chest.items()

Возвращает список предметов в `Item`, которые на момент вызова находились в сундуке.

### mineflayer.Furnace

Смотрите `bot.openFurnace(furnaceBlock)`.

#### furnace "open"

Срабатывает, когда печь открыта

#### furnace "close"

Срабатывает, когда печь закрыта

#### furnace "update"

Срабатывает при обновлении `furnace.fuel` и/или обновлении `furnace.progress`.

#### furnace "updateSlot" (oldItem, newItem)

Срабатывает, когда в печи обновился слот для плавки

#### furnace.close()

#### furnace.takeInput([callback])

 * `callback(err, item)`

#### furnace.takeFuel([callback])

 * `callback(err, item)`

#### furnace.takeOutput([callback])

 * `callback(err, item)`

#### furnace.putInput(itemType, metadata, count, [cb])

#### furnace.putFuel(itemType, metadata, count, [cb])

#### furnace.inputItem()

Возвращает предметы в `Item`, которые на момент вызова находились в печи.

#### furnace.fuelItem()

Возвращает предмет в `Item`, которые на момент вызова находились в слоте для топлива печи.

#### furnace.outputItem()

Возвращает предмет в `Item`, который на момент вызова был доступен для вывода

#### furnace.fuel

Возвращает количество топлива в печи

#### furnace.progress

Возвращает прогресс плавки предмета

### mineflayer.Dispenser

Смотрите `bot.openDispenser(dispenserBlock)`.

#### dispenser "open"

Срабатывает, когда раздатчик был открыт

#### dispenser "close"

Срабатывает, когда раздатчик был закрыт

#### dispenser "updateSlot" (oldItem, newItem)

Срабатывает, когда в раздатчик положили предмет

#### dispenser.close()

#### dispenser.items()

Возвращает список предметов в `Item`, которые лежат в раздатчике.

#### dispenser.deposit(itemType, metadata, count, [callback])

 * `itemType` - ID предмета
 * `metadata` - числовое значение. `null` может совпадать с чем угодно.
 * `count` - количество предметов. `null` является 1 предметом
 * `callback(err)` - (необязательно) - Срабатывает при успешном действии

#### dispenser.withdraw(itemType, metadata, count, [callback])

 * `itemType` - ID предмета
 * `metadata` - числовое значение. `null` может совпадать с чем угодно.
 * `count` - количество предметов. `null` является 1 предметом
 * `callback(err)` - (необязательно) - Срабатывает при успешном действии

#### dispenser.count(itemType, [metadata])

Возвращает число определенного предмета, находящегося в раздатчике.

 * `itemType` - numerical item id
 * `metadata` - (optional) numerical value. `null` means match anything.

### mineflayer.EnchantmentTable

Смотрите `bot.openEnchantmentTable(enchantmentTableBlock)`.

#### enchantmentTable "open"

Срабатывает, когда стол зачарований был открыт

#### enchantmentTable "close"

Срабатывает, когда стол зачарований был закрыт

#### enchantmentTable "updateSlot" (oldItem, newItem)

Срабатывает, когда в стол зачарований положили предмет

#### enchantmentTable "ready"

Срабатывает, когда `enchantmentTable.enchantments` готов к зачарованию и вы
можете зачаровать предмет, используя `enchantmentTable.enchant(choice)`.

#### enchantmentTable.close()

#### enchantmentTable.targetItem()

Возвращает текущий предмет в столе зачарования. Этот метод может использоваться как для того чтобы положить предмет, так и для того, чтобы забрать его.

#### enchantmentTable.enchantments

Возвращает массив из трёх зачарований, доступных для выбориа
`level` может являтся `null`, если сервер ещё не отправил данные. Это нормально.

Пример:

```js
[
  {
    level: 3
  },
  {
    level: 4
  },
  {
    level: 9
  }
]
```

#### enchantmentTable.enchant(choice, [callback])

 * `choice` - [0-2], индекс массива (уровня зачарования), который Вы можете выбрать
 * `callback(err, item)` - (необязательно) Срабатывает, когда предмет зачарован

#### enchantmentTable.takeTargetItem([callback])

 * `callback(err, item)`

#### enchantmentTable.putTargetItem(item, [callback])

 * `callback(err)`

### mineflayer.Villager

Смотрите `bot.openVillager(villagerEntity)`.

#### villager "open"

Срабатывает, когда GUI торговли открыто

#### villager "close"

Срабатывает, когда интерфейс торговли закрыт

#### villager "updateSlot" (oldItem, newItem)

Срабатывает, когда предмет был положен в ячейку для торговли

#### villager "ready"

Возвращает, когда `villager.trades` был загружен

#### villager.close()

#### villager.trades

Массив вариантов торговли

Пример:

```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
  }
]
```

### mineflayer.ScoreBoard

#### ScoreBoard.name

Имя скорборда

#### ScoreBoard.title

Название скорборда (может не совпадать с ScoreBoard.title)

#### ScoreBoard.itemsMap

Объект со всеми элементами скорборда
```js
{
  wvffle: { name: 'wvffle', value: 3 },
  dzikoysk: { name: 'dzikoysk', value: 6 }
}
```

#### ScoreBoard.items

Массив со всеми отсортированными элементами скорборда
```js
[
  { name: 'dzikoysk', value: 6 },
  { name: 'wvffle', value: 3 }
]
```

### mineflayer.BossBar

#### BossBar.title

Название боссбара, передается в `ChatMessage`

#### BossBar.health

Количество здоровья от `0` до `1`. Пример: ( 0.9873 )

#### BossBar.dividers

Количество ячеек, является одним числом из  `0`, `6`, `10`, `12`, `20`

#### BossBar.entityUUID

UIID босса

#### BossBar.shouldDarkenSky

Определяет, стоит ли затемнять небо

#### BossBar.isDragonBar

Определяет, является ли боссбар - боссбаром Дракона Края

#### BossBar.createFog

Определяет, стоит ли создават туман

#### BossBar.color

Определяет цвет боссбара `pink`, `blue`, `red`, `green`, `yellow`, `purple`, `white` ("розовый", "голубой", "красный", "желтый", "фиолетовый", "белый")

## Bot

### mineflayer.createBot(options)

Create and return an instance of the class bot.
`options` это объект, который содержит в себе :
 * username : по умолчанию "Player"
 * port : по умолчанию 25565
 * password : может быть пропущен, если подключение осуществляется к пиратскому серверу
 * host : default to localhost
 * version : по умолчанию установлен автоопределитель версии сервера. Пример использования : "1.12.2"
 * clientToken : генерируется, если задан пароль
 * accessToken : генерируется, если задан пароль
 * logErrors : установлен по умолчанию, используется для отлова ошибок
 * keepAlive : отправка пакета активности, по умолчанию активен
 * checkTimeoutInterval : по умолчанию `30*1000` (30 сек.), не используется если не используется keepAlive
 * loadInternalPlugins : по умолчанию активен
 * plugins : объект : по умолчанию {}
   - pluginName : false : не загружать плагин с заданным именем. `pluginName`
   - pluginName : true : загрузить плагин с заданным именем. `pluginName` даже если loadInternalplugins отключен
   - pluginName : external plugin inject function : загружает сторонний плагин, задает новое имя плагина при активном существущем
 * [chat](bot.settings.chat)
 * [colorsEnabled](bot.settings.colorsEnabled)
 * [viewDistance](bot.settings.viewDistance)
 * [difficulty](bot.settings.difficulty)
 * [showCape](bot.settings.skinParts.showCape)
 * [showJacket](bot.settings.skinParts.showJacket)
 * [showLeftSleeve](bot.settings.skinParts.showLeftSleeve)
 * [showRightSleeve](bot.settings.skinParts.showRightSleeve)
 * [showLeftPants](bot.settings.skinParts.showLeftPants)
 * [showRigthtPants](bot.settings.skinParts.showRightPants)
 * [showHat](bot.settings.skinParts.showHat)
 * chatLengthLimit : максимальное количество символов, отправляемое в чат. Если не установлено, будет установлено следующее: 100 в < 1.11 и 256 в >= 1.11.

### Properties

#### bot.entity

Ваше собственное существо. Смотрите `Entity`.

#### bot.entities

Все ближайшие существа.

#### bot.username

Используйте это, чтобы узнать имя бота.

#### bot.spawnPoint

Показывает координаты спавна бота

#### bot.game.levelType

#### bot.game.dimension

#### bot.game.difficulty

#### bot.game.gameMode

#### bot.game.hardcore

#### bot.game.maxPlayers

### bot.player

Объект игрока
```js
{
  username: 'player',
  displayName: { toString: Function }, // Объект ChatMessage.
  gamemode: 0,
  ping: 28,
  entity: entity // null, если Вы находитесь слишком далеко
}
```

#### bot.players

Показывает всех игроков, которые находятся на сервере

#### bot.isRaining

#### bot.chatPatterns

Массив шаблонов следующего формата:
{ /regex/, "chattype", "description")
 * /regex/ - шаблон регулярного выражения, который должен иметь как минимум две группы захвата
 * 'chattype' - тип чата, который может является "chat" или "whisper"
 * 'description' - описание шаблона, необязательно

#### bot.settings.chat

Выбор:

 * `enabled` (default)
 * `commandsOnly`
 * `disabled`

#### bot.settings.colorsEnabled

По умолчанию активен, используется для отображения кодов цветов

#### bot.settings.viewDistance

Выбор:
 * `far` (по умолчанию)
 * `normal`
 * `short`
 * `tiny`

#### bot.settings.difficulty

Вернет то же, что и в server.properties.

#### bot.settings.skinParts.showCape

Если у вас есть плащ, вы можете отключить его, установив для него значение false.

#### bot.settings.skinParts.showJacket

#### bot.settings.skinParts.showLeftSleeve

#### bot.settings.skinParts.showRightSleeve

#### bot.settings.skinParts.showLeftPants

#### bot.settings.skinParts.showRightPants

#### bot.settings.skinParts.showHat

#### bot.experience.level

#### bot.experience.points

Общее количество очков опыта.

#### bot.experience.progress

От 0 до 1 - сумма для перехода на следующий уровень.

#### bot.health

Число от 0 до 20. Каждое число является половиной ячейки здоровья в игре

#### bot.food

Число от 0 до 20. Каждое число является половиной ячейки голода в игре

#### bot.foodSaturation

Покажет насыщенность голода. Голод не уменьшается
если насыщенность больше нуля. Игроки, зашедшие на сервер, автоматически получают
насыщенность 5,0. Еда увеличивает как насыщенность так и голод


#### bot.physics

Изменение значений скорости, отдачи, скорости прыжка и т.д
Изменяйте на свой страх и риск!

#### bot.time.day

Время суток в тиках.

Время основано на тиках, где каждую секунду происходит 20 тиков. 24000 в Майнкрафте 
являются 20 минутам реальной игры

Время суток основано на тиках. 0 - восход, 6000
полдень, 12000 - закат, а 18000 - полночь.

#### bot.time.age

Возраст мира в тиках

#### bot.quickBarSlot

Показывает, какой слот сейчас активен ( 0 - 8 )

#### bot.inventory

Является `Window`, отображающий ваш инвентарь.

#### bot.targetDigBlock

Показывает блок, который вы сейчас копаете, или же `null`.

#### bot.isSleeping

Возвращает true или false, в зависимости от того,
лежите вы в кровати или нет

#### bot.scoreboards

Показывает все известные скорборды

#### bot.scoreboard

Показывает все скорборды в "Object"

 * `belowName` - скорборд размещен снизу
 * `sidebar` - скорборд размещен на боковой панели
 * `list` - скорборд помещен в список
 * `0-18` - слоты, определенные в [протоколе](https://wiki.vg/Protocol#Display_Scoreboard)

#### bot.controlState

Обьект, который осуществляет управление ['forward', 'back', 'left', 'right', 'jump', 'sprint', 'sneak']
Или же ['вперед', 'назад', 'влево', 'вправо', 'прыгнуть', 'бежать', 'сесть'] (Не использовать в методе)

Подробнее [bot.setControlState](#botsetcontrolstatecontrol-state).

### Events

#### "chat" (username, message, translate, jsonMsg, matches)

При обращении в чате

 * `username` - имя отправителя (сравните с bot.username, если вы не хотите видет собственные сообщения)
 * `message` - сообщение (очищенно от всех цветовых кодов)
 * `translate` - Тип сообщение. В большинстве случаев является null
 * `jsonMsg` - сообщение в JSON
 * `matches` - массив совпадений в регулярных выражениях. Может являтся null

#### "whisper" (username, message, translate, jsonMsg, matches)

При обращении в ЛС
 * `username` - имя отправителя
 * `message` - сообщение (очищенно от всех цветовых кодов)
 * `translate` - Тип сообщение. В большинстве является null
 * `jsonMsg` - сообщение в JSON
 * `matches` - массив совпадений в регулярных выражениях. Может являтся null

#### "actionBar" (jsonMsg)

При появлении в панели действия

 * `jsonMsg` - сообщение в JSON

#### "message" (jsonMsg, position)

При появлении любого серверного сообщения, включая чаты

 * `jsonMsg` - сообщение в JSON
 * `position` - (> = 1.8.1): положение сообщения чата может быть
   * Чат
   * Система
   * информация об игре

#### "login"

Срабатывает при успешном подключении к серверу
Отличается от "spawn"

#### "spawn"

Выдается один раз после того, как вы вошли на сервер
и каждый раз, после смерти.


#### "respawn"

Срабатывает при появлении в мире
Обычно используется вызов "spawn"

#### "game"

Срабатывает, если сервер меняет свойства в server.properties

#### "title"

Срабатывает, когда сервер отправляет заголовок

 * `text` - заголовок текста

#### "rain"

Срабатывает, когда начинается или прекращается дождь. Если вы присоединитесь к
серверу, на котором уже идет дождь, это событие также сработает.

#### "time"

Срабатывает, когда сервер принудительно обновляет время. Смотрите `bot.time`.

#### "kicked" (reason, loggedIn)

Срабатывает при отключении от сервера. `reason`
выводит причину отключения. `loggedIn`
является `true`, если вы были кикнуты после успешного входа в систему,
или `false`, если отключение произошло во время подключения

#### "end"

Срабатывает, когда вы отключены от сервера

#### "spawnReset"

Срабатывает, когда вы не можете заспавнится у своей кровати, и ваша точка появления сбрасывается

#### "death"

Срабатывает, когда вы умерли

#### "health"

Срабатывает, когда значения здоровья или голода изменяются

#### "entitySwingArm" (entity)
#### "entityHurt" (entity)
#### "entityWake" (entity)
#### "entityEat" (entity)
#### "entityCrouch" (entity)
#### "entityUncrouch" (entity)
#### "entityEquipmentChange" (entity)
#### "entitySleep" (entity)
#### "entitySpawn" (entity)
#### "playerCollect" (collector, collected)

Если существо подняло предмет

 * `collector` - существо, поднявшее предмет
 * `collected` - существо, которое являлось поднятым предметом

#### "entityGone" (entity)
#### "entityMoved" (entity)
#### "entityDetach" (entity, vehicle)
#### "entityAttach" (entity, vehicle)

Если существо сидит в транспортном средстве,
таком как лодка, вагонетка

 * `entity` - существо, которое сидит в транспортном средстве
 * `vehicle` - существо, которое является транспортным средством

#### "entityUpdate" (entity)
#### "entityEffect" (entity, effect)
#### "entityEffectEnd" (entity, effect)
#### "playerJoined" (player)
#### "playerLeft" (player)

#### "blockUpdate" (oldBlock, newBlock)

Срабатывает, когда блок обновлен. `oldBlock` и` newBlock` могут сравниватся

Стоит заметить, что `oldBlock` может быть `null`.

#### "blockUpdate:(x, y, z)" (oldBlock, newBlock)

Срабатывает при обновлении блока в определенном месте. `oldBlock` и` newBlock` могут сравниватся

Стоит заметить, что `oldBlock` может быть `null`.

#### "chunkColumnLoad" (point)
#### "chunkColumnUnload" (point)

Fires when a chunk has updated. `point` is the coordinates to the corner
of the chunk with the smallest x, y, and z values.

#### "soundEffectHeard" (soundName, position, volume, pitch)

Срабатывает, когда вы слышите звуковой эффект

 * `soundName`: имя звукового эффекта
 * `position`:  координаты, где был проигран звук
 * `volume`: уровень звука, 1.0 является 100%
 * `pitch`: искажение звука, 63 является 100%

#### "hardcodedSoundEffectHeard" (soundId, soundCategory, position, volume, pitch)

Срабатывает, когда вы слышите сильной искаженный звуковой эффект

 * `soundId`: ID имя звукового эффекта
 * `soundCategory`: категория звукового эффекта
 * `position`: координаты, где был проигран звук
 * `volume`: уровень звука, 1.0 является 100%
 * `pitch`: Искажение звука, 63 является 100%

#### "noteHeard" (block, instrument, pitch)

Срабатывает, когда был проигран звук нотного блока

 * `block`: имя блока
 * `instrument`:
   - `id`: определенный ID
   - `name`: один из видов звука [`harp`, `doubleBass`, `snareDrum`, `sticks`, `bassDrum`].
 * `pitch`: Высота ноты (от 0 до 24 включительно, где 0 - это
    самый низкий, а 24 -  самый высокий). Больше информации о том можно найти на
   [оффициальном Minecraft wiki](http://www.minecraftwiki.net/wiki/Note_Block).

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

#### "chestLidMove" (block, isOpen)

#### "blockBreakProgressObserved" (block, destroyStage)

Срабатывает, когда вы наблюдаете процесс разрушения блока

 * `block`: имя блока, который ломается
 * `destroyStage`: уровень прогресса (0 - 9) 

#### "blockBreakProgressEnd" (block)

Срабатывает, когда процесс разрушения блока прекращен.
Происходит при прекращении разрушения блока или его полного разрушения

 * `block`: имя блока, процесс разрушения которого был прекращен

#### "diggingCompleted" (block)

 * `block` - блок, который больше не существует

#### "diggingAborted" (block)

 * `block` - блок, который все ещё существует

#### "move"

Срабатывает при движении бота. Если вы хотите узнать текущее положение, используйте
`bot.entity.position` если вы хотите узнать предыдущее положение, используйте
`bot.entity.position.minus(bot.entity.velocity)`.

#### "forcedMove"

Срабатывает при принудительном перемещении бота (телепорт, спавн). Если вы хотите узнать текущее положение, используйте
`bot.entity.position`.

#### "mount"

Срабатывает, если вы устанавливаете объект, например тележку. Чтобы получить доступ к ней,
используйте `bot.vehicle`.

Чтобы установить её, используйте `mount`.

#### "dismount" (vehicle)

Срабатывает, если вы слезли с существа

#### "windowOpen" (window)

Срабатывает, если вы используете верстак, сундук и т.д

#### "windowClose" (window)

Срабатывает, если вы закрыли верстак, сундук и т.д

#### "sleep"

Срабатывает, если вы лягли спать

#### "wake"

Срабатывает, если вы проснулись

#### "experience"

Срабатывает, если значение `bot.experience.*` было обновлено

#### "scoreboardCreated" (scoreboard)

Срабатывает, если скорборд был создан

#### "scoreboardDeleted" (scoreboard)

Срабатывает, если скорборд был удален

#### "scoreboardTitleChanged" (scoreboard)

Срабатывает, если скорборд был обновлен

#### "scoreUpdated" (scoreboard, item)

Срабатывает, если значение в скорборде было обновлено

#### "scoreRemoved" (scoreboard, item)

Срабатывает, если значение в скорборде было удалено

#### "scoreboardPosition" (position, scoreboard)

Срабатывает, если позиция скорборда была обновлена

#### "bossBarCreated" (bossBar)

Срабатывает, если боссбар был создан

#### "bossBarDeleted" (bossBar)

Срабатывает, если боссбар был удален

#### "bossBarUpdated" (bossBar)

Срабатывает, если боссбар был обновлен

### Functions

#### bot.blockAt(point)

Возвращает блок в `point` или `null`, если эта точка не загружена
Смотрите `Block`.

#### bot.blockInSight(maxSteps, vectorLength)

Возвращает блок, на который смотрит бот, либо `null`
 * `maxSteps` - количество блоков, по умолчанию 256.
 * `vectorLength` - длина вектора, по умолчанию `5/16`.

#### bot.canSeeBlock(block)

Возвращает true или false, в зависимости от того,
видит ли бот указанный блок, или нет

#### bot.findBlock(options)

Находит ближайший блок, указанный в точке
 * `options` - Дополнительные параментры для поиска:
   - `point` -Начальная точка для поиска.
   - `matching` - Функция, которая возвращает true, если указанный блок найден. Значение является ID блока, или массивом ID блоков
   - `maxDistance` - Максимальная дистанция поиска, по умолчанию 16.

Это простой пример, для более полного поиска, использующего алгоритмы,
 используйте [mineflayer-blockfinder](https://github.com/Darthfett/mineflayer-blockfinder), которое имеет похожее API

#### bot.canDigBlock(block)

Возвращает, является ли `block` ломаемым и находится в пределах диапазона

#### bot.recipesFor(itemType, metadata, minResultCount, craftingTable)

Возвращает список рецептов (Recipe) которые вы можете использовать для крафта 
предмета(itemType) с метаданными(metadata).

 * `itemType` - ID предмета, который вы хотите создать
 * `metadata` - значение метаданных создаваемого предмета, null соответствует любым метаданным
 * `minResultCount` - количество создаваемого предмета, null эквивалентно 1 предмету,
	присутствует проверка на количество материала, требуемого для изготовления предмета
 * `craftingTable` - блок верстака, при указании null предмет создается в вашем инвентаре

#### bot.recipesAll(itemType, metadata, craftingTable)

То же, что и bot.recipesFor, но без проверки на количество материала, требуемого для изготовления предмета

### Methods

#### bot.end()

Завершить соединение с сервером

#### bot.quit(reason)

Принудительно завершить соиденение по собственной причине (по умолчанию 'disconnect.quitting').

#### bot.tabComplete(str, cb, [assumeCommand], [sendBlockInSight])

Запрашивает чат севрера
 * `str` - Строка для завершения
 * `callback(matches)`
   - `matches` - Массив с совпадениями.
 * `assumeCommand` - Поле отправлено на сервер, по умолчанию отключено.
 * `sendBlockInSight` - Поле отправлено на сервер, по умолчанию включено. Установите для этого параметра значение false, если вы хотите повысить производительность.

#### bot.chat(message)

Отправляет сообщение. При необходимости разбивает большое сообщение на несколько маленьких

#### bot.whisper(username, message)

Аналог "/tell <никнейм>". Все разделенные сообщения будут отправлятся пользователю

#### bot.chatAddPattern(pattern, chatType, description)

Добавляет шаблон чата. Полезно, если формат чата сильно меняется за счёт плагинов
 * `pattern` -  регулярное выражение для совпадения
 * `chatType` - вид сообщения. Например: "chat" или "whisper"
 * 'description' - Необязательно, описание шаблона

#### bot.setSettings(options)

Посмотреть значение `bot.settings`.

#### bot.loadPlugin(plugin)

Загрузить плагин
 * `plugin` - функция

```js
function somePlugin (bot, options) {
  function someFunction () {
    bot.chat('Yay!')
  }
  bot.someFunction = someFunction
}

const bot = mineflayer.createBot({})
bot.loadPlugin(somePlugin)
bot.once('login', () => {
  bot.someFunction() // Yay!
})
```

#### bot.loadPlugins(plugins)

О загрузке плагинов смотрите в `bot.loadPlugin`.
 * `plugins` - массив функций

#### bot.sleep(bedBlock, [cb])

Отправить бота спать. `bedBlock` должен являтся блоком. `cb` может иметь параментр "err", если бот не может лечь спать

#### bot.isABed(bedBlock)

Возвращает true если `bedBlock` является кроватью

#### bot.wake([cb])

Встать с кровати. `cb` может иметь параментр "err", если бот не может встать

#### bot.setControlState(control, state)

 * `control` - одно из ['forward', 'back', 'left', 'right', 'jump', 'sprint', 'sneak']
 * `state` - `true` или `false`

#### bot.clearControlStates()

Отключить элементы управления

#### bot.lookAt(point, [force], [callback])

 * `point` - наклонить голову к указанной точке
 * `force` - Смотрите `force` в `bot.look`
 * `callback()` необязательно, вызывается если вы смотрите на указанную точку

#### bot.look(yaw, pitch, [force], [callback])

Установить направление головы

 * `yaw` - Количество радианов для вертикальной оси
 * `pitch` - Количество радианов для поворота вверх или вниз. 0  - строго вперед.
   pi / 2 - смотреть вверх. -pi / 2 - смотреть вниз
 * `force` - Если установлен true, плавный переход не состоится. Укажите значение true,
 для проверки на стороне сервера. Рекомендуется включать, чтобы избежать конфликтов с античитом
 * `callback()` - необязательно, вызывается, если бот смотрит на указанную точку

#### bot.updateSign(block, text)

Обновить текст на табличке

#### bot.equip(item, destination, [callback])

Надеть вещи из инвентаря

 * `item` - Предмет. Смотрите `window.items()`.
 * `destination`
   - `"hand"` - `null` альтернатива к этому
   - `"head"`
   - `"torso"`
   - `"legs"`
   - `"feet"`
 * `callback(error)` - необязательно. вызывается при успешной экипировке,
 или при ошибке

#### bot.unequip(destination, [callback])

Снять предмет

#### bot.tossStack(item, [callback])

 * `item` - стак предмета, который вы хотите выбросить
 * `callback(error)` - необязательно, вызывается если предмет выкинут, либо при ошибке

#### bot.toss(itemType, metadata, count, [callback])

 * `itemType` - ID предмета, который вы хотите выбросить
 * `metadata` - метаданные предмета. Используйте `null`
   чтобы выбрать любые метаданные 
 * `count` - количество предмета. null равно 1
 * `callback(err)` - (необязательно) вызывается при успешной операции

#### bot.dig(block, [callback])

Начать ломать блок предметом, который экипирован в руке
Смотрите также события "diggingCompleted" и "diggingAborted".

Обратите внимание, что вы не сможете ломать другие блоки, 
пока выбранный блок не будет сломан, либо не будет вызвана функция
`bot.stopDigging()`.

 * `block` - блок, который нужно ломать
 * `callback(err)` - (необязательно) вызывается если блок сломан, или операция прервана

#### bot.stopDigging()

#### bot.digTime(block)

Покажет время, которое нужно потратить, чтобы сломать блок

#### bot.placeBlock(referenceBlock, faceVector, cb)

 * `referenceBlock` - блок, который вы хотите разместить рядорм
 * `faceVector` - один из шести направлений `new Vec3(0, 1, 0)`, чтобы указать сторону,
 куда нужно поставить блок
 * `cb` вызывается, если сервер подтвердит, что блок поставлен

Новый блок будет размещен на координатах `referenceBlock.position.plus(faceVector)`.

#### bot.activateBlock(block, [callback])

Ударить нотный блок, открыть дверь и т.д

 * `block` - активируемый блок 
 * `callback(err)` - (необязательно) вызывается, если блок активирован

#### bot.activateEntity(entity, [callback])

Нажать на существо, например житель, или NPC

 * `entity` - активируемре существо
 * `callback(err)` - (необязательно) вызывается, если существо активировано

#### bot.consume(callback)

Съесть/выпить предмет, который находится в руке

 * `callback(error)` - вызывается, если предмет использован

#### bot.fish(callback)

Использовать удочку

 * `callback(error)` - вызывается, если рыбалка окончена

#### bot.activateItem()

Активирует предмет, который находится в руке. Используется для выстрела из лука, бросания яиц и т.д

#### bot.deactivateItem()

Деактивирует предмет, который находится в руке. Например для прекращения натягивания тетевы лука и т.д

#### bot.useOn(targetEntity)

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

#### bot.attack(entity)

Атаковать игрока или моба

#### bot.swingArm([hand])

Сыграть анимацию удара руки

 * `hand` может быть `left` или `right`. По умолчанию: `right`

#### bot.mount(entity)

Сесть в транспортное средство.

#### bot.dismount()

Вылезть из транспортного средства.

#### bot.moveVehicle(left,forward)

Двигатся в транспортном средстве:

 * по сторонам: -1 или 1 : -1 означает вправо, 1 означает влево
 * вперед/назад: -1 или 1 : -1 означает назад, 1 означает вперед

Направление относительно того, куда смотрит бот

#### bot.setQuickBarSlot(slot)

 * `slot` - выбрать слот ( 0 - 8 )

#### bot.craft(recipe, count, craftingTable, [callback])

 * `recipe` - рецепт крафта. Смотрите `bot.recipesFor`.
 * `count` - количество предмета крафта
   Если вы хотите скрафтить 8 досок в палки,  вы должны установить
   `count` в `2`. `null` является 1
 * `craftingTable` - блок верстака, при указании null предмет крафтится в вашем инвентаре
 * `callback` - (необязательно) Вызыватся если крафт завершен успешно

#### bot.writeBook(slot, pages, [callback])

 * `slot` - слот в инвентаре ( 0 - 36)
 * `pages` - массив страниц
 * `callback(error)` - необязательно. вызывается если редактирование завершено, либо при вызове ошибки

#### bot.openChest(chestBlock or minecartchestEntity)

Устарело.Открывает сундук. Такой же как "openContainer"

#### bot.openFurnace(furnaceBlock)

Открывает печь

#### bot.openDispenser(dispenserBlock)

Открывает раздатчик

#### bot.openEnchantmentTable(enchantmentTableBlock)

Открывает стол зачарований

#### bot.openVillager(villagerEntity)

Открывает торговлю с жителем

#### bot.trade(villagerInstance, tradeIndex, [times], [cb])

Использует `villagerInstance` для торговли

#### bot.setCommandBlock(pos, command, track_output)

.Установить командный блок по координатам

### Методы инвентаря низкого уровня

Эти методы могут быть иногда полезны, но мы рекомендуем использовать методы, описанные выше

#### bot.clickWindow(slot, mouseButton, mode, cb)

Нажать на слот

#### bot.putSelectedItemRange(start, end, window, slot, cb)

Поместить предмет в слот в указаном диапазоне

#### bot.putAway(slot, cb)

Поместить предмет в слот инвентаря

#### bot.closeWindow(window)

Закрыть окно(GUI)

#### bot.transfer(options, cb)

Поместить предмет с одного диапазона в другой. `options` это объект, содержащий :

 * `window` : окно, куда требуется положить предмет
 * `itemType` : тип предмета
 * `metadata` : метаданные предмета
 * `sourceStart` и `sourceEnd` : старый диапазон
 * `destStart` и `destEnd` : новый диапазон

#### bot.openBlock(block, Class)

Открыть блок, например сундук

 * `block` блок, который нужен открыть
 * `Class` тип окна, которое нужно открыть

#### bot.openEntity(entity, Class)

Открыть GUI существа, например жителя

 * `entity` существо, GUI которого нужно открыть
 * `Class` тип окна, которое нужно открыть

#### bot.moveSlotItem(sourceSlot, destSlot, cb)

Поместить предмет со слота `sourceSlot` в слот  `destSlot` в открытом окне

#### bot.updateHeldItem()

Обновить `bot.heldItem`.

### bot.creative

Данные функции использются в творческом режиме

#### bot.creative.setInventorySlot(slot, item, [callback])

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

 * `slot` номер слота ( 0 -36 )
 * `item` предмет, NBT-тег
     Если `item` равен` null`, элемент в указанном слоте удаляется.
 * `callback(err)` (необязательно) вызывается, если сервер одобрил выдачу предмета

Если этот метод меняет ваш инвентарь, вы можете использовать `bot.inventory.on("updateSlot")`.

#### bot.creative.flyTo(destination, [cb])

Вызывает `startFlying()` и движется к месту назначения.
`destination` это `Vec3`, координаты `x` и `z`, которые обычно заканчиваются на `.5`.
Функция не будет рабоать, если присутствуют препятствия.
Рекомендуется отправлять на небольшие расстояния


Когда бот прибывает в пункт назначения, вызывается `cb`.

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

Чтобы остановить полет, используйте `stopFlying()`.

#### bot.creative.startFlying()

Установите `bot.physics.gravity` к `0`.
Чтобы остановить полет, используйте  `stopFlying()`.

Этот метод полезен, если вы хотите летать, копая землю под собой.
Нет необходимости вызывать эту функцию перед вызовом `flyTo()`.

Обратите внимание, что во время полета `bot.entity.velocity` может быть не точным.

#### bot.creative.stopFlying()

Восстанавливает `bot.physics.gravity` к оригинальному значению.
