@bkm016/calcite 0.3.0 → 0.5.1
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/CHANGELOG.md +42 -0
- package/README.md +103 -20
- package/dist/accounts.js +4 -2
- package/dist/accounts.js.map +1 -1
- package/dist/cli.js +12 -141
- package/dist/cli.js.map +1 -1
- package/dist/client-core.d.ts +22 -13
- package/dist/client-core.js +217 -260
- package/dist/client-core.js.map +1 -1
- package/dist/client.d.ts +44 -15
- package/dist/client.js +58 -21
- package/dist/client.js.map +1 -1
- package/dist/display.d.ts +0 -6
- package/dist/display.js +31 -44
- package/dist/display.js.map +1 -1
- package/dist/feed.d.ts +17 -0
- package/dist/feed.js +47 -0
- package/dist/feed.js.map +1 -0
- package/dist/game-run.d.ts +30 -0
- package/dist/game-run.js +51 -0
- package/dist/game-run.js.map +1 -0
- package/dist/hmc.d.ts +7 -0
- package/dist/hmc.js +42 -31
- package/dist/hmc.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/install.d.ts +6 -0
- package/dist/install.js +26 -3
- package/dist/install.js.map +1 -1
- package/dist/java.js +11 -2
- package/dist/java.js.map +1 -1
- package/dist/launch.d.ts +79 -0
- package/dist/launch.js +142 -0
- package/dist/launch.js.map +1 -0
- package/dist/lock.js +18 -18
- package/dist/lock.js.map +1 -1
- package/dist/mcp/accounts.d.ts +3 -0
- package/dist/mcp/accounts.js +45 -0
- package/dist/mcp/accounts.js.map +1 -0
- package/dist/mcp/act.d.ts +3 -0
- package/dist/mcp/act.js +129 -0
- package/dist/mcp/act.js.map +1 -0
- package/dist/mcp/extensions.d.ts +3 -0
- package/dist/mcp/extensions.js +21 -0
- package/dist/mcp/extensions.js.map +1 -0
- package/dist/mcp/index.d.ts +13 -0
- package/dist/mcp/index.js +58 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/items.d.ts +3 -0
- package/dist/mcp/items.js +71 -0
- package/dist/mcp/items.js.map +1 -0
- package/dist/mcp/lifecycle.d.ts +3 -0
- package/dist/mcp/lifecycle.js +120 -0
- package/dist/mcp/lifecycle.js.map +1 -0
- package/dist/mcp/observe.d.ts +3 -0
- package/dist/mcp/observe.js +110 -0
- package/dist/mcp/observe.js.map +1 -0
- package/dist/mcp/shared.d.ts +49 -0
- package/dist/mcp/shared.js +56 -0
- package/dist/mcp/shared.js.map +1 -0
- package/dist/mcp/tasks.d.ts +15 -0
- package/dist/mcp/tasks.js +46 -0
- package/dist/mcp/tasks.js.map +1 -0
- package/dist/mods.js +6 -4
- package/dist/mods.js.map +1 -1
- package/dist/mojang.d.ts +5 -1
- package/dist/mojang.js.map +1 -1
- package/dist/names.js +30 -8
- package/dist/names.js.map +1 -1
- package/dist/net.js +25 -19
- package/dist/net.js.map +1 -1
- package/dist/paper.d.ts +48 -0
- package/dist/paper.js +215 -0
- package/dist/paper.js.map +1 -0
- package/dist/probe-server.d.ts +14 -4
- package/dist/probe-server.js +11 -10
- package/dist/probe-server.js.map +1 -1
- package/dist/repl.d.ts +6 -0
- package/dist/repl.js +207 -0
- package/dist/repl.js.map +1 -0
- package/dist/stage.d.ts +6 -0
- package/dist/stage.js +19 -0
- package/dist/stage.js.map +1 -0
- package/dist/types.d.ts +139 -5
- package/dist/types.js +12 -1
- package/dist/types.js.map +1 -1
- package/dist/zip.js.map +1 -1
- package/package.json +11 -3
- package/vendor/calcite-probe.jar +0 -0
package/dist/probe-server.js
CHANGED
|
@@ -16,8 +16,6 @@ export class ProbeError extends Error {
|
|
|
16
16
|
/**
|
|
17
17
|
* TCP endpoint (127.0.0.1, random port) the in-game probe connects to. Authenticated with a random token;
|
|
18
18
|
* JSON objects separated by newlines.
|
|
19
|
-
*
|
|
20
|
-
* Events: 'connected', 'disconnected', 'event' (an extension event: {name, data, time}).
|
|
21
19
|
*/
|
|
22
20
|
export class ProbeServer extends EventEmitter {
|
|
23
21
|
token = randomBytes(24).toString('hex');
|
|
@@ -27,12 +25,13 @@ export class ProbeServer extends EventEmitter {
|
|
|
27
25
|
pending = new Map();
|
|
28
26
|
port = 0;
|
|
29
27
|
async listen() {
|
|
30
|
-
|
|
28
|
+
const server = createServer((socket) => this.accept(socket));
|
|
29
|
+
this.server = server;
|
|
31
30
|
await new Promise((resolve, reject) => {
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
server.once('error', reject);
|
|
32
|
+
server.listen(0, '127.0.0.1', () => resolve());
|
|
34
33
|
});
|
|
35
|
-
const address =
|
|
34
|
+
const address = server.address();
|
|
36
35
|
if (!address || typeof address === 'string')
|
|
37
36
|
throw new Error('Probe server has no TCP address');
|
|
38
37
|
this.port = address.port;
|
|
@@ -72,7 +71,7 @@ export class ProbeServer extends EventEmitter {
|
|
|
72
71
|
this.socket?.destroy();
|
|
73
72
|
this.socket = socket;
|
|
74
73
|
log.debug(`probe connected (java ${String(msg.java)})`);
|
|
75
|
-
this.emit('connected'
|
|
74
|
+
this.emit('connected');
|
|
76
75
|
return;
|
|
77
76
|
}
|
|
78
77
|
if (msg.type === 'event') {
|
|
@@ -101,7 +100,7 @@ export class ProbeServer extends EventEmitter {
|
|
|
101
100
|
if (msg.ok)
|
|
102
101
|
pending.resolve(msg.result);
|
|
103
102
|
else
|
|
104
|
-
pending.reject(new ProbeError(
|
|
103
|
+
pending.reject(new ProbeError(typeof msg.code === 'string' ? msg.code : 'error', typeof msg.error === 'string' ? msg.error : 'probe error'));
|
|
105
104
|
}
|
|
106
105
|
failAll(err) {
|
|
107
106
|
for (const [id, p] of this.pending) {
|
|
@@ -121,7 +120,7 @@ export class ProbeServer extends EventEmitter {
|
|
|
121
120
|
this.pending.delete(id);
|
|
122
121
|
reject(new ProbeError('timeout', `Probe request "${op}" timed out after ${timeoutMs}ms`));
|
|
123
122
|
}, timeoutMs);
|
|
124
|
-
this.pending.set(id, { resolve: resolve, reject, timer });
|
|
123
|
+
this.pending.set(id, { resolve: (value) => resolve(value), reject, timer });
|
|
125
124
|
socket.write(JSON.stringify({ id, op, args }) + '\n');
|
|
126
125
|
});
|
|
127
126
|
}
|
|
@@ -129,8 +128,10 @@ export class ProbeServer extends EventEmitter {
|
|
|
129
128
|
this.failAll(new ProbeError('closed', 'Probe server closed'));
|
|
130
129
|
this.socket?.destroy();
|
|
131
130
|
this.socket = null;
|
|
132
|
-
|
|
131
|
+
const server = this.server;
|
|
133
132
|
this.server = null;
|
|
133
|
+
if (server)
|
|
134
|
+
await new Promise((resolve) => server.close(() => resolve()));
|
|
134
135
|
}
|
|
135
136
|
}
|
|
136
137
|
//# sourceMappingURL=probe-server.js.map
|
package/dist/probe-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probe-server.js","sourceRoot":"","sources":["../src/probe-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAA4B,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAE5B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC,MAAM,OAAO,UAAW,SAAQ,KAAK;IAExB;IADX,YACW,IAAY,EACrB,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,SAAI,GAAJ,IAAI,CAAQ;QAIrB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"probe-server.js","sourceRoot":"","sources":["../src/probe-server.ts"],"names":[],"mappings":"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"}
|
package/dist/repl.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type Client, type Surroundings } from './client.js';
|
|
2
|
+
export declare function formatSurroundings(s: Surroundings): string;
|
|
3
|
+
/** Runs one console line: chat, a /command, or a :command. Returns the text to print, if any. */
|
|
4
|
+
export declare function execute(client: Client, line: string): Promise<string | undefined>;
|
|
5
|
+
/** Reads console lines until ":quit" or end of input, running each against the client. */
|
|
6
|
+
export declare function runRepl(client: Client): Promise<void>;
|
package/dist/repl.js
ADDED
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { writeFile } from 'node:fs/promises';
|
|
2
|
+
import { createInterface } from 'node:readline';
|
|
3
|
+
import { CalciteError } from './client.js';
|
|
4
|
+
const usage = (name) => new CalciteError('bad_request', `usage: :${name} ${lookup(name)?.args ?? ''}`);
|
|
5
|
+
/** Argument {@code index} as a number; fails with the command's usage when it is missing or not a number. */
|
|
6
|
+
function num(args, index, name) {
|
|
7
|
+
const value = Number(args[index] ?? NaN);
|
|
8
|
+
if (!Number.isFinite(value))
|
|
9
|
+
throw usage(name);
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
/** Arguments {@code from} to {@code from + 2} as a block position. */
|
|
13
|
+
function point(args, name, from = 0) {
|
|
14
|
+
return { x: num(args, from, name), y: num(args, from + 1, name), z: num(args, from + 2, name) };
|
|
15
|
+
}
|
|
16
|
+
const optionalNumber = (value) => (value === undefined ? undefined : Number(value));
|
|
17
|
+
export function formatSurroundings(s) {
|
|
18
|
+
return [
|
|
19
|
+
`${s.x.toFixed(1)} ${s.y.toFixed(1)} ${s.z.toFixed(1)} facing ${s.facing} in ${s.biome ?? '?'} (${s.dimension ?? '?'}), time ${s.timeOfDay ?? '?'}`,
|
|
20
|
+
`standing on ${s.standingOn ?? '?'}${s.in ? `, in ${s.in}` : ''}`,
|
|
21
|
+
...s.map.map((row) => ` ${row}`),
|
|
22
|
+
` ${s.legend}`,
|
|
23
|
+
...s.blocks.map((b) => `${String(b.count).padStart(5)} ${b.id} nearest ${b.nearest.join(' ')}`),
|
|
24
|
+
...s.entities.map((e) => `entity ${e.id} ${e.type}${e.name ? ` "${e.name}"` : ''} at ${e.distance}m`),
|
|
25
|
+
].join('\n');
|
|
26
|
+
}
|
|
27
|
+
const COMMANDS = {
|
|
28
|
+
state: { help: 'game state', run: (c) => c.state() },
|
|
29
|
+
ents: {
|
|
30
|
+
args: '[radius]',
|
|
31
|
+
help: 'entities nearby',
|
|
32
|
+
run: async (c, [radius]) => (await c.entities({ radius: optionalNumber(radius) ?? 32 }))
|
|
33
|
+
.map((e) => `${e.id}\t${e.type}\t${e.name ?? ''}${e.customName ? ` (${e.customName})` : ''}\t${e.x?.toFixed(1)} ${e.y?.toFixed(1)} ${e.z?.toFixed(1)}`)
|
|
34
|
+
.join('\n'),
|
|
35
|
+
},
|
|
36
|
+
around: {
|
|
37
|
+
args: '[radius]',
|
|
38
|
+
help: 'map of the area, nearby blocks and entities',
|
|
39
|
+
run: async (c, [radius]) => formatSurroundings(await c.surroundings({ radius: optionalNumber(radius) })),
|
|
40
|
+
},
|
|
41
|
+
find: {
|
|
42
|
+
args: '<block> [radius]',
|
|
43
|
+
help: 'find blocks by id or pattern (*_ore)',
|
|
44
|
+
run: (c, [blocks, radius]) => {
|
|
45
|
+
if (!blocks)
|
|
46
|
+
throw usage('find');
|
|
47
|
+
return c.findBlocks({ blocks, radius: optionalNumber(radius) });
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
shot: {
|
|
51
|
+
args: '[file]',
|
|
52
|
+
help: 'save a screenshot',
|
|
53
|
+
run: async (c, [file = `calcite-${Date.now()}.png`]) => {
|
|
54
|
+
const shot = await c.screenshot();
|
|
55
|
+
await writeFile(file, shot.png);
|
|
56
|
+
return `saved ${file} (${shot.png.length} bytes)`;
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
render: { args: 'on|off', help: 'continuous rendering', run: (c, [mode]) => c.setRender(mode === 'on') },
|
|
60
|
+
respawn: { help: 'respawn after death', run: (c) => c.respawn() },
|
|
61
|
+
look: {
|
|
62
|
+
args: '<yaw> <pitch>',
|
|
63
|
+
help: 'turn to a rotation',
|
|
64
|
+
run: (c, args) => c.look({ yaw: num(args, 0, 'look'), pitch: num(args, 1, 'look') }),
|
|
65
|
+
},
|
|
66
|
+
lookat: {
|
|
67
|
+
args: '<x> <y> <z>',
|
|
68
|
+
help: 'turn towards a point',
|
|
69
|
+
run: (c, args) => c.look(point(args, 'lookat')),
|
|
70
|
+
},
|
|
71
|
+
goto: {
|
|
72
|
+
args: '<x> <z> [y]',
|
|
73
|
+
help: 'walk there along a path',
|
|
74
|
+
run: (c, args) => c.walkTo(num(args, 0, 'goto'), num(args, 1, 'goto'), { y: optionalNumber(args[2]) }),
|
|
75
|
+
},
|
|
76
|
+
move: {
|
|
77
|
+
args: '<forward,jump,...> [ticks]',
|
|
78
|
+
help: 'hold movement keys',
|
|
79
|
+
run: (c, [keys = '', ticks]) => c.move(Object.fromEntries(keys
|
|
80
|
+
.split(',')
|
|
81
|
+
.filter(Boolean)
|
|
82
|
+
.map((k) => [k, true])), { ticks: optionalNumber(ticks) ?? 20 }),
|
|
83
|
+
},
|
|
84
|
+
stop: { help: 'release keys, cancel the running action', run: (c) => c.stopActions() },
|
|
85
|
+
task: { help: 'the running action', run: (c) => c.task() },
|
|
86
|
+
attack: { args: '[entity id]', help: 'left click', run: (c, [id]) => c.attack(optionalNumber(id)) },
|
|
87
|
+
use: {
|
|
88
|
+
args: '[entity id | x y z] [hold ticks]',
|
|
89
|
+
help: 'right click',
|
|
90
|
+
run: (c, args) => args.length >= 3
|
|
91
|
+
? c.use({ block: point(args, 'use'), holdTicks: optionalNumber(args[3]) })
|
|
92
|
+
: c.use({ entityId: optionalNumber(args[0]), holdTicks: optionalNumber(args[1]) }),
|
|
93
|
+
},
|
|
94
|
+
dig: {
|
|
95
|
+
args: '<x> <y> <z>',
|
|
96
|
+
help: 'mine a block',
|
|
97
|
+
run: (c, args) => c.dig(point(args, 'dig')),
|
|
98
|
+
},
|
|
99
|
+
block: {
|
|
100
|
+
args: '<x> <y> <z>',
|
|
101
|
+
help: 'block at a position',
|
|
102
|
+
run: (c, args) => c.block(point(args, 'block')),
|
|
103
|
+
},
|
|
104
|
+
target: { help: 'what the crosshair points at', run: (c) => c.target() },
|
|
105
|
+
inv: { help: 'inventory', run: (c) => c.inventory() },
|
|
106
|
+
slot: { args: '<0-8>', help: 'select a hotbar slot', run: (c, args) => c.selectSlot(num(args, 0, 'slot')) },
|
|
107
|
+
craft: {
|
|
108
|
+
args: '<item> [count]',
|
|
109
|
+
help: 'craft from the inventory',
|
|
110
|
+
run: (c, [item, count]) => {
|
|
111
|
+
if (!item)
|
|
112
|
+
throw usage('craft');
|
|
113
|
+
return c.craft(item, { count: optionalNumber(count) });
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
container: { help: 'the open container', run: (c) => c.container() },
|
|
117
|
+
click: {
|
|
118
|
+
args: '<slot> [button] [mode]',
|
|
119
|
+
help: 'click a container slot',
|
|
120
|
+
run: (c, args) => c.click(num(args, 0, 'click'), { button: optionalNumber(args[1]), mode: args[2] }),
|
|
121
|
+
},
|
|
122
|
+
transfer: {
|
|
123
|
+
args: '<item> [count] [inventory]',
|
|
124
|
+
help: 'move items into the open container (or back into the inventory)',
|
|
125
|
+
run: (c, [item, ...rest]) => {
|
|
126
|
+
if (!item)
|
|
127
|
+
throw usage('transfer');
|
|
128
|
+
const count = rest.map(Number).find(Number.isFinite);
|
|
129
|
+
return c.transfer(item, { count, to: rest.includes('inventory') ? 'inventory' : 'container' });
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
close: { help: 'close the container', run: (c) => c.closeContainer() },
|
|
133
|
+
drop: { args: '[all]', help: 'drop the held item', run: (c, [all]) => c.drop({ all: all === 'all' }) },
|
|
134
|
+
events: { args: '[name regex]', help: 'recent game events', run: (c, [name]) => c.eventsSince({ name, limit: 20 }) },
|
|
135
|
+
ext: {
|
|
136
|
+
help: 'extension commands',
|
|
137
|
+
run: async (c) => {
|
|
138
|
+
const { commands, extensions } = await c.extensions();
|
|
139
|
+
return [
|
|
140
|
+
...extensions.map((x) => `jar ${x.jar}: ${x.error ? `failed: ${x.error}` : x.ids.join(', ')}`),
|
|
141
|
+
...commands.map((cmd) => `${cmd.name}\t${cmd.description ?? ''}${cmd.schema ? `\targs ${JSON.stringify(cmd.schema)}` : ''}`),
|
|
142
|
+
...(commands.length ? [] : ['no extension commands']),
|
|
143
|
+
].join('\n');
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
call: {
|
|
147
|
+
args: '<name> [json args]',
|
|
148
|
+
help: 'call an extension command',
|
|
149
|
+
run: (c, [name], rest) => {
|
|
150
|
+
if (!name)
|
|
151
|
+
throw usage('call');
|
|
152
|
+
const json = rest.slice(name.length).trim();
|
|
153
|
+
return c.call(name, json ? JSON.parse(json) : {});
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
help: { help: 'this list', run: () => help() },
|
|
157
|
+
};
|
|
158
|
+
function lookup(name) {
|
|
159
|
+
return Object.hasOwn(COMMANDS, name) ? COMMANDS[name] : undefined;
|
|
160
|
+
}
|
|
161
|
+
function help() {
|
|
162
|
+
const lines = Object.entries(COMMANDS).map(([name, c]) => [`:${name} ${c.args ?? ''}`, c.help]);
|
|
163
|
+
lines.push([':quit', 'stop the client']);
|
|
164
|
+
const width = Math.max(...lines.map(([u]) => u.length));
|
|
165
|
+
return ['Type chat, /command or:', ...lines.map(([u, h]) => ` ${u.padEnd(width)} ${h}`)].join('\n');
|
|
166
|
+
}
|
|
167
|
+
/** Runs one console line: chat, a /command, or a :command. Returns the text to print, if any. */
|
|
168
|
+
export async function execute(client, line) {
|
|
169
|
+
if (line.startsWith('/')) {
|
|
170
|
+
await client.command(line.slice(1));
|
|
171
|
+
return undefined;
|
|
172
|
+
}
|
|
173
|
+
if (!line.startsWith(':')) {
|
|
174
|
+
await client.chat(line);
|
|
175
|
+
return undefined;
|
|
176
|
+
}
|
|
177
|
+
const [name = '', ...args] = line.slice(1).split(/\s+/);
|
|
178
|
+
const command = lookup(name);
|
|
179
|
+
if (!command)
|
|
180
|
+
throw new CalciteError('unknown_command', `unknown command :${name} (:help lists them)`);
|
|
181
|
+
const result = await command.run(client, args, line.slice(1 + name.length).trim());
|
|
182
|
+
if (result === undefined || typeof result === 'string')
|
|
183
|
+
return result;
|
|
184
|
+
return JSON.stringify(result, null, 2);
|
|
185
|
+
}
|
|
186
|
+
/** Reads console lines until ":quit" or end of input, running each against the client. */
|
|
187
|
+
export async function runRepl(client) {
|
|
188
|
+
process.stderr.write(`Ready. ${help()}\n`);
|
|
189
|
+
const rl = createInterface({ input: process.stdin });
|
|
190
|
+
for await (const raw of rl) {
|
|
191
|
+
const line = raw.trim();
|
|
192
|
+
if (line === ':quit' || line === ':q')
|
|
193
|
+
break;
|
|
194
|
+
if (!line)
|
|
195
|
+
continue;
|
|
196
|
+
try {
|
|
197
|
+
const output = await execute(client, line);
|
|
198
|
+
if (output)
|
|
199
|
+
process.stdout.write(`${output}\n`);
|
|
200
|
+
}
|
|
201
|
+
catch (err) {
|
|
202
|
+
process.stderr.write(`error: ${err.message}\n`);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
rl.close();
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=repl.js.map
|
package/dist/repl.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
|
package/dist/stage.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { GameState } from './types.js';
|
|
2
|
+
/** Game log lines worth reporting when mod loading failed. */
|
|
3
|
+
export declare const MOD_ERROR_LINE: RegExp;
|
|
4
|
+
/** Where the game is, as far as starting and staying connected is concerned. */
|
|
5
|
+
export type GameStage = 'mod_error' | 'playing' | 'title' | 'disconnected' | 'loading';
|
|
6
|
+
export declare function gameStage(state: GameState): GameStage;
|
package/dist/stage.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** Screens shown while joining or changing dimension; the player is not playable yet. */
|
|
2
|
+
const LOADING_SCREEN = /LevelLoading|ReceivingLevel|ProgressScreen|ConnectScreen|GenericMessage|DownloadingTerrain/;
|
|
3
|
+
/** Screens Forge and NeoForge show when mods fail to load. */
|
|
4
|
+
const MOD_ERROR_SCREEN = /LoadingErrorScreen|ModLoadingError/;
|
|
5
|
+
/** Game log lines worth reporting when mod loading failed. */
|
|
6
|
+
export const MOD_ERROR_LINE = /\/(ERROR|FATAL)\]|Exception|[Mm]issing|requires/;
|
|
7
|
+
export function gameStage(state) {
|
|
8
|
+
const screen = state.screen ?? '';
|
|
9
|
+
if (MOD_ERROR_SCREEN.test(screen))
|
|
10
|
+
return 'mod_error';
|
|
11
|
+
if (state.inGame && !state.loading && !LOADING_SCREEN.test(screen))
|
|
12
|
+
return 'playing';
|
|
13
|
+
if (screen === 'TitleScreen' && !state.loading)
|
|
14
|
+
return 'title';
|
|
15
|
+
if (screen === 'DisconnectedScreen')
|
|
16
|
+
return 'disconnected';
|
|
17
|
+
return 'loading';
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=stage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stage.js","sourceRoot":"","sources":["../src/stage.ts"],"names":[],"mappings":"AAEA,yFAAyF;AACzF,MAAM,cAAc,GAAG,4FAA4F,CAAC;AAEpH,8DAA8D;AAC9D,MAAM,gBAAgB,GAAG,oCAAoC,CAAC;AAE9D,8DAA8D;AAC9D,MAAM,CAAC,MAAM,cAAc,GAAG,iDAAiD,CAAC;AAKhF,MAAM,UAAU,SAAS,CAAC,KAAgB;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;IAClC,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,WAAW,CAAC;IACtD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IACrF,IAAI,MAAM,KAAK,aAAa,IAAI,CAAC,KAAK,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC;IAC/D,IAAI,MAAM,KAAK,oBAAoB;QAAE,OAAO,cAAc,CAAC;IAC3D,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -33,8 +33,10 @@ export interface ClientOptions {
|
|
|
33
33
|
* They add commands ({@link ExtensionCommand}) and events to the bot; see the README.
|
|
34
34
|
*/
|
|
35
35
|
extensions?: string[];
|
|
36
|
-
/** Server to join ("host[:port]"). Without a server the client stays on the title screen. */
|
|
36
|
+
/** Server to join ("host[:port]"). Without a server or a world the client stays on the title screen. */
|
|
37
37
|
server?: string | ServerAddress;
|
|
38
|
+
/** Singleplayer world to play in instead of a server: a save name, created when missing. */
|
|
39
|
+
world?: string | WorldOptions;
|
|
38
40
|
/** Account: offline (any username, for online-mode=false servers) or a stored Microsoft account. */
|
|
39
41
|
account?: Account;
|
|
40
42
|
/**
|
|
@@ -85,13 +87,18 @@ export interface ExtensionInfo {
|
|
|
85
87
|
/** Why the jar could not be loaded. */
|
|
86
88
|
error?: string;
|
|
87
89
|
}
|
|
88
|
-
/**
|
|
89
|
-
|
|
90
|
+
/**
|
|
91
|
+
* An event from the game: built-in ones ("world.join", "player.hurt", "inventory.change", ... — see the README)
|
|
92
|
+
* and those sent by extensions and mods.
|
|
93
|
+
*/
|
|
94
|
+
export interface GameEvent {
|
|
90
95
|
seq: number;
|
|
91
96
|
time: number;
|
|
92
97
|
name: string;
|
|
93
98
|
data: unknown;
|
|
94
99
|
}
|
|
100
|
+
/** @deprecated Renamed to {@link GameEvent}. */
|
|
101
|
+
export type ExtensionEvent = GameEvent;
|
|
95
102
|
export interface ChatLine {
|
|
96
103
|
seq: number;
|
|
97
104
|
time: number;
|
|
@@ -128,15 +135,32 @@ export interface BlockPosition {
|
|
|
128
135
|
}
|
|
129
136
|
export type BlockFace = 'down' | 'up' | 'north' | 'south' | 'west' | 'east';
|
|
130
137
|
export type ClickMode = 'pickup' | 'quick_move' | 'swap' | 'clone' | 'throw' | 'quick_craft' | 'pickup_all';
|
|
138
|
+
export interface WalkOptions {
|
|
139
|
+
/** Target height; without it any height at x/z counts. */
|
|
140
|
+
y?: number;
|
|
141
|
+
/** Stop within this many blocks (default 0.5). */
|
|
142
|
+
range?: number;
|
|
143
|
+
sprint?: boolean;
|
|
144
|
+
/** Walk in a straight line instead of planning a path. */
|
|
145
|
+
direct?: boolean;
|
|
146
|
+
/** Stop with reason "damaged" when the player is hurt. */
|
|
147
|
+
stopOnDamage?: boolean;
|
|
148
|
+
timeoutMs?: number;
|
|
149
|
+
}
|
|
131
150
|
export interface WalkResult {
|
|
132
151
|
arrived: boolean;
|
|
133
|
-
/**
|
|
152
|
+
/**
|
|
153
|
+
* Why it stopped early: "no_path" (unreachable through the loaded terrain; the player still gets as close as
|
|
154
|
+
* it can), "stuck", "off_path" (pushed away and re-planning failed), "timeout" or "damaged".
|
|
155
|
+
*/
|
|
134
156
|
reason?: string;
|
|
135
|
-
/** Remaining
|
|
157
|
+
/** Remaining distance. */
|
|
136
158
|
distance: number;
|
|
137
159
|
x: number;
|
|
138
160
|
y: number;
|
|
139
161
|
z: number;
|
|
162
|
+
/** How often the path was planned again after the player was pushed off it. */
|
|
163
|
+
replans?: number;
|
|
140
164
|
}
|
|
141
165
|
export interface DigResult {
|
|
142
166
|
broken: boolean;
|
|
@@ -144,6 +168,86 @@ export interface DigResult {
|
|
|
144
168
|
block?: string;
|
|
145
169
|
ticks?: number;
|
|
146
170
|
}
|
|
171
|
+
export interface BlockMatch extends BlockPosition {
|
|
172
|
+
id: string;
|
|
173
|
+
/** Distance from the player's feet. */
|
|
174
|
+
distance: number;
|
|
175
|
+
}
|
|
176
|
+
export interface BlockSearch {
|
|
177
|
+
/** Block ids or patterns: "oak_log", "minecraft:*_ore", "*planks" ("minecraft:" is implied). */
|
|
178
|
+
blocks: string | string[];
|
|
179
|
+
/** Search radius around the player in blocks (default 32, at most 128). */
|
|
180
|
+
radius?: number;
|
|
181
|
+
/** Most matches to return, nearest first (default 16). */
|
|
182
|
+
limit?: number;
|
|
183
|
+
}
|
|
184
|
+
export interface BlockSearchResult {
|
|
185
|
+
count: number;
|
|
186
|
+
/** The search ran out of time before covering the whole radius. */
|
|
187
|
+
truncated?: boolean;
|
|
188
|
+
blocks: BlockMatch[];
|
|
189
|
+
}
|
|
190
|
+
export interface NearbyEntity {
|
|
191
|
+
id: number;
|
|
192
|
+
type: string;
|
|
193
|
+
name?: string;
|
|
194
|
+
/** Position relative to the player: [dx, dy, dz]. */
|
|
195
|
+
offset: [number, number, number];
|
|
196
|
+
distance: number;
|
|
197
|
+
health?: number;
|
|
198
|
+
}
|
|
199
|
+
/** A compact description of the player's surroundings, sized for a language model. */
|
|
200
|
+
export interface Surroundings {
|
|
201
|
+
x: number;
|
|
202
|
+
y: number;
|
|
203
|
+
z: number;
|
|
204
|
+
facing: string;
|
|
205
|
+
dimension?: string;
|
|
206
|
+
biome?: string;
|
|
207
|
+
/** 0-23999; 0 is sunrise, 6000 noon, 13000 night. */
|
|
208
|
+
timeOfDay?: number;
|
|
209
|
+
raining?: boolean;
|
|
210
|
+
thundering?: boolean;
|
|
211
|
+
/** The block under the player's feet. */
|
|
212
|
+
standingOn?: string;
|
|
213
|
+
/** The block the player stands in, when not air (water, tall grass, ...). */
|
|
214
|
+
in?: string;
|
|
215
|
+
/** Top-down map rows from north to south, west to east; the player is '@'. See {@link legend}. */
|
|
216
|
+
map: string[];
|
|
217
|
+
/** World [x, z] of the map's first character. */
|
|
218
|
+
mapOrigin: [number, number];
|
|
219
|
+
/** What the map characters mean. */
|
|
220
|
+
legend: string;
|
|
221
|
+
/** Most common blocks around the player with the nearest position of each. */
|
|
222
|
+
blocks: {
|
|
223
|
+
id: string;
|
|
224
|
+
count: number;
|
|
225
|
+
nearest: [number, number, number];
|
|
226
|
+
}[];
|
|
227
|
+
entities: NearbyEntity[];
|
|
228
|
+
}
|
|
229
|
+
export interface CraftResult {
|
|
230
|
+
item: string;
|
|
231
|
+
/** Items made. */
|
|
232
|
+
crafted: number;
|
|
233
|
+
/** Items asked for. */
|
|
234
|
+
count: number;
|
|
235
|
+
/** Set when fewer than {@code count} were crafted: "missing_ingredients", "inventory_full", "timeout", ... */
|
|
236
|
+
reason?: string;
|
|
237
|
+
}
|
|
238
|
+
export interface TransferResult {
|
|
239
|
+
item: string;
|
|
240
|
+
moved: number;
|
|
241
|
+
container: ContainerInfo;
|
|
242
|
+
}
|
|
243
|
+
/** The action that is running (walk_to, dig, craft) and its progress. */
|
|
244
|
+
export interface TaskStatus {
|
|
245
|
+
running: boolean;
|
|
246
|
+
/** "walk_to", "dig" or "craft". */
|
|
247
|
+
name?: string;
|
|
248
|
+
ticks?: number;
|
|
249
|
+
[progress: string]: unknown;
|
|
250
|
+
}
|
|
147
251
|
export interface HitTarget {
|
|
148
252
|
type: 'block' | 'entity' | 'miss';
|
|
149
253
|
x?: number;
|
|
@@ -194,6 +298,12 @@ export interface ContainerInfo {
|
|
|
194
298
|
})[];
|
|
195
299
|
/** Stack held by the cursor. */
|
|
196
300
|
carried?: ItemInfo;
|
|
301
|
+
/** Smelting state of a furnace, smoker or blast furnace; progress and fuel are 0-1. */
|
|
302
|
+
furnace?: {
|
|
303
|
+
lit: boolean;
|
|
304
|
+
progress?: number;
|
|
305
|
+
fuel?: number;
|
|
306
|
+
};
|
|
197
307
|
}
|
|
198
308
|
export interface GameState {
|
|
199
309
|
ready: boolean;
|
|
@@ -247,6 +357,7 @@ export interface ClientStatus {
|
|
|
247
357
|
headless: boolean;
|
|
248
358
|
account: Account;
|
|
249
359
|
server?: ServerAddress;
|
|
360
|
+
world?: WorldOptions;
|
|
250
361
|
gameDir: string;
|
|
251
362
|
pid?: number;
|
|
252
363
|
java?: string;
|
|
@@ -256,10 +367,33 @@ export interface ClientStatus {
|
|
|
256
367
|
probeConnected: boolean;
|
|
257
368
|
game?: GameState;
|
|
258
369
|
}
|
|
370
|
+
/** Events emitted by a client, with their listener arguments. */
|
|
371
|
+
export interface ClientEvents {
|
|
372
|
+
phase: [phase: Phase];
|
|
373
|
+
log: [line: LogLine];
|
|
374
|
+
chat: [line: ChatLine];
|
|
375
|
+
state: [state: GameState];
|
|
376
|
+
/** A built-in game event or one sent by an extension. */
|
|
377
|
+
event: [event: GameEvent];
|
|
378
|
+
/** The game process exited (also before a reconnect). */
|
|
379
|
+
exit: [code: number | null];
|
|
380
|
+
error: [error: Error];
|
|
381
|
+
}
|
|
259
382
|
export declare class CalciteError extends Error {
|
|
260
383
|
readonly code: string;
|
|
261
384
|
constructor(code: string, message: string);
|
|
262
385
|
}
|
|
386
|
+
export interface WorldOptions {
|
|
387
|
+
/** Save folder name (letters, digits, - _ and spaces). */
|
|
388
|
+
name: string;
|
|
389
|
+
/** Create the world when it does not exist (default true). */
|
|
390
|
+
create?: boolean;
|
|
391
|
+
/** Game mode of a new world (default survival); new worlds always allow commands. */
|
|
392
|
+
gameMode?: 'survival' | 'creative' | 'hardcore';
|
|
393
|
+
/** Seed of a new world. */
|
|
394
|
+
seed?: string;
|
|
395
|
+
}
|
|
396
|
+
export declare function parseWorld(world: string | WorldOptions): WorldOptions;
|
|
263
397
|
export declare function parseServer(server: string | ServerAddress): ServerAddress;
|
|
264
398
|
/** Offline username derived from a client name (3-16 chars of [A-Za-z0-9_]). */
|
|
265
399
|
export declare function defaultUsername(name: string): string;
|
package/dist/types.js
CHANGED
|
@@ -6,6 +6,14 @@ export class CalciteError extends Error {
|
|
|
6
6
|
this.name = 'CalciteError';
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
|
+
const WORLD_NAME_RE = /^[\p{L}\p{N}_-](?:[\p{L}\p{N} _-]{0,62}[\p{L}\p{N}_-])?$/u;
|
|
10
|
+
export function parseWorld(world) {
|
|
11
|
+
const w = typeof world === 'string' ? { name: world } : world;
|
|
12
|
+
if (!WORLD_NAME_RE.test(w.name)) {
|
|
13
|
+
throw new CalciteError('bad_world', `Invalid world name "${w.name}" (allowed: letters, digits, - _ and inner spaces, up to 64)`);
|
|
14
|
+
}
|
|
15
|
+
return { create: true, gameMode: 'survival', ...w };
|
|
16
|
+
}
|
|
9
17
|
export function parseServer(server) {
|
|
10
18
|
if (typeof server !== 'string')
|
|
11
19
|
return { host: server.host, port: server.port || 25565 };
|
|
@@ -20,6 +28,9 @@ export function parseServer(server) {
|
|
|
20
28
|
}
|
|
21
29
|
/** Offline username derived from a client name (3-16 chars of [A-Za-z0-9_]). */
|
|
22
30
|
export function defaultUsername(name) {
|
|
23
|
-
return name
|
|
31
|
+
return name
|
|
32
|
+
.replace(/[^A-Za-z0-9_]/g, '_')
|
|
33
|
+
.slice(0, 16)
|
|
34
|
+
.padEnd(3, '_');
|
|
24
35
|
}
|
|
25
36
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAyZA,MAAM,OAAO,YAAa,SAAQ,KAAK;IAE1B;IADX,YACW,IAAY,EACrB,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,SAAI,GAAJ,IAAI,CAAQ;QAIrB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAaD,MAAM,aAAa,GAAG,2DAA2D,CAAC;AAElF,MAAM,UAAU,UAAU,CAAC,KAA4B;IACrD,MAAM,CAAC,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,YAAY,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC,IAAI,8DAA8D,CAAC,CAAC;IACnI,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAA8B;IACxD,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;IACzF,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IACxB,MAAM,EAAE,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IACpE,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACxG,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAClC,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI;SACR,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACZ,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACpB,CAAC"}
|
package/dist/zip.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zip.js","sourceRoot":"","sources":["../src/zip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAS3C,KAAK,UAAU,gBAAgB,CAAC,MAAkB,EAAE,IAAY;IAC9D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,IAAI,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAC9C,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAY,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"zip.js","sourceRoot":"","sources":["../src/zip.ts"],"names":[],"mappings":"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"}
|