LookAtMySuitBot/js/node_modules/mineflayer/index.d.ts

873 lines
22 KiB
TypeScript

import { EventEmitter } from 'events'
import TypedEmitter from 'typed-emitter'
import { Client, ClientOptions } from 'minecraft-protocol'
import { Vec3 } from 'vec3'
import { Item } from 'prismarine-item'
import { Window } from 'prismarine-windows'
import { Recipe } from 'prismarine-recipe'
import { Block } from 'prismarine-block'
import { Entity } from 'prismarine-entity'
import { ChatMessage } from 'prismarine-chat'
import { world } from 'prismarine-world'
import { Registry } from 'prismarine-registry'
export function createBot (options: { client: Client } & Partial<BotOptions>): Bot
export function createBot (options: BotOptions): Bot
export interface BotOptions extends ClientOptions {
logErrors?: boolean
hideErrors?: boolean
loadInternalPlugins?: boolean
plugins?: PluginOptions
chat?: ChatLevel
colorsEnabled?: boolean
viewDistance?: ViewDistance
mainHand?: MainHands
difficulty?: number
chatLengthLimit?: number
physicsEnabled?: boolean
client?: Client
brand?: string
defaultChatPatterns?: boolean
respawn?: boolean
}
export type ChatLevel = 'enabled' | 'commandsOnly' | 'disabled'
export type ViewDistance = 'far' | 'normal' | 'short' | 'tiny' | number
export type MainHands = 'left' | 'right'
export interface PluginOptions {
[plugin: string]: boolean | Plugin
}
export type Plugin = (bot: Bot, options: BotOptions) => void
export interface BotEvents {
chat: (
username: string,
message: string,
translate: string | null,
jsonMsg: ChatMessage,
matches: string[] | null
) => Promise<void> | void
whisper: (
username: string,
message: string,
translate: string | null,
jsonMsg: ChatMessage,
matches: string[] | null
) => Promise<void> | void
actionBar: (jsonMsg: ChatMessage) => Promise<void> | void
error: (err: Error) => Promise<void> | void
message: (jsonMsg: ChatMessage, position: string) => Promise<void> | void
messagestr: (message: string, position: string, jsonMsg: ChatMessage) => Promise<void> | void
unmatchedMessage: (stringMsg: string, jsonMsg: ChatMessage) => Promise<void> | void
inject_allowed: () => Promise<void> | void
login: () => Promise<void> | void
spawn: () => Promise<void> | void
respawn: () => Promise<void> | void
game: () => Promise<void> | void
title: (text: string) => Promise<void> | void
rain: () => Promise<void> | void
time: () => Promise<void> | void
kicked: (reason: string, loggedIn: boolean) => Promise<void> | void
end: (reason: string) => Promise<void> | void
spawnReset: () => Promise<void> | void
death: () => Promise<void> | void
health: () => Promise<void> | void
breath: () => Promise<void> | void
entitySwingArm: (entity: Entity) => Promise<void> | void
entityHurt: (entity: Entity) => Promise<void> | void
entityDead: (entity: Entity) => Promise<void> | void
entityTaming: (entity: Entity) => Promise<void> | void
entityTamed: (entity: Entity) => Promise<void> | void
entityShakingOffWater: (entity: Entity) => Promise<void> | void
entityEatingGrass: (entity: Entity) => Promise<void> | void
entityHandSwap: (entity: Entity) => Promise<void> | void
entityWake: (entity: Entity) => Promise<void> | void
entityEat: (entity: Entity) => Promise<void> | void
entityCriticalEffect: (entity: Entity) => Promise<void> | void
entityMagicCriticalEffect: (entity: Entity) => Promise<void> | void
entityCrouch: (entity: Entity) => Promise<void> | void
entityUncrouch: (entity: Entity) => Promise<void> | void
entityEquip: (entity: Entity) => Promise<void> | void
entitySleep: (entity: Entity) => Promise<void> | void
entitySpawn: (entity: Entity) => Promise<void> | void
entityElytraFlew: (entity: Entity) => Promise<void> | void
usedFirework: () => Promise<void> | void
itemDrop: (entity: Entity) => Promise<void> | void
playerCollect: (collector: Entity, collected: Entity) => Promise<void> | void
entityAttributes: (entity: Entity) => Promise<void> | void
entityGone: (entity: Entity) => Promise<void> | void
entityMoved: (entity: Entity) => Promise<void> | void
entityDetach: (entity: Entity, vehicle: Entity) => Promise<void> | void
entityAttach: (entity: Entity, vehicle: Entity) => Promise<void> | void
entityUpdate: (entity: Entity) => Promise<void> | void
entityEffect: (entity: Entity, effect: Effect) => Promise<void> | void
entityEffectEnd: (entity: Entity, effect: Effect) => Promise<void> | void
playerJoined: (player: Player) => Promise<void> | void
playerUpdated: (player: Player) => Promise<void> | void
playerLeft: (entity: Player) => Promise<void> | void
blockUpdate: (oldBlock: Block | null, newBlock: Block) => Promise<void> | void
'blockUpdate:(x, y, z)': (oldBlock: Block | null, newBlock: Block | null) => Promise<void> | void
chunkColumnLoad: (entity: Vec3) => Promise<void> | void
chunkColumnUnload: (entity: Vec3) => Promise<void> | void
soundEffectHeard: (
soundName: string,
position: Vec3,
volume: number,
pitch: number
) => Promise<void> | void
hardcodedSoundEffectHeard: (
soundId: number,
soundCategory: number,
position: Vec3,
volume: number,
pitch: number
) => Promise<void> | void
noteHeard: (block: Block, instrument: Instrument, pitch: number) => Promise<void> | void
pistonMove: (block: Block, isPulling: number, direction: number) => Promise<void> | void
chestLidMove: (block: Block, isOpen: number, block2: Block | null) => Promise<void> | void
blockBreakProgressObserved: (block: Block, destroyStage: number) => Promise<void> | void
blockBreakProgressEnd: (block: Block) => Promise<void> | void
diggingCompleted: (block: Block) => Promise<void> | void
diggingAborted: (block: Block) => Promise<void> | void
move: (position: Vec3) => Promise<void> | void
forcedMove: () => Promise<void> | void
mount: () => Promise<void> | void
dismount: (vehicle: Entity) => Promise<void> | void
windowOpen: (window: Window) => Promise<void> | void
windowClose: (window: Window) => Promise<void> | void
sleep: () => Promise<void> | void
wake: () => Promise<void> | void
experience: () => Promise<void> | void
physicsTick: () => Promise<void> | void
physicTick: () => Promise<void> | void
scoreboardCreated: (scoreboard: ScoreBoard) => Promise<void> | void
scoreboardDeleted: (scoreboard: ScoreBoard) => Promise<void> | void
scoreboardTitleChanged: (scoreboard: ScoreBoard) => Promise<void> | void
scoreUpdated: (scoreboard: ScoreBoard, item: number) => Promise<void> | void
scoreRemoved: (scoreboard: ScoreBoard, item: number) => Promise<void> | void
scoreboardPosition: (position: DisplaySlot, scoreboard: ScoreBoard) => Promise<void> | void
teamCreated: (team: Team) => Promise<void> | void
teamRemoved: (team: Team) => Promise<void> | void
teamUpdated: (team: Team) => Promise<void> | void
teamMemberAdded: (team: Team) => Promise<void> | void
teamMemberRemoved: (team: Team) => Promise<void> | void
bossBarDeleted: (bossBar: BossBar) => Promise<void> | void
bossBarUpdated: (bossBar: BossBar) => Promise<void> | void
resourcePack: (url: string, hash: string) => Promise<void> | void
particle: (particle: Particle) => Promise<void> | void
}
export interface Bot extends TypedEmitter<BotEvents> {
username: string
protocolVersion: string
majorVersion: string
version: string
entity: Entity
entities: { [id: string]: Entity }
fireworkRocketDuration: number
spawnPoint: Vec3
game: GameState
player: Player
players: { [username: string]: Player }
isRaining: boolean
thunderState: number
chatPatterns: ChatPattern[]
settings: GameSettings
experience: Experience
health: number
food: number
foodSaturation: number
oxygenLevel: number
physics: PhysicsOptions
physicsEnabled: boolean
time: Time
quickBarSlot: number
inventory: Window<StorageEvents>
targetDigBlock: Block
isSleeping: boolean
scoreboards: { [name: string]: ScoreBoard }
scoreboard: { [slot in DisplaySlot]: ScoreBoard }
teamMap: { [name: string]: Team }
controlState: ControlStateStatus
creative: creativeMethods
world: world.World
_client: Client
heldItem: Item | null
usingHeldItem: boolean
currentWindow: Window | null
simpleClick: simpleClick
tablist: Tablist
registry: Registry
connect: (options: BotOptions) => void
supportFeature: (feature: string) => boolean
end: (reason?: string) => void
blockAt: (point: Vec3, extraInfos?: boolean) => Block | null
blockInSight: (maxSteps: number, vectorLength: number) => Block | null
blockAtCursor: (maxDistance?: number, matcher?: Function) => Block | null
blockAtEntityCursor: (entity?: Entity, maxDistance?: number, matcher?: Function) => Block | null
canSeeBlock: (block: Block) => boolean
findBlock: (options: FindBlockOptions) => Block | null
findBlocks: (options: FindBlockOptions) => Vec3[]
canDigBlock: (block: Block) => boolean
recipesFor: (
itemType: number,
metadata: number | null,
minResultCount: number | null,
craftingTable: Block | boolean | null
) => Recipe[]
recipesAll: (
itemType: number,
metadata: number | null,
craftingTable: Block | boolean | null
) => Recipe[]
quit: (reason?: string) => void
tabComplete: (
str: string,
assumeCommand?: boolean,
sendBlockInSight?: boolean
) => Promise<string[]>
chat: (message: string) => void
whisper: (username: string, message: string) => void
chatAddPattern: (pattern: RegExp, chatType: string, description?: string) => number
setSettings: (options: Partial<GameSettings>) => void
loadPlugin: (plugin: Plugin) => void
loadPlugins: (plugins: Plugin[]) => void
hasPlugin: (plugin: Plugin) => boolean
sleep: (bedBlock: Block) => Promise<void>
isABed: (bedBlock: Block) => boolean
wake: () => Promise<void>
elytraFly: () => Promise<void>
setControlState: (control: ControlState, state: boolean) => void
getControlState: (control: ControlState) => boolean
clearControlStates: () => void
getExplosionDamages: (targetEntity: Entity, position: Vec3, radius: number, rawDamages?: boolean) => number | null
lookAt: (point: Vec3, force?: boolean) => Promise<void>
look: (
yaw: number,
pitch: number,
force?: boolean
) => Promise<void>
updateSign: (block: Block, text: string, back?: boolean) => void
equip: (
item: Item | number,
destination: EquipmentDestination | null
) => Promise<void>
unequip: (
destination: EquipmentDestination | null
) => Promise<void>
tossStack: (item: Item) => Promise<void>
toss: (
itemType: number,
metadata: number | null,
count: number | null
) => Promise<void>
dig: ((block: Block, forceLook?: boolean | 'ignore') => Promise<void>) & ((block: Block, forceLook: boolean | 'ignore', digFace: 'auto' | Vec3 | 'raycast') => Promise<void>)
stopDigging: () => void
digTime: (block: Block) => number
placeBlock: (referenceBlock: Block, faceVector: Vec3) => Promise<void>
placeEntity: (referenceBlock: Block, faceVector: Vec3) => Promise<Entity>
activateBlock: (block: Block, direction?: Vec3, cursorPos?: Vec3) => Promise<void>
activateEntity: (entity: Entity) => Promise<void>
activateEntityAt: (entity: Entity, position: Vec3) => Promise<void>
consume: () => Promise<void>
fish: () => Promise<void>
activateItem: (offhand?: boolean) => void
deactivateItem: () => void
useOn: (targetEntity: Entity) => void
attack: (entity: Entity) => void
swingArm: (hand: 'left' | 'right' | undefined, showHand?: boolean) => void
mount: (entity: Entity) => void
dismount: () => void
moveVehicle: (left: number, forward: number) => void
setQuickBarSlot: (slot: number) => void
craft: (
recipe: Recipe,
count?: number,
craftingTable?: Block
) => Promise<void>
writeBook: (
slot: number,
pages: string[]
) => Promise<void>
openContainer: (chest: Block | Entity, direction?: Vec3, cursorPos?: Vec3) => Promise<Chest | Dispenser>
openChest: (chest: Block | Entity, direction?: number, cursorPos?: Vec3) => Promise<Chest>
openFurnace: (furnace: Block) => Promise<Furnace>
openDispenser: (dispenser: Block) => Promise<Dispenser>
openEnchantmentTable: (enchantmentTable: Block) => Promise<EnchantmentTable>
openAnvil: (anvil: Block) => Promise<Anvil>
openVillager: (
villager: Entity
) => Promise<Villager>
trade: (
villagerInstance: Villager,
tradeIndex: string | number,
times?: number
) => Promise<void>
setCommandBlock: (pos: Vec3, command: string, trackOutput: boolean) => void
clickWindow: (
slot: number,
mouseButton: number,
mode: number
) => Promise<void>
putSelectedItemRange: (
start: number,
end: number,
window: Window,
slot: any
) => Promise<void>
putAway: (slot: number) => Promise<void>
closeWindow: (window: Window) => void
transfer: (options: TransferOptions) => Promise<void>
openBlock: (block: Block, direction?: Vec3, cursorPos?: Vec3) => Promise<Window>
openEntity: (block: Entity, Class: new () => EventEmitter) => Promise<Window>
moveSlotItem: (
sourceSlot: number,
destSlot: number
) => Promise<void>
updateHeldItem: () => void
getEquipmentDestSlot: (destination: string) => number
waitForChunksToLoad: () => Promise<void>
nearestEntity: (filter?: (entity: Entity) => boolean) => Entity | null
waitForTicks: (ticks: number) => Promise<void>
addChatPattern: (name: string, pattern: RegExp, options?: chatPatternOptions) => number
addChatPatternSet: (name: string, patterns: RegExp[], options?: chatPatternOptions) => number
removeChatPattern: (name: string | number) => void
awaitMessage: (...args: string[] | RegExp[]) => Promise<string>
acceptResourcePack: () => void
denyResourcePack: () => void
}
export interface simpleClick {
leftMouse: (slot: number) => Promise<void>
rightMouse: (slot: number) => Promise<void>
}
export interface Tablist {
header: ChatMessage
footer: ChatMessage
}
export interface chatPatternOptions {
repeat: boolean
parse: boolean
}
export interface GameState {
levelType: LevelType
gameMode: GameMode
hardcore: boolean
dimension: Dimension
difficulty: Difficulty
maxPlayers: number
}
export type LevelType =
| 'default'
| 'flat'
| 'largeBiomes'
| 'amplified'
| 'customized'
| 'buffet'
| 'default_1_1'
export type GameMode = 'survival' | 'creative' | 'adventure' | 'spectator'
export type Dimension = 'the_nether' | 'overworld' | 'the_end'
export type Difficulty = 'peaceful' | 'easy' | 'normal' | 'hard'
export interface Player {
uuid: string
username: string
displayName: ChatMessage
gamemode: number
ping: number
entity: Entity
skinData: SkinData | undefined
profileKeys?: {
publicKey: Buffer
signature: Buffer
}
}
export interface SkinData {
url: string
model: string | null
}
export interface ChatPattern {
pattern: RegExp
type: string
description: string
}
export interface SkinParts {
showCape: boolean
showJacket: boolean
showLeftSleeve: boolean
showRightSleeve: boolean
showLeftPants: boolean
showRightPants: boolean
showHat: boolean
}
export interface GameSettings {
chat: ChatLevel
colorsEnabled: boolean
viewDistance: ViewDistance
difficulty: number
skinParts: SkinParts
mainHand: MainHands
}
export interface Experience {
level: number
points: number
progress: number
}
export interface PhysicsOptions {
maxGroundSpeed: number
terminalVelocity: number
walkingAcceleration: number
gravity: number
groundFriction: number
playerApothem: number
playerHeight: number
jumpSpeed: number
yawSpeed: number
sprintSpeed: number
maxGroundSpeedSoulSand: number
maxGroundSpeedWater: number
}
export interface Time {
doDaylightCycle: boolean
bigTime: BigInt
time: number
timeOfDay: number
day: number
isDay: boolean
moonPhase: number
bigAge: BigInt
age: number
}
export interface ControlStateStatus {
forward: boolean
back: boolean
left: boolean
right: boolean
jump: boolean
sprint: boolean
sneak: boolean
}
export type ControlState =
| 'forward'
| 'back'
| 'left'
| 'right'
| 'jump'
| 'sprint'
| 'sneak'
export interface Effect {
id: number
amplifier: number
duration: number
}
export interface Instrument {
id: number
name: 'harp' | 'doubleBass' | 'snareDrum' | 'sticks' | 'bassDrum'
}
export interface FindBlockOptions {
point?: Vec3
matching: number | number[] | ((block: Block) => boolean)
maxDistance?: number
count?: number
useExtraInfo?: boolean | ((block: Block) => boolean)
}
export type EquipmentDestination = 'hand' | 'head' | 'torso' | 'legs' | 'feet' | 'off-hand'
export interface TransferOptions {
window: Window
itemType: number
metadata: number | null
count?: number,
sourceStart: number
sourceEnd: number
destStart: number
destEnd: number
}
export interface creativeMethods {
setInventorySlot: (
slot: number,
item: Item | null
) => Promise<void>
clearSlot: (slot: number) => Promise<void>
clearInventory: () => Promise<void>
flyTo: (destination: Vec3) => Promise<void>
startFlying: () => void
stopFlying: () => void
}
export class Location {
floored: Vec3
blockPoint: Vec3
chunkCorner: Vec3
blockIndex: number
biomeBlockIndex: number
chunkYIndex: number
constructor (absoluteVector: Vec3);
}
export class Painting {
id: number
position: Vec3
name: string
direction: Vec3
constructor (id: number, position: Vec3, name: string, direction: Vec3);
}
interface StorageEvents {
open: () => void
close: () => void
updateSlot: (oldItem: Item | null, newItem: Item | null) => void
}
interface FurnaceEvents extends StorageEvents {
update: () => void
}
interface ConditionalStorageEvents extends StorageEvents {
ready: () => void
}
export class Chest extends Window<StorageEvents> {
constructor ();
close (): void;
deposit (
itemType: number,
metadata: number | null,
count: number | null
): Promise<void>;
withdraw (
itemType: number,
metadata: number | null,
count: number | null
): Promise<void>;
}
export class Furnace extends Window<FurnaceEvents> {
fuel: number
progress: number
constructor ();
close (): void;
takeInput (): Promise<Item>;
takeFuel (): Promise<Item>;
takeOutput (): Promise<Item>;
putInput (
itemType: number,
metadata: number | null,
count: number
): Promise<void>;
putFuel (
itemType: number,
metadata: number | null,
count: number
): Promise<void>;
inputItem (): Item;
fuelItem (): Item;
outputItem (): Item;
}
export class Dispenser extends Window<StorageEvents> {
constructor ();
close (): void;
deposit (
itemType: number,
metadata: number | null,
count: number | null
): Promise<void>;
withdraw (
itemType: number,
metadata: number | null,
count: number | null
): Promise<void>;
}
export class EnchantmentTable extends Window<ConditionalStorageEvents> {
enchantments: Enchantment[]
constructor ();
close (): void;
targetItem (): Item;
enchant (
choice: string | number
): Promise<Item>;
takeTargetItem (): Promise<Item>;
putTargetItem (item: Item): Promise<Item>;
putLapis (item: Item): Promise<Item>;
}
export class Anvil {
combine (itemOne: Item, itemTwo: Item, name?: string): Promise<void>
rename (item: Item, name?: string): Promise<void>
}
export interface Enchantment {
level: number
expected: { enchant: number, level: number }
}
export class Villager extends Window<ConditionalStorageEvents> {
trades: VillagerTrade[]
constructor ();
close (): void;
}
export interface VillagerTrade {
inputItem1: Item
outputItem: Item
inputItem2: Item | null
hasItem2: boolean
tradeDisabled: boolean
nbTradeUses: number
maximumNbTradeUses: number
xp?: number
specialPrice?: number
priceMultiplier?: number
demand?: number
realPrice?: number
}
export class ScoreBoard {
name: string
title: string
itemsMap: { [name: string]: ScoreBoardItem }
items: ScoreBoardItem[]
constructor (packet: object);
setTitle (title: string): void;
add (name: string, value: number, displayName: ChatMessage): ScoreBoardItem;
remove (name: string): ScoreBoardItem;
}
export interface ScoreBoardItem {
name: string
displayName: ChatMessage
value: number
}
export class Team {
name: ChatMessage
friendlyFire: number
nameTagVisibility: string
collisionRule: string
color: string
prefix: ChatMessage
suffix: ChatMessage
constructor (packet: object);
parseMessage (value: string): ChatMessage;
add (name: string, value: number): void;
remove (name: string): void;
update (name: string, friendlyFire: boolean, nameTagVisibility: string, collisionRule: string, formatting: number, prefix: string, suffix: string): void;
displayName (member: string): ChatMessage;
}
export type DisplaySlot =
| 'list'
| 'sidebar'
| 'belowName'
| 3
| 4
| 5
| 6
| 7
| 8
| 9
| 10
| 11
| 12
| 13
| 14
| 15
| 16
| 17
| 18
export class BossBar {
entityUUID: string
title: ChatMessage
health: number
dividers: number
color: 'pink' | 'blue' | 'red' | 'green' | 'yellow' | 'purple' | 'white'
shouldDarkenSky: boolean
isDragonBar: boolean
shouldCreateFog: boolean
constructor (
uuid: string,
title: string,
health: number,
dividers: number,
color: number,
flags: number
);
}
export class Particle {
id: number
name: string
position: Vec3
offset: Vec3
count: number
movementSpeed: number
longDistanceRender: boolean
static fromNetwork(packet: Object): Particle
constructor (
id: number,
position: Vec3,
offset: Vec3,
count?: number,
movementSpeed?: number,
longDistanceRender?: boolean
);
}
export let supportedVersions: string[]
export let testedVersions: string[]
export function supportFeature (feature: string, version: string): boolean