omegga 1.0.0 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/dist/cli/plugin.js +2 -0
  2. package/dist/cli/plugin.js.map +1 -1
  3. package/dist/omegga/player.d.ts +6 -6
  4. package/dist/omegga/player.js.map +1 -1
  5. package/dist/omegga/plugin/plugin_node_safe/worker.js +2 -1
  6. package/dist/omegga/plugin/plugin_node_safe/worker.js.map +1 -1
  7. package/dist/omegga/plugin.js.map +1 -1
  8. package/dist/omegga/server.js +13 -13
  9. package/dist/omegga/server.js.map +1 -1
  10. package/dist/plugin.d.ts +28 -14
  11. package/dist/plugin.js +1 -7
  12. package/dist/plugin.js.map +1 -1
  13. package/dist/util/brick/rotate.d.ts +10 -11
  14. package/dist/util/brick/rotate.js +19 -10
  15. package/dist/util/brick/rotate.js.map +1 -1
  16. package/dist/util/index.d.ts +35 -19
  17. package/dist/util/index.js +22 -11
  18. package/dist/util/index.js.map +1 -1
  19. package/package.json +3 -10
  20. package/public/app.bundle.js.map +1 -1
  21. package/public/auth.bundle.js.map +1 -1
  22. package/templates/safe-ts/.gitignore.rename +3 -0
  23. package/templates/safe-ts/omegga.d.ts +1310 -0
  24. package/.babelrc.json +0 -5
  25. package/.github/workflows/lint.yml +0 -26
  26. package/.vscode/extensions.json +0 -5
  27. package/.vscode/settings.json +0 -20
  28. package/dist/brickadia/config.d.ts.map +0 -1
  29. package/dist/brickadia/server.d.ts.map +0 -1
  30. package/dist/brickadia/types.d.ts.map +0 -1
  31. package/dist/cli/auth.d.ts.map +0 -1
  32. package/dist/cli/config.d.ts.map +0 -1
  33. package/dist/cli/index.d.ts.map +0 -1
  34. package/dist/cli/installer.d.ts.map +0 -1
  35. package/dist/cli/plugin.d.ts.map +0 -1
  36. package/dist/cli/terminal.d.ts.map +0 -1
  37. package/dist/config/authorizer.d.ts.map +0 -1
  38. package/dist/config/formats/format_js.d.ts.map +0 -1
  39. package/dist/config/formats/format_yml.d.ts.map +0 -1
  40. package/dist/config/index.d.ts.map +0 -1
  41. package/dist/config/reader.d.ts.map +0 -1
  42. package/dist/config/types.d.ts.map +0 -1
  43. package/dist/config/validator.d.ts.map +0 -1
  44. package/dist/config/writer.d.ts.map +0 -1
  45. package/dist/lib.d.ts +0 -21
  46. package/dist/lib.d.ts.map +0 -1
  47. package/dist/lib.js +0 -54
  48. package/dist/lib.js.map +0 -1
  49. package/dist/main.d.ts.map +0 -1
  50. package/dist/omegga/auth.d.ts.map +0 -1
  51. package/dist/omegga/commandInjector.d.ts.map +0 -1
  52. package/dist/omegga/index.d.ts.map +0 -1
  53. package/dist/omegga/logWrangler.d.ts.map +0 -1
  54. package/dist/omegga/matchers/auth.d.ts.map +0 -1
  55. package/dist/omegga/matchers/chat.d.ts.map +0 -1
  56. package/dist/omegga/matchers/command.d.ts.map +0 -1
  57. package/dist/omegga/matchers/exit.d.ts.map +0 -1
  58. package/dist/omegga/matchers/index.d.ts.map +0 -1
  59. package/dist/omegga/matchers/init.d.ts.map +0 -1
  60. package/dist/omegga/matchers/join.d.ts.map +0 -1
  61. package/dist/omegga/matchers/leave.d.ts.map +0 -1
  62. package/dist/omegga/matchers/mapChange.d.ts.map +0 -1
  63. package/dist/omegga/matchers/types.d.ts.map +0 -1
  64. package/dist/omegga/matchers/version.d.ts.map +0 -1
  65. package/dist/omegga/player.d.ts.map +0 -1
  66. package/dist/omegga/plugin/plugin_jsonrpc_stdio.d.ts.map +0 -1
  67. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.d.ts.map +0 -1
  68. package/dist/omegga/plugin/plugin_node_safe/worker.d.ts.map +0 -1
  69. package/dist/omegga/plugin/plugin_node_safe.d.ts.map +0 -1
  70. package/dist/omegga/plugin/plugin_node_unsafe.d.ts.map +0 -1
  71. package/dist/omegga/plugin.d.ts.map +0 -1
  72. package/dist/omegga/server.d.ts.map +0 -1
  73. package/dist/omegga/types.d.ts.map +0 -1
  74. package/dist/omegga/wrapper.d.ts.map +0 -1
  75. package/dist/omeggaplugin.d.ts +0 -1
  76. package/dist/omeggaplugin.js +0 -4
  77. package/dist/omeggaplugin.js.map +0 -1
  78. package/dist/softconfig.d.ts.map +0 -1
  79. package/dist/util/brick/checkBounds.d.ts.map +0 -1
  80. package/dist/util/brick/constants.d.ts.map +0 -1
  81. package/dist/util/brick/getBounds.d.ts.map +0 -1
  82. package/dist/util/brick/getBrickSize.d.ts.map +0 -1
  83. package/dist/util/brick/getScaleAxis.d.ts.map +0 -1
  84. package/dist/util/brick/index.d.ts.map +0 -1
  85. package/dist/util/brick/rotate.d.ts.map +0 -1
  86. package/dist/util/brick/setOwnership.d.ts.map +0 -1
  87. package/dist/util/chat.d.ts.map +0 -1
  88. package/dist/util/color.d.ts.map +0 -1
  89. package/dist/util/file.d.ts.map +0 -1
  90. package/dist/util/index.d.ts.map +0 -1
  91. package/dist/util/map.d.ts.map +0 -1
  92. package/dist/util/pattern.d.ts.map +0 -1
  93. package/dist/util/time.d.ts.map +0 -1
  94. package/dist/util/uuid.d.ts.map +0 -1
  95. package/dist/util/wsl.d.ts.map +0 -1
  96. package/dist/webserver/backend/api.d.ts.map +0 -1
  97. package/dist/webserver/backend/calendar.d.ts.map +0 -1
  98. package/dist/webserver/backend/database.d.ts.map +0 -1
  99. package/dist/webserver/backend/index.d.ts.map +0 -1
  100. package/dist/webserver/backend/metrics.d.ts.map +0 -1
  101. package/dist/webserver/backend/types.d.ts.map +0 -1
  102. package/dist/webserver/backend/util.d.ts.map +0 -1
  103. package/dist/webserver/index.d.ts.map +0 -1
