specprotocol 1.4.0 → 1.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/block-finder.d.ts +32 -0
- package/dist/block-finder.d.ts.map +1 -0
- package/dist/block-finder.js +67 -0
- package/dist/block-finder.js.map +1 -0
- package/dist/bossbar.d.ts +58 -0
- package/dist/bossbar.d.ts.map +1 -0
- package/dist/bossbar.js +115 -0
- package/dist/bossbar.js.map +1 -0
- package/dist/bot.d.ts +41 -1
- package/dist/bot.d.ts.map +1 -1
- package/dist/bot.js +52 -0
- package/dist/bot.js.map +1 -1
- package/dist/chat.d.ts +57 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +210 -0
- package/dist/chat.js.map +1 -0
- package/dist/index.d.ts +10 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -6
- package/dist/index.js.map +1 -1
- package/dist/inventory.d.ts +98 -0
- package/dist/inventory.d.ts.map +1 -0
- package/dist/inventory.js +206 -0
- package/dist/inventory.js.map +1 -0
- package/dist/scoreboard.d.ts +66 -0
- package/dist/scoreboard.d.ts.map +1 -0
- package/dist/scoreboard.js +153 -0
- package/dist/scoreboard.js.map +1 -0
- package/dist/tablist.d.ts +56 -0
- package/dist/tablist.d.ts.map +1 -0
- package/dist/tablist.js +91 -0
- package/dist/tablist.js.map +1 -0
- package/dist/weather.d.ts +33 -0
- package/dist/weather.d.ts.map +1 -0
- package/dist/weather.js +74 -0
- package/dist/weather.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Block Finder Utility (Core)
|
|
3
|
+
*
|
|
4
|
+
* Provides efficient block searching in loaded chunks.
|
|
5
|
+
*/
|
|
6
|
+
import { World } from './world/world.js';
|
|
7
|
+
import { Vec3 } from './utils/vec3.js';
|
|
8
|
+
export interface FindBlockOptions {
|
|
9
|
+
/** Block state IDs to search for */
|
|
10
|
+
matching: number | number[];
|
|
11
|
+
/** Maximum distance from origin */
|
|
12
|
+
maxDistance?: number;
|
|
13
|
+
/** Maximum number of results */
|
|
14
|
+
count?: number;
|
|
15
|
+
/** Point to search from (defaults to 0,0,0) */
|
|
16
|
+
point?: Vec3;
|
|
17
|
+
}
|
|
18
|
+
export interface FoundBlock {
|
|
19
|
+
position: Vec3;
|
|
20
|
+
stateId: number;
|
|
21
|
+
distance: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Find blocks in the loaded world matching criteria.
|
|
25
|
+
* Returns blocks sorted by distance (nearest first).
|
|
26
|
+
*/
|
|
27
|
+
export declare function findBlocks(world: World, options: FindBlockOptions): FoundBlock[];
|
|
28
|
+
/**
|
|
29
|
+
* Find the nearest block matching criteria.
|
|
30
|
+
*/
|
|
31
|
+
export declare function findBlock(world: World, options: Omit<FindBlockOptions, 'count'>): FoundBlock | null;
|
|
32
|
+
//# sourceMappingURL=block-finder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-finder.d.ts","sourceRoot":"","sources":["../src/block-finder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,MAAM,WAAW,gBAAgB;IAC7B,oCAAoC;IACpC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,KAAK,CAAC,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,IAAI,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,GAAG,UAAU,EAAE,CAkDhF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,GAAG,UAAU,GAAG,IAAI,CAGnG"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Block Finder Utility (Core)
|
|
4
|
+
*
|
|
5
|
+
* Provides efficient block searching in loaded chunks.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.findBlocks = findBlocks;
|
|
9
|
+
exports.findBlock = findBlock;
|
|
10
|
+
const vec3_js_1 = require("./utils/vec3.js");
|
|
11
|
+
/**
|
|
12
|
+
* Find blocks in the loaded world matching criteria.
|
|
13
|
+
* Returns blocks sorted by distance (nearest first).
|
|
14
|
+
*/
|
|
15
|
+
function findBlocks(world, options) {
|
|
16
|
+
const matching = Array.isArray(options.matching) ? new Set(options.matching) : new Set([options.matching]);
|
|
17
|
+
const maxDist = options.maxDistance ?? 64;
|
|
18
|
+
const maxCount = options.count ?? 1;
|
|
19
|
+
const origin = options.point ?? new vec3_js_1.Vec3(0, 0, 0);
|
|
20
|
+
const results = [];
|
|
21
|
+
// Search in a cube around the origin
|
|
22
|
+
const minX = Math.floor(origin.x - maxDist);
|
|
23
|
+
const maxX = Math.ceil(origin.x + maxDist);
|
|
24
|
+
const minY = Math.max(world.minY, Math.floor(origin.y - maxDist));
|
|
25
|
+
const maxY = Math.min(world.minY + world.worldHeight, Math.ceil(origin.y + maxDist));
|
|
26
|
+
const minZ = Math.floor(origin.z - maxDist);
|
|
27
|
+
const maxZ = Math.ceil(origin.z + maxDist);
|
|
28
|
+
const maxDistSq = maxDist * maxDist;
|
|
29
|
+
for (let x = minX; x <= maxX; x++) {
|
|
30
|
+
for (let z = minZ; z <= maxZ; z++) {
|
|
31
|
+
// Check if chunk is loaded first
|
|
32
|
+
const chunkX = Math.floor(x / 16);
|
|
33
|
+
const chunkZ = Math.floor(z / 16);
|
|
34
|
+
if (!world.isChunkLoaded(chunkX, chunkZ))
|
|
35
|
+
continue;
|
|
36
|
+
for (let y = minY; y <= maxY; y++) {
|
|
37
|
+
const stateId = world.getBlock(x, y, z);
|
|
38
|
+
if (!matching.has(stateId))
|
|
39
|
+
continue;
|
|
40
|
+
// Check distance
|
|
41
|
+
const dx = x + 0.5 - origin.x;
|
|
42
|
+
const dy = y + 0.5 - origin.y;
|
|
43
|
+
const dz = z + 0.5 - origin.z;
|
|
44
|
+
const distSq = dx * dx + dy * dy + dz * dz;
|
|
45
|
+
if (distSq > maxDistSq)
|
|
46
|
+
continue;
|
|
47
|
+
results.push({
|
|
48
|
+
position: new vec3_js_1.Vec3(x, y, z),
|
|
49
|
+
stateId,
|
|
50
|
+
distance: Math.sqrt(distSq),
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Sort by distance
|
|
56
|
+
results.sort((a, b) => a.distance - b.distance);
|
|
57
|
+
// Limit results
|
|
58
|
+
return results.slice(0, maxCount);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Find the nearest block matching criteria.
|
|
62
|
+
*/
|
|
63
|
+
function findBlock(world, options) {
|
|
64
|
+
const results = findBlocks(world, { ...options, count: 1 });
|
|
65
|
+
return results[0] ?? null;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=block-finder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-finder.js","sourceRoot":"","sources":["../src/block-finder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boss Bar Manager
|
|
3
|
+
*
|
|
4
|
+
* Tracks server boss bars (Ender Dragon, Wither, custom).
|
|
5
|
+
*/
|
|
6
|
+
import { TypedEventEmitter } from './utils/events.js';
|
|
7
|
+
export interface BossBar {
|
|
8
|
+
uuid: string;
|
|
9
|
+
title: string;
|
|
10
|
+
health: number;
|
|
11
|
+
color: BossBarColor;
|
|
12
|
+
division: BossBarDivision;
|
|
13
|
+
flags: number;
|
|
14
|
+
}
|
|
15
|
+
export declare enum BossBarColor {
|
|
16
|
+
PINK = 0,
|
|
17
|
+
BLUE = 1,
|
|
18
|
+
RED = 2,
|
|
19
|
+
GREEN = 3,
|
|
20
|
+
YELLOW = 4,
|
|
21
|
+
PURPLE = 5,
|
|
22
|
+
WHITE = 6
|
|
23
|
+
}
|
|
24
|
+
export declare enum BossBarDivision {
|
|
25
|
+
NONE = 0,
|
|
26
|
+
NOTCHES_6 = 1,
|
|
27
|
+
NOTCHES_10 = 2,
|
|
28
|
+
NOTCHES_12 = 3,
|
|
29
|
+
NOTCHES_20 = 4
|
|
30
|
+
}
|
|
31
|
+
export declare enum BossBarAction {
|
|
32
|
+
ADD = 0,
|
|
33
|
+
REMOVE = 1,
|
|
34
|
+
UPDATE_HEALTH = 2,
|
|
35
|
+
UPDATE_TITLE = 3,
|
|
36
|
+
UPDATE_STYLE = 4,
|
|
37
|
+
UPDATE_FLAGS = 5
|
|
38
|
+
}
|
|
39
|
+
export interface BossBarEvents {
|
|
40
|
+
'bossBarAdd': (bar: BossBar) => void;
|
|
41
|
+
'bossBarRemove': (uuid: string) => void;
|
|
42
|
+
'bossBarUpdate': (bar: BossBar) => void;
|
|
43
|
+
}
|
|
44
|
+
export declare class BossBarManager extends TypedEventEmitter<BossBarEvents> {
|
|
45
|
+
private bars;
|
|
46
|
+
constructor();
|
|
47
|
+
/** Get a boss bar by UUID */
|
|
48
|
+
get(uuid: string): BossBar | undefined;
|
|
49
|
+
/** Get all active boss bars */
|
|
50
|
+
getAll(): BossBar[];
|
|
51
|
+
/** Number of active boss bars */
|
|
52
|
+
get count(): number;
|
|
53
|
+
/** Handle boss bar packet */
|
|
54
|
+
handleBossBar(uuid: string, action: number, data: any): void;
|
|
55
|
+
/** Clear all boss bars */
|
|
56
|
+
clear(): void;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=bossbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bossbar.d.ts","sourceRoot":"","sources":["../src/bossbar.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,oBAAY,YAAY;IACpB,IAAI,IAAI;IACR,IAAI,IAAI;IACR,GAAG,IAAI;IACP,KAAK,IAAI;IACT,MAAM,IAAI;IACV,MAAM,IAAI;IACV,KAAK,IAAI;CACZ;AAED,oBAAY,eAAe;IACvB,IAAI,IAAI;IACR,SAAS,IAAI;IACb,UAAU,IAAI;IACd,UAAU,IAAI;IACd,UAAU,IAAI;CACjB;AAED,oBAAY,aAAa;IACrB,GAAG,IAAI;IACP,MAAM,IAAI;IACV,aAAa,IAAI;IACjB,YAAY,IAAI;IAChB,YAAY,IAAI;IAChB,YAAY,IAAI;CACnB;AAED,MAAM,WAAW,aAAa;IAC1B,YAAY,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,eAAe,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CAC3C;AAED,qBAAa,cAAe,SAAQ,iBAAiB,CAAC,aAAa,CAAC;IAChE,OAAO,CAAC,IAAI,CAA8B;;IAM1C,6BAA6B;IAC7B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAItC,+BAA+B;IAC/B,MAAM,IAAI,OAAO,EAAE;IAInB,iCAAiC;IACjC,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,6BAA6B;IAC7B,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IAuD5D,0BAA0B;IAC1B,KAAK,IAAI,IAAI;CAGhB"}
|
package/dist/bossbar.js
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Boss Bar Manager
|
|
4
|
+
*
|
|
5
|
+
* Tracks server boss bars (Ender Dragon, Wither, custom).
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.BossBarManager = exports.BossBarAction = exports.BossBarDivision = exports.BossBarColor = void 0;
|
|
9
|
+
const events_js_1 = require("./utils/events.js");
|
|
10
|
+
var BossBarColor;
|
|
11
|
+
(function (BossBarColor) {
|
|
12
|
+
BossBarColor[BossBarColor["PINK"] = 0] = "PINK";
|
|
13
|
+
BossBarColor[BossBarColor["BLUE"] = 1] = "BLUE";
|
|
14
|
+
BossBarColor[BossBarColor["RED"] = 2] = "RED";
|
|
15
|
+
BossBarColor[BossBarColor["GREEN"] = 3] = "GREEN";
|
|
16
|
+
BossBarColor[BossBarColor["YELLOW"] = 4] = "YELLOW";
|
|
17
|
+
BossBarColor[BossBarColor["PURPLE"] = 5] = "PURPLE";
|
|
18
|
+
BossBarColor[BossBarColor["WHITE"] = 6] = "WHITE";
|
|
19
|
+
})(BossBarColor || (exports.BossBarColor = BossBarColor = {}));
|
|
20
|
+
var BossBarDivision;
|
|
21
|
+
(function (BossBarDivision) {
|
|
22
|
+
BossBarDivision[BossBarDivision["NONE"] = 0] = "NONE";
|
|
23
|
+
BossBarDivision[BossBarDivision["NOTCHES_6"] = 1] = "NOTCHES_6";
|
|
24
|
+
BossBarDivision[BossBarDivision["NOTCHES_10"] = 2] = "NOTCHES_10";
|
|
25
|
+
BossBarDivision[BossBarDivision["NOTCHES_12"] = 3] = "NOTCHES_12";
|
|
26
|
+
BossBarDivision[BossBarDivision["NOTCHES_20"] = 4] = "NOTCHES_20";
|
|
27
|
+
})(BossBarDivision || (exports.BossBarDivision = BossBarDivision = {}));
|
|
28
|
+
var BossBarAction;
|
|
29
|
+
(function (BossBarAction) {
|
|
30
|
+
BossBarAction[BossBarAction["ADD"] = 0] = "ADD";
|
|
31
|
+
BossBarAction[BossBarAction["REMOVE"] = 1] = "REMOVE";
|
|
32
|
+
BossBarAction[BossBarAction["UPDATE_HEALTH"] = 2] = "UPDATE_HEALTH";
|
|
33
|
+
BossBarAction[BossBarAction["UPDATE_TITLE"] = 3] = "UPDATE_TITLE";
|
|
34
|
+
BossBarAction[BossBarAction["UPDATE_STYLE"] = 4] = "UPDATE_STYLE";
|
|
35
|
+
BossBarAction[BossBarAction["UPDATE_FLAGS"] = 5] = "UPDATE_FLAGS";
|
|
36
|
+
})(BossBarAction || (exports.BossBarAction = BossBarAction = {}));
|
|
37
|
+
class BossBarManager extends events_js_1.TypedEventEmitter {
|
|
38
|
+
bars = new Map();
|
|
39
|
+
constructor() {
|
|
40
|
+
super();
|
|
41
|
+
}
|
|
42
|
+
/** Get a boss bar by UUID */
|
|
43
|
+
get(uuid) {
|
|
44
|
+
return this.bars.get(uuid);
|
|
45
|
+
}
|
|
46
|
+
/** Get all active boss bars */
|
|
47
|
+
getAll() {
|
|
48
|
+
return Array.from(this.bars.values());
|
|
49
|
+
}
|
|
50
|
+
/** Number of active boss bars */
|
|
51
|
+
get count() {
|
|
52
|
+
return this.bars.size;
|
|
53
|
+
}
|
|
54
|
+
/** Handle boss bar packet */
|
|
55
|
+
handleBossBar(uuid, action, data) {
|
|
56
|
+
switch (action) {
|
|
57
|
+
case BossBarAction.ADD: {
|
|
58
|
+
const bar = {
|
|
59
|
+
uuid,
|
|
60
|
+
title: data.title ?? '',
|
|
61
|
+
health: data.health ?? 1.0,
|
|
62
|
+
color: data.color ?? BossBarColor.PINK,
|
|
63
|
+
division: data.division ?? BossBarDivision.NONE,
|
|
64
|
+
flags: data.flags ?? 0,
|
|
65
|
+
};
|
|
66
|
+
this.bars.set(uuid, bar);
|
|
67
|
+
this.emit('bossBarAdd', bar);
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
case BossBarAction.REMOVE:
|
|
71
|
+
this.bars.delete(uuid);
|
|
72
|
+
this.emit('bossBarRemove', uuid);
|
|
73
|
+
break;
|
|
74
|
+
case BossBarAction.UPDATE_HEALTH: {
|
|
75
|
+
const bar = this.bars.get(uuid);
|
|
76
|
+
if (bar) {
|
|
77
|
+
bar.health = data.health ?? bar.health;
|
|
78
|
+
this.emit('bossBarUpdate', bar);
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
case BossBarAction.UPDATE_TITLE: {
|
|
83
|
+
const bar = this.bars.get(uuid);
|
|
84
|
+
if (bar) {
|
|
85
|
+
bar.title = data.title ?? bar.title;
|
|
86
|
+
this.emit('bossBarUpdate', bar);
|
|
87
|
+
}
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
case BossBarAction.UPDATE_STYLE: {
|
|
91
|
+
const bar = this.bars.get(uuid);
|
|
92
|
+
if (bar) {
|
|
93
|
+
bar.color = data.color ?? bar.color;
|
|
94
|
+
bar.division = data.division ?? bar.division;
|
|
95
|
+
this.emit('bossBarUpdate', bar);
|
|
96
|
+
}
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
case BossBarAction.UPDATE_FLAGS: {
|
|
100
|
+
const bar = this.bars.get(uuid);
|
|
101
|
+
if (bar) {
|
|
102
|
+
bar.flags = data.flags ?? bar.flags;
|
|
103
|
+
this.emit('bossBarUpdate', bar);
|
|
104
|
+
}
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/** Clear all boss bars */
|
|
110
|
+
clear() {
|
|
111
|
+
this.bars.clear();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
exports.BossBarManager = BossBarManager;
|
|
115
|
+
//# sourceMappingURL=bossbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bossbar.js","sourceRoot":"","sources":["../src/bossbar.ts"],"names":[],"mappings":"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"}
|
package/dist/bot.d.ts
CHANGED
|
@@ -16,14 +16,23 @@ import { Vec3 } from './utils/vec3.js';
|
|
|
16
16
|
import { type RawPacket } from './protocol/packet.js';
|
|
17
17
|
import { World } from './world/world.js';
|
|
18
18
|
import { Entity, EntityManager } from './entity/entity.js';
|
|
19
|
+
import { TabList, type TabListPlayer } from './tablist.js';
|
|
20
|
+
import { ChatMessage } from './chat.js';
|
|
21
|
+
import { Inventory, type ItemStack } from './inventory.js';
|
|
22
|
+
import { Scoreboard } from './scoreboard.js';
|
|
23
|
+
import { BossBarManager } from './bossbar.js';
|
|
24
|
+
import { Weather } from './weather.js';
|
|
25
|
+
import { type FindBlockOptions, type FoundBlock } from './block-finder.js';
|
|
19
26
|
import { PluginManager, type Plugin } from './plugins/plugin-manager.js';
|
|
20
27
|
export interface BotEvents {
|
|
21
28
|
/** Login complete, entering play state */
|
|
22
29
|
'login': () => void;
|
|
23
30
|
/** Spawned in the world */
|
|
24
31
|
'spawn': () => void;
|
|
25
|
-
/** Received a chat message */
|
|
32
|
+
/** Received a chat message (parsed) */
|
|
26
33
|
'chat': (message: string, isOverlay: boolean) => void;
|
|
34
|
+
/** Received a chat message (rich) */
|
|
35
|
+
'chatMessage': (message: ChatMessage, isOverlay: boolean) => void;
|
|
27
36
|
/** Health updated */
|
|
28
37
|
'health': (health: number, food: number, saturation: number) => void;
|
|
29
38
|
/** Bot died */
|
|
@@ -56,6 +65,16 @@ export interface BotEvents {
|
|
|
56
65
|
'title': (text: string) => void;
|
|
57
66
|
/** Subtitle text displayed */
|
|
58
67
|
'subtitle': (text: string) => void;
|
|
68
|
+
/** Actionbar text displayed */
|
|
69
|
+
'actionbar': (text: string) => void;
|
|
70
|
+
/** Player joined (tab list) */
|
|
71
|
+
'playerJoin': (player: TabListPlayer) => void;
|
|
72
|
+
/** Player left (tab list) */
|
|
73
|
+
'playerLeave': (player: TabListPlayer) => void;
|
|
74
|
+
/** Weather changed */
|
|
75
|
+
'weatherChange': (weather: 'clear' | 'rain' | 'thunder') => void;
|
|
76
|
+
/** Inventory slot updated */
|
|
77
|
+
'inventoryUpdate': (slot: number, item: ItemStack | null) => void;
|
|
59
78
|
/** Raw packet received (for advanced use) */
|
|
60
79
|
'rawPacket': (packet: RawPacket) => void;
|
|
61
80
|
/** Connection error */
|
|
@@ -100,12 +119,19 @@ export declare class Bot extends TypedEventEmitter<BotEvents> {
|
|
|
100
119
|
private _spawnPosition;
|
|
101
120
|
private _actionSequence;
|
|
102
121
|
private physicsInterval;
|
|
122
|
+
/** Whether the bot is currently connected to the server */
|
|
123
|
+
get isConnected(): boolean;
|
|
103
124
|
private authMode;
|
|
104
125
|
private accessToken?;
|
|
105
126
|
readonly world: World;
|
|
106
127
|
readonly entities: EntityManager;
|
|
107
128
|
readonly plugins: PluginManager;
|
|
108
129
|
readonly entity: Entity;
|
|
130
|
+
readonly tabList: TabList;
|
|
131
|
+
readonly inventory: Inventory;
|
|
132
|
+
readonly scoreboard: Scoreboard;
|
|
133
|
+
readonly bossBars: BossBarManager;
|
|
134
|
+
readonly weather: Weather;
|
|
109
135
|
private readonly options;
|
|
110
136
|
private packetHandlers;
|
|
111
137
|
constructor(options: BotOptions);
|
|
@@ -250,6 +276,20 @@ export declare class Bot extends TypedEventEmitter<BotEvents> {
|
|
|
250
276
|
* Disconnect from the server.
|
|
251
277
|
*/
|
|
252
278
|
disconnect(): void;
|
|
279
|
+
/**
|
|
280
|
+
* Find blocks matching criteria in loaded chunks.
|
|
281
|
+
* Returns blocks sorted by distance (nearest first).
|
|
282
|
+
*
|
|
283
|
+
* @example
|
|
284
|
+
* ```ts
|
|
285
|
+
* const stones = bot.findBlocks({ matching: 1, maxDistance: 32, count: 10 });
|
|
286
|
+
* ```
|
|
287
|
+
*/
|
|
288
|
+
findBlocks(options: FindBlockOptions): FoundBlock[];
|
|
289
|
+
/**
|
|
290
|
+
* Find the nearest block matching criteria.
|
|
291
|
+
*/
|
|
292
|
+
findBlock(options: Omit<FindBlockOptions, 'count'>): FoundBlock | null;
|
|
253
293
|
}
|
|
254
294
|
/**
|
|
255
295
|
* Create and connect a bot.
|
package/dist/bot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAU,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AA0EtD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAgB,MAAM,oBAAoB,CAAC;AAGzE,OAAO,EAAE,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAMzE,MAAM,WAAW,SAAS;IACtB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,
|
|
1
|
+
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
|
package/dist/bot.js
CHANGED
|
@@ -30,6 +30,13 @@ const play_js_1 = require("./protocol/states/play.js");
|
|
|
30
30
|
// World & Entity
|
|
31
31
|
const world_js_1 = require("./world/world.js");
|
|
32
32
|
const entity_js_1 = require("./entity/entity.js");
|
|
33
|
+
// Core modules
|
|
34
|
+
const tablist_js_1 = require("./tablist.js");
|
|
35
|
+
const inventory_js_1 = require("./inventory.js");
|
|
36
|
+
const scoreboard_js_1 = require("./scoreboard.js");
|
|
37
|
+
const bossbar_js_1 = require("./bossbar.js");
|
|
38
|
+
const weather_js_1 = require("./weather.js");
|
|
39
|
+
const block_finder_js_1 = require("./block-finder.js");
|
|
33
40
|
// Plugins
|
|
34
41
|
const plugin_manager_js_1 = require("./plugins/plugin-manager.js");
|
|
35
42
|
const chat_js_1 = require("./plugins/built-in/chat.js");
|
|
@@ -57,6 +64,10 @@ class Bot extends events_js_1.TypedEventEmitter {
|
|
|
57
64
|
_spawnPosition = new vec3_js_1.Vec3(0, 0, 0);
|
|
58
65
|
_actionSequence = 0;
|
|
59
66
|
physicsInterval = null;
|
|
67
|
+
/** Whether the bot is currently connected to the server */
|
|
68
|
+
get isConnected() {
|
|
69
|
+
return this.connection.connected;
|
|
70
|
+
}
|
|
60
71
|
// Auth
|
|
61
72
|
authMode;
|
|
62
73
|
accessToken;
|
|
@@ -65,6 +76,12 @@ class Bot extends events_js_1.TypedEventEmitter {
|
|
|
65
76
|
entities;
|
|
66
77
|
plugins;
|
|
67
78
|
entity;
|
|
79
|
+
// Core modules
|
|
80
|
+
tabList;
|
|
81
|
+
inventory;
|
|
82
|
+
scoreboard;
|
|
83
|
+
bossBars;
|
|
84
|
+
weather;
|
|
68
85
|
// Config
|
|
69
86
|
options;
|
|
70
87
|
// Packet handlers for play state
|
|
@@ -85,6 +102,16 @@ class Bot extends events_js_1.TypedEventEmitter {
|
|
|
85
102
|
this.entities = new entity_js_1.EntityManager();
|
|
86
103
|
this.plugins = new plugin_manager_js_1.PluginManager();
|
|
87
104
|
this.entity = new entity_js_1.Entity(0, '', 0);
|
|
105
|
+
// Initialize core modules
|
|
106
|
+
this.tabList = new tablist_js_1.TabList();
|
|
107
|
+
this.inventory = new inventory_js_1.Inventory();
|
|
108
|
+
this.scoreboard = new scoreboard_js_1.Scoreboard();
|
|
109
|
+
this.bossBars = new bossbar_js_1.BossBarManager();
|
|
110
|
+
this.weather = new weather_js_1.Weather();
|
|
111
|
+
// Forward core module events to bot
|
|
112
|
+
this.tabList.on('playerJoin', (player) => this.emit('playerJoin', player));
|
|
113
|
+
this.tabList.on('playerLeave', (player) => this.emit('playerLeave', player));
|
|
114
|
+
this.weather.on('weatherChange', (state) => this.emit('weatherChange', state));
|
|
88
115
|
// Initialize connection
|
|
89
116
|
this.connection = new connection_js_1.Connection({
|
|
90
117
|
host: this.options.host,
|
|
@@ -862,6 +889,31 @@ class Bot extends events_js_1.TypedEventEmitter {
|
|
|
862
889
|
this.connection.disconnect();
|
|
863
890
|
this.logger.info('Disconnected');
|
|
864
891
|
}
|
|
892
|
+
// ─── Block Finding ──────────────────────────────────────
|
|
893
|
+
/**
|
|
894
|
+
* Find blocks matching criteria in loaded chunks.
|
|
895
|
+
* Returns blocks sorted by distance (nearest first).
|
|
896
|
+
*
|
|
897
|
+
* @example
|
|
898
|
+
* ```ts
|
|
899
|
+
* const stones = bot.findBlocks({ matching: 1, maxDistance: 32, count: 10 });
|
|
900
|
+
* ```
|
|
901
|
+
*/
|
|
902
|
+
findBlocks(options) {
|
|
903
|
+
return (0, block_finder_js_1.findBlocks)(this.world, {
|
|
904
|
+
...options,
|
|
905
|
+
point: options.point ?? this.position,
|
|
906
|
+
});
|
|
907
|
+
}
|
|
908
|
+
/**
|
|
909
|
+
* Find the nearest block matching criteria.
|
|
910
|
+
*/
|
|
911
|
+
findBlock(options) {
|
|
912
|
+
return (0, block_finder_js_1.findBlock)(this.world, {
|
|
913
|
+
...options,
|
|
914
|
+
point: options.point ?? this.position,
|
|
915
|
+
});
|
|
916
|
+
}
|
|
865
917
|
}
|
|
866
918
|
exports.Bot = Bot;
|
|
867
919
|
// ─── Factory Function ───────────────────────────────────
|