omegga 1.2.9 → 1.3.0
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/README.md +20 -1
- package/dist/brickadia/config.js +26 -90
- package/dist/brickadia/config.js.map +1 -1
- package/dist/brickadia/server.js +294 -293
- package/dist/brickadia/server.js.map +1 -1
- package/dist/cli/auth.js +149 -177
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/config.js +64 -66
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/index.js +14 -14
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/installer.js +37 -43
- package/dist/cli/installer.js.map +1 -1
- package/dist/cli/plugin.js +651 -682
- package/dist/cli/plugin.js.map +1 -1
- package/dist/cli/terminal.js +811 -733
- package/dist/cli/terminal.js.map +1 -1
- package/dist/config/formats/format_js.js +6 -6
- package/dist/config/formats/format_js.js.map +1 -1
- package/dist/config/formats/format_yml.js +7 -10
- package/dist/config/formats/format_yml.js.map +1 -1
- package/dist/config/index.js +46 -68
- package/dist/config/index.js.map +1 -1
- package/dist/config/reader.js +16 -27
- package/dist/config/reader.js.map +1 -1
- package/dist/config/validator.js +23 -25
- package/dist/config/validator.js.map +1 -1
- package/dist/config/writer.js +11 -21
- package/dist/config/writer.js.map +1 -1
- package/dist/index.js +18 -64
- package/dist/index.js.map +1 -1
- package/dist/info/default_commands.json.js +39 -0
- package/dist/info/default_commands.json.js.map +1 -0
- package/dist/logger.js +61 -60
- package/dist/logger.js.map +1 -1
- package/dist/main.js +424 -471
- package/dist/main.js.map +1 -1
- package/dist/omegga/auth.js +101 -148
- package/dist/omegga/auth.js.map +1 -1
- package/dist/omegga/commandInjector.js +261 -251
- package/dist/omegga/commandInjector.js.map +1 -1
- package/dist/omegga/index.js +14 -52
- package/dist/omegga/index.js.map +1 -1
- package/dist/omegga/logWrangler.js +224 -275
- package/dist/omegga/logWrangler.js.map +1 -1
- package/dist/omegga/matchers/auth.js +36 -50
- package/dist/omegga/matchers/auth.js.map +1 -1
- package/dist/omegga/matchers/chat.js +49 -71
- package/dist/omegga/matchers/chat.js.map +1 -1
- package/dist/omegga/matchers/command.js +25 -36
- package/dist/omegga/matchers/command.js.map +1 -1
- package/dist/omegga/matchers/exit.js +15 -18
- package/dist/omegga/matchers/exit.js.map +1 -1
- package/dist/omegga/matchers/index.js +26 -40
- package/dist/omegga/matchers/index.js.map +1 -1
- package/dist/omegga/matchers/init.js +20 -23
- package/dist/omegga/matchers/init.js.map +1 -1
- package/dist/omegga/matchers/interact.js +58 -64
- package/dist/omegga/matchers/interact.js.map +1 -1
- package/dist/omegga/matchers/join.js +74 -95
- package/dist/omegga/matchers/join.js.map +1 -1
- package/dist/omegga/matchers/leave.js +43 -56
- package/dist/omegga/matchers/leave.js.map +1 -1
- package/dist/omegga/matchers/mapChange.js +26 -35
- package/dist/omegga/matchers/mapChange.js.map +1 -1
- package/dist/omegga/matchers/minigameJoin.js +24 -31
- package/dist/omegga/matchers/minigameJoin.js.map +1 -1
- package/dist/omegga/matchers/version.js +42 -49
- package/dist/omegga/matchers/version.js.map +1 -1
- package/dist/omegga/player.js +527 -527
- package/dist/omegga/player.js.map +1 -1
- package/dist/omegga/plugin/interface.js +91 -98
- package/dist/omegga/plugin/interface.js.map +1 -1
- package/dist/omegga/plugin/plugin_jsonrpc_stdio.js +524 -429
- package/dist/omegga/plugin/plugin_jsonrpc_stdio.js.map +1 -1
- package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.js +282 -294
- package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.js.map +1 -1
- package/dist/omegga/plugin/plugin_node_safe.js +365 -393
- package/dist/omegga/plugin/plugin_node_safe.js.map +1 -1
- package/dist/omegga/plugin/plugin_node_unsafe.js +119 -179
- package/dist/omegga/plugin/plugin_node_unsafe.js.map +1 -1
- package/dist/omegga/plugin.js +402 -347
- package/dist/omegga/plugin.js.map +1 -1
- package/dist/omegga/server.js +742 -774
- package/dist/omegga/server.js.map +1 -1
- package/dist/omegga/wrapper.js +64 -91
- package/dist/omegga/wrapper.js.map +1 -1
- package/dist/plugin.js +11 -31
- package/dist/plugin.js.map +1 -1
- package/dist/softconfig.js +121 -100
- package/dist/softconfig.js.map +1 -1
- package/dist/updater/steam.js +97 -112
- package/dist/updater/steam.js.map +1 -1
- package/dist/util/brdb.js +496 -528
- package/dist/util/brdb.js.map +1 -1
- package/dist/util/brick/checkBounds.js +11 -15
- package/dist/util/brick/checkBounds.js.map +1 -1
- package/dist/util/brick/constants.js +723 -174
- package/dist/util/brick/constants.js.map +1 -1
- package/dist/util/brick/displayName.js +204 -211
- package/dist/util/brick/displayName.js.map +1 -1
- package/dist/util/brick/getBounds.js +29 -41
- package/dist/util/brick/getBounds.js.map +1 -1
- package/dist/util/brick/getBrickSize.js +6 -7
- package/dist/util/brick/getBrickSize.js.map +1 -1
- package/dist/util/brick/getScaleAxis.js +24 -30
- package/dist/util/brick/getScaleAxis.js.map +1 -1
- package/dist/util/brick/index.js +8 -29
- package/dist/util/brick/index.js.map +1 -1
- package/dist/util/brick/rotate.js +29 -34
- package/dist/util/brick/rotate.js.map +1 -1
- package/dist/util/brick/setOwnership.js +13 -19
- package/dist/util/brick/setOwnership.js.map +1 -1
- package/dist/util/chat.js +53 -44
- package/dist/util/chat.js.map +1 -1
- package/dist/util/color.js +112 -124
- package/dist/util/color.js.map +1 -1
- package/dist/util/file.js +54 -98
- package/dist/util/file.js.map +1 -1
- package/dist/util/index.js +84 -106
- package/dist/util/index.js.map +1 -1
- package/dist/util/map.js +18 -20
- package/dist/util/map.js.map +1 -1
- package/dist/util/pattern.js +6 -9
- package/dist/util/pattern.js.map +1 -1
- package/dist/util/time.js +31 -34
- package/dist/util/time.js.map +1 -1
- package/dist/util/uuid.js +10 -8
- package/dist/util/uuid.js.map +1 -1
- package/dist/util/wsl.js +19 -25
- package/dist/util/wsl.js.map +1 -1
- package/dist/version.js +7 -9
- package/dist/version.js.map +1 -1
- package/dist/webserver/backend/api.js +784 -874
- package/dist/webserver/backend/api.js.map +1 -1
- package/dist/webserver/backend/calendar.js +14 -17
- package/dist/webserver/backend/calendar.js.map +1 -1
- package/dist/webserver/backend/database.js +563 -613
- package/dist/webserver/backend/database.js.map +1 -1
- package/dist/webserver/backend/index.js +153 -191
- package/dist/webserver/backend/index.js.map +1 -1
- package/dist/webserver/backend/metrics.js +219 -248
- package/dist/webserver/backend/metrics.js.map +1 -1
- package/dist/webserver/backend/util.js +47 -68
- package/dist/webserver/backend/util.js.map +1 -1
- package/dist/worker.js +322 -0
- package/dist/worker.js.map +1 -0
- package/package.json +14 -10
- package/templates/safe-ts/omegga.d.ts +1 -1
- package/vite.backend.config.mts +46 -0
- package/vite.frontend.config.mts +58 -0
- package/vitest.backend.config.mts +7 -0
- package/dist/brickadia/config.d.ts +0 -3
- package/dist/brickadia/presets.d.ts +0 -65
- package/dist/brickadia/presets.js +0 -3
- package/dist/brickadia/presets.js.map +0 -1
- package/dist/brickadia/server.d.ts +0 -36
- package/dist/brickadia/types.d.ts +0 -45
- package/dist/brickadia/types.js +0 -3
- package/dist/brickadia/types.js.map +0 -1
- package/dist/cli/auth.d.ts +0 -26
- package/dist/cli/config.d.ts +0 -10
- package/dist/cli/index.d.ts +0 -30
- package/dist/cli/installer.d.ts +0 -1
- package/dist/cli/plugin.d.ts +0 -22
- package/dist/cli/terminal.d.ts +0 -25
- package/dist/config/authorizer.d.ts +0 -2
- package/dist/config/authorizer.js +0 -38
- package/dist/config/authorizer.js.map +0 -1
- package/dist/config/formats/format_js.d.ts +0 -3
- package/dist/config/formats/format_yml.d.ts +0 -3
- package/dist/config/index.d.ts +0 -18
- package/dist/config/reader.d.ts +0 -3
- package/dist/config/types.d.ts +0 -50
- package/dist/config/types.js +0 -3
- package/dist/config/types.js.map +0 -1
- package/dist/config/validator.d.ts +0 -6
- package/dist/config/writer.d.ts +0 -3
- package/dist/index.d.ts +0 -22
- package/dist/info/default_commands.json +0 -29
- package/dist/logger.d.ts +0 -41
- package/dist/main.d.ts +0 -1
- package/dist/omegga/auth.d.ts +0 -9
- package/dist/omegga/commandInjector.d.ts +0 -35
- package/dist/omegga/index.d.ts +0 -7
- package/dist/omegga/logWrangler.d.ts +0 -32
- package/dist/omegga/matchers/auth.d.ts +0 -10
- package/dist/omegga/matchers/chat.d.ts +0 -10
- package/dist/omegga/matchers/command.d.ts +0 -7
- package/dist/omegga/matchers/exit.d.ts +0 -3
- package/dist/omegga/matchers/index.d.ts +0 -3
- package/dist/omegga/matchers/init.d.ts +0 -3
- package/dist/omegga/matchers/interact.d.ts +0 -4
- package/dist/omegga/matchers/join.d.ts +0 -4
- package/dist/omegga/matchers/leave.d.ts +0 -4
- package/dist/omegga/matchers/mapChange.d.ts +0 -3
- package/dist/omegga/matchers/minigameJoin.d.ts +0 -9
- package/dist/omegga/matchers/types.d.ts +0 -5
- package/dist/omegga/matchers/types.js +0 -3
- package/dist/omegga/matchers/types.js.map +0 -1
- package/dist/omegga/matchers/version.d.ts +0 -3
- package/dist/omegga/player.d.ts +0 -81
- package/dist/omegga/plugin/interface.d.ts +0 -30
- package/dist/omegga/plugin/plugin_jsonrpc_stdio.d.ts +0 -23
- package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.d.ts +0 -145
- package/dist/omegga/plugin/plugin_node_safe/worker.d.ts +0 -1
- package/dist/omegga/plugin/plugin_node_safe/worker.js +0 -367
- package/dist/omegga/plugin/plugin_node_safe/worker.js.map +0 -1
- package/dist/omegga/plugin/plugin_node_safe.d.ts +0 -23
- package/dist/omegga/plugin/plugin_node_unsafe.d.ts +0 -13
- package/dist/omegga/plugin.d.ts +0 -63
- package/dist/omegga/server.d.ts +0 -166
- package/dist/omegga/types.d.ts +0 -49
- package/dist/omegga/types.js +0 -3
- package/dist/omegga/types.js.map +0 -1
- package/dist/omegga/wrapper.d.ts +0 -32
- package/dist/plugin.d.ts +0 -916
- package/dist/softconfig.d.ts +0 -67
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/updater/index.d.ts +0 -1
- package/dist/updater/index.js +0 -10
- package/dist/updater/index.js.map +0 -1
- package/dist/updater/steam.d.ts +0 -52
- package/dist/util/brdb.d.ts +0 -31
- package/dist/util/brick/checkBounds.d.ts +0 -8
- package/dist/util/brick/constants.d.ts +0 -18
- package/dist/util/brick/displayName.d.ts +0 -7
- package/dist/util/brick/getBounds.d.ts +0 -5
- package/dist/util/brick/getBrickSize.d.ts +0 -3
- package/dist/util/brick/getScaleAxis.d.ts +0 -3
- package/dist/util/brick/index.d.ts +0 -14
- package/dist/util/brick/rotate.d.ts +0 -16
- package/dist/util/brick/setOwnership.d.ts +0 -12
- package/dist/util/chat.d.ts +0 -23
- package/dist/util/color.d.ts +0 -13
- package/dist/util/file.d.ts +0 -5
- package/dist/util/index.d.ts +0 -183
- package/dist/util/map.d.ts +0 -6
- package/dist/util/pattern.d.ts +0 -1
- package/dist/util/time.d.ts +0 -39
- package/dist/util/uuid.d.ts +0 -3
- package/dist/util/wsl.d.ts +0 -2
- package/dist/version.d.ts +0 -2
- package/dist/webserver/backend/api.d.ts +0 -115
- package/dist/webserver/backend/calendar.d.ts +0 -5
- package/dist/webserver/backend/database.d.ts +0 -150
- package/dist/webserver/backend/index.d.ts +0 -30
- package/dist/webserver/backend/metrics.d.ts +0 -3
- package/dist/webserver/backend/types.d.ts +0 -114
- package/dist/webserver/backend/types.js +0 -3
- package/dist/webserver/backend/types.js.map +0 -1
- package/dist/webserver/backend/util.d.ts +0 -2
- package/dist/webserver/index.d.ts +0 -2
- package/dist/webserver/index.js +0 -9
- package/dist/webserver/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"player.js","sourceRoot":"","sources":["../../src/omegga/player.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"player.js","sources":["../../src/omegga/player.ts"],"sourcesContent":["import type { OmeggaLike, OmeggaPlayer, WeaponClass } from '@/plugin';\nimport { IBrickBounds } from '@util/brick';\nimport { WriteSaveObject } from 'brs-js';\nimport { brick as brickUtils, color } from '../util/';\n\nconst DEFAULT_PERMS: Record<string, string[]> = {\n moderator: [\n 'Bricks.ClearAll',\n 'Minigame.AlwaysLeave',\n 'Players.Kick',\n 'Players.TPInMinigame',\n 'Players.TPOthers',\n 'Self.Ghost',\n ],\n admin: [\n 'Bricks.ClearAll',\n 'Bricks.ClearOwn',\n 'Bricks.IgnoreTrust',\n 'Bricks.Load',\n 'Map.Environment',\n 'Minigame.AlwaysEdit',\n 'Minigame.AlwaysLeave',\n 'Minigame.AlwaysSwitchTeam',\n 'Minigame.MakeDefault',\n 'Minigame.MakePersistent',\n 'Minigame.UseAllBricks',\n 'Players.Ban',\n 'Players.Kick',\n 'Players.TPInMinigame',\n 'Players.TPOthers',\n 'Roles.Grant',\n 'Self.Ghost',\n 'Server.ChangeRoles',\n 'Server.ChangeSettings',\n 'Server.FreezeCamera',\n 'Tools.Selector.BypassLimits',\n 'Tools.Selector.BypassTimeouts',\n ],\n};\n\nclass Player implements OmeggaPlayer {\n #omegga: OmeggaLike;\n name: string;\n displayName: string;\n id: string;\n controller: string;\n state: string;\n\n static getRoles(omegga: OmeggaLike, id: string): readonly string[] {\n const data = omegga.getRoleAssignments().savedPlayerRoles[id];\n return Object.freeze(data && data.roles ? data.roles : []);\n }\n\n static getPermissions(\n omegga: OmeggaLike,\n id: string,\n ): Record<string, boolean> {\n const { roles, defaultRole } = omegga.getRoleSetup();\n\n // if the player is the host, the player has every permission\n if (omegga.host.id === id) {\n return Object.freeze(\n Object.fromEntries(\n [].concat(\n defaultRole.permissions.map(p => [p.name, true]),\n // sometimes the default role does not have every permission listed\n ...roles.map(r => r.permissions.map(p => [p.name, true])),\n ),\n ),\n );\n }\n\n // get the player's roles\n const playerRoles = Player.getRoles(omegga, id).map(r => r.toLowerCase());\n\n // default player permissions\n const permissions: Record<string, boolean> = {\n 'Bricks.ClearAll': false,\n 'Bricks.ClearOwn': true,\n 'Bricks.Delete': true,\n 'Bricks.Edit': true,\n 'Bricks.IgnoreTrust': false,\n 'Bricks.Paint': true,\n 'Bricks.Place': true,\n 'BricksItems.Spawn': true,\n 'Map.Change': false,\n 'Map.Environment': false,\n 'Map.SetSpawn': false,\n 'Minigame.AlwaysEdit': false,\n 'Minigame.AlwaysLeave': false,\n 'Minigame.AlwaysSwitchTeam': false,\n 'Minigame.Create': true,\n 'Minigame.MakePersistent': false,\n 'Minigame.UseAllBricks': false,\n 'Players.Ban': false,\n 'Players.TPInMinigame': false,\n 'Players.TPOthers': false,\n 'Players.TPSelf': true,\n 'Roles.Grant': false,\n 'Self.Flashlight': true,\n 'Self.Fly': true,\n 'Self.FreezeCamera': false,\n 'Self.Ghost': false,\n 'Self.Sprint': true,\n 'Self.Suicide': true,\n 'Tools.Selector.Use': true,\n };\n\n // apply all permissions from default role\n for (const p of defaultRole.permissions) {\n // technically this can never be Unchanged so it's always on enabled or allowed\n permissions[p.name] =\n p.state === 'Unchanged' ? permissions[p.name] : p.state === 'Allowed';\n }\n\n // loop through all the roles\n for (const role of roles) {\n // ignore ones the player does not have\n if (!playerRoles.includes(role.name.toLowerCase())) continue;\n\n const defaultPerms = DEFAULT_PERMS[role.name.toLowerCase()] || [];\n // iterate through default permissions\n for (const perm of defaultPerms) {\n // if they are not overriden, set it to true\n if (!role.permissions.find(r => r.name === perm))\n permissions[perm] = true;\n }\n\n // add all the new permissions the player now has\n for (const p of role.permissions) {\n // permission is disabled on forbidden, persisted on unchanged, and enabled on bEnabled or Allowed\n permissions[p.name] =\n p.state !== 'Forbidden' &&\n (p.state === 'Unchanged'\n ? permissions[p.name]\n : permissions[p.name] || p.state === 'Allowed');\n permissions[p.name] = permissions[p.name];\n }\n }\n\n return Object.freeze(permissions);\n }\n\n static kill(omegga: OmeggaLike, target: string | OmeggaPlayer) {\n if (typeof target === 'string') target = omegga.getPlayer(target);\n if (target?.name) omegga.writeln(`Server.Players.Kill \"${target?.name}\"`);\n }\n\n static damage(\n omegga: OmeggaLike,\n target: string | OmeggaPlayer,\n amount: number,\n ) {\n if (typeof target === 'string') target = omegga.getPlayer(target);\n if (amount === 0) return;\n if (target?.name)\n omegga.writeln(`Server.Players.Damage \"${target?.name}\" ${amount}`);\n }\n\n static heal(\n omegga: OmeggaLike,\n target: string | OmeggaPlayer,\n amount: number,\n ) {\n if (amount === 0) return;\n Player.damage(omegga, target, -amount);\n }\n\n static giveItem(\n omegga: OmeggaLike,\n target: string | OmeggaPlayer,\n item: WeaponClass,\n ) {\n if (typeof target === 'string') target = omegga.getPlayer(target);\n if (!item) return;\n if (target?.name)\n omegga.writeln(`Server.Players.GiveItem \"${target?.name}\" ${item}`);\n }\n\n static takeItem(\n omegga: OmeggaLike,\n target: string | OmeggaPlayer,\n item: WeaponClass,\n ) {\n if (typeof target === 'string') target = omegga.getPlayer(target);\n if (!item) return;\n if (target?.name)\n omegga.writeln(`Server.Players.RemoveItem \"${target?.name}\" ${item}`);\n }\n\n static setTeam(\n omegga: OmeggaLike,\n target: string | OmeggaPlayer,\n teamIndex: number,\n ) {\n if (typeof target === 'string') target = omegga.getPlayer(target);\n if (target?.name)\n omegga.writeln(`Server.Players.SetTeam \"${target?.name}\" ${teamIndex}`);\n }\n\n static setMinigame(\n omegga: OmeggaLike,\n target: string | OmeggaPlayer,\n index: number,\n ) {\n if (typeof target === 'string') target = omegga.getPlayer(target);\n if (target?.name)\n omegga.writeln(`Server.Players.SetMinigame \"${target?.name}\" ${index}`);\n }\n\n static setScore(\n omegga: OmeggaLike,\n target: string | OmeggaPlayer,\n minigameIndex: number,\n score: number,\n ) {\n if (typeof target === 'string') target = omegga.getPlayer(target);\n if (target?.name)\n omegga.writeln(\n `Server.Players.SetLeaderboardValue \"${target?.name}\" ${minigameIndex} ${score}`,\n );\n }\n\n static async getScore(\n omegga: OmeggaLike,\n target: string | OmeggaPlayer,\n minigameIndex: number,\n ): Promise<number> {\n if (typeof target === 'string') target = omegga.getPlayer(target);\n if (target?.name) {\n const name = target?.name;\n const id = target?.id;\n\n const match = await omegga.addWatcher(\n (line, match) => {\n if (match && match.groups.generator === 'LogConsoleCommands') {\n const test = match.groups.data.match(\n /^(?<uuid>.+) leaderboard value (?<minigame>\\d+) = (?<score>-?\\d+)$/,\n );\n if (!test) return;\n if (test.groups.uuid !== id) return;\n if (Number(test.groups.minigame) !== minigameIndex) return;\n return test;\n }\n },\n {\n timeoutDelay: 1000,\n exec: () =>\n omegga.writeln(\n `Server.Players.PrintLeaderboardValue \"${name}\" ${minigameIndex}`,\n ),\n },\n );\n if (match) return Number(match[0].groups.score);\n }\n return 0;\n }\n\n /**\n * players are not to be constructed\n * @constructor\n * @param omegga Omegga Instance\n * @param name Player Name\n * @param displayName Player Display Name\n * @param id Player Id\n * @param controller Player Controller\n * @param state Player State\n */\n constructor(\n omegga: OmeggaLike,\n username: string,\n displayName: string,\n id: string,\n controller: string,\n state: string,\n ) {\n this.#omegga = omegga;\n this.name = username;\n this.displayName = displayName;\n this.id = id;\n this.controller = controller;\n this.state = state;\n }\n\n getOmegga(): OmeggaLike {\n return this.#omegga;\n }\n\n clone(): OmeggaPlayer {\n return new Player(\n this.#omegga,\n this.name,\n this.displayName,\n this.id,\n this.controller,\n this.state,\n );\n }\n\n raw(): [string, string, string, string, string] {\n return [this.name, this.displayName, this.id, this.controller, this.state];\n }\n\n isHost(): boolean {\n return this.#omegga.host.id === this.id;\n }\n\n clearBricks(quiet = false) {\n this.#omegga.clearBricks(this.id, quiet);\n }\n\n getRoles(): readonly string[] {\n return Player.getRoles(this.#omegga, this.id);\n }\n\n getPermissions(): Record<string, boolean> {\n return Player.getPermissions(this.#omegga, this.id);\n }\n\n getNameColor(): string {\n const { roles, defaultRole, ownerRoleColor, bOwnerRoleHasColor } =\n this.#omegga.getRoleSetup();\n\n // host check if host has host color\n if (this.isHost() && bOwnerRoleHasColor)\n return color.rgbToHex(ownerRoleColor);\n\n // get the player's role\n const playerRoles = this.getRoles().map(r => r.toLowerCase());\n\n // only if the player actually has roles...\n if (playerRoles.length > 0) {\n // check the role list in reverse for the player's role (highest tier first)\n const found = roles\n .slice()\n .reverse()\n .find(\n role =>\n role.bHasColor && playerRoles.includes(role.name.toLowerCase()),\n );\n\n if (found) return color.rgbToHex(found.color);\n }\n\n return color.rgbToHex(\n defaultRole.bHasColor\n ? defaultRole.color\n : { r: 255, g: 255, b: 255, a: 255 },\n );\n }\n\n async getPawn(): Promise<string | null> {\n // given a player controller, match the player's pawn\n const pawnRegExp = new RegExp(\n `^(?<index>\\\\d+)\\\\) BP_PlayerController_C .+?PersistentLevel\\\\.${this.controller}\\\\.Pawn = .*?(?:BP_FigureV2_C'.+:PersistentLevel\\\\.)?(?<pawn>BP_FigureV2_C_\\\\d+|None)'?`,\n );\n\n // wait for the pawn watcher to return a pawn\n const [{ groups: { pawn = null } = {} } = {}] =\n await this.#omegga.watchLogChunk<RegExpMatchArray>(\n 'GetAll BP_PlayerController_C Pawn Name=' + this.controller,\n pawnRegExp,\n { first: 'index', timeoutDelay: 500 },\n );\n\n if (pawn === 'None') return null;\n\n return pawn;\n }\n\n async getPosition(): Promise<[number, number, number] | null> {\n // this is here because my text editor had weird syntax highlighting glitches when the other omeggas were replaced with this.#omegga...\n // guess the code is \"too new\" :egg:\n const omegga = this.#omegga;\n\n // given a player controller, match the player's pawn\n const pawnRegExp = new RegExp(\n `^(?<index>\\\\d+)\\\\) BP_PlayerController_C .+?PersistentLevel\\\\.${this.controller}\\\\.Pawn = .*?(?:BP_FigureV2_C'.+:PersistentLevel\\\\.)?(?<pawn>BP_FigureV2_C_\\\\d+|None)'?`,\n );\n\n // wait for the pawn watcher to return a pawn\n const [\n {\n groups: { pawn },\n },\n ] = await omegga.watchLogChunk<RegExpMatchArray>(\n 'GetAll BP_PlayerController_C Pawn Name=' + this.controller,\n pawnRegExp,\n { first: 'index', timeoutDelay: 100 },\n );\n\n if (pawn === 'None') return null;\n\n // given a player's pawn, match the player's position\n const posRegExp = new RegExp(\n `CapsuleComponent .+?PersistentLevel\\\\.${pawn}\\\\.CollisionCylinder\\\\.RelativeLocation = \\\\(X=(?<x>[\\\\d\\\\.-]+),Y=(?<y>[\\\\d\\\\.-]+),Z=(?<z>[\\\\d\\\\.-]+)\\\\)`,\n );\n\n // wait for the position promise\n const [\n {\n groups: { x, y, z },\n },\n ] = await omegga.addWatcher(posRegExp, {\n // request the position for this player's pawn\n exec: () =>\n omegga.writeln(\n `GetAll SceneComponent RelativeLocation Name=CollisionCylinder Outer=${pawn}`,\n ),\n timeoutDelay: 100,\n });\n\n // return the player's position as an array of numbers\n return [Number(x), Number(y), Number(z)];\n }\n\n async getGhostBrick(): Promise<{\n targetGrid: string;\n location: number[];\n orientation: string;\n }> {\n const { controller } = this;\n\n const previewClass = 'BP_ToolPreviewActor_C';\n\n const ownerRegExp = new RegExp(\n `^(?<index>\\\\d+)\\\\) ${previewClass} (.+):PersistentLevel\\\\.(?<actor>${previewClass}_\\\\d+)\\.Owner = .*?BP_PlayerController_C'(.+):PersistentLevel\\\\.(?<controller>BP_PlayerController_C_\\\\d+)'$`,\n );\n const transformParamsRegExp = new RegExp(\n `^(?<index>\\\\d+)\\\\) ${previewClass} (.+):PersistentLevel\\\\.(?<actor>${previewClass}_\\\\d+)\\\\.TransformParameters = \\\\(TargetGrid=(\"(?<targetGrid>.+)\"|None),Location=\\\\(X=(?<x>.+),Y=(?<y>.+),Z=(?<z>.+)\\\\),Orientation=(?<orientation>.+)\\\\)$`,\n );\n\n const [owners, transformParams] = await Promise.all([\n this.#omegga.watchLogChunk<RegExpMatchArray>(\n `GetAll ${previewClass} Owner`,\n ownerRegExp,\n {\n first: 'index',\n timeoutDelay: 2000,\n afterMatchDelay: 100,\n },\n ),\n this.#omegga.watchLogChunk<RegExpMatchArray>(\n `GetAll ${previewClass} TransformParameters`,\n transformParamsRegExp,\n {\n first: 'index',\n timeoutDelay: 2000,\n afterMatchDelay: 100,\n },\n ),\n ]);\n\n // get BrickGridPreviewActor by controller\n const owner = owners.find(owner => owner.groups.controller === controller);\n\n if (!owner) return;\n\n const actor = owner.groups.actor;\n // get transform parameters for the found actor\n const transformParameters = transformParams.find(\n transformParameters => transformParameters.groups.actor === actor,\n );\n\n if (!transformParameters) return;\n\n return {\n targetGrid: transformParameters.groups.targetGrid,\n location: [\n +transformParameters.groups.x,\n +transformParameters.groups.y,\n +transformParameters.groups.z,\n ],\n orientation: transformParameters.groups.orientation,\n };\n }\n\n async getPaint(): Promise<{\n materialIndex: string;\n materialAlpha: string;\n material: string;\n color: number[];\n }> {\n const { controller } = this;\n\n const match = await this.#omegga\n .addWatcher<{\n materialIndex: string;\n materialAlpha: string;\n material: string;\n color: number[];\n }>(\n line => {\n // [date][counter]0) BP_PlayerState_C /Game/Maps/Plate/Plate.Plate:PersistentLevel.BP_PlayerState_C_2147482378.ColorSelectionState = (SelectedColor=(B=6,G=73,R=246,A=255),MaterialIndex=3,MaterialAlpha=5)\n const match = line.match(\n /^\\[[^\\]]+\\]\\[[^\\]]+\\]\\d+\\) BP_PlayerState_C .+?PersistentLevel\\.(?<state>BP_PlayerState_C_\\d+)\\.ColorSelectionState = \\(SelectedColor=\\(B=(?<b>\\d+),G=(?<g>\\d+),R=(?<r>\\d+),A=(?<a>\\d+)\\),MaterialIndex=(?<materialIndex>\\d+),MaterialAlpha=(?<materialAlpha>\\d+)\\)$/,\n );\n if (!match) return;\n if (match.groups.state !== this.state) return;\n const colorRaw = [+match.groups.r, +match.groups.g, +match.groups.b];\n return {\n materialIndex: match.groups.materialIndex,\n materialAlpha: match.groups.materialAlpha,\n material:\n brickUtils.BRICK_CONSTANTS.DEFAULT_MATERIALS[\n Number(match.groups.materialIndex)\n ],\n color: colorRaw,\n };\n },\n {\n timeoutDelay: 1000,\n exec: () =>\n this.#omegga.writeln('GetAll BRPlayerState ColorSelectionState'),\n },\n )\n .catch(() => null);\n if (!match?.[0]) return;\n return match[0];\n }\n\n async isCrouched(pawn?: string): Promise<boolean> {\n if (!pawn) pawn = await this.getPawn();\n\n const reg =\n /(?<index>\\d+)\\) BP_FigureV2_C .+?PersistentLevel\\.(?<pawn>BP_FigureV2_C_\\d+)\\.bIsCrouched = (?<crouched>True|False)$/;\n\n const resp = await this.#omegga.watchLogChunk<RegExpMatchArray>(\n 'GetAll BP_FigureV2_C bIsCrouched Name=' + pawn,\n reg,\n { first: 'index', timeoutDelay: 500 },\n );\n\n const me = resp.find(r => r.groups.pawn === pawn);\n if (!me) return false;\n\n return me.groups.crouched == 'True';\n }\n\n async isDead(pawn?: string): Promise<boolean> {\n if (!pawn) pawn = await this.getPawn();\n\n const reg =\n /(?<index>\\d+)\\) BP_FigureV2_C .+?PersistentLevel\\.(?<pawn>BP_FigureV2_C_\\d+)\\.bIsDead = (?<dead>True|False)$/;\n\n const resp = await this.#omegga.watchLogChunk<RegExpMatchArray>(\n 'GetAll BP_FigureV2_C bIsDead Name=' + pawn,\n reg,\n { first: 'index', timeoutDelay: 500 },\n );\n\n const me = resp.find(r => r.groups.pawn === pawn);\n if (!me) return true;\n\n return me.groups.dead == 'True';\n }\n\n async getTemplateBounds() {\n const { controller } = this;\n\n const brickTemplateRegExp =\n /^(?<index>\\d+)\\) Tool_Selector_C (.+):PersistentLevel\\.(?<tool>Tool_Selector_C_\\d+)\\.CurrentTemplate = (.+)Brickadia.BrickBuildingTemplate'(.+)Transient.(?<templateName>BrickBuildingTemplate_\\d+)'$/;\n const brickTemplateOwnerRegExp =\n /^(?<index>\\d+)\\) Tool_Selector_C (.+):PersistentLevel\\.(?<tool>Tool_Selector_C_\\d+)\\.Owner = (.+)(?<controller>BP_PlayerController_C_\\d+)'$/;\n const minBoundsRegExp =\n /^(?<index>\\d+)\\) BrickBuildingTemplate (.+)Transient\\.(?<templateName>BrickBuildingTemplate_\\d+)\\.MinBounds = \\(X=(?<x>.+),Y=(?<y>.+),Z=(?<z>.+)\\)$/;\n const maxBoundsRegExp =\n /^(?<index>\\d+)\\) BrickBuildingTemplate (.+)Transient\\.(?<templateName>BrickBuildingTemplate_\\d+)\\.MaxBounds = \\(X=(?<x>.+),Y=(?<y>.+),Z=(?<z>.+)\\)$/;\n const centerRegExp =\n /^(?<index>\\d+)\\) BrickBuildingTemplate (.+)Transient\\.(?<templateName>BrickBuildingTemplate_\\d+)\\.Center = \\(X=(?<x>.+),Y=(?<y>.+),Z=(?<z>.+)\\)$/;\n\n const [templates, owners, minBounds, maxBounds, centers] =\n await Promise.all([\n this.#omegga.watchLogChunk<RegExpMatchArray>(\n 'GetAll Tool_Selector_C CurrentTemplate',\n brickTemplateRegExp,\n {\n first: 'index',\n timeoutDelay: 2000,\n afterMatchDelay: 100,\n },\n ),\n this.#omegga.watchLogChunk<RegExpMatchArray>(\n 'GetAll Tool_Selector_C Owner',\n brickTemplateOwnerRegExp,\n {\n first: 'index',\n timeoutDelay: 2000,\n afterMatchDelay: 100,\n },\n ),\n this.#omegga.watchLogChunk<RegExpMatchArray>(\n 'GetAll BrickBuildingTemplate MinBounds',\n minBoundsRegExp,\n {\n first: 'index',\n timeoutDelay: 2000,\n afterMatchDelay: 100,\n },\n ),\n this.#omegga.watchLogChunk<RegExpMatchArray>(\n 'GetAll BrickBuildingTemplate MaxBounds',\n maxBoundsRegExp,\n {\n first: 'index',\n timeoutDelay: 2000,\n afterMatchDelay: 100,\n },\n ),\n this.#omegga.watchLogChunk<RegExpMatchArray>(\n 'GetAll BrickBuildingTemplate Center',\n centerRegExp,\n {\n first: 'index',\n timeoutDelay: 2000,\n afterMatchDelay: 100,\n },\n ),\n ]);\n\n if (\n !templates.length ||\n !owners.length ||\n !minBounds.length ||\n !maxBounds.length ||\n !centers.length\n )\n return;\n\n // get selector for this controller, we need to handle if there are multiple selectors for the same controller\n const selectors = owners\n .filter(selectors => selectors.groups.controller === controller)\n .map(selectors => selectors.groups.tool)\n .sort();\n const selector = selectors[0]; // grab the most recently created\n\n if (!selector) {\n return;\n }\n\n // template for this selector, we need to handle if there are multiple templates for the same selector and grab the most recent one\n const brickTemplates = templates\n .filter(template => template.groups.tool === selector)\n .map(template => template.groups.templateName)\n .sort();\n const templateName = brickTemplates[0]; // grab the most recently created\n\n if (!templateName) {\n return;\n }\n\n // find all values with matching template name\n const minBound = minBounds.find(\n minBound => minBound.groups.templateName === templateName,\n );\n const maxBound = maxBounds.find(\n maxBound => maxBound.groups.templateName === templateName,\n );\n const center = centers.find(\n center => center.groups.templateName === templateName,\n );\n\n if (!minBound || !maxBound || !center) return;\n\n return {\n minBound: [+minBound.groups.x, +minBound.groups.y, +minBound.groups.z],\n maxBound: [+maxBound.groups.x, +maxBound.groups.y, +maxBound.groups.z],\n center: [+center.groups.x, +center.groups.y, +center.groups.z],\n } as IBrickBounds;\n }\n\n async getTemplateBoundsData() {\n const templateBounds = await this.getTemplateBounds();\n\n if (!templateBounds) return;\n\n const saveData = await this.#omegga.getSaveData({\n center: templateBounds.center,\n extent: [\n Math.round(\n (templateBounds.maxBound[0] - templateBounds.minBound[0]) / 2,\n ),\n Math.round(\n (templateBounds.maxBound[1] - templateBounds.minBound[1]) / 2,\n ),\n Math.round(\n (templateBounds.maxBound[2] - templateBounds.minBound[2]) / 2,\n ),\n ],\n });\n\n if (!saveData) return;\n\n // filter bricks outside the bounds\n // no longer necessary thanks to Bricks.SaveRegion\n /* saveData.bricks = (saveData.bricks as Brick[]).filter(brick => {\n return brickUtils.checkBounds(\n brick,\n saveData.brick_assets,\n templateBounds\n );\n }) as typeof saveData.bricks; */\n\n if (saveData.bricks.length > 0) {\n return saveData;\n }\n\n return undefined;\n }\n\n loadBricks(saveName: string) {\n this.#omegga.loadBricksOnPlayer(saveName, this);\n }\n\n async loadSaveData(\n saveData: WriteSaveObject,\n { offX = 0, offY = 0, offZ = 0 } = {},\n ) {\n await this.#omegga.loadSaveDataOnPlayer(saveData, this, {\n offX,\n offY,\n offZ,\n });\n }\n\n async loadDataAtGhostBrick(\n saveData: WriteSaveObject,\n { rotate = true, offX = 0, offY = 0, offZ = 0, quiet = true } = {},\n ) {\n const ghostBrickData = await this.getGhostBrick();\n\n if (!ghostBrickData || !saveData) return;\n\n // get bounds of the bricks\n const bounds = brickUtils.getBounds(saveData);\n\n if (rotate) {\n const orientation =\n brickUtils.BRICK_CONSTANTS.orientationMap[ghostBrickData.orientation];\n saveData.bricks = saveData.bricks.map(brick =>\n brickUtils.rotate(brick, orientation),\n );\n // rotate bounds, if we dont use the original bounds they are off by 1 sometimes >:(\n bounds.minBound = brickUtils.BRICK_CONSTANTS.translationTable[\n brickUtils.d2o(...orientation)\n ](bounds.minBound);\n bounds.maxBound = brickUtils.BRICK_CONSTANTS.translationTable[\n brickUtils.d2o(...orientation)\n ](bounds.maxBound);\n bounds.center = brickUtils.BRICK_CONSTANTS.translationTable[\n brickUtils.d2o(...orientation)\n ](bounds.center);\n }\n\n // calculate offset from bricks center to ghost brick center\n const offset = bounds.center.map(\n (center, index) => ghostBrickData.location[index] - center,\n );\n\n // load at offset location\n await this.#omegga.loadSaveData(saveData, {\n offX: offX + offset[0],\n offY: offY + offset[1],\n offZ: offZ + offset[2],\n quiet,\n });\n }\n\n kill() {\n Player.kill(this.#omegga, this);\n }\n\n damage(amount: number): void {\n Player.damage(this.#omegga, this, amount);\n }\n\n heal(amount: number): void {\n Player.heal(this.#omegga, this, amount);\n }\n\n giveItem(item: WeaponClass): void {\n Player.giveItem(this.#omegga, this, item);\n }\n\n takeItem(item: WeaponClass): void {\n Player.takeItem(this.#omegga, this, item);\n }\n\n setTeam(teamIndex: number): void {\n Player.setTeam(this.#omegga, this, teamIndex);\n }\n\n setMinigame(index: number): void {\n Player.setMinigame(this.#omegga, this, index);\n }\n\n setScore(minigameIndex: number, score: number): void {\n Player.setScore(this.#omegga, this, minigameIndex, score);\n }\n\n getScore(minigameIndex: number): Promise<number> {\n return Player.getScore(this.#omegga, this, minigameIndex);\n }\n}\n\nglobal.Player = Player;\n\nexport default Player;\n"],"names":["index","match","color","owner","transformParameters","brickUtils","selectors","minBound","maxBound","center"],"mappings":"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"}
|
|
@@ -1,106 +1,99 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const softconfig_1 = require("../../softconfig");
|
|
8
|
-
const fs_1 = require("fs");
|
|
9
|
-
const path_1 = __importDefault(require("path"));
|
|
10
|
-
// Check if this plugin is disabled
|
|
11
|
-
const DISABLED_FILE = 'disabled.omegga';
|
|
12
|
-
/*
|
|
13
|
-
Plugin interface
|
|
14
|
-
Allows omegga to interface with plugins of a format
|
|
15
|
-
*/
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const softconfig = require("../../softconfig.js");
|
|
4
|
+
const fs = require("node:fs");
|
|
5
|
+
const path = require("node:path");
|
|
6
|
+
const DISABLED_FILE = "disabled.omegga";
|
|
16
7
|
class Plugin {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
8
|
+
// returns true if a plugin at this path can be loaded
|
|
9
|
+
// only one kind of plugin should match this type
|
|
10
|
+
static canLoad(_pluginPath) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
// returns the kind of plugin this is
|
|
14
|
+
static getFormat() {
|
|
15
|
+
throw "undefined plugin format";
|
|
16
|
+
}
|
|
17
|
+
// read a file as json or return null
|
|
18
|
+
static readJSON(file) {
|
|
19
|
+
try {
|
|
20
|
+
return JSON.parse(fs.readFileSync(file, "utf8"));
|
|
21
|
+
} catch (e) {
|
|
22
|
+
return null;
|
|
21
23
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
}
|
|
25
|
+
// initialize a plugin at this path
|
|
26
|
+
constructor(pluginPath, omegga) {
|
|
27
|
+
this.path = pluginPath;
|
|
28
|
+
this.omegga = omegga;
|
|
29
|
+
if (omegga) {
|
|
30
|
+
this.shortPath = pluginPath.replace(
|
|
31
|
+
path.join(omegga.path, softconfig.PLUGIN_PATH) + "/",
|
|
32
|
+
""
|
|
33
|
+
);
|
|
25
34
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
}
|
|
36
|
+
// assign plugin storage
|
|
37
|
+
setStorage(storage) {
|
|
38
|
+
this.storage = storage;
|
|
39
|
+
}
|
|
40
|
+
// check if the plugin is enabled
|
|
41
|
+
isEnabled() {
|
|
42
|
+
return !fs.existsSync(path.join(this.path, DISABLED_FILE));
|
|
43
|
+
}
|
|
44
|
+
// set the plugin enabled/disabled
|
|
45
|
+
setEnabled(enabled) {
|
|
46
|
+
const disabledPath = path.join(this.path, DISABLED_FILE);
|
|
47
|
+
if (enabled === this.isEnabled()) {
|
|
48
|
+
return;
|
|
34
49
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
if (omegga) {
|
|
40
|
-
this.shortPath = pluginPath.replace(path_1.default.join(omegga.path, softconfig_1.PLUGIN_PATH) + '/', '');
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
// assign plugin storage
|
|
44
|
-
setStorage(storage) {
|
|
45
|
-
this.storage = storage;
|
|
46
|
-
}
|
|
47
|
-
// check if the plugin is enabled
|
|
48
|
-
isEnabled() {
|
|
49
|
-
return !(0, fs_1.existsSync)(path_1.default.join(this.path, DISABLED_FILE));
|
|
50
|
-
}
|
|
51
|
-
// set the plugin enabled/disabled
|
|
52
|
-
setEnabled(enabled) {
|
|
53
|
-
const disabledPath = path_1.default.join(this.path, DISABLED_FILE);
|
|
54
|
-
if (enabled === this.isEnabled()) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
if (enabled) {
|
|
58
|
-
(0, fs_1.unlinkSync)(disabledPath);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
(0, fs_1.closeSync)((0, fs_1.openSync)(disabledPath, 'w'));
|
|
62
|
-
}
|
|
63
|
-
this.emitStatus();
|
|
64
|
-
}
|
|
65
|
-
// emit a plugin status change
|
|
66
|
-
emitStatus() {
|
|
67
|
-
this.omegga.emit('plugin:status', this.shortPath, {
|
|
68
|
-
name: this.getName(),
|
|
69
|
-
isLoaded: this.isLoaded(),
|
|
70
|
-
isEnabled: this.isEnabled(),
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
// emit a custom event from another plugin
|
|
74
|
-
async emitPlugin(_ev, _from, _args) { }
|
|
75
|
-
// get the plugin name, usually based on documentation data
|
|
76
|
-
getName() {
|
|
77
|
-
const doc = this.getDocumentation();
|
|
78
|
-
return (doc ? doc.name : path_1.default.basename(this.path)) || 'unnamed plugin';
|
|
79
|
-
}
|
|
80
|
-
// get the documentation object for this plugin
|
|
81
|
-
getDocumentation() {
|
|
82
|
-
return null;
|
|
83
|
-
}
|
|
84
|
-
// return true if this plugin is loaded
|
|
85
|
-
isLoaded() {
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
// return true if the command exists
|
|
89
|
-
isCommand(_cmd) {
|
|
90
|
-
return false;
|
|
91
|
-
}
|
|
92
|
-
// start the plugin, returns true if plugin successfully loaded
|
|
93
|
-
async load() {
|
|
94
|
-
return false;
|
|
95
|
-
}
|
|
96
|
-
// stop + kill the plugin, returns true if plugin successfully unloaded
|
|
97
|
-
async unload() {
|
|
98
|
-
return false;
|
|
99
|
-
}
|
|
100
|
-
// extra info for this kind of plugin
|
|
101
|
-
getInfo() {
|
|
102
|
-
return {};
|
|
50
|
+
if (enabled) {
|
|
51
|
+
fs.unlinkSync(disabledPath);
|
|
52
|
+
} else {
|
|
53
|
+
fs.closeSync(fs.openSync(disabledPath, "w"));
|
|
103
54
|
}
|
|
55
|
+
this.emitStatus();
|
|
56
|
+
}
|
|
57
|
+
// emit a plugin status change
|
|
58
|
+
emitStatus() {
|
|
59
|
+
this.omegga.emit("plugin:status", this.shortPath, {
|
|
60
|
+
name: this.getName(),
|
|
61
|
+
isLoaded: this.isLoaded(),
|
|
62
|
+
isEnabled: this.isEnabled()
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
// emit a custom event from another plugin
|
|
66
|
+
async emitPlugin(_ev, _from, _args) {
|
|
67
|
+
}
|
|
68
|
+
// get the plugin name, usually based on documentation data
|
|
69
|
+
getName() {
|
|
70
|
+
const doc = this.getDocumentation();
|
|
71
|
+
return (doc ? doc.name : path.basename(this.path)) || "unnamed plugin";
|
|
72
|
+
}
|
|
73
|
+
// get the documentation object for this plugin
|
|
74
|
+
getDocumentation() {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
// return true if this plugin is loaded
|
|
78
|
+
isLoaded() {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
// return true if the command exists
|
|
82
|
+
isCommand(_cmd) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
// start the plugin, returns true if plugin successfully loaded
|
|
86
|
+
async load() {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
// stop + kill the plugin, returns true if plugin successfully unloaded
|
|
90
|
+
async unload() {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
// extra info for this kind of plugin
|
|
94
|
+
getInfo() {
|
|
95
|
+
return {};
|
|
96
|
+
}
|
|
104
97
|
}
|
|
105
98
|
exports.Plugin = Plugin;
|
|
106
|
-
//# sourceMappingURL=interface.js.map
|
|
99
|
+
//# sourceMappingURL=interface.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.js","
|
|
1
|
+
{"version":3,"file":"interface.js","sources":["../../../src/omegga/plugin/interface.ts"],"sourcesContent":["import OmeggaPlugin, { IPluginDocumentation } from '@/plugin';\nimport { PLUGIN_PATH } from '@/softconfig';\nimport { IPluginJSON, PluginStorage } from '@omegga/plugin';\nimport Omegga from '@omegga/server';\nimport {\n closeSync,\n existsSync,\n openSync,\n readFileSync,\n unlinkSync,\n} from 'node:fs';\nimport path from 'node:path';\n\n// Check if this plugin is disabled\nconst DISABLED_FILE = 'disabled.omegga';\n\n/*\n Plugin interface\n Allows omegga to interface with plugins of a format\n*/\nexport class Plugin {\n // returns true if a plugin at this path can be loaded\n // only one kind of plugin should match this type\n static canLoad(_pluginPath: string) {\n return false;\n }\n\n // returns the kind of plugin this is\n static getFormat(): string {\n throw 'undefined plugin format';\n }\n\n // read a file as json or return null\n static readJSON(file: string) {\n try {\n return JSON.parse(readFileSync(file, 'utf8'));\n } catch (e) {\n return null;\n }\n }\n\n path: string;\n omegga: Omegga;\n shortPath: string;\n storage: PluginStorage;\n\n documentation: IPluginDocumentation;\n pluginConfig: IPluginJSON;\n pluginFile: string;\n commands: string[];\n loadedPlugin: OmeggaPlugin;\n\n // initialize a plugin at this path\n constructor(pluginPath: string, omegga?: Omegga) {\n this.path = pluginPath;\n this.omegga = omegga;\n if (omegga) {\n this.shortPath = pluginPath.replace(\n path.join(omegga.path, PLUGIN_PATH) + '/',\n '',\n );\n }\n }\n\n // assign plugin storage\n setStorage(storage: PluginStorage) {\n this.storage = storage;\n }\n\n // check if the plugin is enabled\n isEnabled() {\n return !existsSync(path.join(this.path, DISABLED_FILE));\n }\n // set the plugin enabled/disabled\n setEnabled(enabled: boolean) {\n const disabledPath = path.join(this.path, DISABLED_FILE);\n if (enabled === this.isEnabled()) {\n return;\n }\n if (enabled) {\n unlinkSync(disabledPath);\n } else {\n closeSync(openSync(disabledPath, 'w'));\n }\n this.emitStatus();\n }\n\n // emit a plugin status change\n emitStatus() {\n this.omegga.emit('plugin:status', this.shortPath, {\n name: this.getName(),\n isLoaded: this.isLoaded(),\n isEnabled: this.isEnabled(),\n });\n }\n\n // emit a custom event from another plugin\n async emitPlugin(_ev: string, _from: string, _args: any[]): Promise<any> {}\n\n // get the plugin name, usually based on documentation data\n getName() {\n const doc = this.getDocumentation();\n return (doc ? doc.name : path.basename(this.path)) || 'unnamed plugin';\n }\n\n // get the documentation object for this plugin\n getDocumentation(): IPluginDocumentation {\n return null;\n }\n\n // return true if this plugin is loaded\n isLoaded() {\n return false;\n }\n\n // return true if the command exists\n isCommand(_cmd: string) {\n return false;\n }\n\n // start the plugin, returns true if plugin successfully loaded\n async load() {\n return false;\n }\n\n // stop + kill the plugin, returns true if plugin successfully unloaded\n async unload() {\n return false;\n }\n\n // extra info for this kind of plugin\n getInfo(): Record<string, unknown> {\n return {};\n }\n}\n"],"names":["readFileSync","PLUGIN_PATH","existsSync","unlinkSync","closeSync","openSync"],"mappings":";;;;;AAcA,MAAM,gBAAgB;AAMf,MAAM,OAAO;AAAA;AAAA;AAAA,EAGlB,OAAO,QAAQ,aAAqB;AAClC,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,OAAO,YAAoB;AACzB,UAAM;AAAA,EACR;AAAA;AAAA,EAGA,OAAO,SAAS,MAAc;AAC5B,QAAI;AACF,aAAO,KAAK,MAAMA,GAAAA,aAAa,MAAM,MAAM,CAAC;AAAA,IAC9C,SAAS,GAAG;AACV,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA,EAcA,YAAY,YAAoB,QAAiB;AAC/C,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,QAAI,QAAQ;AACV,WAAK,YAAY,WAAW;AAAA,QAC1B,KAAK,KAAK,OAAO,MAAMC,WAAAA,WAAW,IAAI;AAAA,QACtC;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AAAA;AAAA,EAGA,WAAW,SAAwB;AACjC,SAAK,UAAU;AAAA,EACjB;AAAA;AAAA,EAGA,YAAY;AACV,WAAO,CAACC,GAAAA,WAAW,KAAK,KAAK,KAAK,MAAM,aAAa,CAAC;AAAA,EACxD;AAAA;AAAA,EAEA,WAAW,SAAkB;AAC3B,UAAM,eAAe,KAAK,KAAK,KAAK,MAAM,aAAa;AACvD,QAAI,YAAY,KAAK,aAAa;AAChC;AAAA,IACF;AACA,QAAI,SAAS;AACXC,SAAAA,WAAW,YAAY;AAAA,IACzB,OAAO;AACLC,SAAAA,UAAUC,GAAAA,SAAS,cAAc,GAAG,CAAC;AAAA,IACvC;AACA,SAAK,WAAA;AAAA,EACP;AAAA;AAAA,EAGA,aAAa;AACX,SAAK,OAAO,KAAK,iBAAiB,KAAK,WAAW;AAAA,MAChD,MAAM,KAAK,QAAA;AAAA,MACX,UAAU,KAAK,SAAA;AAAA,MACf,WAAW,KAAK,UAAA;AAAA,IAAU,CAC3B;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,WAAW,KAAa,OAAe,OAA4B;AAAA,EAAC;AAAA;AAAA,EAG1E,UAAU;AACR,UAAM,MAAM,KAAK,iBAAA;AACjB,YAAQ,MAAM,IAAI,OAAO,KAAK,SAAS,KAAK,IAAI,MAAM;AAAA,EACxD;AAAA;AAAA,EAGA,mBAAyC;AACvC,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,WAAW;AACT,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,UAAU,MAAc;AACtB,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,OAAO;AACX,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,SAAS;AACb,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,UAAmC;AACjC,WAAO,CAAA;AAAA,EACT;AACF;;"}
|