@@ -0,0 +1,1310 @@
1
+ export interface BRColor {
2
+ r: number;
3
+ b: number;
4
+ g: number;
5
+ a: number;
6
+ }
7
+ export interface BRVector {
8
+ x: number;
9
+ y: number;
10
+ z: number;
11
+ }
12
+ export interface BRBanListEntry {
13
+ bannerId: string;
14
+ created: string;
15
+ expires: string;
16
+ reason: string;
17
+ }
18
+ export interface BRBanList {
19
+ banList: Record<string, BRBanListEntry>;
20
+ }
21
+ export interface BRRolePermission {
22
+ name: string;
23
+ state: "Allowed" | "Unchanged" | "Forbidden";
24
+ }
25
+ export interface BRRoleSetupEntry {
26
+ name: string;
27
+ permissions: BRRolePermission[];
28
+ color: BRColor;
29
+ bHasColor: boolean;
30
+ }
31
+ export interface BRRoleSetup {
32
+ roles: BRRoleSetupEntry[];
33
+ defaultRole: BRRoleSetupEntry;
34
+ ownerRoleColor: BRColor;
35
+ bOwnerRoleHasColor: boolean;
36
+ version: string;
37
+ }
38
+ export interface BRRoleAssignments {
39
+ savedPlayerRoles: Record<string, {
40
+ roles: string[];
41
+ }>;
42
+ }
43
+ export interface BRPlayerNameCache {
44
+ savedPlayerNames: Record<string, string>;
45
+ }
46
+ export declare type Preset<T extends string, D> = {
47
+ formatVersion?: "1";
48
+ presetVersion?: "1";
49
+ type?: T;
50
+ data?: D;
51
+ };
52
+ export declare type EnvironmentPreset = Preset<"Environment", {
53
+ groups?: {
54
+ Sky?: {
55
+ timeOfDay?: number;
56
+ timeChangeSpeed?: number;
57
+ sunAngle?: number;
58
+ sunScale?: number;
59
+ sunHorizonScaleMultiplier?: number;
60
+ sunlightColor?: BRColor;
61
+ skyIntensity?: number;
62
+ skyColor?: BRColor;
63
+ moonScale?: number;
64
+ moonlightIntensity?: number;
65
+ moonlightColor?: BRColor;
66
+ starsIntensity?: number;
67
+ starsColor?: BRColor;
68
+ auroraIntensity?: number;
69
+ weatherIntensity?: BRColor;
70
+ rainSnow?: number;
71
+ cloudCoverage?: number;
72
+ cloudSpeedMultiplier?: number;
73
+ precipitationParticleAmount?: number;
74
+ bCloseLightning?: boolean;
75
+ rainVolume?: number;
76
+ closeThunderVolume?: number;
77
+ distantThunderVolume?: number;
78
+ windVolume?: number;
79
+ clearFogDensity?: number;
80
+ cloudyFogDensity?: number;
81
+ clearFogHeightFalloff?: number;
82
+ cloudyFogHeightFalloff?: number;
83
+ fogColor?: BRColor;
84
+ };
85
+ GroundPlate?: {
86
+ variance?: number;
87
+ varianceBrickSize?: number;
88
+ groundColor?: BRColor;
89
+ groundAccentColor?: BRColor;
90
+ isVisible?: boolean;
91
+ bUseStudTexture?: boolean;
92
+ };
93
+ Water?: {
94
+ waterHeight?: number;
95
+ waterAbsorption?: BRVector;
96
+ waterScattering?: BRVector;
97
+ waterFogIntensity?: number;
98
+ waterFogAmbientColor?: BRColor;
99
+ waterFogAmbientScale?: number;
100
+ waterFogScatteringColor?: BRColor;
101
+ waterFogScatteringScale?: number;
102
+ };
103
+ Ambience?: {
104
+ selectedAmbienceTypeInt?: number;
105
+ ambienceVolume?: number;
106
+ reverbEffect?: string;
107
+ };
108
+ };
109
+ }>;
110
+ export interface IOmeggaOptions {
111
+ noauth?: boolean;
112
+ noplugin?: boolean;
113
+ noweb?: boolean;
114
+ debug?: boolean;
115
+ }
116
+ export interface IServerStatus {
117
+ serverName: string;
118
+ description: string;
119
+ bricks: number;
120
+ components: number;
121
+ time: number;
122
+ players: {
123
+ name: string;
124
+ ping: number;
125
+ time: number;
126
+ roles: string[];
127
+ address: string;
128
+ id: string;
129
+ }[];
130
+ }
131
+ export declare type IMinigameList = {
132
+ index: number;
133
+ name: string;
134
+ numMembers: number;
135
+ owner: {
136
+ name: string;
137
+ id: string;
138
+ };
139
+ }[];
140
+ export declare type IPlayerPositions = {
141
+ player: OmeggaPlayer;
142
+ pawn: string;
143
+ pos: number[];
144
+ isDead: boolean;
145
+ }[];
146
+ export declare type ILogMinigame = {
147
+ name: string;
148
+ ruleset: string;
149
+ members: OmeggaPlayer[];
150
+ teams: {
151
+ name: string;
152
+ team: string;
153
+ color: number[];
154
+ members: OmeggaPlayer[];
155
+ }[];
156
+ };
157
+ export interface BRSBytes extends Uint8Array {
158
+ brsOffset: number;
159
+ }
160
+ export declare type Modify<T, R> = Omit<T, keyof R> & R;
161
+ export declare type Bytes = Uint8Array | BRSBytes;
162
+ export declare type Uuid = string;
163
+ export declare type UnrealClass = string;
164
+ export declare type UnrealObject = string;
165
+ export declare type UnrealBoolean = boolean;
166
+ export declare type UnrealFloat = number;
167
+ export declare type UnrealColor = [
168
+ number,
169
+ number,
170
+ number,
171
+ number
172
+ ];
173
+ export declare type UnrealByte = number;
174
+ export declare type UnrealRotator = [
175
+ number,
176
+ number,
177
+ number
178
+ ];
179
+ export declare type UnrealType = UnrealClass | UnrealObject | UnrealBoolean | UnrealFloat | UnrealColor | UnrealByte | UnrealRotator;
180
+ export declare type UnrealTypeFromString<T> = T extends "Class" ? UnrealClass : T extends "Object" ? UnrealObject : T extends "Boolean" ? UnrealBoolean : T extends "Float" ? UnrealFloat : T extends "Color" ? UnrealColor : T extends "Byte" ? UnrealByte : T extends "Rotator" ? UnrealRotator : UnrealType;
181
+ export interface User {
182
+ id: Uuid;
183
+ name: string;
184
+ }
185
+ export interface Owner extends User {
186
+ bricks: number;
187
+ }
188
+ declare enum Direction {
189
+ XPositive = 0,
190
+ XNegative = 1,
191
+ YPositive = 2,
192
+ YNegative = 3,
193
+ ZPositive = 4,
194
+ ZNegative = 5
195
+ }
196
+ declare enum Rotation {
197
+ Deg0 = 0,
198
+ Deg90 = 1,
199
+ Deg180 = 2,
200
+ Deg270 = 3
201
+ }
202
+ export declare type ColorRgb = [
203
+ number,
204
+ number,
205
+ number
206
+ ];
207
+ export interface Collision {
208
+ player: boolean;
209
+ weapon: boolean;
210
+ interaction: boolean;
211
+ tool: boolean;
212
+ }
213
+ export interface AppliedComponent {
214
+ [property: string]: UnrealType;
215
+ }
216
+ export interface UnknownComponents {
217
+ [component_name: string]: {
218
+ version: number;
219
+ brick_indices?: number[];
220
+ properties: {
221
+ [property: string]: string;
222
+ };
223
+ };
224
+ }
225
+ export declare type KnownComponents = {
226
+ BCD_SpotLight: {
227
+ version: 1;
228
+ brick_indices?: number[];
229
+ properties: {
230
+ Rotation: "Rotator";
231
+ InnerConeAngle: "Float";
232
+ OuterConeAngle: "Float";
233
+ Brightness: "Float";
234
+ Radius: "Float";
235
+ Color: "Color";
236
+ bUseBrickColor: "Boolean";
237
+ bCastShadows: "Boolean";
238
+ };
239
+ };
240
+ BCD_PointLight: {
241
+ version: 1;
242
+ brick_indices?: number[];
243
+ properties: {
244
+ bMatchBrickShape: "Boolean";
245
+ Brightness: "Float";
246
+ Radius: "Float";
247
+ Color: "Color";
248
+ bUseBrickColor: "Boolean";
249
+ bCastShadows: "Boolean";
250
+ };
251
+ };
252
+ BCD_ItemSpawn: {
253
+ version: 1;
254
+ brick_indices?: number[];
255
+ properties: {
256
+ PickupClass: "Class";
257
+ bPickupEnabled: "Boolean";
258
+ bPickupRespawnOnMinigameReset: "Boolean";
259
+ PickupMinigameResetRespawnDelay: "Float";
260
+ bPickupAutoDisableOnPickup: "Boolean";
261
+ PickupRespawnTime: "Float";
262
+ PickupOffsetDirection: "Byte";
263
+ PickupOffsetDistance: "Float";
264
+ PickupRotation: "Rotator";
265
+ PickupScale: "Float";
266
+ bPickupAnimationEnabled: "Boolean";
267
+ PickupAnimationAxis: "Byte";
268
+ bPickupAnimationAxisLocal: "Boolean";
269
+ PickupSpinSpeed: "Float";
270
+ PickupBobSpeed: "Float";
271
+ PickupBobHeight: "Float";
272
+ PickupAnimationPhase: "Float";
273
+ };
274
+ };
275
+ BCD_Interact: {
276
+ version: 1;
277
+ brick_indices?: number[];
278
+ properties: {
279
+ bPlayInteractSound: "Boolean";
280
+ };
281
+ };
282
+ BCD_AudioEmitter: {
283
+ version: 1;
284
+ brick_indices?: number[];
285
+ properties: {
286
+ AudioDescriptor: "Object";
287
+ VolumeMultiplier: "Float";
288
+ PitchMultiplier: "Float";
289
+ InnerRadius: "Float";
290
+ MaxDistance: "Float";
291
+ bSpatialization: "Boolean";
292
+ };
293
+ };
294
+ };
295
+ export interface DefinedComponents extends UnknownComponents, Partial<KnownComponents> {
296
+ }
297
+ export declare type Components<C extends DefinedComponents> = {
298
+ [T in keyof C]: {
299
+ [V in keyof C[T]["properties"]]: UnrealTypeFromString<C[T]["properties"][V]>;
300
+ };
301
+ } & {
302
+ [component_name: string]: AppliedComponent;
303
+ };
304
+ export declare type Vector = [
305
+ number,
306
+ number,
307
+ number
308
+ ];
309
+ export interface BrickV1 {
310
+ asset_name_index: number;
311
+ size: Vector;
312
+ position: Vector;
313
+ direction: Direction;
314
+ rotation: Rotation;
315
+ collision: boolean;
316
+ visibility: boolean;
317
+ color: UnrealColor | number;
318
+ }
319
+ export interface BrickV2 extends BrickV1 {
320
+ material_index: number;
321
+ }
322
+ export interface BrickV3 extends BrickV2 {
323
+ owner_index: number;
324
+ }
325
+ export interface BrickV8 extends BrickV3 {
326
+ components: Components<DefinedComponents>;
327
+ }
328
+ export declare type BrickV9 = Modify<BrickV8, {
329
+ physical_index: number;
330
+ material_intensity: number;
331
+ color: ColorRgb | number;
332
+ }>;
333
+ export declare type BrickV10 = Modify<BrickV9, {
334
+ collision: Collision;
335
+ }>;
336
+ export interface BrsV1 {
337
+ version: 1;
338
+ map: string;
339
+ author: User;
340
+ description: string;
341
+ brick_count: number;
342
+ mods: string[];
343
+ brick_assets: string[];
344
+ colors: UnrealColor[];
345
+ bricks: BrickV1[];
346
+ }
347
+ export declare type BrsV2 = Modify<BrsV1, {
348
+ version: 2;
349
+ materials: string[];
350
+ bricks: BrickV2[];
351
+ }>;
352
+ export declare type BrsV3 = Modify<BrsV2, {
353
+ version: 3;
354
+ brick_owners: User[];
355
+ bricks: BrickV3[];
356
+ }>;
357
+ export declare type BrsV4 = Modify<BrsV3, {
358
+ version: 4;
359
+ save_time: Uint8Array;
360
+ }>;
361
+ export declare type BrsV8 = Modify<BrsV4, {
362
+ version: 8;
363
+ host: User;
364
+ brick_owners: Owner[];
365
+ preview?: Bytes;
366
+ game_version: number;
367
+ bricks: BrickV8[];
368
+ components: DefinedComponents;
369
+ }>;
370
+ export declare type BrsV9 = Modify<BrsV8, {
371
+ version: 9;
372
+ physical_materials: string[];
373
+ bricks: BrickV9[];
374
+ }>;
375
+ export declare type BrsV10 = Modify<BrsV9, {
376
+ version: 10;
377
+ bricks: BrickV10[];
378
+ }>;
379
+ export declare type ReadSaveObject = BrsV1 | BrsV2 | BrsV3 | BrsV4 | BrsV8 | BrsV9 | BrsV10;
380
+ export interface Brick {
381
+ asset_name_index?: number;
382
+ size: Vector;
383
+ position: Vector;
384
+ direction?: Direction;
385
+ rotation?: Rotation;
386
+ collision?: boolean | Partial<Collision>;
387
+ visibility?: boolean;
388
+ material_index?: number;
389
+ physical_index?: number;
390
+ material_intensity?: number;
391
+ color?: ColorRgb | number;
392
+ owner_index?: number;
393
+ components?: Components<DefinedComponents>;
394
+ }
395
+ export interface WriteSaveObject {
396
+ game_version?: number;
397
+ map?: string;
398
+ description?: string;
399
+ author?: Partial<User>;
400
+ host?: Partial<User>;
401
+ mods?: string[];
402
+ brick_assets?: string[];
403
+ colors?: UnrealColor[];
404
+ materials?: string[];
405
+ brick_owners?: Partial<Owner>[];
406
+ physical_materials?: string[];
407
+ preview?: Bytes;
408
+ bricks: Brick[];
409
+ save_time?: ArrayLike<number>;
410
+ components?: DefinedComponents;
411
+ }
412
+ declare function hsv(h: number | {
413
+ h: number;
414
+ s: number;
415
+ v: number;
416
+ }, s?: number, v?: number): number[];
417
+ declare function parseDuration(str: string): number;
418
+ declare function parseBrickadiaTime(str: string): number;
419
+ declare function brn2n(brName: string): string;
420
+ declare function n2brn(name: string): string;
421
+ export interface IBrickBounds {
422
+ minBound: Vector;
423
+ maxBound: Vector;
424
+ center: Vector;
425
+ }
426
+ declare function checkBounds(brick: Brick, brick_assets: string[], bounds: IBrickBounds): boolean;
427
+ declare function getBounds({ bricks, brick_assets }: WriteSaveObject): IBrickBounds;
428
+ declare function getBrickSize(brick: Brick, brick_assets: string[]): [
429
+ number,
430
+ number,
431
+ number
432
+ ];
433
+ declare function getScaleAxis(brick: Brick, axis: number): number;
434
+ declare function setOwnership(player: {
435
+ id: string;
436
+ name: string;
437
+ }, saveData: ReadSaveObject): ReadSaveObject;
438
+ declare function rotate(brick: Brick, rotation: [
439
+ number,
440
+ number
441
+ ]): Brick;
442
+ declare function rotate_x(times: number): (obj: Brick) => Brick;
443
+ declare function rotate_y(times: number): (obj: Brick) => Brick;
444
+ declare function rotate_z(times: number): (obj: Brick) => Brick;
445
+ export declare const _OMEGGA_UTILS_IMPORT: {
446
+ chat: {
447
+ EMOTES: string[];
448
+ sanitize: (str: string) => string;
449
+ parseLinks: (message: string) => string;
450
+ attr: (attr: string, param?: string) => (message: string) => string;
451
+ attrParam: <T = string>(attr: string) => (message: string, param: T) => string;
452
+ color: (message: string, param: string) => string;
453
+ bold: (message: string) => string;
454
+ italic: (message: string) => string;
455
+ underline: (message: string) => string;
456
+ emoji: (message: string) => string;
457
+ code: (message: string) => string;
458
+ font: (message: string, param: string) => string;
459
+ size: (message: string, param: number) => string;
460
+ link: (message: string, param: string) => string;
461
+ red: (message: string) => string;
462
+ green: (message: string) => string;
463
+ blue: (message: string) => string;
464
+ yellow: (message: string) => string;
465
+ cyan: (message: string) => string;
466
+ magenta: (message: string) => string;
467
+ black: (message: string) => string;
468
+ white: (message: string) => string;
469
+ gray: (message: string) => string;
470
+ };
471
+ color: {
472
+ hsv: typeof hsv;
473
+ linearRGB: (rgba: number[]) => number[];
474
+ sRGB: (linear: number[]) => number[];
475
+ rgbToHex: (r: number | [
476
+ number,
477
+ number,
478
+ number
479
+ ] | {
480
+ r: number;
481
+ g: number;
482
+ b: number;
483
+ }, g?: number, b?: number) => string;
484
+ DEFAULT_COLORSET: number[][];
485
+ };
486
+ uuid: {
487
+ UUID_PATTERN: RegExp;
488
+ match: (str: string) => boolean;
489
+ };
490
+ pattern: {
491
+ explode: (str: string) => RegExp;
492
+ };
493
+ time: {
494
+ parseDuration: typeof parseDuration;
495
+ parseBrickadiaTime: typeof parseBrickadiaTime;
496
+ };
497
+ map: {
498
+ DEFAULT_MAPS: {
499
+ name: string;
500
+ brName: string;
501
+ }[]; /** Brick name from catalog (Turkey Body, 4x Cube) */
502
+ brn2n: typeof brn2n;
503
+ n2brn: typeof n2brn;
504
+ };
505
+ brick: {
506
+ BRICK_CONSTANTS: {
507
+ rotationTable: number[];
508
+ translationTable: (([x, y, z]: [
509
+ number,
510
+ number,
511
+ number
512
+ ]) => [
513
+ number,
514
+ number,
515
+ number
516
+ ])[];
517
+ orientationMap: Record<string, [
518
+ number,
519
+ number
520
+ ]>;
521
+ DEFAULT_MATERIALS: string[];
522
+ brickSizeMap: Record<string, [
523
+ number,
524
+ number,
525
+ number
526
+ ]>;
527
+ };
528
+ checkBounds: typeof checkBounds;
529
+ getBounds: typeof getBounds;
530
+ getBrickSize: typeof getBrickSize;
531
+ getScaleAxis: typeof getScaleAxis;
532
+ setOwnership: typeof setOwnership;
533
+ rotate: typeof rotate;
534
+ rotate_x: typeof rotate_x;
535
+ rotate_y: typeof rotate_y;
536
+ rotate_z: typeof rotate_z;
537
+ d2o: (direction: number, rotation: number) => number;
538
+ o2d: (orientation: number) => number[];
539
+ };
540
+ wsl: () => number;
541
+ brs: {
542
+ read(rawBytes: Uint8Array, options?: {
543
+ bricks?: boolean;
544
+ preview?: boolean;
545
+ }): ReadSaveObject;
546
+ write(save: WriteSaveObject, options?: {
547
+ compress?: boolean;
548
+ }): Uint8Array;
549
+ utils: any;
550
+ constants: {
551
+ MAGIC: Uint8Array; /**
552
+ * True if the player is the host
553
+ */
554
+ LATEST_VERSION: number;
555
+ MAX_INT: number;
556
+ DEFAULT_UUID: string;
557
+ };
558
+ };
559
+ };
560
+ declare global {
561
+ export var Omegga: OmeggaLike;
562
+ export var Player: StaticPlayer;
563
+ export var OMEGGA_UTIL: typeof _OMEGGA_UTILS_IMPORT;
564
+ }
565
+ export declare type OL = OmeggaLike;
566
+ export declare type OP = OmeggaPlugin;
567
+ export declare type PC<T extends Record<string, unknown> = Record<string, unknown>> = PluginConfig<T>;
568
+ export declare type PS<T extends Record<string, unknown> = Record<string, unknown>> = PluginStore<T>;
569
+ export interface BrickBounds {
570
+ minBound: [
571
+ number,
572
+ number,
573
+ number
574
+ ];
575
+ maxBound: [
576
+ number,
577
+ number,
578
+ number
579
+ ];
580
+ center: [
581
+ number,
582
+ number,
583
+ number
584
+ ];
585
+ }
586
+ /** Created when a player clicks on a brick with an interact component */
587
+ export declare type BrickInteraction = {
588
+ /** Brick name from catalog (Turkey Body, 4x Cube) */
589
+ brick_name: string;
590
+ /** Player information, id, name, controller, and pawn */
591
+ player: {
592
+ id: string;
593
+ name: string;
594
+ controller: string;
595
+ pawn: string;
596
+ };
597
+ /** Brick center position */
598
+ position: [
599
+ number,
600
+ number,
601
+ number
602
+ ];
603
+ };
604
+ /** AutoRestart options */
605
+ export declare type AutoRestartConfig = {
606
+ players: boolean;
607
+ bricks: boolean;
608
+ minigames: boolean;
609
+ environment: boolean;
610
+ announcement: boolean;
611
+ };
612
+ export interface OmeggaPlayer {
613
+ /** player name */
614
+ name: string;
615
+ /** player uuid */
616
+ id: string;
617
+ /** player controller id */
618
+ controller: string;
619
+ /** player state id */
620
+ state: string;
621
+ /**
622
+ * Returns omegga
623
+ */
624
+ getOmegga(): OmeggaLike;
625
+ /**
626
+ * Clone a player
627
+ */
628
+ clone(): OmeggaPlayer;
629
+ /**
630
+ * Get raw player info (to feed into a constructor)
631
+ */
632
+ raw(): [
633
+ string,
634
+ string,
635
+ string,
636
+ string
637
+ ];
638
+ /**
639
+ * True if the player is the host
640
+ */
641
+ isHost(): boolean;
642
+ /**
643
+ * Clear player's bricks
644
+ * @param quiet clear bricks quietly
645
+ */
646
+ clearBricks(quiet?: boolean): void;
647
+ /**
648
+ * Get player's roles, if any
649
+ */
650
+ getRoles(): readonly string[];
651
+ /**
652
+ * Get player's permissions in a map like `{"Bricks.ClearOwn": true, ...}`
653
+ * @return permissions map
654
+ */
655
+ getPermissions(): Record<string, boolean>;
656
+ /**
657
+ * Get player's name color
658
+ * @return 6 character hex string
659
+ */
660
+ getNameColor(): string;
661
+ /**
662
+ * Get the player's pawn
663
+ * @return pawn
664
+ */
665
+ getPawn(): Promise<string>;
666
+ /**
667
+ * Get player's position
668
+ * @return [x, y, z] coordinates
669
+ */
670
+ getPosition(): Promise<[
671
+ number,
672
+ number,
673
+ number
674
+ ]>;
675
+ /**
676
+ * Gets a user's ghost brick info (by uuid, name, controller, or player object)
677
+ * @return ghost brick data
678
+ */
679
+ getGhostBrick(): Promise<{
680
+ targetGrid: string;
681
+ location: number[];
682
+ orientation: string;
683
+ }>;
684
+ /**
685
+ * gets a user's paint tool properties
686
+ */
687
+ getPaint(): Promise<{
688
+ materialIndex: string;
689
+ materialAlpha: string;
690
+ material: string;
691
+ color: number[];
692
+ }>;
693
+ /**
694
+ * gets whether or not the player is crouching
695
+ */
696
+ isCrouched(pawn?: string): Promise<boolean>;
697
+ /**
698
+ * gets whether or not the player is dead
699
+ */
700
+ isDead(pawn?: string): Promise<boolean>;
701
+ /**
702
+ * Gets the bounds of the template in the user's clipboard (bounds of original selection box)
703
+ * @return template bounds
704
+ */
705
+ getTemplateBounds(): Promise<BrickBounds>;
706
+ /**
707
+ * Get bricks inside template bounds
708
+ * @return BRS JS Save Data
709
+ */
710
+ getTemplateBoundsData(): Promise<ReadSaveObject>;
711
+ /**
712
+ * Load bricks at ghost brick location
713
+ * @param saveData save data to load
714
+ */
715
+ loadDataAtGhostBrick(saveData: WriteSaveObject, options?: {
716
+ rotate?: boolean;
717
+ offX?: number;
718
+ offY?: number;
719
+ offZ?: number;
720
+ quiet?: boolean;
721
+ }): Promise<void>;
722
+ /**
723
+ * Load bricks on this player's clipboard
724
+ * @param saveName Save to load
725
+ */
726
+ loadBricks(saveName: string): void;
727
+ /**
728
+ * Load bricks on this player's clipboard passing save data
729
+ * @param saveData save data to load
730
+ */
731
+ loadSaveData(saveData: WriteSaveObject, options?: {
732
+ rotate?: boolean;
733
+ offX?: number;
734
+ offY?: number;
735
+ offZ?: number;
736
+ quiet?: boolean;
737
+ }): Promise<void>;
738
+ /**
739
+ * Kills this player
740
+ */
741
+ kill(): void;
742
+ /**
743
+ * Damages a player
744
+ * @param amount Amount to damage
745
+ */
746
+ damage(amount: number): void;
747
+ /**
748
+ * Heal this player
749
+ * @param amount to heal
750
+ */
751
+ heal(amount: number): void;
752
+ /**
753
+ * Gives a player an item
754
+ * @param item Item name (Weapon_Bow)
755
+ */
756
+ giveItem(item: WeaponClass | string): void;
757
+ /**
758
+ * Removes an item from a player's inventory
759
+ * @param item Item name (Weapon_Bow)
760
+ */
761
+ takeItem(item: WeaponClass | string): void;
762
+ }
763
+ export interface StaticPlayer {
764
+ /**
765
+ * get a player's roles, if any
766
+ * @param omegga omegga instance
767
+ * @param id player uuid
768
+ * @return list of roles
769
+ */
770
+ getRoles(omegga: OmeggaLike, id: string): readonly string[];
771
+ /**
772
+ * get a player's permissions in a map like `{"Bricks.ClearOwn": true, ...}`
773
+ * @param omegga Omegga instance
774
+ * @param id player uuid
775
+ * @return permissions map
776
+ */
777
+ getPermissions(omegga: OmeggaLike, id: string): Record<string, boolean>;
778
+ /**
779
+ * Kills a player
780
+ * @param omegga Omegga instance
781
+ * @param target Player or player name/id
782
+ */
783
+ kill(omegga: OmeggaLike, target: string | OmeggaPlayer): void;
784
+ /**
785
+ * Damages a player
786
+ * @param omegga Omegga instance
787
+ * @param target Player or player name/id
788
+ * @param amount Damage amount
789
+ */
790
+ damage(omegga: OmeggaLike, target: string | OmeggaPlayer, amount: number): void;
791
+ /**
792
+ * Heal a player
793
+ * @param omegga Omegga instance
794
+ * @param target Player or player name/id
795
+ * @param amount Heal amount
796
+ */
797
+ heal(omegga: OmeggaLike, target: string | OmeggaPlayer, amount: number): void;
798
+ /**
799
+ * Gives a player an item
800
+ * @param omegga Omegga instance
801
+ * @param target Player or player name/id
802
+ * @param item Item name (Weapon_Bow)
803
+ */
804
+ giveItem(omegga: OmeggaLike, target: string | OmeggaPlayer, item: WeaponClass | string): void;
805
+ /**
806
+ * Removes an item from a player's inventory
807
+ * @param omegga Omegga instance
808
+ * @param target Player or player name/id
809
+ * @param item Item name (Weapon_Bow)
810
+ */
811
+ takeItem(omegga: OmeggaLike, target: string | OmeggaPlayer, item: WeaponClass | string): void;
812
+ }
813
+ export interface InjectedCommands {
814
+ /** Get server status */
815
+ getServerStatus(this: OmeggaLike): Promise<IServerStatus>;
816
+ /** Get a list of minigames and their indices */
817
+ listMinigames(this: OmeggaLike): Promise<IMinigameList>;
818
+ /** Get all player positions and pawns */
819
+ getAllPlayerPositions(this: OmeggaLike): Promise<IPlayerPositions>;
820
+ /** Get minigames and members */
821
+ getMinigames(this: OmeggaLike): Promise<ILogMinigame[]>;
822
+ }
823
+ export interface MockEventEmitter {
824
+ addListener(event: string, listener: Function): this;
825
+ emit(event: string, ...args: any[]): boolean;
826
+ eventNames(): (string | symbol)[];
827
+ getMaxListeners(): number;
828
+ listenerCount(event: string): number;
829
+ listeners(event: string): Function[];
830
+ off(event: string, listener: Function): this;
831
+ on(event: string, listener: Function): this;
832
+ once(event: string, listener: Function): this;
833
+ prependListener(event: string, listener: Function): this;
834
+ prependOnceListener(event: string, listener: Function): this;
835
+ rawListeners(event: string): Function[];
836
+ removeAllListeners(event?: string): this;
837
+ removeListener(event: string, listener: Function): this;
838
+ setMaxListeners(maxListeners: number): this;
839
+ on(event: "close", listener: () => void): this;
840
+ on(event: "line", listener: (line: string) => void): this;
841
+ on(event: "start", listener: (info: {
842
+ map: string;
843
+ }) => void): this;
844
+ on(event: "version", listener: (version: number) => void): this;
845
+ on(event: "unauthorized", listener: () => void): this;
846
+ on(event: "join", listener: (player: OmeggaPlayer) => void): this;
847
+ on(event: "leave", listener: (player: OmeggaPlayer) => void): this;
848
+ on(event: "chat", listener: (name: string, message: string) => void): this;
849
+ on(event: "mapchange", listener: (info: {
850
+ map: string;
851
+ }) => void): this;
852
+ on(event: "autorestart", listener: (config: AutoRestartConfig) => void): this;
853
+ on(event: "interact", listener: (interaction: BrickInteraction) => void): this;
854
+ }
855
+ export interface OmeggaLike extends OmeggaCore, LogWrangling, InjectedCommands, MockEventEmitter {
856
+ writeln(line: string): void;
857
+ /** game CL version*/
858
+ version: number;
859
+ /** verbose logging is enabled*/
860
+ verbose: boolean;
861
+ /** list of players */
862
+ players: OmeggaPlayer[];
863
+ /** server host */
864
+ host?: {
865
+ id: string;
866
+ name: string;
867
+ };
868
+ /** server is started */
869
+ started: boolean;
870
+ /** server is starting */
871
+ starting: boolean;
872
+ /** server is stopping */
873
+ stopping: boolean;
874
+ /** current map */
875
+ currentMap: string;
876
+ /** path to config files */
877
+ configPath: string;
878
+ /** path to saves */
879
+ savePath: string;
880
+ /** path to presets */
881
+ presetPath: string;
882
+ /** get a plugin's name, documentation, and loaded status
883
+ * If run in an unsafe plugin, the emitPlugin method sends events from
884
+ * an "unsafe" plugin
885
+ */
886
+ getPlugin(name: string): Promise<PluginInterop>;
887
+ }
888
+ export interface OmeggaCore {
889
+ /**
890
+ * get a list of players
891
+ * @return list of players {id: uuid, name: name} objects
892
+ */
893
+ getPlayers(): {
894
+ id: string;
895
+ name: string;
896
+ controller: string;
897
+ state: string;
898
+ }[];
899
+ /**
900
+ * find a player by name, id, controller, or state
901
+ * @param target - name, id, controller, or state
902
+ */
903
+ getPlayer(target: string): OmeggaPlayer | null;
904
+ /**
905
+ * find a player by rough name, prioritize exact matches and get fuzzier
906
+ * @param name player name, fuzzy
907
+ */
908
+ findPlayerByName(name: string): OmeggaPlayer | null;
909
+ /**
910
+ * get the host's ID
911
+ * @return Host Id
912
+ */
913
+ getHostId(): string;
914
+ /**
915
+ * broadcast messages to chat
916
+ * messages are broken by new line
917
+ * multiple arguments are additional lines
918
+ * all messages longer than 512 characters are deleted automatically, though omegga wouldn't have sent them anyway
919
+ * @param messages unescaped chat messages to send. may need to wrap messages with quotes
920
+ */
921
+ broadcast(...messages: string[]): void;
922
+ /**
923
+ * whisper messages to a player's chat
924
+ * messages are broken by new line
925
+ * multiple arguments are additional lines
926
+ * all messages longer than 512 characters are deleted automatically, though omegga wouldn't have sent them anyway
927
+ * @param target - player identifier or player object
928
+ * @param messages - unescaped chat messages to send. may need to wrap messages with quotes
929
+ */
930
+ whisper(target: string | OmeggaPlayer, ...messages: string[]): void;
931
+ /**
932
+ * prints text to the middle of a player's screen
933
+ * all messages longer than 512 characters are deleted automatically
934
+ * @param target - player identifier or player object
935
+ * @param message - unescaped chat messages to send. may need to wrap messages with quotes
936
+ */
937
+ middlePrint(target: string | OmeggaPlayer, message: string): void;
938
+ /**
939
+ * Save a minigame preset based on a minigame index
940
+ * @param index minigame index
941
+ * @param name preset name
942
+ */
943
+ saveMinigame(index: number, name: string): void;
944
+ /**
945
+ * Delete a minigame
946
+ * @param index minigame index
947
+ */
948
+ deleteMinigame(index: number): void;
949
+ /**
950
+ * Reset a minigame
951
+ * @param index minigame index
952
+ */
953
+ resetMinigame(index: number): void;
954
+ /**
955
+ * Force the next round in a minigame
956
+ * @param index minigame index
957
+ */
958
+ nextRoundMinigame(index: number): void;
959
+ /**
960
+ * Load an Minigame preset
961
+ * @param presetName preset name
962
+ * @param owner owner id/name
963
+ */
964
+ loadMinigame(presetName: string, owner?: string): void;
965
+ /**
966
+ * Get all presets in the minigame folder and child folders
967
+ */
968
+ getMinigamePresets(): string[];
969
+ /**
970
+ * Reset the environment settings
971
+ */
972
+ resetEnvironment(): void;
973
+ /**
974
+ * Save an environment preset
975
+ * @param presetName preset name
976
+ */
977
+ saveEnvironment(presetName: string): void;
978
+ /**
979
+ * Load an environment preset
980
+ * @param presetName preset name
981
+ */
982
+ loadEnvironment(presetName: string): void;
983
+ /**
984
+ * Load some environment preset data
985
+ * @param preset preset data
986
+ */
987
+ loadEnvironmentData(preset: EnvironmentPreset | EnvironmentPreset["data"]["groups"]): void;
988
+ /**
989
+ * Get all presets in the environment folder and child folders
990
+ */
991
+ getEnvironmentPresets(): string[];
992
+ /**
993
+ * Clear a user's bricks (by uuid, name, controller, or player object)
994
+ * @param target player or player identifier
995
+ * @param quiet quietly clear bricks
996
+ */
997
+ clearBricks(target: string | {
998
+ id: string;
999
+ }, quiet?: boolean): void;
1000
+ /**
1001
+ * Clear a region of bricks
1002
+ * @param region region to clear
1003
+ * @param options optional settings
1004
+ */
1005
+ clearRegion(region: {
1006
+ center: [
1007
+ number,
1008
+ number,
1009
+ number
1010
+ ];
1011
+ extent: [
1012
+ number,
1013
+ number,
1014
+ number
1015
+ ];
1016
+ }, options?: {
1017
+ target?: string | OmeggaPlayer;
1018
+ }): void;
1019
+ /**
1020
+ * Clear all bricks on the server
1021
+ * @param quiet quietly clear bricks
1022
+ */
1023
+ clearAllBricks(quiet?: boolean): void;
1024
+ /**
1025
+ * Save bricks under a filename
1026
+ * @param saveName save file name
1027
+ * @param region region of bricks to save
1028
+ */
1029
+ saveBricks(saveName: string, region?: {
1030
+ center: [
1031
+ number,
1032
+ number,
1033
+ number
1034
+ ];
1035
+ extent: [
1036
+ number,
1037
+ number,
1038
+ number
1039
+ ];
1040
+ }): void;
1041
+ /**
1042
+ * Save bricks under a filename, with a promise
1043
+ * @param saveName save file name
1044
+ * @param region region of bricks to save
1045
+ */
1046
+ saveBricksAsync(saveName: string, region?: {
1047
+ center: [
1048
+ number,
1049
+ number,
1050
+ number
1051
+ ];
1052
+ extent: [
1053
+ number,
1054
+ number,
1055
+ number
1056
+ ];
1057
+ }): Promise<void>;
1058
+ /**
1059
+ * Load bricks on the server
1060
+ */
1061
+ loadBricks(saveName: string, options?: {
1062
+ offX?: number;
1063
+ offY?: number;
1064
+ offZ?: number;
1065
+ quiet?: boolean;
1066
+ correctPalette?: boolean;
1067
+ correctCustom?: boolean;
1068
+ }): void;
1069
+ /**
1070
+ * Load bricks on the server into a player's clipbaord
1071
+ */
1072
+ loadBricksOnPlayer(saveName: string, player: string | OmeggaPlayer, options?: {
1073
+ offX?: number;
1074
+ offY?: number;
1075
+ offZ?: number;
1076
+ correctPalette?: boolean;
1077
+ correctCustom?: boolean;
1078
+ }): void;
1079
+ /**
1080
+ * Get all saves in the save folder and child folders
1081
+ */
1082
+ getSaves(): string[];
1083
+ /**
1084
+ * Checks if a save exists and returns an absolute path
1085
+ * @param saveName Save filename
1086
+ * @return Path to string
1087
+ */
1088
+ getSavePath(saveName: string): string;
1089
+ /**
1090
+ * unsafely load save data (wrap in try/catch)
1091
+ * @param saveName save file name
1092
+ * @param saveData BRS JS Save data
1093
+ */
1094
+ writeSaveData(saveName: string, saveData: WriteSaveObject): void;
1095
+ /**
1096
+ * unsafely read save data (wrap in try/catch)
1097
+ * @param saveName save file name
1098
+ * @param nobricks only read save header data
1099
+ * @return BRS JS Save Data
1100
+ */
1101
+ readSaveData(saveName: string, nobricks?: boolean): ReadSaveObject;
1102
+ /**
1103
+ * load bricks from save data and resolve when game finishes loading
1104
+ * @param saveData BRS JS Save data
1105
+ */
1106
+ loadSaveData(saveData: WriteSaveObject, options?: {
1107
+ offX?: number;
1108
+ offY?: number;
1109
+ offZ?: number;
1110
+ quiet?: boolean;
1111
+ correctPalette?: boolean;
1112
+ correctCustom?: boolean;
1113
+ }): Promise<void>;
1114
+ /**
1115
+ * load bricks from save data and resolve when game finishes loading
1116
+ * @param saveData BRS JS Save data
1117
+ * @param player Player name/id or player object
1118
+ */
1119
+ loadSaveDataOnPlayer(saveData: WriteSaveObject, player: string | OmeggaPlayer, options?: {
1120
+ offX?: number;
1121
+ offY?: number;
1122
+ offZ?: number;
1123
+ correctPalette?: boolean;
1124
+ correctCustom?: boolean;
1125
+ }): Promise<void>;
1126
+ /**
1127
+ * get current bricks as save data
1128
+ */
1129
+ getSaveData(region?: {
1130
+ center: [
1131
+ number,
1132
+ number,
1133
+ number
1134
+ ];
1135
+ extent: [
1136
+ number,
1137
+ number,
1138
+ number
1139
+ ];
1140
+ }): Promise<ReadSaveObject>;
1141
+ /**
1142
+ * Change server map
1143
+ * @param map Map name
1144
+ */
1145
+ changeMap(map: string): Promise<boolean>;
1146
+ /**
1147
+ * Get up-to-date role setup from RoleSetup.json
1148
+ */
1149
+ getRoleSetup(): BRRoleSetup;
1150
+ /**
1151
+ * Get up-to-date role assignments from RoleAssignment.json
1152
+ */
1153
+ getRoleAssignments(): BRRoleAssignments;
1154
+ /**
1155
+ * Get up-to-date ban list from BanList.json
1156
+ */
1157
+ getBanList(): BRBanList;
1158
+ /**
1159
+ * Get up-to-date name cache from PlayerNameCache.json
1160
+ */
1161
+ getNameCache(): BRPlayerNameCache;
1162
+ }
1163
+ /** A simple document store for plugins */
1164
+ export interface PluginStore<Storage extends Record<string, unknown> = Record<string, unknown>> {
1165
+ /** Get a value from plugin storage */
1166
+ get<T extends keyof Storage>(key: T): Promise<Storage[T]>;
1167
+ /** Set a value to plugin storage */
1168
+ set<T extends keyof Storage>(key: T, value: Storage[T]): Promise<void>;
1169
+ /** Delete a value from plugin storage */
1170
+ delete(key: string): Promise<void>;
1171
+ /** Wipe all values in plugin storage */
1172
+ wipe(): Promise<void>;
1173
+ /** Count entries in plugin storage */
1174
+ count(): Promise<number>;
1175
+ /** Get a list of keys in plugin storage */
1176
+ keys(): Promise<(keyof Storage)[]>;
1177
+ }
1178
+ /** A config representative of the config outlined in doc.json */
1179
+ export declare type PluginConfig<T extends Record<string, unknown> = Record<string, unknown>> = T;
1180
+ /** An omegga plugin */
1181
+ export default abstract class OmeggaPlugin<Config extends Record<string, unknown> = Record<string, unknown>, Storage extends Record<string, unknown> = Record<string, unknown>> {
1182
+ omegga: OmeggaLike;
1183
+ config: PluginConfig<Config>;
1184
+ store: PluginStore<Storage>;
1185
+ constructor(omegga: OmeggaLike, config: PluginConfig<Config>, store: PluginStore<Storage>);
1186
+ /** Run when plugin starts, returns /commands it uses */
1187
+ abstract init(): Promise<void | {
1188
+ registeredCommands?: string[];
1189
+ }>;
1190
+ /** Run when plugin is stopped */
1191
+ abstract stop(): Promise<void>;
1192
+ /** Run when another plugin tries to interact with this plugin
1193
+ * @param event Event name
1194
+ * @param from Name of origin plugin
1195
+ * @return value other plugin expects
1196
+ */
1197
+ abstract pluginEvent?(event: string, from: string, ...args: any[]): Promise<unknown>;
1198
+ }
1199
+ export interface LogWrangling {
1200
+ /** Add a passive pattern on console output that invokes callback on match */
1201
+ addMatcher<T>(pattern: IMatcher<T>["pattern"], callback: IMatcher<T>["callback"]): void;
1202
+ /** Run an active pattern on console output that resolves a match */
1203
+ addWatcher<T = RegExpMatchArray>(pattern: IWatcher<T>["pattern"], options?: {
1204
+ timeoutDelay?: number;
1205
+ bundle?: boolean;
1206
+ debounce?: boolean;
1207
+ afterMatchDelay?: number;
1208
+ last?: IWatcher<T>["last"];
1209
+ exec?: () => void;
1210
+ }): Promise<IWatcher<T>["matches"]>;
1211
+ /** Run a command and capture bundled output */
1212
+ watchLogChunk<T = string>(cmd: string, pattern: IWatcher<T>["pattern"], options?: {
1213
+ first?: "index" | ((match: T) => boolean);
1214
+ last?: IWatcher<T>["last"];
1215
+ afterMatchDelay?: number;
1216
+ timeoutDelay?: number;
1217
+ }): Promise<IWatcher<T>["matches"]>;
1218
+ /** Run a command and capture bundled output for array functions */
1219
+ watchLogArray<Item extends Record<string, string> = Record<string, string>, Member extends Record<string, string> = Record<string, string>>(cmd: string, itemPattern: RegExp, memberPattern: RegExp): Promise<{
1220
+ item: Item;
1221
+ members: Member[];
1222
+ }[]>;
1223
+ }
1224
+ export declare type WatcherPattern<T> = (line: string, match: RegExpMatchArray) => T | RegExpMatchArray | "[OMEGGA_WATCHER_DONE]";
1225
+ export declare type IMatcher<T> = {
1226
+ pattern: RegExp;
1227
+ callback: (match: RegExpMatchArray) => boolean;
1228
+ } | {
1229
+ pattern: (line: string, match: RegExpMatchArray) => T;
1230
+ callback: (match: RegExpMatchArray) => T;
1231
+ };
1232
+ export declare type IWatcher<T> = {
1233
+ bundle: boolean;
1234
+ debounce: boolean;
1235
+ timeoutDelay: number;
1236
+ afterMatchDelay: number;
1237
+ last: (match: T) => boolean;
1238
+ callback: () => void;
1239
+ resolve: (...args: any[]) => void;
1240
+ remove: () => void;
1241
+ done: () => void;
1242
+ timeout: ReturnType<typeof setTimeout>;
1243
+ } & ({
1244
+ pattern: WatcherPattern<T>;
1245
+ matches: T[];
1246
+ } | {
1247
+ pattern: RegExp;
1248
+ matches: RegExpMatchArray[];
1249
+ });
1250
+ export declare type IPluginConfigDefinition = {
1251
+ description: string;
1252
+ } & ({
1253
+ type: "string" | "password" | "role";
1254
+ default: string;
1255
+ } | {
1256
+ type: "boolean";
1257
+ default: boolean;
1258
+ } | {
1259
+ type: "number";
1260
+ default: number;
1261
+ } | {
1262
+ type: "enum";
1263
+ options: (string | number)[];
1264
+ default: string | number;
1265
+ } | {
1266
+ type: "players";
1267
+ default: {
1268
+ id: string;
1269
+ name: string;
1270
+ };
1271
+ } | ({
1272
+ type: "list";
1273
+ } & ({
1274
+ itemType: "string";
1275
+ default: string[];
1276
+ } | {
1277
+ itemType: "number";
1278
+ default: number[];
1279
+ } | {
1280
+ itemType: "enum";
1281
+ options: (string | number)[];
1282
+ default: string | number;
1283
+ })));
1284
+ export interface IPluginCommandArgument {
1285
+ name: string;
1286
+ description: string;
1287
+ required?: boolean;
1288
+ }
1289
+ export interface IPluginCommand {
1290
+ name: string;
1291
+ description: string;
1292
+ example?: string;
1293
+ args: IPluginCommandArgument[];
1294
+ }
1295
+ export interface IPluginDocumentation {
1296
+ name: string;
1297
+ description: string;
1298
+ author: string;
1299
+ config: Record<string, IPluginConfigDefinition>;
1300
+ commands: IPluginCommand[];
1301
+ }
1302
+ export interface PluginInterop {
1303
+ name: string;
1304
+ documentation: IPluginDocumentation;
1305
+ loaded: boolean;
1306
+ emitPlugin?(event: string, args: any[]): Promise<any>;
1307
+ }
1308
+ export declare type WeaponClass = "Weapon_AntiMaterielRifle" | "Weapon_ArmingSword" | "Weapon_AssaultRifle" | "Weapon_AutoShotgun" | "Weapon_Battleaxe" | "Weapon_Bazooka" | "Weapon_Bow" | "Weapon_BullpupRifle" | "Weapon_BullpupSMG" | "Weapon_ChargedLongsword" | "Weapon_CrystalKalis" | "Weapon_Derringer" | "Weapon_FlintlockPistol" | "Weapon_GrenadeLauncher" | "Weapon_Handaxe" | "Weapon_HealthPotion" | "Weapon_HeavyAssaultRifle" | "Weapon_HeavySMG" | "Weapon_HeroSword" | "Weapon_HighPowerPistol" | "Weapon_HoloBlade" | "Weapon_HuntingShotgun" | "Weapon_Ikakalaka" | "Weapon_ImpactGrenade" | "Weapon_ImpactGrenadeLauncher" | "Weapon_ImpulseGrenade" | "Weapon_Khopesh" | "Weapon_Knife" | "Weapon_LeverActionRifle" | "Weapon_LightMachineGun" | "Weapon_LongSword" | "Weapon_MagnumPistol" | "Weapon_MicroSMG" | "Weapon_Minigun" | "Weapon_Pistol" | "Weapon_PulseCarbine" | "Weapon_QuadLauncher" | "Weapon_Revolver" | "Weapon_RocketJumper" | "Weapon_RocketLauncher" | "Weapon_Sabre" | "Weapon_SemiAutoRifle" | "Weapon_ServiceRifle" | "Weapon_Shotgun" | "Weapon_SlugShotgun" | "Weapon_Sniper" | "Weapon_Spatha" | "Weapon_StandardSubmachineGun" | "Weapon_StickGrenade" | "Weapon_SubmachineGun" | "Weapon_SuperShotgun" | "Weapon_SuppressedAssaultRifle" | "Weapon_SuppressedBullpupSMG" | "Weapon_SuppressedPistol" | "Weapon_SuppressedServiceRifle" | "Weapon_TacticalShotgun" | "Weapon_TacticalSMG" | "Weapon_Tomahawk" | "Weapon_TwinCannon" | "Weapon_TypewriterSMG" | "Weapon_Zweihander";
1309
+
1310
+ export {};