diff --git a/.eslintrc.json b/.eslintrc.json index 67f6d8b07..f454100aa 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -103,6 +103,47 @@ // "@stylistic/newline-per-chained-call": "error", // not sure if needed "@stylistic/new-parens": "error", "@stylistic/no-confusing-arrow": "error", + "@stylistic/wrap-iife": "error", + "@stylistic/space-before-blocks": "error", + "@stylistic/type-generic-spacing": "error", + "@stylistic/template-tag-spacing": "error", + "@stylistic/template-curly-spacing": "error", + "@stylistic/type-annotation-spacing": "error", + "@stylistic/jsx-child-element-spacing": "error", + // buggy + // "@stylistic/jsx-closing-bracket-location": "error", + // "@stylistic/jsx-closing-tag-location": "error", + "@stylistic/jsx-curly-brace-presence": "error", + "@stylistic/jsx-curly-newline": "error", + "@stylistic/jsx-curly-spacing": "error", + "@stylistic/jsx-equals-spacing": "error", + "@stylistic/jsx-first-prop-new-line": "error", + "@stylistic/jsx-function-call-newline": "error", + "@stylistic/jsx-max-props-per-line": [ + "error", + { + "maximum": 7 + } + ], + "@stylistic/jsx-pascal-case": "error", + "@stylistic/jsx-props-no-multi-spaces": "error", + "@stylistic/jsx-self-closing-comp": "error", + // "@stylistic/jsx-sort-props": [ + // "error", + // { + // "callbacksLast": false, + // "shorthandFirst": true, + // "shorthandLast": false, + // "multiline": "ignore", + // "ignoreCase": true, + // "noSortAlphabetically": true, + // "reservedFirst": [ + // "key", + // "className" + // ], + // "locale": "auto" + // } + // ], // perf "import/no-deprecated": "off", // --- diff --git a/.github/workflows/next-deploy.yml b/.github/workflows/next-deploy.yml index a04c3da41..b3e7c1d29 100644 --- a/.github/workflows/next-deploy.yml +++ b/.github/workflows/next-deploy.yml @@ -3,6 +3,7 @@ env: VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} ALIASES: ${{ vars.ALIASES }} + MAIN_MENU_LINKS: ${{ secrets.MAIN_MENU_LINKS }} on: push: branches: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index ddc4cde61..cc06bfb0c 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -2,6 +2,7 @@ name: Release env: VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} + MAIN_MENU_LINKS: ${{ secrets.MAIN_MENU_LINKS }} on: push: branches: [release] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e1e4dfc76..4a737a6d8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,6 +5,8 @@ After forking the repository, run the following commands to get started: 0. Ensure you have [Node.js](https://nodejs.org) and `pnpm` installed. To install pnpm run `npm i -g pnpm@9.0.4`. 1. Install dependencies: `pnpm i` 2. Start the project in development mode: `pnpm start` +3. Read the [Tasks Categories](#tasks-categories) and [Workflow](#workflow) sections below +4. Let us know if you are working on something and be sure to open a PR if you got any changes. Happy coding! ## Project Structure @@ -57,6 +59,20 @@ How different modules are used: - `mineflayer` - provider `bot` variable and as mineflayer states it is a wrapper for the `node-minecraft-protocol` module and is used to connect and interact with real Java Minecraft servers. However not all events & properties are exposed and sometimes you have to use `bot._client.on('packet_name', data => ...)` to handle packets that are not handled via mineflayer API. Also you can use almost any mineflayer plugin. +## Running Main App + Playground + +To start the main web app and playground, run `pnpm run-all`. Note is doesn't start storybook and tests. + +## Cypress Tests (E2E) + +Cypress tests are located in `cypress` folder. To run them, run `pnpm test-mc-server` and then `pnpm test:cypress` when the `pnpm prod-start` is running (or change the port to 3000 to test with the dev server). Usually you don't need to run these until you get issues on the CI. + +## Unit Tests + +There are not many unit tests for now (which we are trying to improve). +Location of unit tests: `**/*.test.ts` files in `src` folder and `prismarine-viewer` folder. +Start them with `pnpm test-unit`. + ## Making protocol-related changes You can get a description of packets for the latest protocol version from and for previous protocol versions from (look for *Page* links that have *Protocol* in URL). @@ -75,6 +91,84 @@ Also there are [src/generatedClientPackets.ts](src/generatedClientPackets.ts) an - Use `start-prod` script to start the project in production mode after running the `build` script to build the project. - If CI is failing on the next branch for some reason, feel free to use the latest commit for release branch. We will update the base branch asap. Please, always make sure to allow maintainers do changes when opening PRs. +## Tasks Categories + +(most important for now are on top). + +## 1. Client-side Logic (most important right now) + +Everything related to the client side packets. Investigate issues when something goes wrong with some server. It's much easier to work on these types of tasks when you have experience in Java with Minecraft, a deep understanding of the original client, and know how to debug it (which is not hard actually). Right now the client is easily detectable by anti-cheat plugins, and the main goal is to fix it (mostly because of wrong physics implementation). + +Priority tasks: + +- Rewrite or fix the physics logic (Botcraft or Grim can be used as a reference as well) +- Implement basic minecart / boat / horse riding +- Fix auto jump module (false triggers, performance issues) +- Investigate connection issues to some servers +- Setup a platform for automatic cron testing against the latest version of the anti-cheat plugins +- ... + +Goals: + +- Make more servers playable. Right now on hypixel-like servers (servers with minigames), only tnt run (and probably ) is fully playable. + +Notes: + +- You can see the incoming/outgoing packets in the console (F12 in Chrome) by enabling `options.debugLogNotFrequentPackets = true`. However, if you need a FULL log of all packets, you can start recording the packets by going into `Settings` > `Advanced` > `Enable Packets Replay` and then you can download the file and use it to replay the packets. +- You can use mcraft-e2e studio to send the same packets over and over again (which is useful for testing) or use the packets replayer (which is useful for debugging). + +## 2. Three.js Renderer + +Example tasks: + +- Improve / fix entity rendering +- Better update entities on specific packets +- Investigate performance issues under different conditions (instructions provided) +- Work on the playground code + +Goals: + +- Fix a lot of entity rendering issues (including position updates) +- Implement switching camera mode (first person, third person, etc) +- Animated blocks +- Armor rendering +- ... + +Note: + +- It's useful to know how to use helpers & additional cameras (e.g. setScissor) + +## 3. Server-side Logic + +Flying squid fork (space-squid). +Example tasks: + +- Add missing commands (e.g. /scoreboard) +- Basic physics (player fall damage, falling blocks & entities) +- Basic entities AI (spawning, attacking) +- Pvp +- Emit more packets on some specific events (e.g. when a player uses an item) +- Make more maps playable (e.g. fix when something is not implemented in both server and client and blocking map interaction) +- ... + +Long Term Goals: + +- Make most adventure maps playable +- Make a way to complete the game from the scratch (crafting, different dimensions, terrain generation, etc) +- Make bedwars playable! +Most of the tasks are straightforward to implement, just be sure to use a debugger ;). If you feel you are stuck, ask for help on Discord. Absolutely any tests / refactor suggestions are welcome! + +## 4. Frontend + +New React components, improve UI (including mobile support). + +## Workflow + +1. Locate the problem on the public test server & make an easily reproducible environment (you can also use local packets replay server or your custom server setup). Dm me for details on public test server / replay server +2. Debug the code, find an issue in the code, isolate the problem +3. Develop, try to fix and test. Finally we should find a way to fix it. It's ideal to have an automatic test but it's not necessary for now +3. Repeat step 1 to make sure the task is done and the problem is fixed (or the feature is implemented) + ### Would be useful to have - cleanup folder & modules structure, cleanup playground code diff --git a/package.json b/package.json index 6d31f0d99..7b27333e1 100644 --- a/package.json +++ b/package.json @@ -91,6 +91,7 @@ "qrcode.react": "^3.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-select": "^5.8.0", "react-transition-group": "^4.4.5", "remark": "^15.0.1", "sanitize-filename": "^1.6.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9cee15daf..486eebe6d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -136,7 +136,7 @@ importers: version: 3.65.0 minecraft-protocol: specifier: github:PrismarineJS/node-minecraft-protocol#master - version: https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/495eed56ab230b2615596590064671356d86a2dc(patch_hash=7otpchsbv7hxsuis4rrrwdtbve)(encoding@0.1.13) + version: https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/7057ad979b416192ada235f2f4e3b5eb26af5fa1(patch_hash=7otpchsbv7hxsuis4rrrwdtbve)(encoding@0.1.13) mineflayer-item-map-downloader: specifier: github:zardoy/mineflayer-item-map-downloader version: https://codeload.github.com/zardoy/mineflayer-item-map-downloader/tar.gz/642fd4f7023a98a96da4caf8f993f8e19361a1e7(patch_hash=bck55yjvd4wrgz46x7o4vfur5q)(encoding@0.1.13) @@ -185,6 +185,9 @@ importers: react-dom: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) + react-select: + specifier: ^5.8.0 + version: 5.8.0(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-transition-group: specifier: ^4.4.5 version: 4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -345,7 +348,7 @@ importers: version: https://codeload.github.com/zardoy/minecraft-inventory-gui/tar.gz/75e940a4cd50d89e0ba03db3733d5d704917a3c8(@types/react@18.2.20)(react@18.2.0) mineflayer: specifier: github:zardoy/mineflayer - version: https://codeload.github.com/zardoy/mineflayer/tar.gz/7f65e46a048f1bc2b57775d84b32400dce707321(encoding@0.1.13) + version: https://codeload.github.com/zardoy/mineflayer/tar.gz/326c5a1681b09ee2bb783f20a562c6055788b502(encoding@0.1.13) mineflayer-pathfinder: specifier: ^2.4.4 version: 2.4.4 @@ -423,7 +426,7 @@ importers: version: https://codeload.github.com/zardoy/prismarine-block/tar.gz/a69b66ab1e4be6b67f25a5a6db15e0ad39e11819 prismarine-chunk: specifier: github:zardoy/prismarine-chunk - version: https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/9662306deea57d8d0ba0a2a3f3f7adb95f0131e3(minecraft-data@3.65.0) + version: https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/cea0b6c792d7dcbb69dfd20fa48be5fd60ce83ef(minecraft-data@3.65.0) prismarine-schematic: specifier: ^1.2.0 version: 1.2.3 @@ -1243,9 +1246,15 @@ packages: '@emotion/babel-plugin@11.11.0': resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} + '@emotion/babel-plugin@11.12.0': + resolution: {integrity: sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==} + '@emotion/cache@11.11.0': resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} + '@emotion/cache@11.13.1': + resolution: {integrity: sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==} + '@emotion/css@11.5.0': resolution: {integrity: sha512-mqjz/3aqR9rp40M+pvwdKYWxlQK4Nj3cnNjo3Tx6SM14dSsEn7q/4W2/I7PlgG+mb27iITHugXuBIHH/QwUBVQ==} peerDependencies: @@ -1257,29 +1266,64 @@ packages: '@emotion/hash@0.9.1': resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + '@emotion/memoize@0.8.1': resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + '@emotion/memoize@0.9.0': + resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + + '@emotion/react@11.13.0': + resolution: {integrity: sha512-WkL+bw1REC2VNV1goQyfxjx1GYJkcc23CRQkXX+vZNLINyfI7o+uUn/rTGPt/xJ3bJHd5GcljgnxHf4wRw5VWQ==} + peerDependencies: + '@types/react': '*' + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@emotion/serialize@1.1.2': resolution: {integrity: sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==} + '@emotion/serialize@1.3.0': + resolution: {integrity: sha512-jACuBa9SlYajnpIVXB+XOXnfJHyckDfe6fOpORIM6yhBDlqGuExvDdZYHDQGoDf3bZXGv7tNr+LpLjJqiEQ6EA==} + '@emotion/sheet@1.2.2': resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} + '@emotion/sheet@1.4.0': + resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} + '@emotion/unitless@0.8.1': resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} + '@emotion/unitless@0.9.0': + resolution: {integrity: sha512-TP6GgNZtmtFaFcsOgExdnfxLLpRDla4Q66tnenA9CktvVSdNKDvMVuUah4QvWPIpNjrWsGg3qeGo9a43QooGZQ==} + '@emotion/use-insertion-effect-with-fallbacks@1.0.1': resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} peerDependencies: react: ^18.2.0 + '@emotion/use-insertion-effect-with-fallbacks@1.1.0': + resolution: {integrity: sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==} + peerDependencies: + react: ^18.2.0 + '@emotion/utils@1.2.1': resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} + '@emotion/utils@1.4.0': + resolution: {integrity: sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ==} + '@emotion/weak-memoize@0.3.1': resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} + '@emotion/weak-memoize@0.4.0': + resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + '@esbuild/aix-ppc64@0.19.11': resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} engines: {node: '>=12'} @@ -1746,6 +1790,7 @@ packages: '@humanwhocodes/config-array@0.11.11': resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} @@ -1753,6 +1798,7 @@ packages: '@humanwhocodes/object-schema@1.2.1': resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + deprecated: Use @eslint/object-schema instead '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -3505,10 +3551,12 @@ packages: are-we-there-yet@2.0.0: resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} engines: {node: '>=10'} + deprecated: This package is no longer supported. are-we-there-yet@3.0.1: resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -5194,10 +5242,12 @@ packages: gauge@3.0.2: resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} engines: {node: '>=10'} + deprecated: This package is no longer supported. gauge@4.0.4: resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} @@ -5299,10 +5349,12 @@ packages: glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported glob@8.1.0: resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported global-dirs@3.0.1: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} @@ -5439,6 +5491,9 @@ packages: resolution: {integrity: sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg==} hasBin: true + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -5569,6 +5624,7 @@ packages: inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -6160,6 +6216,7 @@ packages: loupe@2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + deprecated: Please upgrade to 2.3.7 which fixes GHSA-4q6p-r6v2-jvc5 lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -6277,6 +6334,9 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + memoizerific@1.11.3: resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} @@ -6426,11 +6486,6 @@ packages: resolution: {tarball: https://codeload.github.com/zardoy/minecraft-inventory-gui/tar.gz/75e940a4cd50d89e0ba03db3733d5d704917a3c8} version: 1.0.1 - minecraft-protocol@https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/495eed56ab230b2615596590064671356d86a2dc: - resolution: {tarball: https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/495eed56ab230b2615596590064671356d86a2dc} - version: 1.47.0 - engines: {node: '>=14'} - minecraft-protocol@https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/7057ad979b416192ada235f2f4e3b5eb26af5fa1: resolution: {tarball: https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/7057ad979b416192ada235f2f4e3b5eb26af5fa1} version: 1.47.0 @@ -6454,8 +6509,8 @@ packages: resolution: {integrity: sha512-QMMNPx4IyZE7ydAzjvGLQLCnQNUOfkk1qVZKxTTS9q3qPTAewz4GhsVUBtbQ8LSbHthe5RcQ1Sgxs4wlIma/Qw==} engines: {node: '>=18'} - mineflayer@https://codeload.github.com/zardoy/mineflayer/tar.gz/7f65e46a048f1bc2b57775d84b32400dce707321: - resolution: {tarball: https://codeload.github.com/zardoy/mineflayer/tar.gz/7f65e46a048f1bc2b57775d84b32400dce707321} + mineflayer@https://codeload.github.com/zardoy/mineflayer/tar.gz/326c5a1681b09ee2bb783f20a562c6055788b502: + resolution: {tarball: https://codeload.github.com/zardoy/mineflayer/tar.gz/326c5a1681b09ee2bb783f20a562c6055788b502} version: 4.20.1 engines: {node: '>=18'} @@ -6713,10 +6768,12 @@ packages: npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + deprecated: This package is no longer supported. npmlog@6.0.2: resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -6973,6 +7030,7 @@ packages: phin@2.9.3: resolution: {integrity: sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -7116,11 +7174,6 @@ packages: prismarine-chat@1.10.1: resolution: {integrity: sha512-XukYcuueuhDxzEXG7r8BZyt6jOObrPPB4JESCgb+/XenB9nExoSHF8eTQWWj8faKPLqm1dRQaYwFJlNBlJZJUw==} - prismarine-chunk@https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/9662306deea57d8d0ba0a2a3f3f7adb95f0131e3: - resolution: {tarball: https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/9662306deea57d8d0ba0a2a3f3f7adb95f0131e3} - version: 1.35.0 - engines: {node: '>=14'} - prismarine-chunk@https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/cea0b6c792d7dcbb69dfd20fa48be5fd60ce83ef: resolution: {tarball: https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/cea0b6c792d7dcbb69dfd20fa48be5fd60ce83ef} version: 1.35.0 @@ -7473,6 +7526,12 @@ packages: '@types/react': optional: true + react-select@5.8.0: + resolution: {integrity: sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA==} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-style-singleton@2.2.1: resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} @@ -7687,14 +7746,17 @@ packages: rimraf@2.6.3: resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true rimraf@5.0.1: @@ -8667,6 +8729,15 @@ packages: peerDependencies: react: ^18.2.0 + use-isomorphic-layout-effect@1.1.2: + resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} + peerDependencies: + '@types/react': '*' + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + use-resize-observer@9.1.0: resolution: {integrity: sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==} peerDependencies: @@ -8981,6 +9052,7 @@ packages: workbox-google-analytics@7.0.0: resolution: {integrity: sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==} + deprecated: It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained workbox-navigation-preload@7.0.0: resolution: {integrity: sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA==} @@ -9311,7 +9383,7 @@ snapshots: '@babel/helper-member-expression-to-functions@7.22.5': dependencies: - '@babel/types': 7.22.11 + '@babel/types': 7.23.0 '@babel/helper-member-expression-to-functions@7.23.0': dependencies: @@ -9329,7 +9401,7 @@ snapshots: dependencies: '@babel/core': 7.22.11 '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.5 @@ -9389,7 +9461,7 @@ snapshots: dependencies: '@babel/helper-function-name': 7.22.5 '@babel/template': 7.22.5 - '@babel/types': 7.22.11 + '@babel/types': 7.23.0 '@babel/helpers@7.22.11': dependencies: @@ -10113,7 +10185,7 @@ snapshots: '@emotion/babel-plugin@11.11.0': dependencies: '@babel/helper-module-imports': 7.22.5 - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@emotion/hash': 0.9.1 '@emotion/memoize': 0.8.1 '@emotion/serialize': 1.1.2 @@ -10124,6 +10196,20 @@ snapshots: source-map: 0.5.7 stylis: 4.2.0 + '@emotion/babel-plugin@11.12.0': + dependencies: + '@babel/helper-module-imports': 7.22.15 + '@babel/runtime': 7.24.5 + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/serialize': 1.3.0 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + '@emotion/cache@11.11.0': dependencies: '@emotion/memoize': 0.8.1 @@ -10132,6 +10218,14 @@ snapshots: '@emotion/weak-memoize': 0.3.1 stylis: 4.2.0 + '@emotion/cache@11.13.1': + dependencies: + '@emotion/memoize': 0.9.0 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.0 + '@emotion/weak-memoize': 0.4.0 + stylis: 4.2.0 + '@emotion/css@11.5.0(@babel/core@7.22.11)': dependencies: '@emotion/babel-plugin': 11.11.0 @@ -10144,8 +10238,26 @@ snapshots: '@emotion/hash@0.9.1': {} + '@emotion/hash@0.9.2': {} + '@emotion/memoize@0.8.1': {} + '@emotion/memoize@0.9.0': {} + + '@emotion/react@11.13.0(@types/react@18.2.20)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.5 + '@emotion/babel-plugin': 11.12.0 + '@emotion/cache': 11.13.1 + '@emotion/serialize': 1.3.0 + '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.2.0) + '@emotion/utils': 1.4.0 + '@emotion/weak-memoize': 0.4.0 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.20 + '@emotion/serialize@1.1.2': dependencies: '@emotion/hash': 0.9.1 @@ -10154,18 +10266,38 @@ snapshots: '@emotion/utils': 1.2.1 csstype: 3.1.2 + '@emotion/serialize@1.3.0': + dependencies: + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/unitless': 0.9.0 + '@emotion/utils': 1.4.0 + csstype: 3.1.2 + '@emotion/sheet@1.2.2': {} + '@emotion/sheet@1.4.0': {} + '@emotion/unitless@0.8.1': {} + '@emotion/unitless@0.9.0': {} + '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0)': dependencies: react: 18.2.0 + '@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@18.2.0)': + dependencies: + react: 18.2.0 + '@emotion/utils@1.2.1': {} + '@emotion/utils@1.4.0': {} + '@emotion/weak-memoize@0.3.1': {} + '@emotion/weak-memoize@0.4.0': {} + '@esbuild/aix-ppc64@0.19.11': optional: true @@ -10500,7 +10632,7 @@ snapshots: '@jimp/bmp@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 bmp-js: 0.1.0 @@ -10509,7 +10641,7 @@ snapshots: '@jimp/core@0.10.3': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/utils': 0.10.3 any-base: 1.1.0 buffer: 6.0.3 @@ -10525,14 +10657,14 @@ snapshots: '@jimp/custom@0.10.3': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/core': 0.10.3 core-js: 3.37.1 optional: true '@jimp/gif@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.37.1 @@ -10541,7 +10673,7 @@ snapshots: '@jimp/jpeg@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.37.1 @@ -10550,7 +10682,7 @@ snapshots: '@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.37.1 @@ -10558,7 +10690,7 @@ snapshots: '@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.37.1 @@ -10566,7 +10698,7 @@ snapshots: '@jimp/plugin-circle@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.37.1 @@ -10574,7 +10706,7 @@ snapshots: '@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.37.1 @@ -10583,7 +10715,7 @@ snapshots: '@jimp/plugin-contain@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)))': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) @@ -10594,7 +10726,7 @@ snapshots: '@jimp/plugin-cover@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)))': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3) '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) @@ -10605,7 +10737,7 @@ snapshots: '@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.37.1 @@ -10613,7 +10745,7 @@ snapshots: '@jimp/plugin-displace@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.37.1 @@ -10621,7 +10753,7 @@ snapshots: '@jimp/plugin-dither@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.37.1 @@ -10629,7 +10761,7 @@ snapshots: '@jimp/plugin-fisheye@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.37.1 @@ -10637,7 +10769,7 @@ snapshots: '@jimp/plugin-flip@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)))': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/plugin-rotate': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) '@jimp/utils': 0.10.3 @@ -10646,7 +10778,7 @@ snapshots: '@jimp/plugin-gaussian@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.37.1 @@ -10654,7 +10786,7 @@ snapshots: '@jimp/plugin-invert@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.37.1 @@ -10662,7 +10794,7 @@ snapshots: '@jimp/plugin-mask@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.37.1 @@ -10670,7 +10802,7 @@ snapshots: '@jimp/plugin-normalize@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.37.1 @@ -10678,7 +10810,7 @@ snapshots: '@jimp/plugin-print@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) '@jimp/utils': 0.10.3 @@ -10688,7 +10820,7 @@ snapshots: '@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.37.1 @@ -10696,7 +10828,7 @@ snapshots: '@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3) @@ -10707,7 +10839,7 @@ snapshots: '@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) '@jimp/utils': 0.10.3 @@ -10716,7 +10848,7 @@ snapshots: '@jimp/plugin-shadow@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/plugin-blur': 0.10.3(@jimp/custom@0.10.3) '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) @@ -10726,7 +10858,7 @@ snapshots: '@jimp/plugin-threshold@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/plugin-color': 0.10.3(@jimp/custom@0.10.3) '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) @@ -10736,7 +10868,7 @@ snapshots: '@jimp/plugins@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) '@jimp/plugin-blur': 0.10.3(@jimp/custom@0.10.3) @@ -10765,7 +10897,7 @@ snapshots: '@jimp/png@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.37.1 @@ -10774,7 +10906,7 @@ snapshots: '@jimp/tiff@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 core-js: 3.37.1 utif: 2.0.1 @@ -10782,7 +10914,7 @@ snapshots: '@jimp/types@0.10.3(@jimp/custom@0.10.3)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/bmp': 0.10.3(@jimp/custom@0.10.3) '@jimp/custom': 0.10.3 '@jimp/gif': 0.10.3(@jimp/custom@0.10.3) @@ -10795,7 +10927,7 @@ snapshots: '@jimp/utils@0.10.3': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 core-js: 3.37.1 regenerator-runtime: 0.13.11 optional: true @@ -10966,15 +11098,15 @@ snapshots: '@radix-ui/number@1.0.1': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/primitive@1.0.1': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -10984,7 +11116,7 @@ snapshots: '@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.20)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -10997,28 +11129,28 @@ snapshots: '@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.20)(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 react: 18.2.0 optionalDependencies: '@types/react': 18.2.20 '@radix-ui/react-context@1.0.1(@types/react@18.2.20)(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 react: 18.2.0 optionalDependencies: '@types/react': 18.2.20 '@radix-ui/react-direction@1.0.1(@types/react@18.2.20)(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 react: 18.2.0 optionalDependencies: '@types/react': 18.2.20 '@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -11032,14 +11164,14 @@ snapshots: '@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.20)(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 react: 18.2.0 optionalDependencies: '@types/react': 18.2.20 '@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.20)(react@18.2.0) @@ -11051,7 +11183,7 @@ snapshots: '@radix-ui/react-id@1.0.1(@types/react@18.2.20)(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.20)(react@18.2.0) react: 18.2.0 optionalDependencies: @@ -11059,7 +11191,7 @@ snapshots: '@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) @@ -11078,7 +11210,7 @@ snapshots: '@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -11088,7 +11220,7 @@ snapshots: '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/react-slot': 1.0.2(@types/react@18.2.20)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -11098,7 +11230,7 @@ snapshots: '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) @@ -11116,7 +11248,7 @@ snapshots: '@radix-ui/react-select@1.2.2(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -11146,7 +11278,7 @@ snapshots: '@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -11156,7 +11288,7 @@ snapshots: '@radix-ui/react-slot@1.0.2(@types/react@18.2.20)(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) react: 18.2.0 optionalDependencies: @@ -11164,7 +11296,7 @@ snapshots: '@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-context': 1.0.1(@types/react@18.2.20)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.2.20)(react@18.2.0) @@ -11180,7 +11312,7 @@ snapshots: '@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.20)(react@18.2.0) @@ -11192,7 +11324,7 @@ snapshots: '@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-context': 1.0.1(@types/react@18.2.20)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.2.20)(react@18.2.0) @@ -11208,14 +11340,14 @@ snapshots: '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.20)(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 react: 18.2.0 optionalDependencies: '@types/react': 18.2.20 '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.20)(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.20)(react@18.2.0) react: 18.2.0 optionalDependencies: @@ -11223,7 +11355,7 @@ snapshots: '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.20)(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.20)(react@18.2.0) react: 18.2.0 optionalDependencies: @@ -11231,21 +11363,21 @@ snapshots: '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.20)(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 react: 18.2.0 optionalDependencies: '@types/react': 18.2.20 '@radix-ui/react-use-previous@1.0.1(@types/react@18.2.20)(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 react: 18.2.0 optionalDependencies: '@types/react': 18.2.20 '@radix-ui/react-use-rect@1.0.1(@types/react@18.2.20)(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/rect': 1.0.1 react: 18.2.0 optionalDependencies: @@ -11253,7 +11385,7 @@ snapshots: '@radix-ui/react-use-size@1.0.1(@types/react@18.2.20)(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.20)(react@18.2.0) react: 18.2.0 optionalDependencies: @@ -11261,7 +11393,7 @@ snapshots: '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -11271,7 +11403,7 @@ snapshots: '@radix-ui/rect@1.0.1': dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@react-oauth/google@0.12.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: @@ -13196,7 +13328,7 @@ snapshots: babel-plugin-macros@3.1.0: dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 cosmiconfig: 7.1.0 resolve: 1.22.4 @@ -14207,7 +14339,7 @@ snapshots: dom-helpers@5.2.1: dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 csstype: 3.1.2 dom-serializer@2.0.0: @@ -15598,6 +15730,10 @@ snapshots: nopt: 1.0.10 optional: true + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 + hosted-git-info@2.8.9: {} hosted-git-info@4.1.0: @@ -16084,7 +16220,7 @@ snapshots: jimp@0.10.3: dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 '@jimp/custom': 0.10.3 '@jimp/plugins': 0.10.3(@jimp/custom@0.10.3) '@jimp/types': 0.10.3(@jimp/custom@0.10.3) @@ -16534,6 +16670,8 @@ snapshots: dependencies: fs-monkey: 1.0.6 + memoize-one@6.0.0: {} + memoizerific@1.11.3: dependencies: map-or-similar: 1.5.0 @@ -16746,31 +16884,6 @@ snapshots: - '@types/react' - react - minecraft-protocol@https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/495eed56ab230b2615596590064671356d86a2dc(patch_hash=7otpchsbv7hxsuis4rrrwdtbve)(encoding@0.1.13): - dependencies: - '@types/readable-stream': 4.0.12 - aes-js: 3.1.2 - buffer-equal: 1.0.1 - debug: 4.3.4(supports-color@8.1.1) - endian-toggle: 0.0.0 - lodash.get: 4.4.2 - lodash.merge: 4.6.2 - minecraft-data: 3.65.0 - minecraft-folder-path: 1.2.0 - node-fetch: 2.7.0(encoding@0.1.13) - node-rsa: 0.4.2 - prismarine-auth: 2.4.2(encoding@0.1.13) - prismarine-chat: 1.10.1 - prismarine-nbt: 2.5.0 - prismarine-realms: 1.3.2(encoding@0.1.13) - protodef: 1.15.0 - readable-stream: 4.5.2 - uuid-1345: 1.0.2 - yggdrasil: 1.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - supports-color - minecraft-protocol@https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/7057ad979b416192ada235f2f4e3b5eb26af5fa1(patch_hash=7otpchsbv7hxsuis4rrrwdtbve)(encoding@0.1.13): dependencies: '@types/readable-stream': 4.0.12 @@ -16840,11 +16953,11 @@ snapshots: mineflayer@4.20.1(encoding@0.1.13): dependencies: minecraft-data: 3.65.0 - minecraft-protocol: https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/495eed56ab230b2615596590064671356d86a2dc(patch_hash=7otpchsbv7hxsuis4rrrwdtbve)(encoding@0.1.13) + minecraft-protocol: https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/7057ad979b416192ada235f2f4e3b5eb26af5fa1(patch_hash=7otpchsbv7hxsuis4rrrwdtbve)(encoding@0.1.13) prismarine-biome: 1.3.0(minecraft-data@3.65.0)(prismarine-registry@1.7.0) prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/a69b66ab1e4be6b67f25a5a6db15e0ad39e11819 prismarine-chat: 1.10.1 - prismarine-chunk: https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/9662306deea57d8d0ba0a2a3f3f7adb95f0131e3(minecraft-data@3.65.0) + prismarine-chunk: https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/cea0b6c792d7dcbb69dfd20fa48be5fd60ce83ef(minecraft-data@3.65.0) prismarine-entity: 2.3.1 prismarine-item: 1.14.0 prismarine-nbt: 2.5.0 @@ -16860,14 +16973,14 @@ snapshots: - encoding - supports-color - mineflayer@https://codeload.github.com/zardoy/mineflayer/tar.gz/7f65e46a048f1bc2b57775d84b32400dce707321(encoding@0.1.13): + mineflayer@https://codeload.github.com/zardoy/mineflayer/tar.gz/326c5a1681b09ee2bb783f20a562c6055788b502(encoding@0.1.13): dependencies: minecraft-data: 3.65.0 - minecraft-protocol: https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/495eed56ab230b2615596590064671356d86a2dc(patch_hash=7otpchsbv7hxsuis4rrrwdtbve)(encoding@0.1.13) + minecraft-protocol: https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/7057ad979b416192ada235f2f4e3b5eb26af5fa1(patch_hash=7otpchsbv7hxsuis4rrrwdtbve)(encoding@0.1.13) prismarine-biome: 1.3.0(minecraft-data@3.65.0)(prismarine-registry@1.7.0) prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/a69b66ab1e4be6b67f25a5a6db15e0ad39e11819 prismarine-chat: 1.10.1 - prismarine-chunk: https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/9662306deea57d8d0ba0a2a3f3f7adb95f0131e3(minecraft-data@3.65.0) + prismarine-chunk: https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/cea0b6c792d7dcbb69dfd20fa48be5fd60ce83ef(minecraft-data@3.65.0) prismarine-entity: 2.3.1 prismarine-item: 1.14.0 prismarine-nbt: 2.5.0 @@ -17611,19 +17724,6 @@ snapshots: prismarine-nbt: 2.5.0 prismarine-registry: 1.7.0 - prismarine-chunk@https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/9662306deea57d8d0ba0a2a3f3f7adb95f0131e3(minecraft-data@3.65.0): - dependencies: - prismarine-biome: 1.3.0(minecraft-data@3.65.0)(prismarine-registry@1.7.0) - prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/a69b66ab1e4be6b67f25a5a6db15e0ad39e11819 - prismarine-nbt: 2.5.0 - prismarine-registry: 1.7.0 - smart-buffer: 4.2.0 - uint4: 0.1.2 - vec3: 0.1.8 - xxhash-wasm: 0.4.2 - transitivePeerDependencies: - - minecraft-data - prismarine-chunk@https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/cea0b6c792d7dcbb69dfd20fa48be5fd60ce83ef(minecraft-data@3.65.0): dependencies: prismarine-biome: 1.3.0(minecraft-data@3.65.0)(prismarine-registry@1.7.0) @@ -17666,7 +17766,7 @@ snapshots: prismarine-provider-anvil@https://codeload.github.com/zardoy/prismarine-provider-anvil/tar.gz/0228b5252f48a0d6ad7f36d7189851c427fbe8c4(minecraft-data@3.65.0): dependencies: prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/a69b66ab1e4be6b67f25a5a6db15e0ad39e11819 - prismarine-chunk: https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/9662306deea57d8d0ba0a2a3f3f7adb95f0131e3(minecraft-data@3.65.0) + prismarine-chunk: https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/cea0b6c792d7dcbb69dfd20fa48be5fd60ce83ef(minecraft-data@3.65.0) prismarine-nbt: 2.5.0 prismarine-world: https://codeload.github.com/zardoy/prismarine-world/tar.gz/187a87f6d71cba12881a7bbaa510ed9085bf6da7 uint4: 0.1.2 @@ -18072,6 +18172,22 @@ snapshots: optionalDependencies: '@types/react': 18.2.20 + react-select@5.8.0(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@babel/runtime': 7.24.5 + '@emotion/cache': 11.11.0 + '@emotion/react': 11.13.0(@types/react@18.2.20)(react@18.2.0) + '@floating-ui/dom': 1.5.3 + '@types/react-transition-group': 4.4.7 + memoize-one: 6.0.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-transition-group: 4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.20)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + react-style-singleton@2.2.1(@types/react@18.2.20)(react@18.2.0): dependencies: get-nonce: 1.0.1 @@ -18241,7 +18357,7 @@ snapshots: regenerator-transform@0.15.2: dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 regexp-tree@0.1.27: {} @@ -18402,7 +18518,7 @@ snapshots: rtl-css-js@1.16.1: dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.24.5 run-parallel@1.2.0: dependencies: @@ -19536,6 +19652,12 @@ snapshots: dequal: 1.0.0 react: 18.2.0 + use-isomorphic-layout-effect@1.1.2(@types/react@18.2.20)(react@18.2.0): + dependencies: + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.20 + use-resize-observer@9.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@juggle/resize-observer': 3.3.1 diff --git a/rsbuild.config.ts b/rsbuild.config.ts index 350f2b3a3..bb5750f7b 100644 --- a/rsbuild.config.ts +++ b/rsbuild.config.ts @@ -63,6 +63,7 @@ export default defineConfig({ // ], define: { 'process.env.BUILD_VERSION': JSON.stringify(!dev ? buildingVersion : 'undefined'), + 'process.env.MAIN_MENU_LINKS': JSON.stringify(process.env.MAIN_MENU_LINKS), 'process.platform': '"browser"', 'process.env.GITHUB_URL': JSON.stringify(`https://github.com/${process.env.GITHUB_REPOSITORY || `${process.env.VERCEL_GIT_REPO_OWNER}/${process.env.VERCEL_GIT_REPO_SLUG}`}`), diff --git a/src/GlobalSearchInput.tsx b/src/GlobalSearchInput.tsx index c29c64a4a..d92669506 100644 --- a/src/GlobalSearchInput.tsx +++ b/src/GlobalSearchInput.tsx @@ -13,7 +13,8 @@ function InnerSearch () { margin: 'auto', zIndex: 11, width: 'min-content', - }}> + }} + > - { - options.frameLimit = newVal > frameLimitMax! ? false : newVal - }} /> - + >Keybindings + }, mouseSensX: {}, mouseSensY: { @@ -325,9 +339,12 @@ export const guiOptionsScheme: { advanced: [ { custom () { - return + return }, }, { @@ -338,17 +355,24 @@ export const guiOptionsScheme: { { custom () { const { active } = useSnapshot(packetsReplaceSessionState) - return + return }, }, { custom () { const { active } = useSnapshot(packetsReplaceSessionState) - return + return }, } ], diff --git a/src/react/AddServerOrConnect.tsx b/src/react/AddServerOrConnect.tsx index e973fafd9..a933a1d7b 100644 --- a/src/react/AddServerOrConnect.tsx +++ b/src/react/AddServerOrConnect.tsx @@ -1,7 +1,8 @@ -import React, { useEffect } from 'react' +import React from 'react' import Screen from './Screen' import Input from './Input' import Button from './Button' +import SelectGameVersion from './SelectGameVersion' import { useIsSmallWidth } from './simpleHooks' export interface BaseServerInfo { @@ -24,11 +25,12 @@ interface Props { defaults?: Pick accounts?: string[] authenticatedAccounts?: number + versions?: string[] } const ELEMENTS_WIDTH = 190 -export default ({ onBack, onConfirm, title = 'Add a Server', initialData, parseQs, onQsConnect, defaults, accounts, authenticatedAccounts }: Props) => { +export default ({ onBack, onConfirm, title = 'Add a Server', initialData, parseQs, onQsConnect, defaults, accounts, versions, authenticatedAccounts }: Props) => { const qsParams = parseQs ? new URLSearchParams(window.location.search) : undefined const qsParamName = qsParams?.get('name') const qsParamIp = qsParams?.get('ip') @@ -83,7 +85,8 @@ export default ({ onBack, onConfirm, title = 'Add a Server', initialData, parseQ display: 'grid', gap: 3, gridTemplateColumns: smallWidth ? '1fr' : '1fr 1fr' - }}> + }} + > {!lockConnect && <>
setServerName(value)} placeholder='Defaults to IP' /> @@ -92,13 +95,30 @@ export default ({ onBack, onConfirm, title = 'Add a Server', initialData, parseQ setServerIp(value)} /> setServerPort(value)} placeholder='25565' />
Overrides:
- setVersionOverride(value)} placeholder='Optional, but recommended to specify' /> +
+ + { return { value: v, label: v } }) ?? []} + onChange={(value) => { + setVersionOverride(value) + }} + // inputProps={{ + // placeholder: 'Optional, but recommended to specify', + // disabled: lockConnect && qsParamVersion !== null + // }} + /> +
+ setProxyOverride(value)} placeholder={defaults?.proxyOverride} /> setUsernameOverride(value)} placeholder={defaults?.usernameOverride} />
diff --git a/src/react/AppStatus.tsx b/src/react/AppStatus.tsx index 603a15084..ca83c29af 100644 --- a/src/react/AppStatus.tsx +++ b/src/react/AppStatus.tsx @@ -34,7 +34,8 @@ export default ({ status, isError, hideDots = false, lastStatus = '', backAction + }} + > {status} {isError || hideDots ? '' : loadingDots} @@ -48,7 +49,7 @@ export default ({ status, isError, hideDots = false, lastStatus = '', backAction <> {backAction && + diff --git a/src/react/Chat.tsx b/src/react/Chat.tsx index 60467171e..bd9a1714c 100644 --- a/src/react/Chat.tsx +++ b/src/react/Chat.tsx @@ -212,9 +212,11 @@ export default ({ return ( <> -
+
{opacity &&
{messages.map((m) => ( @@ -246,7 +248,8 @@ export default ({ onClose?.() } } - }}> + }} + > {isIos && +const defaultIcon = const Button2 = ({ title, icon }) => { //@ts-expect-error @@ -23,7 +23,8 @@ const Comp = () => { display: 'grid', gridTemplateColumns: 'repeat(4, 1fr)', gap: 10 - }}> + }} + > } /> } /> diff --git a/src/react/CreateWorld.tsx b/src/react/CreateWorld.tsx index 87b367774..698d5d090 100644 --- a/src/react/CreateWorld.tsx +++ b/src/react/CreateWorld.tsx @@ -4,6 +4,7 @@ import { filesize } from 'filesize' import Input from './Input' import Screen from './Screen' import Button from './Button' +import SelectGameVersion from './SelectGameVersion' import styles from './createWorld.module.css' // const worldTypes = ['default', 'flat', 'largeBiomes', 'amplified', 'customized', 'buffet', 'debug_all_block_states'] @@ -29,10 +30,12 @@ export default ({ cancelClick, createClick, customizeClick, versions, defaultVer }, []) return - { - e.preventDefault() - createClick() - }}> + { + e.preventDefault() + createClick() + }} + > - + { return { value: obj.version, label: obj.version === defaultVersion ? obj.version + ' (available offline)' : obj.version } })} + selected={{ value: defaultVersion, label: defaultVersion + ' (available offline)' }} + onChange={(value) => { + creatingWorldState.version = value ?? defaultVersion + }} + containerStyle={{ width: '100px' }} + />
+ }} + >World Type: {type} + {/* */}
@@ -72,7 +76,9 @@ export default ({ cancelClick, createClick, customizeClick, versions, defaultVer
+ }} + >Cancel +
Note: store important saves in folders on the drive!
@@ -85,9 +91,7 @@ export const WorldCustomize = ({ backClick }) => { return
-
- -
+
diff --git a/src/react/Crosshair.tsx b/src/react/Crosshair.tsx index 9079fb66e..542545f76 100644 --- a/src/react/Crosshair.tsx +++ b/src/react/Crosshair.tsx @@ -60,11 +60,13 @@ export default () => { return
- {displayIndicator &&
} + '--crosshair-indicator-size': `${indicatorSize}px`, + borderLeft: `solid ${indicatorSize * indicatorProgress}px white`, + backgroundColor: alternativeIndicator ? 'dodgerblue' : undefined, + }} + />} } diff --git a/src/react/DeathScreen.tsx b/src/react/DeathScreen.tsx index 290e62859..ea4dc7262 100644 --- a/src/react/DeathScreen.tsx +++ b/src/react/DeathScreen.tsx @@ -18,12 +18,16 @@ export default ({ dieReasonMessage, respawnCallback, disconnectCallback }: Props
-
diff --git a/src/react/DebugOverlay.tsx b/src/react/DebugOverlay.tsx index 1753d7671..9315d8a49 100644 --- a/src/react/DebugOverlay.tsx +++ b/src/react/DebugOverlay.tsx @@ -130,7 +130,7 @@ export default () => {

Prismarine Web Client ({bot.version})

E: {entitiesCount}

{dimension}

-
+

XYZ: {pos.x.toFixed(3)} / {pos.y.toFixed(3)} / {pos.z.toFixed(3)}

Chunk: {Math.floor(pos.x % 16)} ~ {Math.floor(pos.z % 16)} in {Math.floor(pos.x / 16)} ~ {Math.floor(pos.z / 16)}

Packets: {packetsString}

@@ -140,13 +140,13 @@ export default () => {

Biome: minecraft:{loadedData.biomesArray[biomeId]?.name ?? 'unknown biome'}

Day: {day}

-
+
{Object.entries(customEntries.current).map(([name, value]) =>

{name}: {value}

)}

Renderer: {rendererDevice} powered by three.js r{THREE.REVISION}

-
+
{cursorBlock ? (<>

{cursorBlock.name}

{ @@ -154,7 +154,7 @@ export default () => { return

{name}: { typeof value === 'boolean' ? ( - {value} + {String(value)} ) : value }

diff --git a/src/react/DiscordButton.tsx b/src/react/DiscordButton.tsx index a43d62ffc..0e3a22b59 100644 --- a/src/react/DiscordButton.tsx +++ b/src/react/DiscordButton.tsx @@ -67,7 +67,8 @@ export const DropdownButton = ({ text, links }: { text: string, links: DropdownB key={el.text} style={{ width: '98px', fontSize: '7px' }} onClick={el.clickHandler} - >{el.text} + >{el.text} + })}
} diff --git a/src/react/FoodBar.tsx b/src/react/FoodBar.tsx index 012e23eac..5a131c073 100644 --- a/src/react/FoodBar.tsx +++ b/src/react/FoodBar.tsx @@ -69,7 +69,8 @@ export default ({ Array.from({ length: 10 }, () => 0) .map((num, index) =>
) + className='food' + />) }
diff --git a/src/react/GoogleButton.tsx b/src/react/GoogleButton.tsx index 4effecb64..dabbbf219 100644 --- a/src/react/GoogleButton.tsx +++ b/src/react/GoogleButton.tsx @@ -1,18 +1,20 @@ import './GoogleButton.css' export default ({ onClick }) => { - return
diff --git a/src/react/KeybindingsScreen.tsx b/src/react/KeybindingsScreen.tsx index c44858784..79d9e1862 100644 --- a/src/react/KeybindingsScreen.tsx +++ b/src/react/KeybindingsScreen.tsx @@ -178,16 +178,19 @@ export default ({ setUserConfig, handleClick, bindsMap: bindsMap.current - }}> + }} + > {awaitingInputType && } -
+ >Back + {Object.entries(commands).map(([group, actions], index) => { if (group === 'custom') return null @@ -198,7 +201,8 @@ export default ({ color: 'rgba(255, 255, 255, 0.7)', fontSize: '6px', textAlign: 'center' - }}> + }} + > Note: Left, right and middle click keybindings are hardcoded and cannot be changed currently.
) : null} @@ -221,7 +225,7 @@ export default ({ group={group} action={action} index={index} - inputType={'keyboard'} + inputType="keyboard" keys={keys} gamepad={gamepad} />)} @@ -244,7 +248,7 @@ export default ({ group={group} action={action} index={0} - inputType={'gamepad'} + inputType="gamepad" keys={keys} gamepad={gamepad} /> @@ -306,7 +310,7 @@ export const ButtonWithMatchesAlert = ({ //@ts-format-ignore-region
- This bind is already in use. + This bind is already in use.
) //@ts-format-ignore-endregion - : null - } + : null}
} diff --git a/src/react/MainMenu.tsx b/src/react/MainMenu.tsx index e84fe0cb5..231e29fb3 100644 --- a/src/react/MainMenu.tsx +++ b/src/react/MainMenu.tsx @@ -20,6 +20,7 @@ interface Props { versionStatus?: string versionTitle?: string onVersionClick?: () => void + bottomRightLinks?: string } const httpsRegex = /^https?:\/\// @@ -34,13 +35,21 @@ export default ({ openFileAction, versionStatus, versionTitle, - onVersionClick + onVersionClick, + bottomRightLinks }: Props) => { + if (!bottomRightLinks?.trim()) bottomRightLinks = undefined + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + const linksParsed = bottomRightLinks?.split(';').map(l => { + const parts = l.split(':') + return [parts[0], parts.slice(1).join(':')] + }) as Array<[string, string]> | undefined + return (
-
+
Prismarine is a beautiful block
@@ -108,10 +117,24 @@ export default ({ Prismarine Web Client {versionStatus} - Privacy Policy +
+ {linksParsed?.map(([name, link], i, arr) => { + if (!link.startsWith('http')) link = `https://${link}` + return
+ {name} + + {i < arr.length - 1 && ยท} +
+ })} +
A Minecraft client in the browser!
diff --git a/src/react/MainMenuRenderApp.tsx b/src/react/MainMenuRenderApp.tsx index 98ea01990..acd618031 100644 --- a/src/react/MainMenuRenderApp.tsx +++ b/src/react/MainMenuRenderApp.tsx @@ -99,6 +99,7 @@ export default () => { githubAction={() => openGithub()} optionsAction={() => openOptionsMenu('main')} linksButton={} + bottomRightLinks={process.env.MAIN_MENU_LINKS} openFileAction={e => { if (!!window.showDirectoryPicker && !e.shiftKey) { void openWorldDirectory() diff --git a/src/react/MobileTopButtons.tsx b/src/react/MobileTopButtons.tsx index c686bb0ba..ffeb7adf0 100644 --- a/src/react/MobileTopButtons.tsx +++ b/src/react/MobileTopButtons.tsx @@ -35,24 +35,34 @@ export default () => { // ios note: just don't use + } diff --git a/src/react/Notification.tsx b/src/react/Notification.tsx index a9b7a95a2..4d73da7eb 100644 --- a/src/react/Notification.tsx +++ b/src/react/Notification.tsx @@ -32,29 +32,32 @@ export default ({ type = 'message', message, subMessage = '', open, icon = '', a {state => { const addStyles = { ...basicStyle, ...stateStyles[state] } - return
+ return
+ }} + >
{message}
@@ -62,7 +65,9 @@ export default ({ type = 'message', message, subMessage = '', open, icon = '', a fontSize: '7px', whiteSpace: 'nowrap', color: 'lightgray', - }}>{subMessage}
+ }} + >{subMessage} +
}} diff --git a/src/react/PauseScreen.tsx b/src/react/PauseScreen.tsx index adb91ac37..560412dea 100644 --- a/src/react/PauseScreen.tsx +++ b/src/react/PauseScreen.tsx @@ -107,7 +107,7 @@ export default () => { if (!isModalActive) return null return
} searchRowChildrenOverride={
+ }} + >
Proxy: -
- - {autocomplete.groupedOptions &&
    - {autocomplete.groupedOptions.map((proxy, index) => { - const { itemRef, ...optionProps } = autocomplete.getOptionProps({ option: proxy, index }) - return - })} -
} -
+ setUsername(value)} />
@@ -132,51 +111,3 @@ export default ({ initialProxies, updateProxies: updateProxiesProp, joinServer, /> } -type Status = 'unknown' | 'error' | 'success' - -const ProxyRender = ({ status, ip, inputRef, value, setValue, ...props }: { - status: Status - ip: string -} & Record) => { - const iconPerStatus = { - unknown: 'cellular-signal-0', - error: 'cellular-signal-off', - success: 'cellular-signal-3', - } - - return
- setValue?.(value)} - onChange={props.onChange} - /> -
- -
- {ip.replace(/^https?:\/\//, '')} -
-
-
-} diff --git a/src/react/ServersListProvider.tsx b/src/react/ServersListProvider.tsx index a0fbec0b4..d49632f51 100644 --- a/src/react/ServersListProvider.tsx +++ b/src/react/ServersListProvider.tsx @@ -1,8 +1,7 @@ import { useEffect, useMemo, useState } from 'react' -import { proxy, useSnapshot } from 'valtio' -import { qsOptions } from '../optionsStorage' import { ConnectOptions } from '../connect' import { hideCurrentModal, miscUiState, showModal } from '../globalState' +import supportedVersions from '../supportedVersions.mjs' import ServersList from './ServersList' import AddServerOrConnect, { BaseServerInfo } from './AddServerOrConnect' import { useDidUpdateEffect } from './utils' @@ -247,6 +246,7 @@ const Inner = () => { } dispatchEvent(new CustomEvent('connect', { detail: connectOptions })) }} + versions={supportedVersions} /> } diff --git a/src/react/SignEditor.stories.tsx b/src/react/SignEditor.stories.tsx index e931bdcae..e7bcdd400 100644 --- a/src/react/SignEditor.stories.tsx +++ b/src/react/SignEditor.stories.tsx @@ -5,9 +5,11 @@ import SignEditor from './SignEditor' const meta: Meta = { component: SignEditor, render (args) { - return { - console.log('handleClick', result) - }} /> + return { + console.log('handleClick', result) + }} + /> } } diff --git a/src/react/SignEditor.tsx b/src/react/SignEditor.tsx index e3af31391..1d3be96e4 100644 --- a/src/react/SignEditor.tsx +++ b/src/react/SignEditor.tsx @@ -48,11 +48,12 @@ export default ({ handleInput, isWysiwyg, handleClick }: Props) => { const nextElem = elements[focusedElemIndex + dir] nextElem?.focus() } - }}> + }} + >
{isWysiwyg ? ( -

+

) : [1, 2, 3, 4].map((value, index) => { return { maxLength={15} // overriden by handleInput onChange={(e) => { handleInput(e.currentTarget) - }} /> - }) - } -

} diff --git a/src/react/SignInMessage.stories.tsx b/src/react/SignInMessage.stories.tsx index 16528700d..a86a47e8e 100644 --- a/src/react/SignInMessage.stories.tsx +++ b/src/react/SignInMessage.stories.tsx @@ -4,8 +4,7 @@ import SignInMessage from './SignInMessage' const meta: Meta<{ open }> = { component: SignInMessage as any, render ({ open }) { - return + return }, } diff --git a/src/react/SignInMessage.tsx b/src/react/SignInMessage.tsx index c33cdf41c..de4359c12 100644 --- a/src/react/SignInMessage.tsx +++ b/src/react/SignInMessage.tsx @@ -36,7 +36,8 @@ export default ({ height: 213, color: 'black', // borderRadius: 8, - }}> + }} + >
{code}
+ }} + >{code} +
+ }} + > Waiting... {timeLeft}
+ }} + > To join a Minecraft server {connectingServer} using your Microsoft account, you need to visit{' '} Direct Link + >Direct Link + {' '} or {' '} {loginLink} + >{loginLink} + {' '} and enter the code above.
@@ -85,7 +92,8 @@ export default ({ fontSize: 12, marginTop: 5, color: 'gray' - }}> + }} + > Join only vanilla servers! This client is detectable and may result in a ban by anti-cheat plugins. } {setSaveToken && } @@ -104,6 +113,7 @@ export default ({ marginTop: -5, }} onClick={onCancel} - >Cancel + >Cancel + } diff --git a/src/react/Singleplayer.tsx b/src/react/Singleplayer.tsx index a78518358..aeb7eac41 100644 --- a/src/react/Singleplayer.tsx +++ b/src/react/Singleplayer.tsx @@ -45,12 +45,14 @@ const World = ({ name, isFocused, title, lastPlayed, size, detail = '', onFocus, return filesize(size) }, [size]) - return
onFocus?.(name)} onKeyDown={(e) => { - if (e.code === 'Enter' || e.code === 'Space') { - e.preventDefault() - onInteraction?.(e.code === 'Enter' ? 'enter' : 'space') - } - }} onDoubleClick={() => onInteraction?.('enter')}> + return
onFocus?.(name)} onKeyDown={(e) => { + if (e.code === 'Enter' || e.code === 'Space') { + e.preventDefault() + onInteraction?.(e.code === 'Enter' ? 'enter' : 'space') + } + }} onDoubleClick={() => onInteraction?.('enter')} + > world preview
@@ -108,7 +110,7 @@ export default ({ const firstButton = useRef(null) useTypedEventListener(window, 'keydown', (e) => { - if (e.code === 'ArrowDown' || e.code === 'ArrowUp') { + if ((e.code === 'ArrowDown' || e.code === 'ArrowUp') && e.ctrlKey) { e.preventDefault() const dir = e.code === 'ArrowDown' ? 1 : -1 const elements = focusable(containerRef.current) @@ -134,18 +136,22 @@ export default ({ setSearch(value)} />
}
- { - setActiveProvider?.(tab as any) - }} fullSize /> + { + setActiveProvider?.(tab as any) + }} fullSize + />
+ }} + > { providerActions &&
+ }} + > Actions: {Object.entries(providerActions).map(([label, action]) => ( typeof action === 'function' ? : {action} ))} @@ -154,15 +160,19 @@ export default ({ { worldData ? worldData.filter(data => data.title.toLowerCase().includes(search.toLowerCase())).map(({ name, size, detail, ...rest }) => ( - { - if (interaction === 'enter') onWorldAction('load', name) - else if (interaction === 'space') firstButton.current?.focus() - }} detail={detail} /> + { + if (interaction === 'enter') onWorldAction('load', name) + else if (interaction === 'space') firstButton.current?.focus() + }} + detail={detail} + /> )) :
{error || 'Loading (check #dev console if loading too long)...'}
+ }}>{error || 'Loading (check #dev console if loading too long)...'} +
} { warning &&
+ }} + > {warning} {warningAction && {warningActionLabel}}
} @@ -186,7 +197,7 @@ export default ({ {serversLayout ? : - } + }
diff --git a/src/react/Slider.tsx b/src/react/Slider.tsx index 34cc27177..e177578c0 100644 --- a/src/react/Slider.tsx +++ b/src/react/Slider.tsx @@ -73,8 +73,8 @@ const Slider: React.FC = ({ fireValueUpdate(true) }} /> -
-
+
+
diff --git a/src/react/SoundMuffler.tsx b/src/react/SoundMuffler.tsx index ecbae14d7..d8571353a 100644 --- a/src/react/SoundMuffler.tsx +++ b/src/react/SoundMuffler.tsx @@ -17,13 +17,15 @@ const SoundRow = ({ sound, children }) => { {sound} {children}
- +
} diff --git a/src/react/Tabs.tsx b/src/react/Tabs.tsx index 4e750a8a5..86265083f 100644 --- a/src/react/Tabs.tsx +++ b/src/react/Tabs.tsx @@ -16,24 +16,30 @@ export default ({ tabs, activeTab, labels, onTabChange, fullSize, style, disable width: fullSize ? '100%' : undefined, display: fullSize ? 'flex' : undefined, ...style, - }}> + }} + > {tabs.map(tab => { const active = tab === activeTab - return
- + return
+ {active &&
} + }} + />}
})}
diff --git a/src/react/TouchAreasControls.tsx b/src/react/TouchAreasControls.tsx index 0476be488..58ea51aa1 100644 --- a/src/react/TouchAreasControls.tsx +++ b/src/react/TouchAreasControls.tsx @@ -201,7 +201,8 @@ export default ({ touchActive, setupActive, buttonsPositions, closeButtonsSetup left: `${pointer.x / window.innerWidth * 100}%`, top: `${pointer.y / window.innerHeight * 100}%` } : {} - }}> + }} + >
+ }} + > + }} + >Cancel + + }} + >Apply +
}
} diff --git a/src/react/XPBar.tsx b/src/react/XPBar.tsx index 5de4c61a2..0727879fc 100644 --- a/src/react/XPBar.tsx +++ b/src/react/XPBar.tsx @@ -8,7 +8,7 @@ export default ({ progress, level, gamemode }: { progress: number; level: number className={styles['xp-bar-bg']} style={{ display: gamemode === 'creative' || gamemode === 'spectator' ? 'none' : 'block' }} > -
+
0 ? 'block' : 'none' }}>{level}
diff --git a/src/react/mainMenu.module.css b/src/react/mainMenu.module.css index d4a7e3a5d..db072ce1a 100644 --- a/src/react/mainMenu.module.css +++ b/src/react/mainMenu.module.css @@ -114,6 +114,12 @@ padding-right: calc(env(safe-area-inset-right) / 2); } +.product-link { + display: flex; + gap: 2; + justify-content: flex-end; +} + @media only screen and (max-height: 420px) { .root { --top-offset: 10px diff --git a/src/react/mainMenu.module.css.d.ts b/src/react/mainMenu.module.css.d.ts index 8cc84b947..c60cf2085 100644 --- a/src/react/mainMenu.module.css.d.ts +++ b/src/react/mainMenu.module.css.d.ts @@ -15,8 +15,10 @@ interface CssExports { minecraft: string; 'product-description': string; 'product-info': string; + 'product-link': string; productDescription: string; productInfo: string; + productLink: string; raft: string; root: string; splash: string; diff --git a/src/react/select.module.css b/src/react/select.module.css new file mode 100644 index 000000000..54c0ae14d --- /dev/null +++ b/src/react/select.module.css @@ -0,0 +1,20 @@ +.container { + position: relative; + display: flex; + align-items: center; + font-size: 10px; + width: 200px; + height: 20px; + background: black; + border: 1px solid grey; + box-sizing: content-box; +} + +.input { + border: none; + background: none; + height: 100%; + font-family: minecraft, mojangles, monospace; + color: white; + text-shadow: 1px 1px #222; +} diff --git a/src/react/select.module.css.d.ts b/src/react/select.module.css.d.ts new file mode 100644 index 000000000..10b86cad2 --- /dev/null +++ b/src/react/select.module.css.d.ts @@ -0,0 +1,8 @@ +// This file is automatically generated. +// Please do not change this file! +interface CssExports { + container: string; + input: string; +} +declare const cssExports: CssExports; +export default cssExports; diff --git a/src/reactUi.tsx b/src/reactUi.tsx index 655a60294..b40c47a1d 100644 --- a/src/reactUi.tsx +++ b/src/reactUi.tsx @@ -160,7 +160,7 @@ const App = () => {
-
+
@@ -186,18 +186,23 @@ const App = () => {
-
+
} const PerComponentErrorBoundary = ({ children }) => { - return children.map((child, i) => { - const componentNameClean = (child.type.name || child.type.displayName || 'Unknown').replaceAll(/__|_COMPONENT/g, '') - showNotification(`UI component ${componentNameClean} crashed!`, 'Please report this. Use console for more.', true, undefined) - return null - }}>{child}) + return children.map((child, i) => { + const componentNameClean = (child.type.name || child.type.displayName || 'Unknown').replaceAll(/__|_COMPONENT/g, '') + showNotification(`UI component ${componentNameClean} crashed!`, 'Please report this. Use console for more.', true, undefined) + return null + }} + > + {child} + ) } renderToDom(, { diff --git a/src/worldInteractions.ts b/src/worldInteractions.ts index ffb5fa4a0..7a9aa5086 100644 --- a/src/worldInteractions.ts +++ b/src/worldInteractions.ts @@ -221,7 +221,12 @@ class WorldInteraction { // todo this shouldnt be done in the render loop, migrate the code to dom events to avoid delays on lags update () { const inSpectator = bot.game.gameMode === 'spectator' - const cursorBlock = inSpectator && !options.showCursorBlockInSpectator ? null : bot.blockAtCursor(5) + const entity = getEntityCursor() + let cursorBlock = inSpectator && !options.showCursorBlockInSpectator ? null : bot.blockAtCursor(5) + if (entity) { + cursorBlock = null + } + let cursorBlockDiggable = cursorBlock if (cursorBlock && !bot.canDigBlock(cursorBlock) && bot.game.gameMode !== 'creative') cursorBlockDiggable = null