UNPKG

@nxg-org/mineflayer-physics-util

Version:

Provides functionality for more accurate entity and projectile tracking.

126 lines (125 loc) 3.74 kB
import { Bot, Effect, GameMode } from "mineflayer"; import { AABB } from "@nxg-org/mineflayer-util-plugin"; import { Vec3 } from "vec3"; import { getStatusEffectNamesForVersion } from "../../util/physicsUtils"; import { ControlStateHandler } from "../player/playerControls"; import { IEntityState } from "."; import { IPhysics } from "../engines/IPhysics"; import type { Entity } from "prismarine-entity"; import { PlayerPoses } from "./poses"; import { Heading } from "."; export declare function convInpToAxes(player: PlayerState): Heading; export declare class EntityDimensions { readonly width: number; readonly height: number; readonly fixed: boolean; constructor(width: number, height: number, fixed: boolean); static scalable(f: number, f2: number): EntityDimensions; static fixed(f: number, f2: number): EntityDimensions; makeBoundingBox(vec3: Vec3): AABB; makeBoundingBoxCoords(d: number, d2: number, d3: number): AABB; scale(f: number): EntityDimensions; scaleRaw(f: number, f2: number): EntityDimensions; toString(): string; } /** * Looking at this code, it's too specified towards players. * * I will eventually split this code into PlayerState and bot.entityState, where bot.entityState contains fewer controls. */ export declare class PlayerState implements IEntityState { readonly bot: Bot; age: number; pos: Vec3; vel: Vec3; onGround: boolean; onClimbable: boolean; isInWater: boolean; isUnderWater: boolean; isInLava: boolean; isUnderLava: boolean; isInWeb: boolean; elytraFlying: boolean; elytraEquipped: boolean; fireworkRocketDuration: number; isCollidedHorizontally: boolean; isCollidedHorizontallyMinor: boolean; isCollidedVertically: boolean; supportingBlockPos: Vec3 | null; stuckSpeedMultiplier: Vec3; jumpTicks: number; jumpQueued: boolean; sprintTriggerTime: number; flyJumpTriggerTime: number; sneakCollision: boolean; attributes: Entity["attributes"]; yaw: number; pitch: number; control: ControlStateHandler; prevControl: ControlStateHandler; heading: Heading; prevHeading: Heading; isUsingItem: boolean; isUsingMainHand: boolean; isUsingOffHand: boolean; jumpBoost: number; speed: number; slowness: number; dolphinsGrace: number; slowFalling: number; levitation: number; blindness: number; depthStrider: number; swiftSneak: number; soulSpeed: number; effects: Effect[]; statusEffectNames: ReturnType<typeof getStatusEffectNamesForVersion>; pose: PlayerPoses; gameMode: GameMode; food: number; /** * TODO: proper impl. */ mayFly: boolean; /** * TODO: proper impl. */ flying: boolean; /** * TODO: proper impl. */ swimming: boolean; /** * TODO: proper impl. */ _sprinting: boolean; get sprinting(): boolean; set sprinting(value: boolean); /** * TODO: proper impl. */ crouching: boolean; /** * TODO: proper impl. */ fallFlying: boolean; /** * TODO: proper impl. */ flySpeed: number; get onGroundWithoutSupportingBlock(): boolean; get height(): number; get eyeHeight(): number; get halfWidth(): number; readonly ctx: IPhysics; private readonly supportFeature; constructor(ctx: IPhysics, bot: Bot, control?: ControlStateHandler); update(bot: Bot, control?: ControlStateHandler): PlayerState; apply(bot: Bot): void; clone(): PlayerState; merge(other: PlayerState): this; getBB(): AABB; lookAt(vec3: Vec3): void; look(yaw: number, pitch: number): void; } export { ControlStateHandler };