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.
@@ -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":";AAAA;;;;GAIG;;AA0BH,gCAkDC;AAKD,8BAGC;AAjFD,6CAAuC;AAmBvC;;;GAGG;AACH,SAAgB,UAAU,CAAC,KAAY,EAAE,OAAyB;IAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3G,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,cAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAElD,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,qCAAqC;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IACrF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;IAE3C,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IAEpC,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,iCAAiC;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;gBAAE,SAAS;YAEnD,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;oBAAE,SAAS;gBAErC,iBAAiB;gBACjB,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;gBAC9B,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;gBAC9B,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;gBAC9B,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;gBAC3C,IAAI,MAAM,GAAG,SAAS;oBAAE,SAAS;gBAEjC,OAAO,CAAC,IAAI,CAAC;oBACT,QAAQ,EAAE,IAAI,cAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC3B,OAAO;oBACP,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;iBAC9B,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAED,mBAAmB;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEhD,gBAAgB;IAChB,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,KAAY,EAAE,OAAwC;IAC5E,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5D,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC9B,CAAC"}
@@ -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"}
@@ -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":"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"}
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 ───────────────────────────────────