feat: Add comprehensive module declarations for type safety
- Add complete Vec3 type declarations with all methods and properties - Add prismarine-nbt module declarations with NBT parsing/serialization - Add @tweenjs/tween.js comprehensive type definitions - Add enhanced events module with prependListener support - Add stats.js, debug, and other commonly used module types - Fix EventEmitter interface with missing methods and properties - Enhance bot client interface for better typing - Add three-stdlib and Three.js addon module declarations
This commit is contained in:
parent
c6440b1b17
commit
ceeef1d1f8
1 changed files with 276 additions and 3 deletions
279
src/types/modules.d.ts
vendored
279
src/types/modules.d.ts
vendored
|
|
@ -20,6 +20,204 @@ declare module 'three' {
|
|||
}
|
||||
}
|
||||
|
||||
// Vec3 module declarations
|
||||
declare module 'vec3' {
|
||||
export class Vec3 {
|
||||
constructor (x?: number, y?: number, z?: number)
|
||||
x: number
|
||||
y: number
|
||||
z: number
|
||||
|
||||
set (x: number, y: number, z: number): this
|
||||
add (other: Vec3): Vec3
|
||||
subtract (other: Vec3): Vec3
|
||||
multiply (scalar: number): Vec3
|
||||
divide (scalar: number): Vec3
|
||||
dot (other: Vec3): number
|
||||
cross (other: Vec3): Vec3
|
||||
length (): number
|
||||
normalize (): Vec3
|
||||
distance (other: Vec3): number
|
||||
equals (other: Vec3): boolean
|
||||
clone (): Vec3
|
||||
offset (dx: number, dy: number, dz: number): Vec3
|
||||
plus (other: Vec3): Vec3
|
||||
minus (other: Vec3): Vec3
|
||||
scaled (scalar: number): Vec3
|
||||
abs (): Vec3
|
||||
floor (): Vec3
|
||||
ceil (): Vec3
|
||||
round (): Vec3
|
||||
translate (dx: number, dy: number, dz: number): Vec3
|
||||
toString (): string
|
||||
toArray (): [number, number, number]
|
||||
|
||||
static fromArray (arr: [number, number, number]): Vec3
|
||||
}
|
||||
export default Vec3
|
||||
}
|
||||
|
||||
// Prismarine-nbt module declarations
|
||||
declare module 'prismarine-nbt' {
|
||||
export interface NBTData {
|
||||
name: string
|
||||
value: any
|
||||
type: string
|
||||
}
|
||||
|
||||
export interface ParsedNBT {
|
||||
parsed: NBTData
|
||||
type: string
|
||||
metadata: any
|
||||
}
|
||||
|
||||
export function parse (buffer: Buffer, littleEndian?: boolean): Promise<ParsedNBT>
|
||||
export function parseUncompressed (buffer: Buffer, littleEndian?: boolean): ParsedNBT
|
||||
export function writeUncompressed (value: any, littleEndian?: boolean): Buffer
|
||||
export function simplify (data: any): any
|
||||
export function serialize (nbt: any): Buffer
|
||||
|
||||
export class Writer {
|
||||
constructor (littleEndian?: boolean)
|
||||
writeTag (tag: any): void
|
||||
getBuffer (): Buffer
|
||||
}
|
||||
|
||||
export class Reader {
|
||||
constructor (buffer: Buffer, littleEndian?: boolean)
|
||||
readTag (): any
|
||||
}
|
||||
|
||||
export default {
|
||||
parse,
|
||||
parseUncompressed,
|
||||
writeUncompressed,
|
||||
simplify,
|
||||
serialize,
|
||||
Writer,
|
||||
Reader
|
||||
}
|
||||
}
|
||||
|
||||
// @tweenjs/tween.js module declarations
|
||||
declare module '@tweenjs/tween.js' {
|
||||
export interface TweenEasing {
|
||||
Linear: {
|
||||
None (k: number): number
|
||||
}
|
||||
Quadratic: {
|
||||
In (k: number): number
|
||||
Out (k: number): number
|
||||
InOut (k: number): number
|
||||
}
|
||||
Cubic: {
|
||||
In (k: number): number
|
||||
Out (k: number): number
|
||||
InOut (k: number): number
|
||||
}
|
||||
Quartic: {
|
||||
In (k: number): number
|
||||
Out (k: number): number
|
||||
InOut (k: number): number
|
||||
}
|
||||
Quintic: {
|
||||
In (k: number): number
|
||||
Out (k: number): number
|
||||
InOut (k: number): number
|
||||
}
|
||||
Sinusoidal: {
|
||||
In (k: number): number
|
||||
Out (k: number): number
|
||||
InOut (k: number): number
|
||||
}
|
||||
Exponential: {
|
||||
In (k: number): number
|
||||
Out (k: number): number
|
||||
InOut (k: number): number
|
||||
}
|
||||
Circular: {
|
||||
In (k: number): number
|
||||
Out (k: number): number
|
||||
InOut (k: number): number
|
||||
}
|
||||
Elastic: {
|
||||
In (k: number): number
|
||||
Out (k: number): number
|
||||
InOut (k: number): number
|
||||
}
|
||||
Back: {
|
||||
In (k: number): number
|
||||
Out (k: number): number
|
||||
InOut (k: number): number
|
||||
}
|
||||
Bounce: {
|
||||
In (k: number): number
|
||||
Out (k: number): number
|
||||
InOut (k: number): number
|
||||
}
|
||||
}
|
||||
|
||||
export class Tween<T extends Record<string, any>> {
|
||||
constructor (object: T, group?: Group)
|
||||
to (properties: Partial<T>, duration: number): this
|
||||
start (time?: number): this
|
||||
stop (): this
|
||||
end (): this
|
||||
stopChainedTweens (): this
|
||||
group (group: Group): this
|
||||
delay (amount: number): this
|
||||
repeat (times: number): this
|
||||
repeatDelay (amount: number): this
|
||||
yoyo (yoyo: boolean): this
|
||||
easing (easingFunction: (k: number) => number): this
|
||||
interpolation (interpolationFunction: (v: number[], k: number) => number): this
|
||||
chain (...tweens: Tween<any>[]): this
|
||||
onStart (callback: (object: T) => void): this
|
||||
onUpdate (callback: (object: T, elapsed: number) => void): this
|
||||
onRepeat (callback: (object: T) => void): this
|
||||
onComplete (callback: (object: T) => void): this
|
||||
onStop (callback: (object: T) => void): this
|
||||
update (time: number): boolean
|
||||
isPlaying (): boolean
|
||||
isPaused (): boolean
|
||||
pause (time?: number): this
|
||||
resume (time?: number): this
|
||||
duration (duration?: number): number
|
||||
getDuration (): number
|
||||
getId (): number
|
||||
}
|
||||
|
||||
export class Group {
|
||||
constructor ()
|
||||
getAll (): Tween<any>[]
|
||||
removeAll (): void
|
||||
add (tween: Tween<any>): void
|
||||
remove (tween: Tween<any>): void
|
||||
update (time?: number): boolean
|
||||
}
|
||||
|
||||
export const Easing: TweenEasing
|
||||
|
||||
export function update (time?: number): boolean
|
||||
export function getAll (): Tween<any>[]
|
||||
export function removeAll (): void
|
||||
export function add (tween: Tween<any>): void
|
||||
export function remove (tween: Tween<any>): void
|
||||
export function now (): number
|
||||
|
||||
export default {
|
||||
Tween,
|
||||
Group,
|
||||
Easing,
|
||||
update,
|
||||
getAll,
|
||||
removeAll,
|
||||
add,
|
||||
remove,
|
||||
now
|
||||
}
|
||||
}
|
||||
|
||||
// mc-assets module declarations with enhanced types
|
||||
declare module 'mc-assets' {
|
||||
export interface AtlasParser {
|
||||
|
|
@ -129,6 +327,12 @@ declare module 'valtio/utils' {
|
|||
): () => void
|
||||
}
|
||||
|
||||
declare module 'valtio/vanilla' {
|
||||
export function proxy<T extends object>(initialObject: T): T
|
||||
export function subscribe<T>(proxy: T, callback: (ops: any[]) => void): () => void
|
||||
export function snapshot<T extends object>(proxy: T): Readonly<T>
|
||||
}
|
||||
|
||||
// Three.js addon modules
|
||||
declare module 'three/examples/jsm/controls/OrbitControls.js' {
|
||||
import { Camera, EventDispatcher } from 'three'
|
||||
|
|
@ -156,6 +360,10 @@ declare module 'three/examples/jsm/webxr/VRButton.js' {
|
|||
}
|
||||
}
|
||||
|
||||
declare module 'three/addons/controls/OrbitControls.js' {
|
||||
export { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'
|
||||
}
|
||||
|
||||
declare module 'three-stdlib' {
|
||||
import { Material, Object3D, BufferGeometry, Vector2 } from 'three'
|
||||
|
||||
|
|
@ -185,6 +393,66 @@ declare module 'three-stdlib' {
|
|||
}
|
||||
}
|
||||
|
||||
// Additional commonly used modules
|
||||
declare module 'stats.js' {
|
||||
export default class Stats {
|
||||
constructor ()
|
||||
dom: HTMLDivElement
|
||||
begin (): void
|
||||
end (): void
|
||||
update (): void
|
||||
setMode (mode: number): void
|
||||
showPanel (panel: number): void
|
||||
}
|
||||
}
|
||||
|
||||
declare module 'debug' {
|
||||
interface Debug {
|
||||
(namespace: string): Debugger
|
||||
enabled (namespaces: string): boolean
|
||||
humanize (val: number): string
|
||||
names: RegExp[]
|
||||
skips: RegExp[]
|
||||
formatters: Record<string, (v: any) => string>
|
||||
}
|
||||
|
||||
interface Debugger {
|
||||
(formatter: any, ...args: any[]): void
|
||||
enabled: boolean
|
||||
log: (...args: any[]) => any
|
||||
namespace: string
|
||||
destroy (): boolean
|
||||
extend (namespace: string, delimiter?: string): Debugger
|
||||
}
|
||||
|
||||
const debug: Debug
|
||||
export = debug
|
||||
}
|
||||
|
||||
// Enhanced events module with missing methods
|
||||
declare module 'events' {
|
||||
export class EventEmitter {
|
||||
static defaultMaxListeners: number
|
||||
|
||||
constructor ()
|
||||
on (event: string, listener: (...args: any[]) => void): this
|
||||
once (event: string, listener: (...args: any[]) => void): this
|
||||
emit (event: string, ...args: any[]): boolean
|
||||
off (event: string, listener: (...args: any[]) => void): this
|
||||
removeListener (event: string, listener: (...args: any[]) => void): this
|
||||
removeAllListeners (event?: string): this
|
||||
listeners (event: string): Function[]
|
||||
listenerCount (event: string): number
|
||||
addListener (event: string, listener: (...args: any[]) => void): this
|
||||
prependListener (event: string, listener: (...args: any[]) => void): this
|
||||
prependOnceListener (event: string, listener: (...args: any[]) => void): this
|
||||
setMaxListeners (n: number): this
|
||||
getMaxListeners (): number
|
||||
eventNames (): Array<string | symbol>
|
||||
rawListeners (event: string): Function[]
|
||||
}
|
||||
}
|
||||
|
||||
// Browser API enhancements
|
||||
interface Window {
|
||||
playerState?: {
|
||||
|
|
@ -225,10 +493,18 @@ interface BotEntity {
|
|||
velocity: { x: number, y: number, z: number }
|
||||
}
|
||||
|
||||
// Enhanced bot client interface
|
||||
interface BotClient {
|
||||
on (event: string, callback: (...args: any[]) => void): void
|
||||
prependListener (event: string, callback: (...args: any[]) => void): void
|
||||
write<T extends keyof any> (name: T, data: any): Buffer
|
||||
}
|
||||
|
||||
// Global bot interface enhancement
|
||||
declare global {
|
||||
const bot: {
|
||||
entity?: BotEntity
|
||||
_client?: BotClient
|
||||
game?: {
|
||||
gameMode?: string
|
||||
dimension?: string
|
||||
|
|
@ -241,9 +517,6 @@ declare global {
|
|||
controlState?: {
|
||||
sneak: boolean
|
||||
}
|
||||
_client?: {
|
||||
on(event: string, callback: (...args: any[]) => void): void
|
||||
}
|
||||
on(event: string, callback: (...args: any[]) => void): void
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue