omegga 0.1.85 → 1.0.2

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 (467) hide show
  1. package/README.md +142 -62
  2. package/bin/omegga +10 -4
  3. package/dist/brickadia/config.d.ts +3 -0
  4. package/dist/brickadia/config.d.ts.map +1 -0
  5. package/dist/brickadia/config.js +61 -0
  6. package/dist/brickadia/config.js.map +1 -0
  7. package/dist/brickadia/presets.d.ts +65 -0
  8. package/dist/brickadia/presets.js +3 -0
  9. package/dist/brickadia/presets.js.map +1 -0
  10. package/dist/brickadia/server.d.ts +20 -0
  11. package/dist/brickadia/server.d.ts.map +1 -0
  12. package/dist/brickadia/server.js +188 -0
  13. package/dist/brickadia/server.js.map +1 -0
  14. package/dist/brickadia/types.d.ts +45 -0
  15. package/dist/brickadia/types.d.ts.map +1 -0
  16. package/dist/brickadia/types.js +3 -0
  17. package/dist/brickadia/types.js.map +1 -0
  18. package/dist/cli/auth.d.ts +20 -0
  19. package/dist/cli/auth.d.ts.map +1 -0
  20. package/dist/cli/auth.js +115 -0
  21. package/dist/cli/auth.js.map +1 -0
  22. package/dist/cli/config.d.ts +10 -0
  23. package/dist/cli/config.d.ts.map +1 -0
  24. package/dist/cli/config.js +72 -0
  25. package/dist/cli/config.js.map +1 -0
  26. package/dist/cli/index.d.ts +20 -0
  27. package/dist/cli/index.d.ts.map +1 -0
  28. package/dist/cli/index.js +15 -0
  29. package/dist/cli/index.js.map +1 -0
  30. package/dist/cli/installer.d.ts +1 -0
  31. package/dist/cli/installer.d.ts.map +1 -0
  32. package/dist/cli/installer.js +55 -0
  33. package/dist/cli/installer.js.map +1 -0
  34. package/dist/cli/plugin.d.ts +11 -0
  35. package/dist/cli/plugin.d.ts.map +1 -0
  36. package/dist/cli/plugin.js +598 -0
  37. package/dist/cli/plugin.js.map +1 -0
  38. package/dist/cli/terminal.d.ts +34 -0
  39. package/dist/cli/terminal.d.ts.map +1 -0
  40. package/dist/cli/terminal.js +395 -0
  41. package/dist/cli/terminal.js.map +1 -0
  42. package/dist/config/authorizer.d.ts +2 -0
  43. package/dist/config/authorizer.d.ts.map +1 -0
  44. package/dist/config/authorizer.js +38 -0
  45. package/dist/config/authorizer.js.map +1 -0
  46. package/dist/config/formats/format_js.d.ts +3 -0
  47. package/dist/config/formats/format_js.d.ts.map +1 -0
  48. package/dist/config/formats/format_js.js +10 -0
  49. package/dist/config/formats/format_js.js.map +1 -0
  50. package/dist/config/formats/format_yml.d.ts +3 -0
  51. package/dist/config/formats/format_yml.d.ts.map +1 -0
  52. package/dist/config/formats/format_yml.js +14 -0
  53. package/dist/config/formats/format_yml.js.map +1 -0
  54. package/dist/config/index.d.ts +18 -0
  55. package/dist/config/index.d.ts.map +1 -0
  56. package/dist/config/index.js +86 -0
  57. package/dist/config/index.js.map +1 -0
  58. package/dist/config/reader.d.ts +3 -0
  59. package/dist/config/reader.d.ts.map +1 -0
  60. package/dist/config/reader.js +30 -0
  61. package/dist/config/reader.js.map +1 -0
  62. package/dist/config/types.d.ts +37 -0
  63. package/dist/config/types.d.ts.map +1 -0
  64. package/dist/config/types.js +3 -0
  65. package/dist/config/types.js.map +1 -0
  66. package/dist/config/validator.d.ts +6 -0
  67. package/dist/config/validator.d.ts.map +1 -0
  68. package/dist/config/validator.js +26 -0
  69. package/dist/config/validator.js.map +1 -0
  70. package/dist/config/writer.d.ts +3 -0
  71. package/dist/config/writer.d.ts.map +1 -0
  72. package/dist/config/writer.js +25 -0
  73. package/dist/config/writer.js.map +1 -0
  74. package/dist/index.d.ts +22 -0
  75. package/dist/index.js +55 -0
  76. package/dist/index.js.map +1 -0
  77. package/dist/info/default_commands.json +28 -0
  78. package/dist/lib.d.ts +21 -0
  79. package/dist/lib.d.ts.map +1 -0
  80. package/dist/lib.js +54 -0
  81. package/dist/lib.js.map +1 -0
  82. package/dist/logger.d.ts +41 -0
  83. package/dist/logger.js +67 -0
  84. package/dist/logger.js.map +1 -0
  85. package/dist/main.d.ts +1 -0
  86. package/dist/main.d.ts.map +1 -0
  87. package/dist/main.js +284 -0
  88. package/dist/main.js.map +1 -0
  89. package/dist/omegga/auth.d.ts +6 -0
  90. package/dist/omegga/auth.d.ts.map +1 -0
  91. package/dist/omegga/auth.js +139 -0
  92. package/dist/omegga/auth.js.map +1 -0
  93. package/dist/omegga/commandInjector.d.ts +35 -0
  94. package/dist/omegga/commandInjector.d.ts.map +1 -0
  95. package/dist/omegga/commandInjector.js +234 -0
  96. package/dist/omegga/commandInjector.js.map +1 -0
  97. package/dist/omegga/index.d.ts +7 -0
  98. package/dist/omegga/index.d.ts.map +1 -0
  99. package/dist/omegga/index.js +43 -0
  100. package/dist/omegga/index.js.map +1 -0
  101. package/dist/omegga/logWrangler.d.ts +32 -0
  102. package/dist/omegga/logWrangler.d.ts.map +1 -0
  103. package/dist/omegga/logWrangler.js +279 -0
  104. package/dist/omegga/logWrangler.js.map +1 -0
  105. package/dist/omegga/matchers/auth.d.ts +9 -0
  106. package/dist/omegga/matchers/auth.d.ts.map +1 -0
  107. package/dist/omegga/matchers/auth.js +53 -0
  108. package/dist/omegga/matchers/auth.js.map +1 -0
  109. package/dist/omegga/matchers/chat.d.ts +9 -0
  110. package/dist/omegga/matchers/chat.d.ts.map +1 -0
  111. package/dist/omegga/matchers/chat.js +68 -0
  112. package/dist/omegga/matchers/chat.js.map +1 -0
  113. package/dist/omegga/matchers/command.d.ts +7 -0
  114. package/dist/omegga/matchers/command.d.ts.map +1 -0
  115. package/dist/omegga/matchers/command.js +39 -0
  116. package/dist/omegga/matchers/command.js.map +1 -0
  117. package/dist/omegga/matchers/exit.d.ts +3 -0
  118. package/dist/omegga/matchers/exit.d.ts.map +1 -0
  119. package/dist/omegga/matchers/exit.js +21 -0
  120. package/dist/omegga/matchers/exit.js.map +1 -0
  121. package/dist/omegga/matchers/index.d.ts +3 -0
  122. package/dist/omegga/matchers/index.d.ts.map +1 -0
  123. package/dist/omegga/matchers/index.js +39 -0
  124. package/dist/omegga/matchers/index.js.map +1 -0
  125. package/dist/omegga/matchers/init.d.ts +3 -0
  126. package/dist/omegga/matchers/init.d.ts.map +1 -0
  127. package/dist/omegga/matchers/init.js +26 -0
  128. package/dist/omegga/matchers/init.js.map +1 -0
  129. package/dist/omegga/matchers/interact.d.ts +4 -0
  130. package/dist/omegga/matchers/interact.js +39 -0
  131. package/dist/omegga/matchers/interact.js.map +1 -0
  132. package/dist/omegga/matchers/join.d.ts +4 -0
  133. package/dist/omegga/matchers/join.d.ts.map +1 -0
  134. package/dist/omegga/matchers/join.js +95 -0
  135. package/dist/omegga/matchers/join.js.map +1 -0
  136. package/dist/omegga/matchers/leave.d.ts +4 -0
  137. package/dist/omegga/matchers/leave.d.ts.map +1 -0
  138. package/dist/omegga/matchers/leave.js +59 -0
  139. package/dist/omegga/matchers/leave.js.map +1 -0
  140. package/dist/omegga/matchers/mapChange.d.ts +3 -0
  141. package/dist/omegga/matchers/mapChange.d.ts.map +1 -0
  142. package/dist/omegga/matchers/mapChange.js +38 -0
  143. package/dist/omegga/matchers/mapChange.js.map +1 -0
  144. package/dist/omegga/matchers/types.d.ts +5 -0
  145. package/dist/omegga/matchers/types.d.ts.map +1 -0
  146. package/dist/omegga/matchers/types.js +7 -0
  147. package/dist/omegga/matchers/types.js.map +1 -0
  148. package/dist/omegga/matchers/version.d.ts +3 -0
  149. package/dist/omegga/matchers/version.d.ts.map +1 -0
  150. package/dist/omegga/matchers/version.js +45 -0
  151. package/dist/omegga/matchers/version.js.map +1 -0
  152. package/dist/omegga/player.d.ts +71 -0
  153. package/dist/omegga/player.d.ts.map +1 -0
  154. package/dist/omegga/player.js +442 -0
  155. package/dist/omegga/player.js.map +1 -0
  156. package/dist/omegga/plugin/plugin_jsonrpc_stdio.d.ts +23 -0
  157. package/dist/omegga/plugin/plugin_jsonrpc_stdio.d.ts.map +1 -0
  158. package/dist/omegga/plugin/plugin_jsonrpc_stdio.js +441 -0
  159. package/dist/omegga/plugin/plugin_jsonrpc_stdio.js.map +1 -0
  160. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.d.ts +129 -0
  161. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.d.ts.map +1 -0
  162. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.js +260 -0
  163. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.js.map +1 -0
  164. package/dist/omegga/plugin/plugin_node_safe/worker.d.ts +1 -0
  165. package/dist/omegga/plugin/plugin_node_safe/worker.d.ts.map +1 -0
  166. package/dist/omegga/plugin/plugin_node_safe/worker.js +289 -0
  167. package/dist/omegga/plugin/plugin_node_safe/worker.js.map +1 -0
  168. package/dist/omegga/plugin/plugin_node_safe.d.ts +24 -0
  169. package/dist/omegga/plugin/plugin_node_safe.d.ts.map +1 -0
  170. package/dist/omegga/plugin/plugin_node_safe.js +397 -0
  171. package/dist/omegga/plugin/plugin_node_safe.js.map +1 -0
  172. package/dist/omegga/plugin/plugin_node_unsafe.d.ts +13 -0
  173. package/dist/omegga/plugin/plugin_node_unsafe.d.ts.map +1 -0
  174. package/dist/omegga/plugin/plugin_node_unsafe.js +178 -0
  175. package/dist/omegga/plugin/plugin_node_unsafe.js.map +1 -0
  176. package/dist/omegga/plugin.d.ts +86 -0
  177. package/dist/omegga/plugin.d.ts.map +1 -0
  178. package/dist/omegga/plugin.js +458 -0
  179. package/dist/omegga/plugin.js.map +1 -0
  180. package/dist/omegga/server.d.ts +149 -0
  181. package/dist/omegga/server.d.ts.map +1 -0
  182. package/dist/omegga/server.js +601 -0
  183. package/dist/omegga/server.js.map +1 -0
  184. package/dist/omegga/types.d.ts +48 -0
  185. package/dist/omegga/types.d.ts.map +1 -0
  186. package/dist/omegga/types.js +3 -0
  187. package/dist/omegga/types.js.map +1 -0
  188. package/dist/omegga/wrapper.d.ts +22 -0
  189. package/dist/omegga/wrapper.d.ts.map +1 -0
  190. package/dist/omegga/wrapper.js +75 -0
  191. package/dist/omegga/wrapper.js.map +1 -0
  192. package/dist/omeggaplugin.d.ts +1 -0
  193. package/dist/omeggaplugin.js +4 -0
  194. package/dist/omeggaplugin.js.map +1 -0
  195. package/dist/plugin.d.ts +781 -0
  196. package/dist/plugin.js +41 -0
  197. package/dist/plugin.js.map +1 -0
  198. package/dist/softconfig.d.ts +51 -0
  199. package/dist/softconfig.d.ts.map +1 -0
  200. package/dist/softconfig.js +82 -0
  201. package/dist/softconfig.js.map +1 -0
  202. package/dist/util/brick/checkBounds.d.ts +8 -0
  203. package/dist/util/brick/checkBounds.d.ts.map +1 -0
  204. package/dist/util/brick/checkBounds.js +22 -0
  205. package/dist/util/brick/checkBounds.js.map +1 -0
  206. package/dist/util/brick/constants.d.ts +18 -0
  207. package/dist/util/brick/constants.d.ts.map +1 -0
  208. package/dist/util/brick/constants.js +184 -0
  209. package/dist/util/brick/constants.js.map +1 -0
  210. package/dist/util/brick/getBounds.d.ts +4 -0
  211. package/dist/util/brick/getBounds.d.ts.map +1 -0
  212. package/dist/util/brick/getBounds.js +39 -0
  213. package/dist/util/brick/getBounds.js.map +1 -0
  214. package/dist/util/brick/getBrickSize.d.ts +3 -0
  215. package/dist/util/brick/getBrickSize.d.ts.map +1 -0
  216. package/dist/util/brick/getBrickSize.js +12 -0
  217. package/dist/util/brick/getBrickSize.js.map +1 -0
  218. package/dist/util/brick/getScaleAxis.d.ts +3 -0
  219. package/dist/util/brick/getScaleAxis.d.ts.map +1 -0
  220. package/dist/util/brick/getScaleAxis.js +38 -0
  221. package/dist/util/brick/getScaleAxis.js.map +1 -0
  222. package/dist/util/brick/index.d.ts +13 -0
  223. package/dist/util/brick/index.d.ts.map +1 -0
  224. package/dist/util/brick/index.js +29 -0
  225. package/dist/util/brick/index.js.map +1 -0
  226. package/dist/util/brick/rotate.d.ts +17 -0
  227. package/dist/util/brick/rotate.d.ts.map +1 -0
  228. package/dist/util/brick/rotate.js +38 -0
  229. package/dist/util/brick/rotate.js.map +1 -0
  230. package/dist/util/brick/setOwnership.d.ts +12 -0
  231. package/dist/util/brick/setOwnership.d.ts.map +1 -0
  232. package/dist/util/brick/setOwnership.js +21 -0
  233. package/dist/util/brick/setOwnership.js.map +1 -0
  234. package/dist/util/chat.d.ts +23 -0
  235. package/dist/util/chat.d.ts.map +1 -0
  236. package/dist/util/chat.js +50 -0
  237. package/dist/util/chat.js.map +1 -0
  238. package/dist/util/color.d.ts +13 -0
  239. package/dist/util/color.d.ts.map +1 -0
  240. package/dist/util/color.js +130 -0
  241. package/dist/util/color.js.map +1 -0
  242. package/dist/util/file.d.ts +5 -0
  243. package/dist/util/file.d.ts.map +1 -0
  244. package/dist/util/file.js +114 -0
  245. package/dist/util/file.js.map +1 -0
  246. package/dist/util/index.d.ts +162 -0
  247. package/dist/util/index.d.ts.map +1 -0
  248. package/dist/util/index.js +92 -0
  249. package/dist/util/index.js.map +1 -0
  250. package/dist/util/map.d.ts +6 -0
  251. package/dist/util/map.d.ts.map +1 -0
  252. package/dist/util/map.js +26 -0
  253. package/dist/util/map.js.map +1 -0
  254. package/dist/util/pattern.d.ts +1 -0
  255. package/dist/util/pattern.d.ts.map +1 -0
  256. package/dist/util/pattern.js +11 -0
  257. package/dist/util/pattern.js.map +1 -0
  258. package/dist/util/time.d.ts +4 -0
  259. package/dist/util/time.d.ts.map +1 -0
  260. package/dist/util/time.js +41 -0
  261. package/dist/util/time.js.map +1 -0
  262. package/dist/util/uuid.d.ts +2 -0
  263. package/dist/util/uuid.d.ts.map +1 -0
  264. package/dist/util/uuid.js +8 -0
  265. package/dist/util/uuid.js.map +1 -0
  266. package/dist/util/wsl.d.ts +1 -0
  267. package/dist/util/wsl.d.ts.map +1 -0
  268. package/dist/util/wsl.js +14 -0
  269. package/dist/util/wsl.js.map +1 -0
  270. package/dist/webserver/backend/api.d.ts +3 -0
  271. package/dist/webserver/backend/api.d.ts.map +1 -0
  272. package/dist/webserver/backend/api.js +685 -0
  273. package/dist/webserver/backend/api.js.map +1 -0
  274. package/dist/webserver/backend/calendar.d.ts +5 -0
  275. package/dist/webserver/backend/calendar.d.ts.map +1 -0
  276. package/dist/webserver/backend/calendar.js +21 -0
  277. package/dist/webserver/backend/calendar.js.map +1 -0
  278. package/dist/webserver/backend/database.d.ts +149 -0
  279. package/dist/webserver/backend/database.d.ts.map +1 -0
  280. package/dist/webserver/backend/database.js +575 -0
  281. package/dist/webserver/backend/database.js.map +1 -0
  282. package/dist/webserver/backend/index.d.ts +31 -0
  283. package/dist/webserver/backend/index.d.ts.map +1 -0
  284. package/dist/webserver/backend/index.js +189 -0
  285. package/dist/webserver/backend/index.js.map +1 -0
  286. package/dist/webserver/backend/metrics.d.ts +3 -0
  287. package/dist/webserver/backend/metrics.d.ts.map +1 -0
  288. package/dist/webserver/backend/metrics.js +203 -0
  289. package/dist/webserver/backend/metrics.js.map +1 -0
  290. package/dist/webserver/backend/types.d.ts +115 -0
  291. package/dist/webserver/backend/types.d.ts.map +1 -0
  292. package/dist/webserver/backend/types.js +3 -0
  293. package/dist/webserver/backend/types.js.map +1 -0
  294. package/dist/webserver/backend/util.d.ts +2 -0
  295. package/dist/webserver/backend/util.d.ts.map +1 -0
  296. package/dist/webserver/backend/util.js +78 -0
  297. package/dist/webserver/backend/util.js.map +1 -0
  298. package/dist/webserver/index.d.ts +2 -0
  299. package/dist/webserver/index.d.ts.map +1 -0
  300. package/dist/webserver/index.js +9 -0
  301. package/dist/webserver/index.js.map +1 -0
  302. package/{src/webserver/frontend → frontend}/app.html +0 -0
  303. package/{src/webserver/frontend → frontend}/assets/fonts/GlacialIndifferenceBold.ttf +0 -0
  304. package/{src/webserver/frontend → frontend}/assets/fonts/GlacialIndifferenceItalic.otf +0 -0
  305. package/{src/webserver/frontend → frontend}/assets/fonts/GlacialIndifferenceMedium.otf +0 -0
  306. package/{src/webserver/frontend → frontend}/assets/fonts/GlacialIndifferenceRegular.ttf +0 -0
  307. package/{src/webserver/frontend → frontend}/assets/fonts/RobotoBold.ttf +0 -0
  308. package/{src/webserver/frontend → frontend}/assets/fonts/RobotoItalic.ttf +0 -0
  309. package/{src/webserver/frontend → frontend}/assets/fonts/RobotoRegular.ttf +0 -0
  310. package/{src/webserver/frontend → frontend}/assets/img/auth_bg.webp +0 -0
  311. package/{src/webserver/frontend → frontend}/assets/img/dark_bg.webp +0 -0
  312. package/{src/webserver/frontend → frontend}/assets/img/turkey.webp +0 -0
  313. package/{src/webserver/frontend → frontend}/auth.html +0 -0
  314. package/index.js +10 -2
  315. package/package.json +44 -16
  316. package/public/app.bundle.js +537 -73
  317. package/public/app.bundle.js.map +1 -1
  318. package/public/app.css +727 -2
  319. package/public/app.css.map +1 -1
  320. package/public/auth.bundle.js +18 -18
  321. package/public/auth.bundle.js.map +1 -1
  322. package/public/auth.css +364 -2
  323. package/public/auth.css.map +1 -1
  324. package/templates/rpc/README.md +29 -0
  325. package/templates/rpc/doc.json +7 -0
  326. package/templates/rpc/omegga_plugin +0 -0
  327. package/templates/rpc/plugin.json +4 -0
  328. package/templates/rpc/setup.sh +3 -0
  329. package/templates/safe/README.md +29 -0
  330. package/templates/safe/access.json +1 -0
  331. package/templates/safe/doc.json +7 -0
  332. package/templates/safe/omegga.plugin.js +20 -0
  333. package/templates/safe/plugin.json +4 -0
  334. package/templates/safe/setup.sh +4 -0
  335. package/templates/safe-ts/.gitignore.rename +3 -0
  336. package/templates/safe-ts/README.md +29 -0
  337. package/templates/safe-ts/access.json +1 -0
  338. package/templates/safe-ts/doc.json +7 -0
  339. package/templates/safe-ts/omegga.d.ts +1311 -0
  340. package/templates/safe-ts/omegga.plugin.ts +29 -0
  341. package/templates/safe-ts/plugin.json +4 -0
  342. package/templates/safe-ts/setup.sh +4 -0
  343. package/templates/safe-ts/tsconfig.json +10 -0
  344. package/templates/unsafe/README.md +29 -0
  345. package/templates/unsafe/doc.json +7 -0
  346. package/templates/unsafe/omegga.main.js +15 -0
  347. package/templates/unsafe/plugin.json +4 -0
  348. package/templates/unsafe/setup.sh +4 -0
  349. package/.babelrc.json +0 -5
  350. package/.github/workflows/lint.yml +0 -26
  351. package/.prettierrc +0 -7
  352. package/.vscode/extensions.json +0 -5
  353. package/src/OMEGGA_LEGACY_INSTALL +0 -44
  354. package/src/brickadia/config.js +0 -42
  355. package/src/brickadia/server.js +0 -227
  356. package/src/cli/auth.js +0 -104
  357. package/src/cli/config.js +0 -77
  358. package/src/cli/index.js +0 -6
  359. package/src/cli/installer.js +0 -65
  360. package/src/cli/plugin.js +0 -575
  361. package/src/cli/terminal.js +0 -466
  362. package/src/config/authorizer.js +0 -37
  363. package/src/config/formats/format_js.js +0 -6
  364. package/src/config/formats/format_yml.js +0 -8
  365. package/src/config/index.js +0 -81
  366. package/src/config/reader.js +0 -27
  367. package/src/config/validator.js +0 -32
  368. package/src/config/writer.js +0 -20
  369. package/src/info/default_commands.json +0 -26
  370. package/src/lib.js +0 -23
  371. package/src/main.js +0 -332
  372. package/src/omegga/auth.js +0 -138
  373. package/src/omegga/commandInjector.js +0 -228
  374. package/src/omegga/index.js +0 -22
  375. package/src/omegga/logWrangler.js +0 -323
  376. package/src/omegga/matchers/auth.js +0 -49
  377. package/src/omegga/matchers/chat.js +0 -73
  378. package/src/omegga/matchers/command.js +0 -39
  379. package/src/omegga/matchers/exit.js +0 -19
  380. package/src/omegga/matchers/init.js +0 -23
  381. package/src/omegga/matchers/join.js +0 -115
  382. package/src/omegga/matchers/leave.js +0 -58
  383. package/src/omegga/matchers/mapChange.js +0 -37
  384. package/src/omegga/matchers/version.js +0 -45
  385. package/src/omegga/player.js +0 -585
  386. package/src/omegga/plugin/plugin_jsonrpc_stdio.js +0 -526
  387. package/src/omegga/plugin/plugin_node_safe/proxyOmegga.js +0 -117
  388. package/src/omegga/plugin/plugin_node_safe/worker.js +0 -238
  389. package/src/omegga/plugin/plugin_node_safe.js +0 -473
  390. package/src/omegga/plugin/plugin_node_unsafe.js +0 -177
  391. package/src/omegga/plugin.js +0 -565
  392. package/src/omegga/server.js +0 -658
  393. package/src/omegga/wrapper.js +0 -62
  394. package/src/softconfig.js +0 -64
  395. package/src/util/brick/checkBounds.js +0 -22
  396. package/src/util/brick/constants.js +0 -185
  397. package/src/util/brick/getBounds.js +0 -36
  398. package/src/util/brick/getBrickSize.js +0 -9
  399. package/src/util/brick/getScaleAxis.js +0 -31
  400. package/src/util/brick/index.js +0 -9
  401. package/src/util/brick/rotate.js +0 -43
  402. package/src/util/brick/setOwnership.js +0 -20
  403. package/src/util/chat.js +0 -28
  404. package/src/util/color.js +0 -143
  405. package/src/util/file.js +0 -119
  406. package/src/util/index.js +0 -28
  407. package/src/util/map.js +0 -28
  408. package/src/util/pattern.js +0 -14
  409. package/src/util/time.js +0 -46
  410. package/src/util/uuid.js +0 -8
  411. package/src/util/wsl.js +0 -9
  412. package/src/webserver/backend/api.js +0 -795
  413. package/src/webserver/backend/calendar.js +0 -15
  414. package/src/webserver/backend/database.js +0 -725
  415. package/src/webserver/backend/index.js +0 -206
  416. package/src/webserver/backend/metrics.js +0 -148
  417. package/src/webserver/backend/util.js +0 -75
  418. package/src/webserver/frontend/.eslintrc.yml +0 -26
  419. package/src/webserver/frontend/app.js +0 -78
  420. package/src/webserver/frontend/auth.js +0 -16
  421. package/src/webserver/frontend/components/Background.vue +0 -83
  422. package/src/webserver/frontend/components/Button.vue +0 -105
  423. package/src/webserver/frontend/components/ChatEntry.vue +0 -107
  424. package/src/webserver/frontend/components/ChatTime.vue +0 -40
  425. package/src/webserver/frontend/components/Dimmer.vue +0 -43
  426. package/src/webserver/frontend/components/Dropdown.vue +0 -145
  427. package/src/webserver/frontend/components/Footer.vue +0 -29
  428. package/src/webserver/frontend/components/Header.vue +0 -27
  429. package/src/webserver/frontend/components/InfiniteScroll.vue +0 -51
  430. package/src/webserver/frontend/components/Input.vue +0 -93
  431. package/src/webserver/frontend/components/ListInput.vue +0 -105
  432. package/src/webserver/frontend/components/Loader.vue +0 -98
  433. package/src/webserver/frontend/components/MainMenuButton.vue +0 -83
  434. package/src/webserver/frontend/components/Modal.vue +0 -44
  435. package/src/webserver/frontend/components/NavBar.vue +0 -24
  436. package/src/webserver/frontend/components/PlayerDropdown.vue +0 -210
  437. package/src/webserver/frontend/components/PopoutContent.vue +0 -32
  438. package/src/webserver/frontend/components/RoleDropdown.vue +0 -157
  439. package/src/webserver/frontend/components/Scroll.vue +0 -33
  440. package/src/webserver/frontend/components/Toggle.vue +0 -91
  441. package/src/webserver/frontend/components/index.js +0 -33
  442. package/src/webserver/frontend/css/font.scss +0 -53
  443. package/src/webserver/frontend/css/mixins.scss +0 -49
  444. package/src/webserver/frontend/css/style.scss +0 -166
  445. package/src/webserver/frontend/css/theme.scss +0 -64
  446. package/src/webserver/frontend/partials/NavHeader.vue +0 -55
  447. package/src/webserver/frontend/partials/Page.vue +0 -40
  448. package/src/webserver/frontend/partials/PageContent.vue +0 -31
  449. package/src/webserver/frontend/partials/SideNav.vue +0 -115
  450. package/src/webserver/frontend/partials/index.js +0 -4
  451. package/src/webserver/frontend/router.js +0 -83
  452. package/src/webserver/frontend/views/Auth.vue +0 -190
  453. package/src/webserver/frontend/views/History.vue +0 -462
  454. package/src/webserver/frontend/views/Home.vue +0 -251
  455. package/src/webserver/frontend/views/Main.vue +0 -69
  456. package/src/webserver/frontend/views/NotFound.vue +0 -10
  457. package/src/webserver/frontend/views/Players.vue +0 -425
  458. package/src/webserver/frontend/views/PlayersInspector.vue +0 -538
  459. package/src/webserver/frontend/views/Plugins.vue +0 -217
  460. package/src/webserver/frontend/views/PluginsInspector.vue +0 -418
  461. package/src/webserver/frontend/views/Server.vue +0 -167
  462. package/src/webserver/frontend/views/Users.vue +0 -538
  463. package/src/webserver/frontend/widgets/Chat.vue +0 -124
  464. package/src/webserver/frontend/widgets/Status.vue +0 -91
  465. package/src/webserver/frontend/widgets/index.js +0 -2
  466. package/src/webserver/frontend/widgets/tooltip.js +0 -108
  467. package/src/webserver/index.js +0 -4
