specprotocol 1.4.2 → 1.4.4
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 +43 -2
- package/dist/bot.d.ts.map +1 -1
- package/dist/bot.js +192 -52
- 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 +209 -0
- package/dist/inventory.js.map +1 -0
- package/dist/plugins/built-in/chat.d.ts +0 -4
- package/dist/plugins/built-in/chat.d.ts.map +1 -1
- package/dist/plugins/built-in/chat.js +0 -40
- package/dist/plugins/built-in/chat.js.map +1 -1
- package/dist/protocol/compression.d.ts +3 -1
- package/dist/protocol/compression.d.ts.map +1 -1
- package/dist/protocol/compression.js +16 -3
- package/dist/protocol/compression.js.map +1 -1
- package/dist/protocol/connection.d.ts.map +1 -1
- package/dist/protocol/connection.js +27 -6
- package/dist/protocol/connection.js.map +1 -1
- package/dist/protocol/packet.d.ts +3 -0
- package/dist/protocol/packet.d.ts.map +1 -1
- package/dist/protocol/packet.js +28 -4
- package/dist/protocol/packet.js.map +1 -1
- package/dist/protocol/states/play.d.ts +6 -0
- package/dist/protocol/states/play.d.ts.map +1 -1
- package/dist/protocol/states/play.js +35 -7
- package/dist/protocol/states/play.js.map +1 -1
- package/dist/protocol/types.d.ts.map +1 -1
- package/dist/protocol/types.js +12 -0
- package/dist/protocol/types.js.map +1 -1
- 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
package/dist/chat.js
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Chat Component Parser
|
|
4
|
+
*
|
|
5
|
+
* Parses Minecraft's JSON chat format into plain text, styled text,
|
|
6
|
+
* and structured data. Supports colors, formatting, click/hover events.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ChatMessage = void 0;
|
|
10
|
+
// Minecraft color code map
|
|
11
|
+
const COLOR_MAP = {
|
|
12
|
+
black: '#000000',
|
|
13
|
+
dark_blue: '#0000AA',
|
|
14
|
+
dark_green: '#00AA00',
|
|
15
|
+
dark_aqua: '#00AAAA',
|
|
16
|
+
dark_red: '#AA0000',
|
|
17
|
+
dark_purple: '#AA00AA',
|
|
18
|
+
gold: '#FFAA00',
|
|
19
|
+
gray: '#AAAAAA',
|
|
20
|
+
dark_gray: '#555555',
|
|
21
|
+
blue: '#5555FF',
|
|
22
|
+
green: '#55FF55',
|
|
23
|
+
aqua: '#55FFFF',
|
|
24
|
+
red: '#FF5555',
|
|
25
|
+
light_purple: '#FF55FF',
|
|
26
|
+
yellow: '#FFFF55',
|
|
27
|
+
white: '#FFFFFF',
|
|
28
|
+
};
|
|
29
|
+
// Section sign color codes
|
|
30
|
+
const SECTION_COLORS = {
|
|
31
|
+
'0': 'black', '1': 'dark_blue', '2': 'dark_green', '3': 'dark_aqua',
|
|
32
|
+
'4': 'dark_red', '5': 'dark_purple', '6': 'gold', '7': 'gray',
|
|
33
|
+
'8': 'dark_gray', '9': 'blue', 'a': 'green', 'b': 'aqua',
|
|
34
|
+
'c': 'red', 'd': 'light_purple', 'e': 'yellow', 'f': 'white',
|
|
35
|
+
};
|
|
36
|
+
class ChatMessage {
|
|
37
|
+
raw;
|
|
38
|
+
constructor(component) {
|
|
39
|
+
if (typeof component === 'string') {
|
|
40
|
+
try {
|
|
41
|
+
this.raw = JSON.parse(component);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
this.raw = { text: component };
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
this.raw = component;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/** Convert to plain text (no formatting) */
|
|
52
|
+
toString() {
|
|
53
|
+
return this.extractText(this.raw);
|
|
54
|
+
}
|
|
55
|
+
/** Convert to ANSI colored text for terminal */
|
|
56
|
+
toAnsi() {
|
|
57
|
+
return this.extractAnsi(this.raw);
|
|
58
|
+
}
|
|
59
|
+
/** Convert to HTML */
|
|
60
|
+
toHTML() {
|
|
61
|
+
return this.extractHTML(this.raw);
|
|
62
|
+
}
|
|
63
|
+
/** Get the color of the root component */
|
|
64
|
+
get color() {
|
|
65
|
+
return this.raw.color;
|
|
66
|
+
}
|
|
67
|
+
/** Check if message contains text */
|
|
68
|
+
includes(text) {
|
|
69
|
+
return this.toString().includes(text);
|
|
70
|
+
}
|
|
71
|
+
/** Get click event if present */
|
|
72
|
+
get clickEvent() {
|
|
73
|
+
return this.raw.clickEvent;
|
|
74
|
+
}
|
|
75
|
+
/** Parse a chat message from raw JSON string or NBT-like data */
|
|
76
|
+
static parse(data) {
|
|
77
|
+
if (typeof data === 'string') {
|
|
78
|
+
return new ChatMessage(data);
|
|
79
|
+
}
|
|
80
|
+
return new ChatMessage(data);
|
|
81
|
+
}
|
|
82
|
+
/** Parse section sign (§) formatted text */
|
|
83
|
+
static fromLegacy(text) {
|
|
84
|
+
const component = { text: '', extra: [] };
|
|
85
|
+
let current = { text: '' };
|
|
86
|
+
let i = 0;
|
|
87
|
+
while (i < text.length) {
|
|
88
|
+
if (text[i] === '§' && i + 1 < text.length) {
|
|
89
|
+
// Push current segment
|
|
90
|
+
if (current.text) {
|
|
91
|
+
component.extra.push(current);
|
|
92
|
+
current = { text: '' };
|
|
93
|
+
}
|
|
94
|
+
const code = text[i + 1].toLowerCase();
|
|
95
|
+
if (SECTION_COLORS[code]) {
|
|
96
|
+
current.color = SECTION_COLORS[code];
|
|
97
|
+
}
|
|
98
|
+
else if (code === 'l')
|
|
99
|
+
current.bold = true;
|
|
100
|
+
else if (code === 'o')
|
|
101
|
+
current.italic = true;
|
|
102
|
+
else if (code === 'n')
|
|
103
|
+
current.underlined = true;
|
|
104
|
+
else if (code === 'm')
|
|
105
|
+
current.strikethrough = true;
|
|
106
|
+
else if (code === 'k')
|
|
107
|
+
current.obfuscated = true;
|
|
108
|
+
else if (code === 'r')
|
|
109
|
+
current = { text: '' }; // Reset
|
|
110
|
+
i += 2;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
current.text += text[i];
|
|
114
|
+
i++;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (current.text) {
|
|
118
|
+
component.extra.push(current);
|
|
119
|
+
}
|
|
120
|
+
return new ChatMessage(component);
|
|
121
|
+
}
|
|
122
|
+
extractText(comp) {
|
|
123
|
+
let text = '';
|
|
124
|
+
if (comp.text)
|
|
125
|
+
text += comp.text;
|
|
126
|
+
if (comp.translate) {
|
|
127
|
+
text += comp.translate;
|
|
128
|
+
if (comp.with) {
|
|
129
|
+
for (let i = 0; i < comp.with.length; i++) {
|
|
130
|
+
text = text.replace(`%${i + 1}$s`, this.extractText(comp.with[i]));
|
|
131
|
+
text = text.replace('%s', this.extractText(comp.with[i]));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (comp.extra) {
|
|
136
|
+
for (const child of comp.extra) {
|
|
137
|
+
text += this.extractText(child);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return text;
|
|
141
|
+
}
|
|
142
|
+
extractAnsi(comp) {
|
|
143
|
+
let text = '';
|
|
144
|
+
// Apply color
|
|
145
|
+
if (comp.color && COLOR_MAP[comp.color]) {
|
|
146
|
+
text += `\x1b[38;2;${this.hexToRgb(COLOR_MAP[comp.color])}m`;
|
|
147
|
+
}
|
|
148
|
+
if (comp.bold)
|
|
149
|
+
text += '\x1b[1m';
|
|
150
|
+
if (comp.italic)
|
|
151
|
+
text += '\x1b[3m';
|
|
152
|
+
if (comp.underlined)
|
|
153
|
+
text += '\x1b[4m';
|
|
154
|
+
if (comp.strikethrough)
|
|
155
|
+
text += '\x1b[9m';
|
|
156
|
+
if (comp.text)
|
|
157
|
+
text += comp.text;
|
|
158
|
+
if (comp.translate)
|
|
159
|
+
text += comp.translate;
|
|
160
|
+
if (comp.extra) {
|
|
161
|
+
for (const child of comp.extra) {
|
|
162
|
+
text += this.extractAnsi(child);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
text += '\x1b[0m';
|
|
166
|
+
return text;
|
|
167
|
+
}
|
|
168
|
+
extractHTML(comp) {
|
|
169
|
+
let styles = [];
|
|
170
|
+
if (comp.color && COLOR_MAP[comp.color]) {
|
|
171
|
+
styles.push(`color:${COLOR_MAP[comp.color]}`);
|
|
172
|
+
}
|
|
173
|
+
else if (comp.color && /^#[0-9a-fA-F]{6}$/.test(comp.color)) {
|
|
174
|
+
styles.push(`color:${comp.color}`);
|
|
175
|
+
}
|
|
176
|
+
if (comp.bold)
|
|
177
|
+
styles.push('font-weight:bold');
|
|
178
|
+
if (comp.italic)
|
|
179
|
+
styles.push('font-style:italic');
|
|
180
|
+
if (comp.underlined)
|
|
181
|
+
styles.push('text-decoration:underline');
|
|
182
|
+
if (comp.strikethrough)
|
|
183
|
+
styles.push('text-decoration:line-through');
|
|
184
|
+
let text = comp.text ?? '';
|
|
185
|
+
if (comp.translate)
|
|
186
|
+
text += comp.translate;
|
|
187
|
+
let html = styles.length > 0
|
|
188
|
+
? `<span style="${styles.join(';')}">${this.escapeHtml(text)}`
|
|
189
|
+
: this.escapeHtml(text);
|
|
190
|
+
if (comp.extra) {
|
|
191
|
+
for (const child of comp.extra) {
|
|
192
|
+
html += this.extractHTML(child);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
if (styles.length > 0)
|
|
196
|
+
html += '</span>';
|
|
197
|
+
return html;
|
|
198
|
+
}
|
|
199
|
+
hexToRgb(hex) {
|
|
200
|
+
const r = parseInt(hex.slice(1, 3), 16);
|
|
201
|
+
const g = parseInt(hex.slice(3, 5), 16);
|
|
202
|
+
const b = parseInt(hex.slice(5, 7), 16);
|
|
203
|
+
return `${r};${g};${b}`;
|
|
204
|
+
}
|
|
205
|
+
escapeHtml(text) {
|
|
206
|
+
return text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
exports.ChatMessage = ChatMessage;
|
|
210
|
+
//# sourceMappingURL=chat.js.map
|
package/dist/chat.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,2BAA2B;AAC3B,MAAM,SAAS,GAA2B;IACtC,KAAK,EAAE,SAAS;IAChB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,SAAS;IACtB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,SAAS;IACpB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,SAAS;IACd,YAAY,EAAE,SAAS;IACvB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,SAAS;CACnB,CAAC;AAEF,2BAA2B;AAC3B,MAAM,cAAc,GAA2B;IAC3C,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW;IACnE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAC7D,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM;IACxD,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO;CAC/D,CAAC;AAkBF,MAAa,WAAW;IACX,GAAG,CAAgB;IAE5B,YAAY,SAAiC;QACzC,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC;gBACD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACL,IAAI,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YACnC,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;QACzB,CAAC;IACL,CAAC;IAED,4CAA4C;IAC5C,QAAQ;QACJ,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,gDAAgD;IAChD,MAAM;QACF,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,sBAAsB;IACtB,MAAM;QACF,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,0CAA0C;IAC1C,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,qCAAqC;IACrC,QAAQ,CAAC,IAAY;QACjB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,iCAAiC;IACjC,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;IAC/B,CAAC;IAED,iEAAiE;IACjE,MAAM,CAAC,KAAK,CAAC,IAAqB;QAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,WAAW,CAAC,IAAqB,CAAC,CAAC;IAClD,CAAC;IAED,4CAA4C;IAC5C,MAAM,CAAC,UAAU,CAAC,IAAY;QAC1B,MAAM,SAAS,GAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QACzD,IAAI,OAAO,GAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACzC,uBAAuB;gBACvB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;oBACf,SAAS,CAAC,KAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC/B,OAAO,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;gBAC3B,CAAC;gBAED,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC;gBACxC,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvB,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;gBACzC,CAAC;qBAAM,IAAI,IAAI,KAAK,GAAG;oBAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;qBACxC,IAAI,IAAI,KAAK,GAAG;oBAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;qBACxC,IAAI,IAAI,KAAK,GAAG;oBAAE,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;qBAC5C,IAAI,IAAI,KAAK,GAAG;oBAAE,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;qBAC/C,IAAI,IAAI,KAAK,GAAG;oBAAE,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;qBAC5C,IAAI,IAAI,KAAK,GAAG;oBAAE,OAAO,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ;gBAEvD,CAAC,IAAI,CAAC,CAAC;YACX,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxB,CAAC,EAAE,CAAC;YACR,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,SAAS,CAAC,KAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAEO,WAAW,CAAC,IAAmB;QACnC,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;QACjC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC;YACvB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACxC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;oBACpE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;gBAC/D,CAAC;YACL,CAAC;QACL,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC7B,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,WAAW,CAAC,IAAmB;QACnC,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,cAAc;QACd,IAAI,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,IAAI,IAAI,aAAa,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC;QAClE,CAAC;QACD,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,IAAI,SAAS,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,IAAI,SAAS,CAAC;QACnC,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,IAAI,SAAS,CAAC;QACvC,IAAI,IAAI,CAAC,aAAa;YAAE,IAAI,IAAI,SAAS,CAAC;QAE1C,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;QACjC,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC;QAE3C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC7B,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,SAAS,CAAC;QAClB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,WAAW,CAAC,IAAmB;QACnC,IAAI,MAAM,GAAa,EAAE,CAAC;QAE1B,IAAI,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,IAAI,CAAC,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,UAAU;YAAE,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC9D,IAAI,IAAI,CAAC,aAAa;YAAE,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAEpE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC;QAE3C,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;YACxB,CAAC,CAAC,gBAAgB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YAC9D,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAE5B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC7B,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,IAAI,SAAS,CAAC;QACzC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,QAAQ,CAAC,GAAW;QACxB,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxC,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC5B,CAAC;IAEO,UAAU,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;CACJ;AAlLD,kCAkLC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* SpecProtocol — A Minecraft bot framework built from scratch in TypeScript.
|
|
3
3
|
*
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import { createBot } from '
|
|
6
|
+
* import { createBot } from 'specprotocol';
|
|
7
7
|
*
|
|
8
8
|
* const bot = await createBot({
|
|
9
9
|
* host: 'localhost',
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* });
|
|
14
14
|
*
|
|
15
15
|
* bot.on('spawn', () => {
|
|
16
|
-
* bot.chat('Hello from
|
|
16
|
+
* bot.chat('Hello from SpecProtocol!');
|
|
17
17
|
* });
|
|
18
18
|
* ```
|
|
19
19
|
*/
|
|
@@ -28,6 +28,13 @@ export { PROTOCOL_VERSION } from './protocol/states/handshake.js';
|
|
|
28
28
|
export { World } from './world/world.js';
|
|
29
29
|
export { ChunkColumn, ChunkSection, type Block } from './world/block.js';
|
|
30
30
|
export { Entity, PlayerEntity, EntityManager, EntityType } from './entity/entity.js';
|
|
31
|
+
export { TabList, type TabListPlayer, type TabListEvents } from './tablist.js';
|
|
32
|
+
export { ChatMessage, type ChatComponent } from './chat.js';
|
|
33
|
+
export { Inventory, type ItemStack, type InventoryEvents } from './inventory.js';
|
|
34
|
+
export { Scoreboard, type ScoreboardObjective, type ScoreboardScore, type ScoreboardTeam, type ScoreboardEvents } from './scoreboard.js';
|
|
35
|
+
export { BossBarManager, type BossBar, BossBarColor, BossBarDivision, BossBarAction, type BossBarEvents } from './bossbar.js';
|
|
36
|
+
export { Weather, type WeatherState, type WeatherEvents } from './weather.js';
|
|
37
|
+
export { findBlocks, findBlock, type FindBlockOptions, type FoundBlock } from './block-finder.js';
|
|
31
38
|
export { PluginManager, type Plugin } from './plugins/plugin-manager.js';
|
|
32
39
|
export { ChatPlugin } from './plugins/built-in/chat.js';
|
|
33
40
|
export { CombatPlugin } from './plugins/built-in/combat.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAG3E,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EACH,aAAa,EACb,eAAe,EACf,cAAc,EACd,KAAK,SAAS,EACd,KAAK,gBAAgB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGlE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGzE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrF,OAAO,EAAE,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG5D,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAG3E,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EACH,aAAa,EACb,eAAe,EACf,cAAc,EACd,KAAK,SAAS,EACd,KAAK,gBAAgB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGlE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGzE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrF,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,KAAK,mBAAmB,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACzI,OAAO,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9H,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGlG,OAAO,EAAE,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG5D,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* SpecProtocol — A Minecraft bot framework built from scratch in TypeScript.
|
|
4
4
|
*
|
|
5
5
|
* @example
|
|
6
6
|
* ```ts
|
|
7
|
-
* import { createBot } from '
|
|
7
|
+
* import { createBot } from 'specprotocol';
|
|
8
8
|
*
|
|
9
9
|
* const bot = await createBot({
|
|
10
10
|
* host: 'localhost',
|
|
@@ -14,12 +14,12 @@
|
|
|
14
14
|
* });
|
|
15
15
|
*
|
|
16
16
|
* bot.on('spawn', () => {
|
|
17
|
-
* bot.chat('Hello from
|
|
17
|
+
* bot.chat('Hello from SpecProtocol!');
|
|
18
18
|
* });
|
|
19
19
|
* ```
|
|
20
20
|
*/
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.joinServer = exports.authenticateMicrosoft = exports.offlineUUID = exports.createOfflineProfile = exports.CombatPlugin = exports.ChatPlugin = exports.PluginManager = exports.EntityType = exports.EntityManager = exports.PlayerEntity = exports.Entity = exports.ChunkSection = exports.ChunkColumn = exports.World = exports.PROTOCOL_VERSION = exports.PacketRegistry = exports.PacketDirection = exports.ProtocolState = exports.BufferWriter = exports.BufferReader = exports.Connection = exports.TypedEventEmitter = exports.LogLevel = exports.Logger = exports.Vec3 = exports.createBot = exports.Bot = void 0;
|
|
22
|
+
exports.joinServer = exports.authenticateMicrosoft = exports.offlineUUID = exports.createOfflineProfile = exports.CombatPlugin = exports.ChatPlugin = exports.PluginManager = exports.findBlock = exports.findBlocks = exports.Weather = exports.BossBarAction = exports.BossBarDivision = exports.BossBarColor = exports.BossBarManager = exports.Scoreboard = exports.Inventory = exports.ChatMessage = exports.TabList = exports.EntityType = exports.EntityManager = exports.PlayerEntity = exports.Entity = exports.ChunkSection = exports.ChunkColumn = exports.World = exports.PROTOCOL_VERSION = exports.PacketRegistry = exports.PacketDirection = exports.ProtocolState = exports.BufferWriter = exports.BufferReader = exports.Connection = exports.TypedEventEmitter = exports.LogLevel = exports.Logger = exports.Vec3 = exports.createBot = exports.Bot = void 0;
|
|
23
23
|
// Main Bot
|
|
24
24
|
var bot_js_1 = require("./bot.js");
|
|
25
25
|
Object.defineProperty(exports, "Bot", { enumerable: true, get: function () { return bot_js_1.Bot; } });
|
|
@@ -56,11 +56,30 @@ Object.defineProperty(exports, "Entity", { enumerable: true, get: function () {
|
|
|
56
56
|
Object.defineProperty(exports, "PlayerEntity", { enumerable: true, get: function () { return entity_js_1.PlayerEntity; } });
|
|
57
57
|
Object.defineProperty(exports, "EntityManager", { enumerable: true, get: function () { return entity_js_1.EntityManager; } });
|
|
58
58
|
Object.defineProperty(exports, "EntityType", { enumerable: true, get: function () { return entity_js_1.EntityType; } });
|
|
59
|
+
// Core Modules
|
|
60
|
+
var tablist_js_1 = require("./tablist.js");
|
|
61
|
+
Object.defineProperty(exports, "TabList", { enumerable: true, get: function () { return tablist_js_1.TabList; } });
|
|
62
|
+
var chat_js_1 = require("./chat.js");
|
|
63
|
+
Object.defineProperty(exports, "ChatMessage", { enumerable: true, get: function () { return chat_js_1.ChatMessage; } });
|
|
64
|
+
var inventory_js_1 = require("./inventory.js");
|
|
65
|
+
Object.defineProperty(exports, "Inventory", { enumerable: true, get: function () { return inventory_js_1.Inventory; } });
|
|
66
|
+
var scoreboard_js_1 = require("./scoreboard.js");
|
|
67
|
+
Object.defineProperty(exports, "Scoreboard", { enumerable: true, get: function () { return scoreboard_js_1.Scoreboard; } });
|
|
68
|
+
var bossbar_js_1 = require("./bossbar.js");
|
|
69
|
+
Object.defineProperty(exports, "BossBarManager", { enumerable: true, get: function () { return bossbar_js_1.BossBarManager; } });
|
|
70
|
+
Object.defineProperty(exports, "BossBarColor", { enumerable: true, get: function () { return bossbar_js_1.BossBarColor; } });
|
|
71
|
+
Object.defineProperty(exports, "BossBarDivision", { enumerable: true, get: function () { return bossbar_js_1.BossBarDivision; } });
|
|
72
|
+
Object.defineProperty(exports, "BossBarAction", { enumerable: true, get: function () { return bossbar_js_1.BossBarAction; } });
|
|
73
|
+
var weather_js_1 = require("./weather.js");
|
|
74
|
+
Object.defineProperty(exports, "Weather", { enumerable: true, get: function () { return weather_js_1.Weather; } });
|
|
75
|
+
var block_finder_js_1 = require("./block-finder.js");
|
|
76
|
+
Object.defineProperty(exports, "findBlocks", { enumerable: true, get: function () { return block_finder_js_1.findBlocks; } });
|
|
77
|
+
Object.defineProperty(exports, "findBlock", { enumerable: true, get: function () { return block_finder_js_1.findBlock; } });
|
|
59
78
|
// Plugins
|
|
60
79
|
var plugin_manager_js_1 = require("./plugins/plugin-manager.js");
|
|
61
80
|
Object.defineProperty(exports, "PluginManager", { enumerable: true, get: function () { return plugin_manager_js_1.PluginManager; } });
|
|
62
|
-
var
|
|
63
|
-
Object.defineProperty(exports, "ChatPlugin", { enumerable: true, get: function () { return
|
|
81
|
+
var chat_js_2 = require("./plugins/built-in/chat.js");
|
|
82
|
+
Object.defineProperty(exports, "ChatPlugin", { enumerable: true, get: function () { return chat_js_2.ChatPlugin; } });
|
|
64
83
|
var combat_js_1 = require("./plugins/built-in/combat.js");
|
|
65
84
|
Object.defineProperty(exports, "CombatPlugin", { enumerable: true, get: function () { return combat_js_1.CombatPlugin; } });
|
|
66
85
|
// Auth
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAEH,WAAW;AACX,mCAA2E;AAAlE,6FAAA,GAAG,OAAA;AAAE,mGAAA,SAAS,OAAA;AAEvB,QAAQ;AACR,2CAAuC;AAA9B,+FAAA,IAAI,OAAA;AACb,+CAAqD;AAA5C,mGAAA,MAAM,OAAA;AAAE,qGAAA,QAAQ,OAAA;AACzB,+CAAsD;AAA7C,8GAAA,iBAAiB,OAAA;AAE1B,WAAW;AACX,0DAA8E;AAArE,2GAAA,UAAU,OAAA;AACnB,gDAAiE;AAAxD,wGAAA,YAAY,OAAA;AAAE,wGAAA,YAAY,OAAA;AACnC,kDAM8B;AAL1B,0GAAA,aAAa,OAAA;AACb,4GAAA,eAAe,OAAA;AACf,2GAAA,cAAc,OAAA;AAIlB,+DAAkE;AAAzD,gHAAA,gBAAgB,OAAA;AAEzB,QAAQ;AACR,6CAAyC;AAAhC,iGAAA,KAAK,OAAA;AACd,6CAAyE;AAAhE,uGAAA,WAAW,OAAA;AAAE,wGAAA,YAAY,OAAA;AAElC,SAAS;AACT,gDAAqF;AAA5E,mGAAA,MAAM,OAAA;AAAE,yGAAA,YAAY,OAAA;AAAE,0GAAA,aAAa,OAAA;AAAE,uGAAA,UAAU,OAAA;AAExD,UAAU;AACV,iEAAyE;AAAhE,kHAAA,aAAa,OAAA;AACtB,sDAAwD;AAA/C,qGAAA,UAAU,OAAA;AACnB,0DAA4D;AAAnD,yGAAA,YAAY,OAAA;AAErB,OAAO;AACP,gDAAsE;AAA7D,kHAAA,oBAAoB,OAAA;AAAE,yGAAA,WAAW,OAAA;AAC1C,oDAAwE;AAA/D,qHAAA,qBAAqB,OAAA;AAAE,0GAAA,UAAU,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAEH,WAAW;AACX,mCAA2E;AAAlE,6FAAA,GAAG,OAAA;AAAE,mGAAA,SAAS,OAAA;AAEvB,QAAQ;AACR,2CAAuC;AAA9B,+FAAA,IAAI,OAAA;AACb,+CAAqD;AAA5C,mGAAA,MAAM,OAAA;AAAE,qGAAA,QAAQ,OAAA;AACzB,+CAAsD;AAA7C,8GAAA,iBAAiB,OAAA;AAE1B,WAAW;AACX,0DAA8E;AAArE,2GAAA,UAAU,OAAA;AACnB,gDAAiE;AAAxD,wGAAA,YAAY,OAAA;AAAE,wGAAA,YAAY,OAAA;AACnC,kDAM8B;AAL1B,0GAAA,aAAa,OAAA;AACb,4GAAA,eAAe,OAAA;AACf,2GAAA,cAAc,OAAA;AAIlB,+DAAkE;AAAzD,gHAAA,gBAAgB,OAAA;AAEzB,QAAQ;AACR,6CAAyC;AAAhC,iGAAA,KAAK,OAAA;AACd,6CAAyE;AAAhE,uGAAA,WAAW,OAAA;AAAE,wGAAA,YAAY,OAAA;AAElC,SAAS;AACT,gDAAqF;AAA5E,mGAAA,MAAM,OAAA;AAAE,yGAAA,YAAY,OAAA;AAAE,0GAAA,aAAa,OAAA;AAAE,uGAAA,UAAU,OAAA;AAExD,eAAe;AACf,2CAA+E;AAAtE,qGAAA,OAAO,OAAA;AAChB,qCAA4D;AAAnD,sGAAA,WAAW,OAAA;AACpB,+CAAiF;AAAxE,yGAAA,SAAS,OAAA;AAClB,iDAAyI;AAAhI,2GAAA,UAAU,OAAA;AACnB,2CAA8H;AAArH,4GAAA,cAAc,OAAA;AAAgB,0GAAA,YAAY,OAAA;AAAE,6GAAA,eAAe,OAAA;AAAE,2GAAA,aAAa,OAAA;AACnF,2CAA8E;AAArE,qGAAA,OAAO,OAAA;AAChB,qDAAkG;AAAzF,6GAAA,UAAU,OAAA;AAAE,4GAAA,SAAS,OAAA;AAE9B,UAAU;AACV,iEAAyE;AAAhE,kHAAA,aAAa,OAAA;AACtB,sDAAwD;AAA/C,qGAAA,UAAU,OAAA;AACnB,0DAA4D;AAAnD,yGAAA,YAAY,OAAA;AAErB,OAAO;AACP,gDAAsE;AAA7D,kHAAA,oBAAoB,OAAA;AAAE,yGAAA,WAAW,OAAA;AAC1C,oDAAwE;AAA/D,qHAAA,qBAAqB,OAAA;AAAE,0GAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inventory Manager (Core)
|
|
3
|
+
*
|
|
4
|
+
* Tracks the player's inventory: 36 main slots (0-35 = hotbar 0-8 + main 9-35),
|
|
5
|
+
* armor slots (36-39), off-hand (40), and open container slots.
|
|
6
|
+
*/
|
|
7
|
+
import { TypedEventEmitter } from './utils/events.js';
|
|
8
|
+
import { BufferReader } from './protocol/types.js';
|
|
9
|
+
export interface ItemStack {
|
|
10
|
+
/** Item count (0 = empty) */
|
|
11
|
+
count: number;
|
|
12
|
+
/** Item ID (registry ID) */
|
|
13
|
+
itemId: number;
|
|
14
|
+
/** Additional components count */
|
|
15
|
+
addComponentsCount: number;
|
|
16
|
+
/** Removed components count */
|
|
17
|
+
removeComponentsCount: number;
|
|
18
|
+
/** Raw component data */
|
|
19
|
+
rawData: Buffer;
|
|
20
|
+
}
|
|
21
|
+
export interface InventoryEvents {
|
|
22
|
+
'slotUpdate': (slot: number, item: ItemStack | null, windowId: number) => void;
|
|
23
|
+
'inventoryUpdate': (windowId: number) => void;
|
|
24
|
+
'heldItemChange': (slot: number) => void;
|
|
25
|
+
}
|
|
26
|
+
export declare class Inventory extends TypedEventEmitter<InventoryEvents> {
|
|
27
|
+
/** Player inventory slots: 0-8 hotbar, 9-35 main, 36-39 armor, 40 off-hand, 41-45 crafting */
|
|
28
|
+
private slots;
|
|
29
|
+
/** Currently open container slots */
|
|
30
|
+
private containerSlots;
|
|
31
|
+
/** Current held hotbar slot (0-8) */
|
|
32
|
+
private _selectedSlot;
|
|
33
|
+
/** Current open window ID */
|
|
34
|
+
private _windowId;
|
|
35
|
+
/** State ID for click container packets */
|
|
36
|
+
private _stateId;
|
|
37
|
+
/** Carried item (cursor item) */
|
|
38
|
+
private _carriedItem;
|
|
39
|
+
constructor();
|
|
40
|
+
/** Currently selected hotbar slot (0-8) */
|
|
41
|
+
get selectedSlot(): number;
|
|
42
|
+
set selectedSlot(slot: number);
|
|
43
|
+
/** Current open window ID */
|
|
44
|
+
get windowId(): number;
|
|
45
|
+
/** State ID for container operations */
|
|
46
|
+
get stateId(): number;
|
|
47
|
+
/** Item currently on cursor */
|
|
48
|
+
get carriedItem(): ItemStack | null;
|
|
49
|
+
/** Get item in a player inventory slot (0-45) */
|
|
50
|
+
getSlot(slot: number): ItemStack | null;
|
|
51
|
+
/** Get item in currently held hotbar slot */
|
|
52
|
+
get heldItem(): ItemStack | null;
|
|
53
|
+
/** Get hotbar items (slots 0-8) */
|
|
54
|
+
get hotbar(): (ItemStack | null)[];
|
|
55
|
+
/** Get main inventory items (slots 9-35) */
|
|
56
|
+
get main(): (ItemStack | null)[];
|
|
57
|
+
/** Get armor slots: [helmet, chestplate, leggings, boots] */
|
|
58
|
+
get armor(): (ItemStack | null)[];
|
|
59
|
+
/** Get off-hand item (slot 40) */
|
|
60
|
+
get offHand(): ItemStack | null;
|
|
61
|
+
/** Get helmet (slot 36) */
|
|
62
|
+
get helmet(): ItemStack | null;
|
|
63
|
+
/** Get chestplate (slot 37) */
|
|
64
|
+
get chestplate(): ItemStack | null;
|
|
65
|
+
/** Get leggings (slot 38) */
|
|
66
|
+
get leggings(): ItemStack | null;
|
|
67
|
+
/** Get boots (slot 39) */
|
|
68
|
+
get boots(): ItemStack | null;
|
|
69
|
+
/** Get all non-null items */
|
|
70
|
+
get items(): ItemStack[];
|
|
71
|
+
/** Count of non-empty slots */
|
|
72
|
+
get usedSlots(): number;
|
|
73
|
+
/** Count of empty slots in main inventory (9-35) + hotbar (0-8) */
|
|
74
|
+
get emptySlots(): number;
|
|
75
|
+
/** Find first slot with matching item ID */
|
|
76
|
+
findItem(itemId: number): number;
|
|
77
|
+
/** Find all slots with matching item ID */
|
|
78
|
+
findAllItems(itemId: number): number[];
|
|
79
|
+
/** Count total items of a given ID across all slots */
|
|
80
|
+
countItem(itemId: number): number;
|
|
81
|
+
/** Get item in container slot */
|
|
82
|
+
getContainerSlot(slot: number): ItemStack | null;
|
|
83
|
+
/** Get all container slots */
|
|
84
|
+
get container(): (ItemStack | null)[];
|
|
85
|
+
/** Set a single slot (from server packet) */
|
|
86
|
+
setSlot(windowId: number, slot: number, item: ItemStack | null, stateId?: number): void;
|
|
87
|
+
/** Set all container contents (from server packet) */
|
|
88
|
+
setContainerContent(windowId: number, items: (ItemStack | null)[], stateId: number, carriedItem: ItemStack | null): void;
|
|
89
|
+
/** Open a new container window */
|
|
90
|
+
openWindow(windowId: number, slotCount: number): void;
|
|
91
|
+
/** Close current container */
|
|
92
|
+
closeWindow(): void;
|
|
93
|
+
/** Clear all inventory data */
|
|
94
|
+
clear(): void;
|
|
95
|
+
/** Parse an item stack from buffer data */
|
|
96
|
+
static parseItem(reader: BufferReader): ItemStack | null;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=inventory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inventory.d.ts","sourceRoot":"","sources":["../src/inventory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,WAAW,SAAS;IACtB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,+BAA+B;IAC/B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC5B,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/E,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,qBAAa,SAAU,SAAQ,iBAAiB,CAAC,eAAe,CAAC;IAC7D,8FAA8F;IAC9F,OAAO,CAAC,KAAK,CAAkD;IAC/D,qCAAqC;IACrC,OAAO,CAAC,cAAc,CAA4B;IAClD,qCAAqC;IACrC,OAAO,CAAC,aAAa,CAAa;IAClC,6BAA6B;IAC7B,OAAO,CAAC,SAAS,CAAa;IAC9B,2CAA2C;IAC3C,OAAO,CAAC,QAAQ,CAAa;IAC7B,iCAAiC;IACjC,OAAO,CAAC,YAAY,CAA0B;;IAQ9C,2CAA2C;IAC3C,IAAI,YAAY,IAAI,MAAM,CAA+B;IACzD,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,EAG5B;IAED,6BAA6B;IAC7B,IAAI,QAAQ,IAAI,MAAM,CAA2B;IAEjD,wCAAwC;IACxC,IAAI,OAAO,IAAI,MAAM,CAA0B;IAE/C,+BAA+B;IAC/B,IAAI,WAAW,IAAI,SAAS,GAAG,IAAI,CAA8B;IAIjE,iDAAiD;IACjD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAKvC,6CAA6C;IAC7C,IAAI,QAAQ,IAAI,SAAS,GAAG,IAAI,CAE/B;IAED,mCAAmC;IACnC,IAAI,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAEjC;IAED,4CAA4C;IAC5C,IAAI,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAE/B;IAED,6DAA6D;IAC7D,IAAI,KAAK,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAEhC;IAED,kCAAkC;IAClC,IAAI,OAAO,IAAI,SAAS,GAAG,IAAI,CAE9B;IAED,2BAA2B;IAC3B,IAAI,MAAM,IAAI,SAAS,GAAG,IAAI,CAAmC;IACjE,+BAA+B;IAC/B,IAAI,UAAU,IAAI,SAAS,GAAG,IAAI,CAAmC;IACrE,6BAA6B;IAC7B,IAAI,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAmC;IACnE,0BAA0B;IAC1B,IAAI,KAAK,IAAI,SAAS,GAAG,IAAI,CAAmC;IAEhE,6BAA6B;IAC7B,IAAI,KAAK,IAAI,SAAS,EAAE,CAEvB;IAED,+BAA+B;IAC/B,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,mEAAmE;IACnE,IAAI,UAAU,IAAI,MAAM,CAMvB;IAED,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAOhC,2CAA2C;IAC3C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAQtC,uDAAuD;IACvD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAUjC,iCAAiC;IACjC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAKhD,8BAA8B;IAC9B,IAAI,SAAS,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAEpC;IAID,6CAA6C;IAC7C,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAqBvF,sDAAsD;IACtD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI;IAiBxH,kCAAkC;IAClC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAKrD,8BAA8B;IAC9B,WAAW,IAAI,IAAI;IAKnB,+BAA+B;IAC/B,KAAK,IAAI,IAAI;IAWb,2CAA2C;IAC3C,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI;CAmB3D"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Inventory Manager (Core)
|
|
4
|
+
*
|
|
5
|
+
* Tracks the player's inventory: 36 main slots (0-35 = hotbar 0-8 + main 9-35),
|
|
6
|
+
* armor slots (36-39), off-hand (40), and open container slots.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.Inventory = void 0;
|
|
10
|
+
const events_js_1 = require("./utils/events.js");
|
|
11
|
+
class Inventory extends events_js_1.TypedEventEmitter {
|
|
12
|
+
/** Player inventory slots: 0-8 hotbar, 9-35 main, 36-39 armor, 40 off-hand, 41-45 crafting */
|
|
13
|
+
slots = new Array(46).fill(null);
|
|
14
|
+
/** Currently open container slots */
|
|
15
|
+
containerSlots = [];
|
|
16
|
+
/** Current held hotbar slot (0-8) */
|
|
17
|
+
_selectedSlot = 0;
|
|
18
|
+
/** Current open window ID */
|
|
19
|
+
_windowId = 0;
|
|
20
|
+
/** State ID for click container packets */
|
|
21
|
+
_stateId = 0;
|
|
22
|
+
/** Carried item (cursor item) */
|
|
23
|
+
_carriedItem = null;
|
|
24
|
+
constructor() {
|
|
25
|
+
super();
|
|
26
|
+
}
|
|
27
|
+
// ─── Getters ────────────────────────────
|
|
28
|
+
/** Currently selected hotbar slot (0-8) */
|
|
29
|
+
get selectedSlot() { return this._selectedSlot; }
|
|
30
|
+
set selectedSlot(slot) {
|
|
31
|
+
this._selectedSlot = slot;
|
|
32
|
+
this.emit('heldItemChange', slot);
|
|
33
|
+
}
|
|
34
|
+
/** Current open window ID */
|
|
35
|
+
get windowId() { return this._windowId; }
|
|
36
|
+
/** State ID for container operations */
|
|
37
|
+
get stateId() { return this._stateId; }
|
|
38
|
+
/** Item currently on cursor */
|
|
39
|
+
get carriedItem() { return this._carriedItem; }
|
|
40
|
+
// ─── Slot Access ────────────────────────
|
|
41
|
+
/** Get item in a player inventory slot (0-45) */
|
|
42
|
+
getSlot(slot) {
|
|
43
|
+
if (slot < 0 || slot >= this.slots.length)
|
|
44
|
+
return null;
|
|
45
|
+
return this.slots[slot] ?? null;
|
|
46
|
+
}
|
|
47
|
+
/** Get item in currently held hotbar slot */
|
|
48
|
+
get heldItem() {
|
|
49
|
+
return this.getSlot(this._selectedSlot);
|
|
50
|
+
}
|
|
51
|
+
/** Get hotbar items (slots 0-8) */
|
|
52
|
+
get hotbar() {
|
|
53
|
+
return this.slots.slice(0, 9);
|
|
54
|
+
}
|
|
55
|
+
/** Get main inventory items (slots 9-35) */
|
|
56
|
+
get main() {
|
|
57
|
+
return this.slots.slice(9, 36);
|
|
58
|
+
}
|
|
59
|
+
/** Get armor slots: [helmet, chestplate, leggings, boots] */
|
|
60
|
+
get armor() {
|
|
61
|
+
return this.slots.slice(36, 40);
|
|
62
|
+
}
|
|
63
|
+
/** Get off-hand item (slot 40) */
|
|
64
|
+
get offHand() {
|
|
65
|
+
return this.slots[40] ?? null;
|
|
66
|
+
}
|
|
67
|
+
/** Get helmet (slot 36) */
|
|
68
|
+
get helmet() { return this.slots[36] ?? null; }
|
|
69
|
+
/** Get chestplate (slot 37) */
|
|
70
|
+
get chestplate() { return this.slots[37] ?? null; }
|
|
71
|
+
/** Get leggings (slot 38) */
|
|
72
|
+
get leggings() { return this.slots[38] ?? null; }
|
|
73
|
+
/** Get boots (slot 39) */
|
|
74
|
+
get boots() { return this.slots[39] ?? null; }
|
|
75
|
+
/** Get all non-null items */
|
|
76
|
+
get items() {
|
|
77
|
+
return this.slots.filter(Boolean);
|
|
78
|
+
}
|
|
79
|
+
/** Count of non-empty slots */
|
|
80
|
+
get usedSlots() {
|
|
81
|
+
return this.items.length;
|
|
82
|
+
}
|
|
83
|
+
/** Count of empty slots in main inventory (9-35) + hotbar (0-8) */
|
|
84
|
+
get emptySlots() {
|
|
85
|
+
let count = 0;
|
|
86
|
+
for (let i = 0; i < 36; i++) {
|
|
87
|
+
if (!this.slots[i])
|
|
88
|
+
count++;
|
|
89
|
+
}
|
|
90
|
+
return count;
|
|
91
|
+
}
|
|
92
|
+
/** Find first slot with matching item ID */
|
|
93
|
+
findItem(itemId) {
|
|
94
|
+
for (let i = 0; i < this.slots.length; i++) {
|
|
95
|
+
if (this.slots[i]?.itemId === itemId)
|
|
96
|
+
return i;
|
|
97
|
+
}
|
|
98
|
+
return -1;
|
|
99
|
+
}
|
|
100
|
+
/** Find all slots with matching item ID */
|
|
101
|
+
findAllItems(itemId) {
|
|
102
|
+
const result = [];
|
|
103
|
+
for (let i = 0; i < this.slots.length; i++) {
|
|
104
|
+
if (this.slots[i]?.itemId === itemId)
|
|
105
|
+
result.push(i);
|
|
106
|
+
}
|
|
107
|
+
return result;
|
|
108
|
+
}
|
|
109
|
+
/** Count total items of a given ID across all slots */
|
|
110
|
+
countItem(itemId) {
|
|
111
|
+
let count = 0;
|
|
112
|
+
for (const slot of this.slots) {
|
|
113
|
+
if (slot?.itemId === itemId)
|
|
114
|
+
count += slot.count;
|
|
115
|
+
}
|
|
116
|
+
return count;
|
|
117
|
+
}
|
|
118
|
+
// ─── Container Slots ────────────────────
|
|
119
|
+
/** Get item in container slot */
|
|
120
|
+
getContainerSlot(slot) {
|
|
121
|
+
if (slot < 0 || slot >= this.containerSlots.length)
|
|
122
|
+
return null;
|
|
123
|
+
return this.containerSlots[slot] ?? null;
|
|
124
|
+
}
|
|
125
|
+
/** Get all container slots */
|
|
126
|
+
get container() {
|
|
127
|
+
return this.containerSlots;
|
|
128
|
+
}
|
|
129
|
+
// ─── Updates ────────────────────────────
|
|
130
|
+
/** Set a single slot (from server packet) */
|
|
131
|
+
setSlot(windowId, slot, item, stateId) {
|
|
132
|
+
if (stateId !== undefined)
|
|
133
|
+
this._stateId = stateId;
|
|
134
|
+
if (windowId === 0 || windowId === -1) {
|
|
135
|
+
// Player inventory
|
|
136
|
+
if (slot >= 0 && slot < this.slots.length) {
|
|
137
|
+
this.slots[slot] = item;
|
|
138
|
+
this.emit('slotUpdate', slot, item, windowId);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
// Container
|
|
143
|
+
if (slot >= 0) {
|
|
144
|
+
if (slot >= this.containerSlots.length) {
|
|
145
|
+
this.containerSlots.length = slot + 1;
|
|
146
|
+
}
|
|
147
|
+
this.containerSlots[slot] = item;
|
|
148
|
+
this.emit('slotUpdate', slot, item, windowId);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/** Set all container contents (from server packet) */
|
|
153
|
+
setContainerContent(windowId, items, stateId, carriedItem) {
|
|
154
|
+
this._windowId = windowId;
|
|
155
|
+
this._stateId = stateId;
|
|
156
|
+
this._carriedItem = carriedItem;
|
|
157
|
+
if (windowId === 0) {
|
|
158
|
+
// Player inventory update
|
|
159
|
+
for (let i = 0; i < Math.min(items.length, this.slots.length); i++) {
|
|
160
|
+
this.slots[i] = items[i] ?? null;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
// Container
|
|
165
|
+
this.containerSlots = items;
|
|
166
|
+
}
|
|
167
|
+
this.emit('inventoryUpdate', windowId);
|
|
168
|
+
}
|
|
169
|
+
/** Open a new container window */
|
|
170
|
+
openWindow(windowId, slotCount) {
|
|
171
|
+
this._windowId = windowId;
|
|
172
|
+
this.containerSlots = new Array(slotCount).fill(null);
|
|
173
|
+
}
|
|
174
|
+
/** Close current container */
|
|
175
|
+
closeWindow() {
|
|
176
|
+
this._windowId = 0;
|
|
177
|
+
this.containerSlots = [];
|
|
178
|
+
}
|
|
179
|
+
/** Clear all inventory data */
|
|
180
|
+
clear() {
|
|
181
|
+
this.slots.fill(null);
|
|
182
|
+
this.containerSlots = [];
|
|
183
|
+
this._selectedSlot = 0;
|
|
184
|
+
this._windowId = 0;
|
|
185
|
+
this._stateId = 0;
|
|
186
|
+
this._carriedItem = null;
|
|
187
|
+
}
|
|
188
|
+
// ─── Item Parsing ───────────────────────
|
|
189
|
+
/** Parse an item stack from buffer data */
|
|
190
|
+
static parseItem(reader) {
|
|
191
|
+
const count = reader.readVarInt();
|
|
192
|
+
if (count <= 0)
|
|
193
|
+
return null;
|
|
194
|
+
const itemId = reader.readVarInt();
|
|
195
|
+
const addComponentsCount = reader.readVarInt();
|
|
196
|
+
const removeComponentsCount = reader.readVarInt();
|
|
197
|
+
// Skip component data for now (complex NBT-like structure)
|
|
198
|
+
const rawData = reader.readBytes(reader.remaining);
|
|
199
|
+
return {
|
|
200
|
+
count,
|
|
201
|
+
itemId,
|
|
202
|
+
addComponentsCount,
|
|
203
|
+
removeComponentsCount,
|
|
204
|
+
rawData,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
exports.Inventory = Inventory;
|
|
209
|
+
//# sourceMappingURL=inventory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inventory.js","sourceRoot":"","sources":["../src/inventory.ts"],"names":[],"mappings":"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"}
|