@shirokasoke/webapi-sdk 2.9.0-beta2-0.11-pre

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.
Files changed (95) hide show
  1. package/dist/client.d.ts +576 -0
  2. package/dist/client.js +668 -0
  3. package/dist/esm/client.js +663 -0
  4. package/dist/esm/index.js +3 -0
  5. package/dist/esm/package.json +1 -0
  6. package/dist/esm/test.js +6 -0
  7. package/dist/esm/types/ae2.js +1 -0
  8. package/dist/esm/types/block.js +1 -0
  9. package/dist/esm/types/chunk.js +1 -0
  10. package/dist/esm/types/common.js +1 -0
  11. package/dist/esm/types/entity.js +1 -0
  12. package/dist/esm/types/fluid.js +1 -0
  13. package/dist/esm/types/fmp.js +1 -0
  14. package/dist/esm/types/gt5.js +1 -0
  15. package/dist/esm/types/index.js +13 -0
  16. package/dist/esm/types/item.js +1 -0
  17. package/dist/esm/types/rawInfo.js +1 -0
  18. package/dist/esm/types/recipe.js +1 -0
  19. package/dist/esm/types/threeD.js +1 -0
  20. package/dist/esm/types/world.js +1 -0
  21. package/dist/esm/validators/ae2.js +163 -0
  22. package/dist/esm/validators/block.js +85 -0
  23. package/dist/esm/validators/chunk.js +58 -0
  24. package/dist/esm/validators/common.js +28 -0
  25. package/dist/esm/validators/entity.js +117 -0
  26. package/dist/esm/validators/fluid.js +24 -0
  27. package/dist/esm/validators/fmp.js +34 -0
  28. package/dist/esm/validators/gt5.js +186 -0
  29. package/dist/esm/validators/index.js +13 -0
  30. package/dist/esm/validators/item.js +31 -0
  31. package/dist/esm/validators/rawInfo.js +25 -0
  32. package/dist/esm/validators/recipe.js +77 -0
  33. package/dist/esm/validators/threeD.js +34 -0
  34. package/dist/esm/validators/world.js +59 -0
  35. package/dist/index.d.ts +3 -0
  36. package/dist/index.js +22 -0
  37. package/dist/test.d.ts +1 -0
  38. package/dist/test.js +8 -0
  39. package/dist/types/ae2.d.ts +162 -0
  40. package/dist/types/ae2.js +2 -0
  41. package/dist/types/block.d.ts +87 -0
  42. package/dist/types/block.js +2 -0
  43. package/dist/types/chunk.d.ts +57 -0
  44. package/dist/types/chunk.js +2 -0
  45. package/dist/types/common.d.ts +27 -0
  46. package/dist/types/common.js +2 -0
  47. package/dist/types/entity.d.ts +114 -0
  48. package/dist/types/entity.js +2 -0
  49. package/dist/types/fluid.d.ts +23 -0
  50. package/dist/types/fluid.js +2 -0
  51. package/dist/types/fmp.d.ts +33 -0
  52. package/dist/types/fmp.js +2 -0
  53. package/dist/types/gt5.d.ts +210 -0
  54. package/dist/types/gt5.js +2 -0
  55. package/dist/types/index.d.ts +13 -0
  56. package/dist/types/index.js +29 -0
  57. package/dist/types/item.d.ts +38 -0
  58. package/dist/types/item.js +2 -0
  59. package/dist/types/rawInfo.d.ts +25 -0
  60. package/dist/types/rawInfo.js +2 -0
  61. package/dist/types/recipe.d.ts +114 -0
  62. package/dist/types/recipe.js +2 -0
  63. package/dist/types/threeD.d.ts +43 -0
  64. package/dist/types/threeD.js +2 -0
  65. package/dist/types/world.d.ts +58 -0
  66. package/dist/types/world.js +2 -0
  67. package/dist/validators/ae2.d.ts +63 -0
  68. package/dist/validators/ae2.js +169 -0
  69. package/dist/validators/block.d.ts +12 -0
  70. package/dist/validators/block.js +91 -0
  71. package/dist/validators/chunk.d.ts +9 -0
  72. package/dist/validators/chunk.js +64 -0
  73. package/dist/validators/common.d.ts +8 -0
  74. package/dist/validators/common.js +36 -0
  75. package/dist/validators/entity.d.ts +9 -0
  76. package/dist/validators/entity.js +123 -0
  77. package/dist/validators/fluid.d.ts +4 -0
  78. package/dist/validators/fluid.js +30 -0
  79. package/dist/validators/fmp.d.ts +4 -0
  80. package/dist/validators/fmp.js +40 -0
  81. package/dist/validators/gt5.d.ts +24 -0
  82. package/dist/validators/gt5.js +192 -0
  83. package/dist/validators/index.d.ts +13 -0
  84. package/dist/validators/index.js +29 -0
  85. package/dist/validators/item.d.ts +13 -0
  86. package/dist/validators/item.js +37 -0
  87. package/dist/validators/rawInfo.d.ts +6 -0
  88. package/dist/validators/rawInfo.js +31 -0
  89. package/dist/validators/recipe.d.ts +30 -0
  90. package/dist/validators/recipe.js +83 -0
  91. package/dist/validators/threeD.d.ts +8 -0
  92. package/dist/validators/threeD.js +40 -0
  93. package/dist/validators/world.d.ts +5 -0
  94. package/dist/validators/world.js +65 -0
  95. package/package.json +49 -0