@@ -1,585 +0,0 @@
1
- const { color, brick: brickUtils } = require('../util/');
2
-
3
- class Player {
4
- #omegga = null;
5
-
6
- /**
7
- * players are not to be constructed
8
- * @constructor
9
- * @param {Omegga} - Omegga Instance
10
- * @param {String} - Player Name
11
- * @param {String} - Player Id
12
- * @param {String} - Player Controller
13
- * @param {String} - Player State
14
- */
15
- constructor(omegga, name, id, controller, state) {
16
- this.#omegga = omegga;
17
- this.name = name;
18
- this.id = id;
19
- this.controller = controller;
20
- this.state = state;
21
- }
22
-
23
- /**
24
- * Returns omegga
25
- * @return {Omegga}
26
- */
27
- getOmegga() {
28
- return this.#omegga;
29
- }
30
-
31
- /**
32
- * Clone a player
33
- * @return {Player}
34
- */
35
- clone() {
36
- return new Player(
37
- this.#omegga,
38
- this.name,
39
- this.id,
40
- this.controller,
41
- this.state
42
- );
43
- }
44
-
45
- /**
46
- * Get raw player info (to feed into a constructor)
47
- * @return {Array<String>}
48
- */
49
- raw() {
50
- return [this.name, this.id, this.controller, this.state];
51
- }
52
-
53
- /**
54
- * true if the player is the host
55
- * @return {Boolean}
56
- */
57
- isHost() {
58
- return this.#omegga.host.id === this.id;
59
- }
60
-
61
- /**
62
- * clear this player's bricks
63
- * @param {Boolean} - quiet mode
64
- */
65
- clearBricks(quiet = false) {
66
- this.#omegga.clearBricks(this.id, quiet);
67
- }
68
-
69
- /**
70
- * get a player's roles, if any
71
- * @param {Omegga} - omegga instance
72
- * @param {String} - player uuid
73
- * @return {Array<String>} - list of roles
74
- */
75
- static getRoles(omegga, id) {
76
- const data = omegga.getRoleAssignments().savedPlayerRoles[id];
77
- return Object.freeze(data && data.roles ? data.roles : []);
78
- }
79
-
80
- /**
81
- * get a player's roles, if any
82
- * @return {Array<String>}
83
- */
84
- getRoles() {
85
- return Player.getRoles(this.#omegga, this.id);
86
- }
87
-
88
- /**
89
- * get a player's permissions in a map like `{"Bricks.ClearOwn": true, ...}`
90
- * @param {Omegga} - Omegga instance
91
- * @param {String} - player uuid
92
- * @return {Object} - permissions map
93
- */
94
- static getPermissions(omegga, id) {
95
- const { roles, defaultRole } = omegga.getRoleSetup();
96
-
97
- // if the player is the host, the player has every permission
98
- if (omegga.host.id === id) {
99
- return Object.freeze(
100
- Object.fromEntries(
101
- [].concat(
102
- defaultRole.permissions.map(p => [p.name, true]),
103
- // sometimes the default role does not have every permission listed
104
- ...roles.map(r => r.permissions.map(p => [p.name, true]))
105
- )
106
- )
107
- );
108
- }
109
-
110
- const DEFAULT_PERMS = {
111
- moderator: [
112
- 'Bricks.ClearAll',
113
- 'Minigame.AlwaysLeave',
114
- 'Players.Kick',
115
- 'Players.TPInMinigame',
116
- 'Players.TPOthers',
117
- 'Self.Ghost',
118
- ],
119
- admin: [
120
- 'Bricks.ClearAll',
121
- 'Bricks.ClearOwn',
122
- 'Bricks.IgnoreTrust',
123
- 'Bricks.Load',
124
- 'Map.Environment',
125
- 'Minigame.AlwaysEdit',
126
- 'Minigame.AlwaysLeave',
127
- 'Minigame.AlwaysSwitchTeam',
128
- 'Minigame.MakeDefault',
129
- 'Minigame.MakePersistent',
130
- 'Minigame.UseAllBricks',
131
- 'Players.Ban',
132
- 'Players.Kick',
133
- 'Players.TPInMinigame',
134
- 'Players.TPOthers',
135
- 'Roles.Grant',
136
- 'Self.Ghost',
137
- 'Server.ChangeRoles',
138
- 'Server.ChangeSettings',
139
- 'Server.FreezeCamera',
140
- 'Tools.Selector.BypassLimits',
141
- 'Tools.Selector.BypassTimeouts',
142
- ],
143
- };
144
-
145
- // get the player's roles
146
- const playerRoles = Player.getRoles(omegga, id).map(r => r.toLowerCase());
147
-
148
- // default player permissions
149
- const permissions = {
150
- 'Bricks.ClearAll': false,
151
- 'Bricks.ClearOwn': true,
152
- 'Bricks.Delete': true,
153
- 'Bricks.Edit': true,
154
- 'Bricks.IgnoreTrust': false,
155
- 'Bricks.Paint': true,
156
- 'Bricks.Place': true,
157
- 'BricksItems.Spawn': true,
158
- 'Map.Change': false,
159
- 'Map.Environment': false,
160
- 'Map.SetSpawn': false,
161
- 'Minigame.AlwaysEdit': false,
162
- 'Minigame.AlwaysLeave': false,
163
- 'Minigame.AlwaysSwitchTeam': false,
164
- 'Minigame.Create': true,
165
- 'Minigame.MakePersistent': false,
166
- 'Minigame.UseAllBricks': false,
167
- 'Players.Ban': false,
168
- 'Players.TPInMinigame': false,
169
- 'Players.TPOthers': false,
170
- 'Players.TPSelf': true,
171
- 'Roles.Grant': false,
172
- 'Self.Flashlight': true,
173
- 'Self.Fly': true,
174
- 'Self.FreezeCamera': false,
175
- 'Self.Ghost': false,
176
- 'Self.Sprint': true,
177
- 'Self.Suicide': true,
178
- 'Tools.Selector.Use': true,
179
- };
180
-
181
- // apply all permissions from default role
182
- for (const p of defaultRole.permissions) {
183
- // technically this can never be Unchanged so it's always on enabled or allowed
184
- permissions[p.name] =
185
- p.state === 'Unchanged'
186
- ? permissions[p.name]
187
- : !!p.bEnabled || p.state === 'Allowed';
188
- }
189
-
190
- // loop through all the roles
191
- for (const role of roles) {
192
- // ignore ones the player does not have
193
- if (!playerRoles.includes(role.name.toLowerCase())) continue;
194
-
195
- const defaultPerms = DEFAULT_PERMS[role.name.toLowerCase()] || [];
196
- // iterate through default permissions
197
- for (const perm of defaultPerms) {
198
- // if they are not overriden, set it to true
199
- if (!role.permissions.find(r => r.name === perm))
200
- permissions[perm] = true;
201
- }
202
-
203
- // add all the new permissions the player now has
204
- for (const p of role.permissions) {
205
- // permission is disabled on forbidden, persisted on unchanged, and enabled on bEnabled or Allowed
206
- permissions[p.name] =
207
- p.state !== 'Forbidden' &&
208
- (p.state === 'Unchanged'
209
- ? permissions[p.name]
210
- : permissions[p.name] || p.bEnabled || p.state === 'Allowed');
211
- permissions[p.name] = permissions[p.name] || p.bEnabled;
212
- }
213
- }
214
-
215
- return Object.freeze(permissions);
216
- }
217
-
218
- /**
219
- * get a player's permissions in a map like `{"Bricks.ClearOwn": true, ...}`
220
- * @return {Object} - permissions map
221
- */
222
- getPermissions() {
223
- return Player.getPermissions(this.#omegga, this.id);
224
- }
225
-
226
- /**
227
- * get player's name color
228
- * @return {String} - 6 character hex string
229
- */
230
- getNameColor() {
231
- const { roles, defaultRole, ownerRoleColor, bOwnerRoleHasColor } =
232
- this.#omegga.getRoleSetup();
233
-
234
- // host check if host has host color
235
- if (this.isHost() && bOwnerRoleHasColor)
236
- return color.rgbToHex(ownerRoleColor);
237
-
238
- // get the player's role
239
- const playerRoles = this.getRoles().map(r => r.toLowerCase());
240
-
241
- // only if the player actually has roles...
242
- if (playerRoles.length > 0) {
243
- // check the role list in reverse for the player's role (highest tier first)
244
- const found = roles
245
- .slice()
246
- .reverse()
247
- .find(
248
- role =>
249
- role.bHasColor && playerRoles.includes(role.name.toLowerCase())
250
- );
251
-
252
- if (found) return color.rgbToHex(found.color);
253
- }
254
-
255
- return color.rgbToHex(
256
- defaultRole.bHasColor
257
- ? defaultRole.color
258
- : { r: 255, g: 255, b: 255, a: 255 }
259
- );
260
- }
261
-
262
- /**
263
- * get player's position
264
- * @return {Promise<List<Number>>} - [x, y, z] coordinates
265
- */
266
- async getPosition() {
267
- // this is here because my text editor had weird syntax highlighting glitches when the other omeggas were replaced with this.#omegga...
268
- // guess the code is "too new" :egg:
269
- const omegga = this.#omegga;
270
-
271
- // given a player controller, match the player's pawn
272
- const pawnRegExp = new RegExp(
273
- `BP_PlayerController_C .+?PersistentLevel\\.${this.controller}\\.Pawn = BP_FigureV2_C'.+?:PersistentLevel.(?<pawn>BP_FigureV2_C_\\d+)'`
274
- );
275
-
276
- // wait for the pawn watcher to return a pawn
277
- const [
278
- {
279
- groups: { pawn },
280
- },
281
- ] = await omegga.addWatcher(pawnRegExp, {
282
- // request the pawn for this player's controller (should only be one)
283
- exec: () =>
284
- omegga.writeln(
285
- `GetAll BP_PlayerController_C Pawn Name=${this.controller}`
286
- ),
287
- timeoutDelay: 100,
288
- });
289
-
290
- // given a player's pawn, match the player's position
291
- const posRegExp = new RegExp(
292
- `CapsuleComponent .+?PersistentLevel\\.${pawn}\\.CollisionCylinder\\.RelativeLocation = \\(X=(?<x>[\\d\\.-]+),Y=(?<y>[\\d\\.-]+),Z=(?<z>[\\d\\.-]+)\\)`
293
- );
294
-
295
- // wait for the position promise
296
- const [
297
- {
298
- groups: { x, y, z },
299
- },
300
- ] = await omegga.addWatcher(posRegExp, {
301
- // request the position for this player's pawn
302
- exec: () =>
303
- omegga.writeln(
304
- `GetAll SceneComponent RelativeLocation Name=CollisionCylinder Outer=${pawn}`
305
- ),
306
- timeoutDelay: 100,
307
- });
308
-
309
- // return the player's position as an array of numbers
310
- return [x, y, z].map(Number);
311
- }
312
-
313
- /**
314
- * gets a user's ghost brick info (by uuid, name, controller, or player object)
315
- * @return {Promise<Object>} - ghost brick data
316
- */
317
- async getGhostBrick() {
318
- const { controller } = this;
319
-
320
- const ownerRegExp =
321
- /^(?<index>\d+)\) BrickGridPreviewActor (.+):PersistentLevel\.(?<actor>BrickGridPreviewActor_\d+)\.Owner = BP_PlayerController_C'(.+):PersistentLevel\.(?<controller>BP_PlayerController_C_\d+)'$/;
322
- const transformParamsRegExp =
323
- /^(?<index>\d+)\) BrickGridPreviewActor (.+):PersistentLevel\.(?<actor>BrickGridPreviewActor_\d+)\.TransformParameters = \(TargetGrid=("(?<targetGrid>.+)"|None),Position=\(X=(?<x>.+),Y=(?<y>.+),Z=(?<z>.+)\),Orientation=(?<orientation>.+)\)$/;
324
-
325
- const [owners, transformParams] = await Promise.all([
326
- this.#omegga.watchLogChunk(
327
- 'GetAll BrickGridPreviewActor Owner',
328
- ownerRegExp,
329
- { first: 'index', timeoutDelay: 500 }
330
- ),
331
- this.#omegga.watchLogChunk(
332
- 'GetAll BrickGridPreviewActor TransformParameters',
333
- transformParamsRegExp,
334
- { first: 'index', timeoutDelay: 500 }
335
- ),
336
- ]);
337
-
338
- // get BrickGridPreviewActor by controller
339
- const owner = owners.find(owner => owner.groups.controller === controller);
340
-
341
- if (!owner) return;
342
-
343
- const actor = owner.groups.actor;
344
- // get transform parameters for the found actor
345
- const transformParameters = transformParams.find(
346
- transformParameters => transformParameters.groups.actor === actor
347
- );
348
-
349
- if (!transformParameters) return;
350
-
351
- return {
352
- targetGrid: transformParameters.groups.targetGrid,
353
- location: [
354
- +transformParameters.groups.x,
355
- +transformParameters.groups.y,
356
- +transformParameters.groups.z,
357
- ],
358
- orientation: transformParameters.groups.orientation,
359
- };
360
- }
361
-
362
- /**
363
- * gets a user's paint tool properties
364
- * @return {Promise<Object>} - paint data
365
- */
366
- async getPaint() {
367
- const { controller } = this;
368
-
369
- const ownerRegExp =
370
- /^(?<index>\d+)\) BP_Item_PaintTool_C (.+):PersistentLevel\.(?<actor>BP_Item_PaintTool_C_\d+)\.Owner = BP_PlayerController_C'(.+):PersistentLevel\.(?<controller>BP_PlayerController_C_\d+)'$/;
371
- const colorRegExp =
372
- /^(?<index>\d+)\) BP_Item_PaintTool_C (.+):PersistentLevel\.(?<actor>BP_Item_PaintTool_C_\d+)\.SelectedColor = \(B=(?<b>.+),G=(?<g>.+),R=(?<r>.+),A=(?<a>.+)\)$/;
373
- const materialRegExp =
374
- /^(?<index>\d+)\) BP_Item_PaintTool_C (.+):PersistentLevel\.(?<actor>BP_Item_PaintTool_C_\d+)\.SelectedMaterialId = (?<materialIndex>\d+)$/;
375
- const materialAlphaRegExp =
376
- /^(?<index>\d+)\) BP_Item_PaintTool_C (.+):PersistentLevel\.(?<actor>BP_Item_PaintTool_C_\d+)\.SelectedMaterialAlpha = (?<materialAlpha>\d+)$/;
377
-
378
- const [owners, colorMatch, materialMatch, materialAlphaMatch] =
379
- await Promise.all([
380
- this.#omegga.watchLogChunk(
381
- 'GetAll BP_Item_PaintTool_C Owner',
382
- ownerRegExp,
383
- { first: 'index', timeoutDelay: 500 }
384
- ),
385
- this.#omegga.watchLogChunk(
386
- 'GetAll BP_Item_PaintTool_C SelectedColor',
387
- colorRegExp,
388
- { first: 'index', timeoutDelay: 500 }
389
- ),
390
- this.#omegga.watchLogChunk(
391
- 'GetAll BP_Item_PaintTool_C SelectedMaterialId',
392
- materialRegExp,
393
- { first: 'index', timeoutDelay: 500 }
394
- ),
395
- this.#omegga.watchLogChunk(
396
- 'GetAll BP_Item_PaintTool_C SelectedMaterialAlpha',
397
- materialAlphaRegExp,
398
- { first: 'index', timeoutDelay: 500 }
399
- ),
400
- ]);
401
-
402
- // get BrickGridPreviewActor by controller
403
- const owner = owners.find(owner => owner.groups.controller === controller);
404
-
405
- if (!owner) return;
406
-
407
- const actor = owner.groups.actor;
408
- // get transform parameters for the found actor
409
- const color = colorMatch.find(color => color.groups.actor === actor);
410
- const material = materialMatch.find(
411
- material => material.groups.actor === actor
412
- );
413
- const materialAlpha = materialAlphaMatch.find(
414
- materialAlpha => materialAlpha.groups.actor === actor
415
- );
416
-
417
- if (!color || !material || !materialAlpha) return;
418
-
419
- const colorRaw = [+color.groups.r, +color.groups.g, +color.groups.b];
420
- return {
421
- materialIndex: material.groups.materialIndex,
422
- materialAlpha: materialAlpha.groups.materialAlpha,
423
- material:
424
- brickUtils.BRICK_CONSTANTS.DEFAULT_MATERIALS[
425
- material.groups.materialIndex
426
- ],
427
- color: colorRaw,
428
- };
429
- }
430
-
431
- /**
432
- * gets the bounds of the template in the user's clipboard (bounds of original selection box)
433
- * @return {Promise<Object>} - template bounds
434
- */
435
- async getTemplateBounds() {
436
- const { controller } = this;
437
-
438
- const brickTemplateRegExp =
439
- /^(?<index>\d+)\) BP_PlayerController_C (.+):PersistentLevel\.(?<controller>BP_PlayerController_C_\d+)\.TEMP_BrickTemplate_Server = BrickBuildingTemplate'(.+)Transient.(?<templateName>BrickBuildingTemplate_\d+)'$/;
440
- const minBoundsRegExp =
441
- /^(?<index>\d+)\) BrickBuildingTemplate (.+)Transient\.(?<templateName>BrickBuildingTemplate_\d+)\.MinBounds = \(X=(?<x>.+),Y=(?<y>.+),Z=(?<z>.+)\)$/;
442
- const maxBoundsRegExp =
443
- /^(?<index>\d+)\) BrickBuildingTemplate (.+)Transient\.(?<templateName>BrickBuildingTemplate_\d+)\.MaxBounds = \(X=(?<x>.+),Y=(?<y>.+),Z=(?<z>.+)\)$/;
444
- const centerRegExp =
445
- /^(?<index>\d+)\) BrickBuildingTemplate (.+)Transient\.(?<templateName>BrickBuildingTemplate_\d+)\.Center = \(X=(?<x>.+),Y=(?<y>.+),Z=(?<z>.+)\)$/;
446
-
447
- const [template, minBounds, maxBounds, centers] = await Promise.all([
448
- this.#omegga.watchLogChunk(
449
- `GetAll BP_PlayerController_C TEMP_BrickTemplate_Server Name=${controller}`,
450
- brickTemplateRegExp,
451
- { first: 'index' }
452
- ),
453
- this.#omegga.watchLogChunk(
454
- 'GetAll BrickBuildingTemplate MinBounds',
455
- minBoundsRegExp,
456
- { first: 'index' }
457
- ),
458
- this.#omegga.watchLogChunk(
459
- 'GetAll BrickBuildingTemplate MaxBounds',
460
- maxBoundsRegExp,
461
- { first: 'index' }
462
- ),
463
- this.#omegga.watchLogChunk(
464
- 'GetAll BrickBuildingTemplate Center',
465
- centerRegExp,
466
- { first: 'index' }
467
- ),
468
- ]);
469
-
470
- if (
471
- !template.length ||
472
- !minBounds.length ||
473
- !maxBounds.length ||
474
- !centers.length
475
- )
476
- return;
477
-
478
- // get template name
479
- const templateName = template[0].groups.templateName;
480
-
481
- // find all values with matching template name
482
- const minBound = minBounds.find(
483
- minBound => minBound.groups.templateName === templateName
484
- );
485
- const maxBound = maxBounds.find(
486
- maxBound => maxBound.groups.templateName === templateName
487
- );
488
- const center = centers.find(
489
- center => center.groups.templateName === templateName
490
- );
491
-
492
- if (!minBound || !maxBound || !center) return;
493
-
494
- return {
495
- minBound: [+minBound.groups.x, +minBound.groups.y, +minBound.groups.z],
496
- maxBound: [+maxBound.groups.x, +maxBound.groups.y, +maxBound.groups.z],
497
- center: [+center.groups.x, +center.groups.y, +center.groups.z],
498
- };
499
- }
500
-
501
- /**
502
- * get bricks inside template bounds
503
- * @return {Promise<SaveData>} - BRS JS Save Data
504
- */
505
- async getTemplateBoundsData() {
506
- const templateBounds = await this.getTemplateBounds();
507
-
508
- if (!templateBounds) return;
509
-
510
- const saveData = await this.#omegga.getSaveData();
511
-
512
- if (!saveData) return;
513
-
514
- // filter bricks outside the bounds
515
- saveData.bricks = saveData.bricks.filter(brick => {
516
- return brickUtils.checkBounds(
517
- brick,
518
- saveData.brick_assets,
519
- templateBounds
520
- );
521
- });
522
-
523
- if (saveData.bricks.length > 0) {
524
- return saveData;
525
- }
526
-
527
- return undefined;
528
- }
529
-
530
- /**
531
- * load bricks at ghost brick location
532
- * @param {SaveData} - player or player identifier
533
- * @param {Number} - save load X offset
534
- * @param {Number} - save load Y offset
535
- * @param {Number} - save load Z offset
536
- * @param {Boolean} - quiet mode
537
- * @return {Promise} - BRS JS Save Data
538
- */
539
- async loadDataAtGhostBrick(
540
- saveData,
541
- { rotate = true, offX = 0, offY = 0, offZ = 0, quiet = true } = {}
542
- ) {
543
- const ghostBrickData = await this.getGhostBrick();
544
-
545
- if (!ghostBrickData || !saveData) return;
546
-
547
- // get bounds of the bricks
548
- const bounds = brickUtils.getBounds(saveData);
549
-
550
- if (rotate) {
551
- const orientation =
552
- brickUtils.BRICK_CONSTANTS.orientationMap[ghostBrickData.orientation];
553
- saveData.bricks = saveData.bricks.map(brick =>
554
- brickUtils.rotate(brick, orientation)
555
- );
556
- // rotate bounds, if we dont use the original bounds they are off by 1 sometimes >:(
557
- bounds.minBound = brickUtils.BRICK_CONSTANTS.translationTable[
558
- brickUtils.d2o(...orientation)
559
- ](bounds.minBound);
560
- bounds.maxBound = brickUtils.BRICK_CONSTANTS.translationTable[
561
- brickUtils.d2o(...orientation)
562
- ](bounds.maxBound);
563
- bounds.center = brickUtils.BRICK_CONSTANTS.translationTable[
564
- brickUtils.d2o(...orientation)
565
- ](bounds.center);
566
- }
567
-
568
- // calculate offset from bricks center to ghost brick center
569
- const offset = bounds.center.map(
570
- (center, index) => ghostBrickData.location[index] - center
571
- );
572
-
573
- // load at offset location
574
- await this.#omegga.loadSaveData(saveData, {
575
- offX: offX + offset[0],
576
- offY: offY + offset[1],
577
- offZ: offZ + offset[2],
578
- quiet,
579
- });
580
- }
581
- }
582
-
583
- global.Player = Player;
584
-
585
- module.exports = Player;