@nxg-org/mineflayer-physics-util
Version:
Provides functionality for more accurate entity and projectile tracking.
126 lines (125 loc) • 3.74 kB
TypeScript
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 };