@@ -0,0 +1,576 @@
1
+ import type { AE2Pattern, AECPU, AECPUCancelBody, AECPUCancelResult, AECraftingTaskBody, AECraftingTaskResult, AEHitResult, AEItemDefinitions, AEItemsResult, AEMEInterface, AENode, BatchSetBlockJobResult, BatchSetBlockSubmitResult, BatchSetBlockTask, Block, BlockDetail, ChunkForceList, ChunkLoadResult, ChunkMapCell, ChunksByDimension, ChunkWithDimension, Coordinates, EntitiesByDimension, Entity, Fluid, FluidContainer, FMPPart, GT5BatchJobResult, GT5BatchMachineCoord, GT5BatchRerunResult, GT5BatchSubmitResult, GT5MachineInfo, GT5ScanJobResult, GT5ScanSubmitResult, Item, ItemDetail, LagAnalyzerData, ProfilerData, RootInfo, SetBlockBody, SetBlockResult, TPSInfo, WorldInfoData, CraftingRecipesResult, FurnaceRecipesResult, GTRecipesResult, GTRecipeMap, PlayerPrintResult, PrintSizeResult, WorldPrintJobResult, WorldPrintSubmitResult } from "./types";
2
+ export type FetchLike = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
3
+ export interface WebApiClientOptions {
4
+ baseUrl: string;
5
+ authToken?: string;
6
+ fetch?: FetchLike;
7
+ }
8
+ export declare class WebApiClient {
9
+ private baseUrl;
10
+ private authToken?;
11
+ private fetchImpl;
12
+ constructor(options: WebApiClientOptions);
13
+ private request;
14
+ /**
15
+ * SSE 订阅模板:统一处理鉴权头、响应校验、事件过滤与错误上报(基于 fetchEventSource,可携带
16
+ * Authorization 头,原生 EventSource 不支持)。服务端推送的 `error` 事件(纯文本消息)会转为
17
+ * {@link Error} 上报;连接建立后发生异常时同样上报并停止库内自动重连,由调用方决定是否重新订阅。
18
+ * @param url 完整订阅地址(含 query)
19
+ * @param eventName 业务事件名,其余事件将被忽略
20
+ * @param callback 业务数据回调
21
+ * @param errorCallback 出错回调,接收模板抛出或 `parse` 抛出的异常(如 {@link WebApiError})
22
+ * @param parse 解析事件的 data 文本为业务数据,抛出异常表示该帧无效
23
+ * @returns AbortController,调用 `abort()` 可停止订阅
24
+ */
25
+ private subscribeSse;
26
+ /**
27
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/RootHandler.java)
28
+ * @returns 使用 {@link RootInfoSchema} 验证
29
+ */
30
+ getRoot(): Promise<RootInfo>;
31
+ /**
32
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/TPSHandler.java)
33
+ * @returns 使用 `Joi.object().pattern(Joi.string(), {@link TPSInfoSchema})` 验证
34
+ */
35
+ getTPS(): Promise<Record<string, TPSInfo>>;
36
+ /**
37
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/ProfilerHandler.java)
38
+ * @returns 使用 {@link ProfilerDataSchema} 验证
39
+ */
40
+ getProfiler(): Promise<ProfilerData>;
41
+ /**
42
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/LagAnalyzerHandler.java)
43
+ * @returns 使用 {@link LagAnalyzerDataSchema} 验证
44
+ */
45
+ getLagAnalyzer(): Promise<LagAnalyzerData>;
46
+ /**
47
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/WorldInfoHandler.java)
48
+ * @returns 使用 `Joi.object().pattern(Joi.string(), {@link WorldInfoDataSchema})` 验证
49
+ */
50
+ getWorldInfo(): Promise<Record<string, WorldInfoData>>;
51
+ /**
52
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/block/BlocksHandler.java)
53
+ * @returns 使用 `Joi.array().items(`{@link BlockSchema}`)` 验证
54
+ */
55
+ getBlocks(): Promise<Block[]>;
56
+ /**
57
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/block/BlockHandler.java)
58
+ * @returns 使用 {@link BlockDetailSchema} 验证
59
+ */
60
+ getBlock(params: {
61
+ x: number;
62
+ y: number;
63
+ z: number;
64
+ dim?: number;
65
+ }): Promise<BlockDetail>;
66
+ /**
67
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/block/SetBlockHandler.java)
68
+ * @param body 使用 {@link SetBlockBodySchema} 验证
69
+ * @returns 使用 {@link SetBlockResultSchema} 验证
70
+ */
71
+ setBlock(params: {
72
+ x: number;
73
+ y: number;
74
+ z: number;
75
+ dim?: number;
76
+ }, body: SetBlockBody): Promise<SetBlockResult>;
77
+ /**
78
+ * 提交批量 setblock 任务到慢队列,异步执行。
79
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/block/BatchSetBlockHandler.java)
80
+ * @param tasks 使用 `Joi.array().items(`{@link BatchSetBlockTaskSchema} ) 验证
81
+ * @returns 使用 {@link BatchSetBlockSubmitResultSchema} 验证
82
+ */
83
+ batchSetBlock(tasks: BatchSetBlockTask[]): Promise<BatchSetBlockSubmitResult>;
84
+ /**
85
+ * 查询批量 setblock 任务执行结果。
86
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/block/BatchSetBlockHandler.java)
87
+ * @returns 使用 {@link BatchSetBlockJobResultSchema} 验证
88
+ */
89
+ getBatchSetBlockJob(params: {
90
+ id: string;
91
+ }): Promise<BatchSetBlockJobResult>;
92
+ /**
93
+ * 轮询等待批量 setblock 任务完成。
94
+ * @param jobId 任务 ID(由 batchSetBlock 返回)
95
+ * @param intervalMs 轮询间隔 (ms),默认 100
96
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/block/BatchSetBlockHandler.java)
97
+ * @returns 使用 {@link BatchSetBlockJobResultSchema} 验证
98
+ */
99
+ waitForBatchSetBlockJob(jobId: string, intervalMs?: number): Promise<BatchSetBlockJobResult>;
100
+ /**
101
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/block/FMPHandler.java)
102
+ * @returns 使用 `Joi.array().items(`{@link FMPPartSchema}`)` 验证
103
+ */
104
+ getBlockFMP(params: Coordinates): Promise<FMPPart[]>;
105
+ /**
106
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/block/BlockTileHandler.java)
107
+ * @returns 二进制数据,无 JSON Schema
108
+ */
109
+ getBlockTile(params: {
110
+ id?: number;
111
+ regName?: string;
112
+ meta?: number;
113
+ }): Promise<ArrayBuffer>;
114
+ /**
115
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/item/ItemsHandler.java)
116
+ * @returns 使用 `Joi.array().items(`{@link ItemSchema}`)` 验证
117
+ */
118
+ getItems(): Promise<Item[]>;
119
+ /**
120
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/item/ItemHandler.java)
121
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/item/ItemStaticHandler.java)
122
+ * @returns 使用 {@link ItemDetailSchema} 验证
123
+ */
124
+ getItem(params: {
125
+ id: number;
126
+ }): Promise<ItemDetail>;
127
+ /**
128
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/item/ItemIconHandler.java)
129
+ * @param params.id 物品 ID(对应 ItemStack 的 id)
130
+ * @param params.damage 物品损伤值/元数据(可选,默认 0)
131
+ * @param params.tag Base64 编码的 NBTTagCompound(可选)
132
+ * @returns 二进制 PNG 图片数据 (ArrayBuffer)
133
+ */
134
+ getItemIcon(params: {
135
+ id: number;
136
+ damage?: number;
137
+ tag?: string;
138
+ }): Promise<ArrayBuffer>;
139
+ /**
140
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/item/AEHandler.java)
141
+ * @returns 使用 {@link AEItemDefinitionsSchema} 验证
142
+ */
143
+ getAEItemsDef(): Promise<AEItemDefinitions>;
144
+ /**
145
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/fluid/FluidsHandler.java)
146
+ * @returns 使用 `Joi.array().items(`{@link FluidSchema}`)` 验证
147
+ */
148
+ getFluids(): Promise<Fluid[]>;
149
+ /**
150
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/fluid/FluidContainersHandler.java)
151
+ * @returns 使用 `Joi.array().items(`{@link FluidContainerSchema}`)` 验证
152
+ */
153
+ getFluidContainers(): Promise<FluidContainer[]>;
154
+ /**
155
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/fluid/FluidIconHandler.java)
156
+ * @param params.id 流体 ID(对应 Fluid 的 id)
157
+ * @param params.name 流体名称(对应 Fluid 的 name)
158
+ * @returns 二进制 PNG 图片数据 (ArrayBuffer)
159
+ */
160
+ getFluidIcon(params: {
161
+ id?: number;
162
+ name?: string;
163
+ }): Promise<ArrayBuffer>;
164
+ /**
165
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/entity/EntitiesHandler.java)
166
+ * @returns 使用 `Joi.object().pattern(Joi.string(),`{@link EntitiesByDimensionSchema}`)` 验证
167
+ *
168
+ * 其中实体为 {@link EntitySummarySchema} 精简结构
169
+ */
170
+ getEntities(): Promise<Record<string, EntitiesByDimension>>;
171
+ /**
172
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/entity/EntityHandler.java)
173
+ * @returns 使用 {@link EntitySchema} 验证
174
+ */
175
+ getEntity(params: {
176
+ id: number;
177
+ }): Promise<Entity>;
178
+ /**
179
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/chunk/ChunksHandler.java)
180
+ * @returns 使用 `Joi.object().pattern(Joi.string(),`{@link ChunksByDimensionSchema}`)` 验证
181
+ */
182
+ getChunks(): Promise<Record<string, ChunksByDimension>>;
183
+ /**
184
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/chunk/ChunkHandler.java)
185
+ * @returns 使用 {@link ChunkWithDimensionSchema} 验证
186
+ */
187
+ getChunk(params: {
188
+ chunkX: number;
189
+ chunkZ: number;
190
+ dim?: number;
191
+ } | {
192
+ x: number;
193
+ z: number;
194
+ dim?: number;
195
+ }): Promise<ChunkWithDimension>;
196
+ /**
197
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/chunk/ChunkMapHandler.java)
198
+ * @returns JSON 模式使用 `Joi.array().items(Joi.array().items(`{@link ChunkMapCellSchema}`)` 验证;raw 模式为 ArrayBuffer
199
+ */
200
+ getChunkMap(params: {
201
+ chunkX: number;
202
+ chunkZ: number;
203
+ dim?: number;
204
+ } | {
205
+ x: number;
206
+ z: number;
207
+ dim?: number;
208
+ }, raw?: boolean): Promise<ArrayBuffer | ChunkMapCell[][]>;
209
+ /**
210
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/chunk/ChunkForceHandler.java)
211
+ * @returns 使用 {@link ChunkForceListSchema} 验证
212
+ */
213
+ getChunkForceList(): Promise<ChunkForceList>;
214
+ /**
215
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/chunk/ChunkForceHandler.java)
216
+ * @returns 使用 {@link ChunkLoadResultSchema} 验证
217
+ */
218
+ loadChunk(params: {
219
+ x: number;
220
+ z: number;
221
+ dim?: number;
222
+ duration?: number;
223
+ } | {
224
+ chunkX: number;
225
+ chunkZ: number;
226
+ dim?: number;
227
+ duration?: number;
228
+ }): Promise<ChunkLoadResult>;
229
+ /**
230
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/chunk/ChunkForceHandler.java)
231
+ * @returns 使用 {@link ChunkLoadResultSchema} 验证
232
+ */
233
+ unloadChunk(params: {
234
+ x: number;
235
+ z: number;
236
+ dim?: number;
237
+ } | {
238
+ chunkX: number;
239
+ chunkZ: number;
240
+ dim?: number;
241
+ }): Promise<ChunkLoadResult>;
242
+ /**
243
+ * 查询单个 GT5 机器信息。
244
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/gt5/GT5BaseHandler.java)
245
+ * @returns 使用 {@link GT5MachineInfoSchema} 验证
246
+ */
247
+ getGT5Machine(params: {
248
+ x: number;
249
+ y: number;
250
+ z: number;
251
+ dim?: number;
252
+ }): Promise<GT5MachineInfo>;
253
+ /**
254
+ * 提交批量 GT5 机器查询任务。
255
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/gt5/GT5BatchHandler.java)
256
+ * @param machines 使用 `Joi.array().items(`{@link GT5BatchMachineCoordSchema}`)` 验证
257
+ * @returns 使用 {@link GT5BatchSubmitResultSchema} 验证
258
+ */
259
+ submitGT5Batch(machines: GT5BatchMachineCoord[]): Promise<GT5BatchSubmitResult>;
260
+ /**
261
+ * 查询批量 GT5 机器任务状态。
262
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/gt5/GT5BatchHandler.java)
263
+ * @returns 使用 {@link GT5BatchJobResultSchema} 验证
264
+ */
265
+ getGT5BatchJob(params: {
266
+ id: string;
267
+ }): Promise<GT5BatchJobResult>;
268
+ /**
269
+ * 重新执行已有的批量 GT5 机器查询任务。
270
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/gt5/GT5BatchHandler.java)
271
+ * @returns 使用 {@link GT5BatchRerunResultSchema} 验证
272
+ */
273
+ rerunGT5Batch(params: {
274
+ id: string;
275
+ }): Promise<GT5BatchRerunResult>;
276
+ /**
277
+ * 轮询等待批量 GT5 机器任务完成。
278
+ * @param jobId 任务 ID(由 submitGT5Batch 返回)
279
+ * @param intervalMs 轮询间隔 (ms),默认 100
280
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/gt5/GT5BatchHandler.java)
281
+ * @returns 使用 {@link GT5BatchJobResultSchema} 验证
282
+ */
283
+ waitForGT5BatchJob(jobId: string, intervalMs?: number): Promise<GT5BatchJobResult>;
284
+ /**
285
+ * 提交区块扫描任务,异步扫描指定区块内所有 GT5 机器。
286
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/gt5/GT5ChunkScanHandler.java)
287
+ * @returns 使用 {@link GT5ScanSubmitResultSchema} 验证
288
+ */
289
+ submitGT5ChunkScan(params: {
290
+ chunkX: number;
291
+ chunkZ: number;
292
+ dim?: number;
293
+ } | {
294
+ x: number;
295
+ z: number;
296
+ dim?: number;
297
+ }): Promise<GT5ScanSubmitResult>;
298
+ /**
299
+ * 查询区块扫描任务状态。
300
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/gt5/GT5ChunkScanHandler.java)
301
+ * @returns 使用 {@link GT5ScanJobResultSchema} 验证
302
+ */
303
+ getGT5ScanJob(params: {
304
+ id: string;
305
+ }): Promise<GT5ScanJobResult>;
306
+ /**
307
+ * 轮询等待区块扫描任务完成。
308
+ * @param jobId 任务 ID(由 submitGT5ChunkScan 返回)
309
+ * @param intervalMs 轮询间隔 (ms),默认 100
310
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/gt5/GT5ChunkScanHandler.java)
311
+ * @returns 使用 {@link GT5ScanJobResultSchema} 验证
312
+ */
313
+ waitForGT5ScanJob(jobId: string, intervalMs?: number): Promise<GT5ScanJobResult>;
314
+ /**
315
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/ae2/AEBaseHandler.java)
316
+ * @returns 使用 {@link AEHitResultSchema} 验证
317
+ */
318
+ aeHit(params: {
319
+ x: number;
320
+ y: number;
321
+ z: number;
322
+ dimension?: number;
323
+ }): Promise<AEHitResult>;
324
+ /**
325
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/ae2/AENodesHandler.java)
326
+ * @returns 使用 `Joi.array().items(`{@link AENodeSchema}`)` 验证
327
+ */
328
+ aeNodes(params: {
329
+ x: number;
330
+ y: number;
331
+ z: number;
332
+ dimension?: number;
333
+ }): Promise<AENode[]>;
334
+ /**
335
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/ae2/AECPUHandler.java)
336
+ * @returns 使用 `Joi.array().items(`{@link AECPUSchema}`)` 验证
337
+ */
338
+ aeCPUs(params: {
339
+ x: number;
340
+ y: number;
341
+ z: number;
342
+ dimension?: number;
343
+ }): Promise<AECPU[]>;
344
+ /**
345
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/ae2/AEMEHandler.java)
346
+ * @returns 使用 `Joi.array().items(`{@link AE2PatternSchema}`.append({ slot: Joi.number().required(), direction: Joi.string().optional() }))` 验证
347
+ */
348
+ aeME(params: {
349
+ x: number;
350
+ y: number;
351
+ z: number;
352
+ dimension?: number;
353
+ }): Promise<Array<AE2Pattern & {
354
+ slot: number;
355
+ direction?: string;
356
+ }>>;
357
+ /**
358
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/ae2/AEMEsHandler.java)
359
+ * @returns 使用 `Joi.array().items(`{@link AEMEInterfaceSchema}`)` 验证
360
+ */
361
+ aeMEs(params: {
362
+ x: number;
363
+ y: number;
364
+ z: number;
365
+ dimension?: number;
366
+ pattern?: boolean;
367
+ load?: boolean;
368
+ world?: boolean;
369
+ }): Promise<AEMEInterface[]>;
370
+ /**
371
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/ae2/AEMEsupportHandler.java)
372
+ * @returns 字符串数组,无专用 Schema
373
+ */
374
+ aeMESupport(): Promise<string[]>;
375
+ /**
376
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/ae2/AEItemHandler.java)
377
+ * @returns 使用 {@link AEItemsResultSchema} 验证
378
+ */
379
+ aeItems(params: {
380
+ x: number;
381
+ y: number;
382
+ z: number;
383
+ dimension?: number;
384
+ }): Promise<AEItemsResult>;
385
+ /**
386
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/ae2/AECPUTaskHandler.java)
387
+ * @param body 使用 {@link AECraftingTaskBodySchema} 验证
388
+ * @returns 使用 {@link AECraftingTaskResultSchema} 验证
389
+ */
390
+ aeCraft(params: {
391
+ x: number;
392
+ y: number;
393
+ z: number;
394
+ dimension?: number;
395
+ }, body: AECraftingTaskBody): Promise<AECraftingTaskResult>;
396
+ /**
397
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/ae2/AECPUCancelHandler.java)
398
+ * @param body 使用 {@link AECPUCancelBodySchema} 验证
399
+ * @returns 使用 {@link AECPUCancelResultSchema} 验证
400
+ */
401
+ aeCancel(params: {
402
+ x: number;
403
+ y: number;
404
+ z: number;
405
+ dimension?: number;
406
+ }, body: AECPUCancelBody): Promise<AECPUCancelResult>;
407
+ /**
408
+ * 构建 AE 库存 SSE(Server-Sent Events)订阅地址。
409
+ * 注意:仅当服务端启用虚拟线程(useVirtualThreads)时该路由才会注册。
410
+ * 返回 EventSource 可直接使用的完整 URL。
411
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/ae2/AEItemSSEHandler.java)
412
+ */
413
+ aeItemsSseUrl(params: {
414
+ x: number;
415
+ y: number;
416
+ z: number;
417
+ dimension?: number;
418
+ }): string;
419
+ /**
420
+ * 以回调方式订阅 AE 库存 SSE 推送(基于 fetchEventSource,可携带 Authorization 头,原生 EventSource 不支持)。
421
+ * 服务端周期性推送 `aeitem` 事件(`ApiResponse<{@link AEItemsResult}>` JSON,间隔由服务端 AE2Config.item.interval 决定),
422
+ * 回调收到解包后的 {@link AEItemsResult},业务失败(success=false)时以 {@link WebApiError} 上报;
423
+ * 连接建立后发生异常时推送 `error` 事件(纯文本消息)并关闭连接。
424
+ * @param params 目标方块坐标
425
+ * @param callback 每次收到库存快照时调用
426
+ * @param errorCallback 出错(网络错误、鉴权失败、服务端 error 事件、业务失败、数据解析失败)时调用,库内自动重连会随之停止
427
+ * @returns AbortController,调用 `abort()` 可停止订阅
428
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/ae2/AEItemSSEHandler.java)
429
+ */
430
+ aeItemSseCallback(params: {
431
+ x: number;
432
+ y: number;
433
+ z: number;
434
+ dimension?: number;
435
+ }, callback: (data: AEItemsResult) => void, errorCallback: (error: Error) => void): AbortController;
436
+ /**
437
+ * 构建 AE 合成 CPU 状态 SSE(Server-Sent Events)订阅地址。
438
+ * 注意:仅当服务端启用虚拟线程(useVirtualThreads)时该路由才会注册。
439
+ * 返回 EventSource 可直接使用的完整 URL。
440
+ * @param params 目标方块坐标;interval 为推送间隔(秒),省略时由服务端取默认值 5
441
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/ae2/AECPUSSEHandler.java)
442
+ */
443
+ aeCpuSseUrl(params: {
444
+ x: number;
445
+ y: number;
446
+ z: number;
447
+ dimension?: number;
448
+ interval?: number;
449
+ }): string;
450
+ /**
451
+ * 以回调方式订阅 AE 合成 CPU 状态 SSE 推送(基于 fetchEventSource,可携带 Authorization 头,原生 EventSource 不支持)。
452
+ * 服务端周期性推送 `aecpu` 事件({@link AECPU} 数组 JSON,间隔由 interval 参数(秒)决定,服务端默认 5),
453
+ * 回调收到 CPU 状态列表;连接建立后发生异常时推送 `error` 事件(纯文本消息)并关闭连接。
454
+ * @param params 目标方块坐标;interval 为推送间隔(秒),省略时由服务端取默认值
455
+ * @param callback 每次收到 CPU 状态快照时调用
456
+ * @param errorCallback 出错(网络错误、鉴权失败、服务端 error 事件、业务失败、数据解析失败)时调用,库内自动重连会随之停止
457
+ * @returns AbortController,调用 `abort()` 可停止订阅
458
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/ae2/AECPUSSEHandler.java)
459
+ */
460
+ aeCpuSseCallback(params: {
461
+ x: number;
462
+ y: number;
463
+ z: number;
464
+ dimension?: number;
465
+ interval?: number;
466
+ }, callback: (data: AECPU[]) => void, errorCallback: (error: Error) => void): AbortController;
467
+ /**
468
+ * 查询工作台合成配方(有序/无序)。
469
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/recipe/CraftingRecipesHandler.java)
470
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/recipe/IndexedCraftingRecipesHandler.java)
471
+ * @returns 使用 {@link CraftingRecipesResultSchema} 验证
472
+ */
473
+ getCraftingRecipes(params?: {
474
+ type?: "output" | "input";
475
+ id?: number;
476
+ damage?: number;
477
+ tag?: string;
478
+ limit?: number;
479
+ offset?: number;
480
+ }): Promise<CraftingRecipesResult>;
481
+ /**
482
+ * 查询熔炉熔炼配方。
483
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/recipe/FurnaceRecipesHandler.java)
484
+ * @returns 使用 {@link FurnaceRecipesResultSchema} 验证
485
+ */
486
+ getFurnaceRecipes(params?: {
487
+ type?: "output" | "input";
488
+ id?: number;
489
+ damage?: number;
490
+ tag?: string;
491
+ limit?: number;
492
+ offset?: number;
493
+ }): Promise<FurnaceRecipesResult>;
494
+ /**
495
+ * 查询 GT5 配方表的映射表(unlocalizedName → 显示名)。
496
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/recipe/GTmaps.java)
497
+ * @returns 使用 `Joi.array().items(`{@link GTRecipeMapSchema}`)` 验证
498
+ */
499
+ getGTRecipeMaps(): Promise<GTRecipeMap[]>;
500
+ /**
501
+ * 查询 GT5 机器配方。
502
+ * 注意:必须至少提供 id/damage(物品)、fluid(流体)或 map(单个配方表)之一。
503
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/recipe/GTRecipesHandler.java)
504
+ * @returns 使用 {@link GTRecipesResultSchema} 验证
505
+ */
506
+ getGTRecipes(params: {
507
+ type?: "output" | "input";
508
+ id?: number;
509
+ damage?: number;
510
+ tag?: string;
511
+ fluid?: string | number;
512
+ map?: string;
513
+ limit?: number;
514
+ offset?: number;
515
+ }): Promise<GTRecipesResult>;
516
+ /**
517
+ * 上传图片 → OC 3D 打印件,投递到玩家背包(多余掉落在玩家附近)。
518
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/ThreeD/PlayerPrintHandler.java)
519
+ * @param params 二选一:id(实体 ID)或 name(玩家名)
520
+ * @param image 图片二进制数据(png/jpg 等)
521
+ * @returns 使用 {@link PlayerPrintResultSchema} 验证
522
+ */
523
+ printToPlayer(params: {
524
+ id: number;
525
+ label?: string;
526
+ tooltip?: string;
527
+ } | {
528
+ name: string;
529
+ label?: string;
530
+ tooltip?: string;
531
+ }, image: RequestInit["body"]): Promise<PlayerPrintResult>;
532
+ /**
533
+ * 上传图片 → 在世界中铺设 OC 3D 打印像素画(慢队列逐块执行)。
534
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/ThreeD/WorldPrintHandler.java)
535
+ * @returns 使用 {@link WorldPrintSubmitResultSchema} 验证
536
+ */
537
+ submitWorldPrint(params: {
538
+ x: number;
539
+ y: number;
540
+ z: number;
541
+ dim?: number;
542
+ facing?: "north" | "south" | "east" | "west";
543
+ label?: string;
544
+ tooltip?: string;
545
+ }, image: RequestInit["body"]): Promise<WorldPrintSubmitResult>;
546
+ /**
547
+ * 查询世界 3D 打印任务进度。
548
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/ThreeD/WorldPrintHandler.java)
549
+ * @returns 使用 {@link WorldPrintJobResultSchema} 验证
550
+ */
551
+ getWorldPrintJob(params: {
552
+ id: string;
553
+ }): Promise<WorldPrintJobResult>;
554
+ /**
555
+ * 轮询等待世界 3D 打印任务完成。
556
+ * @param jobId 任务 ID(由 submitWorldPrint 返回)
557
+ * @param intervalMs 轮询间隔 (ms),默认 100
558
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/ThreeD/WorldPrintHandler.java)
559
+ * @returns 使用 {@link WorldPrintJobResultSchema} 验证
560
+ */
561
+ waitForWorldPrintJob(jobId: string, intervalMs?: number): Promise<WorldPrintJobResult>;
562
+ /**
563
+ * 上传图片,估算生成的 3D 打印件 NBT 大小(不实际打印)。
564
+ * @java [java](../../../src/main/java/love/shirokasoke/webapi/webserver/handlers/ThreeD/PrintSizeHandler.java)
565
+ * @returns 使用 {@link PrintSizeResultSchema} 验证
566
+ */
567
+ getPrintSize(image: RequestInit["body"], params?: {
568
+ label?: string;
569
+ tooltip?: string;
570
+ }): Promise<PrintSizeResult>;
571
+ }
572
+ export declare class WebApiError extends Error {
573
+ status: number;
574
+ body?: unknown;
575
+ constructor(message: string, status: number, body?: unknown);
576
+ }