Mercurial > code > home > repos > mineflayer
changeset 0:f570713a7d31 default tip
start termbanator
author | drewp@bigasterisk.com |
---|---|
date | Sun, 25 Jun 2023 20:01:38 -0700 |
parents | |
children | |
files | .hgignore bots_run.sh package.json pardon_all.sh pdm.lock pnpm-lock.yaml pyproject.toml servers_down.sh servers_up.sh termbanator.py |
diffstat | 10 files changed, 1217 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Sun Jun 25 20:01:38 2023 -0700 @@ -0,0 +1,4 @@ +__pypackages__ +node_modules +.vscode +.pdm-python
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bots_run.sh Sun Jun 25 20:01:38 2023 -0700 @@ -0,0 +1,3 @@ +#!/bin/zsh + +pdm run termbanator.py bang 25665 |& grep --line-buffered -v "partial packet"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/package.json Sun Jun 25 20:01:38 2023 -0700 @@ -0,0 +1,23 @@ +{ + "name": "mineflayerbots", + "version": "1.0.0", + "description": "", + "main": "builder.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "bin": { + "execute": "builder.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@types/node": "^18.16.18", + "mineflayer": "^4.9.0", + "prismarine-block": "^1.16.3", + "prismarine-chat": "^1.8.0", + "prismarine-registry": "^1.7.0", + "typescript": "^5.1.3" + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pardon_all.sh Sun Jun 25 20:01:38 2023 -0700 @@ -0,0 +1,8 @@ +#!/bin/zsh +MRCON=/home/drewp/Downloads/mcrcon/mcrcon + +for servport (25575 25675) { + for user (arrowira Supdebug prebutter) { + ${MRCON} -H 10.2.0.1 -P $servport -p 111 "/pardon $user" + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pdm.lock Sun Jun 25 20:01:38 2023 -0700 @@ -0,0 +1,271 @@ +# This file is @generated by PDM. +# It is not intended for manual editing. + +[[package]] +name = "appnope" +version = "0.1.3" +summary = "Disable App Nap on macOS >= 10.9" + +[[package]] +name = "asttokens" +version = "2.2.1" +summary = "Annotate AST trees with source code positions" +dependencies = [ + "six", +] + +[[package]] +name = "backcall" +version = "0.2.0" +summary = "Specifications for callback functions passed in to an API" + +[[package]] +name = "colorama" +version = "0.4.6" +requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +summary = "Cross-platform colored terminal text." + +[[package]] +name = "decorator" +version = "5.1.1" +requires_python = ">=3.5" +summary = "Decorators for Humans" + +[[package]] +name = "executing" +version = "1.2.0" +summary = "Get the currently executing AST node of a frame, and other information" + +[[package]] +name = "ipdb" +version = "0.13.13" +requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +summary = "IPython-enabled pdb" +dependencies = [ + "decorator; python_version > \"3.6\" and python_version < \"3.11\"", + "decorator; python_version >= \"3.11\"", + "ipython>=7.31.1; python_version > \"3.6\" and python_version < \"3.11\"", + "ipython>=7.31.1; python_version >= \"3.11\"", + "tomli; python_version > \"3.6\" and python_version < \"3.11\"", +] + +[[package]] +name = "ipython" +version = "8.14.0" +requires_python = ">=3.9" +summary = "IPython: Productive Interactive Computing" +dependencies = [ + "appnope; sys_platform == \"darwin\"", + "backcall", + "colorama; sys_platform == \"win32\"", + "decorator", + "jedi>=0.16", + "matplotlib-inline", + "pexpect>4.3; sys_platform != \"win32\"", + "pickleshare", + "prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30", + "pygments>=2.4.0", + "stack-data", + "traitlets>=5", +] + +[[package]] +name = "javascript" +version = "1!1.0.1" +requires_python = ">=3.7, <4" +summary = "Call and interop Node.js APIs with Python" + +[[package]] +name = "jedi" +version = "0.18.2" +requires_python = ">=3.6" +summary = "An autocompletion tool for Python that can be used for text editors." +dependencies = [ + "parso<0.9.0,>=0.8.0", +] + +[[package]] +name = "matplotlib-inline" +version = "0.1.6" +requires_python = ">=3.5" +summary = "Inline Matplotlib backend for Jupyter" +dependencies = [ + "traitlets", +] + +[[package]] +name = "parso" +version = "0.8.3" +requires_python = ">=3.6" +summary = "A Python Parser" + +[[package]] +name = "pexpect" +version = "4.8.0" +summary = "Pexpect allows easy control of interactive console applications." +dependencies = [ + "ptyprocess>=0.5", +] + +[[package]] +name = "pickleshare" +version = "0.7.5" +summary = "Tiny 'shelve'-like database with concurrency support" + +[[package]] +name = "prompt-toolkit" +version = "3.0.38" +requires_python = ">=3.7.0" +summary = "Library for building powerful interactive command lines in Python" +dependencies = [ + "wcwidth", +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +summary = "Run a subprocess in a pseudo terminal" + +[[package]] +name = "pure-eval" +version = "0.2.2" +summary = "Safely evaluate AST nodes without side effects" + +[[package]] +name = "pygments" +version = "2.15.1" +requires_python = ">=3.7" +summary = "Pygments is a syntax highlighting package written in Python." + +[[package]] +name = "six" +version = "1.16.0" +requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +summary = "Python 2 and 3 compatibility utilities" + +[[package]] +name = "stack-data" +version = "0.6.2" +summary = "Extract data from python stack frames and tracebacks for informative displays" +dependencies = [ + "asttokens>=2.1.0", + "executing>=1.2.0", + "pure-eval", +] + +[[package]] +name = "tomli" +version = "2.0.1" +requires_python = ">=3.7" +summary = "A lil' TOML parser" + +[[package]] +name = "traitlets" +version = "5.9.0" +requires_python = ">=3.7" +summary = "Traitlets Python configuration system" + +[[package]] +name = "wcwidth" +version = "0.2.6" +summary = "Measures the displayed width of unicode strings in a terminal" + +[metadata] +lock_version = "4.2" +cross_platform = true +groups = ["default"] +content_hash = "sha256:c81fe745dcde1603659f432ea5aa6434120a1c3242331e4a8112c92b892d8fce" + +[metadata.files] +"appnope 0.1.3" = [ + {url = "https://files.pythonhosted.org/packages/41/4a/381783f26df413dde4c70c734163d88ca0550a1361cb74a1c68f47550619/appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"}, + {url = "https://files.pythonhosted.org/packages/6a/cd/355842c0db33192ac0fc822e2dcae835669ef317fe56c795fb55fcddb26f/appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"}, +] +"asttokens 2.2.1" = [ + {url = "https://files.pythonhosted.org/packages/c8/e3/b0b4f32162621126fbdaba636c152c6b6baec486c99f48686e66343d638f/asttokens-2.2.1.tar.gz", hash = "sha256:4622110b2a6f30b77e1473affaa97e711bc2f07d3f10848420ff1898edbe94f3"}, + {url = "https://files.pythonhosted.org/packages/f3/e1/64679d9d0759db5b182222c81ff322c2fe2c31e156a59afd6e9208c960e5/asttokens-2.2.1-py2.py3-none-any.whl", hash = "sha256:6b0ac9e93fb0335014d382b8fa9b3afa7df546984258005da0b9e7095b3deb1c"}, +] +"backcall 0.2.0" = [ + {url = "https://files.pythonhosted.org/packages/4c/1c/ff6546b6c12603d8dd1070aa3c3d273ad4c07f5771689a7b69a550e8c951/backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, + {url = "https://files.pythonhosted.org/packages/a2/40/764a663805d84deee23043e1426a9175567db89c8b3287b5c2ad9f71aa93/backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, +] +"colorama 0.4.6" = [ + {url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] +"decorator 5.1.1" = [ + {url = "https://files.pythonhosted.org/packages/66/0c/8d907af351aa16b42caae42f9d6aa37b900c67308052d10fdce809f8d952/decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, + {url = "https://files.pythonhosted.org/packages/d5/50/83c593b07763e1161326b3b8c6686f0f4b0f24d5526546bee538c89837d6/decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, +] +"executing 1.2.0" = [ + {url = "https://files.pythonhosted.org/packages/28/3c/bc3819dd8b1a1588c9215a87271b6178cc5498acaa83885211f5d4d9e693/executing-1.2.0-py2.py3-none-any.whl", hash = "sha256:0314a69e37426e3608aada02473b4161d4caf5a4b244d1d0c48072b8fee7bacc"}, + {url = "https://files.pythonhosted.org/packages/8f/ac/89ff37d8594b0eef176b7cec742ac868fef853b8e18df0309e3def9f480b/executing-1.2.0.tar.gz", hash = "sha256:19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107"}, +] +"ipdb 0.13.13" = [ + {url = "https://files.pythonhosted.org/packages/0c/4c/b075da0092003d9a55cf2ecc1cae9384a1ca4f650d51b00fc59875fe76f6/ipdb-0.13.13-py3-none-any.whl", hash = "sha256:45529994741c4ab6d2388bfa5d7b725c2cf7fe9deffabdb8a6113aa5ed449ed4"}, + {url = "https://files.pythonhosted.org/packages/3d/1b/7e07e7b752017f7693a0f4d41c13e5ca29ce8cbcfdcc1fd6c4ad8c0a27a0/ipdb-0.13.13.tar.gz", hash = "sha256:e3ac6018ef05126d442af680aad863006ec19d02290561ac88b8b1c0b0cfc726"}, +] +"ipython 8.14.0" = [ + {url = "https://files.pythonhosted.org/packages/52/d1/f70cdafba20030cbc1412d7a7d6a89c5035071835cc50e47fc5ed8da553c/ipython-8.14.0-py3-none-any.whl", hash = "sha256:248aca623f5c99a6635bc3857677b7320b9b8039f99f070ee0d20a5ca5a8e6bf"}, + {url = "https://files.pythonhosted.org/packages/fa/cb/2b777f625cca49b4a747b0dfe9986c21f5b46e5b548176903a914cdbec55/ipython-8.14.0.tar.gz", hash = "sha256:1d197b907b6ba441b692c48cf2a3a2de280dc0ac91a3405b39349a50272ca0a1"}, +] +"javascript 1!1.0.1" = [ + {url = "https://files.pythonhosted.org/packages/3b/22/0376c6fcf95c152c25acb3a22b75881726d9aebdfebf370062035440c277/javascript-1!1.0.1-py3-none-any.whl", hash = "sha256:8aeae3d2ad2e05236cf110e41bc6dbb698dfab010c547c1a0fe4fae598f97b38"}, + {url = "https://files.pythonhosted.org/packages/b5/a4/99e85c803fd4aab229c555b9b75bed9c9e76cf005794b1f581c48ea3e537/javascript-1!1.0.1.tar.gz", hash = "sha256:506168a1a80285117121cff7cabefa415538c6421f8d1e490379cfb2627cea9e"}, +] +"jedi 0.18.2" = [ + {url = "https://files.pythonhosted.org/packages/15/02/afd43c5066de05f6b3188f3aa74136a3289e6c30e7a45f351546cab0928c/jedi-0.18.2.tar.gz", hash = "sha256:bae794c30d07f6d910d32a7048af09b5a39ed740918da923c6b780790ebac612"}, + {url = "https://files.pythonhosted.org/packages/6d/60/4acda63286ef6023515eb914543ba36496b8929cb7af49ecce63afde09c6/jedi-0.18.2-py2.py3-none-any.whl", hash = "sha256:203c1fd9d969ab8f2119ec0a3342e0b49910045abe6af0a3ae83a5764d54639e"}, +] +"matplotlib-inline 0.1.6" = [ + {url = "https://files.pythonhosted.org/packages/d9/50/3af8c0362f26108e54d58c7f38784a3bdae6b9a450bab48ee8482d737f44/matplotlib-inline-0.1.6.tar.gz", hash = "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"}, + {url = "https://files.pythonhosted.org/packages/f2/51/c34d7a1d528efaae3d8ddb18ef45a41f284eacf9e514523b191b7d0872cc/matplotlib_inline-0.1.6-py3-none-any.whl", hash = "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311"}, +] +"parso 0.8.3" = [ + {url = "https://files.pythonhosted.org/packages/05/63/8011bd08a4111858f79d2b09aad86638490d62fbf881c44e434a6dfca87b/parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"}, + {url = "https://files.pythonhosted.org/packages/a2/0e/41f0cca4b85a6ea74d66d2226a7cda8e41206a624f5b330b958ef48e2e52/parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"}, +] +"pexpect 4.8.0" = [ + {url = "https://files.pythonhosted.org/packages/39/7b/88dbb785881c28a102619d46423cb853b46dbccc70d3ac362d99773a78ce/pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, + {url = "https://files.pythonhosted.org/packages/e5/9b/ff402e0e930e70467a7178abb7c128709a30dfb22d8777c043e501bc1b10/pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, +] +"pickleshare 0.7.5" = [ + {url = "https://files.pythonhosted.org/packages/9a/41/220f49aaea88bc6fa6cba8d05ecf24676326156c23b991e80b3f2fc24c77/pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, + {url = "https://files.pythonhosted.org/packages/d8/b6/df3c1c9b616e9c0edbc4fbab6ddd09df9535849c64ba51fcb6531c32d4d8/pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, +] +"prompt-toolkit 3.0.38" = [ + {url = "https://files.pythonhosted.org/packages/4b/bb/75cdcd356f57d17b295aba121494c2333d26bfff1a837e6199b8b83c415a/prompt_toolkit-3.0.38.tar.gz", hash = "sha256:23ac5d50538a9a38c8bde05fecb47d0b403ecd0662857a86f886f798563d5b9b"}, + {url = "https://files.pythonhosted.org/packages/87/3f/1f5a0ff475ae6481f4b0d45d4d911824d3218b94ee2a97a8cb84e5569836/prompt_toolkit-3.0.38-py3-none-any.whl", hash = "sha256:45ea77a2f7c60418850331366c81cf6b5b9cf4c7fd34616f733c5427e6abbb1f"}, +] +"ptyprocess 0.7.0" = [ + {url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, + {url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, +] +"pure-eval 0.2.2" = [ + {url = "https://files.pythonhosted.org/packages/2b/27/77f9d5684e6bce929f5cfe18d6cfbe5133013c06cb2fbf5933670e60761d/pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"}, + {url = "https://files.pythonhosted.org/packages/97/5a/0bc937c25d3ce4e0a74335222aee05455d6afa2888032185f8ab50cdf6fd/pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"}, +] +"pygments 2.15.1" = [ + {url = "https://files.pythonhosted.org/packages/34/a7/37c8d68532ba71549db4212cb036dbd6161b40e463aba336770e80c72f84/Pygments-2.15.1-py3-none-any.whl", hash = "sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1"}, + {url = "https://files.pythonhosted.org/packages/89/6b/2114e54b290824197006e41be3f9bbe1a26e9c39d1f5fa20a6d62945a0b3/Pygments-2.15.1.tar.gz", hash = "sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c"}, +] +"six 1.16.0" = [ + {url = "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + {url = "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, +] +"stack-data 0.6.2" = [ + {url = "https://files.pythonhosted.org/packages/6a/81/aa96c25c27f78cdc444fec27d80f4c05194c591465e491a1358d8a035bc1/stack_data-0.6.2-py3-none-any.whl", hash = "sha256:cbb2a53eb64e5785878201a97ed7c7b94883f48b87bfb0bbe8b623c74679e4a8"}, + {url = "https://files.pythonhosted.org/packages/db/18/aa7f2b111aeba2cd83503254d9133a912d7f61f459a0c8561858f0d72a56/stack_data-0.6.2.tar.gz", hash = "sha256:32d2dd0376772d01b6cb9fc996f3c8b57a357089dec328ed4b6553d037eaf815"}, +] +"tomli 2.0.1" = [ + {url = "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {url = "https://files.pythonhosted.org/packages/c0/3f/d7af728f075fb08564c5949a9c95e44352e23dee646869fa104a3b2060a3/tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] +"traitlets 5.9.0" = [ + {url = "https://files.pythonhosted.org/packages/39/c3/205e88f02959712b62008502952707313640369144a7fded4cbc61f48321/traitlets-5.9.0.tar.gz", hash = "sha256:f6cde21a9c68cf756af02035f72d5a723bf607e862e7be33ece505abf4a3bad9"}, + {url = "https://files.pythonhosted.org/packages/77/75/c28e9ef7abec2b7e9ff35aea3e0be6c1aceaf7873c26c95ae1f0d594de71/traitlets-5.9.0-py3-none-any.whl", hash = "sha256:9e6ec080259b9a5940c797d58b613b5e31441c2257b87c2e795c5228ae80d2d8"}, +] +"wcwidth 0.2.6" = [ + {url = "https://files.pythonhosted.org/packages/20/f4/c0584a25144ce20bfcf1aecd041768b8c762c1eb0aa77502a3f0baa83f11/wcwidth-0.2.6-py2.py3-none-any.whl", hash = "sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e"}, + {url = "https://files.pythonhosted.org/packages/5e/5f/1e4bd82a9cc1f17b2c2361a2d876d4c38973a997003ba5eb400e8a932b6c/wcwidth-0.2.6.tar.gz", hash = "sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0"}, +]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pnpm-lock.yaml Sun Jun 25 20:01:38 2023 -0700 @@ -0,0 +1,637 @@ +lockfileVersion: 5.4 + +specifiers: + '@types/node': ^18.16.18 + mineflayer: ^4.9.0 + prismarine-block: ^1.16.3 + prismarine-chat: ^1.8.0 + prismarine-registry: ^1.7.0 + typescript: ^5.1.3 + +dependencies: + '@types/node': 18.16.18 + mineflayer: 4.9.0 + prismarine-block: 1.16.3 + prismarine-chat: 1.8.0 + prismarine-registry: 1.7.0 + typescript: 5.1.3 + +packages: + + /@azure/msal-common/13.1.0: + resolution: {integrity: sha512-wj+ULrRB0HTuMmtrMjg8j3guCx32GE2BCPbsMCZkHgL1BZetC3o/Su5UJEQMX1HNc9CrIaQNx5WaKWHygYDe0g==} + engines: {node: '>=0.8.0'} + dev: false + + /@azure/msal-node/1.17.3: + resolution: {integrity: sha512-slsa+388bQQWnWH1V91KL+zV57rIp/0OQFfF0EmVMY8gnEIkAnpWWFUVBTTMbxEyjEFMk5ZW9xiHvHBcYFHzDw==} + engines: {node: 10 || 12 || 14 || 16 || 18} + dependencies: + '@azure/msal-common': 13.1.0 + jsonwebtoken: 9.0.0 + uuid: 8.3.2 + dev: false + + /@types/node/18.16.18: + resolution: {integrity: sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==} + dev: false + + /@types/readable-stream/2.3.15: + resolution: {integrity: sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==} + dependencies: + '@types/node': 18.16.18 + safe-buffer: 5.1.2 + dev: false + + /@xboxreplay/errors/0.1.0: + resolution: {integrity: sha512-Tgz1d/OIPDWPeyOvuL5+aai5VCcqObhPnlI3skQuf80GVF3k1I0lPCnGC+8Cm5PV9aLBT5m8qPcJoIUQ2U4y9g==} + dev: false + + /@xboxreplay/xboxlive-auth/3.3.3_debug@4.3.4: + resolution: {integrity: sha512-j0AU8pW10LM8O68CTZ5QHnvOjSsnPICy0oQcP7zyM7eWkDQ/InkiQiirQKsPn1XRYDl4ccNu0WM582s3UKwcBg==} + dependencies: + '@xboxreplay/errors': 0.1.0 + axios: 0.21.4_debug@4.3.4 + transitivePeerDependencies: + - debug + dev: false + + /abort-controller/3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + dependencies: + event-target-shim: 5.0.1 + dev: false + + /aes-js/3.1.2: + resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} + dev: false + + /ajv/6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: false + + /asn1/0.2.3: + resolution: {integrity: sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=} + dev: false + + /axios/0.21.4_debug@4.3.4: + resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + dependencies: + follow-redirects: 1.15.2_debug@4.3.4 + transitivePeerDependencies: + - debug + dev: false + + /base64-js/1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: false + + /buffer-equal-constant-time/1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + dev: false + + /buffer-equal/1.0.1: + resolution: {integrity: sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==} + engines: {node: '>=0.4'} + dev: false + + /buffer/6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + + /commander/2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: false + + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: false + + /discontinuous-range/1.0.0: + resolution: {integrity: sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==} + dev: false + + /ecdsa-sig-formatter/1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /endian-toggle/0.0.0: + resolution: {integrity: sha512-ShfqhXeHRE4TmggSlHXG8CMGIcsOsqDw/GcoPcosToE59Rm9e4aXaMhEQf2kPBsBRrKem1bbOAv5gOKnkliMFQ==} + dev: false + + /event-target-shim/5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: false + + /events/3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: false + + /fast-deep-equal/3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: false + + /fast-json-stable-stringify/2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: false + + /follow-redirects/1.15.2_debug@4.3.4: + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dependencies: + debug: 4.3.4 + dev: false + + /ieee754/1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false + + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: false + + /jose/4.14.4: + resolution: {integrity: sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==} + dev: false + + /json-schema-traverse/0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: false + + /jsonwebtoken/9.0.0: + resolution: {integrity: sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==} + engines: {node: '>=12', npm: '>=6'} + dependencies: + jws: 3.2.2 + lodash: 4.17.21 + ms: 2.1.3 + semver: 7.5.3 + dev: false + + /jwa/1.4.1: + resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + dev: false + + /jws/3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + dependencies: + jwa: 1.4.1 + safe-buffer: 5.2.1 + dev: false + + /lodash.get/4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + dev: false + + /lodash.merge/4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: false + + /lodash.reduce/4.6.0: + resolution: {integrity: sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==} + dev: false + + /lodash/4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false + + /lru-cache/6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: false + + /macaddress/0.5.3: + resolution: {integrity: sha512-vGBKTA+jwM4KgjGZ+S/8/Mkj9rWzePyGY6jManXPGhiWu63RYwW8dKPyk5koP+8qNVhPhHgFa1y/MJ4wrjsNrg==} + dev: false + + /minecraft-data/3.37.0: + resolution: {integrity: sha512-hcKncWDaI4OiGcvZ8ufrLwq548Z1vl1TqMEpxOuPGj0ro4mb7X+rMWtHcP4grWAJz6IKK2TXKSz0YcRX+IBJZw==} + dev: false + + /minecraft-folder-path/1.2.0: + resolution: {integrity: sha512-qaUSbKWoOsH9brn0JQuBhxNAzTDMwrOXorwuRxdJKKKDYvZhtml+6GVCUrY5HRiEsieBEjCUnhVpDuQiKsiFaw==} + dev: false + + /minecraft-protocol/1.43.0: + resolution: {integrity: sha512-Y7Mc1AycDy97y3v9FdaqOTzeEshvNQdzQZYUYHDYGKEKxPFUqfBcEtDOwrCC+BCxfmqpyYt3Ws7OTbGsA8TtrQ==} + engines: {node: '>=18'} + dependencies: + '@types/readable-stream': 2.3.15 + aes-js: 3.1.2 + buffer-equal: 1.0.1 + debug: 4.3.4 + endian-toggle: 0.0.0 + lodash.get: 4.4.2 + lodash.merge: 4.6.2 + minecraft-data: 3.37.0 + minecraft-folder-path: 1.2.0 + node-fetch: 2.6.11 + node-rsa: 0.4.2 + prismarine-auth: 2.2.0 + prismarine-nbt: 2.2.1 + prismarine-realms: 1.3.2 + protodef: 1.15.0 + readable-stream: 4.4.0 + uuid-1345: 1.0.2 + yggdrasil: 1.7.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /mineflayer/4.9.0: + resolution: {integrity: sha512-fi/WuMthVCalQJuTXB2NKssepbj/U/g0zA4PUrSnhWLWDNZABn551Be/IrNuanfwOm4XcRMNTrQAtljkE8esWg==} + engines: {node: '>=14'} + dependencies: + minecraft-data: 3.37.0 + minecraft-protocol: 1.43.0 + prismarine-biome: 1.3.0_iygc34ltapsiwpiwhkbbn46wzy + prismarine-block: 1.16.3 + prismarine-chat: 1.8.0 + prismarine-chunk: 1.33.1_minecraft-data@3.37.0 + prismarine-entity: 2.2.0 + prismarine-item: 1.12.2 + prismarine-nbt: 2.2.1 + prismarine-physics: 1.6.0 + prismarine-recipe: 1.3.1_prismarine-registry@1.7.0 + prismarine-registry: 1.7.0 + prismarine-windows: 2.6.1 + prismarine-world: 3.6.2 + protodef: 1.15.0 + typed-emitter: 1.4.0 + vec3: 0.1.8 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /mojangson/2.0.4: + resolution: {integrity: sha512-HYmhgDjr1gzF7trGgvcC/huIg2L8FsVbi/KacRe6r1AswbboGVZDS47SOZlomPuMWvZLas8m9vuHHucdZMwTmQ==} + dependencies: + nearley: 2.20.1 + dev: false + + /moo/0.5.2: + resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==} + dev: false + + /ms/2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: false + + /ms/2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: false + + /nearley/2.20.1: + resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==} + hasBin: true + dependencies: + commander: 2.20.3 + moo: 0.5.2 + railroad-diagrams: 1.0.0 + randexp: 0.4.6 + dev: false + + /node-fetch/2.6.11: + resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + + /node-rsa/0.4.2: + resolution: {integrity: sha512-Bvso6Zi9LY4otIZefYrscsUpo2mUpiAVIEmSZV2q41sP8tHZoert3Yu6zv4f/RXJqMNZQKCtnhDugIuCma23YA==} + dependencies: + asn1: 0.2.3 + dev: false + + /prismarine-auth/2.2.0: + resolution: {integrity: sha512-3XfR3bqrd7nrTVyEqMwuYRr+/Vy+hkfBplubSDuoRAcRCs90lDx7R4EG3fjMSoKY53RLTXjeFnsB6m1krhL/2A==} + dependencies: + '@azure/msal-node': 1.17.3 + '@xboxreplay/xboxlive-auth': 3.3.3_debug@4.3.4 + debug: 4.3.4 + jose: 4.14.4 + node-fetch: 2.6.11 + smart-buffer: 4.2.0 + uuid-1345: 1.0.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /prismarine-biome/1.3.0_iygc34ltapsiwpiwhkbbn46wzy: + resolution: {integrity: sha512-GY6nZxq93mTErT7jD7jt8YS1aPrOakbJHh39seYsJFXvueIOdHAmW16kYQVrTVMW5MlWLQVxV/EquRwOgr4MnQ==} + peerDependencies: + minecraft-data: ^3.0.0 + prismarine-registry: ^1.1.0 + dependencies: + minecraft-data: 3.37.0 + prismarine-registry: 1.7.0 + dev: false + + /prismarine-block/1.16.3: + resolution: {integrity: sha512-E9OazjIqnEgcXM6me6EIeQFMcNRWZzsaftWtetRSIKVoW+4UKWleb6lTNKh9kq7wNxciKavcYBmKL3sF7HfSaA==} + dependencies: + minecraft-data: 3.37.0 + prismarine-biome: 1.3.0_iygc34ltapsiwpiwhkbbn46wzy + prismarine-chat: 1.8.0 + prismarine-item: 1.12.2 + prismarine-nbt: 2.2.1 + prismarine-registry: 1.7.0 + dev: false + + /prismarine-chat/1.8.0: + resolution: {integrity: sha512-hEz47GESIEP0W1KSHrK7ZSy0PqbQW7khYWenv8d5wvyAYnBs1E4KXDBJSWqyGIYinKGN9aes8v3xpQhgURK/Fg==} + dependencies: + mojangson: 2.0.4 + prismarine-item: 1.12.2 + prismarine-nbt: 2.2.1 + prismarine-registry: 1.7.0 + dev: false + + /prismarine-chunk/1.33.1_minecraft-data@3.37.0: + resolution: {integrity: sha512-8JNgibzllPGv5seIL3iskH72Ucv9NZVAyrJX557NGDHzr7YZFZJlfILNqNW0RyUhJNBUZfE1AEwwvivhsCY42Q==} + engines: {node: '>=14'} + dependencies: + prismarine-biome: 1.3.0_iygc34ltapsiwpiwhkbbn46wzy + prismarine-block: 1.16.3 + prismarine-nbt: 2.2.1 + 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 + dev: false + + /prismarine-entity/2.2.0: + resolution: {integrity: sha512-boqJbMpGHG2ddFUUo9aKkKPUHQbFMWkUCw8SRdZ+jrZxABsstL9619I8ujwPYoOMJjMyfYWgdEPNyHGiUqqukA==} + dependencies: + minecraft-data: 3.37.0 + prismarine-chat: 1.8.0 + prismarine-item: 1.12.2 + prismarine-registry: 1.7.0 + vec3: 0.1.8 + dev: false + + /prismarine-item/1.12.2: + resolution: {integrity: sha512-I5pYTn+27Kn1l1xowiK9p05FJs/fibeTHieU6na5sWAnnPnccwYBcdCfEmQIyAOocfl4KRVUO8n9tIjZr4UIWA==} + dependencies: + prismarine-nbt: 2.2.1 + prismarine-registry: 1.7.0 + dev: false + + /prismarine-nbt/2.2.1: + resolution: {integrity: sha512-Mb50c58CPnuZ+qvM31DBa08tf9UumlTq1LkvpMoUpKfCuN05GZHTqCUwER3lxTSHLL0GZKghIPbYR/JQkINijQ==} + dependencies: + protodef: 1.15.0 + dev: false + + /prismarine-physics/1.6.0: + resolution: {integrity: sha512-OqhWAt+lQRCxpodAgdRZg/9C815Xy+YUj5a4iPVIRVineD2x8UuUxCJInE4R8kFFs9PhupNtiXzgEtdmbUB/Mw==} + dependencies: + minecraft-data: 3.37.0 + prismarine-nbt: 2.2.1 + vec3: 0.1.8 + dev: false + + /prismarine-realms/1.3.2: + resolution: {integrity: sha512-5apl9Ru8veTj5q2OozRc4GZOuSIcs3yY4UEtALiLKHstBe8bRw8vNlaz4Zla3jsQ8yP/ul1b1IJINTRbocuA6g==} + dependencies: + debug: 4.3.4 + node-fetch: 2.6.11 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /prismarine-recipe/1.3.1_prismarine-registry@1.7.0: + resolution: {integrity: sha512-xfa9E9ACoaDi+YzNQ+nk8kWSIqt5vSZOOCHIT+dTXscf/dng2HaJ/59uwe1D/jvOkAd2OvM6RRJM6fFe0q/LDA==} + peerDependencies: + prismarine-registry: ^1.4.0 + dependencies: + prismarine-registry: 1.7.0 + dev: false + + /prismarine-registry/1.7.0: + resolution: {integrity: sha512-yyva0FpWI078nNeMhx8ekVza5uUTYhEv+C+ADu3wUQXiG8qhXkvrf0uzsnhTgZL8BLdsi2axgCEiKw9qSKIuxQ==} + dependencies: + minecraft-data: 3.37.0 + prismarine-nbt: 2.2.1 + dev: false + + /prismarine-windows/2.6.1: + resolution: {integrity: sha512-5B8+W4Zb9MWaakd38I/WW564zEgat6bC23ftcv15yVYmHZTq8mtUfX2GsOUD3Pu/aFKarvXpyyJahFMUTUVoXg==} + dependencies: + prismarine-item: 1.12.2 + prismarine-registry: 1.7.0 + typed-emitter: 1.4.0 + dev: false + + /prismarine-world/3.6.2: + resolution: {integrity: sha512-xNNo3bd8EnCMjiPbVrh3jYa1Upa8Krkb13BgO7FOOfD5ZYf+iYDZewBtDbHYWzZZB2N0JlTtimMOHRhZhDJirw==} + engines: {node: '>=8.0.0'} + dependencies: + vec3: 0.1.8 + dev: false + + /process/0.11.10: + resolution: {integrity: sha1-czIwDoQBYb2j5podHZGn1LwW8YI=} + engines: {node: '>= 0.6.0'} + dev: false + + /protodef-validator/1.3.1: + resolution: {integrity: sha512-lZ5FWKZYR9xOjpMw1+EfZRfCjzNRQWPq+Dk+jki47Sikl2EeWEPnTfnJERwnU/EwFq6us+0zqHHzSsmLeYX+Lg==} + hasBin: true + dependencies: + ajv: 6.12.6 + dev: false + + /protodef/1.15.0: + resolution: {integrity: sha512-bZ2Omw8dT+DACjJHLrBWZlqN4MlT9g9oSpJDdkUAJOStUzgJp+Zn42FJfPUdwutUxjaxA0PftN0PDlNa2XbneA==} + engines: {node: '>=14'} + dependencies: + lodash.get: 4.4.2 + lodash.reduce: 4.6.0 + protodef-validator: 1.3.1 + readable-stream: 3.6.2 + dev: false + + /punycode/2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + dev: false + + /railroad-diagrams/1.0.0: + resolution: {integrity: sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==} + dev: false + + /randexp/0.4.6: + resolution: {integrity: sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==} + engines: {node: '>=0.12'} + dependencies: + discontinuous-range: 1.0.0 + ret: 0.1.15 + dev: false + + /readable-stream/3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: false + + /readable-stream/4.4.0: + resolution: {integrity: sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + dev: false + + /ret/0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + dev: false + + /safe-buffer/5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: false + + /safe-buffer/5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: false + + /semver/7.5.3: + resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: false + + /smart-buffer/4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + dev: false + + /string_decoder/1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /tr46/0.0.3: + resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=} + dev: false + + /typed-emitter/1.4.0: + resolution: {integrity: sha512-weBmoo3HhpKGgLBOYwe8EB31CzDFuaK7CCL+axXhUYhn4jo6DSkHnbefboCF5i4DQ2aMFe0C/FdTWcPdObgHyg==} + dev: false + + /typescript/5.1.3: + resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} + engines: {node: '>=14.17'} + hasBin: true + dev: false + + /uint4/0.1.2: + resolution: {integrity: sha512-lhEx78gdTwFWG+mt6cWAZD/R6qrIj0TTBeH5xwyuDJyswLNlGe+KVlUPQ6+mx5Ld332pS0AMUTo9hIly7YsWxQ==} + dev: false + + /uri-js/4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.0 + dev: false + + /util-deprecate/1.0.2: + resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} + dev: false + + /uuid-1345/1.0.2: + resolution: {integrity: sha512-bA5zYZui+3nwAc0s3VdGQGBfbVsJLVX7Np7ch2aqcEWFi5lsAEcmO3+lx3djM1npgpZI8KY2FITZ2uYTnYUYyw==} + dependencies: + macaddress: 0.5.3 + dev: false + + /uuid/8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: false + + /vec3/0.1.8: + resolution: {integrity: sha512-LfKrP625Bsg/Tj52YdYPsHmpsJuo+tc6fLxZxXjEo9k2xSspKlPvoYTHehykKhp1FvV9nm+XU3Ehej5/9tpDCg==} + dev: false + + /webidl-conversions/3.0.1: + resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=} + dev: false + + /whatwg-url/5.0.0: + resolution: {integrity: sha1-lmRU6HZUYuN2RNNib2dCzotwll0=} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: false + + /xxhash-wasm/0.4.2: + resolution: {integrity: sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==} + dev: false + + /yallist/4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: false + + /yggdrasil/1.7.0: + resolution: {integrity: sha512-QBIo5fiNd7688G3FqXXYGr36uyrYzczlNuzpWFy2zL3+R+3KT2lF+wFxm51synfA3l3z6IBiGOc1/EVXWCYY1Q==} + dependencies: + node-fetch: 2.6.11 + uuid: 8.3.2 + transitivePeerDependencies: + - encoding + dev: false
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pyproject.toml Sun Jun 25 20:01:38 2023 -0700 @@ -0,0 +1,13 @@ +[project] +name = "" +version = "" +description = "" +authors = [ + {name = "Drew Perttula", email = "drewp@bigasterisk.com"}, +] +dependencies = [ + "javascript>=1!1.0.1", + "ipdb>=0.13.13", +] +requires-python = ">=3.10" +license = {text = "MIT"}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/servers_down.sh Sun Jun 25 20:01:38 2023 -0700 @@ -0,0 +1,3 @@ +#!/bin/zsh + +kubectl delete deploy/minecraft-build-world deploy/minecraft-lake-world
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/servers_up.sh Sun Jun 25 20:01:38 2023 -0700 @@ -0,0 +1,5 @@ +#!/bin/zsh + +kubectl apply -f /my/serv/minecraft/deploy-build.yaml +kubectl apply -f /my/serv/minecraft/deploy-lake.yaml +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/termbanator.py Sun Jun 25 20:01:38 2023 -0700 @@ -0,0 +1,250 @@ +import datetime +import os +import pdb +import subprocess +import sys +import time +import logging +import traceback +from typing import Any, Optional, Tuple + +from javascript import On, Once, console, require + +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s [%(levelname)s] [line %(lineno)s] %(message)s") +log = logging.getLogger() + +mineflayer = require("mineflayer", "latest") +Vec3 = require("vec3").Vec3 +registry = require('prismarine-registry')('1.19.3') +Block = require("prismarine-block")(registry) + +host, port, rconPort = ('bang', 25665, 25675) + +mfbot = mineflayer.createBot({ + "host": host, + "port": port, + "username": 'termbanator', + 'auth': 'offline', + 'version': '1.19.3', +}) +log.info('created') + + +class Player: + + def __init__(self, player): + self._p = player + if self._p is None: + raise TypeError(f'player was {player}') + self.username = self._p.username + + def __repr__(self): + return f'Player({self.username})' + + def position(self) -> Tuple[float, float, float]: + if self._p.entity is None: + return getDistantPlayerPos(self.username) + pos = self._p.entity.position + return (round(pos.x, 2), round(pos.y, 2), round(pos.z, 2)) + + +def getDistantPlayerPos(username) -> Tuple[float, float, float]: + out = subprocess.check_output([ + "/home/drewp/Downloads/mcrcon/mcrcon", "-H", host, "-P", + str(rconPort), "-p", "111", f"/data get entity @p[name={username}] Pos" + ], + encoding='utf8') + words = out.split("the following entity data: ")[1].split('[')[1].split( + ']')[0].split(',') + return tuple(round(float(v.rstrip('d')), 2) for v in words) + + +class Bot: + + def __init__(self, mineflayer_bot: Any): + self._bot = mineflayer_bot + self.me = Player(self._bot) + mcData = require('minecraft-data')(self._bot.version) + self.pf_module = require('mineflayer-pathfinder') + self._bot.loadPlugin(self.pf_module.pathfinder) + + self.movements = self.pf_module.Movements(self._bot, mcData) + self.movements.allow1by1towers = True + self.movements.canDig = False + self.movements.scafoldingBlocks.push( + self._bot.registry.itemsByName['dirt'].id) + self.movements.maxDropDown = 300 + self.movements.allowFreeMotion = True + self.movements.canOpenDoors = True + + self._bot.removeAllListeners('chat') + + self.walkStartTime = 0 + self.waitUntil = time.time() + 2 + self.target: Optional[Player] = None + self.announcedToTarget = False + + def chat(self, txt): + log.info(f'say {txt!r}') + self._bot.chat(txt) + + def teleport(self, x, y, z): + self._bot.chat(f'/tp {x} {y} {z}') + + def setPathfinderGoal(self, x, y, z, rng): + pos = self.me.position() + log.info(f'now at {pos}, pathfinding to {x} {y} {z} {rng=}') + goal = self.pf_module.goals.GoalNear(x, y, z, rng) + self._bot.pathfinder.setMovements(self.movements) + self._bot.pathfinder.setGoal(goal) + self.walkStartTime = time.time() + + def isMoving(self) -> bool: + return self._bot.pathfinder.isMoving() + + def stopPathfinder(self): + log.info("Stopping pathfinder") + self._bot.pathfinder.stop() + + def ban(self, player: Player, reason: str = "good night"): + self.chat(f'/ban {player.username} {reason}') + + def quit(self): + self._bot.quit('done') + os.kill(os.getpid(), 15) + + ########## below here doesn't use self._bot ########## + + def onLogin(self): + self.chat("Beware the termbanator") + # self.teleport(-160, 200, 280) + + def walkTo(self, player: Player): + self.target = player + self.announcedToTarget = False + log.info(f'walk to {self.target}') + pos = player.position() + self.setPathfinderGoal(pos[0], pos[1], pos[2], rng=3) + + def stillWalking(self, walkMinTime=3): + if self.walkStartTime and time.time( + ) < self.walkStartTime + walkMinTime: + return True + return self.isMoving() + + def update(self, waitBetweenTargets=9): + try: + now = time.time() + + if self.waitUntil > 0 and now < self.waitUntil: + log.debug(f'waiting {round(self.waitUntil-now, 1)} more sec') + return + self.waitUntil = 0 + + if self.stillWalking(): + pos = self.me.position() + log.info(f'still moving to {self.target}: {pos=}') + return + + self.stopPathfinder() + + if self.target: + if not self.announcedToTarget: + minsLeft = round( + (self.getTodayEndTime() - time.time()) / 60, 1) + + if minsLeft > 0: + mins = 'minutes' if minsLeft != 1 else 'minute' + self.chat( + f'hi {self.target.username} - {minsLeft} {mins} left' + ) + else: + self.ban(self.target) + + self.announcedToTarget = True + self.sleepFor(waitBetweenTargets) + return + + log.info('follow next player') + + next = players.after(self.target) + try: + self.walkTo(next) + except ValueError as e: + log.warning(repr(e)) + self.sleepFor(8) + except EveryoneGone: + bot.quit() + except Exception as e: + traceback.print_exc() + log.warning(repr(e)) + self.sleepFor(60) + + def getTodayEndTime(self) -> float: + current_date = datetime.datetime.now().date() + end_datetime = datetime.datetime.combine(current_date, + datetime.time(19, 0)) + + return end_datetime.timestamp() + + def sleepFor(self, sec): + log.info(f'sleeping for {sec}') + self.waitUntil = time.time() + sec + + +class EveryoneGone(ValueError): + pass + + +class Players: + + def __init__(self, mineflayer_bot: Any): + self._b = mineflayer_bot + + def byName(self, name) -> Player: + # only works for 'nearby' players- useless + return Player(self._b.players[name]) + + def after(self, player: Optional[Player]) -> Player: + otherPlayers = [p for p in self._b.players if p != 'termbanator'] + log.info(f'{otherPlayers=}') + if not otherPlayers: + log.info('everyone is gone') + raise EveryoneGone() + # import pdb;pdb.set_trace() + prevPlayer = player.username if player else None + + try: + i = otherPlayers.index(prevPlayer) + except (AttributeError, ValueError): + i = 0 + i = (i + 1) % len(otherPlayers) + + return self.byName(otherPlayers[i]) + + +bot = Bot(mfbot) +players = Players(mfbot) + + +@On(mfbot, "login") +def login(this): + bot.onLogin() + + +@On(mfbot, 'chat') +def handleMsg(this, sender, message, *args): + if sender and (sender != 'termbanator'): + pass + + +@On(mfbot, 'time') +def onTime(this): + bot.update() + + +@On(mfbot, 'message') +def message(emitter, msg, *args): + log.info(f'got msg event {msg.toString()}') \ No newline at end of file