diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 118f712..4371734 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,18 +1,27 @@ -name: Core checks +name: MVP checks on: push: pull_request: permissions: contents: read jobs: - storage: + mvp: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: toolchain: 1.96.0 components: rustfmt, clippy - - name: Verify storage and crash recovery + - uses: actions/setup-node@v4 + with: + node-version: 22 + - name: Verify core, server, client and crash recovery run: bash scripts/verify.sh - + - name: Install independent MCP test client + run: npm install --prefix artifacts/mcp-sdk --no-package-lock @modelcontextprotocol/sdk@1.30.0 + - name: Verify real stdio MCP interoperability + env: + SHACRAFT_MCP_SDK: ${{ github.workspace }}/artifacts/mcp-sdk/node_modules/@modelcontextprotocol/sdk + run: node scripts/check_mcp.mjs --binary target/debug/shacraft-server --output artifacts/mcp-sdk.json diff --git a/.gitignore b/.gitignore index 6598225..f778840 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ __pycache__/ *.pyc /graphify-out/ + +/logs/ diff --git a/Cargo.lock b/Cargo.lock index d65e3c5..099bc83 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "anstream" version = "1.0.0" @@ -38,7 +44,7 @@ version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys", + "windows-sys 0.61.2", ] [[package]] @@ -49,7 +55,7 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys", + "windows-sys 0.61.2", ] [[package]] @@ -58,6 +64,79 @@ version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "axum" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90" +dependencies = [ + "axum-core", + "base64", + "bytes", + "form_urlencoded", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "serde_core", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sha1", + "sync_wrapper", + "tokio", + "tokio-tungstenite", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + [[package]] name = "bitflags" version = "2.13.2" @@ -79,6 +158,12 @@ version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" +[[package]] +name = "bytes" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" + [[package]] name = "cc" version = "1.4.6" @@ -89,12 +174,35 @@ dependencies = [ "shlex", ] +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + [[package]] name = "cfg-if" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +[[package]] +name = "cfg_aliases" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" + +[[package]] +name = "chacha20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.1", + "rand_core 0.10.1", +] + [[package]] name = "clap" version = "4.6.6" @@ -126,7 +234,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 3.0.5", ] [[package]] @@ -150,6 +258,24 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01a7799fd6b852db0e61728dde9a204c423b44d689dbd432522543614b490e78" +dependencies = [ + "cfg-if", +] + [[package]] name = "crypto-common" version = "0.1.7" @@ -160,6 +286,12 @@ dependencies = [ "typenum", ] +[[package]] +name = "data-encoding" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06" + [[package]] name = "digest" version = "0.10.7" @@ -170,6 +302,23 @@ dependencies = [ "crypto-common", ] +[[package]] +name = "displaydoc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.5", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + [[package]] name = "errno" version = "0.3.14" @@ -177,7 +326,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.61.2", ] [[package]] @@ -198,18 +347,53 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + [[package]] name = "find-msvc-tools" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e0f1c7c3a72c66fd80abe965175f7523475c0489a87d3ff9d6e8c87d87a9d2d" +[[package]] +name = "flate2" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb" +dependencies = [ + "crc32fast", + "miniz_oxide 0.9.1", + "zlib-rs", +] + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "foldhash" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + [[package]] name = "fs2" version = "0.4.3" @@ -220,6 +404,67 @@ dependencies = [ "winapi", ] +[[package]] +name = "futures-channel" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" + +[[package]] +name = "futures-io" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed" + +[[package]] +name = "futures-macro" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.5", +] + +[[package]] +name = "futures-sink" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d" + +[[package]] +name = "futures-task" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" + +[[package]] +name = "futures-util" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -230,6 +475,31 @@ dependencies = [ "version_check", ] +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi 5.3.0", + "wasip2", +] + [[package]] name = "getrandom" version = "0.4.3" @@ -237,8 +507,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", - "r-efi", + "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash 0.1.5", ] [[package]] @@ -247,7 +529,7 @@ version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ - "foldhash", + "foldhash 0.2.0", ] [[package]] @@ -256,7 +538,7 @@ version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" dependencies = [ - "foldhash", + "foldhash 0.2.0", ] [[package]] @@ -274,6 +556,237 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "http" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23169fe34a5fbcdd3f3862e78fb9b6fccd5f02a6dc6f732547005d45631ce71c" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "http-range-header" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b501faa50e7a26c3d3560ca625132f4078a17771f4810baf70475ae48cbe43" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "icu_collections" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513" +dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0" + +[[package]] +name = "icu_properties" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa" + +[[package]] +name = "icu_provider" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "2.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc4e190f5d26ca7051642629da2c52fc03bde85a03197c99408dcd291734c855" +dependencies = [ + "equivalent", + "hashbrown 0.17.1", +] + +[[package]] +name = "ipnet" +version = "2.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791930b43c0d5973160d90a8f3894509f2b273430f5c5c73b668636d0287c5c0" + [[package]] name = "is_terminal_polyfill" version = "1.70.2" @@ -293,15 +806,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce57d20d1ea864ce2ac172ab472d409214f4fd359f0b2a2775abdf522e2af99e" dependencies = [ "cfg-if", + "futures-util", "wasm-bindgen", ] +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "libc" version = "0.2.189" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" +[[package]] +name = "libm" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + [[package]] name = "libsqlite3-sys" version = "0.38.2" @@ -319,12 +845,101 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" +[[package]] +name = "litemap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" + +[[package]] +name = "lru-slab" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4050469837a6ff301cd14c1f8f24f88549e6d548f24f64e2148eb0f72cebc51f" + +[[package]] +name = "lz4_flex" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef0d4ed8669f8f8826eb00dc878084aa8f253506c4fd5e8f58f5bce72ddb97e" +dependencies = [ + "twox-hash", +] + +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + [[package]] name = "memchr" version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b18443e9c262bfe8fa82f51666e2642c53393f7e5c27b3e1aeab922cff5b9d8" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + [[package]] name = "once_cell" version = "1.21.4" @@ -337,12 +952,78 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + [[package]] name = "pkg-config" version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548" +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide 0.8.9", +] + +[[package]] +name = "potential_utf" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661" +dependencies = [ + "zerovec", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + [[package]] name = "proc-macro2" version = "1.0.107" @@ -352,6 +1033,62 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "quinn" +version = "0.11.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4051e23e9185c255a7e33ef59cdbca87a22d359052eecd22fc6b901fb37d9d11" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9746dbde176634f4f2f1faf2404e30a31b2bc1e9cafb5329c95d8177a18c9fc" +dependencies = [ + "bytes", + "getrandom 0.4.3", + "lru-slab", + "rand 0.10.2", + "rand_pcg", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35a133f956daabe89a61a685c2649f13d82d5aa4bd5d12d1277e1072a21c0694" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.61.2", +] + [[package]] name = "quote" version = "1.0.47" @@ -361,12 +1098,136 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "r-efi" version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" +[[package]] +name = "rand" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" +dependencies = [ + "rand_chacha", + "rand_core 0.9.5", +] + +[[package]] +name = "rand" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" +dependencies = [ + "chacha20", + "getrandom 0.4.3", + "rand_core 0.10.1", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + +[[package]] +name = "rand_pcg" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" +dependencies = [ + "rand_core 0.10.1", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.13.2", +] + +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + [[package]] name = "rsqlite-vfs" version = "0.1.1" @@ -383,7 +1244,7 @@ version = "0.40.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23f2a97da3e3873c73cb2a2e71b35c40ff95e0b1eefa8d72d8499a6928c3b5b3" dependencies = [ - "bitflags", + "bitflags 2.13.2", "fallible-iterator", "fallible-streaming-iterator", "hashlink", @@ -392,17 +1253,58 @@ dependencies = [ "sqlite-wasm-rs", ] +[[package]] +name = "rustc-hash" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" + [[package]] name = "rustix" version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags", + "bitflags 2.13.2", "errno", "libc", "linux-raw-sys", - "windows-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls" +version = "0.23.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6725596c3f2c3a0aef021139e145d4eafe314a6623e4680ca83852b2c67ab2ba" +dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", ] [[package]] @@ -411,6 +1313,18 @@ version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + [[package]] name = "serde" version = "1.0.229" @@ -438,7 +1352,7 @@ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.5", ] [[package]] @@ -454,6 +1368,40 @@ dependencies = [ "zmij", ] +[[package]] +name = "serde_path_to_error" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" +dependencies = [ + "itoa", + "serde", + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a978451301f4db1d02937a4ab3ccce137717b81826e79b7d49ffe3244a13c3b8" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest", +] + [[package]] name = "sha2" version = "0.10.9" @@ -461,10 +1409,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest", ] +[[package]] +name = "shacraft-compat" +version = "0.1.0" +dependencies = [ + "anyhow", + "cesu8", + "clap", + "flate2", + "lz4_flex", + "rusqlite", + "rustix", + "serde", + "serde_json", + "sha2", + "shacraft-core", + "tempfile", + "xxhash-rust", +] + +[[package]] +name = "shacraft-content" +version = "0.1.0" +dependencies = [ + "anyhow", + "flate2", + "serde", + "serde_json", + "sha2", + "tempfile", +] + [[package]] name = "shacraft-core" version = "0.1.0" @@ -478,6 +1457,40 @@ dependencies = [ "tempfile", ] +[[package]] +name = "shacraft-mcp" +version = "0.1.0" +dependencies = [ + "anyhow", + "clap", + "reqwest", + "serde_json", +] + +[[package]] +name = "shacraft-server" +version = "0.1.0" +dependencies = [ + "anyhow", + "axum", + "base64", + "clap", + "futures-util", + "png", + "rusqlite", + "serde", + "serde_json", + "sha2", + "shacraft-content", + "shacraft-core", + "tempfile", + "tokio", + "tower", + "tower-http", + "uuid", + "wasmi", +] + [[package]] name = "shacraft-tools" version = "0.1.0" @@ -495,12 +1508,50 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + [[package]] name = "smallvec" version = "1.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba467056f1b547ed52077911161fc86985becbc60e8e1857c8a144dab0def891" +[[package]] +name = "socket2" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "spin" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3763264f6b73151db08c50ff20d7d8a0b8796e021cdea7ceedad07b80155fa0e" + [[package]] name = "sqlite-wasm-rs" version = "0.5.5" @@ -513,12 +1564,45 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "string-interner" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23de088478b31c349c9ba67816fa55d9355232d63c3afea8bf513e31f0f1d2c0" +dependencies = [ + "hashbrown 0.15.5", + "serde", +] + [[package]] name = "strsim" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "syn" version = "3.0.5" @@ -530,6 +1614,26 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "tempfile" version = "3.27.0" @@ -537,10 +1641,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom", + "getrandom 0.4.3", "once_cell", "rustix", - "windows-sys", + "windows-sys 0.61.2", ] [[package]] @@ -560,27 +1664,259 @@ checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.5", ] +[[package]] +name = "tinystr" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3ca314f692efd6c868f8408f53fe444634a845f96c028b97d35f6a1f79f0ee" + +[[package]] +name = "tokio" +version = "1.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.5", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c85f2c3ef0b1cd58b36682f4b17aaa995f0e5db534d85692b4903abce21f67" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f72a05e828585856dacd553fba484c242c46e391fb0e58917c942ee9202915c" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite", +] + +[[package]] +name = "tokio-util" +version = "0.7.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" +dependencies = [ + "bitflags 2.13.2", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "http-range-header", + "httpdate", + "mime", + "mime_guess", + "percent-encoding", + "pin-project-lite", + "tokio", + "tokio-util", + "tower", + "tower-layer", + "tower-service", + "tracing", + "url", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "log", + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c01152af293afb9c7c2a57e4b559c5620b421f6d133261c60dd2d0cdb38e6b8" +dependencies = [ + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand 0.9.5", + "sha1", + "thiserror", +] + +[[package]] +name = "twox-hash" +version = "2.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5283634e518fe9e82c7b20520bb4bc209009fd16c82077c802f8111ecbb0117a" + [[package]] name = "typenum" version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + [[package]] name = "unicode-ident" version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +[[package]] +name = "uuid" +version = "1.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ef6dac1e96601b4fb3acccccff2139741fcb757cb9a36089bf5be91cfb285ce" +dependencies = [ + "getrandom 0.4.3", + "js-sys", + "serde_core", + "wasm-bindgen", +] + [[package]] name = "vcpkg" version = "0.2.15" @@ -593,6 +1929,30 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.4+wasi-0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" +dependencies = [ + "wit-bindgen", +] + [[package]] name = "wasm-bindgen" version = "0.2.128" @@ -606,6 +1966,16 @@ dependencies = [ "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ef4c5d3d2cdf5c54f4231181768f5510842e350db025faf1f7163b1030ed928" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "wasm-bindgen-macro" version = "0.2.128" @@ -625,7 +1995,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 3.0.5", "wasm-bindgen-shared", ] @@ -638,6 +2008,128 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-encoder" +version = "0.259.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1d0246511d901aacf25d2dc9111f0054947de5e093fe662099e709ff7530dc3" +dependencies = [ + "leb128fmt", + "wasmparser 0.259.0", +] + +[[package]] +name = "wasmi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78693fcdd618e0fc34af59c6b8efa9ac5d58c68df940beff4bedddb6acfe7c27" +dependencies = [ + "spin", + "wasmi_collections", + "wasmi_core", + "wasmi_ir", + "wasmparser 0.228.0", + "wat", +] + +[[package]] +name = "wasmi_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a8be2aa467cf2d29e96ff759472c36eeb44a3c81c67fc9cb76c9a24c519c557" +dependencies = [ + "string-interner", +] + +[[package]] +name = "wasmi_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69372d5fda3ea3d1e0aa6603c7888110e0187e88ea17cd8fc2e2df0a0e1f37fa" +dependencies = [ + "libm", +] + +[[package]] +name = "wasmi_ir" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f17b774caa13c618c7244f1ee51fe23c5e7b8538a471fa46d9949779758aed6" +dependencies = [ + "wasmi_core", +] + +[[package]] +name = "wasmparser" +version = "0.228.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4abf1132c1fdf747d56bbc1bb52152400c70f336870f968b85e89ea422198ae3" +dependencies = [ + "bitflags 2.13.2", + "indexmap", +] + +[[package]] +name = "wasmparser" +version = "0.259.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f7c12eac7bb587801590f6a67ff0bc84d0748513864b71108e4b311cc3df694" +dependencies = [ + "bitflags 2.13.2", + "indexmap", +] + +[[package]] +name = "wast" +version = "259.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c69beba8d9da07af9a0971b559149a2ac4729895b55144de4fddbf5a02660648" +dependencies = [ + "bumpalo", + "leb128fmt", + "memchr", + "unicode-width", + "wasm-encoder", +] + +[[package]] +name = "wat" +version = "1.259.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6eec44b0c80391b20fb7ad9ea440c72c5d382385bdf74444bb18321c425017e" +dependencies = [ + "wast", +] + +[[package]] +name = "web-sys" +version = "0.3.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbddc4a036f00ec4f18c83445bd3115cb306a91da554919a099d9222fe4a7f8" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dcd9d09a39985f5344844e66b0c530a33843579125f23e21e9f0f220850f22a" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "winapi" version = "0.3.9" @@ -666,6 +2158,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-sys" version = "0.61.2" @@ -675,6 +2176,197 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "writeable" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc" + +[[package]] +name = "xxhash-rust" +version = "0.8.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aee1b19627c7c60102ab80d3a9cbe18de90bfe03bfa6c3715447681f0e8c8af6" + +[[package]] +name = "yoke" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d35102a9f36d089ccae9e4c6802bc118be4487b80aaffc0ab4e0cf5ce92d2873" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "146c01f5ab44258da43cf276c74a2763db2ff3969c9c652c3f2de07041d0b2bc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "zerofrom" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" + +[[package]] +name = "zerotrie" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.5", +] + +[[package]] +name = "zlib-rs" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b31d188d9d685a4f9c7b46d6e36631b07058d2cfe190267adce54dc230bf12" + [[package]] name = "zmij" version = "1.0.23" diff --git a/Cargo.toml b/Cargo.toml index c7ec1a4..c097e8b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [workspace] resolver = "2" -members = ["crates/shacraft-core", "crates/shacraft-tools"] +members = ["crates/shacraft-core", "crates/shacraft-tools", "crates/shacraft-server", "crates/shacraft-mcp", "crates/shacraft-content", "crates/shacraft-compat"] [workspace.package] version = "0.1.0" diff --git a/README.md b/README.md index c79efb4..eda4069 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,60 @@ # Shacraft Core -Самостоятельный открытый воксельный движок на Rust. Главный приоритет — низкое и предсказуемое потребление **серверной оперативной памяти**. Сервер Shacraft служит первым практическим применением; ядро не привязано к его мирам, аккаунтам и минииграм. +Самостоятельный открытый воксельный движок на Rust и работающий локальный MVP: сервер с несколькими мирами, собственный WebGL2-клиент, Spleef, отдельный MCP, каталог Java 26.2, пакеты расширений и конвертер миров. Приоритет — измеренное потребление **серверной RAM**. -Проект начинается заново локально: исходники из зависшей облачной среды не восстановлены. Сведения о ранее выполненных сборках и тестах не являются результатами этого репозитория. +## Запустить -## Текущий результат: этап 1 — хранилище - -Реализованы самостоятельная Rust-библиотека и локальный CLI: компактные секции, ограниченный кэш, сохранение, неизменяемые снимки, независимые экземпляры миров, атомарные правки, ревизии, идемпотентность, undo/reset и диагностика. Это основа движка; игровой сервер, графический клиент, MCP, каталог Minecraft и конвертер ещё предстоят. +Требуются Rust 1.96+, C-компилятор для SQLite и браузер с WebGL2. Java и Node для игры не нужны. Первый запуск скачает Cargo-зависимости и соберёт release; следующие используют готовый бинарный файл. ```bash -cd /home/emil/Desktop/shacraft-core -bash scripts/verify.sh -cargo run -p shacraft-tools -- --data data/demo demo +bash scripts/run.sh --data data --listen 127.0.0.1:4000 ``` -Для повторной демонстрации укажите новый пустой каталог. [Команды, измерение и JSON-lines API](docs/DEVELOPMENT.md). JSON-lines API предназначен для локальной проверки хранилища и не является MCP. +Открыть **http://127.0.0.1:4000**. WASD — движение, пробел — прыжок, мышь — обзор, ЛКМ/ПКМ — убрать/поставить блок, E — библиотека, T — чат, F3 — диагностика. Если браузер не даёт захват мыши, обзор работает перетаскиванием. Мир выбирается слева сверху. Для Spleef два игрока входят в одну арену и запускают матч через меню. Лобби, галерея всех типов блоков и две арены создаются автоматически. -Код доступен под MIT или Apache-2.0 на выбор. Оригинальные ресурсы Minecraft в проект не входят. +Вся работа хранится в `--data`. Для остановки используйте Ctrl+C. Подтверждённые правки сохраняются до ответа сервера; проверены аварийные остановки и восстановление. -## Контекст и порядок чтения +## Что входит -1. [Требования](docs/REQUIREMENTS.md) — что запросил пользователь. -2. [План](docs/PLAN.md) — этапы и условия перехода. -3. [Решения](docs/DECISIONS.md) — принятые решения и их границы. -4. [Интерфейсы](docs/CONTRACT.md) — рабочие контракты компонентов. -5. [Текущее состояние](docs/STATUS.md) — проверенные результаты и ближайшая работа. -6. [Память и хранение](docs/MEMORY_AND_STORAGE.md), [совместимость](docs/COMPATIBILITY.md), [приёмка](docs/ACCEPTANCE.md). +- `shacraft-core`: компактные секции 16³, общий ограниченный кэш, SQLite/WAL/FULL, неизменяемые снимки, независимые изменения миров, ревизии, идемпотентные правки, undo/reset. Без графики и сети. +- `shacraft-server`: авторитетные движение, формы столкновений и взаимодействия, WebSocket/HTTP, сохраняемые сущности и настройки, законченный цикл Spleef. +- `client/`: собственный рендерер, библиотека материалов, игроки и сущности, чат, переключение миров, переподключение, загрузка и проверка пакетов. +- `shacraft-mcp`: настоящий отдельный stdio MCP с 17 инструментами, ресурсами и prompt; строительство по плану, чтение, отмена, сущности, арены, метрики и PNG результата. +- `shacraft-content`: **1 196 блоков, 32 366 состояний, 158 типов сущностей Java 26.2**, DataVersion 4903. Официальные идентификаторы и измеренные коллизии, авторские модели. Плюс блок trampoline. +- `shacraft-compat`: Anvil и Sponge `.schem` v3 в обе стороны, типизированный NBT, сохранение оригинала, отчёты о преобразованиях и перенос правок сущностей. +- `packages/`: собственные текстуры, звук, шейдер и исполняемый WASM-модуль прыжка с ограничениями памяти и fuel. -Работа ведётся локально в `/home/emil/Desktop/shacraft-core`. Продакшен-серверы и существующие проекты лаунчера не изменяются автоматически. +Ванильные AI, redstone, инвентари и симуляция жидкостей не входят в этот MVP. Контекстные формы отмечены отдельно. Конвертер после правок использует явный `best-effort`; неизменённый оригинал может вернуть побайтно. Это не обещание полной совместимости с механиками Minecraft или модами NeoForge. Оригинальные ресурсы и код Minecraft не распространяются. + +## MCP и конвертация + +```bash +cargo build --release --locked --workspace +# В конфигурации MCP-клиента запускается этот процесс: +target/release/shacraft-mcp --server http://127.0.0.1:4000 --data data + +# Импорт в новый каталог, затем запуск сервера с --data data/imported: +target/release/shacraft-compat import-anvil /path/to/java-world data/imported +# Экспорт выполняется при остановленном сервере, в отсутствующий каталог: +target/release/shacraft-compat export-anvil data/imported artifacts/java-export --mode best-effort +``` + +Токен Control API создаётся в `data/control.token` (0600 на Unix) и не передаётся браузеру. [MCP](docs/MCP.md), [форматы и команды конвертера](docs/interop.md), [сервер и протокол](docs/SERVER.md), [расширение пакетами](docs/PACKAGES.md). + +## Проверить + +```bash +# Rust, Clippy, аварийное восстановление, JS и реальные HTTP/WebSocket-клиенты: +bash scripts/verify.sh +# Release-стенд с заранее заданными бюджетами: +cargo build --release --workspace --locked +node scripts/benchmark_server.mjs --output artifacts/server-benchmark.json +``` + +Node 22+ нужен для сетевых/JS-проверок, Python 3 — для проверки аварийного хранения. Настоящий MCP SDK и независимая Java/NBT-проверка описаны в [VERIFICATION](docs/VERIFICATION.md). Проверенные числа и ограничения находятся там; сравнение с Paper не заявляется без сопоставимого стенда. + +## Контекст + +[Требования](docs/REQUIREMENTS.md) · [исходный план](docs/PLAN.md) · [решения](docs/DECISIONS.md) · [контракты ядра](docs/CONTRACT.md) · [состояние и ограничения](docs/STATUS.md) · [контент](docs/CONTENT.md). + +Проект заново реализован локально после зависания прежней среды. План сохранён до кода отдельным коммитом. Лицензия кода и собственных ресурсов — **MIT или Apache-2.0** на выбор. Существующий лаунчер и продакшен-серверы не изменяются этой поставкой. diff --git a/client/app.js b/client/app.js new file mode 100644 index 0000000..cc9ffde --- /dev/null +++ b/client/app.js @@ -0,0 +1,1151 @@ +import { Renderer } from "./renderer.js"; +import { + clamp, + key, + direction, + normalizeBoxes, + raycast, + unitBox, +} from "./math.js"; +const $ = (id) => document.getElementById(id), + canvas = $("world-canvas"); +const state = { + ws: null, + id: null, + world: "lobby", + revision: null, + blocks: new Map(), + materials: new Map(), + registry: [], + players: new Map(), + entities: [], + entityDefs: new Map(), + position: [0, 2, 8], + target: [0, 2, 8], + yaw: 0, + pitch: -0.14, + connected: false, + manifest: null, + retry: 0, + seq: 0, + tick: 0, + ack: 0, + ping: 0, + frames: 0, + fps: 0, + hotbar: [], + slot: 0, + selection: null, + packFiles: 0, + packBytes: 0, + packCached: 0, + resync: false, + viewCenter: null, + metrics: null, + name: + localStorage.getItem("shacraft:name") || + `Игрок_${Math.floor(100 + Math.random() * 900)}`, +}; +let audioContext = null, + bounceSound = null, + bounceBuffer = null, + bounceDecode = null; +const packageStyles = new Map(); +function unlockAudio() { + try { + audioContext ??= new AudioContext(); + audioContext.resume().catch(() => {}); + if (bounceSound && !bounceDecode) + bounceDecode = audioContext + .decodeAudioData(bounceSound.slice(0)) + .then((buffer) => (bounceBuffer = buffer)) + .catch(() => {}); + } catch {} +} +function bounceFeedback() { + renderer.bounceAt = performance.now(); + if (audioContext && bounceBuffer) { + const source = audioContext.createBufferSource(), + gain = audioContext.createGain(); + source.buffer = bounceBuffer; + gain.gain.value = 0.16; + source.connect(gain).connect(audioContext.destination); + source.start(); + } +} +let pointerFallback = false; +let renderer, + wsGeneration = 0, + retryTimer, + toastTimer, + catalogTimer, + lastFrame = performance.now(), + fpsTime = lastFrame, + catalogOffset = 0, + catalogTotal = 0, + catalogQuery = "", + catalogGeneration = 0, + catalogBusy = false, + held = new Set(), + drag = null, + lastAction = 0, + lastInput = 0, + lastSelection = "", + packageCache = null; +const niceName = (s) => + (s || "") + .replace(/^minecraft:/, "") + .replace(/\[.*$/, "") + .replaceAll("_", " "); +const baseName = (s) => (s || "").replace(/\[.*$/, ""); +const bytes = (n) => + Number.isFinite(n) + ? n >= 1048576 + ? `${(n / 1048576).toFixed(1)} МиБ` + : n >= 1024 + ? `${(n / 1024).toFixed(1)} КиБ` + : `${n} Б` + : "—"; +const isUIOpen = () => + ["menu", "worlds", "library", "diagnostics"].some((id) => !$(id).hidden) || + !$("chat-form").hidden; +function toast(message, error = false, duration = 4300) { + $("toast").textContent = message; + $("toast").classList.toggle("error", error); + $("toast").hidden = false; + clearTimeout(toastTimer); + toastTimer = setTimeout(() => ($("toast").hidden = true), duration); +} +function connection(label, bad = false) { + $("connection").textContent = label; + $("connection").classList.toggle("bad", bad); +} +function chat(name, text, system = false) { + const row = document.createElement("div"); + row.textContent = name ? `${name}: ${text}` : text; + if (system) row.className = "system"; + $("chat-log").append(row); + while ($("chat-log").children.length > 6) $("chat-log").firstChild.remove(); +} +function send(message) { + if (state.ws?.readyState === WebSocket.OPEN) { + state.ws.send(JSON.stringify(message)); + return true; + } + return false; +} +function controlsZero() { + held.clear(); + if (state.connected) + send({ + type: "input", + seq: ++state.seq, + yaw: state.yaw, + pitch: state.pitch, + forward: 0, + strafe: 0, + jump: false, + }); +} +function closePanels() { + for (const id of ["menu", "worlds", "library", "diagnostics"]) + $(id).hidden = true; +} +function panel(id) { + const wasOpen = !$(id).hidden; + closePanels(); + document.exitPointerLock?.(); + controlsZero(); + $(id).hidden = wasOpen; + if (!wasOpen && id === "library") { + loadCatalog(true); + $("catalog-search").focus(); + } + if (!wasOpen && id === "worlds") loadWorlds(); + if (!wasOpen && id === "diagnostics") fetchMetrics(); +} +function release() { + document.exitPointerLock?.(); + controlsZero(); +} +function acquire() { + unlockAudio(); + closePanels(); + $("chat-form").hidden = true; + if (!state.connected) { + toast("Соединение с сервером ещё не установлено."); + return; + } + try { + const p = canvas.requestPointerLock?.(); + p?.catch?.(() => { + pointerFallback = true; + toast( + "Захват мыши недоступен: перетаскивайте для обзора, щёлкните для правки.", + ); + }); + } catch { + pointerFallback = true; + toast("Для обзора удерживайте кнопку мыши и двигайте курсор."); + } + canvas.focus(); +} +function addMaterials(items = []) { + let changed = false; + for (const item of items) { + if (!item || !Number.isInteger(item.id)) continue; + const prev = state.materials.get(item.id), + mat = { ...prev, ...item }; + mat.state = mat.state || state.registry[mat.id] || "unknown"; + mat.color = mat.color || [150, 152, 142]; + mat.render = normalizeBoxes( + mat.render || + mat.render_boxes || + mat.boxes || + (mat.id === 0 ? [] : [unitBox]), + ); + mat.collision = normalizeBoxes( + mat.collision || mat.boxes || (mat.solid === false ? [] : [unitBox]), + ); + mat.transparent = + mat.opacity < 1 || /glass|water|leaves|ice/.test(mat.state); + const style = + packageStyles.get(mat.state) || packageStyles.get(baseName(mat.state)); + if (style?.color) mat.color = style.color; + mat.effect = style?.effect; + state.materials.set(mat.id, mat); + if (!prev) changed = true; + } + return changed; +} +function snapshot(m) { + state.id = m.id ?? state.id; + state.world = m.world || state.world; + state.registry = m.registry || state.registry; + addMaterials(m.materials); + state.blocks = new Map(); + for (const b of m.blocks || []) + if (b.block) state.blocks.set(key(b.pos), b.block); + state.revision = m.revision; + state.resync = false; + state.viewCenter = + m.view_center || m.spawn?.map((v) => Math.floor(v / 16) * 16) || null; + if (m.spawn) { + state.position = [...m.spawn]; + state.target = [...m.spawn]; + } + if (m.players) updatePlayers(m.players, true); + if (m.entities) state.entities = m.entities; + renderer.replace(state.blocks, state.materials); + $("world-button").textContent = `${state.world} ▾`; + document.title = `Shacraft · ${state.world}`; + if (m.type === "welcome") { + state.connected = true; + state.retry = 0; + connection("В сети"); + chat("", `Вы вошли в ${state.world}`, true); + } + seedHotbar(); + loadMissingMaterials(); + updateDiagnostics(); +} +function updatePlayers(players, instant = false) { + const present = new Set(); + for (const p of players) { + present.add(p.id); + if (p.id === state.id) { + if (p.position) { + const under = [ + Math.floor(state.target[0]), + Math.floor(state.target[1] - 0.1), + Math.floor(state.target[2]), + ], + underMat = state.materials.get(state.blocks.get(key(under))); + if ( + !instant && + p.position[1] - state.target[1] > 0.38 && + underMat?.effect === "bounce" + ) + bounceFeedback(); + state.target = p.position; + if ( + instant || + Math.hypot(...p.position.map((v, i) => v - state.position[i])) > 4 + ) + state.position = [...p.position]; + } + continue; + } + const old = state.players.get(p.id); + state.players.set(p.id, { + ...p, + position: old && !instant ? old.position : [...p.position], + target: [...p.position], + }); + } + for (const id of state.players.keys()) + if (!present.has(id)) state.players.delete(id); +} +function inView(pos) { + const center = state.viewCenter; + return ( + !center || + pos.every( + (v, i) => v >= center[i] - (i === 1 ? 8 : 32) && v <= center[i] + 31, + ) + ); +} +function blockUpdate(m) { + if (state.revision === null || state.resync) return; + if (m.revision <= state.revision) return; + if (m.revision !== state.revision + 1) { + state.resync = true; + send({ type: "resync" }); + toast("Сверяем изменения с сервером…"); + return; + } + const changes = (m.changes || []).filter((change) => inView(change.pos)); + const needed = new Set(changes.map((change) => change.block)); + addMaterials((m.materials || []).filter((mat) => needed.has(mat.id))); + for (const change of changes) { + if (change.block) state.blocks.set(key(change.pos), change.block); + else state.blocks.delete(key(change.pos)); + } + state.revision = m.revision; + renderer.change(changes); + loadMissingMaterials(); +} +function onMessage(m) { + switch (m.type) { + case "welcome": + case "snapshot": + snapshot(m); + break; + case "state": + state.tick = m.tick ?? state.tick; + state.ack = m.ack ?? state.ack; + if (m.players) updatePlayers(m.players); + if (m.entities) state.entities = m.entities; + if (m.match) showMatch(m.match); + break; + case "blocks": + blockUpdate(m); + break; + case "chat": + chat(m.name, m.text); + break; + case "error": + toast(m.message || m.error || "Сервер отклонил действие", true); + if (/revision|resync/i.test(m.message || "")) send({ type: "resync" }); + if (state.resync && /snapshot rate limited/i.test(m.message || "")) { + const generation = wsGeneration; + setTimeout(() => { + if (generation === wsGeneration && state.connected && state.resync) + send({ type: "resync" }); + }, 600); + } + break; + case "pong": + state.ping = Math.max( + 0, + Math.round( + performance.now() - Number(m.client_time ?? m.time ?? m.timestamp), + ), + ); + break; + case "entities": + state.entities = m.entities || []; + break; + case "match": + showMatch(m.match || m); + break; + case "notice": + toast(m.message); + break; + } +} +async function getJSON(url) { + const response = await fetch(url, { cache: "no-store" }); + if (!response.ok) + throw Error(`${url.split("?")[0]}: HTTP ${response.status}`); + return response.json(); +} +async function verifyPackages(manifest, generation) { + if (!crypto.subtle) + throw Error( + "Для проверки пакетов нужен безопасный контекст (localhost или HTTPS).", + ); + state.packFiles = 0; + state.packBytes = 0; + state.packCached = 0; + packageStyles.clear(); + try { + packageCache = await caches.open("shacraft-packages-v1"); + } catch { + packageCache = null; + } + let total = 0; + for (const pack of manifest.packages || []) { + const resources = pack.files || pack.resources || []; + const verifiedFiles = new Map(); + for (const file of resources) { + if (generation !== wsGeneration) return; + const hash = (file.sha256 || file.hash || "").toLowerCase(); + if (!/^[a-f0-9]{64}$/.test(hash)) + throw Error(`Некорректный SHA-256: ${pack.id}/${file.path}`); + const url = new URL( + file.url || `/packages/${pack.id}/${pack.version}/${file.path}`, + location.origin, + ); + if (url.origin !== location.origin) + throw Error("Пакеты должны загружаться с игрового сервера."); + const size = file.size ?? file.bytes; + if ( + size !== undefined && + (!Number.isSafeInteger(size) || size < 0 || size > 64 * 1024 * 1024) + ) + throw Error("Превышен лимит размера ресурса."); + const cacheURL = new URL(`/__shacraft_cache__/${hash}`, location.origin) + .href; + let response = await packageCache?.match(cacheURL); + const cached = !!response; + if (!response) { + response = await fetch(url); + if (!response.ok) + throw Error( + `Не удалось загрузить пакет: ${pack.id}/${file.path} (${response.status})`, + ); + } + const blob = await response.blob(); + total += blob.size; + if (blob.size > 64 * 1024 * 1024 || total > 128 * 1024 * 1024) + throw Error("Превышен лимит памяти для пакетов."); + if (size !== undefined && blob.size !== size) + throw Error(`Размер ресурса не совпадает: ${pack.id}/${file.path}`); + const digest = Array.from( + new Uint8Array( + await crypto.subtle.digest("SHA-256", await blob.arrayBuffer()), + ), + ) + .map((n) => n.toString(16).padStart(2, "0")) + .join(""); + if (digest !== hash) { + await packageCache?.delete(cacheURL); + throw Error(`Хеш ресурса не совпадает: ${pack.id}/${file.path}`); + } + if (!cached && packageCache) + try { + await packageCache.put(cacheURL, new Response(blob)); + } catch { + /* Quota failures do not weaken integrity verification. */ + } + state.packFiles++; + state.packBytes += blob.size; + state.packCached += cached ? 1 : 0; + verifiedFiles.set(file.path, blob); + $("package-status").textContent = + `${state.packFiles} файлов проверено · ${bytes(state.packBytes)} · из кэша ${state.packCached}`; + connection(`Пакеты ${state.packFiles}`); + } + // Resolve declared references only after every resource passed integrity checks. + // The supported client hook is declarative `effect: bounce`, with no package JS. + for (const file of resources.filter( + (f) => f.role === "client-style" || f.path?.endsWith("style.json"), + )) { + const style = JSON.parse(await verifiedFiles.get(file.path).text()); + if (style.schema !== 1) + throw Error(`Неизвестная схема стиля пакета ${pack.id}`); + if (typeof style.block === "string") + packageStyles.set(style.block, style); + const texture = verifiedFiles.get(style.texture); + if (texture) + await renderer.setTexture(texture, style.effect === "bounce"); + if (style.effect === "bounce") { + const shader = verifiedFiles.get(style.shader); + if (shader) renderer.setBounceShader(await shader.text()); + const sound = verifiedFiles.get(style.sound); + if (sound) { + bounceSound = await sound.arrayBuffer(); + bounceBuffer = null; + bounceDecode = null; + if (audioContext) unlockAudio(); + } + } + } + } + if (!state.packFiles) + $("package-status").textContent = + "Сервер не требует дополнительных файлов."; + if (packageCache) { + const keys = await packageCache.keys(); + if (keys.length > 512) + await Promise.all( + keys.slice(0, keys.length - 512).map((k) => packageCache.delete(k)), + ); + } +} +async function connect() { + const generation = ++wsGeneration; + clearTimeout(retryTimer); + const old = state.ws; + state.ws = null; + old?.close(); + state.connected = false; + state.id = null; + state.players.clear(); + state.seq = 0; + connection("Подключение"); + controlsZero(); + try { + const manifest = await getJSON("/api/manifest"); + if (manifest.protocol !== 1) + throw Error(`Неподдерживаемый протокол ${manifest.protocol}`); + state.manifest = manifest; + await verifyPackages(manifest, generation); + if (generation !== wsGeneration) return; + const ws = new WebSocket( + `${location.protocol === "https:" ? "wss:" : "ws:"}//${location.host}/ws`, + ); + state.ws = ws; + ws.addEventListener("open", () => { + if (generation !== wsGeneration) return; + connection("Вход в мир"); + send({ + type: "join", + protocol: 1, + name: state.name, + world: state.world, + manifest_hash: manifest.hash, + }); + }); + ws.addEventListener("message", (event) => { + if (generation !== wsGeneration) return; + try { + onMessage(JSON.parse(event.data)); + } catch (error) { + console.error("Shacraft protocol error", error); + toast(`Ошибка данных сервера: ${error.message}`, true); + } + }); + ws.addEventListener("close", (event) => { + if (generation !== wsGeneration) return; + state.connected = false; + controlsZero(); + scheduleReconnect(event.reason || "Соединение потеряно"); + }); + ws.addEventListener("error", () => connection("Ошибка соединения", true)); + await Promise.allSettled([loadWorlds(), loadEntities()]); + } catch (error) { + if (generation !== wsGeneration) return; + console.error(error); + scheduleReconnect(error.message); + } +} +function scheduleReconnect(reason) { + state.connected = false; + const seconds = Math.min(20, 2 ** state.retry++); + connection(`Повтор через ${seconds} с`, true); + toast( + `${reason}. Повторное подключение через ${seconds} с.`, + true, + Math.min(seconds * 1000, 6000), + ); + clearTimeout(retryTimer); + retryTimer = setTimeout(connect, seconds * 1000); +} +async function loadEntities() { + try { + const result = await getJSON("/api/entities"); + for (const e of result.items || result.entities || result) + state.entityDefs.set(e.name || e.kind, { + ...e, + render: normalizeBoxes(e.render), + }); + } catch (error) { + console.warn("Entity catalog", error); + } +} +async function loadWorlds() { + try { + const data = await getJSON("/api/worlds"), + worlds = data.worlds || data; + $("world-list").replaceChildren(); + for (const world of worlds) { + const b = document.createElement("button"); + b.className = + "world-row" + (world.name === state.world ? " current" : ""); + const title = document.createElement("strong"); + title.textContent = world.name; + const subtitle = document.createElement("small"); + subtitle.textContent = `Ревизия ${world.revision}${world.template ? ` · экземпляр ${world.template}` : ""}`; + b.append(title, subtitle); + b.onclick = () => { + if (!state.connected) { + toast("Дождитесь подключения к серверу."); + return; + } + send({ type: "switch_world", world: world.name }); + closePanels(); + controlsZero(); + }; + $("world-list").append(b); + } + } catch (error) { + $("world-list").textContent = error.message; + } +} +let missingPending = false; +async function loadMissingMaterials() { + if (missingPending) return; + missingPending = true; + try { + while (state.connected) { + const missing = [...new Set(state.blocks.values())] + .filter((id) => !state.materials.has(id)) + .slice(0, 128); + if (!missing.length) break; + const data = await getJSON( + `/api/catalog?ids=${missing.join(",")}&limit=128`, + ); + const items = data.items || data; + if (!addMaterials(items)) break; + const loaded = new Set(items.map((material) => material.id)); + renderer.change( + [...state.blocks] + .filter(([, id]) => loaded.has(id)) + .map(([position, block]) => ({ + pos: position.split(",").map(Number), + block, + })), + ); + await new Promise((resolve) => setTimeout(resolve, 0)); + } + seedHotbar(); + } catch (error) { + console.warn("Material catalog", error); + } finally { + missingPending = false; + } +} +async function seedHotbar() { + if (state.hotbar.length) return; + const states = [ + "minecraft:grass_block", + "minecraft:stone", + "minecraft:oak_planks", + "minecraft:bricks", + "minecraft:glass", + "minecraft:oak_log", + "minecraft:oak_leaves", + "minecraft:snow_block", + "shacraft:trampoline", + ]; + let found = states.map((s) => + [...state.materials.values()].find((m) => baseName(m.state) === s), + ); + if (found.filter(Boolean).length < 5) { + try { + const result = await getJSON( + "/api/catalog?states=" + encodeURIComponent(states.join(",")), + ); + addMaterials(result.items || result); + found = states.map((s) => + [...state.materials.values()].find((m) => baseName(m.state) === s), + ); + } catch {} + } + const fallback = [...state.materials.values()].filter((m) => m.id !== 0); + state.hotbar = found.map( + (m, i) => m?.id ?? fallback[i % Math.max(1, fallback.length)]?.id ?? 0, + ); + renderHotbar(); +} +function swatch(mat) { + const s = document.createElement("span"); + s.className = "swatch"; + s.style.setProperty( + "--block-color", + `rgb(${(mat?.color || [150, 152, 142]).join(",")})`, + ); + s.setAttribute("aria-hidden", "true"); + return s; +} +function renderHotbar() { + $("hotbar").replaceChildren(); + for (let i = 0; i < 9; i++) { + const mat = state.materials.get(state.hotbar[i]); + const b = document.createElement("button"); + b.className = `slot${i === state.slot ? " active" : ""}`; + b.title = `${i + 1}: ${mat?.state || "Пусто"}`; + b.setAttribute("aria-label", b.title); + b.setAttribute("aria-pressed", i === state.slot ? "true" : "false"); + const n = document.createElement("small"); + n.textContent = String(i + 1); + b.append(n, swatch(mat)); + b.onclick = () => { + state.slot = i; + renderHotbar(); + }; + $("hotbar").append(b); + } + $("selected-name").textContent = + niceName(state.materials.get(state.hotbar[state.slot])?.state) || + "Выберите блок в библиотеке"; +} +async function loadCatalog(reset = false) { + if (reset) { + catalogGeneration++; + catalogOffset = 0; + catalogQuery = $("catalog-search").value.trim(); + $("catalog-list").replaceChildren(); + catalogBusy = false; + } + if (catalogBusy) return; + catalogBusy = true; + const generation = catalogGeneration; + $("catalog-more").disabled = true; + try { + const data = await getJSON( + `/api/catalog?query=${encodeURIComponent(catalogQuery)}&offset=${catalogOffset}&limit=60`, + ); + if (generation !== catalogGeneration) return; + const items = data.items || data; + catalogTotal = data.total ?? items.length; + addMaterials(items); + catalogOffset += items.length; + $("catalog-count").textContent = + `${catalogTotal.toLocaleString("ru-RU")} состояний · Minecraft Java 26.2`; + for (const mat of items) { + const button = document.createElement("button"); + button.className = "catalog-item"; + button.title = mat.state; + const label = document.createElement("span"); + label.textContent = niceName(mat.state); + const properties = document.createElement("small"); + properties.textContent = + mat.state.match(/\[(.*)\]/)?.[1] || baseName(mat.state).split(":")[0]; + label.append(properties); + button.append(swatch(mat), label); + button.onclick = () => { + state.hotbar[state.slot] = mat.id; + renderHotbar(); + closePanels(); + toast(`${niceName(mat.state)} · ячейка ${state.slot + 1}`, false, 1800); + }; + $("catalog-list").append(button); + } + if (!catalogOffset) { + const empty = document.createElement("p"); + empty.className = "catalog-empty"; + empty.textContent = + "Ничего не найдено. Используйте английское имя блока."; + $("catalog-list").append(empty); + } + $("catalog-more").hidden = catalogOffset >= catalogTotal; + } catch (error) { + if (generation === catalogGeneration) { + toast(error.message, true); + $("catalog-count").textContent = "Не удалось загрузить каталог"; + } + } finally { + if (generation === catalogGeneration) { + catalogBusy = false; + $("catalog-more").disabled = false; + } + } +} +function showMatch(m) { + if (!m || m.phase === "idle" || (m.phase === "waiting" && !m.remaining)) { + $("match").hidden = true; + return; + } + $("match").hidden = false; + const phases = { + countdown: "До начала", + active: "Spleef", + running: "Spleef", + finished: "Матч завершён", + waiting: "Ожидаем игроков", + }; + const winner = m.winner ? ` · Победитель: ${m.winner}` : ""; + $("match").textContent = + `${phases[m.phase] || m.phase}${m.remaining !== undefined ? ` · ${Math.ceil(m.remaining)} с` : ""}${winner}`; +} +function action(kind) { + if (!state.connected || isUIOpen()) return; + const hit = state.selection; + if (!hit) return; + const now = performance.now(); + if (now - lastAction < 130) return; + lastAction = now; + send({ + type: "input", + seq: ++state.seq, + yaw: state.yaw, + pitch: state.pitch, + forward: (held.has("KeyW") ? 1 : 0) - (held.has("KeyS") ? 1 : 0), + strafe: (held.has("KeyD") ? 1 : 0) - (held.has("KeyA") ? 1 : 0), + jump: held.has("Space"), + }); + if (kind === "break") send({ type: "break", pos: hit.pos }); + else if (kind === "place") { + const mat = state.materials.get(state.hotbar[state.slot]); + if (!mat?.id) return; + send({ + type: "place", + pos: hit.pos.map((v, i) => v + hit.normal[i]), + block: mat.id, + state: mat.state, + }); + } else if (kind === "pick") { + state.hotbar[state.slot] = hit.block; + renderHotbar(); + } +} +function openChat() { + release(); + closePanels(); + $("chat-form").hidden = false; + $("chat-input").focus(); +} +$("library-button").onclick = () => panel("library"); +$("diagnostics-button").onclick = () => panel("diagnostics"); +$("menu-button").onclick = () => panel("menu"); +$("world-button").onclick = () => panel("worlds"); +for (const b of document.querySelectorAll("[data-close]")) + b.onclick = () => ($(b.dataset.close).hidden = true); +$("resume-button").onclick = acquire; +$("player-name").value = state.name; +$("rename-button").onclick = () => { + const name = $("player-name").value.trim(); + if (!name) return; + state.name = name; + localStorage.setItem("shacraft:name", name); + closePanels(); + connect(); +}; +$("reconnect-button").onclick = () => { + closePanels(); + connect(); +}; +$("resync-button").onclick = () => { + if (send({ type: "resync" })) toast("Запрошен актуальный снимок мира."); +}; +$("respawn-button").onclick = () => { + send({ type: "respawn" }); + closePanels(); +}; +$("spleef-button").onclick = () => { + send({ type: "start_match" }); + closePanels(); +}; +$("catalog-search").oninput = () => { + clearTimeout(catalogTimer); + catalogTimer = setTimeout(() => loadCatalog(true), 220); +}; +$("catalog-more").onclick = () => loadCatalog(); +$("chat-form").onsubmit = (e) => { + e.preventDefault(); + const text = $("chat-input").value.trim(); + if (text && state.connected) send({ type: "chat", text }); + $("chat-input").value = ""; + $("chat-form").hidden = true; + canvas.focus(); +}; +window.addEventListener("keydown", (e) => { + const editing = /INPUT|TEXTAREA/.test(document.activeElement?.tagName); + if (e.code === "Escape") { + if (!$("chat-form").hidden) { + $("chat-form").hidden = true; + $("chat-input").blur(); + return; + } + if (isUIOpen()) closePanels(); + else if (document.pointerLockElement !== canvas) panel("menu"); + controlsZero(); + return; + } + if (editing) return; + if ( + [ + "Space", + "KeyW", + "KeyA", + "KeyS", + "KeyD", + "ArrowUp", + "ArrowDown", + "ArrowLeft", + "ArrowRight", + "Tab", + "F3", + ].includes(e.code) + ) + e.preventDefault(); + if (e.repeat) return; + if (e.code === "KeyE") { + panel("library"); + return; + } + if (e.code === "F3") { + panel("diagnostics"); + return; + } + if (e.code === "KeyT" || e.code === "Enter") { + openChat(); + return; + } + if (/^Digit[1-9]$/.test(e.code)) { + state.slot = Number(e.code.slice(-1)) - 1; + renderHotbar(); + return; + } + if (!isUIOpen()) held.add(e.code); +}); +window.addEventListener("keyup", (e) => held.delete(e.code)); +window.addEventListener("blur", () => { + drag = null; + controlsZero(); +}); +document.addEventListener("visibilitychange", () => { + if (document.hidden) controlsZero(); +}); +document.addEventListener("pointerlockchange", () => { + const locked = document.pointerLockElement === canvas; + document.body.classList.toggle("locked", locked); + if (!locked) controlsZero(); +}); +function look(dx, dy) { + const sensitivity = Number($("sensitivity").value); + state.yaw += clamp(dx, -160, 160) * sensitivity; + state.pitch = clamp( + state.pitch - clamp(dy, -160, 160) * sensitivity, + -1.48, + 1.48, + ); +} +document.addEventListener("mousemove", (e) => { + if (document.pointerLockElement === canvas) look(e.movementX, e.movementY); +}); +canvas.addEventListener("contextmenu", (e) => e.preventDefault()); +canvas.addEventListener("pointerdown", (e) => { + unlockAudio(); + if (isUIOpen()) { + closePanels(); + return; + } + if (document.pointerLockElement === canvas) { + action(e.button === 2 ? "place" : e.button === 1 ? "pick" : "break"); + return; + } + drag = { + x: e.clientX, + y: e.clientY, + startX: e.clientX, + startY: e.clientY, + button: e.button, + moved: false, + }; + canvas.setPointerCapture(e.pointerId); +}); +canvas.addEventListener("pointermove", (e) => { + if (!drag || document.pointerLockElement === canvas) return; + const dx = e.clientX - drag.x, + dy = e.clientY - drag.y; + if (Math.hypot(e.clientX - drag.startX, e.clientY - drag.startY) > 3) + drag.moved = true; + if (drag.moved) { + pointerFallback = true; + look(dx, dy); + } + drag.x = e.clientX; + drag.y = e.clientY; +}); +canvas.addEventListener("pointerup", (e) => { + if (!drag) return; + const d = drag; + drag = null; + if (!d.moved) { + if (d.button === 2) action("place"); + else if (d.button === 1) action("pick"); + else if (pointerFallback) action("break"); + else acquire(); + } +}); +canvas.addEventListener("pointercancel", () => (drag = null)); +canvas.addEventListener( + "wheel", + (e) => { + e.preventDefault(); + state.slot = (state.slot + (e.deltaY > 0 ? 1 : 8)) % 9; + renderHotbar(); + }, + { passive: false }, +); +async function fetchMetrics() { + try { + state.metrics = await getJSON("/api/metrics"); + } catch {} + updateDiagnostics(); +} +function updateDiagnostics() { + const m = state.metrics || {}, + storage = m.storage || m.store || m, + mem = m.memory || {}, + rss = m.rss_bytes ?? m.process_rss_bytes ?? mem.rss_bytes; + const rows = [ + ["Соединение", state.connected ? "В сети" : "Нет соединения"], + ["Мир", state.world], + ["Ревизия", state.revision ?? "—"], + ["Видимые блоки", state.blocks.size.toLocaleString("ru-RU")], + ["Сущности", String(state.entities.length)], + ["Игроки", String(state.players.size + (state.id ? 1 : 0))], + ["WebGL", renderer?.lost ? "Контекст потерян" : "WebGL2"], + ["Кадры / с", String(state.fps)], + ["Треугольники", renderer?.triangles.toLocaleString("ru-RU") || "0"], + ["Ожидают построения", String(renderer?.dirty.size || 0)], + ["Тик сервера", String(state.tick)], + ["Подтверждён ввод", String(state.ack)], + ["Ping", state.ping ? `${state.ping} мс` : "—"], + ["Координаты", state.position.map((n) => n.toFixed(1)).join(", ")], + ["RAM процесса", bytes(rss)], + [ + "Данные кэша", + bytes(storage.cache_payload_bytes ?? storage.cache?.payload_bytes), + ], + ["Пакеты", `${state.packFiles} файлов`], + ]; + $("debug-values").replaceChildren(); + for (const [label, value] of rows) { + const dt = document.createElement("dt"); + dt.textContent = label; + const dd = document.createElement("dd"); + dd.textContent = value; + dd.dataset.metric = label; + $("debug-values").append(dt, dd); + } + canvas.dataset.world = state.world; + canvas.dataset.revision = String(state.revision ?? ""); + canvas.dataset.blocks = String(state.blocks.size); + canvas.dataset.entities = String(state.entities.length); + canvas.dataset.webgl = renderer?.lost ? "lost" : "ready"; + canvas.dataset.connected = String(state.connected); +} +const playerLabels = new Map(); +function updateLabels() { + for (const [id, label] of playerLabels) + if (!state.players.has(id)) { + label.remove(); + playerLabels.delete(id); + } + for (const [id, p] of state.players) { + let label = playerLabels.get(id); + if (!label) { + label = document.createElement("div"); + label.className = "player-label"; + $("labels").append(label); + playerLabels.set(id, label); + } + label.textContent = p.name; + const at = renderer.project([ + p.position[0], + p.position[1] + 1.95, + p.position[2], + ]); + label.hidden = + !at || + at[0] < 0 || + at[0] > canvas.clientWidth || + at[1] < 0 || + at[1] > canvas.clientHeight; + if (at) { + label.style.left = `${at[0]}px`; + label.style.top = `${at[1]}px`; + } + } +} +function frame(time) { + const dt = Math.min(0.05, (time - lastFrame) / 1000); + lastFrame = time; + state.frames++; + const blend = 1 - Math.exp(-dt * 19); + for (let i = 0; i < 3; i++) + state.position[i] += (state.target[i] - state.position[i]) * blend; + for (const p of state.players.values()) + for (let i = 0; i < 3; i++) + p.position[i] += (p.target[i] - p.position[i]) * blend; + const camera = { + eye: [state.position[0], state.position[1] + 1.62, state.position[2]], + yaw: state.yaw, + pitch: state.pitch, + }; + state.selection = raycast( + camera.eye, + direction(state.yaw, state.pitch), + state.blocks, + state.materials, + 6, + ); + const selectionKey = state.selection + ? `${key(state.selection.pos)}:${state.selection.block}` + : ""; + if (selectionKey !== lastSelection) { + lastSelection = selectionKey; + renderer.updateSelection(state.selection); + $("target-label").textContent = state.selection + ? niceName( + state.materials.get(state.selection.block)?.state || + state.registry[state.selection.block], + ) + : ""; + } + renderer.draw( + camera, + [...state.players.values()], + state.entities, + state.entityDefs, + ); + updateLabels(); + if (state.connected && time - lastInput >= 50) { + lastInput = time; + let forward = isUIOpen() + ? 0 + : (held.has("KeyW") || held.has("ArrowUp") ? 1 : 0) - + (held.has("KeyS") || held.has("ArrowDown") ? 1 : 0), + strafe = isUIOpen() + ? 0 + : (held.has("KeyD") || held.has("ArrowRight") ? 1 : 0) - + (held.has("KeyA") || held.has("ArrowLeft") ? 1 : 0); + send({ + type: "input", + seq: ++state.seq, + yaw: state.yaw, + pitch: state.pitch, + forward, + strafe, + jump: !isUIOpen() && held.has("Space"), + }); + } + if (time - fpsTime > 1000) { + state.fps = Math.round((state.frames * 1000) / (time - fpsTime)); + state.frames = 0; + fpsTime = time; + updateDiagnostics(); + } + requestAnimationFrame(frame); +} +try { + renderer = new Renderer(canvas); + renderHotbar(); + connect(); + requestAnimationFrame(frame); + setInterval(() => { + if (state.connected) send({ type: "ping", client_time: performance.now() }); + if (!$("diagnostics").hidden) fetchMetrics(); + }, 3000); +} catch (error) { + console.error(error); + $("fatal").textContent = error.message; + $("fatal").hidden = false; + connection("Ошибка графики", true); +} diff --git a/client/index.html b/client/index.html new file mode 100644 index 0000000..e4c39a9 --- /dev/null +++ b/client/index.html @@ -0,0 +1,165 @@ + + + + + + + Shacraft · Мир + + + + + + +
+
+ +
+ Shacraft +
+ Загрузка +
+ +
+ +
+ + +
+
+ +
+ W A S D движениеПробел прыжокЛКМ / ПКМ убрать / поставитьT чат +
+
+ + + + + + + + + diff --git a/client/math.js b/client/math.js new file mode 100644 index 0000000..26045c8 --- /dev/null +++ b/client/math.js @@ -0,0 +1,172 @@ +export const clamp = (v, a, b) => Math.max(a, Math.min(b, v)); +export const key = (p) => `${p[0]},${p[1]},${p[2]}`; +export const direction = (yaw, pitch) => [ + Math.sin(yaw) * Math.cos(pitch), + Math.sin(pitch), + -Math.cos(yaw) * Math.cos(pitch), +]; +export function multiply(a, b) { + const o = new Float32Array(16); + for (let c = 0; c < 4; c++) + for (let r = 0; r < 4; r++) + for (let k = 0; k < 4; k++) o[c * 4 + r] += a[k * 4 + r] * b[c * 4 + k]; + return o; +} +export function perspective(fovy, aspect, near, far) { + const f = 1 / Math.tan(fovy / 2), + nf = 1 / (near - far); + return new Float32Array([ + f / aspect, + 0, + 0, + 0, + 0, + f, + 0, + 0, + 0, + 0, + (far + near) * nf, + -1, + 0, + 0, + 2 * far * near * nf, + 0, + ]); +} +export function viewMatrix(eye, yaw, pitch) { + const d = direction(yaw, pitch), + z = d.map((v) => -v), + x = [Math.cos(yaw), 0, Math.sin(yaw)], + y = [ + -Math.sin(yaw) * Math.sin(pitch), + Math.cos(pitch), + Math.cos(yaw) * Math.sin(pitch), + ]; + return new Float32Array([ + x[0], + y[0], + z[0], + 0, + x[1], + y[1], + z[1], + 0, + x[2], + y[2], + z[2], + 0, + -dot(x, eye), + -dot(y, eye), + -dot(z, eye), + 1, + ]); +} +export function dot(a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; +} +export function project(p, m, w, h) { + const x = m[0] * p[0] + m[4] * p[1] + m[8] * p[2] + m[12], + y = m[1] * p[0] + m[5] * p[1] + m[9] * p[2] + m[13], + z = m[2] * p[0] + m[6] * p[1] + m[10] * p[2] + m[14], + q = m[3] * p[0] + m[7] * p[1] + m[11] * p[2] + m[15]; + return q > 0 && z / q < 1 + ? [((x / q + 1) * w) / 2, ((1 - y / q) * h) / 2] + : null; +} +export const unitBox = { min: [0, 0, 0], max: [1, 1, 1] }; +export function normalizeBoxes(boxes) { + return (boxes || []) + .map((b) => + Array.isArray(b) ? { min: b.slice(0, 3), max: b.slice(3, 6) } : b, + ) + .filter((b) => b.min?.length === 3 && b.max?.length === 3); +} +export function rayBox(origin, dir, min, max, reach) { + let tmin = -Infinity, + tmax = Infinity, + normal = [0, 0, 0]; + for (let i = 0; i < 3; i++) { + if (Math.abs(dir[i]) < 1e-9) { + if (origin[i] < min[i] || origin[i] > max[i]) return null; + continue; + } + let a = (min[i] - origin[i]) / dir[i], + b = (max[i] - origin[i]) / dir[i], + sign = -Math.sign(dir[i]); + if (a > b) [a, b] = [b, a]; + if (a > tmin) { + tmin = a; + normal = [0, 0, 0]; + normal[i] = sign; + } + tmax = Math.min(tmax, b); + if (tmin > tmax) return null; + } + if (tmax < 0 || tmin > reach) return null; + return { distance: Math.max(0, tmin), normal }; +} +// A bounded DDA finds candidate cells; exact material boxes determine selection and face. +export function raycast(origin, dir, blocks, materials, reach = 6) { + const cell = origin.map(Math.floor), + step = dir.map(Math.sign); + const delta = dir.map((v) => (v === 0 ? Infinity : Math.abs(1 / v))); + const next = dir.map((v, i) => + v === 0 ? Infinity : ((v > 0 ? cell[i] + 1 : cell[i]) - origin[i]) / v, + ); + const visited = new Set(); + let best = null; + for (let n = 0; n < 128; n++) { + // Official shapes can extend outside their owning cell (e.g. a fence is 1.5 high). + // Inspect neighboring owners once, but intersect their exact boxes in world space. + for (let x = -3; x <= 3; x++) + for (let y = -3; y <= 3; y++) + for (let z = -3; z <= 3; z++) { + const owner = [cell[0] + x, cell[1] + y, cell[2] + z], + idKey = key(owner); + if (visited.has(idKey)) continue; + visited.add(idKey); + const id = blocks.get(idKey); + if (!id) continue; + const mat = materials.get(id), + boxes = mat ? mat.render : [unitBox]; + for (const box of boxes || [unitBox]) { + const hit = rayBox( + origin, + dir, + box.min.map((v, i) => v + owner[i]), + box.max.map((v, i) => v + owner[i]), + reach, + ); + if (hit && (!best || hit.distance < best.distance)) + best = { ...hit, pos: owner, block: id }; + } + } + const axis = + next[0] < next[1] + ? next[0] < next[2] + ? 0 + : 2 + : next[1] < next[2] + ? 1 + : 2; + if ( + next[axis] > reach || + !Number.isFinite(next[axis]) || + (best && next[axis] > best.distance) + ) + break; + cell[axis] += step[axis]; + next[axis] += delta[axis]; + } + return best; +} +export function isFullCube(mat) { + const b = mat?.render; + return ( + b?.length === 1 && + b[0].min.every((v) => v === 0) && + b[0].max.every((v) => v === 1) && + !mat.transparent + ); +} diff --git a/client/package.json b/client/package.json new file mode 100644 index 0000000..6b49651 --- /dev/null +++ b/client/package.json @@ -0,0 +1 @@ +{"name":"shacraft-client","version":"0.1.0","private":true,"type":"module","scripts":{"test":"node --test tests/*.test.js"}} diff --git a/client/renderer.js b/client/renderer.js new file mode 100644 index 0000000..f8b22a0 --- /dev/null +++ b/client/renderer.js @@ -0,0 +1,569 @@ +import { + multiply, + perspective, + viewMatrix, + key, + isFullCube, + unitBox, + project, +} from "./math.js"; +const vertex = `#version 300 es +precision highp float;layout(location=0) in vec3 aPos;layout(location=1) in vec3 aColor;layout(location=2) in vec3 aNormal;layout(location=3) in float aMaterial;layout(location=4) in float aOpacity;uniform mat4 uVP;out vec3 vPos;out vec3 vColor;out vec3 vNormal;flat out float vMaterial;out float vOpacity;void main(){vOpacity=aOpacity;vPos=aPos;vColor=aColor;vNormal=aNormal;vMaterial=aMaterial;gl_Position=uVP*vec4(aPos,1.);}`; +const fragment = `#version 300 es +precision highp float;in vec3 vPos;in vec3 vColor;in vec3 vNormal;flat in float vMaterial;in float vOpacity;uniform vec3 uEye;uniform sampler2D uTexture;uniform bool uTextured;uniform sampler2D uEffectTexture;uniform bool uEffectTextured;uniform float uPulse;out vec4 outColor; +float hash(vec3 p){return fract(sin(dot(p,vec3(127.1,311.7,74.7)))*43758.5453);} +vec3 shacraftBounceTint(vec3 color,float pulse){return color;} +void main(){vec3 n=normalize(vNormal);vec2 uv=abs(n.y)>.5?vPos.xz:(abs(n.x)>.5?vPos.zy:vPos.xy);vec3 p=floor((vPos+n*.002)*16.);float noise=hash(p)*.14-.07;float pattern=1.; +if(vMaterial>1.5&&vMaterial<2.5){pattern=.89+.11*step(.07,fract(uv.y*4.));pattern*=.9+.1*step(.055,fract(uv.x*.5+floor(uv.y*4.)*.5));} +if(vMaterial>2.5&&vMaterial<3.5){pattern=.87+.13*step(.06,fract(uv.y*4.));pattern*=.84+.16*step(.045,fract(uv.x*2.+floor(uv.y*4.)*.5));} +if(vMaterial>3.5&&vMaterial<4.5){pattern=.91+.09*sin(floor(uv.x*16.)*1.73+sin(floor(uv.y*16.)*.22));} +float tex=uTextured?mix(.84,1.12,texture(uTexture,uv).r):1.;if(vMaterial>4.5&&uEffectTextured)tex=mix(.75,1.2,texture(uEffectTexture,uv).g);float diffuse=max(0.,dot(n,normalize(vec3(-.45,.86,.3))));float light=.69+diffuse*.34;vec3 color=clamp((vColor+noise)*pattern*tex*light,0.,1.);if(vMaterial>.5&&vMaterial<1.5&&n.y<.5)color=mix(color,vec3(.38,.29,.17),.65); +if(vMaterial>4.5)color=shacraftBounceTint(color,uPulse);float fog=1.-exp(-pow(distance(vPos,uEye)/74.,2.));color=mix(color,vec3(.70,.80,.79),fog*.91);outColor=vec4(color,vOpacity);}`; +const skyVert = `#version 300 es +precision highp float;out vec2 vUV;void main(){vec2 p=vec2((gl_VertexID<<1)&2,gl_VertexID&2);vUV=p;gl_Position=vec4(p*2.-1.,1.,1.);}`; +const skyFrag = `#version 300 es +precision highp float;in vec2 vUV;uniform float uPitch;uniform float uYaw;uniform float uAspect;out vec4 outColor;void main(){float h=vUV.y+uPitch*.72;vec3 color=mix(vec3(.77,.83,.77),vec3(.38,.65,.78),smoothstep(.14,1.2,h));vec2 sun=vec2(.77-uYaw*.3,.82-uPitch*.72);float d=length((vUV-sun)*vec2(uAspect,1.));color=mix(color,vec3(1.,.98,.8),smoothstep(.048,.039,d)*.98);color+=vec3(.045,.025,0.)*exp(-d*7.);outColor=vec4(color,1.);}`; +const lineVertex = `#version 300 es +precision highp float;layout(location=0)in vec3 aPos;uniform mat4 uVP;void main(){gl_Position=uVP*vec4(aPos,1.);}`; +const lineFragment = `#version 300 es +precision highp float;out vec4 outColor;void main(){outColor=vec4(.13,.21,.12,1.);}`; +const faces = [ + { + n: [1, 0, 0], + v: [ + [1, 0, 1], + [1, 0, 0], + [1, 1, 0], + [1, 1, 1], + ], + }, + { + n: [-1, 0, 0], + v: [ + [0, 0, 0], + [0, 0, 1], + [0, 1, 1], + [0, 1, 0], + ], + }, + { + n: [0, 1, 0], + v: [ + [0, 1, 1], + [1, 1, 1], + [1, 1, 0], + [0, 1, 0], + ], + }, + { + n: [0, -1, 0], + v: [ + [0, 0, 0], + [1, 0, 0], + [1, 0, 1], + [0, 0, 1], + ], + }, + { + n: [0, 0, 1], + v: [ + [0, 0, 1], + [1, 0, 1], + [1, 1, 1], + [0, 1, 1], + ], + }, + { + n: [0, 0, -1], + v: [ + [1, 0, 0], + [0, 0, 0], + [0, 1, 0], + [1, 1, 0], + ], + }, +]; +function program(gl, vs, fs) { + const p = gl.createProgram(); + for (const [type, source] of [ + [gl.VERTEX_SHADER, vs], + [gl.FRAGMENT_SHADER, fs], + ]) { + const s = gl.createShader(type); + gl.shaderSource(s, source); + gl.compileShader(s); + if (!gl.getShaderParameter(s, gl.COMPILE_STATUS)) + throw Error(gl.getShaderInfoLog(s)); + gl.attachShader(p, s); + gl.deleteShader(s); + } + gl.linkProgram(p); + if (!gl.getProgramParameter(p, gl.LINK_STATUS)) + throw Error(gl.getProgramInfoLog(p)); + return p; +} +function boxVertices( + out, + pos, + box, + color, + material = 0, + skip = () => false, + yaw = 0, + opacity = 1, +) { + for (let f = 0; f < 6; f++) { + if (skip(faces[f].n)) continue; + const face = faces[f], + c = Math.cos(yaw), + s = Math.sin(yaw), + n = [ + face.n[0] * c - face.n[2] * s, + face.n[1], + face.n[0] * s + face.n[2] * c, + ]; + for (const i of [0, 1, 2, 0, 2, 3]) { + const v = face.v[i].map( + (v, k) => box.min[k] + v * (box.max[k] - box.min[k]), + ); + out.push( + pos[0] + v[0] * c - v[2] * s, + pos[1] + v[1], + pos[2] + v[0] * s + v[2] * c, + ...color, + ...n, + material, + opacity, + ); + } + } +} +function materialType(state = "", effect) { + if (effect === "bounce") return 5; + if (state.includes("grass_block")) return 1; + if (state.includes("planks")) return 2; + if (state.includes("brick")) return 3; + if (/log|stem|wood/.test(state)) return 4; + return 0; +} +const section = (p) => p.map((v) => Math.floor(v / 16)).join(","); +export class Renderer { + constructor(canvas) { + this.canvas = canvas; + const gl = (this.gl = canvas.getContext("webgl2", { + antialias: true, + alpha: false, + preserveDrawingBuffer: true, + powerPreference: "high-performance", + })); + if (!gl) + throw Error( + "WebGL2 недоступен. Включите аппаратное ускорение или откройте клиент в браузере с поддержкой WebGL2.", + ); + this.program = program(gl, vertex, fragment); + this.sky = program(gl, skyVert, skyFrag); + this.line = program(gl, lineVertex, lineFragment); + this.sections = new Map(); + this.dirty = new Set(); + this.blocks = new Map(); + this.materials = new Map(); + this.texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, this.texture); + gl.texImage2D( + gl.TEXTURE_2D, + 0, + gl.RGBA, + 1, + 1, + 0, + gl.RGBA, + gl.UNSIGNED_BYTE, + new Uint8Array([180, 180, 180, 255]), + ); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + this.textured = false; + this.effectTexture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, this.effectTexture); + gl.texImage2D( + gl.TEXTURE_2D, + 0, + gl.RGBA, + 1, + 1, + 0, + gl.RGBA, + gl.UNSIGNED_BYTE, + new Uint8Array([180, 180, 180, 255]), + ); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + this.effectTextured = false; + this.bounceAt = -10000; + this.dynamic = this.mesh([]); + this.lines = this.mesh([], 3); + this.triangles = 0; + this.vp = new Float32Array(16); + this.lost = false; + canvas.addEventListener("webglcontextlost", (e) => { + e.preventDefault(); + this.lost = true; + }); + canvas.addEventListener("webglcontextrestored", () => location.reload()); + } + mesh(data, stride = 11) { + const gl = this.gl, + vao = gl.createVertexArray(), + buffer = gl.createBuffer(); + gl.bindVertexArray(vao); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(data), gl.DYNAMIC_DRAW); + for (const [loc, size, offset] of stride === 3 + ? [[0, 3, 0]] + : [ + [0, 3, 0], + [1, 3, 3], + [2, 3, 6], + [3, 1, 9], + [4, 1, 10], + ]) { + gl.enableVertexAttribArray(loc); + gl.vertexAttribPointer( + loc, + size, + gl.FLOAT, + false, + stride * 4, + offset * 4, + ); + } + return { vao, buffer, count: data.length / stride }; + } + disposeMesh(mesh) { + if (mesh.transparent) this.disposeMesh(mesh.transparent); + this.gl.deleteBuffer(mesh.buffer); + this.gl.deleteVertexArray(mesh.vao); + } + upload(mesh, data, stride = 11) { + const gl = this.gl; + gl.bindBuffer(gl.ARRAY_BUFFER, mesh.buffer); + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(data), gl.DYNAMIC_DRAW); + mesh.count = data.length / stride; + } + setBounceShader(source) { + if (source.length > 32768) throw Error("Шейдер пакета слишком велик"); + const next = program( + this.gl, + vertex, + fragment.replace( + "vec3 shacraftBounceTint(vec3 color,float pulse){return color;}", + source, + ), + ); + this.gl.deleteProgram(this.program); + this.program = next; + } + async setTexture(blob, effect = false) { + const bitmap = await createImageBitmap(blob); + this.gl.bindTexture( + this.gl.TEXTURE_2D, + effect ? this.effectTexture : this.texture, + ); + this.gl.texImage2D( + this.gl.TEXTURE_2D, + 0, + this.gl.RGBA, + this.gl.RGBA, + this.gl.UNSIGNED_BYTE, + bitmap, + ); + this.gl.texParameteri( + this.gl.TEXTURE_2D, + this.gl.TEXTURE_WRAP_S, + this.gl.REPEAT, + ); + this.gl.texParameteri( + this.gl.TEXTURE_2D, + this.gl.TEXTURE_WRAP_T, + this.gl.REPEAT, + ); + bitmap.close(); + if (effect) this.effectTextured = true; + else this.textured = true; + } + replace(blocks, materials) { + for (const m of this.sections.values()) this.disposeMesh(m); + this.sections.clear(); + this.dirty.clear(); + this.blocks = blocks; + this.materials = materials; + for (const k of blocks.keys()) + this.dirty.add(section(k.split(",").map(Number))); + } + change(changes) { + for (const { pos } of changes) { + this.dirty.add(section(pos)); + for (const f of faces) + this.dirty.add(section(pos.map((v, i) => v + f.n[i]))); + } + } + invalidate() { + for (const k of this.blocks.keys()) + this.dirty.add(section(k.split(",").map(Number))); + } + rebuild(id) { + const base = id.split(",").map((v) => Number(v) * 16), + vertices = [], + transparent = []; + for (let x = base[0]; x < base[0] + 16; x++) + for (let y = base[1]; y < base[1] + 16; y++) + for (let z = base[2]; z < base[2] + 16; z++) { + const pos = [x, y, z], + block = this.blocks.get(key(pos)); + if (!block) continue; + const mat = this.materials.get(block) || { + color: [150, 152, 142], + render: [unitBox], + }, + color = mat.color.map((v) => v / 255), + full = isFullCube(mat); + for (const box of mat.render || [unitBox]) { + boxVertices( + mat.opacity < 1 ? transparent : vertices, + pos, + box, + color, + materialType(mat.state, mat.effect), + (n) => + full && + isFullCube( + this.materials.get( + this.blocks.get(key(pos.map((v, i) => v + n[i]))), + ), + ), + 0, + mat.opacity ?? 1, + ); + } + } + let mesh = this.sections.get(id); + if (mesh) this.upload(mesh, vertices); + else if (vertices.length || transparent.length) { + mesh = this.mesh(vertices); + this.sections.set(id, mesh); + } + if (mesh) { + if (mesh.transparent) this.upload(mesh.transparent, transparent); + else if (transparent.length) mesh.transparent = this.mesh(transparent); + } + if (mesh && vertices.length === 0 && transparent.length === 0) { + this.disposeMesh(mesh); + this.sections.delete(id); + } + } + updateSelection(hit) { + const a = []; + if (hit) { + const mat = this.materials.get(hit.block), + boxes = mat?.render?.length ? mat.render : [unitBox]; + for (const box of boxes) { + const points = []; + for (let i = 0; i < 8; i++) + points.push( + [0, 1, 2].map( + (k) => + hit.pos[k] + + ((i >> k) & 1 ? box.max[k] + 0.003 : box.min[k] - 0.003), + ), + ); + for (let i = 0; i < 8; i++) + for (let axis = 0; axis < 3; axis++) + if (!(i & (1 << axis))) + a.push(...points[i], ...points[i | (1 << axis)]); + } + } + this.upload(this.lines, a, 3); + } + draw(camera, players, entities, entityDefinitions) { + if (this.lost) return; + const gl = this.gl, + ratio = Math.min(devicePixelRatio || 1, 1.75), + w = Math.floor(this.canvas.clientWidth * ratio), + h = Math.floor(this.canvas.clientHeight * ratio); + if (this.canvas.width !== w || this.canvas.height !== h) { + this.canvas.width = w; + this.canvas.height = h; + } + gl.viewport(0, 0, w, h); + gl.clearColor(0.65, 0.79, 0.8, 1); + gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); + gl.disable(gl.DEPTH_TEST); + gl.disable(gl.CULL_FACE); + gl.useProgram(this.sky); + gl.uniform1f(gl.getUniformLocation(this.sky, "uPitch"), camera.pitch); + gl.uniform1f(gl.getUniformLocation(this.sky, "uYaw"), camera.yaw); + gl.uniform1f(gl.getUniformLocation(this.sky, "uAspect"), w / h); + gl.bindVertexArray(null); + gl.drawArrays(gl.TRIANGLES, 0, 3); + this.vp = multiply( + perspective(Math.PI / 2.7, w / h, 0.06, 190), + viewMatrix(camera.eye, camera.yaw, camera.pitch), + ); + const start = performance.now(); + let rebuilt = 0; + for (const id of this.dirty) { + this.rebuild(id); + this.dirty.delete(id); + rebuilt++; + if (rebuilt >= 3 || performance.now() - start > 7) break; + } + gl.enable(gl.DEPTH_TEST); + gl.enable(gl.CULL_FACE); + gl.cullFace(gl.BACK); + gl.frontFace(gl.CCW); + gl.useProgram(this.program); + gl.uniformMatrix4fv( + gl.getUniformLocation(this.program, "uVP"), + false, + this.vp, + ); + gl.uniform3fv(gl.getUniformLocation(this.program, "uEye"), camera.eye); + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(gl.TEXTURE_2D, this.texture); + gl.uniform1i(gl.getUniformLocation(this.program, "uTexture"), 0); + gl.uniform1i( + gl.getUniformLocation(this.program, "uTextured"), + this.textured ? 1 : 0, + ); + gl.activeTexture(gl.TEXTURE1); + gl.bindTexture(gl.TEXTURE_2D, this.effectTexture); + gl.uniform1i(gl.getUniformLocation(this.program, "uEffectTexture"), 1); + gl.uniform1i( + gl.getUniformLocation(this.program, "uEffectTextured"), + this.effectTextured ? 1 : 0, + ); + gl.uniform1f( + gl.getUniformLocation(this.program, "uPulse"), + Math.max(0, 1 - (performance.now() - this.bounceAt) / 600), + ); + this.triangles = 0; + for (const [id, m] of this.sections) { + const center = id.split(",").map((v) => Number(v) * 16 + 8); + if ( + Math.hypot(center[0] - camera.eye[0], center[2] - camera.eye[2]) > 135 + ) + continue; + gl.bindVertexArray(m.vao); + gl.drawArrays(gl.TRIANGLES, 0, m.count); + this.triangles += m.count / 3; + } + const dynamic = []; + for (const p of players) { + const c = p.color || [0.29, 0.46, 0.36], + yaw = p.yaw || 0; + boxVertices( + dynamic, + p.position, + { min: [-0.21, 0.63, -0.13], max: [0.21, 1.27, 0.13] }, + c, + 2, + () => false, + yaw, + ); + boxVertices( + dynamic, + p.position, + { min: [-0.23, 1.27, -0.23], max: [0.23, 1.73, 0.23] }, + [0.77, 0.61, 0.43], + 0, + () => false, + yaw, + ); + for (const side of [-1, 1]) { + boxVertices( + dynamic, + p.position, + { + min: [side * 0.13 - 0.085, 0.02, -0.09], + max: [side * 0.13 + 0.085, 0.63, 0.09], + }, + [0.25, 0.3, 0.32], + 0, + () => false, + yaw, + ); + boxVertices( + dynamic, + p.position, + { + min: [side * 0.31 - 0.085, 0.63, -0.1], + max: [side * 0.31 + 0.085, 1.24, 0.1], + }, + c, + 0, + () => false, + yaw, + ); + } + boxVertices( + dynamic, + p.position, + { min: [-0.18, 1.56, -0.234], max: [0.18, 1.64, -0.226] }, + [0.13, 0.19, 0.15], + 0, + () => false, + yaw, + ); + } + for (const e of entities) { + const def = entityDefinitions.get(e.kind || e.name) || {}, + color = (e.color || def.color || [192, 161, 123]).map((v) => v / 255), + boxes = e.render || + def.render || [{ min: [-0.3, 0, -0.3], max: [0.3, 0.8, 0.3] }]; + for (const b of boxes) + boxVertices(dynamic, e.position, b, color, 0, () => false, e.yaw || 0); + } + this.upload(this.dynamic, dynamic); + gl.bindVertexArray(this.dynamic.vao); + gl.drawArrays(gl.TRIANGLES, 0, this.dynamic.count); + this.triangles += this.dynamic.count / 3; + gl.enable(gl.BLEND); + gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); + gl.depthMask(false); + const translucent = [...this.sections] + .filter(([, m]) => m.transparent?.count) + .sort((a, b) => { + const dist = (id) => + Math.hypot( + ...id.split(",").map((v, i) => Number(v) * 16 + 8 - camera.eye[i]), + ); + return dist(b[0]) - dist(a[0]); + }); + for (const [, m] of translucent) { + gl.bindVertexArray(m.transparent.vao); + gl.drawArrays(gl.TRIANGLES, 0, m.transparent.count); + this.triangles += m.transparent.count / 3; + } + gl.depthMask(true); + gl.disable(gl.BLEND); + if (this.lines.count) { + gl.useProgram(this.line); + gl.uniformMatrix4fv( + gl.getUniformLocation(this.line, "uVP"), + false, + this.vp, + ); + gl.bindVertexArray(this.lines.vao); + gl.drawArrays(gl.LINES, 0, this.lines.count); + } + gl.bindVertexArray(null); + } + project(p) { + return project( + p, + this.vp, + this.canvas.clientWidth, + this.canvas.clientHeight, + ); + } +} diff --git a/client/style.css b/client/style.css new file mode 100644 index 0000000..6ded951 --- /dev/null +++ b/client/style.css @@ -0,0 +1,597 @@ +:root { + font-family: Inter, "Segoe UI", system-ui, sans-serif; + color: #f0f2ed; + background: #a8c6d0; + font-size: 14px; + --panel: rgba(28, 35, 31, 0.97); + --line: #4a544b; + --muted: #b2beb0; + --accent: #c0d3a9; +} +* { + box-sizing: border-box; +} +html, +body { + margin: 0; + height: 100%; + overflow: hidden; +} +button, +input { + font: inherit; +} +button { + color: inherit; + background: #39453b; + border: 1px solid #5d6a5d; + border-radius: 4px; + padding: 9px 12px; + cursor: pointer; +} +button:hover { + background: #4c5e4a; +} +button:focus-visible, +input:focus-visible { + outline: 2px solid #dfefba; + outline-offset: 3px; +} +button:disabled { + opacity: 0.5; + cursor: wait; +} +button.primary { + background: var(--accent); + border-color: var(--accent); + color: #253021; + font-weight: 650; +} +input { + background: #202821; + color: #f4f4ef; + border: 1px solid #576255; + border-radius: 4px; + padding: 10px; + width: 100%; +} +input[type="range"] { + padding: 0; + accent-color: #b9ce9e; +} +kbd { + font-size: 10px; + font-family: inherit; + color: #d7dfd3; + border: 1px solid #82907d75; + border-radius: 3px; + padding: 2px 4px; + background: #17231c55; + white-space: nowrap; +} +button kbd { + margin-left: 6px; +} +#world-canvas { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + display: block; + cursor: crosshair; +} +.topbar { + position: absolute; + inset: 22px 24px auto; + display: flex; + justify-content: space-between; + align-items: flex-start; + gap: 20px; + pointer-events: none; + text-shadow: 0 1px 4px #213a4380; +} +.identity { + display: flex; + align-items: center; + gap: 12px; +} +.identity > div { + display: flex; + flex-direction: column; + gap: 2px; +} +.identity strong { + font-size: 19px; + letter-spacing: -0.4px; + line-height: 1.15; +} +.world-name { + border: 0; + background: none; + padding: 0; + text-align: left; + font-size: 12px; + color: #e2ece0; + text-shadow: 0 1px 3px #18241d; + pointer-events: auto; +} +.world-name:hover { + background: none; + color: white; +} +#connection { + align-self: center; + font-size: 11px; + color: #edf4e9; + background: #273b2cb5; + padding: 5px 8px; + border-radius: 3px; + margin-left: 10px; +} +#connection.bad { + background: #713e30; +} +nav { + display: flex; + gap: 7px; + pointer-events: auto; +} +nav button { + background: #26362ed6; + border-color: #e0efd333; + box-shadow: 0 2px 8px #1d342615; + font-size: 12px; +} +#menu-button { + padding-inline: 13px; +} +#crosshair { + position: absolute; + left: 50%; + top: 50%; + width: 13px; + height: 13px; + transform: translate(-50%, -50%); + pointer-events: none; + filter: drop-shadow(0 1px 1px #112019); +} +#crosshair:before, +#crosshair:after { + content: ""; + position: absolute; + background: #fffdf5b3; +} +#crosshair:before { + left: 6px; + top: 0; + width: 1px; + height: 13px; +} +#crosshair:after { + left: 0; + top: 6px; + width: 13px; + height: 1px; +} +#target-label { + position: absolute; + left: 50%; + top: calc(50% + 28px); + transform: translateX(-50%); + font-size: 11px; + text-shadow: 0 1px 3px #172f21; + pointer-events: none; + opacity: 0.9; +} +footer { + position: absolute; + bottom: 23px; + left: 50%; + transform: translateX(-50%); + text-align: center; + pointer-events: none; +} +#selected-name { + font-size: 12px; + color: #fffdf6; + text-shadow: 0 1px 4px #163622; + margin-bottom: 9px; + min-height: 17px; +} +#hotbar { + display: flex; + gap: 3px; + background: #1b2a22b8; + border: 1px solid #e0e9d633; + padding: 5px; + border-radius: 5px; + pointer-events: auto; + box-shadow: 0 5px 20px #20352730; +} +.slot { + width: 49px; + height: 49px; + position: relative; + padding: 8px; + border: 1px solid #9cac9340; + background: #46513b8c; + border-radius: 2px; + display: grid; + place-items: center; +} +.slot.active { + background: #dce7b82e; + border: 2px solid #e6edbc; + padding: 7px; +} +.slot small { + position: absolute; + left: 3px; + top: 2px; + font-size: 9px; + color: #e8edde; +} +.swatch { + display: block; + width: 26px; + height: 26px; + image-rendering: pixelated; + background: var(--block-color, #aaaaaa); + box-shadow: + inset -6px -5px 0 #0003, + inset 4px 4px 0 #fff2; + transform: rotate(-2deg); +} +#play-hint { + font-size: 11px; + text-shadow: 0 1px 4px #15271c; + margin-top: 9px; + color: #e3e8d7; + white-space: nowrap; +} +.bottom-left { + position: absolute; + left: 24px; + bottom: 25px; + max-width: min(355px, 30vw); + pointer-events: none; +} +#hints { + display: flex; + flex-wrap: wrap; + gap: 7px 11px; + color: #e1e9db; + font-size: 10px; + line-height: 1.7; + text-shadow: 0 1px 3px #25392b; +} +#chat-log { + display: flex; + flex-direction: column; + gap: 4px; + margin-bottom: 14px; + font-size: 12px; + text-shadow: 0 1px 3px #000; + max-height: 180px; + overflow: hidden; + word-break: break-word; +} +#chat-log div { + background: #20332ba6; + padding: 5px 8px; + border-radius: 3px; + width: fit-content; +} +#chat-log .system { + color: #e3dfb5; +} +#chat-form { + pointer-events: auto; + margin-bottom: 10px; + width: min(400px, 80vw); +} +#chat-input { + font-size: 12px; + background: #20352bec; +} +#labels { + position: absolute; + inset: 0; + pointer-events: none; + overflow: hidden; +} +.player-label { + position: absolute; + white-space: nowrap; + font-size: 11px; + background: #203629a8; + padding: 3px 6px; + border-radius: 3px; + transform: translate(-50%, -100%); +} +.panel { + position: absolute; + top: 86px; + right: 24px; + width: 315px; + max-height: calc(100vh - 116px); + overflow: auto; + background: var(--panel); + border: 1px solid #93a38a66; + box-shadow: 0 10px 30px #10281933; + border-radius: 6px; + padding: 20px; +} +.panel-head { + display: flex; + justify-content: space-between; + align-items: flex-start; + gap: 12px; + margin-bottom: 18px; +} +.panel-head h1 { + font-size: 18px; + font-weight: 650; + margin: 2px 0 0; + letter-spacing: -0.3px; +} +.panel-head button { + background: none; + border: 0; + font-size: 24px; + line-height: 20px; + padding: 0 2px; + color: #b6c4b1; +} +.panel-head p { + margin: 5px 0 0; +} +.panel label { + display: block; + font-size: 12px; + color: #c8d3c2; + margin-bottom: 7px; +} +.muted { + color: var(--muted); + font-size: 12px; + line-height: 1.6; +} +.wide { + display: block; + width: 100%; + margin-top: 10px; +} +.inline { + display: flex; + gap: 6px; + margin-bottom: 20px; +} +.inline input { + min-width: 0; +} +.inline button { + font-size: 11px; + padding: 8px; +} +.rule { + border-top: 1px solid var(--line); + margin: 20px 0; +} +.world-row { + display: block; + width: 100%; + text-align: left; + margin-top: 8px; + background: #2c382f; +} +.world-row small { + display: block; + color: var(--muted); + font-size: 11px; + margin-top: 4px; +} +.world-row.current { + border-color: #bacda4; +} +.library { + width: min(610px, calc(100vw - 48px)); + padding-bottom: 16px; +} +.library #catalog-search { + position: sticky; + top: 0; + z-index: 1; +} +#catalog-list { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 7px; + max-height: 55vh; + overflow: auto; +} +.catalog-item { + display: flex; + gap: 9px; + align-items: center; + min-width: 0; + text-align: left; + background: #2f3a30; + padding: 10px; + font-size: 11px; +} +.catalog-item .swatch { + flex-shrink: 0; + width: 22px; + height: 22px; +} +.catalog-item > span:last-child { + min-width: 0; + overflow-wrap: anywhere; +} +.catalog-item small { + display: block; + font-size: 9px; + color: #aebca6; + margin-top: 5px; + overflow-wrap: anywhere; +} +.catalog-empty { + grid-column: 1/-1; + color: var(--muted); + padding: 20px 0; +} +.diagnostics dl { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 9px 10px; + font-size: 12px; + margin: 0 0 20px; +} +.diagnostics dt { + color: #aebeaa; +} +.diagnostics dd { + margin: 0; + text-align: right; + font-variant-numeric: tabular-nums; + overflow-wrap: anywhere; +} +#toast { + position: absolute; + top: 90px; + left: 50%; + transform: translateX(-50%); + background: #263a2cf2; + border: 1px solid #b7cba380; + border-radius: 4px; + padding: 11px 16px; + font-size: 13px; + max-width: min(580px, 90vw); + text-align: center; + box-shadow: 0 2px 10px #0002; +} +#toast.error { + background: #633c2ff5; + border-color: #d0a68f; +} +#match { + position: absolute; + top: 92px; + left: 24px; + background: #26392cd6; + border: 1px solid #e2e3c24a; + padding: 12px 16px; + border-radius: 4px; + font-size: 13px; + max-width: 360px; +} +#fatal { + position: absolute; + inset: 30% 20% auto; + background: #312e25ed; + border: 1px solid #d4b696; + padding: 30px; + line-height: 1.6; + border-radius: 5px; +} +body.locked .topbar, +body.locked #hints, +body.locked #play-hint { + opacity: 0.35; +} +body.locked .topbar:hover { + opacity: 1; +} +[hidden] { + display: none !important; +} +@media (max-width: 850px) { + .topbar { + inset: 14px 14px auto; + } + .identity { + gap: 8px; + } + #connection { + margin-left: 1px; + font-size: 10px; + } + nav button { + font-size: 11px; + padding: 9px 8px; + } + nav kbd { + display: none; + } + .bottom-left { + left: 14px; + bottom: 115px; + max-width: 75vw; + } + #hints { + display: none; + } + footer { + bottom: 14px; + } + .panel { + right: 14px; + top: 77px; + max-height: calc(100vh - 94px); + } + .slot { + width: 40px; + height: 44px; + } + #play-hint { + white-space: normal; + width: 360px; + font-size: 10px; + } + #catalog-list { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } +} +@media (max-width: 520px) { + .identity strong { + font-size: 15px; + } + .identity svg { + width: 22px; + } + .topbar { + gap: 6px; + } + #connection { + display: none; + } + #diagnostics-button { + font-size: 0; + } + #diagnostics-button:before { + content: "F3"; + font-size: 12px; + } + .slot { + width: 34px; + height: 40px; + padding: 6px; + } + .swatch { + width: 23px; + height: 23px; + } + .library { + width: calc(100vw - 28px); + } + #target-label { + max-width: 90vw; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + #fatal { + inset: 25% 14px auto; + } +} diff --git a/client/tests/math.test.js b/client/tests/math.test.js new file mode 100644 index 0000000..d33d489 --- /dev/null +++ b/client/tests/math.test.js @@ -0,0 +1,72 @@ +import test from "node:test"; +import assert from "node:assert/strict"; +import { + direction, + raycast, + rayBox, + multiply, + perspective, + viewMatrix, + project, + unitBox, +} from "../math.js"; +test("camera axes and world projection match the server coordinate convention", () => { + assert.deepEqual(direction(0, 0), [0, 0, -1]); + const east = direction(Math.PI / 2, 0); + assert.ok(Math.abs(east[0] - 1) < 1e-8); + const vp = multiply( + perspective(Math.PI / 2, 1, 0.1, 100), + viewMatrix([0, 2, 8], 0, 0), + ); + const center = project([0, 2, 0], vp, 100, 100); + assert.ok(Math.abs(center[0] - 50) < 1e-5 && Math.abs(center[1] - 50) < 1e-5); + assert.equal(project([0, 2, 20], vp, 100, 100), null); +}); +test("DDA resolves negative world coordinates and nearest entry face", () => { + const blocks = new Map([ + ["-1,0,-2", 1], + ["-1,0,-4", 1], + ]), + materials = new Map([[1, { render: [unitBox] }]]); + const hit = raycast([-0.5, 0.5, 0], [0, 0, -1], blocks, materials); + assert.deepEqual(hit.pos, [-1, 0, -2]); + assert.deepEqual(hit.normal, [0, 0, 1]); + assert.equal(hit.distance, 1); +}); +test("ray selection respects slab geometry and reach instead of selecting empty half", () => { + const blocks = new Map([["0,0,-2", 1]]), + materials = new Map([ + [1, { render: [{ min: [0, 0, 0], max: [1, 0.5, 1] }] }], + ]); + assert.equal(raycast([0.5, 0.75, 0], [0, 0, -1], blocks, materials), null); + assert.ok(raycast([0.5, 0.25, 0], [0, 0, -1], blocks, materials)); + assert.equal( + raycast([0.5, 0.25, 10], [0, 0, -1], blocks, materials, 6), + null, + ); +}); +test("axis aligned ray slabs reject parallel paths outside a box", () => { + assert.equal(rayBox([2, 0.5, 3], [0, 0, -1], [0, 0, 0], [1, 1, 1], 6), null); + assert.equal( + rayBox([0.5, 0.5, 3], [0, 0, -1], [0, 0, 0], [1, 1, 1], 6).distance, + 2, + ); +}); + +test("selection intersects a fence extension owned by the cell below", () => { + const blocks = new Map([["0,0,-2", 1]]), + materials = new Map([ + [1, { render: [{ min: [0.375, 0, 0.375], max: [0.625, 1.5, 0.625] }] }], + ]); + const hit = raycast([0.5, 1.25, 0], [0, 0, -1], blocks, materials); + assert.deepEqual(hit.pos, [0, 0, -2]); + assert.deepEqual(hit.normal, [0, 0, 1]); + assert.equal(hit.distance, 1.375); +}); +test("package geometry is selectable across its documented three-block extent", () => { + const blocks = new Map([["0,0,0", 1]]); + const materials = new Map([[1, { render: [{min:[0,0,0],max:[1,3,1]}] }]]); + const hit = raycast([0.5,2.5,4], [0,0,-1], blocks, materials, 6); + assert.deepEqual(hit.pos,[0,0,0]); + assert.deepEqual(hit.normal,[0,0,1]); +}); diff --git a/client/tests/renderer-smoke.html b/client/tests/renderer-smoke.html new file mode 100644 index 0000000..0c14d22 --- /dev/null +++ b/client/tests/renderer-smoke.html @@ -0,0 +1,64 @@ +Shacraft renderer fixture + diff --git a/crates/shacraft-compat/Cargo.toml b/crates/shacraft-compat/Cargo.toml new file mode 100644 index 0000000..edaa168 --- /dev/null +++ b/crates/shacraft-compat/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "shacraft-compat" +version.workspace = true +edition.workspace = true +license.workspace = true + +[dependencies] +anyhow.workspace = true +serde.workspace = true +serde_json.workspace = true +clap.workspace = true +shacraft-core.workspace = true +flate2 = "1" +sha2 = "0.10" +tempfile = "3" +cesu8 = "1" +lz4_flex = "0.13" +xxhash-rust = { version = "0.8", features = ["xxh32"] } +rustix = { version = "1", features = ["fs"] } +rusqlite = { version = "=0.40.2", features = ["bundled"] } + +[dev-dependencies] diff --git a/crates/shacraft-compat/fixtures/java26_2-world/custom-metadata.txt b/crates/shacraft-compat/fixtures/java26_2-world/custom-metadata.txt new file mode 100644 index 0000000..ed2066d --- /dev/null +++ b/crates/shacraft-compat/fixtures/java26_2-world/custom-metadata.txt @@ -0,0 +1 @@ +own fixture; retain unknown file diff --git a/crates/shacraft-compat/fixtures/java26_2-world/data/minecraft/game_rules.dat b/crates/shacraft-compat/fixtures/java26_2-world/data/minecraft/game_rules.dat new file mode 100644 index 0000000..64edf80 Binary files /dev/null and b/crates/shacraft-compat/fixtures/java26_2-world/data/minecraft/game_rules.dat differ diff --git a/crates/shacraft-compat/fixtures/java26_2-world/data/minecraft/world_gen_settings.dat b/crates/shacraft-compat/fixtures/java26_2-world/data/minecraft/world_gen_settings.dat new file mode 100644 index 0000000..d45181f Binary files /dev/null and b/crates/shacraft-compat/fixtures/java26_2-world/data/minecraft/world_gen_settings.dat differ diff --git a/crates/shacraft-compat/fixtures/java26_2-world/entities/r.-1.0.mca b/crates/shacraft-compat/fixtures/java26_2-world/entities/r.-1.0.mca new file mode 100644 index 0000000..91817d5 Binary files /dev/null and b/crates/shacraft-compat/fixtures/java26_2-world/entities/r.-1.0.mca differ diff --git a/crates/shacraft-compat/fixtures/java26_2-world/level.dat b/crates/shacraft-compat/fixtures/java26_2-world/level.dat new file mode 100644 index 0000000..20713bd Binary files /dev/null and b/crates/shacraft-compat/fixtures/java26_2-world/level.dat differ diff --git a/crates/shacraft-compat/fixtures/java26_2-world/region/r.-1.0.mca b/crates/shacraft-compat/fixtures/java26_2-world/region/r.-1.0.mca new file mode 100644 index 0000000..2657ad2 Binary files /dev/null and b/crates/shacraft-compat/fixtures/java26_2-world/region/r.-1.0.mca differ diff --git a/crates/shacraft-compat/fixtures/provenance.json b/crates/shacraft-compat/fixtures/provenance.json new file mode 100644 index 0000000..770aa32 --- /dev/null +++ b/crates/shacraft-compat/fixtures/provenance.json @@ -0,0 +1,55 @@ +{ + "schema_version": 1, + "source": "Own minimal fixtures; generated through public Java26.2 APIs and nbtlib2.0.4, no game assets", + "minecraft_version": "26.2", + "data_version": 4903, + "java_runtime": "Microsoft OpenJDK25.0.1+8", + "server_jar_sha1": "823e2250d24b3ddac457a60c92a6a941943fcd6a", + "server_jar_sha256": "cdacdfb25898de5e4b4b0e5ddcc2722f77067e46605709c2d886c000ebb63ec5", + "generator_files": [ + "scripts/compat_java.java", + "scripts/compat_fixtures.py" + ], + "files": { + "java26_2-world/custom-metadata.txt": { + "bytes": 33, + "sha256": "9d6851a4b4ad57e9a1a49d3e709cfe4de698ddb1c9add85c3afd2e38bac90ac5" + }, + "java26_2-world/data/minecraft/game_rules.dat": { + "bytes": 821, + "sha256": "566d8bf7c24388101264e650bcfad24f79446758adcaf505fe5276aa0484b9ba" + }, + "java26_2-world/data/minecraft/world_gen_settings.dat": { + "bytes": 301, + "sha256": "0c100210ac72c9b390c1d64287e3a57bfb40cb39c2651948d38b4d223d5c296d" + }, + "java26_2-world/entities/r.-1.0.mca": { + "bytes": 12288, + "sha256": "c53c1c8c0e75ad16d3a2c7744fc92e2df4115a0423972846796d8385be831a80" + }, + "java26_2-world/level.dat": { + "bytes": 309, + "sha256": "e22ec9c3da109bdb6f6c0677712d8a7767eee0d4b2b45dc953113d34b40885df" + }, + "java26_2-world/region/r.-1.0.mca": { + "bytes": 12288, + "sha256": "6fc56ee0177ca0ab8eab1c1858a0641ed2efaa8230f25e6f012ec4ff42dd9424" + }, + "sponge-v3.schem": { + "bytes": 648, + "sha256": "cd4041dce3e12af60c80931b730d89b8fef844fe65e1c5dcca12ba6f656d5801" + }, + "world-template/data/minecraft/game_rules.dat": { + "bytes": 821, + "sha256": "a2fe317c7838ab52ac17d1d4ad74491351783bdf71de5707d2a47328e849e646" + }, + "world-template/data/minecraft/world_gen_settings.dat": { + "bytes": 301, + "sha256": "0c100210ac72c9b390c1d64287e3a57bfb40cb39c2651948d38b4d223d5c296d" + }, + "world-template/level.dat": { + "bytes": 312, + "sha256": "b97ea770237150db83d5ed398086b1ca5d4d9de5a5a25fd167f971a89ae59cf4" + } + } +} diff --git a/crates/shacraft-compat/fixtures/sponge-v3.schem b/crates/shacraft-compat/fixtures/sponge-v3.schem new file mode 100644 index 0000000..cb3e30e Binary files /dev/null and b/crates/shacraft-compat/fixtures/sponge-v3.schem differ diff --git a/crates/shacraft-compat/fixtures/world-template/data/minecraft/game_rules.dat b/crates/shacraft-compat/fixtures/world-template/data/minecraft/game_rules.dat new file mode 100644 index 0000000..e295c2e Binary files /dev/null and b/crates/shacraft-compat/fixtures/world-template/data/minecraft/game_rules.dat differ diff --git a/crates/shacraft-compat/fixtures/world-template/data/minecraft/world_gen_settings.dat b/crates/shacraft-compat/fixtures/world-template/data/minecraft/world_gen_settings.dat new file mode 100644 index 0000000..d45181f Binary files /dev/null and b/crates/shacraft-compat/fixtures/world-template/data/minecraft/world_gen_settings.dat differ diff --git a/crates/shacraft-compat/fixtures/world-template/level.dat b/crates/shacraft-compat/fixtures/world-template/level.dat new file mode 100644 index 0000000..018617b Binary files /dev/null and b/crates/shacraft-compat/fixtures/world-template/level.dat differ diff --git a/crates/shacraft-compat/src/anvil.rs b/crates/shacraft-compat/src/anvil.rs new file mode 100644 index 0000000..301ee85 --- /dev/null +++ b/crates/shacraft-compat/src/anvil.rs @@ -0,0 +1,1033 @@ +use crate::{ + DATA_VERSION, Dimension, Mode, Provenance, Report, io, + nbt::{self, Compound, Tag, compound, get}, + provenance, section_cells, +}; +use anyhow::{Context, Result, bail, ensure}; +use shacraft_core::{BlockChange, WorldStore}; +use std::{ + collections::{BTreeMap, BTreeSet}, + fs::{self, File, OpenOptions}, + io::{Read, Seek, SeekFrom, Write}, + path::{Path, PathBuf}, + time::{SystemTime, UNIX_EPOCH}, +}; + +pub(crate) struct Region { + file: File, + path: PathBuf, + rx: i32, + rz: i32, + locations: [u32; 1024], +} +fn region_coords(path: &Path) -> Result<(i32, i32)> { + let n = path + .file_name() + .and_then(|s| s.to_str()) + .context("region_filename")?; + let a: Vec<_> = n.split('.').collect(); + ensure!( + a.len() == 4 && a[0] == "r" && a[3] == "mca", + "region_filename: {n}" + ); + Ok((a[1].parse()?, a[2].parse()?)) +} +impl Region { + pub(crate) fn open(path: &Path, write: bool) -> Result { + let (rx, rz) = region_coords(path)?; + let mut file = OpenOptions::new().read(true).write(write).open(path)?; + let len = file.metadata()?.len(); + ensure!( + (8192..=8 * 1024 * 1024 * 1024).contains(&len) && len % 4096 == 0, + "region_length: {}", + path.display() + ); + let mut header = [0; 4096]; + file.read_exact(&mut header)?; + let mut locations = [0; 1024]; + let mut extents = Vec::new(); + for (i, b) in header.chunks_exact(4).enumerate() { + let n = u32::from_be_bytes(b.try_into()?); + locations[i] = n; + if n != 0 { + let start = (n >> 8) as u64; + let count = (n & 255) as u64; + ensure!( + start >= 2 && count > 0 && (start + count) * 4096 <= len, + "region_location: outside file" + ); + extents.push((start, start + count)) + } + } + extents.sort_unstable(); + ensure!( + extents.windows(2).all(|w| w[0].1 <= w[1].0), + "region_overlap: overlapping chunk sectors" + ); + Ok(Self { + file, + path: path.into(), + rx, + rz, + locations, + }) + } + pub(crate) fn create(path: &Path) -> Result { + fs::create_dir_all(path.parent().context("region parent")?)?; + let mut f = OpenOptions::new().write(true).create_new(true).open(path)?; + f.write_all(&[0; 8192])?; + f.sync_all()?; + Self::open(path, true) + } + fn coordinates(&self, index: usize) -> Result<(i32, i32)> { + let x = self + .rx + .checked_mul(32) + .and_then(|v| v.checked_add((index % 32) as i32)) + .context("region_coordinate_overflow")?; + let z = self + .rz + .checked_mul(32) + .and_then(|v| v.checked_add((index / 32) as i32)) + .context("region_coordinate_overflow")?; + ensure!( + (-1_875_000..=1_874_999).contains(&x) && (-1_875_000..=1_874_999).contains(&z), + "region_coordinate_limit" + ); + Ok((x, z)) + } + pub(crate) fn read(&mut self, index: usize) -> Result> { + let location = self.locations[index]; + if location == 0 { + return Ok(None); + } + self.file + .seek(SeekFrom::Start((location >> 8) as u64 * 4096))?; + let mut head = [0; 5]; + self.file.read_exact(&mut head)?; + let len = u32::from_be_bytes(head[..4].try_into()?) as usize; + ensure!( + len >= 1 && len + 4 <= (location as usize & 255) * 4096, + "region_chunk_length: outside allocated sectors" + ); + let kind = head[4] & 127; + let external = head[4] & 128 != 0; + let mut bytes = if external { + ensure!(len == 1, "external_chunk_length: expected1"); + let (x, z) = self.coordinates(index)?; + io::read_limited( + &self.path.with_file_name(format!("c.{x}.{z}.mcc")), + nbt::MAX_BYTES, + )? + } else { + let mut b = vec![0; len - 1]; + self.file.read_exact(&mut b)?; + b + }; + bytes = match kind { + 1 => io::inflate(flate2::read::GzDecoder::new(bytes.as_slice()))?, + 2 => io::inflate(flate2::read::ZlibDecoder::new(bytes.as_slice()))?, + 3 => { + ensure!(bytes.len() <= nbt::MAX_BYTES, "chunk_limit"); + bytes + } + 4 => lz4_decode(&bytes)?, + _ => bail!( + "unsupported_compression: {kind} in {} slot{index}", + self.path.display() + ), + }; + Ok(Some(nbt::decode(&bytes)?)) + } + pub(crate) fn write(&mut self, index: usize, name: &str, tag: &Tag) -> Result<()> { + let bytes = nbt::encode(name, tag)?; + let mut encoder = + flate2::write::ZlibEncoder::new(Vec::new(), flate2::Compression::default()); + encoder.write_all(&bytes)?; + let bytes = encoder.finish()?; + let sectors = (bytes.len() + 5).div_ceil(4096); + let offset = self.file.seek(SeekFrom::End(0))? / 4096; + ensure!(offset < 1 << 24, "region_limit: sector offset"); + let (x, z) = self.coordinates(index)?; + let external = self.path.with_file_name(format!("c.{x}.{z}.mcc")); + let count = if sectors > 255 { + let mut out = File::create(&external)?; + out.write_all(&bytes)?; + out.sync_all()?; + self.file.write_all(&1u32.to_be_bytes())?; + self.file.write_all(&[130])?; + self.file.write_all(&vec![0; 4091])?; + 1 + } else { + self.file + .write_all(&((bytes.len() + 1) as u32).to_be_bytes())?; + self.file.write_all(&[2])?; + self.file.write_all(&bytes)?; + self.file + .write_all(&vec![0; sectors * 4096 - bytes.len() - 5])?; + if external.exists() { + fs::remove_file(external)? + } + sectors + }; + let location = ((offset as u32) << 8) | count as u32; + self.file.seek(SeekFrom::Start(index as u64 * 4))?; + self.file.write_all(&location.to_be_bytes())?; + self.file.seek(SeekFrom::Start(4096 + index as u64 * 4))?; + self.file.write_all( + &(SystemTime::now().duration_since(UNIX_EPOCH)?.as_secs() as u32).to_be_bytes(), + )?; + self.locations[index] = location; + self.file.sync_all()?; + Ok(()) + } + fn clear(&mut self, index: usize) -> Result<()> { + self.file.seek(SeekFrom::Start(index as u64 * 4))?; + self.file.write_all(&[0; 4])?; + self.locations[index] = 0; + self.file.sync_all()?; + Ok(()) + } +} + +fn lz4_decode(input: &[u8]) -> Result> { + let mut p = 0; + let mut out = Vec::new(); + loop { + ensure!(p + 21 <= input.len(), "lz4_header: truncated"); + ensure!(&input[p..p + 8] == b"LZ4Block", "lz4_header: invalid magic"); + let token = input[p + 8]; + let compressed = u32::from_le_bytes(input[p + 9..p + 13].try_into()?) as usize; + let original = u32::from_le_bytes(input[p + 13..p + 17].try_into()?) as usize; + let hash = u32::from_le_bytes(input[p + 17..p + 21].try_into()?); + p += 21; + ensure!( + original <= 1usize << (10 + (token & 15)) + && original <= nbt::MAX_BYTES + && compressed <= nbt::MAX_BYTES + && p + compressed <= input.len(), + "lz4_limit: block size" + ); + if original == 0 && compressed == 0 { + ensure!( + hash == 0 && p == input.len(), + "lz4_terminal: trailing bytes/checksum" + ); + break; + } + ensure!( + original > 0 && compressed > 0 && out.len() + original <= nbt::MAX_BYTES, + "lz4_limit: decompressed bytes" + ); + let bytes = &input[p..p + compressed]; + p += compressed; + let decoded = match token & 240 { + 16 => { + ensure!(original == compressed, "lz4_length: raw size"); + bytes.to_vec() + } + 32 => lz4_flex::block::decompress(bytes, original)?, + _ => bail!("lz4_method: invalid"), + }; + ensure!( + decoded.len() == original + && (xxhash_rust::xxh32::xxh32(&decoded, 0x9747b28c) & 0x0fff_ffff) == hash, + "lz4_checksum: mismatch" + ); + out.extend(decoded) + } + Ok(out) +} + +fn state(p: &Tag) -> Result { + let p = p.compound()?; + let name = get(p, "Name")?.string()?; + let mut props = Vec::new(); + if let Some(t) = p.get("Properties") { + for (k, v) in t.compound()? { + props.push(format!("{k}={}", v.string()?)) + } + } + Ok(if props.is_empty() { + name.into() + } else { + format!("{name}[{}]", props.join(",")) + }) +} +fn palette_entry(state: &str) -> Tag { + let (name, props) = state + .split_once('[') + .map(|(a, b)| (a, Some(b.trim_end_matches(']')))) + .unwrap_or((state, None)); + let mut c = BTreeMap::from([("Name".into(), Tag::String(name.into()))]); + if let Some(props) = props { + c.insert( + "Properties".into(), + Tag::Compound( + props + .split(',') + .map(|p| { + let (k, v) = p.split_once('=').expect("core canonical state"); + (k.into(), Tag::String(v.into())) + }) + .collect(), + ), + ); + } + Tag::Compound(c) +} +fn unpack(container: &Compound, count: usize, min_bits: u32) -> Result<(Vec, Vec)> { + let p = get(container, "palette")?.list(10)?; + ensure!(!p.is_empty() && p.len() <= count, "anvil_palette: size"); + let palette = p.iter().map(state).collect::>>()?; + let indices = unpack_indices(container, p.len(), count, min_bits)?; + Ok((palette, indices)) +} +fn unpack_indices(c: &Compound, n: usize, count: usize, min_bits: u32) -> Result> { + ensure!(n > 0 && n <= count, "anvil_palette: size"); + if n == 1 { + return Ok(vec![0; count]); + } + let bits = (usize::BITS - (n - 1).leading_zeros()).max(min_bits); + let per = 64 / bits as usize; + let data = get(c, "data")?.longs()?; + ensure!( + data.len() == count.div_ceil(per), + "anvil_data: long-array length" + ); + let mask = (1u64 << bits) - 1; + let mut indices = Vec::with_capacity(count); + for i in 0..count { + let index = ((data[i / per] as u64 >> ((i % per) * bits as usize)) & mask) as usize; + ensure!(index < n, "anvil_data: palette index"); + indices.push(index) + } + Ok(indices) +} +fn packed(cells: &[u32; 4096], registry: &[String]) -> Tag { + let mut palette = Vec::new(); + let mut mapping = BTreeMap::new(); + let mut indices = Vec::with_capacity(4096); + for block in cells { + let n = mapping.len(); + let id = *mapping.entry(*block).or_insert_with(|| { + palette.push(palette_entry(®istry[*block as usize])); + n + }); + indices.push(id) + } + let mut c = BTreeMap::from([("palette".into(), Tag::List(10, palette))]); + if mapping.len() > 1 { + let bits = (usize::BITS - (mapping.len() - 1).leading_zeros()).max(4); + let per = 64 / bits as usize; + let mut data = vec![0i64; 4096usize.div_ceil(per)]; + for (i, id) in indices.into_iter().enumerate() { + data[i / per] |= ((id as u64) << ((i % per) * bits as usize)) as i64 + } + c.insert("data".into(), Tag::LongArray(data)); + } + Tag::Compound(c) +} +fn check_chunk(c: &Compound, x: i32, z: i32, mode: Mode, report: &mut Report) -> Result<()> { + ensure!( + get(c, "xPos")?.int()? == x && get(c, "zPos")?.int()? == z, + "chunk_position: header/NBT mismatch" + ); + let version = get(c, "DataVersion")?.int()?; + ensure!( + mode != Mode::Exact || version == DATA_VERSION, + "unsupported_data_version: chunk{x},{z} uses{version}, exact requires4903" + ); + if version != DATA_VERSION { + report.issue( + "unverified_chunk_version", + "unsupported", + format!("chunk:{x},{z}"), + format!("{version}; modern palette schema decoded without migration"), + ) + } + let sections = get(c, "sections")?.list(10)?; + ensure!(sections.len() <= 256, "chunk_limit: section count"); + let mut ys = BTreeSet::new(); + for sec in sections { + let sec = sec.compound()?; + let y = get(sec, "Y")?.numeric_i32()?; + ensure!( + (-128..=127).contains(&y) && ys.insert(y), + "chunk_sections: invalid/duplicate Y" + ); + if let Some(biomes) = sec.get("biomes") { + let b = biomes.compound()?; + let p = get(b, "palette")?.list(8)?; + for biome in p { + biome.string()?; + } + unpack_indices(b, p.len(), 64, 1)?; + } + } + Ok(()) +} +fn region_dimension(root: &Path, path: &Path) -> Result> { + if path.extension().and_then(|s| s.to_str()) != Some("mca") { + return Ok(None); + } + let parent = path.parent().context("region parent")?; + if parent.file_name().and_then(|s| s.to_str()) != Some("region") { + return Ok(None); + } + region_coords(path)?; + let dimension = parent + .parent() + .context("dimension")? + .strip_prefix(root)? + .to_str() + .context("dimension UTF8")? + .replace('\\', "/"); + // Only Java's actual dimension locations are interpreted as worlds. + // Other region-shaped files, including portable originals, stay opaque. + if !dimension.is_empty() + && dimension != "DIM-1" + && dimension != "DIM1" + && !(dimension.starts_with("dimensions/") && dimension.split('/').count() >= 3) + { + return Ok(None); + } + Ok(Some(dimension)) +} +fn world_name(dimension: &str) -> String { + match dimension { + "" => "main".into(), + "DIM-1" => "main_nether".into(), + "DIM1" => "main_end".into(), + s => { + use sha2::Digest; + format!("dim_{:x}", sha2::Sha256::digest(s.as_bytes()))[..36].into() + } + } +} + +pub fn import_anvil(source: &Path, destination: &Path, mode: Mode) -> Result { + let stage = io::stage(destination)?; + ensure!( + !stage + .path() + .canonicalize()? + .starts_with(source.canonicalize()?), + "unsafe_destination: import destination must be outside source world" + ); + let compat = stage.path().join("compat"); + fs::create_dir(&compat)?; + let original = compat.join("original"); + let mut report = Report::new("anvil", mode); + io::copy_source(source, &original, &compat.join("files.jsonl"), &mut report)?; + let (_, level) = nbt::decode(&io::gzip_read(&original.join("level.dat"))?)?; + let version = get(get(level.compound()?, "Data")?.compound()?, "DataVersion")?.int()?; + ensure!( + mode != Mode::Exact || version == DATA_VERSION, + "unsupported_data_version: level.dat uses{version}, exact requires4903" + ); + report.data_version = version; + let mut store = WorldStore::open(stage.path(), 32)?; + store.create_world("main", None)?; + let mut dimensions = BTreeMap::from([( + "main".into(), + Dimension { + path: String::new(), + revision: 0, + }, + )]); + let mut operations = 0u64; + io::visit_files( + &original, + &mut |path| { + let Some(dimension) = region_dimension(&original, path)? else { + return Ok(()); + }; + let world = world_name(&dimension); + if !dimensions.contains_key(&world) { + ensure!(dimensions.len() < 256, "input_limit: dimension count"); + store.create_world(&world, None)?; + dimensions.insert( + world.clone(), + Dimension { + path: dimension.clone(), + revision: 0, + }, + ); + } + let mut region = Region::open(path, false)?; + for i in 0..1024 { + let Some((_, tag)) = region.read(i)? else { + continue; + }; + let (x, z) = region.coordinates(i)?; + let c = tag.compound()?; + check_chunk(c, x, z, mode, &mut report)?; + report.chunks += 1; + for sec in get(c, "sections")?.list(10)? { + let sec = sec.compound()?; + let y = get(sec, "Y")?.numeric_i32()?; + let Some(blocks) = sec.get("block_states") else { + continue; + }; + let (palette, indices) = unpack(blocks.compound()?, 4096, 4)?; + let registry = palette + .iter() + .map(|s| store.register_block(s)) + .collect::>>()?; + let mut changes = Vec::new(); + for (index, pid) in indices.into_iter().enumerate() { + let block = registry[pid]; + if block != 0 { + changes.push(BlockChange { + pos: [ + x * 16 + (index % 16) as i32, + y * 16 + (index / 256) as i32, + z * 16 + ((index / 16) % 16) as i32, + ], + block, + }); + } + } + report.nonair_blocks += changes.len() as u64; + report.sections += 1; + if !changes.is_empty() { + store.edit( + &world, + store.revision(&world)?, + &format!("anvil-import-{operations}"), + changes, + )?; + operations += 1; + } + } + } + Ok(()) + }, + 0, + )?; + for (world, dimension) in &mut dimensions { + dimension.revision = store.revision(world)?; + report.worlds.insert(world.clone(), dimension.revision); + } + store.flush()?; + drop(store); + report.issue("opaque_world_data","preserved","compat/original","All source files retained with SHA256: level.dat, entities, biomes, block entities, POI, datapacks, playerdata, unknown files. Native simulation edits blocks only; no entity/biome migration."); + let mut provenance = Provenance { + schema_version: 1, + format: "anvil".into(), + data_version: version, + worlds: dimensions, + schem_min: None, + schem_max: None, + entity_fingerprint: None, + entity_blob_hashes: BTreeMap::new(), + }; + crate::entities::import_anvil(stage.path(), &original, &mut provenance, &mut report)?; + io::json(&compat.join("provenance.json"), &provenance)?; + io::json(&compat.join("import-report.json"), &report)?; + io::publish(stage, destination)?; + Ok(report) +} + +fn new_level(name: &str) -> Result { + let bytes = io::inflate(flate2::read::GzDecoder::new( + &include_bytes!("../fixtures/world-template/level.dat")[..], + ))?; + let (_, mut root) = nbt::decode(&bytes)?; + let data = root + .compound_mut()? + .get_mut("Data") + .context("template Data")? + .compound_mut()?; + data.insert("LevelName".into(), Tag::String(name.into())); + data.insert("LastPlayed".into(), Tag::Long(0)); + Ok(root) +} +fn new_world_metadata(root: &Path) -> Result<()> { + let data = root.join("data/minecraft"); + fs::create_dir_all(&data)?; + fs::write( + data.join("world_gen_settings.dat"), + include_bytes!("../fixtures/world-template/data/minecraft/world_gen_settings.dat"), + )?; + fs::write( + data.join("game_rules.dat"), + include_bytes!("../fixtures/world-template/data/minecraft/game_rules.dat"), + )?; + Ok(()) +} +fn new_chunk(x: i32, z: i32) -> Tag { + compound([ + ("DataVersion", Tag::Int(DATA_VERSION)), + ("xPos", Tag::Int(x)), + ("yPos", Tag::Int(-4)), + ("zPos", Tag::Int(z)), + ("Status", Tag::String("minecraft:full".into())), + ("LastUpdate", Tag::Long(0)), + ("InhabitedTime", Tag::Long(0)), + ("isLightOn", Tag::Byte(0)), + ("sections", Tag::List(10, vec![])), + ("block_entities", Tag::List(10, vec![])), + ("block_ticks", Tag::List(10, vec![])), + ("fluid_ticks", Tag::List(10, vec![])), + ( + "PostProcessing", + Tag::List(9, (0..24).map(|_| Tag::List(2, vec![])).collect()), + ), + ("Heightmaps", compound([] as [(&str, Tag); 0])), + ( + "structures", + compound([ + ("starts", compound([] as [(&str, Tag); 0])), + ("References", compound([] as [(&str, Tag); 0])), + ]), + ), + ]) +} +fn air_section(y: i32) -> Tag { + compound([ + ("Y", Tag::Byte(y as i8)), + ( + "block_states", + compound([( + "palette", + Tag::List(10, vec![palette_entry("minecraft:air")]), + )]), + ), + ( + "biomes", + compound([( + "palette", + Tag::List(8, vec![Tag::String("minecraft:plains".into())]), + )]), + ), + ]) +} + +pub fn export_anvil( + store_path: &Path, + world: Option<&str>, + destination: &Path, + mode: Mode, +) -> Result { + let mut store = WorldStore::open(store_path, 32)?; + let p = provenance(store_path)?; + let original = p.as_ref().filter(|p| p.format == "anvil"); + let stage = io::stage(destination)?; + let mut report = Report::new("anvil", mode); + let dimensions = if let Some(p) = original { + ensure!( + world.is_none(), + "anvil_dimensions: imported worlds export together; omit --world" + ); + ensure!( + mode != Mode::Exact || p.data_version == DATA_VERSION, + "unsupported_data_version: exact requires4903" + ); + io::copy_verified( + &store_path.join("compat/original"), + stage.path(), + &store_path.join("compat/files.jsonl"), + )?; + report.data_version = p.data_version; + for (w, d) in &p.worlds { + let rev = store.revision(w)?; + report.worlds.insert(w.clone(), rev); + ensure!( + mode != Mode::Exact || rev == d.revision, + "exact_provenance_invalidated: {w} revision changed; use best-effort for invalidating derived fields" + ); + } + let entities_changed = crate::entities::changed(store_path, p)?; + ensure!( + mode != Mode::Exact || !entities_changed, + "exact_entity_revision: entity metadata changed; use best-effort" + ); + if !entities_changed && p.worlds.iter().all(|(w, d)| report.worlds[w] == d.revision) { + report.issue( + "unchanged_original", + "preserved", + "world", + "All original files copied byte-identically after SHA256 verification", + ); + io::report(stage.path(), &report)?; + io::publish(stage, destination)?; + return Ok(report); + } + let sidecar = io::available(stage.path(), "shacraft-source-sidecar", "")?; + io::copy_verified( + &store_path.join("compat/original"), + &sidecar, + &store_path.join("compat/files.jsonl"), + )?; + report.issue( + "source_archive", + "preserved", + sidecar.file_name().unwrap().to_string_lossy(), + "Verified original world retained for unsupported/stale data", + ); + p.worlds + .iter() + .map(|(w, d)| (w.clone(), d.path.clone())) + .collect::>() + } else { + ensure!( + mode != Mode::Exact, + "exact_new_world: new Anvil generation has derived-light/heightmap reconstruction and requires best-effort" + ); + let w = world.context("anvil_world: --world required for native store")?; + report.worlds.insert(w.into(), store.revision(w)?); + io::gzip_write( + &stage.path().join("level.dat"), + &nbt::encode("", &new_level(w)?)?, + )?; + new_world_metadata(stage.path())?; + if p.is_some() { + let source_sidecar = io::available(stage.path(), "shacraft-source-sidecar", "")?; + io::copy_verified( + &store_path.join("compat/original"), + &source_sidecar, + &store_path.join("compat/files.jsonl"), + )?; + report.issue("cross_format_opaque_data","unsupported","source sidecar","Source format's block entities, biome layout and opaque metadata are archived without translation to Anvil; block states and the entity bridge are exported"); + } + report.issue("new_world_profile","approximated","level.dat","Creative Java 26.2 overworld, empty flat generator, Y[-64,319], default plains biomes. Minecraft reconstructs light/heightmaps. Native entities use the explicit property bridge."); + BTreeMap::from([(w.into(), String::new())]) + }; + for (w, dimension) in &dimensions { + if original.is_some_and(|p| p.worlds[w].revision == report.worlds[w]) { + continue; + } + // Disk-backed unique chunk queue keeps the number of coordinates held + // in RAM bounded, independent of world size. Paths are enumerated twice, + // never retained as an unbounded vector. + let queue = tempfile::Builder::new() + .prefix(".compat-queue-") + .tempdir_in(stage.path())?; + let queue_dir = queue.path().to_owned(); + let dim_path = if dimension.is_empty() { + stage.path().to_owned() + } else { + io::safe_path(stage.path(), dimension)? + }; + let mut after = None; + loop { + let page = store.section_positions(w, after, 4096)?; + if page.is_empty() { + break; + } + for pos in &page { + ensure!( + (-4..=19).contains(&pos[1]), + "anvil_height: export edits/newsections require Y[-64,319]" + ); + queue_chunk(&queue_dir, pos[0], pos[2])?; + } + after = page.last().copied(); + } + if dim_path.join("region").exists() { + for e in fs::read_dir(dim_path.join("region"))? { + let path = e?.path(); + if path.extension().and_then(|s| s.to_str()) != Some("mca") { + continue; + } + let r = Region::open(&path, false)?; + for i in 0..1024 { + if r.locations[i] != 0 { + let (x, z) = r.coordinates(i)?; + queue_chunk(&queue_dir, x, z)? + } + } + } + } + for e in fs::read_dir(&queue_dir)? { + let p = e?.path(); + let name = p + .file_name() + .and_then(|s| s.to_str()) + .context("queue path")?; + let (x, z) = name.split_once(',').context("queue coords")?; + let (x, z) = (x.parse::()?, z.parse::()?); + let path = dim_path.join("region").join(format!( + "r.{}.{}.mca", + x.div_euclid(32), + z.div_euclid(32) + )); + let mut region = if path.exists() { + Region::open(&path, true)? + } else { + Region::create(&path)? + }; + let i = (x.rem_euclid(32) + z.rem_euclid(32) * 32) as usize; + let old = region.read(i)?; + let fresh = old.is_none(); + let (name, mut tag) = old.unwrap_or_else(|| ("".into(), new_chunk(x, z))); + let c = tag.compound_mut()?; + check_chunk(c, x, z, Mode::BestEffort, &mut report)?; + let mut sections = match c.remove("sections").context("chunk sections")? { + Tag::List(_, v) => v, + _ => bail!("chunk sections type"), + }; + let mut changed = BTreeSet::new(); + let mut unknown_states = BTreeSet::new(); + for y in -4..20 { + let cells = section_cells(&mut store, w, [x, y, z])?; + let existing = sections.iter().position(|s| { + s.compound() + .ok() + .and_then(|c| c.get("Y")) + .and_then(|t| t.numeric_i32().ok()) + == Some(y) + }); + let mut old_states = vec!["minecraft:air".to_string(); 4096]; + if let Some(s) = existing { + let sec = sections[s].compound()?; + if let Some(b) = sec.get("block_states") { + let (pal, ids) = unpack(b.compound()?, 4096, 4)?; + for (j, id) in ids.into_iter().enumerate() { + old_states[j] = pal[id].clone(); + } + } + } + let mut section_changed = false; + for j in 0..4096 { + let target = &store.registry()[cells[j] as usize]; + if !target.starts_with("minecraft:") && unknown_states.insert(target.clone()) { + report.issue("nonvanilla_block_state","unsupported",format!("{w}:chunk{x},{z}"),format!("{target} is preserved; target requires matching mod or explicit external mapping; vanilla may replace it with air")); + } + if old_states[j] != store.registry()[cells[j] as usize] { + section_changed = true; + changed.insert([ + x * 16 + (j % 16) as i32, + y * 16 + (j / 256) as i32, + z * 16 + ((j / 16) % 16) as i32, + ]); + } + } + if section_changed || fresh { + let index = if let Some(i) = existing { + i + } else { + sections.push(air_section(y)); + sections.len() - 1 + }; + let sec = sections[index].compound_mut()?; + sec.insert("block_states".into(), packed(&cells, store.registry())); + sec.remove("BlockLight"); + sec.remove("SkyLight"); + report.sections += 1; + report.nonair_blocks += cells.iter().filter(|v| **v != 0).count() as u64; + } + } + c.insert("sections".into(), Tag::List(10, sections)); + if !changed.is_empty() || fresh { + invalidate(c, &changed, &mut report, w, x, z)?; + region.write(i, &name, &tag)?; + report.chunks += 1; + let poi = dim_path.join("poi").join(format!( + "r.{}.{}.mca", + x.div_euclid(32), + z.div_euclid(32) + )); + if poi.exists() { + let mut r = Region::open(&poi, true)?; + if r.locations[i] != 0 { + r.clear(i)?; + report.issue("poi_rebuild","dropped",format!("{w}:chunk{x},{z}"),"Changed chunk POI record invalidated; original remains in shacraft-source-sidecar") + } + } + } + } + fs::remove_dir_all(queue_dir)?; + } + crate::entities::export_anvil( + store_path, + stage.path(), + p.as_ref(), + &dimensions, + &mut report, + )?; + io::report(stage.path(), &report)?; + io::publish(stage, destination)?; + Ok(report) +} +fn queue_chunk(root: &Path, x: i32, z: i32) -> Result<()> { + let p = root.join(format!("{x},{z}")); + match OpenOptions::new().write(true).create_new(true).open(p) { + Ok(_) => Ok(()), + Err(e) if e.kind() == std::io::ErrorKind::AlreadyExists => Ok(()), + Err(e) => Err(e.into()), + } +} +fn invalidate( + c: &mut Compound, + changed: &BTreeSet<[i32; 3]>, + report: &mut Report, + world: &str, + x: i32, + z: i32, +) -> Result<()> { + let location = format!("{world}:chunk{x},{z}"); + c.insert("isLightOn".into(), Tag::Byte(0)); + c.insert("Heightmaps".into(), compound([] as [(&str, Tag); 0])); + if let Some(Tag::List(_, sections)) = c.get_mut("sections") { + for s in sections { + let s = s.compound_mut()?; + s.remove("BlockLight"); + s.remove("SkyLight"); + } + } + for key in ["block_entities", "block_ticks", "fluid_ticks"] { + if let Some(Tag::List(_, v)) = c.get_mut(key) { + let before = v.len(); + v.retain(|t| { + let Ok(t) = t.compound() else { return true }; + let pos = ["x", "y", "z"].map(|key| t.get(key).and_then(|t| t.int().ok())); + if let [Some(x), Some(y), Some(z)] = pos { + !changed.contains(&[x, y, z]) + } else { + true + } + }); + if v.len() != before { + report.issue("dependent_records_invalidated","dropped",&location,format!("Removed{} stale {key} at edited coordinates; originals retained in sidecar",before-v.len())) + } + } + } + report.issue("derived_fields_invalidated","approximated",location,"Removed stored light arrays and heightmaps, marked isLightOn=false for Minecraft reconstruction; unknown fields/entities/biomes preserved. No vanilla simulation guarantee."); + Ok(()) +} + +#[cfg(test)] +mod tests { + use super::*; + #[test] + fn section_palette_boundaries() { + for size in [1, 2, 16, 17, 32, 33, 256, 257, 4096] { + let registry = (0..size) + .map(|i| format!("test:block_{i}")) + .collect::>(); + let cells = std::array::from_fn(|i| (i % size) as u32); + let encoded = packed(&cells, ®istry); + let (palette, indices) = unpack(encoded.compound().unwrap(), 4096, 4).unwrap(); + for (i, id) in indices.iter().enumerate() { + assert_eq!(palette[*id], registry[cells[i] as usize]) + } + } + } + #[test] + fn negative_region_zlib_and_external() { + let d = tempfile::tempdir().unwrap(); + let p = d.path().join("r.-1.-1.mca"); + let mut r = Region::create(&p).unwrap(); + let t = new_chunk(-1, -1); + r.write(1023, "", &t).unwrap(); + assert_eq!(r.read(1023).unwrap(), Some(("".into(), t))); + assert_eq!(r.coordinates(1023).unwrap(), (-1, -1)); + } + #[test] + fn all_compression_modes_and_external_payloads() { + for external in [false, true] { + for kind in 1..=4 { + let dir = tempfile::tempdir().unwrap(); + let path = dir.path().join("r.0.0.mca"); + let mut region = Region::create(&path).unwrap(); + let tag = new_chunk(0, 0); + let plain = nbt::encode("", &tag).unwrap(); + let encoded = match kind { + 1 => { + let mut e = flate2::write::GzEncoder::new( + Vec::new(), + flate2::Compression::default(), + ); + e.write_all(&plain).unwrap(); + e.finish().unwrap() + } + 2 => { + let mut e = flate2::write::ZlibEncoder::new( + Vec::new(), + flate2::Compression::default(), + ); + e.write_all(&plain).unwrap(); + e.finish().unwrap() + } + 3 => plain.clone(), + _ => { + let compressed = lz4_flex::block::compress(&plain); + let mut b = b"LZ4Block".to_vec(); + b.push(32 | 6); + b.extend((compressed.len() as u32).to_le_bytes()); + b.extend((plain.len() as u32).to_le_bytes()); + b.extend( + (xxhash_rust::xxh32::xxh32(&plain, 0x9747b28c) & 0x0fff_ffff) + .to_le_bytes(), + ); + b.extend(compressed); + b.extend(b"LZ4Block"); + b.push(16); + b.extend([0; 12]); + b + } + }; + let mut sector = vec![0u8; 4096]; + let length = if external { 1 } else { encoded.len() + 1 }; + sector[..4].copy_from_slice(&(length as u32).to_be_bytes()); + sector[4] = kind | if external { 128 } else { 0 }; + if external { + fs::write(dir.path().join("c.0.0.mcc"), encoded).unwrap(); + } else { + sector[5..5 + encoded.len()].copy_from_slice(&encoded); + } + region.file.seek(SeekFrom::Start(8192)).unwrap(); + region.file.write_all(§or).unwrap(); + region.file.seek(SeekFrom::Start(0)).unwrap(); + region.file.write_all(&513u32.to_be_bytes()).unwrap(); + drop(region); + let mut region = Region::open(&path, false).unwrap(); + assert_eq!(region.read(0).unwrap(), Some(("".into(), tag))); + } + } + } + #[test] + fn oversized_chunk_writes_external_and_validates_checksum() { + let dir = tempfile::tempdir().unwrap(); + let path = dir.path().join("r.0.0.mca"); + let mut region = Region::create(&path).unwrap(); + let mut seed = 123456789u32; + let data = (0..1_100_000) + .map(|_| { + seed ^= seed << 13; + seed ^= seed >> 17; + seed ^= seed << 5; + seed as u8 + }) + .collect::>(); + let mut tag = new_chunk(0, 0); + tag.compound_mut() + .unwrap() + .insert("UnknownLargePayload".into(), Tag::ByteArray(data)); + region.write(0, "", &tag).unwrap(); + assert!(dir.path().join("c.0.0.mcc").exists()); + assert_eq!(region.read(0).unwrap(), Some(("".into(), tag))); + } + #[test] + fn lz4_raw_and_compressed() { + let input = b"hello hello hello hello hello hello"; + for (kind, data) in [(16, input.to_vec()), (32, lz4_flex::block::compress(input))] { + let mut stream = b"LZ4Block".to_vec(); + stream.push(kind); + stream.extend((data.len() as u32).to_le_bytes()); + stream.extend((input.len() as u32).to_le_bytes()); + stream + .extend((xxhash_rust::xxh32::xxh32(input, 0x9747b28c) & 0x0fff_ffff).to_le_bytes()); + stream.extend(data); + stream.extend(b"LZ4Block"); + stream.push(16); + stream.extend([0; 12]); + assert_eq!(lz4_decode(&stream).unwrap(), input); + stream[17] ^= 1; + assert!(lz4_decode(&stream).is_err()); + } + } +} diff --git a/crates/shacraft-compat/src/entities.rs b/crates/shacraft-compat/src/entities.rs new file mode 100644 index 0000000..a7816d4 --- /dev/null +++ b/crates/shacraft-compat/src/entities.rs @@ -0,0 +1,677 @@ +//! Offline bridge to the server's persistent entity metadata. Original typed +//! NBT is pinned per UUID; a bounded visual subset is editable by the server. +use crate::{ + Mode, Provenance, Report, io, + nbt::{self, Compound, Tag, compound, get}, +}; +use anyhow::{Context, Result, ensure}; +use rusqlite::Connection; +use serde::{Deserialize, Serialize}; +use serde_json::{Value, json}; +use sha2::{Digest, Sha256}; +use std::{collections::BTreeMap, fs, path::Path}; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +pub(crate) struct Entity { + pub id: String, + pub world: String, + pub kind: String, + #[serde(rename = "type")] + pub entity_type: String, + pub position: [f64; 3], + pub yaw: f64, + pub properties: Value, +} +type Entities = BTreeMap; +const MAX_ENTITIES: usize = 4096; +pub(crate) fn fingerprint(entities: &Entities) -> Result { + Ok(format!( + "{:x}", + Sha256::digest(serde_json::to_vec(entities)?) + )) +} +pub(crate) fn read_native(root: &Path) -> Result { + let p = root.join("server.sqlite3"); + if !p.exists() { + return Ok(BTreeMap::new()); + } + let conn = Connection::open_with_flags(p, rusqlite::OpenFlags::SQLITE_OPEN_READ_ONLY)?; + let data: String = conn.query_row( + "SELECT json FROM metadata WHERE id=1 AND length(json)<=8388608", + [], + |r| r.get(0), + )?; + let value: Value = serde_json::from_str(&data)?; + let entities: Entities = + serde_json::from_value(value.get("entities").cloned().unwrap_or_else(|| json!({})))?; + ensure!( + entities.len() <= MAX_ENTITIES, + "entity_limit: native entity count" + ); + for (id, e) in &entities { + ensure!( + id.len() == 36 + && id + .bytes() + .enumerate() + .all(|(i, b)| if [8, 13, 18, 23].contains(&i) { + b == b'-' + } else { + b.is_ascii_hexdigit() + }), + "entity_id: UUID string required" + ); + ensure!( + id == &e.id + && e.position + .iter() + .all(|v| v.is_finite() && v.abs() <= 30_000_000.) + && e.yaw.is_finite(), + "entity_invalid: identity/coordinates" + ); + ensure!( + serde_json::to_vec(&e.properties)?.len() <= 16384, + "entity_limit: properties" + ); + } + Ok(entities) +} +pub(crate) fn changed(root: &Path, p: &Provenance) -> Result { + if let Some(hash) = &p.entity_fingerprint { + Ok(&fingerprint(&read_native(root)?)? != hash) + } else { + Ok(!read_native(root)?.is_empty()) + } +} +fn baseline(root: &Path, p: Option<&Provenance>) -> Result { + let path = root.join("compat/native-entities.json"); + if !path.exists() { + return Ok(BTreeMap::new()); + } + let result: Entities = serde_json::from_slice(&io::read_limited(&path, 8 * 1024 * 1024)?)?; + ensure!(result.len() <= MAX_ENTITIES, "entity_limit: baseline"); + if let Some(hash) = p.and_then(|p| p.entity_fingerprint.as_ref()) { + ensure!( + &fingerprint(&result)? == hash, + "provenance_corrupt: entity baseline hash" + ); + } + Ok(result) +} +fn uuid(tag: &Tag) -> Result { + let c = tag.compound()?; + let bytes = if let Some(Tag::IntArray(uuid)) = c.get("UUID") { + if uuid.len() == 4 { + uuid.iter() + .flat_map(|n| n.to_be_bytes()) + .collect::>() + } else { + anyhow::bail!("entity_uuid: length") + } + } else { + Sha256::digest(nbt::encode("", tag)?)[..16].to_vec() + }; + let hex = bytes.iter().map(|b| format!("{b:02x}")).collect::(); + Ok(format!( + "{}-{}-{}-{}-{}", + &hex[..8], + &hex[8..12], + &hex[12..16], + &hex[16..20], + &hex[20..] + )) +} +fn uuid_tag(id: &str) -> Tag { + let hex = id.replace('-', ""); + let bytes = if hex.len() == 32 { + (0..32) + .step_by(2) + .map(|i| u8::from_str_radix(&hex[i..i + 2], 16)) + .collect::, _>>() + .unwrap_or_else(|_| Sha256::digest(id.as_bytes())[..16].to_vec()) + } else { + Sha256::digest(id.as_bytes())[..16].to_vec() + }; + Tag::IntArray( + bytes + .chunks_exact(4) + .map(|b| i32::from_be_bytes(b.try_into().expect("four bytes"))) + .collect(), + ) +} +fn number(t: &Tag) -> Result { + match t { + Tag::Double(v) => Ok(f64::from_bits(*v)), + Tag::Float(v) => Ok(f32::from_bits(*v) as f64), + _ => anyhow::bail!("entity_position: floating point expected"), + } +} +fn from_tag(tag: &Tag, world: &str) -> Result { + let c = tag.compound()?; + let kind = get(c, "id")?.string()?.to_owned(); + ensure!(kind.len() <= 512, "entity_limit: kind identifier"); + let pos = get(c, "Pos")?.list(6)?; + ensure!(pos.len() == 3, "entity_position: 3 coordinates required"); + let position = [number(&pos[0])?, number(&pos[1])?, number(&pos[2])?]; + ensure!( + position + .iter() + .all(|v| v.is_finite() && v.abs() <= 30_000_000.), + "entity_position: range" + ); + let yaw = c + .get("Rotation") + .map(|r| r.list(5)) + .transpose()? + .and_then(|r| r.first()) + .map(number) + .transpose()? + .unwrap_or(0.) + .to_radians(); + ensure!(yaw.is_finite(), "entity_yaw: finite required"); + let mut properties = serde_json::Map::new(); + for key in [ + "Health", + "CustomName", + "NoGravity", + "Invisible", + "Invulnerable", + "Glowing", + "Silent", + "CustomNameVisible", + ] { + if let Some(t) = c.get(key) { + let v = match t { + Tag::Byte(v) => json!(*v != 0), + Tag::Float(v) => json!(f32::from_bits(*v)), + Tag::String(v) => json!(v), + _ => continue, + }; + properties.insert(key.into(), v); + } + } + let id = uuid(tag)?; + ensure!( + serde_json::to_vec(&properties)?.len() <= 16384, + "entity_limit: visual properties" + ); + Ok(Entity { + id, + world: world.into(), + entity_type: kind.clone(), + kind, + position, + yaw, + properties: Value::Object(properties), + }) +} +fn keep( + root: &Path, + tag: &Tag, + world: &str, + entities: &mut Entities, + report: &mut Report, +) -> Result<()> { + let entity = match from_tag(tag, world) { + Ok(e) => e, + Err(e) => { + report.issue( + "entity_visual_unavailable", + "preserved", + world, + format!("Typed NBT retained; cannot bridge entity: {e}"), + ); + return Ok(()); + } + }; + let ambiguous = root.join("compat/ambiguous-uuids").join(&entity.id); + if ambiguous.exists() { + report.issue( + "entity_duplicate_uuid", + "preserved", + &entity.id, + "Ambiguous UUID excluded from editable subset; all records retained in source", + ); + return Ok(()); + } + if let Some(previous) = entities.remove(&entity.id) { + report.native_entity_bytes = report + .native_entity_bytes + .saturating_sub((serde_json::to_vec(&previous)?.len() + previous.id.len() + 8) as u64); + fs::create_dir_all(ambiguous.parent().context("ambiguous UUID parent")?)?; + fs::write(&ambiguous, b"ambiguous UUID; preserve source records\n")?; + fs::remove_file( + root.join("compat/entities") + .join(format!("{}.nbt", entity.id)), + )?; + report.issue( + "entity_duplicate_uuid", + "preserved", + &entity.id, + "All duplicate UUID records remain in source; excluded from editable subset", + ); + return Ok(()); + } + if entities.len() >= MAX_ENTITIES { + report.issue("entity_visual_limit","preserved",&entity.id,"More than 4096 entities; additional records remain in disk source and roundtrip unchanged"); + return Ok(()); + } + let bytes = (serde_json::to_vec(&entity)?.len() + entity.id.len() + 8) as u64; + if report.native_entity_bytes + bytes > 6 * 1024 * 1024 { + report.issue("entity_visual_byte_limit","preserved",&entity.id,"Native entity subset exceeds 6 MiB; source NBT remains on disk. Reserved space keeps full server metadata below 8 MiB."); + return Ok(()); + } + report.native_entity_bytes += bytes; + let path = root.join("compat/entities"); + fs::create_dir_all(&path)?; + fs::write( + path.join(format!("{}.nbt", entity.id)), + nbt::encode("", tag)?, + )?; + entities.insert(entity.id.clone(), entity); + Ok(()) +} +fn save(root: &Path, p: &mut Provenance, entities: Entities) -> Result<()> { + let worlds = p + .worlds + .keys() + .map(|w| { + let spawn = if let (Some(min), Some(max)) = (p.schem_min, p.schem_max) { + [min[0] as f64 + 0.5, max[1] as f64 + 2., min[2] as f64 + 2.5] + } else { + [0., 80., 0.] + }; + (w.clone(), json!({"spawn":spawn,"mode":"creative"})) + }) + .collect::>(); + let value = json!({"worlds":worlds,"entities":entities,"revision":0}); + ensure!( + serde_json::to_vec(&value)?.len() <= 8 * 1024 * 1024, + "entity_limit: server metadata exceeds 8 MiB" + ); + let conn = Connection::open(root.join("server.sqlite3"))?; + conn.execute_batch("PRAGMA journal_mode=DELETE; PRAGMA synchronous=FULL; CREATE TABLE metadata(id INTEGER PRIMARY KEY CHECK(id=1),json TEXT NOT NULL);")?; + conn.execute( + "INSERT INTO metadata(id,json)VALUES(1,?1)", + [serde_json::to_string(&value)?], + )?; + p.entity_fingerprint = Some(fingerprint(&entities)?); + for id in entities.keys() { + let bytes = io::read_limited( + &root.join("compat/entities").join(format!("{id}.nbt")), + nbt::MAX_BYTES, + )?; + p.entity_blob_hashes + .insert(id.clone(), format!("{:x}", Sha256::digest(bytes))); + } + io::json(&root.join("compat/native-entities.json"), &entities)?; + Ok(()) +} +pub(crate) fn import_anvil( + root: &Path, + original: &Path, + p: &mut Provenance, + report: &mut Report, +) -> Result<()> { + let mut entities = BTreeMap::new(); + for (world, dim) in &p.worlds { + let base = if dim.path.is_empty() { + original.to_owned() + } else { + io::safe_path(original, &dim.path)? + }; + let folder = base.join("entities"); + if !folder.exists() { + continue; + } + for e in fs::read_dir(folder)? { + let path = e?.path(); + if path.extension().and_then(|s| s.to_str()) != Some("mca") { + continue; + } + let mut r = crate::anvil::Region::open(&path, false)?; + for i in 0..1024 { + if let Some((_, tag)) = r.read(i)? { + let tag = tag.compound()?; + let version = get(tag, "DataVersion")?.int()?; + ensure!( + report.mode != Mode::Exact || version == crate::DATA_VERSION, + "unsupported_data_version: entity chunk uses {version}" + ); + if version != crate::DATA_VERSION { + report.issue( + "unverified_entity_version", + "unsupported", + world, + format!( + "Entity chunk DataVersion {version} is preserved without migration" + ), + ); + } + if let Some(list) = tag.get("Entities") { + for entity in list.list(10)? { + keep(root, entity, world, &mut entities, report)? + } + } + } + } + } + } + report.issue("entity_visual_bridge","preserved","server.sqlite3",format!("{} entities are editable through server/MCP; full original typed NBT is pinned on disk",entities.len())); + save(root, p, entities) +} +fn schem_tag(t: &Tag, offset: [i32; 3]) -> Result { + let c = t.compound()?; + let mut data = c + .get("Data") + .cloned() + .unwrap_or_else(|| compound([] as [(&str, Tag); 0])); + let data = data.compound_mut()?; + data.insert("id".into(), get(c, "Id")?.clone()); + let list = get(c, "Pos")?.list(6)?; + ensure!(list.len() == 3, "schem_entity_position"); + let mut pos = Vec::new(); + for i in 0..3 { + pos.push(Tag::Double( + (number(&list[i])? + f64::from(offset[i])).to_bits(), + )) + } + data.insert("Pos".into(), Tag::List(6, pos)); + Ok(Tag::Compound(data.clone())) +} +pub(crate) fn import_schem( + root: &Path, + c: &Compound, + p: &mut Provenance, + report: &mut Report, +) -> Result<()> { + let mut entities = BTreeMap::new(); + let world = p.worlds.keys().next().context("schem world")?; + if let Some(t) = c.get("Entities") { + for entity in t.list(10)? { + let tag = schem_tag(entity, p.schem_min.unwrap_or([0; 3]))?; + keep(root, &tag, world, &mut entities, report)? + } + } + save(root, p, entities) +} + +fn materialize( + root: &Path, + e: &Entity, + base: Option<&Entity>, + p: Option<&Provenance>, + report: &mut Report, +) -> Result { + let mut tag = if base.is_some() { + { + let bytes = io::read_limited( + &root.join("compat/entities").join(format!("{}.nbt", e.id)), + nbt::MAX_BYTES, + )?; + let hash = format!("{:x}", Sha256::digest(&bytes)); + ensure!( + p.and_then(|p| p.entity_blob_hashes.get(&e.id)) == Some(&hash), + "provenance_corrupt: entity blob hash" + ); + nbt::decode(&bytes)?.1 + } + } else { + compound([("UUID", uuid_tag(&e.id))]) + }; + if base == Some(e) { + return Ok(tag); + } + let c = tag.compound_mut()?; + if let Some(base) = base + && let Some(old) = base.properties.as_object() + { + for key in old.keys() { + if e.properties.get(key).is_none() { + c.remove(key); + } + } + } + c.insert("id".into(), Tag::String(e.kind.clone())); + c.insert( + "Pos".into(), + Tag::List( + 6, + e.position + .iter() + .map(|v| Tag::Double(v.to_bits())) + .collect(), + ), + ); + let pitch = c + .get("Rotation") + .and_then(|t| t.list(5).ok()) + .and_then(|v| v.get(1)) + .cloned() + .unwrap_or(Tag::Float(0)); + c.insert( + "Rotation".into(), + Tag::List( + 5, + vec![Tag::Float((e.yaw.to_degrees() as f32).to_bits()), pitch], + ), + ); + if let Some(props) = e.properties.as_object() { + for (k, v) in props { + let tag = match k.as_str() { + "Health" => v + .as_f64() + .filter(|v| v.is_finite() && v.abs() <= f32::MAX as f64) + .map(|v| Tag::Float((v as f32).to_bits())), + "CustomName" => v.as_str().map(|v| Tag::String(v.into())), + "NoGravity" | "Invisible" | "Invulnerable" | "Glowing" | "Silent" + | "CustomNameVisible" => v.as_bool().map(|v| Tag::Byte(v as i8)), + _ => None, + }; + if let Some(tag) = tag { + c.insert(k.clone(), tag); + } else { + ensure!( + report.mode != Mode::Exact, + "exact_entity_property: unsupported {k}" + ); + report.issue("entity_property_unmapped","unsupported",&e.id,format!("Property {k} retained in shacraft-native-entities.json; not translated into vanilla NBT")); + } + } + } + if base.is_some() { + report.issue("entity_edited","approximated",&e.id,"Position/yaw/type and supported scalar properties applied; unknown original NBT retained; passenger/tether/AI relationships not simulated") + } else { + report.issue("entity_created","preserved",&e.id,"UUID, position, rotation, supported properties emitted; vanilla initializes omitted defaults") + } + Ok(tag) +} +pub(crate) fn export_anvil( + root: &Path, + out: &Path, + p: Option<&Provenance>, + worlds: &BTreeMap, + report: &mut Report, +) -> Result<()> { + let current = read_native(root)?; + let base = baseline(root, p)?; + let source_is_anvil = p.is_some_and(|p| p.format == "anvil"); + let scratch = tempfile::Builder::new() + .prefix(".entity-export-") + .tempdir_in(out)?; + // Remove only the editable baseline subset. Unbridged records remain intact. + for (world, dim) in worlds { + let dir = if dim.is_empty() { + out.to_owned() + } else { + io::safe_path(out, dim)? + }; + let folder = dir.join("entities"); + if !folder.exists() { + continue; + } + for e in fs::read_dir(&folder)? { + let path = e?.path(); + if path.extension().and_then(|s| s.to_str()) != Some("mca") { + continue; + } + let mut r = crate::anvil::Region::open(&path, true)?; + for i in 0..1024 { + let Some((name, mut tag)) = r.read(i)? else { + continue; + }; + if let Some(Tag::List(_, list)) = tag.compound_mut()?.get_mut("Entities") { + let before = list.len(); + list.retain(|t| { + uuid(t) + .ok() + .and_then(|id| base.get(&id)) + .is_none_or(|b| &b.world != world || current.get(&b.id) == Some(b)) + }); + if list.len() != before { + r.write(i, &name, &tag)?; + } + } + } + } + } + for (id, e) in ¤t { + let Some(dim) = worlds.get(&e.world) else { + continue; + }; + if source_is_anvil && base.get(id) == Some(e) { + continue; + } + let tag = materialize(root, e, base.get(id), p, report)?; + if !e.kind.starts_with("minecraft:") { + report.issue( + "nonvanilla_entity", + "unsupported", + id, + "Preserved entity id requires matching target mod; vanilla may discard it", + ); + } + fs::write( + scratch.path().join(format!("{id}.nbt")), + nbt::encode("", &tag)?, + )?; + let (x, z) = ( + (e.position[0].floor() as i32).div_euclid(16), + (e.position[2].floor() as i32).div_euclid(16), + ); + let dir = if dim.is_empty() { + out.to_owned() + } else { + io::safe_path(out, dim)? + }; + let path = + dir.join("entities") + .join(format!("r.{}.{}.mca", x.div_euclid(32), z.div_euclid(32))); + let mut r = if path.exists() { + crate::anvil::Region::open(&path, true)? + } else { + crate::anvil::Region::create(&path)? + }; + let index = (x.rem_euclid(32) + z.rem_euclid(32) * 32) as usize; + let (name, mut chunk) = r.read(index)?.unwrap_or_else(|| { + ( + "".into(), + compound([ + ("DataVersion", Tag::Int(crate::DATA_VERSION)), + ("Position", Tag::IntArray(vec![x, z])), + ("Entities", Tag::List(10, vec![])), + ]), + ) + }); + let c = chunk.compound_mut()?; + let list = c.entry("Entities".into()).or_insert(Tag::List(10, vec![])); + if let Tag::List(kind, list) = list { + ensure!(*kind == 10 || list.is_empty(), "entity_list_type"); + *kind = 10; + list.push(tag); + } else { + anyhow::bail!("entity_list_type") + }; + r.write(index, &name, &chunk)?; + } + for (id, e) in &base { + if worlds.contains_key(&e.world) && !current.contains_key(id) { + report.issue( + "entity_removed", + "dropped", + id, + "Removed via native metadata; original typed NBT remains in source sidecar", + ) + } + } + let saved = io::available(out, "shacraft-native-entities", ".json")?; + io::json(&saved, ¤t)?; + Ok(()) +} +pub(crate) fn export_schem( + root: &Path, + world: &str, + c: &mut Compound, + offset: [i32; 3], + p: Option<&Provenance>, + report: &mut Report, +) -> Result<()> { + let current = read_native(root)?; + let base = baseline(root, p)?; + let had_entities = c.contains_key("Entities"); + let mut source = match c.remove("Entities") { + Some(Tag::List(_, v)) => v, + None => vec![], + _ => anyhow::bail!("schem_entities_type"), + }; + let mut out = Vec::new(); + let mut original_wrappers = BTreeMap::new(); + for entity in source.drain(..) { + let tag = schem_tag(&entity, offset)?; + let id = uuid(&tag)?; + if base.contains_key(&id) { + original_wrappers.insert(id, entity); + continue; + } + out.push(entity); + } + for (id, e) in ¤t { + if e.world != world { + continue; + } + if base.get(id) == Some(e) + && let Some(wrapper) = original_wrappers.remove(id) + { + out.push(wrapper); + continue; + } + let tag = materialize(root, e, base.get(id), p, report)?; + let mut data = tag.compound()?.clone(); + data.remove("id"); + data.remove("Pos"); + let mut wrapper = original_wrappers + .remove(id) + .unwrap_or_else(|| compound([] as [(&str, Tag); 0])); + let updated = compound([ + ("Id", Tag::String(e.kind.clone())), + ( + "Pos", + Tag::List( + 6, + e.position + .iter() + .enumerate() + .map(|(i, v)| Tag::Double((v - f64::from(offset[i])).to_bits())) + .collect(), + ), + ), + ("Data", Tag::Compound(data)), + ]); + wrapper.compound_mut()?.extend(updated.compound()?.clone()); + out.push(wrapper); + } + if !out.is_empty() || had_entities || !base.is_empty() { + c.insert("Entities".into(), Tag::List(10, out)); + } + Ok(()) +} diff --git a/crates/shacraft-compat/src/io.rs b/crates/shacraft-compat/src/io.rs new file mode 100644 index 0000000..2663d31 --- /dev/null +++ b/crates/shacraft-compat/src/io.rs @@ -0,0 +1,306 @@ +use anyhow::{Context, Result, bail, ensure}; +use serde::{Deserialize, Serialize}; +use sha2::{Digest, Sha256}; +use std::{ + fs::{self, File, OpenOptions}, + io::{BufRead, BufReader, Read, Write}, + path::{Component, Path, PathBuf}, +}; +pub(crate) fn read_limited(p: &Path, max: usize) -> Result> { + let mut b = Vec::new(); + File::open(p)?.take(max as u64 + 1).read_to_end(&mut b)?; + ensure!(b.len() <= max, "input_limit: file {}", p.display()); + Ok(b) +} +pub(crate) fn inflate(r: impl Read) -> Result> { + let mut b = Vec::new(); + r.take(super::nbt::MAX_BYTES as u64 + 1) + .read_to_end(&mut b)?; + ensure!( + b.len() <= super::nbt::MAX_BYTES, + "input_limit: decompressed NBT exceeds16MiB" + ); + Ok(b) +} +pub(crate) fn gzip_read(p: &Path) -> Result> { + inflate(flate2::read::GzDecoder::new(File::open(p)?)) +} +pub(crate) fn gzip_write(p: &Path, b: &[u8]) -> Result<()> { + let f = OpenOptions::new().write(true).create_new(true).open(p)?; + let mut w = flate2::write::GzEncoder::new(f, flate2::Compression::default()); + w.write_all(b)?; + w.finish()?.sync_all()?; + Ok(()) +} +pub(crate) fn json(p: &Path, v: &impl Serialize) -> Result<()> { + let mut f = OpenOptions::new().write(true).create_new(true).open(p)?; + serde_json::to_writer_pretty(&mut f, v)?; + f.write_all(b"\n")?; + f.sync_all()?; + Ok(()) +} +pub(crate) fn available(root: &Path, stem: &str, extension: &str) -> Result { + for i in 0..10000 { + let suffix = if i == 0 { + String::new() + } else { + format!("-{i}") + }; + let p = root.join(format!("{stem}{suffix}{extension}")); + if !p.exists() { + return Ok(p); + } + } + bail!("output_limit: too many reserved filenames") +} +pub(crate) fn stage(dest: &Path) -> Result { + ensure!( + !dest.exists(), + "destination_exists: refusing overwrite {}", + dest.display() + ); + let parent = dest + .parent() + .filter(|p| !p.as_os_str().is_empty()) + .unwrap_or(Path::new(".")); + fs::create_dir_all(parent)?; + Ok(tempfile::Builder::new() + .prefix(".shacraft-convert-") + .tempdir_in(parent)?) +} +pub(crate) fn publish(stage: tempfile::TempDir, dest: &Path) -> Result<()> { + sync_tree(stage.path(), 0)?; + let parent = dest + .parent() + .filter(|p| !p.as_os_str().is_empty()) + .unwrap_or(Path::new(".")); + rustix::fs::renameat_with( + rustix::fs::CWD, + stage.path(), + rustix::fs::CWD, + dest, + rustix::fs::RenameFlags::NOREPLACE, + ) + .context("publish: atomic no-overwrite rename")?; + File::open(parent)?.sync_all()?; + Ok(()) +} +pub(crate) fn report(root: &Path, value: &super::Report) -> Result<()> { + // Imported worlds may already carry a report; never replace source files. + for i in 0..10000 { + let name = if i == 0 { + "conversion-report.json".to_owned() + } else { + format!("conversion-report-{i}.json") + }; + let path = root.join(name); + if !path.exists() { + return json(&path, value); + } + } + bail!("report_limit: too many existing reports") +} +fn sync_tree(p: &Path, depth: usize) -> Result<()> { + ensure!(depth <= 32, "input_limit: path depth"); + for e in fs::read_dir(p)? { + let e = e?; + let t = e.file_type()?; + if t.is_dir() { + sync_tree(&e.path(), depth + 1)? + } else if t.is_file() { + File::open(e.path())?.sync_all()? + } else { + bail!("unsafe_path: special file") + } + } + File::open(p)?.sync_all()?; + Ok(()) +} +#[derive(Serialize, Deserialize)] +struct FileHash { + path: String, + size: u64, + sha256: String, +} +pub(crate) fn safe_path(root: &Path, s: &str) -> Result { + let p = Path::new(s); + ensure!( + p.components().all(|c| matches!(c, Component::Normal(_))), + "unsafe_path: nonrelative path" + ); + let mut result = root.to_path_buf(); + ensure!( + !fs::symlink_metadata(root)?.file_type().is_symlink(), + "unsafe_path: symlink root" + ); + for part in p.components() { + result.push(part); + if let Ok(metadata) = fs::symlink_metadata(&result) { + ensure!( + !metadata.file_type().is_symlink(), + "unsafe_path: symlink component" + ); + } + } + Ok(result) +} +pub(crate) fn copy_source( + source: &Path, + dest: &Path, + index: &Path, + report: &mut super::Report, +) -> Result<()> { + ensure!( + !fs::symlink_metadata(source)?.file_type().is_symlink(), + "unsafe_path: symlink root" + ); + fs::create_dir_all(dest)?; + let mut log = File::create(index)?; + copy_dir(source, dest, source, &mut log, report, 0)?; + log.sync_all()?; + Ok(()) +} +fn copy_dir( + source: &Path, + dest: &Path, + root: &Path, + index: &mut File, + report: &mut super::Report, + depth: usize, +) -> Result<()> { + ensure!(depth <= 24, "input_limit: directory depth"); + for entry in fs::read_dir(source)? { + let entry = entry?; + let kind = entry.file_type()?; + let to = dest.join(entry.file_name()); + if kind.is_dir() { + fs::create_dir(&to)?; + copy_dir(&entry.path(), &to, root, index, report, depth + 1)? + } else { + ensure!( + kind.is_file(), + "unsafe_path: symlink/special file {}", + entry.path().display() + ); + report.source_files += 1; + ensure!( + report.source_files <= 1_000_000, + "input_limit: source file count" + ); + let mut from = File::open(entry.path())?; + let before = from.metadata()?; + ensure!( + before.len() <= 8 * 1024 * 1024 * 1024, + "input_limit: individual source file exceeds8GiB" + ); + let mut out = OpenOptions::new().write(true).create_new(true).open(&to)?; + let (size, hash) = copy_hash(&mut from, &mut out)?; + let after = from.metadata()?; + ensure!( + size == before.len() + && after.len() == before.len() + && after.modified()? == before.modified()?, + "source_changed: {}", + entry.path().display() + ); + report.source_bytes = report + .source_bytes + .checked_add(size) + .context("input_limit: bytes overflow")?; + ensure!( + report.source_bytes <= 1024 * 1024 * 1024 * 1024, + "input_limit: source exceeds1TiB" + ); + let path = entry + .path() + .strip_prefix(root)? + .to_str() + .context("unsafe_path: non-UTF8 filename")? + .to_owned(); + serde_json::to_writer( + &mut *index, + &FileHash { + path, + size, + sha256: hash, + }, + )?; + index.write_all(b"\n")?; + out.sync_all()?; + } + } + Ok(()) +} +fn copy_hash(r: &mut impl Read, w: &mut impl Write) -> Result<(u64, String)> { + let mut sha = Sha256::new(); + let mut buf = [0; 65536]; + let mut size = 0; + loop { + let n = r.read(&mut buf)?; + if n == 0 { + break; + } + sha.update(&buf[..n]); + w.write_all(&buf[..n])?; + size += n as u64; + } + Ok((size, format!("{:x}", sha.finalize()))) +} +pub(crate) fn copy_verified(root: &Path, dest: &Path, index: &Path) -> Result<()> { + fs::create_dir_all(dest)?; + let mut reader = BufReader::new(File::open(index)?); + let mut count = 0; + loop { + let mut line = String::new(); + let n = (&mut reader).take(16385).read_line(&mut line)?; + if n == 0 { + break; + } + ensure!( + n <= 16384 && line.ends_with('\n'), + "provenance_corrupt: checksum record" + ); + count += 1; + ensure!(count <= 1_000_000, "input_limit: checksum records"); + let item: FileHash = serde_json::from_str(&line)?; + let from = safe_path(root, &item.path)?; + ensure!( + fs::symlink_metadata(&from)?.file_type().is_file(), + "provenance_corrupt: not regular file" + ); + let to = safe_path(dest, &item.path)?; + fs::create_dir_all(to.parent().context("path")?)?; + let mut w = OpenOptions::new().write(true).create_new(true).open(to)?; + ensure!( + item.size <= 8 * 1024 * 1024 * 1024, + "input_limit: source file size" + ); + let mut input = File::open(from)?.take(item.size + 1); + let (size, hash) = copy_hash(&mut input, &mut w)?; + ensure!( + size == item.size && hash == item.sha256, + "provenance_corrupt: source hash {}", + item.path + ); + w.sync_all()? + } + Ok(()) +} +pub(crate) fn visit_files( + root: &Path, + callback: &mut impl FnMut(&Path) -> Result<()>, + depth: usize, +) -> Result<()> { + ensure!(depth <= 24, "input_limit: directory depth"); + for e in fs::read_dir(root)? { + let e = e?; + let t = e.file_type()?; + if t.is_dir() { + visit_files(&e.path(), callback, depth + 1)? + } else { + ensure!(t.is_file(), "unsafe_path: symlink/special file"); + callback(&e.path())? + } + } + Ok(()) +} diff --git a/crates/shacraft-compat/src/lib.rs b/crates/shacraft-compat/src/lib.rs new file mode 100644 index 0000000..fa04b8a --- /dev/null +++ b/crates/shacraft-compat/src/lib.rs @@ -0,0 +1,119 @@ +//! Offline world interchange. Imports publish a new native store atomically; +//! exports hold its single-writer lock and never overwrite a destination. +mod anvil; +mod entities; +mod io; +pub mod nbt; +mod schem; +pub use anvil::{export_anvil, import_anvil}; +use anyhow::{Result, ensure}; +pub use schem::{export_schem, import_schem}; +use serde::{Deserialize, Serialize}; +use shacraft_core::WorldStore; +use std::{collections::BTreeMap, path::Path}; + +pub const DATA_VERSION: i32 = 4903; +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, clap::ValueEnum)] +#[serde(rename_all = "kebab-case")] +pub enum Mode { + Exact, + BestEffort, +} +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Issue { + pub code: String, + pub severity: String, + pub action: String, + pub location: String, + pub detail: String, + pub count: u64, +} +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Report { + pub schema_version: u32, + pub format: String, + pub mode: Mode, + pub data_version: i32, + pub worlds: BTreeMap, + pub chunks: u64, + pub sections: u64, + pub nonair_blocks: u64, + pub issues: Vec, + pub issue_limit: usize, + pub omitted_issues: u64, + pub source_files: u64, + pub source_bytes: u64, + pub native_entity_bytes: u64, + pub profile: String, +} +impl Report { + fn new(format: &str, mode: Mode) -> Self { + Self{schema_version:1,format:format.into(),mode,data_version:DATA_VERSION,worlds:BTreeMap::new(),chunks:0,sections:0,nonair_blocks:0,issues:vec![],issue_limit:1000,omitted_issues:0,source_files:0,source_bytes:0,native_entity_bytes:0,profile:"Java 26.2 (DataVersion 4903); blocks editable, other typed NBT preserved on disk; offline writer lock".into()} + } + fn issue( + &mut self, + code: &str, + action: &str, + location: impl Into, + detail: impl Into, + ) { + if self.issues.len() < self.issue_limit { + self.issues.push(Issue { + code: code.into(), + severity: if action == "preserved" { + "info" + } else { + "warning" + } + .into(), + action: action.into(), + location: location.into(), + detail: detail.into(), + count: 1, + }) + } else { + self.omitted_issues += 1 + } + } +} +#[derive(Debug, Serialize, Deserialize)] +struct Provenance { + schema_version: u32, + format: String, + data_version: i32, + worlds: BTreeMap, + schem_min: Option<[i32; 3]>, + schem_max: Option<[i32; 3]>, + #[serde(default)] + entity_fingerprint: Option, + #[serde(default)] + entity_blob_hashes: BTreeMap, +} +#[derive(Debug, Serialize, Deserialize)] +struct Dimension { + path: String, + revision: u64, +} +fn provenance(root: &Path) -> Result> { + let p = root.join("compat/provenance.json"); + if !p.exists() { + return Ok(None); + } + let b = io::read_limited(&p, 4 * 1024 * 1024)?; + let p: Provenance = serde_json::from_slice(&b)?; + ensure!( + p.schema_version == 1, + "compat_version: unsupported provenance" + ); + Ok(Some(p)) +} +fn section_cells(store: &mut WorldStore, world: &str, pos: [i32; 3]) -> Result<[u32; 4096]> { + let min = pos.map(|v| v * 16); + let max = min.map(|v| v + 15); + let mut cells = [0; 4096]; + for c in store.read_region(world, min, max)? { + let [x, y, z] = c.pos.map(|v| v.rem_euclid(16) as usize); + cells[x + z * 16 + y * 256] = c.block + } + Ok(cells) +} diff --git a/crates/shacraft-compat/src/main.rs b/crates/shacraft-compat/src/main.rs new file mode 100644 index 0000000..48b3651 --- /dev/null +++ b/crates/shacraft-compat/src/main.rs @@ -0,0 +1,97 @@ +use anyhow::Result; +use clap::{Parser, Subcommand}; +use shacraft_compat::{Mode, export_anvil, export_schem, import_anvil, import_schem}; +use std::path::PathBuf; +#[derive(Parser)] +#[command(about = "Offline bounded Java26.2 world converter; every destination must be new")] +struct Cli { + #[command(subcommand)] + command: Command, +} +#[derive(Subcommand)] +enum Command { + ImportAnvil { + source: PathBuf, + destination: PathBuf, + #[arg(long, value_enum, default_value = "exact")] + mode: Mode, + }, + ExportAnvil { + store: PathBuf, + destination: PathBuf, + #[arg(long)] + world: Option, + #[arg(long, value_enum, default_value = "exact")] + mode: Mode, + }, + ImportSchem { + source: PathBuf, + destination: PathBuf, + #[arg(long, default_value = "main")] + world: String, + #[arg(long, value_enum, default_value = "exact")] + mode: Mode, + }, + ExportSchem { + store: PathBuf, + destination: PathBuf, + #[arg(long, default_value = "main")] + world: String, + #[arg(long,value_parser=parse_pos,allow_hyphen_values=true)] + min: Option<[i32; 3]>, + #[arg(long,value_parser=parse_pos,allow_hyphen_values=true)] + max: Option<[i32; 3]>, + #[arg(long, value_enum, default_value = "exact")] + mode: Mode, + }, +} +fn parse_pos(s: &str) -> Result<[i32; 3], String> { + let parts = s + .split(',') + .map(str::parse::) + .collect::, _>>() + .map_err(|e| e.to_string())?; + parts + .try_into() + .map_err(|_| "coordinates must be x,y,z".into()) +} +fn run() -> Result<()> { + let report = match Cli::parse().command { + Command::ImportAnvil { + source, + destination, + mode, + } => import_anvil(&source, &destination, mode)?, + Command::ExportAnvil { + store, + destination, + world, + mode, + } => export_anvil(&store, world.as_deref(), &destination, mode)?, + Command::ImportSchem { + source, + destination, + world, + mode, + } => import_schem(&source, &destination, &world, mode)?, + Command::ExportSchem { + store, + destination, + world, + min, + max, + mode, + } => export_schem(&store, &world, &destination, min, max, mode)?, + }; + println!("{}", serde_json::to_string_pretty(&report)?); + Ok(()) +} +fn main() { + if let Err(e) = run() { + eprintln!( + "{}", + serde_json::json!({"error":format!("{e:#}"),"success":false}) + ); + std::process::exit(1) + } +} diff --git a/crates/shacraft-compat/src/nbt.rs b/crates/shacraft-compat/src/nbt.rs new file mode 100644 index 0000000..3a9d999 --- /dev/null +++ b/crates/shacraft-compat/src/nbt.rs @@ -0,0 +1,335 @@ +//! Bounded, big-endian Java NBT. Numeric types, float bit patterns and list +//! element types (including empty lists) survive decoding and encoding. +use anyhow::{Context, Result, bail, ensure}; +use std::collections::BTreeMap; +use std::io::{Cursor, Read, Write}; + +pub type Compound = BTreeMap; +pub const MAX_BYTES: usize = 16 * 1024 * 1024; +const MAX_NODES: usize = 1_000_000; +#[derive(Clone, Debug, PartialEq)] +pub enum Tag { + Byte(i8), + Short(i16), + Int(i32), + Long(i64), + Float(u32), + Double(u64), + ByteArray(Vec), + String(String), + List(u8, Vec), + Compound(Compound), + IntArray(Vec), + LongArray(Vec), +} +impl Tag { + pub fn id(&self) -> u8 { + match self { + Self::Byte(_) => 1, + Self::Short(_) => 2, + Self::Int(_) => 3, + Self::Long(_) => 4, + Self::Float(_) => 5, + Self::Double(_) => 6, + Self::ByteArray(_) => 7, + Self::String(_) => 8, + Self::List(..) => 9, + Self::Compound(_) => 10, + Self::IntArray(_) => 11, + Self::LongArray(_) => 12, + } + } + pub fn compound(&self) -> Result<&Compound> { + if let Self::Compound(v) = self { + Ok(v) + } else { + bail!("nbt_type: expected compound") + } + } + pub fn compound_mut(&mut self) -> Result<&mut Compound> { + if let Self::Compound(v) = self { + Ok(v) + } else { + bail!("nbt_type: expected compound") + } + } + pub fn list(&self, id: u8) -> Result<&[Tag]> { + if let Self::List(kind, v) = self { + ensure!( + *kind == id || v.is_empty(), + "nbt_type: wrong list element type" + ); + Ok(v) + } else { + bail!("nbt_type: expected list") + } + } + pub fn int(&self) -> Result { + if let Self::Int(v) = self { + Ok(*v) + } else { + bail!("nbt_type: expected int") + } + } + pub fn numeric_i32(&self) -> Result { + match self { + Self::Byte(v) => Ok(*v as i32), + Self::Short(v) => Ok(*v as i32), + Self::Int(v) => Ok(*v), + _ => bail!("nbt_type: expected integer"), + } + } + pub fn string(&self) -> Result<&str> { + if let Self::String(v) = self { + Ok(v) + } else { + bail!("nbt_type: expected string") + } + } + pub fn bytes(&self) -> Result<&[u8]> { + if let Self::ByteArray(v) = self { + Ok(v) + } else { + bail!("nbt_type: expected byte array") + } + } + pub fn longs(&self) -> Result<&[i64]> { + if let Self::LongArray(v) = self { + Ok(v) + } else { + bail!("nbt_type: expected long array") + } + } + pub fn ints(&self) -> Result<&[i32]> { + if let Self::IntArray(v) = self { + Ok(v) + } else { + bail!("nbt_type: expected int array") + } + } +} +pub fn get<'a>(c: &'a Compound, k: &str) -> Result<&'a Tag> { + c.get(k).with_context(|| format!("nbt_missing: {k}")) +} +pub fn compound(entries: impl IntoIterator, Tag)>) -> Tag { + Tag::Compound(entries.into_iter().map(|(k, v)| (k.into(), v)).collect()) +} + +pub fn decode(bytes: &[u8]) -> Result<(String, Tag)> { + ensure!(bytes.len() <= MAX_BYTES, "nbt_limit: decompressed bytes"); + let mut r = Decoder { + r: Cursor::new(bytes), + nodes: 0, + }; + let id = r.byte()?; + ensure!(id == 10, "nbt_root: root must be compound"); + let name = r.string()?; + let tag = r.tag(id, 0)?; + ensure!( + r.r.position() as usize == bytes.len(), + "nbt_trailing: extra bytes" + ); + Ok((name, tag)) +} +struct Decoder<'a> { + r: Cursor<&'a [u8]>, + nodes: usize, +} +impl Decoder<'_> { + fn bytes(&mut self) -> Result<[u8; N]> { + let mut b = [0; N]; + self.r.read_exact(&mut b)?; + Ok(b) + } + fn byte(&mut self) -> Result { + Ok(self.bytes::<1>()?[0]) + } + fn len(&mut self, width: usize) -> Result { + let n = i32::from_be_bytes(self.bytes()?); + ensure!(n >= 0, "nbt_length: negative array/list length"); + let n = n as usize; + ensure!( + n <= MAX_BYTES / width + && n * width <= self.r.get_ref().len() - self.r.position() as usize, + "nbt_limit: impossible array/list length" + ); + Ok(n) + } + fn string(&mut self) -> Result { + let n = u16::from_be_bytes(self.bytes()?) as usize; + let mut b = vec![0; n]; + self.r.read_exact(&mut b)?; + Ok(cesu8::from_java_cesu8(&b) + .context("nbt_string: invalid modified UTF-8")? + .into_owned()) + } + fn tag(&mut self, id: u8, depth: usize) -> Result { + self.nodes += 1; + ensure!( + depth <= 64 && self.nodes <= MAX_NODES, + "nbt_limit: depth/node budget" + ); + Ok(match id { + 1 => Tag::Byte(self.byte()? as i8), + 2 => Tag::Short(i16::from_be_bytes(self.bytes()?)), + 3 => Tag::Int(i32::from_be_bytes(self.bytes()?)), + 4 => Tag::Long(i64::from_be_bytes(self.bytes()?)), + 5 => Tag::Float(u32::from_be_bytes(self.bytes()?)), + 6 => Tag::Double(u64::from_be_bytes(self.bytes()?)), + 7 => { + let n = self.len(1)?; + let mut v = vec![0; n]; + self.r.read_exact(&mut v)?; + Tag::ByteArray(v) + } + 8 => Tag::String(self.string()?), + 9 => { + let kind = self.byte()?; + let n = self.len(1)?; + ensure!( + kind <= 12 && (kind != 0 || n == 0), + "nbt_type: invalid list element" + ); + ensure!(n <= MAX_NODES - self.nodes, "nbt_limit: list nodes"); + let mut v = Vec::new(); + for _ in 0..n { + v.push(self.tag(kind, depth + 1)?) + } + Tag::List(kind, v) + } + 10 => { + let mut c = BTreeMap::new(); + loop { + let kind = self.byte()?; + if kind == 0 { + break; + } + let name = self.string()?; + ensure!( + !c.contains_key(&name), + "nbt_duplicate: duplicate compound name" + ); + c.insert(name, self.tag(kind, depth + 1)?); + } + Tag::Compound(c) + } + 11 => { + let n = self.len(4)?; + let mut v = Vec::with_capacity(n); + for _ in 0..n { + v.push(i32::from_be_bytes(self.bytes()?)) + } + Tag::IntArray(v) + } + 12 => { + let n = self.len(8)?; + let mut v = Vec::with_capacity(n); + for _ in 0..n { + v.push(i64::from_be_bytes(self.bytes()?)) + } + Tag::LongArray(v) + } + _ => bail!("nbt_type: unknown tag {id}"), + }) + } +} +pub fn encode(name: &str, tag: &Tag) -> Result> { + ensure!(tag.id() == 10, "nbt_root: expected compound"); + let mut b = vec![10]; + write_string(&mut b, name)?; + write_tag(&mut b, tag, 0)?; + ensure!(b.len() <= MAX_BYTES, "nbt_limit: encoded bytes"); + Ok(b) +} +fn write_string(w: &mut Vec, s: &str) -> Result<()> { + let b = cesu8::to_java_cesu8(s); + ensure!(b.len() <= u16::MAX as usize, "nbt_limit: string bytes"); + w.write_all(&(b.len() as u16).to_be_bytes())?; + w.write_all(&b)?; + Ok(()) +} +fn write_len(w: &mut Vec, n: usize) -> Result<()> { + ensure!(n <= MAX_BYTES, "nbt_limit: array count"); + w.extend((n as i32).to_be_bytes()); + Ok(()) +} +fn write_tag(w: &mut Vec, t: &Tag, depth: usize) -> Result<()> { + ensure!( + depth <= 64 && w.len() <= MAX_BYTES, + "nbt_limit: encode depth/bytes" + ); + match t { + Tag::Byte(v) => w.push(*v as u8), + Tag::Short(v) => w.extend(v.to_be_bytes()), + Tag::Int(v) => w.extend(v.to_be_bytes()), + Tag::Long(v) => w.extend(v.to_be_bytes()), + Tag::Float(v) => w.extend(v.to_be_bytes()), + Tag::Double(v) => w.extend(v.to_be_bytes()), + Tag::String(s) => write_string(w, s)?, + Tag::ByteArray(v) => { + write_len(w, v.len())?; + w.extend(v) + } + Tag::IntArray(v) => { + write_len(w, v.len())?; + for n in v { + w.extend(n.to_be_bytes()) + } + } + Tag::LongArray(v) => { + write_len(w, v.len())?; + for n in v { + w.extend(n.to_be_bytes()) + } + } + Tag::List(id, v) => { + ensure!(*id <= 12 && (*id != 0 || v.is_empty()), "nbt_type: list"); + w.push(*id); + write_len(w, v.len())?; + for t in v { + ensure!(t.id() == *id, "nbt_type: heterogeneous list"); + write_tag(w, t, depth + 1)? + } + } + Tag::Compound(c) => { + for (k, t) in c { + w.push(t.id()); + write_string(w, k)?; + write_tag(w, t, depth + 1)? + } + w.push(0) + } + } + Ok(()) +} + +#[cfg(test)] +mod tests { + use super::*; + #[test] + fn all_types_roundtrip() { + let t = compound([ + ("byte", Tag::Byte(-128)), + ("short", Tag::Short(-32768)), + ("int", Tag::Int(i32::MAX)), + ("long", Tag::Long(i64::MIN)), + ("float", Tag::Float(0x7fc12345)), + ("double", Tag::Double(0xfff0000000000000)), + ("bytes", Tag::ByteArray(vec![0, 128, 255])), + ("ints", Tag::IntArray(vec![-1, 0, 2])), + ("longs", Tag::LongArray(vec![i64::MIN, i64::MAX])), + ("string", Tag::String("\0Привет🌍".into())), + ("empty", Tag::List(4, vec![])), + ("list", Tag::List(10, vec![compound([("x", Tag::Int(2))])])), + ]); + assert_eq!( + decode(&encode("root", &t).unwrap()).unwrap(), + ("root".into(), t) + ); + } + #[test] + fn rejects_bombs() { + assert!(decode(&[10, 0, 0, 7, 0, 1, b'a', 127, 255, 255, 255, 0]).is_err()); + assert!(decode(&[10, 0, 0, 0, 0]).is_err()); + } +} diff --git a/crates/shacraft-compat/src/schem.rs b/crates/shacraft-compat/src/schem.rs new file mode 100644 index 0000000..fae5d96 --- /dev/null +++ b/crates/shacraft-compat/src/schem.rs @@ -0,0 +1,469 @@ +use crate::{ + DATA_VERSION, Dimension, Mode, Provenance, Report, io, + nbt::{self, Compound, Tag, compound, get}, + provenance, +}; +use anyhow::{Context, Result, ensure}; +use shacraft_core::{BlockChange, WorldStore}; +use std::{collections::BTreeMap, fs, path::Path}; +const MAX_VOLUME: usize = 262_144; + +fn container(root: &Tag) -> Result<&Compound> { + get(root.compound()?, "Schematic")?.compound() +} +fn shape(c: &Compound) -> Result<([i32; 3], [i32; 3], usize)> { + let dim = |key| -> Result { + if let Tag::Short(v) = get(c, key)? { + Ok(*v as u16 as i32) + } else { + anyhow::bail!("schem_type: {key} must be unsigned short") + } + }; + let size = [dim("Width")?, dim("Height")?, dim("Length")?]; + ensure!( + size.iter().all(|v| *v > 0), + "schem_dimensions: empty dimension" + ); + let volume = size + .iter() + .try_fold(1usize, |n, v| n.checked_mul(*v as usize)) + .context("schem_limit: volume overflow")?; + ensure!(volume <= MAX_VOLUME, "schem_limit: maximum262144 cells"); + let min = if let Some(t) = c.get("Offset") { + let v = t.ints()?; + ensure!(v.len() == 3, "schem_offset: expected3 values"); + [v[0], v[1], v[2]] + } else { + [0; 3] + }; + let mut max = min; + for i in 0..3 { + max[i] = min[i] + .checked_add(size[i] - 1) + .context("schem_limit: offset overflow")?; + ensure!( + min[i] >= -30_000_000 && max[i] <= 30_000_000, + "schem_limit: coordinates" + ) + } + Ok((min, max, volume)) +} +fn varints(bytes: &[u8], count: usize) -> Result> { + let mut out = Vec::with_capacity(count); + let mut p = 0; + for _ in 0..count { + let mut n = 0; + for shift in (0..35).step_by(7) { + let b = *bytes.get(p).context("schem_data: truncated varint")?; + p += 1; + ensure!(shift != 28 || b <= 15, "schem_data: varint overflow"); + n |= u32::from(b & 127) << shift; + if b & 128 == 0 { + out.push(n); + break; + } + ensure!(shift < 28, "schem_data: overlong varint") + } + } + ensure!(p == bytes.len(), "schem_data: trailing indices"); + Ok(out) +} +fn write_varint(out: &mut Vec, mut n: u32) { + while n >= 128 { + out.push((n as u8 & 127) | 128); + n >>= 7 + } + out.push(n as u8) +} +fn palette_data(c: &Compound, count: usize) -> Result<(BTreeMap, Vec)> { + let mut palette = BTreeMap::new(); + for (name, id) in get(c, "Palette")?.compound()? { + let id = id.int()?; + ensure!(id >= 0, "schem_palette: negative index"); + ensure!( + palette.insert(id as u32, name.clone()).is_none(), + "schem_palette: duplicate index" + ) + } + ensure!( + !palette.is_empty() && palette.len() <= MAX_VOLUME, + "schem_palette: size" + ); + let data = varints(get(c, "Data")?.bytes()?, count)?; + ensure!( + data.iter().all(|id| palette.contains_key(id)), + "schem_palette: index not in palette" + ); + Ok((palette, data)) +} +fn local_pos(index: usize, min: [i32; 3], max: [i32; 3]) -> [i32; 3] { + let w = (max[0] - min[0] + 1) as usize; + let d = (max[2] - min[2] + 1) as usize; + [ + min[0] + (index % w) as i32, + min[1] + (index / (w * d)) as i32, + min[2] + ((index / w) % d) as i32, + ] +} + +pub fn import_schem(source: &Path, destination: &Path, world: &str, mode: Mode) -> Result { + let stage = io::stage(destination)?; + let compat = stage.path().join("compat"); + fs::create_dir(&compat)?; + let bytes = io::gzip_read(source)?; + let (_, root) = nbt::decode(&bytes)?; + let c = container(&root)?; + ensure!( + get(c, "Version")?.int()? == 3, + "schem_version: only Sponge v3 supported" + ); + let version = get(c, "DataVersion")?.int()?; + ensure!( + mode != Mode::Exact || version == DATA_VERSION, + "unsupported_data_version: exact requires4903" + ); + let (min, max, volume) = shape(c)?; + let mut report = Report::new("sponge-schem-v3", mode); + report.data_version = version; + if version != DATA_VERSION { + report.issue( + "unverified_data_version", + "unsupported", + "Schematic.DataVersion", + format!("Preserved {version}; no DataFixer migration"), + ) + } + let blocks = get(c, "Blocks")?.compound()?; + let (palette, indices) = palette_data(blocks, volume)?; + if let Some(b) = c.get("Biomes") { + palette_data(b.compound()?, volume)?; + report.issue("biomes_preserved","preserved","Schematic.Biomes","Full3D biome container retained in typed NBT source; native simulation does not consume it") + } + for key in ["Entities", "Metadata"] { + if c.contains_key(key) { + report.issue( + "opaque_nbt_preserved", + "preserved", + format!("Schematic.{key}"), + "Retained in original typed NBT; not editable in this adapter", + ) + } + } + if blocks.contains_key("BlockEntities") { + for entity in get(blocks, "BlockEntities")?.list(10)? { + let entity = entity.compound()?; + let pos = get(entity, "Pos")?.ints()?; + ensure!( + pos.len() == 3 && (0..3).all(|i| pos[i] >= 0 && pos[i] <= max[i] - min[i]), + "schem_block_entity_position: outside volume" + ); + get(entity, "Id")?.string()?; + if let Some(data) = entity.get("Data") { + data.compound()?; + } + } + report.issue( + "block_entities_preserved", + "preserved", + "Schematic.Blocks.BlockEntities", + "Inventories and unknown tags retained on disk", + ) + } + let mut store = WorldStore::open(stage.path(), 32)?; + store.create_world(world, None)?; + let mut registry = BTreeMap::new(); + for (id, state) in palette { + let name = if state.contains(':') { + state + } else { + format!("minecraft:{state}") + }; + registry.insert(id, store.register_block(&name)?); + } + let mut batch = Vec::new(); + let mut op = 0; + for (index, id) in indices.into_iter().enumerate() { + let block = registry[&id]; + if block != 0 { + batch.push(BlockChange { + pos: local_pos(index, min, max), + block, + }); + report.nonair_blocks += 1 + } + if batch.len() == 32768 { + store.edit( + world, + store.revision(world)?, + &format!("compat-import-{op}"), + std::mem::take(&mut batch), + )?; + op += 1 + } + } + if !batch.is_empty() { + store.edit( + world, + store.revision(world)?, + &format!("compat-import-{op}"), + batch, + )?; + } + let revision = store.revision(world)?; + store.flush()?; + drop(store); + let original = compat.join("original"); + fs::create_dir(&original)?; + fs::copy(source, original.join("source.schem"))?; + // The source is copied and hashed after parsing, then checked against parsed bytes. + ensure!( + io::gzip_read(&original.join("source.schem"))? == bytes, + "source_changed: schematic changed during import" + ); + let mut provenance_report = Report::new("source", mode); + let indexed = compat.join("indexed"); + io::copy_source( + &original, + &indexed, + &compat.join("files.jsonl"), + &mut provenance_report, + )?; + fs::remove_dir_all(&original)?; + fs::rename(indexed, &original)?; + report.source_files = provenance_report.source_files; + report.source_bytes = provenance_report.source_bytes; + report.worlds.insert(world.into(), revision); + let mut provenance = Provenance { + schema_version: 1, + format: "sponge-schem-v3".into(), + data_version: version, + worlds: BTreeMap::from([( + world.into(), + Dimension { + path: String::new(), + revision, + }, + )]), + schem_min: Some(min), + schem_max: Some(max), + entity_fingerprint: None, + entity_blob_hashes: BTreeMap::new(), + }; + crate::entities::import_schem(stage.path(), c, &mut provenance, &mut report)?; + io::json(&compat.join("provenance.json"), &provenance)?; + io::json(&compat.join("import-report.json"), &report)?; + io::publish(stage, destination)?; + Ok(report) +} + +pub fn export_schem( + store_path: &Path, + world: &str, + destination: &Path, + min: Option<[i32; 3]>, + max: Option<[i32; 3]>, + mode: Mode, +) -> Result { + let mut store = WorldStore::open(store_path, 32)?; + let revision = store.revision(world)?; + let p = provenance(store_path)?; + let original = p + .as_ref() + .filter(|p| p.format == "sponge-schem-v3" && p.worlds.contains_key(world)); + let bounds = match (min, max) { + (Some(a), Some(b)) => (a, b), + (None, None) => { + let p = original.context("schem_bounds: supply --min and --max for a native world")?; + ( + p.schem_min.context("provenance bounds")?, + p.schem_max.context("provenance bounds")?, + ) + } + _ => anyhow::bail!("schem_bounds: both min/max required"), + }; + let stage = io::stage(destination)?; + let mut report = Report::new("sponge-schem-v3", mode); + if original.is_none() && p.is_some() { + ensure!( + mode != Mode::Exact, + "exact_cross_format: source biome/block-entity metadata requires format-specific mapping; use best-effort" + ); + io::copy_verified( + &store_path.join("compat/original"), + &stage.path().join("source-sidecar"), + &store_path.join("compat/files.jsonl"), + )?; + report.issue("cross_format_opaque_data","unsupported","source-sidecar","Source world metadata, block entities and biome layout are archived without cross-format translation; blocks and entity bridge are exported"); + } + report.worlds.insert(world.into(), revision); + let (mut name, mut root) = if let Some(p) = original { + ensure!( + Some(bounds.0) == p.schem_min && Some(bounds.1) == p.schem_max, + "schem_bounds: cropping imported entities/biomes unsupported" + ); + ensure!( + mode != Mode::Exact || p.data_version == DATA_VERSION, + "unsupported_data_version: exact requires4903" + ); + let checked = stage.path().join(".checked"); + io::copy_verified( + &store_path.join("compat/original"), + &checked, + &store_path.join("compat/files.jsonl"), + )?; + let entity_changes = crate::entities::changed(store_path, p)?; + if p.worlds[world].revision == revision && !entity_changes { + fs::rename( + checked.join("source.schem"), + stage.path().join("world.schem"), + )?; + fs::remove_dir(&checked)?; + report.data_version = p.data_version; + report.issue( + "unchanged_original", + "preserved", + "world.schem", + "Byte-identical verified source", + ); + io::report(stage.path(), &report)?; + io::publish(stage, destination)?; + return Ok(report); + } + ensure!( + mode != Mode::Exact, + "exact_provenance_invalidated: world revision changed; derived/opaque metadata cannot be proven current; use best-effort" + ); + let decoded = nbt::decode(&io::gzip_read(&checked.join("source.schem"))?)?; + fs::rename(&checked, stage.path().join("source-sidecar"))?; + report.data_version = p.data_version; + report.issue("modified_source_metadata","approximated","Schematic","Original entities,3D biomes,metadata and unknown tags preserved; behavior and placement dependencies are not simulated"); + decoded + } else { + ( + "".into(), + compound([( + "Schematic", + compound([ + ("Version", Tag::Int(3)), + ("DataVersion", Tag::Int(DATA_VERSION)), + ]), + )]), + ) + }; + let c = get_mut(root.compound_mut()?, "Schematic")?.compound_mut()?; + let mut volume = 1usize; + for (i, key) in ["Width", "Height", "Length"].into_iter().enumerate() { + let d = i64::from(bounds.1[i]) - i64::from(bounds.0[i]) + 1; + ensure!((1..=65535).contains(&d), "schem_dimensions: invalid extent"); + volume = volume + .checked_mul(d as usize) + .context("schem_limit: volume overflow")?; + ensure!(volume <= MAX_VOLUME, "schem_limit: maximum262144 cells"); + c.insert(key.into(), Tag::Short(d as u16 as i16)); + } + c.insert("Offset".into(), Tag::IntArray(bounds.0.to_vec())); + let old_blocks = c.get("Blocks").cloned(); + let mut blocks = old_blocks + .clone() + .unwrap_or_else(|| compound([] as [(&str, Tag); 0])); + let old_data = if let Some(old) = &old_blocks { + Some(palette_data(old.compound()?, volume)?) + } else { + None + }; + let mut states = BTreeMap::::new(); + let mut indices = vec![0u32; volume]; + let air = store.registry()[0].clone(); + states.insert(air, 0); + let width = (bounds.1[0] - bounds.0[0] + 1) as usize; + let depth = (bounds.1[2] - bounds.0[2] + 1) as usize; + for change in store.read_region(world, bounds.0, bounds.1)? { + let state = store.registry()[change.block as usize].clone(); + let next = states.len() as u32; + let id = *states.entry(state).or_insert(next); + let [x, y, z] = [ + change.pos[0] - bounds.0[0], + change.pos[1] - bounds.0[1], + change.pos[2] - bounds.0[2], + ]; + indices[x as usize + z as usize * width + y as usize * width * depth] = id; + report.nonair_blocks += 1 + } + for state in states.keys().filter(|s| !s.starts_with("minecraft:")) { + report.issue( + "nonvanilla_block_state", + "unsupported", + "Schematic.Blocks.Palette", + format!( + "{state} is preserved as a Sponge resource id; pasting requires matching target mod" + ), + ); + } + let reverse: BTreeMap = states.iter().map(|(s, id)| (*id, s.as_str())).collect(); + let bc = blocks.compound_mut()?; + if let Some(Tag::List(_, entities)) = bc.get_mut("BlockEntities") { + entities.retain(|e|{ + let Ok(e)=e.compound()else{return true};let Ok(pos)=get(e,"Pos").and_then(Tag::ints)else{return true};if pos.len()!=3{return true}let i=pos[0]as i64+pos[2]as i64*width as i64+pos[1]as i64*(width*depth)as i64; + let changed=if let Some((pal,data))=&old_data{if i>=0&&(i as usize)(c: &'a mut Compound, k: &str) -> Result<&'a mut Tag> { + c.get_mut(k).with_context(|| format!("nbt_missing: {k}")) +} + +#[cfg(test)] +mod tests { + use super::*; + #[test] + fn varint_validation() { + assert_eq!( + varints(&[0, 127, 128, 1, 255, 255, 255, 255, 15], 4).unwrap(), + vec![0, 127, 128, u32::MAX] + ); + assert!(varints(&[128], 1).is_err()); + assert!(varints(&[255, 255, 255, 255, 16], 1).is_err()); + assert!(varints(&[0, 0], 1).is_err()); + } +} diff --git a/crates/shacraft-compat/tests/roundtrip.rs b/crates/shacraft-compat/tests/roundtrip.rs new file mode 100644 index 0000000..46c3eb2 --- /dev/null +++ b/crates/shacraft-compat/tests/roundtrip.rs @@ -0,0 +1,436 @@ +use shacraft_compat::{ + Mode, export_anvil, export_schem, import_anvil, import_schem, + nbt::{self, Tag}, +}; +use shacraft_core::{BlockChange, WorldStore}; +use std::{ + fs, + io::Read, + path::{Path, PathBuf}, +}; +fn fixture(name: &str) -> PathBuf { + Path::new(env!("CARGO_MANIFEST_DIR")) + .join("fixtures") + .join(name) +} +fn read_gzip(p: &Path) -> Tag { + let mut b = Vec::new(); + flate2::read::GzDecoder::new(fs::File::open(p).unwrap()) + .read_to_end(&mut b) + .unwrap(); + nbt::decode(&b).unwrap().1 +} +fn assert_tree_equal(source: &Path, out: &Path) { + for e in fs::read_dir(source).unwrap() { + let e = e.unwrap(); + let to = out.join(e.file_name()); + if e.file_type().unwrap().is_dir() { + assert_tree_equal(&e.path(), &to) + } else { + assert_eq!( + fs::read(e.path()).unwrap(), + fs::read(to).unwrap(), + "{}", + e.path().display() + ) + } + } +} + +#[test] +fn sponge_import_edits_unknown_states_and_preserves_nbt() { + let t = tempfile::tempdir().unwrap(); + let store_path = t.path().join("store"); + let source = fixture("sponge-v3.schem"); + let imported = import_schem(&source, &store_path, "main", Mode::Exact).unwrap(); + assert_eq!(imported.nonair_blocks, 4); + let exact = t.path().join("exact"); + export_schem(&store_path, "main", &exact, None, None, Mode::Exact).unwrap(); + assert_eq!( + fs::read(&source).unwrap(), + fs::read(exact.join("world.schem")).unwrap() + ); + let mut store = WorldStore::open(&store_path, 2).unwrap(); + let unknown = store.get_block("main", [-15, -1, 31]).unwrap(); + assert_eq!( + store.registry()[unknown as usize], + "example:unknown[facing=west]" + ); + let revision = store.revision("main").unwrap(); + store + .edit( + "main", + revision, + "break-container", + vec![BlockChange { + pos: [-17, -1, 31], + block: 0, + }], + ) + .unwrap(); + drop(store); + let rejected = t.path().join("rejected"); + assert!( + export_schem(&store_path, "main", &rejected, None, None, Mode::Exact) + .unwrap_err() + .to_string() + .contains("exact_provenance_invalidated") + ); + assert!(!rejected.exists()); + let edited = t.path().join("edited"); + let r = export_schem(&store_path, "main", &edited, None, None, Mode::BestEffort).unwrap(); + assert!(r.issues.iter().any(|i| i.code == "changed_block_entity")); + let a = read_gzip(&source); + let b = read_gzip(&edited.join("world.schem")); + let a = a.compound().unwrap()["Schematic"].compound().unwrap(); + let b = b.compound().unwrap()["Schematic"].compound().unwrap(); + for k in ["Metadata", "Entities", "Biomes", "UnknownRoot", "Offset"] { + assert_eq!(a[k], b[k], "{k}") + } + let reimport = t.path().join("reimport"); + import_schem(&edited.join("world.schem"), &reimport, "main", Mode::Exact).unwrap(); + let mut s = WorldStore::open(&reimport, 2).unwrap(); + assert_eq!(s.get_block("main", [-17, -1, 31]).unwrap(), 0); + assert_ne!(s.get_block("main", [-16, -1, 31]).unwrap(), 0); +} + +#[test] +fn genuine_java_world_import_exact_roundtrip_edit_and_new_chunk() { + let t = tempfile::tempdir().unwrap(); + let store_path = t.path().join("store"); + let source = fixture("java26_2-world"); + let imported = import_anvil(&source, &store_path, Mode::Exact).unwrap(); + assert_eq!(imported.nonair_blocks, 3); + assert_eq!(imported.chunks, 1); + let exact = t.path().join("exact"); + export_anvil(&store_path, None, &exact, Mode::Exact).unwrap(); + assert_tree_equal(&source, &exact); + let mut store = WorldStore::open(&store_path, 2).unwrap(); + let stone = store.register_block("minecraft:stone").unwrap(); + assert_ne!(store.get_block("main", [-1, -1, 31]).unwrap(), 0); + let revision = store.revision("main").unwrap(); + store + .edit( + "main", + revision, + "edit", + vec![ + BlockChange { + pos: [-1, -1, 31], + block: 0, + }, + BlockChange { + pos: [512, 64, -513], + block: stone, + }, + ], + ) + .unwrap(); + drop(store); + let rejected = t.path().join("rejected"); + assert!(export_anvil(&store_path, None, &rejected, Mode::Exact).is_err()); + assert!(!rejected.exists()); + let edited = t.path().join("edited"); + let report = export_anvil(&store_path, None, &edited, Mode::BestEffort).unwrap(); + assert_eq!(report.chunks, 2); + assert!( + report + .issues + .iter() + .any(|i| i.code == "dependent_records_invalidated") + ); + assert_eq!( + fs::read(source.join("entities/r.-1.0.mca")).unwrap(), + fs::read(edited.join("entities/r.-1.0.mca")).unwrap() + ); + let reimport = t.path().join("reimport"); + import_anvil(&edited, &reimport, Mode::Exact).unwrap(); + let mut store = WorldStore::open(&reimport, 2).unwrap(); + assert_eq!(store.get_block("main", [-1, -1, 31]).unwrap(), 0); + let id = store.get_block("main", [512, 64, -513]).unwrap(); + assert_eq!(store.registry()[id as usize], "minecraft:stone"); +} + +#[test] +fn native_new_world_export_and_schematic() { + let t = tempfile::tempdir().unwrap(); + let store_path = t.path().join("store"); + let mut store = WorldStore::open(&store_path, 2).unwrap(); + store.create_world("native", None).unwrap(); + let stone = store.register_block("minecraft:stone").unwrap(); + let stairs = store + .register_block( + "minecraft:oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + ) + .unwrap(); + store + .edit( + "native", + 0, + "build", + vec![ + BlockChange { + pos: [-1, 63, 0], + block: stone, + }, + BlockChange { + pos: [0, 64, 0], + block: stairs, + }, + ], + ) + .unwrap(); + drop(store); + let world = t.path().join("world"); + export_anvil(&store_path, Some("native"), &world, Mode::BestEffort).unwrap(); + assert!( + world + .join("data/minecraft/world_gen_settings.dat") + .is_file() + ); + let reimport = t.path().join("reimport"); + assert_eq!( + import_anvil(&world, &reimport, Mode::Exact) + .unwrap() + .nonair_blocks, + 2 + ); + let schem = t.path().join("schem"); + export_schem( + &store_path, + "native", + &schem, + Some([-1, 63, 0]), + Some([0, 64, 0]), + Mode::Exact, + ) + .unwrap(); + let s = t.path().join("schem-reimport"); + assert_eq!( + import_schem(&schem.join("world.schem"), &s, "main", Mode::Exact) + .unwrap() + .nonair_blocks, + 2 + ); +} + +#[test] +fn no_overwrite_and_provenance_hash_guard() { + let t = tempfile::tempdir().unwrap(); + let path = t.path().join("store"); + let source = fixture("sponge-v3.schem"); + import_schem(&source, &path, "main", Mode::Exact).unwrap(); + let before = fs::read(path.join("worlds.sqlite3")).unwrap(); + assert!(import_schem(&source, &path, "other", Mode::Exact).is_err()); + assert_eq!(before, fs::read(path.join("worlds.sqlite3")).unwrap()); + fs::write(path.join("compat/original/source.schem"), b"tampered").unwrap(); + let out = t.path().join("out"); + assert!(export_schem(&path, "main", &out, None, None, Mode::Exact).is_err()); + assert!(!out.exists()); +} + +#[test] +fn malformed_input_is_not_published() { + let t = tempfile::tempdir().unwrap(); + let bad = t.path().join("bad.schem"); + fs::write(&bad, b"not gzip").unwrap(); + let out = t.path().join("out"); + assert!(import_schem(&bad, &out, "main", Mode::Exact).is_err()); + assert!(!out.exists()); +} + +fn metadata(path: &Path) -> serde_json::Value { + let db = rusqlite::Connection::open(path.join("server.sqlite3")).unwrap(); + let text: String = db + .query_row("SELECT json FROM metadata WHERE id=1", [], |r| r.get(0)) + .unwrap(); + serde_json::from_str(&text).unwrap() +} +fn save_metadata(path: &Path, v: &serde_json::Value) { + let db = rusqlite::Connection::open(path.join("server.sqlite3")).unwrap(); + db.execute( + "UPDATE metadata SET json=?1 WHERE id=1", + [serde_json::to_string(v).unwrap()], + ) + .unwrap(); +} +#[test] +fn native_entity_edit_move_create_remove_roundtrip() { + let t = tempfile::tempdir().unwrap(); + let path = t.path().join("store"); + import_anvil(&fixture("java26_2-world"), &path, Mode::Exact).unwrap(); + let mut meta = metadata(&path); + let id = meta["entities"] + .as_object() + .unwrap() + .keys() + .next() + .unwrap() + .clone(); + meta["entities"][&id]["position"] = serde_json::json!([513.5, 65., -513.5]); + meta["entities"][&id]["yaw"] = serde_json::json!(1.25); + meta["entities"][&id]["properties"]["Invisible"] = serde_json::json!(true); + let new_id = "12345678-1234-4234-8234-123456789abc"; + meta["entities"][new_id] = serde_json::json!({"id":new_id,"world":"main","kind":"minecraft:cow","type":"minecraft:cow","position":[0.5,70.,0.5],"yaw":0.,"properties":{"Health":17.0,"CustomName":"moo","custom_unmapped":{"a":1}}}); + meta["revision"] = serde_json::json!(1); + save_metadata(&path, &meta); + let rejected = t.path().join("exact"); + assert!( + export_anvil(&path, None, &rejected, Mode::Exact) + .unwrap_err() + .to_string() + .contains("exact_entity_revision") + ); + assert!(!rejected.exists()); + let out = t.path().join("out"); + let r = export_anvil(&path, None, &out, Mode::BestEffort).unwrap(); + assert!( + r.issues + .iter() + .any(|i| i.code == "entity_property_unmapped") + ); + let again = t.path().join("again"); + import_anvil(&out, &again, Mode::Exact).unwrap(); + let got = metadata(&again); + assert_eq!(got["entities"].as_object().unwrap().len(), 2); + assert_eq!( + got["entities"][&id]["position"], + meta["entities"][&id]["position"] + ); + assert!( + got["entities"][&id]["properties"]["Invisible"] + .as_bool() + .unwrap() + ); + assert_eq!( + got["entities"][new_id]["properties"]["Health"], + serde_json::json!(17.0) + ); + meta["entities"] = serde_json::json!({}); + save_metadata(&path, &meta); + let removed = t.path().join("removed"); + let r = export_anvil(&path, None, &removed, Mode::BestEffort).unwrap(); + assert!(r.issues.iter().any(|i| i.code == "entity_removed")); + let final_store = t.path().join("final"); + import_anvil(&removed, &final_store, Mode::Exact).unwrap(); + assert!( + metadata(&final_store)["entities"] + .as_object() + .unwrap() + .is_empty() + ); +} +#[test] +fn sponge_entity_metadata_guard_and_position_roundtrip() { + let t = tempfile::tempdir().unwrap(); + let path = t.path().join("store"); + import_schem(&fixture("sponge-v3.schem"), &path, "main", Mode::Exact).unwrap(); + let mut meta = metadata(&path); + let id = meta["entities"] + .as_object() + .unwrap() + .keys() + .next() + .unwrap() + .clone(); + meta["entities"][&id]["position"] = serde_json::json!([-15., 1., 31.]); + save_metadata(&path, &meta); + assert!( + export_schem( + &path, + "main", + &t.path().join("reject"), + None, + None, + Mode::Exact + ) + .is_err() + ); + let out = t.path().join("out"); + export_schem(&path, "main", &out, None, None, Mode::BestEffort).unwrap(); + let again = t.path().join("again"); + import_schem(&out.join("world.schem"), &again, "main", Mode::Exact).unwrap(); + assert_eq!( + metadata(&again)["entities"][&id]["position"], + meta["entities"][&id]["position"] + ); +} +fn write_gzip(path: &Path, tag: &Tag) { + use std::io::Write; + let mut out = flate2::write::GzEncoder::new( + fs::File::create(path).unwrap(), + flate2::Compression::default(), + ); + out.write_all(&nbt::encode("", tag).unwrap()).unwrap(); + out.finish().unwrap(); +} +#[test] +fn duplicate_entity_uuid_stays_outside_editable_subset() { + let t = tempfile::tempdir().unwrap(); + let mut tag = read_gzip(&fixture("sponge-v3.schem")); + let c = tag + .compound_mut() + .unwrap() + .get_mut("Schematic") + .unwrap() + .compound_mut() + .unwrap(); + if let Tag::List(_, entities) = c.get_mut("Entities").unwrap() { + entities.push(entities[0].clone()); + } else { + panic!("fixture entities") + } + let source = t.path().join("duplicate.schem"); + write_gzip(&source, &tag); + let store = t.path().join("store"); + let report = import_schem(&source, &store, "main", Mode::Exact).unwrap(); + assert!( + report + .issues + .iter() + .any(|i| i.code == "entity_duplicate_uuid") + ); + assert!(metadata(&store)["entities"].as_object().unwrap().is_empty()); + let out = t.path().join("out"); + export_schem(&store, "main", &out, None, None, Mode::Exact).unwrap(); + assert_eq!( + fs::read(source).unwrap(), + fs::read(out.join("world.schem")).unwrap() + ); +} +#[test] +fn unsupported_data_version_rejects_exact_before_publication() { + let t = tempfile::tempdir().unwrap(); + let mut tag = read_gzip(&fixture("sponge-v3.schem")); + let c = tag + .compound_mut() + .unwrap() + .get_mut("Schematic") + .unwrap() + .compound_mut() + .unwrap(); + c.insert("DataVersion".into(), Tag::Int(100)); + let source = t.path().join("old.schem"); + write_gzip(&source, &tag); + let dest = t.path().join("store"); + assert!(import_schem(&source, &dest, "main", Mode::Exact).is_err()); + assert!(!dest.exists()); + let report = import_schem(&source, &dest, "main", Mode::BestEffort).unwrap(); + assert!( + report + .issues + .iter() + .any(|i| i.code == "unverified_data_version") + ); + assert!( + export_schem( + &dest, + "main", + &t.path().join("reject"), + None, + None, + Mode::Exact + ) + .is_err() + ); +} diff --git a/crates/shacraft-content/Cargo.toml b/crates/shacraft-content/Cargo.toml new file mode 100644 index 0000000..ab67229 --- /dev/null +++ b/crates/shacraft-content/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "shacraft-content" +version.workspace = true +edition.workspace = true +license.workspace = true + +[dependencies] +anyhow.workspace = true +serde.workspace = true +serde_json.workspace = true +flate2 = "1" +sha2 = "0.10" + +[dev-dependencies] +tempfile = "3" diff --git a/crates/shacraft-content/data/catalog.json.gz b/crates/shacraft-content/data/catalog.json.gz new file mode 100644 index 0000000..79f7530 Binary files /dev/null and b/crates/shacraft-content/data/catalog.json.gz differ diff --git a/crates/shacraft-content/data/provenance.json b/crates/shacraft-content/data/provenance.json new file mode 100644 index 0000000..39eb234 --- /dev/null +++ b/crates/shacraft-content/data/provenance.json @@ -0,0 +1,50 @@ +{ + "source": { + "url": "https://piston-data.mojang.com/v1/objects/823e2250d24b3ddac457a60c92a6a941943fcd6a/server.jar", + "size": 60894273, + "sha1": "823e2250d24b3ddac457a60c92a6a941943fcd6a", + "sha256": "cdacdfb25898de5e4b4b0e5ddcc2722f77067e46605709c2d886c000ebb63ec5" + }, + "version": { + "id": "26.2", + "name": "26.2", + "world_version": 4903, + "series_id": "main", + "protocol_version": 776, + "pack_version": { + "resource_major": 88, + "resource_minor": 0, + "data_major": 107, + "data_minor": 1 + }, + "build_time": "2026-06-16T12:01:27+00:00", + "java_component": "java-runtime-epsilon", + "java_version": 25, + "stable": true, + "use_editor": false + }, + "java": "openjdk version \"25.0.1\" 2025-10-21 LTS\nOpenJDK Runtime Environment Microsoft-12574222 (build 25.0.1+8-LTS)\nOpenJDK 64-Bit Server VM Microsoft-12574222 (build 25.0.1+8-LTS, mixed mode)", + "extracted_utc": "2026-09-14T13:56:31.823007+00:00", + "command": "python3 scripts/catalog_generate.py --java /path/to/java25/bin/java", + "data_command": "java -Xmx1G -DbundlerMainClass=net.minecraft.data.Main -jar server.jar --reports --output generated", + "collision_context": "All states at BlockPos.ZERO, with air neighbors and CollisionContext.empty(); compare solid neighbors and positionContext(+10/-10). Entity-dependent/block-entity contexts remain approximate.", + "counts": { + "blocks": 1196, + "states": 32366, + "entities": 158, + "distinct_collision_shapes": 326, + "collision_errors": 0, + "context_sample_differences": 32 + }, + "inputs": { + "blocks.json": "dec22eb9547b0bbea396cbf35569f7ec81b7be662775ce03dc2236227473af7b", + "registries.json": "9f34d4deb0b494627f6a1a1590e7fb21c11a3949d84bacb59a304e6315287b24", + "measurements.json": "256a1852db69f9e05394c44a76cbc9d22e9b02a85b16a95fb4ee52c05e966045", + "catalog_extract.java": "6a80d75c3a63da382dcedd702ba2218a1f8339df77a30829d33df6e3dd599164" + }, + "outputs": { + "catalog.json.gz": "df889f6ce074b96130011d00b2f3b661cf910aba44064a0b5f361d7c064ce8ed", + "report-identities.json.gz": "938232b10d17071d3eefa54ce9a1c3026e17f39b5a2c0f4d6ede2644824d9135" + }, + "license_note": "Factual interoperability data derived through public APIs. No Minecraft visual/audio assets, server binaries or decompiled code are redistributed. Authored runtime and render templates: MIT OR Apache-2.0." +} diff --git a/crates/shacraft-content/data/report-identities.json.gz b/crates/shacraft-content/data/report-identities.json.gz new file mode 100644 index 0000000..54f765b Binary files /dev/null and b/crates/shacraft-content/data/report-identities.json.gz differ diff --git a/crates/shacraft-content/examples/catalog_report.rs b/crates/shacraft-content/examples/catalog_report.rs new file mode 100644 index 0000000..e290bfe --- /dev/null +++ b/crates/shacraft-content/examples/catalog_report.rs @@ -0,0 +1,16 @@ +use shacraft_content::Catalog; +fn main() -> anyhow::Result<()> { + let c = Catalog::load_builtin()?; + println!("{}", serde_json::to_string_pretty(&c.summary())?); + let mut approximate = std::collections::BTreeMap::::new(); + for state in &c.states { + if state.coverage.render == "authored-approximate" { + *approximate.entry(state.family.clone()).or_default() += 1; + } + } + eprintln!( + "Approximate render families: {}", + serde_json::to_string(&approximate)? + ); + Ok(()) +} diff --git a/crates/shacraft-content/src/lib.rs b/crates/shacraft-content/src/lib.rs new file mode 100644 index 0000000..cd7278f --- /dev/null +++ b/crates/shacraft-content/src/lib.rs @@ -0,0 +1,565 @@ +//! Independent factual content catalog and authored render templates. +//! +//! Minecraft IDs are provenance, never Shacraft runtime BlockIds. Collision +//! measurements use an explicitly documented world/entity context; they do not +//! claim to reproduce entity-dependent or block-entity-dependent behavior. +use anyhow::{Context, Result, bail, ensure}; +use flate2::read::GzDecoder; +use serde::{Deserialize, Serialize}; +use serde_json::{Value, json}; +use std::collections::{BTreeMap, HashMap}; +use std::io::Read; + +mod packages; +mod shapes; +pub use packages::*; + +pub const MINECRAFT_VERSION: &str = "26.2"; +pub const DATA_VERSION: i32 = 4903; + +#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq)] +pub struct Aabb { + pub min: [f32; 3], + pub max: [f32; 3], +} +impl Aabb { + pub const fn new(min: [f32; 3], max: [f32; 3]) -> Self { + Self { min, max } + } + pub fn volume(&self) -> f32 { + (0..3).map(|i| self.max[i] - self.min[i]).product() + } + pub fn valid(&self) -> bool { + (0..3).all(|i| { + self.min[i].is_finite() && self.max[i].is_finite() && self.max[i] > self.min[i] + }) + } +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Coverage { + pub identity: String, + pub render: String, + pub collision: String, + pub behavior: String, +} +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct StateDefinition { + pub state: String, + /// Target Java numerical state ID, unrelated to the persistent runtime registry. + pub minecraft_id: u32, + pub color: [u8; 3], + pub opacity: f32, + pub collision: Vec, + pub render: Vec, + pub coverage: Coverage, + pub family: String, + pub light: u8, + pub hardness: f32, +} +impl StateDefinition { + pub fn solid(&self) -> bool { + !self.collision.is_empty() + } +} +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct BlockDefinition { + pub name: String, + pub default_state: String, + pub properties: BTreeMap>, + pub family: String, +} +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct BlockSample { + pub state: String, + pub position: [i32; 3], + pub family: String, +} +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct EntityDefinition { + pub name: String, + pub width: f32, + pub height: f32, + pub color: [u8; 3], + /// Authored boxes in entity-local coordinates, relative to the feet. + pub render: Vec, + /// Default physical dimensions, registry flags, attributes, and model family. + /// Instance properties and unknown NBT belong to the entity persistence layer. + pub properties: BTreeMap, + pub coverage: Coverage, +} +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Catalog { + pub version: String, + pub data_version: i32, + pub blocks: Vec, + pub states: Vec, + pub entities: Vec, + #[serde(skip)] + state_index: HashMap, + #[serde(skip)] + entity_index: HashMap, +} +#[derive(Deserialize)] +struct RawCatalog { + version: String, + data_version: i32, + blocks: Vec, + states: Vec, + shapes: Vec>, + entities: BTreeMap>, +} +#[derive(Deserialize)] +struct RawState { + state: String, + minecraft_id: u32, + block: usize, + shape: usize, + context: bool, + light: u8, + hardness: f32, +} + +fn decompress(bytes: &[u8]) -> Result> { + let mut out = Vec::new(); + GzDecoder::new(bytes) + .take(32 * 1024 * 1024) + .read_to_end(&mut out)?; + ensure!( + out.len() < 32 * 1024 * 1024, + "catalog exceeds maximum decompressed size" + ); + Ok(out) +} +impl Catalog { + pub fn load_builtin() -> Result { + let raw: RawCatalog = + serde_json::from_slice(&decompress(include_bytes!("../data/catalog.json.gz"))?)?; + ensure!( + raw.version == MINECRAFT_VERSION && raw.data_version == DATA_VERSION, + "unexpected built-in catalog version" + ); + let mut states = Vec::with_capacity(raw.states.len() + 1); + for s in raw.states { + let block = raw.blocks.get(s.block).context("invalid block index")?; + let collision = raw + .shapes + .get(s.shape) + .context("invalid shape index")? + .iter() + .map(|b| Aabb::new([b[0], b[1], b[2]], [b[3], b[4], b[5]])) + .collect::>(); + let (render, render_coverage) = + shapes::block_render(&s.state, &block.family, &collision); + let contextual = s.context + || matches!( + block.family.as_str(), + "powder_snow" | "shulker_box" | "moving_piston" | "big_dripleaf" + ); + states.push(StateDefinition { + color: shapes::color(&block.name), + opacity: shapes::opacity(&block.name), + state: s.state, + minecraft_id: s.minecraft_id, + collision, + render, + coverage: Coverage { + identity: "official-report-exact".into(), + render: render_coverage.into(), + collision: if contextual { + "approximate-context" + } else { + "measured-empty-context" + } + .into(), + behavior: "storage-and-physics".into(), + }, + family: block.family.clone(), + light: s.light, + hardness: s.hardness, + }); + } + let mut entities = Vec::new(); + for (name, mut properties) in raw.entities { + let width = properties + .get("width") + .and_then(Value::as_f64) + .context("entity width missing")? as f32; + let height = properties + .get("height") + .and_then(Value::as_f64) + .context("entity height missing")? as f32; + let (render, family) = shapes::entity_render(&name, width, height); + properties.insert("model_family".into(), json!(family)); + entities.push(EntityDefinition { + name: name.clone(), + width, + height, + color: shapes::entity_color(&name), + render, + properties, + coverage: Coverage { + identity: "official-report-exact".into(), + render: if family == "invisible" { + "intentionally-invisible" + } else { + "authored-procedural" + } + .into(), + collision: "measured-default-dimensions".into(), + behavior: "persistent-instance-no-vanilla-ai".into(), + }, + }); + } + let mut result = Self { + version: raw.version, + data_version: raw.data_version, + blocks: raw.blocks, + states, + entities, + state_index: HashMap::new(), + entity_index: HashMap::new(), + }; + result.add_trampoline(); + result.rebuild_indexes()?; + Ok(result) + } + pub fn rebuild_indexes(&mut self) -> Result<()> { + self.state_index.clear(); + self.entity_index.clear(); + for (i, s) in self.states.iter().enumerate() { + ensure!( + self.state_index.insert(s.state.clone(), i).is_none(), + "duplicate canonical state {}", + s.state + ); + ensure!( + s.collision.iter().chain(s.render.iter()).all(Aabb::valid), + "invalid geometry for {}", + s.state + ); + } + for (i, e) in self.entities.iter().enumerate() { + ensure!( + self.entity_index.insert(e.name.clone(), i).is_none(), + "duplicate entity {}", + e.name + ); + ensure!( + e.render.iter().all(Aabb::valid), + "invalid entity model {}", + e.name + ); + } + Ok(()) + } + pub fn state(&self, canonical: &str) -> Option<&StateDefinition> { + self.state_index + .get(canonical) + .map(|i| &self.states[*i]) + .or_else(|| { + self.blocks + .iter() + .find(|b| b.name == canonical) + .and_then(|b| self.state_index.get(&b.default_state)) + .map(|i| &self.states[*i]) + }) + } + pub fn entity(&self, name: &str) -> Option<&EntityDefinition> { + self.entity_index.get(name).map(|i| &self.entities[*i]) + } + pub fn default_state(&self, name: &str) -> Option<&str> { + self.blocks + .iter() + .find(|b| b.name == name) + .map(|b| b.default_state.as_str()) + } + pub fn palette(&self) -> BTreeMap { + [ + ("grass", "minecraft:grass_block"), + ("stone", "minecraft:stone"), + ("snow", "minecraft:snow_block"), + ("glass", "minecraft:glass"), + ("wood", "minecraft:oak_planks"), + ("stairs", "minecraft:oak_stairs"), + ("slab", "minecraft:oak_slab"), + ("fence", "minecraft:oak_fence"), + ("water", "minecraft:water"), + ("sand", "minecraft:sand"), + ("light", "minecraft:sea_lantern"), + ("trampoline", "shacraft:trampoline"), + ] + .into_iter() + .filter_map(|(key, name)| { + self.default_state(name) + .map(|s| (key.to_owned(), s.to_owned())) + }) + .collect() + } + /// One default state per block, in an original 32-column inspection garden. + /// The floor is caller-owned; every sample is one cell above it. + pub fn sampler(&self) -> Vec { + self.blocks + .iter() + .enumerate() + .map(|(i, b)| BlockSample { + state: b.default_state.clone(), + family: b.family.clone(), + position: [-48 + (i % 32) as i32 * 3, 1, -57 + (i / 32) as i32 * 3], + }) + .collect() + } + pub fn summary(&self) -> Value { + let mut render = BTreeMap::<&str, usize>::new(); + let mut collision = BTreeMap::<&str, usize>::new(); + for s in &self.states { + *render.entry(&s.coverage.render).or_default() += 1; + *collision.entry(&s.coverage.collision).or_default() += 1; + } + json!({"minecraft_version":self.version,"data_version":self.data_version, + "minecraft_blocks":self.blocks.iter().filter(|b|b.name.starts_with("minecraft:")).count(), + "minecraft_states":self.states.iter().filter(|s|s.state.starts_with("minecraft:")).count(), + "entities":self.entities.len(),"total_states":self.states.len(),"render":render,"collision":collision, + "palette":self.palette(),"collision_context":"BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "simulation":"server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented"}) + } + fn add_trampoline(&mut self) { + self.blocks.push(BlockDefinition { + name: "shacraft:trampoline".into(), + default_state: "shacraft:trampoline".into(), + properties: BTreeMap::new(), + family: "trampoline".into(), + }); + self.states.push(StateDefinition { + state: "shacraft:trampoline".into(), + minecraft_id: u32::MAX, + color: [97, 205, 151], + opacity: 1., + collision: vec![Aabb::new([0., 0., 0.], [1., 1., 1.])], + render: vec![ + Aabb::new([0., 0., 0.], [1., 0.18, 1.]), + Aabb::new([0.05, 0.18, 0.05], [0.95, 0.86, 0.95]), + Aabb::new([0., 0.86, 0.], [1., 1., 1.]), + ], + coverage: Coverage { + identity: "authored-package".into(), + render: "authored-procedural".into(), + collision: "authored-exact".into(), + behavior: "wasm-on-jump".into(), + }, + family: "trampoline".into(), + light: 0, + hardness: 1., + }); + } +} + +/// Canonicalize registry state keys without discarding unknown properties. +pub fn canonical_state(name: &str, properties: &BTreeMap) -> Result { + ensure!( + !name.is_empty() + && name.is_ascii() + && name.contains(':') + && !name + .bytes() + .any(|b| b.is_ascii_whitespace() || b"[]=,".contains(&b)), + "invalid resource name" + ); + for (k, v) in properties { + if k.is_empty() + || v.is_empty() + || !k.is_ascii() + || !v.is_ascii() + || k.bytes() + .chain(v.bytes()) + .any(|b| b.is_ascii_whitespace() || b"[]=,:".contains(&b)) + { + bail!("invalid property"); + } + } + let result = if properties.is_empty() { + name.to_owned() + } else { + format!( + "{}[{}]", + name, + properties + .iter() + .map(|(k, v)| format!("{k}={v}")) + .collect::>() + .join(",") + ) + }; + ensure!(result.len() <= 512, "canonical state too long"); + Ok(result) +} + +#[cfg(test)] +mod tests { + use super::*; + use std::collections::HashSet; + use std::sync::OnceLock; + fn catalog() -> &'static Catalog { + static C: OnceLock = OnceLock::new(); + C.get_or_init(|| Catalog::load_builtin().unwrap()) + } + #[test] + fn complete_against_independent_official_report_projection() { + let c = catalog(); + let report: Value = serde_json::from_slice( + &decompress(include_bytes!("../data/report-identities.json.gz")).unwrap(), + ) + .unwrap(); + let blocks = report["blocks"].as_object().unwrap(); + assert_eq!(blocks.len(), 1196); + assert_eq!(c.data_version, 4903); + let mut actual = HashMap::new(); + for s in &c.states { + if s.state.starts_with("minecraft:") { + actual.insert(s.state.clone(), s.minecraft_id); + } + } + let mut expected = HashMap::new(); + for (name, b) in blocks { + let def = c.blocks.iter().find(|b| &b.name == name).unwrap(); + assert_eq!( + serde_json::to_value(&def.properties).unwrap(), + b["properties"] + ); + for state in b["states"].as_array().unwrap() { + let props = + serde_json::from_value(state.get("properties").cloned().unwrap_or(json!({}))) + .unwrap(); + let name = canonical_state(name, &props).unwrap(); + expected.insert(name.clone(), state["id"].as_u64().unwrap() as u32); + if state.get("default") == Some(&json!(true)) { + assert_eq!(def.default_state, name); + } + } + } + assert_eq!(actual.len(), 32366); + assert_eq!(actual, expected); + assert_eq!( + c.entities + .iter() + .map(|e| e.name.clone()) + .collect::>(), + report["entities"] + .as_array() + .unwrap() + .iter() + .map(|s| s.as_str().unwrap().to_owned()) + .collect() + ); + assert!(c.state("minecraft:potent_sulfur").is_some()); + assert!(c.entity("minecraft:sulfur_cube").is_some()); + } + #[test] + fn every_state_has_valid_shapes_and_explicit_coverage() { + for s in &catalog().states { + assert!(!s.coverage.render.is_empty()); + assert!(!s.coverage.collision.is_empty()); + for b in s.collision.iter().chain(&s.render) { + assert!(b.valid(), "{} {b:?}", s.state); + assert!( + b.min.iter().chain(&b.max).all(|v| (-2.0..=3.0).contains(v)), + "{} {b:?}", + s.state + ); + } + if s.family != "air" + && !matches!( + s.family.as_str(), + "light" | "structure_void" | "barrier" | "moving_piston" + ) + { + assert!(!s.render.is_empty(), "missing {}", s.state); + } + } + } + #[test] + fn official_entity_dimensions_and_authored_models_present() { + assert_eq!(catalog().entities.len(), 158); + for e in &catalog().entities { + assert!(e.width >= 0. && e.height >= 0.); + assert!(e.properties.contains_key("attributes")); + if e.properties["model_family"] != "invisible" { + assert!(!e.render.is_empty()); + } + } + assert_eq!(catalog().entity("minecraft:player").unwrap().width, 0.6); + assert_eq!( + catalog().entity("minecraft:cow").unwrap().properties["model_family"], + "quadruped" + ); + } + #[test] + fn sampler_defaults_and_palette_are_registered() { + let c = catalog(); + let samples = c.sampler(); + assert_eq!(samples.len(), 1197); + let positions = samples.iter().map(|s| s.position).collect::>(); + assert_eq!(positions.len(), samples.len()); + for sample in samples { + assert!(c.state(&sample.state).is_some()); + assert!(sample.position[0].abs() <= 64 && sample.position[2].abs() <= 64); + } + for state in c.palette().values() { + assert!(c.state(state).is_some()); + } + } + #[test] + fn key_collision_states_and_orientation() { + let c = catalog(); + let bottom = c + .state("minecraft:oak_slab[type=bottom,waterlogged=false]") + .unwrap(); + let top = c + .state("minecraft:oak_slab[type=top,waterlogged=false]") + .unwrap(); + assert_eq!(bottom.collision[0], Aabb::new([0., 0., 0.], [1., 0.5, 1.])); + assert_eq!(top.collision[0].min[1], 0.5); + for half in ["bottom", "top"] { + for facing in ["north", "south", "east", "west"] { + let s=c.state(&format!("minecraft:oak_stairs[facing={facing},half={half},shape=straight,waterlogged=false]")).unwrap(); + assert!((s.collision.iter().map(Aabb::volume).sum::() - 0.75).abs() < 0.0001); + } + } + let door = c + .state( + "minecraft:oak_door[facing=north,half=lower,hinge=left,open=false,powered=false]", + ) + .unwrap(); + let open = c + .state("minecraft:oak_door[facing=north,half=lower,hinge=left,open=true,powered=false]") + .unwrap(); + assert_ne!(door.collision, open.collision); + assert!( + c.state("minecraft:water[level=0]") + .unwrap() + .collision + .is_empty() + ); + assert!( + c.state("minecraft:oak_fence") + .unwrap() + .collision + .iter() + .any(|b| b.max[1] == 1.5) + ); + assert!( + c.state("minecraft:scaffolding") + .unwrap() + .coverage + .collision + .contains("approximate") + ); + assert!( + c.state("minecraft:powder_snow") + .unwrap() + .coverage + .collision + .contains("approximate") + ); + } +} diff --git a/crates/shacraft-content/src/packages.rs b/crates/shacraft-content/src/packages.rs new file mode 100644 index 0000000..20f06ea --- /dev/null +++ b/crates/shacraft-content/src/packages.rs @@ -0,0 +1,365 @@ +//! Unified packages: verified resources with an explicit public/server boundary. +use anyhow::{Context, Result, bail, ensure}; +use serde::{Deserialize, Serialize}; +use serde_json::{Value, json}; +use sha2::{Digest, Sha256}; +use std::collections::{BTreeMap, HashSet}; +use std::path::{Component, Path, PathBuf}; + +pub const MAX_RESOURCE_BYTES: u64 = 16 * 1024 * 1024; +pub const MAX_PACKAGE_BYTES: u64 = 64 * 1024 * 1024; +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct PackageDependency { + pub id: String, + pub version: String, +} +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct PackageResource { + pub path: String, + pub scope: String, + pub role: String, + pub sha256: String, + pub size: u64, +} +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct PackageManifest { + pub schema: u32, + pub id: String, + pub version: String, + pub license: String, + pub dependencies: Vec, + pub capabilities: Vec, + pub resources: Vec, +} +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Package { + pub directory: PathBuf, + pub manifest: PackageManifest, +} +fn token(s: &str) -> bool { + !s.is_empty() + && s.len() <= 128 + && s.bytes() + .all(|b| b.is_ascii_alphanumeric() || b"._-".contains(&b)) +} +fn version(s: &str) -> bool { + let p = s.split('.').collect::>(); + p.len() == 3 + && p.iter().all(|s| { + !s.is_empty() + && s.len() <= 5 + && (s.len() == 1 || !s.starts_with('0')) + && s.bytes().all(|b| b.is_ascii_digit()) + }) +} +fn safe_path(s: &str) -> bool { + !s.is_empty() + && s.len() <= 256 + && s.is_ascii() + && !s.contains('\\') + && !s.contains(':') + && !s.contains('%') + && !s.bytes().any(|b| b.is_ascii_control()) + && !Path::new(s).is_absolute() + && Path::new(s) + .components() + .all(|c| matches!(c, Component::Normal(_))) + && s.split('/').all(|s| !s.is_empty() && s != "." && s != "..") +} +impl PackageManifest { + pub fn validate(&self) -> Result<()> { + ensure!(self.schema == 1, "unsupported package schema"); + ensure!(token(&self.id), "invalid package id"); + ensure!(version(&self.version), "invalid exact semantic version"); + ensure!( + !self.license.is_empty() + && self.license.len() <= 256 + && !self.license.chars().any(char::is_control), + "license required" + ); + ensure!( + self.resources.len() <= 128 && !self.resources.is_empty(), + "invalid package resource count" + ); + ensure!( + self.dependencies.len() <= 32 && self.capabilities.len() <= 32, + "too many dependencies or capabilities" + ); + let mut paths = HashSet::new(); + let mut total = 0u64; + for r in &self.resources { + ensure!(safe_path(&r.path), "unsafe resource path {}", r.path); + ensure!(paths.insert(&r.path), "duplicate resource path"); + ensure!( + matches!(r.scope.as_str(), "client" | "common" | "server"), + "invalid resource scope" + ); + ensure!(token(&r.role), "invalid resource role"); + ensure!( + r.sha256.len() == 64 + && r.sha256 + .bytes() + .all(|b| b.is_ascii_hexdigit() && !b.is_ascii_uppercase()), + "invalid SHA-256" + ); + ensure!(r.size <= MAX_RESOURCE_BYTES, "resource too large"); + total = total.checked_add(r.size).context("package size overflow")?; + if r.role == "wasm-on-jump" { + ensure!( + r.scope == "server" && r.path.ends_with(".wasm"), + "executable jump hook must be server-only WASM" + ); + } + } + ensure!( + total <= MAX_PACKAGE_BYTES, + "package exceeds total size limit" + ); + let mut deps = HashSet::new(); + for d in &self.dependencies { + ensure!( + token(&d.id) && version(&d.version) && d.id != self.id && deps.insert(&d.id), + "invalid or duplicate dependency" + ); + } + for c in &self.capabilities { + ensure!( + matches!( + c.as_str(), + "blocks.define" + | "entities.define" + | "client.texture" + | "client.shader" + | "client.sound" + | "client.style" + | "server.on_jump" + ), + "unsupported capability {c}" + ); + } + ensure!( + self.resources.iter().all(|r| r.role != "wasm-on-jump" + || self.capabilities.iter().any(|c| c == "server.on_jump")), + "WASM hook capability missing" + ); + Ok(()) + } + /// Clients never receive server resource names, contents, sizes, or hashes. + pub fn client_manifest(&self) -> Value { + json!({"schema":self.schema,"id":self.id,"version":self.version,"license":self.license, + "dependencies":self.dependencies,"capabilities":self.capabilities.iter().filter(|s|!s.starts_with("server.")).collect::>(), + "resources":self.resources.iter().filter(|r|r.scope!="server").collect::>()}) + } +} +impl Package { + pub fn load(directory: impl AsRef) -> Result { + let dir = directory.as_ref(); + ensure!( + !dir.symlink_metadata()?.file_type().is_symlink(), + "package directory is a symlink" + ); + let directory = dir.canonicalize()?; + let path = directory.join("manifest.json"); + ensure!( + !path.symlink_metadata()?.file_type().is_symlink(), + "package manifest is a symlink" + ); + ensure!(path.metadata()?.len() <= 256 * 1024, "manifest too large"); + let manifest: PackageManifest = serde_json::from_slice(&std::fs::read(path)?)?; + manifest.validate()?; + let package = Self { + directory, + manifest, + }; + for r in &package.manifest.resources { + package.read_resource(&r.path)?; + } + Ok(package) + } + /// Re-verifies the resource at read time to reject replacement after loading. + pub fn read_resource(&self, path: &str) -> Result> { + let resource = self + .manifest + .resources + .iter() + .find(|r| r.path == path) + .context("resource is not declared")?; + ensure!(safe_path(path), "unsafe resource path"); + let mut real = self.directory.clone(); + for part in Path::new(path).components() { + real.push(part); + ensure!( + !real.symlink_metadata()?.file_type().is_symlink(), + "resource paths may not contain symlinks" + ); + } + let file = std::fs::File::open(&real)?; + ensure!( + file.metadata()?.is_file() + && file.metadata()?.len() == resource.size + && resource.size <= MAX_RESOURCE_BYTES, + "resource size mismatch" + ); + use std::io::Read; + let mut bytes = Vec::new(); + file.take(MAX_RESOURCE_BYTES + 1).read_to_end(&mut bytes)?; + ensure!( + bytes.len() as u64 == resource.size, + "resource changed while reading" + ); + ensure!( + format!("{:x}", Sha256::digest(&bytes)) == resource.sha256, + "resource hash mismatch: {path}" + ); + Ok(bytes) + } + pub fn public_resource(&self, path: &str) -> Result> { + ensure!( + self.manifest + .resources + .iter() + .any(|r| r.path == path && r.scope != "server"), + "resource is not public" + ); + self.read_resource(path) + } +} +/// Load and verify the entire dependency graph. Missing or incompatible required +/// packages and cycles fail before the server exposes any package to clients. +pub fn load_packages(root: impl AsRef) -> Result> { + let mut dirs = std::fs::read_dir(root)? + .map(|e| e.map(|e| e.path())) + .collect::>>()?; + dirs.sort(); + ensure!(dirs.len() <= 128, "too many package entries"); + let mut out = Vec::new(); + let mut ids = BTreeMap::new(); + for path in dirs { + if path.is_dir() && path.join("manifest.json").exists() { + let p = Package::load(path)?; + ensure!( + ids.insert(p.manifest.id.clone(), out.len()).is_none(), + "duplicate package id" + ); + out.push(p); + } + } + for p in &out { + for d in &p.manifest.dependencies { + let i = *ids + .get(&d.id) + .with_context(|| format!("missing required package {}", d.id))?; + ensure!( + out[i].manifest.version == d.version, + "dependency version mismatch for {}", + d.id + ); + } + } + fn visit( + i: usize, + p: &[Package], + ids: &BTreeMap, + visiting: &mut HashSet, + done: &mut HashSet, + ) -> Result<()> { + if done.contains(&i) { + return Ok(()); + } + if !visiting.insert(i) { + bail!("package dependency cycle") + } + for d in &p[i].manifest.dependencies { + visit(ids[&d.id], p, ids, visiting, done)?; + } + visiting.remove(&i); + done.insert(i); + Ok(()) + } + let mut done = HashSet::new(); + for i in 0..out.len() { + visit(i, &out, &ids, &mut HashSet::new(), &mut done)?; + } + Ok(out) +} + +#[cfg(test)] +mod tests { + use super::*; + fn package_root() -> PathBuf { + Path::new(env!("CARGO_MANIFEST_DIR")).join("../../packages") + } + #[test] + fn bundled_packages_hashes_dependencies_and_privacy() { + let p = load_packages(package_root()).unwrap(); + assert_eq!(p.len(), 2); + let t = p + .iter() + .find(|p| p.manifest.id == "shacraft.trampoline") + .unwrap(); + assert!( + t.read_resource("server/trampoline.wasm") + .unwrap() + .starts_with(b"\0asm") + ); + assert!(t.public_resource("server/trampoline.wasm").is_err()); + let public = t.manifest.client_manifest().to_string(); + assert!(!public.contains("server/")); + assert!(!public.contains("server.on_jump")); + } + #[test] + fn paths_sizes_and_versions_are_validated() { + let p = load_packages(package_root()).unwrap(); + for path in [ + "../secret", + "/etc/passwd", + "client/../../secret", + "client\\secret", + "client//file", + "client/./file", + "client/%2e%2e/key", + ] { + let mut m = p[0].manifest.clone(); + m.resources[0].path = path.into(); + assert!(m.validate().is_err(), "{path}"); + } + let mut m = p[0].manifest.clone(); + m.resources[0].size = MAX_RESOURCE_BYTES + 1; + assert!(m.validate().is_err()); + m = p[0].manifest.clone(); + m.version = "latest".into(); + assert!(m.validate().is_err()); + } + #[test] + fn changed_resource_rejected() { + let dir = tempfile::tempdir().unwrap(); + let bytes = b"own content"; + std::fs::write(dir.path().join("asset"), bytes).unwrap(); + let m = PackageManifest { + schema: 1, + id: "test.sample".into(), + version: "1.0.0".into(), + license: "MIT".into(), + dependencies: vec![], + capabilities: vec![], + resources: vec![PackageResource { + path: "asset".into(), + scope: "client".into(), + role: "texture".into(), + sha256: format!("{:x}", Sha256::digest(bytes)), + size: bytes.len() as u64, + }], + }; + std::fs::write( + dir.path().join("manifest.json"), + serde_json::to_vec(&m).unwrap(), + ) + .unwrap(); + let p = Package::load(dir.path()).unwrap(); + std::fs::write(dir.path().join("asset"), b"bad content").unwrap(); + assert!(p.read_resource("asset").is_err()); + } +} diff --git a/crates/shacraft-content/src/shapes.rs b/crates/shacraft-content/src/shapes.rs new file mode 100644 index 0000000..35af4ef --- /dev/null +++ b/crates/shacraft-content/src/shapes.rs @@ -0,0 +1,828 @@ +//! Shacraft's original low-poly templates; no Minecraft visual models/assets. +use crate::Aabb; +use std::collections::BTreeMap; +fn bx(a: [f32; 3], b: [f32; 3]) -> Aabb { + Aabb::new(a, b) +} +fn props(state: &str) -> BTreeMap<&str, &str> { + state + .split_once('[') + .map(|(_, tail)| { + tail.trim_end_matches(']') + .split(',') + .filter_map(|p| p.split_once('=')) + .collect() + }) + .unwrap_or_default() +} +fn get<'a>(p: &BTreeMap<&'a str, &'a str>, key: &str, default: &'a str) -> &'a str { + p.get(key).copied().unwrap_or(default) +} +fn num(p: &BTreeMap<&str, &str>, key: &str, default: f32) -> f32 { + p.get(key).and_then(|s| s.parse().ok()).unwrap_or(default) +} +fn rotate(boxes: Vec, facing: &str) -> Vec { + let steps = match facing { + "east" => 1, + "south" => 2, + "west" => 3, + _ => 0, + }; + boxes + .into_iter() + .map(|mut b| { + for _ in 0..steps { + b = bx( + [1. - b.max[2], b.min[1], b.min[0]], + [1. - b.min[2], b.max[1], b.max[0]], + ) + } + b + }) + .collect() +} +const FULL: Aabb = Aabb::new([0., 0., 0.], [1., 1., 1.]); +pub(crate) fn block_render( + state: &str, + family: &str, + collision: &[Aabb], +) -> (Vec, &'static str) { + let p = props(state); + let name = state.split('[').next().unwrap_or(state); + let facing = get(&p, "facing", "north"); + let b = match family { + "air" | "barrier" | "light" | "structure_void" | "moving_piston" => { + return (vec![], "intentionally-invisible"); + } + "liquid" | "bubble_column" => vec![bx( + [0., 0., 0.], + [ + 1., + if num(&p, "level", 0.) >= 8. { + 1. + } else { + (8. - num(&p, "level", 0.)).max(1.) / 9. + }, + 1., + ], + )], + "button" | "lever" => { + let pressed = get(&p, "powered", "false") == "true"; + let depth = if pressed { 0.0625 } else { 0.125 }; + let face = get(&p, "face", "wall"); + let mut b = vec![match face { + "floor" => bx([0.3125, 0., 0.375], [0.6875, depth, 0.625]), + "ceiling" => bx([0.3125, 1. - depth, 0.375], [0.6875, 1., 0.625]), + _ => bx([0.3125, 0.375, 1. - depth], [0.6875, 0.625, 1.]), + }]; + if family == "lever" { + b.push(match face { + "floor" => bx( + [0.46875, 0.0625, if pressed { 0.55 } else { 0.25 }], + [0.53125, 0.375, if pressed { 0.75 } else { 0.45 }], + ), + "ceiling" => bx( + [0.46875, 0.625, if pressed { 0.55 } else { 0.25 }], + [0.53125, 0.9375, if pressed { 0.75 } else { 0.45 }], + ), + _ => bx( + [0.46875, if pressed { 0.25 } else { 0.55 }, 0.625], + [0.53125, if pressed { 0.45 } else { 0.75 }, 0.9375], + ), + }); + } + rotate(b, facing) + } + "pressure_plate" | "weighted_pressure_plate" => vec![bx( + [0.0625, 0., 0.0625], + [ + 0.9375, + if get(&p, "powered", "false") == "true" || num(&p, "power", 0.) > 0. { + 0.03125 + } else { + 0.0625 + }, + 0.9375, + ], + )], + "trip_wire_hook" => rotate( + vec![ + bx([0.375, 0.25, 0.875], [0.625, 0.75, 1.]), + bx([0.46875, 0.4375, 0.5], [0.53125, 0.5, 0.9375]), + ], + facing, + ), + "snow_layer" => vec![bx([0., 0., 0.], [1., num(&p, "layers", 1.) / 8., 1.])], + "mossy_carpet" => { + let mut b = vec![bx([0., 0., 0.], [1., 0.0625, 1.])]; + for (dir, a, z) in [ + ("north", [0., 0., 0.], [1., 0., 0.0625]), + ("south", [0., 0., 0.9375], [1., 0., 1.]), + ("west", [0., 0., 0.], [0.0625, 0., 1.]), + ("east", [0.9375, 0., 0.], [1., 0., 1.]), + ] { + let v = get(&p, dir, "none"); + if v != "none" { + b.push(bx(a, [z[0], if v == "tall" { 1. } else { 0.5 }, z[2]])); + } + } + b + } + "big_dripleaf" | "big_dripleaf_stem" => { + let mut b = vec![bx([0.4375, 0., 0.4375], [0.5625, 0.875, 0.5625])]; + if family == "big_dripleaf" { + let tilt = get(&p, "tilt", "none"); + b.push(if tilt == "full" { + bx([0.0625, 0.375, 0.75], [0.9375, 0.875, 0.8125]) + } else { + bx( + [ + 0.0625, + if tilt == "partial" { 0.625 } else { 0.8125 }, + 0.0625, + ], + [0.9375, 0.875, 0.9375], + ) + }); + } + rotate(b, facing) + } + "fence" => { + let mut b = vec![bx([0.375, 0., 0.375], [0.625, 1., 0.625])]; + for (dir, a, z) in [ + ("north", [0.4375, 0., 0.], [0.5625, 0., 0.5]), + ("south", [0.4375, 0., 0.5], [0.5625, 0., 1.]), + ("west", [0., 0., 0.4375], [0.5, 0., 0.5625]), + ("east", [0.5, 0., 0.4375], [1., 0., 0.5625]), + ] { + if get(&p, dir, "false") == "true" { + for y in [0.375, 0.75] { + b.push(bx([a[0], y, a[2]], [z[0], y + 0.1875, z[2]])); + } + } + } + b + } + "wall" => { + let mut b = vec![]; + if get(&p, "up", "true") == "true" { + b.push(bx([0.25, 0., 0.25], [0.75, 1., 0.75])); + } + for (dir, a, z) in [ + ("north", [0.3125, 0., 0.], [0.6875, 0., 0.5]), + ("south", [0.3125, 0., 0.5], [0.6875, 0., 1.]), + ("west", [0., 0., 0.3125], [0.5, 0., 0.6875]), + ("east", [0.5, 0., 0.3125], [1., 0., 0.6875]), + ] { + let value = get(&p, dir, "none"); + if value != "none" { + b.push(bx( + a, + [z[0], if value == "tall" { 1. } else { 0.8125 }, z[2]], + )); + } + } + if b.is_empty() { + b.push(bx([0.25, 0., 0.25], [0.75, 1., 0.75])); + } + b + } + "fence_gate" => { + let mut b = vec![ + bx([0., 0.3125, 0.375], [0.125, 1., 0.625]), + bx([0.875, 0.3125, 0.375], [1., 1., 0.625]), + ]; + if get(&p, "open", "false") == "true" { + b.push(bx([0., 0.375, 0.5], [0.1875, 0.875, 1.])); + b.push(bx([0.8125, 0.375, 0.5], [1., 0.875, 1.])); + } else { + for y in [0.375, 0.75] { + b.push(bx([0.125, y, 0.4375], [0.875, y + 0.125, 0.5625])); + } + } + rotate(b, facing) + } + "rail" | "powered_rail" | "detector_rail" => { + let s = get(&p, "shape", "north_south"); + let mut b = vec![]; + if s.starts_with("ascending_") { + for i in 0..8 { + let z = i as f32 / 8.; + for x in [0.1875, 0.75] { + b.push(bx([x, 0.875 - z, z], [x + 0.0625, 0.9375 - z, z + 0.125])); + } + } + rotate(b, s.trim_start_matches("ascending_")) + } else { + for x in [0.1875, 0.75] { + b.push(bx([x, 0.0625, 0.], [x + 0.0625, 0.125, 1.])); + } + for z in [0.125, 0.5, 0.875] { + b.push(bx([0.125, 0., z], [0.875, 0.0625, (z + 0.0625).min(1.)])); + } + // Curved tracks use a visible orthogonal corner in this box renderer. + if s == "east_west" { + rotate(b, "east") + } else if s.contains('_') && s != "north_south" { + let mut c = vec![ + bx([0.1875, 0.06, 0.5], [1., 0.125, 0.5625]), + bx([0.1875, 0.06, 0.], [0.25, 0.125, 0.56]), + bx([0.75, 0.06, 0.], [0.8125, 0.125, 0.94]), + bx([0.75, 0.06, 0.875], [1., 0.125, 0.9375]), + ]; + c = rotate( + c, + match s { + "south_east" => "east", + "south_west" => "south", + "north_west" => "west", + _ => "north", + }, + ); + c + } else { + b + } + } + } + "ladder" => rotate( + vec![ + bx([0.125, 0., 0.9375], [0.25, 1., 1.]), + bx([0.75, 0., 0.9375], [0.875, 1., 1.]), + bx([0.125, 0.1875, 0.875], [0.875, 0.25, 1.]), + bx([0.125, 0.4375, 0.875], [0.875, 0.5, 1.]), + bx([0.125, 0.6875, 0.875], [0.875, 0.75, 1.]), + bx([0.125, 0.9375, 0.875], [0.875, 1., 1.]), + ], + facing, + ), + "standing_sign" | "banner" => rotate( + vec![ + bx([0.46875, 0., 0.46875], [0.53125, 0.5, 0.53125]), + bx([0.0625, 0.5, 0.46875], [0.9375, 0.9375, 0.53125]), + ], + rotation_facing(num(&p, "rotation", 0.)), + ), + "wall_sign" | "wall_banner" => rotate( + vec![bx([0.0625, 0.25, 0.9375], [0.9375, 0.8125, 1.])], + facing, + ), + "ceiling_hanging_sign" | "wall_hanging_sign" => rotate( + vec![ + bx([0.0625, 0.125, 0.4375], [0.9375, 0.6875, 0.5625]), + bx([0.1875, 0.6875, 0.46875], [0.25, 1., 0.53125]), + bx([0.75, 0.6875, 0.46875], [0.8125, 1., 0.53125]), + ], + facing, + ), + "torch" | "redstone_torch" => vec![ + bx([0.4375, 0., 0.4375], [0.5625, 0.625, 0.5625]), + bx([0.375, 0.5, 0.375], [0.625, 0.75, 0.625]), + ], + "wall_torch" | "redstone_wall_torch" => rotate( + vec![ + bx([0.4375, 0.125, 0.6875], [0.5625, 0.5, 0.875]), + bx([0.375, 0.4375, 0.625], [0.625, 0.6875, 0.875]), + ], + facing, + ), + "redstone_wire" | "tripwire" => { + let mut b = vec![bx([0.3125, 0.01, 0.3125], [0.6875, 0.04, 0.6875])]; + for (dir, a, z) in [ + ("north", [0.4375, 0.01, 0.], [0.5625, 0.04, 0.5]), + ("south", [0.4375, 0.01, 0.5], [0.5625, 0.04, 1.]), + ("west", [0., 0.01, 0.4375], [0.5, 0.04, 0.5625]), + ("east", [0.5, 0.01, 0.4375], [1., 0.04, 0.5625]), + ] { + let v = get(&p, dir, "none"); + if v != "none" && v != "false" { + b.push(bx(a, z)); + } + } + b + } + "nether_portal" => { + if get(&p, "axis", "x") == "x" { + vec![bx([0., 0., 0.4375], [1., 1., 0.5625])] + } else { + vec![bx([0.4375, 0., 0.], [0.5625, 1., 1.])] + } + } + "end_portal" | "end_gateway" => vec![bx([0., 0.125, 0.], [1., 0.1875, 1.])], + "fire" | "soul_fire" => vec![ + bx([0.125, 0., 0.46875], [0.875, 0.875, 0.53125]), + bx([0.46875, 0., 0.125], [0.53125, 0.75, 0.875]), + ], + "vine" | "glow_lichen" | "sculk_vein" | "multiface" => { + let mut b = vec![]; + for (dir, a, z) in [ + ("north", [0., 0., 0.], [1., 1., 0.03125]), + ("south", [0., 0., 0.96875], [1., 1., 1.]), + ("west", [0., 0., 0.], [0.03125, 1., 1.]), + ("east", [0.96875, 0., 0.], [1., 1., 1.]), + ("up", [0., 0.96875, 0.], [1., 1., 1.]), + ("down", [0., 0., 0.], [1., 0.03125, 1.]), + ] { + if get(&p, dir, "false") == "true" { + b.push(bx(a, z)); + } + } + if b.is_empty() { + b.push(bx([0., 0., 0.], [1., 1., 0.03125])); + } + b + } + "flower_pot" => { + let mut b = vec![bx([0.3125, 0., 0.3125], [0.6875, 0.375, 0.6875])]; + if name != "minecraft:flower_pot" { + b.extend(plant(0.8)); + } + b + } + "crop" | "beetroot" | "potato" | "carrot" | "torchflower_crop" | "pitcher_crop" + | "nether_wart" => plant(0.2 + num(&p, "age", 0.).min(7.) / 10.), + "flower" + | "wither_rose" + | "eyeblossom" + | "tall_flower" + | "double_plant" + | "sapling" + | "bush" + | "tall_grass" + | "short_dry_grass" + | "tall_dry_grass" + | "dry_vegetation" + | "sugar_cane" + | "mushroom" + | "nether_fungus" + | "nether_roots" + | "nether_sprouts" + | "hanging_roots" + | "hanging_moss" + | "firefly_bush" + | "sweet_berry_bush" + | "mangrove_propagule" + | "bamboo_sapling" + | "stem" + | "attached_stem" + | "seagrass" + | "tall_seagrass" + | "kelp" + | "kelp_plant" + | "twisting_vines" + | "twisting_vines_plant" + | "weeping_vines" + | "weeping_vines_plant" + | "cave_vines" + | "cave_vines_plant" + | "small_dripleaf" + | "spore_blossom" + | "cactus_flower" => plant(if family == "mushroom" { 0.45 } else { 0.85 }), + "leaf_litter" | "flower_bed" | "frogspawn" => { + vec![bx([0.0625, 0.015, 0.0625], [0.9375, 0.0625, 0.9375])] + } + "coral" + | "coral_plant" + | "base_coral_plant" + | "coral_fan" + | "base_coral_fan" + | "coral_wall_fan" + | "base_coral_wall_fan" => plant(0.625), + "web" => vec![ + bx([0., 0., 0.46875], [1., 1., 0.53125]), + bx([0.46875, 0., 0.], [0.53125, 1., 1.]), + ], + "powder_snow" => vec![FULL], + _ => { + if !collision.is_empty() { + collision.to_vec() + } else { + // Noncollidable interaction geometry authored from the family, no + // silent air substitution. Rare unsupported visual details remain + // explicitly approximate in the coverage field. + return ( + vec![bx([0.125, 0., 0.125], [0.875, 0.5, 0.875])], + "authored-approximate", + ); + } + } + }; + (b, "authored-procedural") +} +fn rotation_facing(v: f32) -> &'static str { + match ((v + 2.) as i32 / 4).rem_euclid(4) { + 0 => "south", + 1 => "west", + 2 => "north", + _ => "east", + } +} +fn plant(height: f32) -> Vec { + vec![ + bx([0.46875, 0., 0.46875], [0.53125, height, 0.53125]), + bx( + [0.1875, height * 0.35, 0.46875], + [0.8125, height * 0.75, 0.53125], + ), + bx( + [0.46875, height * 0.25, 0.1875], + [0.53125, height * 0.65, 0.8125], + ), + ] +} + +pub(crate) fn color(name: &str) -> [u8; 3] { + let name = name.strip_prefix("minecraft:").unwrap_or(name); + let colors = [ + ("light_blue", [108, 169, 193]), + ("light_gray", [170, 173, 163]), + ("magenta", [175, 97, 153]), + ("orange", [207, 136, 66]), + ("yellow", [220, 191, 80]), + ("purple", [130, 96, 164]), + ("cyan", [61, 155, 156]), + ("blue", [74, 111, 181]), + ("brown", [119, 88, 65]), + ("green", [91, 132, 75]), + ("lime", [148, 185, 87]), + ("pink", [216, 153, 165]), + ("red", [179, 78, 64]), + ("black", [54, 59, 62]), + ("gray", [104, 113, 112]), + ("white", [215, 219, 207]), + ]; + for (prefix, c) in colors { + if name.starts_with(&format!("{prefix}_")) { + return c; + } + } + if name.contains("sulfur") { + return [220, 210, 78]; + } + if name.contains("cinnabar") { + return [185, 78, 63]; + } + if name.contains("snow") || name.contains("quartz") || name.contains("calcite") { + return [217, 229, 228]; + } + if name.contains("water") { + return [69, 133, 182]; + } + if name.contains("lava") { + return [226, 123, 49]; + } + if name.contains("glass") || name.contains("ice") { + return [139, 190, 203]; + } + if name.contains("grass") || name.contains("leaves") || name.contains("moss") { + return [109, 148, 82]; + } + if name.contains("cherry") { + return [191, 141, 142]; + } + if name.contains("pale_oak") { + return [194, 192, 169]; + } + if name.contains("crimson") { + return [132, 63, 82]; + } + if name.contains("warped") { + return [58, 139, 135]; + } + if name.contains("dark_oak") || name.contains("spruce") { + return [106, 85, 60]; + } + if name.contains("birch") || name.contains("bamboo") { + return [190, 179, 121]; + } + if name.contains("acacia") || name.contains("mangrove") { + return [159, 102, 71]; + } + if name.contains("oak") + || name.contains("jungle") + || name.contains("wood") + || name.contains("chest") + { + return [163, 134, 91]; + } + if name.contains("copper") { + return if name.contains("oxidized") { + [79, 155, 131] + } else { + [179, 115, 83] + }; + } + if name.contains("gold") { + return [210, 181, 81]; + } + if name.contains("diamond") { + return [91, 189, 191]; + } + if name.contains("emerald") { + return [67, 161, 112]; + } + if name.contains("redstone") { + return [162, 70, 57]; + } + if name.contains("sand") || name.contains("end_stone") { + return [195, 184, 144]; + } + if name.contains("dirt") || name.contains("mud") { + return [131, 108, 83]; + } + if name.contains("deepslate") || name.contains("blackstone") || name.contains("obsidian") { + return [69, 72, 80]; + } + if name.contains("stone") || name.contains("andesite") || name.contains("cobble") { + return [141, 150, 146]; + } + let hash = name + .bytes() + .fold(2166136261u32, |h, b| (h ^ b as u32).wrapping_mul(16777619)); + [ + 100 + (hash % 82) as u8, + 100 + ((hash >> 8) % 82) as u8, + 100 + ((hash >> 16) % 82) as u8, + ] +} +pub(crate) fn opacity(name: &str) -> f32 { + if name.contains("glass") { + 0.42 + } else if name.contains("water") || name.contains("ice") { + 0.68 + } else { + 1. + } +} +pub(crate) fn entity_color(name: &str) -> [u8; 3] { + match name.strip_prefix("minecraft:").unwrap_or(name) { + "player" | "mannequin" => [78, 154, 169], + "cow" | "mooshroom" => [132, 108, 90], + "pig" => [209, 150, 155], + "sheep" => [219, 216, 196], + "creeper" | "zombie" | "zombie_villager" => [110, 152, 98], + "skeleton" | "stray" | "parched" => [201, 202, 179], + "enderman" | "ender_dragon" => [66, 60, 83], + "sulfur_cube" => [213, 209, 75], + "slime" => [129, 188, 103], + "magma_cube" => [149, 76, 44], + "allay" => [96, 199, 212], + "bee" => [213, 182, 72], + "fox" => [191, 123, 71], + "wolf" => [169, 177, 166], + _ => color(name), + } +} + +pub(crate) fn entity_render(name: &str, width: f32, height: f32) -> (Vec, &'static str) { + let n = name.strip_prefix("minecraft:").unwrap_or(name); + let family = if n.ends_with("_boat") || n.ends_with("_raft") { + "boat" + } else if n.ends_with("minecart") { + "cart" + } else { + match n { + "marker" | "interaction" | "area_effect_cloud" | "lightning_bolt" => "invisible", + "cow" | "mooshroom" | "pig" | "sheep" | "wolf" | "cat" | "ocelot" | "fox" | "panda" + | "polar_bear" | "goat" | "horse" | "skeleton_horse" | "zombie_horse" | "donkey" + | "mule" | "llama" | "trader_llama" | "camel" | "camel_husk" | "hoglin" | "zoglin" + | "ravager" | "sniffer" | "armadillo" => "quadruped", + "creeper" => "creeper", + "spider" | "cave_spider" | "silverfish" | "endermite" => "arthropod", + "cod" | "salmon" | "tropical_fish" | "pufferfish" | "dolphin" | "tadpole" + | "axolotl" | "guardian" | "elder_guardian" | "nautilus" | "zombie_nautilus" => { + "aquatic" + } + "squid" | "glow_squid" => "squid", + "ghast" | "happy_ghast" => "ghast", + "slime" | "magma_cube" | "sulfur_cube" | "shulker" => "cube-creature", + "bat" | "bee" | "allay" | "vex" | "parrot" | "phantom" => "winged", + "chicken" => "bird", + "rabbit" => "rabbit", + "frog" | "turtle" => "low-quadruped", + "ender_dragon" => "dragon", + "wither" => "wither", + "snow_golem" => "snow-golem", + "blaze" | "breeze" => "elemental", + "player" | "mannequin" | "zombie" | "zombie_villager" | "drowned" | "husk" + | "skeleton" | "stray" | "parched" | "bogged" | "wither_skeleton" + | "zombified_piglin" | "piglin" | "piglin_brute" | "villager" | "wandering_trader" + | "pillager" | "vindicator" | "evoker" | "illusioner" | "witch" | "enderman" + | "iron_golem" | "copper_golem" | "creaking" | "warden" | "giant" | "armor_stand" + | "strider" => "biped", + "painting" | "item_frame" | "glow_item_frame" => "frame", + "block_display" | "item_display" | "text_display" => "property-dependent-display", + "arrow" | "spectral_arrow" | "trident" | "firework_rocket" => "bolt", + "falling_block" | "tnt" => "block", + "end_crystal" | "ominous_item_spawner" => "crystal", + "evoker_fangs" => "fangs", + "item" | "leash_knot" | "fishing_bobber" | "egg" | "ender_pearl" + | "experience_bottle" | "experience_orb" | "eye_of_ender" | "fireball" + | "small_fireball" | "dragon_fireball" | "snowball" | "splash_potion" + | "lingering_potion" | "llama_spit" | "shulker_bullet" | "wind_charge" + | "breeze_wind_charge" | "wither_skull" => "small-object", + _ => "small-object", + } + }; + if family == "invisible" { + return (vec![], family); + } + let mut b = match family { + "biped" => vec![ + bx([-0.3, 0.38, -0.18], [0.3, 0.77, 0.18]), + bx([-0.23, 0.77, -0.23], [0.23, 1., 0.23]), + bx([-0.27, 0., -0.16], [-0.04, 0.4, 0.16]), + bx([0.04, 0., -0.16], [0.27, 0.4, 0.16]), + bx([-0.5, 0.4, -0.14], [-0.31, 0.75, 0.14]), + bx([0.31, 0.4, -0.14], [0.5, 0.75, 0.14]), + ], + "quadruped" | "low-quadruped" => { + let mut b = vec![ + bx([-0.4, 0.3, -0.35], [0.4, 0.8, 0.35]), + bx([-0.3, 0.58, -0.5], [0.3, 0.98, -0.2]), + ]; + for x in [-0.35, 0.15] { + for z in [-0.3, 0.18] { + b.push(bx([x, 0., z], [x + 0.2, 0.4, z + 0.15])); + } + } + b + } + "creeper" => vec![ + bx([-0.27, 0.22, -0.2], [0.27, 0.73, 0.2]), + bx([-0.38, 0.7, -0.38], [0.38, 1., 0.38]), + bx([-0.38, 0., -0.38], [-0.02, 0.25, -0.06]), + bx([0.02, 0., -0.38], [0.38, 0.25, -0.06]), + bx([-0.38, 0., 0.06], [-0.02, 0.25, 0.38]), + bx([0.02, 0., 0.06], [0.38, 0.25, 0.38]), + ], + "arthropod" => { + let mut b = vec![ + bx([-0.27, 0.3, -0.35], [0.27, 0.7, 0.35]), + bx([-0.2, 0.32, -0.5], [0.2, 0.62, -0.25]), + ]; + for z in [-0.32, -0.12, 0.12, 0.32] { + b.push(bx([-0.5, 0.1, z], [-0.2, 0.35, z + 0.07])); + b.push(bx([0.2, 0.1, z], [0.5, 0.35, z + 0.07])); + } + b + } + "aquatic" => vec![ + bx([-0.24, 0.25, -0.45], [0.24, 0.7, 0.25]), + bx([-0.4, 0.3, 0.2], [0.4, 0.62, 0.5]), + bx([-0.03, 0.7, -0.15], [0.03, 1., 0.1]), + bx([-0.45, 0.25, -0.2], [0.45, 0.35, 0.1]), + ], + "squid" | "ghast" => { + let mut b = vec![bx([-0.4, 0.4, -0.4], [0.4, 1., 0.4])]; + for x in [-0.3, 0., 0.3] { + for z in [-0.3, 0., 0.3] { + b.push(bx([x - 0.04, 0., z - 0.04], [x + 0.04, 0.45, z + 0.04])); + } + } + b + } + "cube-creature" => vec![ + bx([-0.5, 0., -0.5], [0.5, 1., 0.5]), + bx([-0.3, 0.55, -0.52], [-0.12, 0.72, -0.49]), + bx([0.12, 0.55, -0.52], [0.3, 0.72, -0.49]), + ], + "winged" => vec![ + bx([-0.19, 0.2, -0.3], [0.19, 0.8, 0.3]), + bx([-0.23, 0.65, -0.4], [0.23, 1., -0.05]), + bx([-0.5, 0.45, -0.1], [-0.15, 0.6, 0.3]), + bx([0.15, 0.45, -0.1], [0.5, 0.6, 0.3]), + ], + "bird" => vec![ + bx([-0.34, 0.25, -0.25], [0.34, 0.7, 0.25]), + bx([-0.23, 0.65, -0.35], [0.23, 1., -0.02]), + bx([-0.12, 0.73, -0.5], [0.12, 0.82, -0.3]), + bx([-0.22, 0., -0.03], [-0.08, 0.3, 0.06]), + bx([0.08, 0., -0.03], [0.22, 0.3, 0.06]), + ], + "rabbit" => vec![ + bx([-0.3, 0.12, -0.25], [0.3, 0.6, 0.3]), + bx([-0.22, 0.5, -0.4], [0.22, 0.78, -0.05]), + bx([-0.2, 0.7, -0.25], [-0.08, 1., -0.1]), + bx([0.08, 0.7, -0.25], [0.2, 1., -0.1]), + bx([-0.4, 0., 0.05], [-0.1, 0.2, 0.4]), + bx([0.1, 0., 0.05], [0.4, 0.2, 0.4]), + ], + "dragon" => vec![ + bx([-0.15, 0.3, -0.3], [0.15, 0.7, 0.3]), + bx([-0.1, 0.4, -0.5], [0.1, 0.65, -0.2]), + bx([-0.5, 0.48, -0.1], [-0.12, 0.56, 0.3]), + bx([0.12, 0.48, -0.1], [0.5, 0.56, 0.3]), + bx([-0.055, 0.35, 0.25], [0.055, 0.45, 0.5]), + ], + "wither" => vec![ + bx([-0.1, 0.05, -0.15], [0.1, 0.75, 0.15]), + bx([-0.4, 0.65, -0.12], [0.4, 0.75, 0.12]), + bx([-0.17, 0.75, -0.2], [0.17, 1., 0.2]), + bx([-0.5, 0.65, -0.18], [-0.25, 0.9, 0.18]), + bx([0.25, 0.65, -0.18], [0.5, 0.9, 0.18]), + ], + "snow-golem" => vec![ + bx([-0.45, 0., -0.45], [0.45, 0.4, 0.45]), + bx([-0.35, 0.4, -0.35], [0.35, 0.75, 0.35]), + bx([-0.25, 0.75, -0.25], [0.25, 1., 0.25]), + bx([-0.5, 0.5, -0.04], [0.5, 0.6, 0.04]), + ], + "elemental" => { + let mut b = vec![bx([-0.3, 0.7, -0.3], [0.3, 1., 0.3])]; + for (x, z) in [(-0.4, -0.3), (0.3, -0.3), (-0.4, 0.3), (0.3, 0.3)] { + b.push(bx([x, 0.15, z], [x + 0.1, 0.65, z + 0.1])); + } + b + } + "boat" => vec![ + bx([-0.5, 0., -0.5], [0.5, 0.2, 0.5]), + bx([-0.5, 0.2, -0.5], [-0.36, 0.7, 0.5]), + bx([0.36, 0.2, -0.5], [0.5, 0.7, 0.5]), + bx([-0.36, 0.2, -0.5], [0.36, 0.7, -0.38]), + bx([-0.36, 0.2, 0.38], [0.36, 0.7, 0.5]), + bx([-0.36, 0.32, -0.08], [0.36, 0.42, 0.08]), + ], + "cart" => vec![ + bx([-0.5, 0.1, -0.5], [0.5, 0.3, 0.5]), + bx([-0.5, 0.3, -0.5], [-0.38, 0.85, 0.5]), + bx([0.38, 0.3, -0.5], [0.5, 0.85, 0.5]), + bx([-0.38, 0.3, -0.5], [0.38, 0.85, -0.38]), + bx([-0.38, 0.3, 0.38], [0.38, 0.85, 0.5]), + ], + "frame" | "property-dependent-display" => vec![bx([-0.5, 0., -0.05], [0.5, 1., 0.05])], + "bolt" => vec![ + bx([-0.04, 0.45, -0.5], [0.04, 0.55, 0.5]), + bx([-0.18, 0.43, -0.5], [0.18, 0.57, -0.3]), + ], + "block" => vec![bx([-0.5, 0., -0.5], [0.5, 1., 0.5])], + "crystal" => vec![ + bx([-0.3, 0.25, -0.3], [0.3, 0.75, 0.3]), + bx([-0.15, 0.1, -0.15], [0.15, 0.9, 0.15]), + bx([-0.45, 0., -0.45], [0.45, 0.08, 0.45]), + ], + "fangs" => vec![ + bx([-0.35, 0., -0.3], [-0.1, 1., 0.3]), + bx([0.1, 0., -0.3], [0.35, 1., 0.3]), + ], + _ => vec![ + bx([-0.3, 0.2, -0.4], [0.3, 0.8, 0.4]), + bx([-0.4, 0.3, -0.25], [0.4, 0.7, 0.25]), + ], + }; + if family == "boat" && n.contains("chest") { + b.push(bx([-0.25, 0.4, 0.08], [0.25, 0.95, 0.42])); + } + if family == "cart" && n != "minecart" { + b.push(bx([-0.3, 0.3, -0.3], [0.3, 1., 0.3])); + } + let w = width.max(0.25); + let h = height.max(0.25); + for v in &mut b { + for i in 0..3 { + v.min[i] *= if i == 1 { h } else { w }; + v.max[i] *= if i == 1 { h } else { w }; + } + } + (b, family) +} + +#[cfg(test)] +mod tests { + use super::*; + #[test] + fn four_quarter_rotations_restore_box() { + let initial = vec![bx([0.125, 0.25, 0.375], [0.25, 0.5, 0.75])]; + let mut b = initial.clone(); + for _ in 0..4 { + b = rotate(b, "east"); + } + assert_eq!(b, initial); + } + #[test] + fn connected_fence_has_two_added_rails() { + let (a, _) = block_render( + "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "fence", + &[], + ); + let (b, _) = block_render( + "minecraft:oak_fence[east=true,north=false,south=false,waterlogged=false,west=false]", + "fence", + &[], + ); + assert_eq!(b.len(), a.len() + 2); + assert!(b.iter().all(|b| b.max[1] <= 1.)); + } + #[test] + fn rail_ascent_reaches_next_block() { + let (b, _) = block_render( + "minecraft:rail[shape=ascending_north,waterlogged=false]", + "rail", + &[], + ); + assert_eq!(b.len(), 16); + assert!(b.iter().any(|b| b.max[1] > 0.9)); + assert!(b.iter().all(Aabb::valid)); + } +} diff --git a/crates/shacraft-core/src/store.rs b/crates/shacraft-core/src/store.rs index 93ccae7..2893dd5 100644 --- a/crates/shacraft-core/src/store.rs +++ b/crates/shacraft-core/src/store.rs @@ -509,6 +509,45 @@ impl WorldStore { Ok(result) } + /// Page effective stored section coordinates in lexicographic x/y/z order. + /// Coordinates here identify 16³ sections, not individual blocks. Air + /// overrides are included, which matters when exporting deletions. The + /// caller holding this single writer must not mutate between pages when + /// it needs one consistent snapshot. + pub fn section_positions( + &self, + name: &str, + after: Option, + limit: usize, + ) -> Result> { + validate_world_name(name)?; + ensure!( + (1..=4096).contains(&limit), + "input_limit: section page must be 1..4096" + ); + let world = lookup_world(&self.conn, name)?; + let mut query = self.conn.prepare( + "WITH section_keys AS ( + SELECT x,y,z FROM world_sections WHERE world_id=?1 + UNION SELECT x,y,z FROM snapshot_sections WHERE snapshot_id=?2 + ) SELECT x,y,z FROM section_keys + WHERE (?3 IS NULL OR (x,y,z) > (?3,?4,?5)) + ORDER BY x,y,z LIMIT ?6", + )?; + let rows = query.query_map( + params![ + world.id, + world.base, + after.map(|p| p[0]), + after.map(|p| p[1]), + after.map(|p| p[2]), + limit as i64 + ], + |row| Ok([row.get(0)?, row.get(1)?, row.get(2)?]), + )?; + Ok(rows.collect::>>()?) + } + /// Durably committed operations need no flush to survive process restart. /// This also checkpoints WAL, reporting busy/error instead of hiding it. pub fn flush(&mut self) -> Result<()> { diff --git a/crates/shacraft-core/tests/section_pages.rs b/crates/shacraft-core/tests/section_pages.rs new file mode 100644 index 0000000..3dceb47 --- /dev/null +++ b/crates/shacraft-core/tests/section_pages.rs @@ -0,0 +1,74 @@ +use shacraft_core::{BlockChange, WorldStore}; + +#[test] +fn section_pages_are_sorted_bounded_and_include_inherited_air_overrides() { + let dir = tempfile::tempdir().unwrap(); + let mut store = WorldStore::open(dir.path(), 2).unwrap(); + let stone = store.register_block("minecraft:stone").unwrap(); + store.create_world("source", None).unwrap(); + store + .edit( + "source", + 0, + "seed", + vec![ + BlockChange { + pos: [-17, 0, 0], + block: stone, + }, + BlockChange { + pos: [-1, 0, 0], + block: stone, + }, + BlockChange { + pos: [0, 16, 0], + block: stone, + }, + BlockChange { + pos: [32, 0, 0], + block: stone, + }, + ], + ) + .unwrap(); + store.create_world("child", Some("source")).unwrap(); + store + .edit( + "child", + 0, + "override", + vec![ + BlockChange { + pos: [-1, 0, 0], + block: 0, + }, + BlockChange { + pos: [16, 0, 0], + block: stone, + }, + ], + ) + .unwrap(); + let expected = vec![[-2, 0, 0], [-1, 0, 0], [0, 1, 0], [1, 0, 0], [2, 0, 0]]; + let mut all = Vec::new(); + loop { + let page = store + .section_positions("child", all.last().copied(), 2) + .unwrap(); + if page.is_empty() { + break; + } + assert!(page.len() <= 2); + all.extend(page); + } + assert_eq!(all, expected); + assert_eq!(store.get_block("child", [-1, 0, 0]).unwrap(), 0); + assert!(store.section_positions("child", None, 0).is_err()); + assert!(store.section_positions("child", None, 4097).is_err()); + drop(store); + let store = WorldStore::open(dir.path(), 2).unwrap(); + assert_eq!( + store.section_positions("child", None, 100).unwrap(), + expected + ); +} diff --git a/crates/shacraft-mcp/Cargo.toml b/crates/shacraft-mcp/Cargo.toml new file mode 100644 index 0000000..940a73c --- /dev/null +++ b/crates/shacraft-mcp/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "shacraft-mcp" +version.workspace = true +edition.workspace = true +license.workspace = true + +[dependencies] +anyhow.workspace = true +clap.workspace = true +serde_json.workspace = true +reqwest = { version = "0.12", default-features = false, features = ["blocking", "json", "rustls-tls"] } diff --git a/crates/shacraft-mcp/src/main.rs b/crates/shacraft-mcp/src/main.rs new file mode 100644 index 0000000..f5c7576 --- /dev/null +++ b/crates/shacraft-mcp/src/main.rs @@ -0,0 +1,749 @@ +//! Bounded newline-delimited JSON-RPC MCP transport, independent of world storage. +use anyhow::{Context, Result, bail}; +use clap::Parser; +use serde_json::{Value, json}; +use std::{ + io::{self, BufRead, Read, Write}, + path::PathBuf, + time::Duration, +}; + +const MAX_FRAME: usize = 8 * 1024 * 1024; +const VERSIONS: &[&str] = &["2025-11-25", "2025-06-18", "2025-03-26", "2024-11-05"]; + +#[derive(Parser)] +#[command(about = "Shacraft MCP server over stdio (JSON-RPC; diagnostics only on stderr)")] +struct Args { + #[arg(long, default_value = "http://127.0.0.1:4000")] + server: String, + #[arg(long, default_value = "data")] + data: PathBuf, + #[arg(long)] + token_file: Option, +} + +struct Backend { + url: String, + token_file: PathBuf, + client: reqwest::blocking::Client, +} +impl Backend { + fn new(args: Args) -> Result { + let parsed = reqwest::Url::parse(&args.server).context("Invalid --server URL")?; + if !matches!(parsed.scheme(), "http" | "https") + || parsed.host_str().is_none() + || !parsed.username().is_empty() + || parsed.password().is_some() + || parsed.query().is_some() + || parsed.fragment().is_some() + { + bail!("--server must be an HTTP(S) URL without credentials, query, or fragment"); + } + Ok(Self { + url: args.server.trim_end_matches('/').to_owned(), + token_file: args + .token_file + .unwrap_or_else(|| args.data.join("control.token")), + client: reqwest::blocking::Client::builder() + .connect_timeout(Duration::from_secs(3)) + .timeout(Duration::from_secs(20)) + .redirect(reqwest::redirect::Policy::none()) + .build()?, + }) + } + fn read_response(&self, mut response: reqwest::blocking::Response) -> Result { + let status = response.status(); + let mut bytes = Vec::new(); + Read::by_ref(&mut response) + .take((MAX_FRAME + 1) as u64) + .read_to_end(&mut bytes)?; + if bytes.len() > MAX_FRAME { + bail!("Server response exceeds 8 MiB; request a smaller region"); + } + let body: Value = serde_json::from_slice(&bytes).context("Server returned invalid JSON")?; + if let Some(error) = body.get("error") { + bail!("{}", error.as_str().unwrap_or("Control operation failed")); + } + if !status.is_success() { + bail!("Server returned HTTP {}", status.as_u16()); + } + Ok(body) + } + fn control(&self, method: &str, params: &Value) -> Result { + let file = std::fs::File::open(&self.token_file) + .context("Cannot read control token; start shacraft-server or set --token-file")?; + let mut token = String::new(); + file.take(4097).read_to_string(&mut token)?; + if token.len() > 4096 { + bail!("Control token file is too large"); + } + let token = token.trim(); + if token.is_empty() || token.chars().any(char::is_control) { + bail!("Control token is empty or invalid"); + } + let response = self + .client + .post(format!("{}/api/control", self.url)) + .bearer_auth(token) + .json(&json!({"method":method,"params":params})) + .send() + .context("Shacraft server is unavailable")?; + self.read_response(response)? + .get("result") + .cloned() + .context("Control response is missing result") + } + fn public(&self, path: &str) -> Result { + self.read_response( + self.client + .get(format!("{}{}", self.url, path)) + .send() + .context("Shacraft server is unavailable")?, + ) + } +} + +fn object(properties: Value, required: &[&str]) -> Value { + json!({"type":"object","properties":properties,"required":required,"additionalProperties":false}) +} +fn pos(integer: bool) -> Value { + json!({"type":"array","items":{"type":if integer{"integer"}else{"number"}},"minItems":3,"maxItems":3}) +} +fn world() -> Value { + json!({"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"}) +} +fn operation() -> Value { + json!({"type":"string","minLength":1,"maxLength":128,"description":"Caller-generated idempotency key, retained per world. Reuse only for an identical retry."}) +} +fn revision() -> Value { + json!({"type":"integer","minimum":0,"description":"Observed world revision; a mismatch refuses the write without mutation."}) +} +fn metadata_revision() -> Value { + json!({"type":"integer","minimum":0,"description":"Optional global metadata revision from entity_list or metrics; detects concurrent entity/rule changes."}) +} +fn arena_position() -> Value { + json!({"type":"array","items":{"type":"number","minimum":-32700,"maximum":32700},"minItems":3,"maxItems":3,"description":"Feet position. Y must be greater than elimination_y + 0.5."}) +} +fn block() -> Value { + json!({"oneOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"maxLength":512}],"description":"Runtime BlockId or canonical state, e.g. minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]. Use catalog_search to discover states."}) +} +fn tool(name: &str, description: &str, input: Value, read_only: bool, idempotent: bool) -> Value { + json!({"name":name,"description":description,"inputSchema":input,"annotations":{"readOnlyHint":read_only,"destructiveHint":!read_only,"idempotentHint":idempotent,"openWorldHint":false}}) +} +fn tools() -> Vec { + vec![ + tool( + "world_list", + "List all persistent worlds, their revisions and pinned source templates. Start here before reading or editing a world.", + object(json!({}), &[]), + true, + true, + ), + tool( + "world_create", + "Create an empty independent world or a copy-on-write snapshot of an existing template. Later source edits never change the copy.", + object(json!({"world":world(),"template":world()}), &["world"]), + false, + false, + ), + tool( + "world_read", + "Read a bounded inclusive region. Returns non-air cells plus world revision and registry information. Maximum region volume 262144 cells.", + object( + json!({"world":world(),"min":pos(true),"max":pos(true)}), + &["world", "min", "max"], + ), + true, + true, + ), + tool( + "world_edit", + "Atomically edit at most 32768 unique cells. Requires current revision and idempotency key. Use air (BlockId 0) to remove a block. The server commits durably before replying.", + object( + json!({"world":world(),"expected_revision":revision(),"operation_id":operation(),"changes":{"type":"array","minItems":1,"maxItems":32768,"items":object(json!({"pos":pos(true),"block":{"type":"integer","minimum":0,"description":"Runtime BlockId from catalog_search"}}),&["pos","block"])}}), + &["world", "expected_revision", "operation_id", "changes"], + ), + false, + true, + ), + tool( + "world_undo", + "Undo the latest edit atomically. Refuses when any later revision or reset could be overwritten. target_operation is the original edit's operation_id.", + object( + json!({"world":world(),"expected_revision":revision(),"operation_id":operation(),"target_operation":operation()}), + &[ + "world", + "expected_revision", + "operation_id", + "target_operation", + ], + ), + false, + true, + ), + tool( + "world_reset", + "Reset a world to its pinned base snapshot, or air if created without a template. All instance edits are removed; revision increases. Reset is an undo barrier.", + object( + json!({"world":world(),"expected_revision":revision(),"operation_id":operation()}), + &["world", "expected_revision", "operation_id"], + ), + false, + true, + ), + tool( + "catalog_search", + "Search the Minecraft Java 26.2 and installed-package state catalog. Reports exact identifiers, runtime IDs, shapes, and coverage; registered content does not imply all vanilla behaviors are simulated.", + object( + json!({"query":{"type":"string","maxLength":256},"offset":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1,"maximum":256}}), + &[], + ), + true, + true, + ), + tool( + "entity_list", + "List persisted entities of one world, including IDs, positions, and properties. Entity kinds are defined in the public entity catalog.", + object(json!({"world":world()}), &["world"]), + true, + true, + ), + tool( + "entity_spawn", + "Spawn one entity from a registered kind at a feet position. Its persisted properties are distinct from implemented behavior. Discover kinds in the entity catalog resource.", + object( + json!({"world":world(),"kind":{"type":"string","maxLength":128},"position":pos(false),"properties":{"type":"object"},"yaw":{"type":"number"}}), + &["world", "kind", "position"], + ), + false, + false, + ), + tool( + "entity_update", + "Update a persisted entity's position, yaw, or properties. Fields omitted from the request are preserved.", + object( + json!({"id":{"type":"string"},"expected_revision":metadata_revision(),"position":pos(false),"properties":{"type":"object"},"yaw":{"type":"number"}}), + &["id"], + ), + false, + true, + ), + tool( + "entity_delete", + "Remove a single persisted entity by ID from its world.", + object( + json!({"id":{"type":"string"},"expected_revision":metadata_revision()}), + &["id"], + ), + false, + true, + ), + tool( + "arena_start", + "Start the configured Spleef match in the specified arena. Requires enough joined players and resets the arena floor according to its rules.", + object(json!({"world":world()}), &["world"]), + false, + false, + ), + tool( + "arena_configure", + "Persist creative/Spleef mode, spawn positions and match rules. Configuration is refused during a started round. Nonempty spawn_points must cover min_players and all joining participants; points must be at least 0.8 apart. floor_block defines the breakable material and does not rebuild the map.", + object( + json!({"world":world(),"expected_revision":metadata_revision(),"mode":{"type":"string","enum":["creative","spleef"]},"spawn":arena_position(),"countdown_seconds":{"type":"integer","minimum":1,"maximum":30},"round_seconds":{"type":"integer","minimum":1,"maximum":3600},"min_players":{"type":"integer","minimum":2,"maximum":32},"elimination_y":{"type":"number","minimum":-32700,"maximum":32700},"spawn_points":{"type":"array","maxItems":32,"items":arena_position(),"description":"Empty uses a radius-7 circle. Otherwise positions must cover all participants."},"spectator_spawn":arena_position(),"floor_block":{"type":"string","minLength":1,"maxLength":512,"description":"Known solid canonical state that players may break during Spleef."}}), + &["world"], + ), + false, + true, + ), + tool( + "metrics", + "Read live process RSS, storage/cache estimates, connected players, tick and queue diagnostics. Payload estimates must not be reported as total process RAM.", + object(json!({}), &[]), + true, + true, + ), + tool( + "build_plan", + "Plan bounded construction without changing world blocks. Expands box, line and cylinder operations, checks limits and returns a plan_id, summary and expected revision. Review the plan before build_commit.", + object( + json!({"world":world(),"expected_revision":revision(),"operations":{"type":"array","minItems":1,"maxItems":128,"items":{"oneOf":[object(json!({"type":{"const":"box"},"min":pos(true),"max":pos(true),"block":block(),"hollow":{"type":"boolean"}}),&["type","min","max","block"]),object(json!({"type":{"const":"line"},"from":pos(true),"to":pos(true),"block":block()}),&["type","from","to","block"]),object(json!({"type":{"const":"cylinder"},"center":pos(true),"radius":{"type":"integer","minimum":1,"maximum":64},"height":{"type":"integer","minimum":1,"maximum":128},"block":block(),"hollow":{"type":"boolean"}}),&["type","center","radius","height","block"])]}}}), + &["world", "expected_revision", "operations"], + ), + false, + false, + ), + tool( + "build_commit", + "Commit a previously reviewed build_plan atomically using plan_id and an idempotency key. A stale revision is refused; create a new plan after inspecting intervening changes.", + object( + json!({"plan_id":{"type":"string","minLength":1,"maxLength":128},"operation_id":operation()}), + &["plan_id", "operation_id"], + ), + false, + true, + ), + tool( + "camera_capture", + "Capture a server-rendered isometric PNG of a bounded world region. Returns an MCP image with world/revision metadata; this is an inspection projection, not the browser's first-person camera.", + object( + json!({"world":world(),"min":pos(true),"max":pos(true)}), + &["world"], + ), + true, + true, + ), + ] +} + +fn validate(schema: &Value, value: &Value, path: &str) -> std::result::Result<(), String> { + if let Some(variants) = schema.get("oneOf").and_then(Value::as_array) + && variants + .iter() + .filter(|s| validate(s, value, path).is_ok()) + .count() + != 1 + { + return Err(format!("{path}: does not match exactly one accepted form")); + } + if let Some(choices) = schema.get("enum").and_then(Value::as_array) + && !choices.contains(value) + { + return Err(format!("{path}: value is not in allowed enum")); + } + if let Some(constant) = schema.get("const") + && value != constant + { + return Err(format!("{path}: expected {constant}")); + } + if let Some(t) = schema.get("type").and_then(Value::as_str) { + let matches = match t { + "object" => value.is_object(), + "array" => value.is_array(), + "string" => value.is_string(), + "integer" => value.is_i64() || value.is_u64(), + "number" => value.is_number(), + "boolean" => value.is_boolean(), + _ => true, + }; + if !matches { + return Err(format!("{path}: expected {t}")); + } + } + if let Some(obj) = value.as_object() { + if let Some(required) = schema.get("required").and_then(Value::as_array) { + for key in required { + let key = key.as_str().unwrap_or(""); + if !obj.contains_key(key) { + return Err(format!("{path}.{key}: required")); + } + } + } + if let Some(properties) = schema.get("properties").and_then(Value::as_object) { + for (key, value) in obj { + if let Some(subschema) = properties.get(key) { + validate(subschema, value, &format!("{path}.{key}"))?; + } else if schema.get("additionalProperties") == Some(&json!(false)) { + return Err(format!("{path}.{key}: unknown field")); + } + } + } + } + if let Some(values) = value.as_array() { + if let Some(n) = schema.get("minItems").and_then(Value::as_u64) + && values.len() < (n as usize) + { + return Err(format!("{path}: too few items")); + } + if let Some(n) = schema.get("maxItems").and_then(Value::as_u64) + && values.len() > (n as usize) + { + return Err(format!("{path}: too many items")); + } + if let Some(item) = schema.get("items") { + for (i, value) in values.iter().enumerate() { + validate(item, value, &format!("{path}[{i}]"))?; + } + } + } + if let Some(s) = value.as_str() { + let len = s.chars().count(); + if schema + .get("minLength") + .and_then(Value::as_u64) + .is_some_and(|n| len < n as usize) + || schema + .get("maxLength") + .and_then(Value::as_u64) + .is_some_and(|n| len > n as usize) + { + return Err(format!("{path}: string length out of range")); + } + if schema.get("pattern") == Some(&json!("^[A-Za-z0-9_-]{1,64}$")) + && (s.is_empty() + || s.len() > 64 + || !s + .bytes() + .all(|c| c.is_ascii_alphanumeric() || c == b'_' || c == b'-')) + { + return Err(format!("{path}: invalid world name")); + } + } + if let Some(n) = value.as_f64() + && (schema + .get("minimum") + .and_then(Value::as_f64) + .is_some_and(|min| n < min) + || schema + .get("maximum") + .and_then(Value::as_f64) + .is_some_and(|max| n > max)) + { + return Err(format!("{path}: number out of range")); + } + Ok(()) +} + +fn resources() -> Value { + json!({"resources":[ + {"uri":"shacraft://server/status","name":"Server status","description":"Live server health and storage metrics","mimeType":"application/json"}, + {"uri":"shacraft://catalog/blocks","name":"Block catalog","description":"Initial page and search endpoint for registered block states","mimeType":"application/json"}, + {"uri":"shacraft://catalog/entities","name":"Entity catalog","description":"All registered entity kinds, shapes and coverage","mimeType":"application/json"}, + {"uri":"shacraft://packages","name":"Required packages","description":"Client-visible manifest and resource integrity hashes; contains no admin credentials","mimeType":"application/json"} + ]}) +} +fn rpc_error(id: Value, code: i32, message: impl Into) -> Value { + json!({"jsonrpc":"2.0","id":id,"error":{"code":code,"message":message.into()}}) +} +fn rpc_result(id: Value, result: Value) -> Value { + json!({"jsonrpc":"2.0","id":id,"result":result}) +} +fn tool_error(message: impl Into) -> Value { + json!({"isError":true,"content":[{"type":"text","text":message.into()}]}) +} +#[derive(Default)] +struct Session { + initialized: bool, + ready: bool, +} +impl Session { + fn dispatch(&mut self, request: Value, backend: &Backend) -> Option { + let id = request.get("id").cloned().unwrap_or(Value::Null); + if !request.is_object() + || request.get("jsonrpc") != Some(&json!("2.0")) + || request.get("method").and_then(Value::as_str).is_none() + || request + .get("id") + .is_some_and(|id| !id.is_string() && !id.is_i64() && !id.is_u64()) + { + return Some(rpc_error(id, -32600, "Invalid JSON-RPC request")); + } + let method = request["method"].as_str().unwrap(); + if request.get("id").is_none() { + if method == "notifications/initialized" && self.initialized { + self.ready = true; + } + return None; + } + let params = request.get("params").cloned().unwrap_or_else(|| json!({})); + if !params.is_object() { + return Some(rpc_error(id, -32602, "params must be an object")); + } + if method == "initialize" { + if self.initialized { + return Some(rpc_error(id, -32600, "Session already initialized")); + } + let Some(version) = params.get("protocolVersion").and_then(Value::as_str) else { + return Some(rpc_error(id, -32602, "protocolVersion is required")); + }; + if !params.get("capabilities").is_some_and(Value::is_object) + || !params + .get("clientInfo") + .is_some_and(|v| v["name"].is_string() && v["version"].is_string()) + { + return Some(rpc_error( + id, + -32602, + "capabilities and clientInfo.name/version are required", + )); + } + self.initialized = true; + return Some(rpc_result( + id, + json!({"protocolVersion":if VERSIONS.contains(&version){version}else{VERSIONS[0]},"capabilities":{"tools":{"listChanged":false},"resources":{"subscribe":false,"listChanged":false},"prompts":{"listChanged":false}},"serverInfo":{"name":"shacraft-mcp","version":env!("CARGO_PKG_VERSION")},"instructions":"Inspect world revisions and catalog before editing. Plan bounded construction with build_plan; commit with a unique operation_id. Preserve expected_revision on retries. camera_capture is an isometric inspection image. This MCP controls only the configured Shacraft server."}), + )); + } + if method == "ping" { + return Some(rpc_result(id, json!({}))); + } + if !self.ready { + return Some(rpc_error( + id, + -32002, + "Initialize and send notifications/initialized first", + )); + } + let result = match method { + "tools/list" => { + if params.get("cursor").is_some() { + return Some(rpc_error(id, -32602, "This tool list has no further pages")); + } + json!({"tools":tools()}) + } + "tools/call" => { + let Some(name) = params.get("name").and_then(Value::as_str) else { + return Some(rpc_error(id, -32602, "Tool name is required")); + }; + let list = tools(); + let Some(tool) = list.iter().find(|t| t["name"] == name) else { + return Some(rpc_error(id, -32602, "Unknown tool")); + }; + let args = params + .get("arguments") + .cloned() + .unwrap_or_else(|| json!({})); + if let Err(error) = validate(&tool["inputSchema"], &args, "arguments") { + tool_error(error) + } else { + let control = name.replacen('_', ".", 1); + match backend.control(&control, &args) { + Ok(mut output) => { + let mut content = Vec::new(); + if name == "camera_capture" + && let Some(png) = output.get("png_base64").and_then(Value::as_str) + { + content.push( + json!({"type":"image","data":png,"mimeType":"image/png"}), + ); + if let Some(obj) = output.as_object_mut() { + obj.remove("png_base64"); + } + } + content.push(json!({"type":"text","text":serde_json::to_string(&output).unwrap_or_default()})); + let structured = if output.is_object() { + output + } else { + json!({"result":output}) + }; + json!({"content":content,"structuredContent":structured,"isError":false}) + } + Err(error) => tool_error(format!("{error:#}")), + } + } + } + "resources/list" => resources(), + "resources/templates/list" => json!({"resourceTemplates":[]}), + "resources/read" => { + let Some(uri) = params.get("uri").and_then(Value::as_str) else { + return Some(rpc_error(id, -32602, "Resource URI is required")); + }; + let path = match uri { + "shacraft://server/status" => "/api/metrics", + "shacraft://catalog/blocks" => "/api/catalog?offset=0&limit=64", + "shacraft://catalog/entities" => "/api/entities", + "shacraft://packages" => "/api/manifest", + _ => return Some(rpc_error(id, -32002, "Unknown resource URI")), + }; + match backend.public(path) { + Ok(data) => { + json!({"contents":[{"uri":uri,"mimeType":"application/json","text":serde_json::to_string(&data).unwrap_or_default()}]}) + } + Err(error) => return Some(rpc_error(id, -32000, format!("{error:#}"))), + } + } + "prompts/list" => { + json!({"prompts":[{"name":"construct","description":"Inspect, plan, commit and visually verify a bounded Shacraft build","arguments":[{"name":"world","description":"Target world name","required":true},{"name":"request","description":"What to build and any constraints","required":true}]}]}) + } + "prompts/get" => { + if params["name"] != "construct" { + return Some(rpc_error(id, -32602, "Unknown prompt")); + } + let a = ¶ms["arguments"]; + let (Some(world), Some(request)) = (a["world"].as_str(), a["request"].as_str()) + else { + return Some(rpc_error( + id, + -32602, + "world and request string arguments are required", + )); + }; + json!({"description":"Revision-safe construction workflow","messages":[{"role":"user","content":{"type":"text","text":format!("Build in world {world}: {request}\nUse world_list and world_read to inspect the site and current revision, then catalog_search for exact block states. Use build_plan for bounded box/line/cylinder operations. Review the resulting bounds and change count against the requested construction; then call build_commit with a unique operation_id if the request authorizes the build. Capture camera_capture afterward and inspect the result. If the revision conflicts, read the world and make a new plan rather than forcing a stale write. Undo uses the original operation_id and is safe only before later edits. Explain content coverage and any limitations relevant to the build.")}}]}) + } + _ => return Some(rpc_error(id, -32601, "Method not found")), + }; + Some(rpc_result(id, result)) + } +} + +/// Discards an oversized frame through its newline without accumulating its tail. +fn read_frame(reader: &mut impl BufRead) -> io::Result, ()>>> { + let mut frame = Vec::new(); + let mut oversized = false; + loop { + let buffer = reader.fill_buf()?; + if buffer.is_empty() { + return Ok(if frame.is_empty() && !oversized { + None + } else { + Some(if oversized { Err(()) } else { Ok(frame) }) + }); + } + let end = buffer.iter().position(|&b| b == b'\n').map(|i| i + 1); + let take = end.unwrap_or(buffer.len()); + if !oversized { + if frame.len() + take > MAX_FRAME { + oversized = true; + frame.clear(); + } else { + frame.extend_from_slice(&buffer[..take]); + } + } + reader.consume(take); + if end.is_some() { + return Ok(Some(if oversized { Err(()) } else { Ok(frame) })); + } + } +} +fn main() -> Result<()> { + let backend = Backend::new(Args::parse())?; + let mut session = Session::default(); + let stdin = io::stdin(); + let mut input = stdin.lock(); + let stdout = io::stdout(); + let mut output = stdout.lock(); + while let Some(frame) = read_frame(&mut input)? { + let reply = match frame { + Err(()) => Some(rpc_error(Value::Null, -32600, "Request exceeds 8 MiB")), + Ok(bytes) => match serde_json::from_slice::(&bytes) { + Ok(request) => session.dispatch(request, &backend), + Err(_) => Some(rpc_error(Value::Null, -32700, "Parse error")), + }, + }; + if let Some(reply) = reply { + serde_json::to_writer(&mut output, &reply)?; + output.write_all(b"\n")?; + output.flush()?; + } + } + Ok(()) +} + +#[cfg(test)] +mod tests { + use super::*; + fn backend() -> Backend { + Backend::new(Args { + server: "http://127.0.0.1:1".into(), + data: PathBuf::from("/nonexistent-shacraft-test-data"), + token_file: None, + }) + .unwrap() + } + fn request(id: i32, method: &str, params: Value) -> Value { + json!({"jsonrpc":"2.0","id":id,"method":method,"params":params}) + } + fn initialize(s: &mut Session, b: &Backend, version: &str) -> Value { + let result=s.dispatch(request(1,"initialize",json!({"protocolVersion":version,"capabilities":{},"clientInfo":{"name":"test","version":"1"}})),b).unwrap(); + assert!( + s.dispatch( + json!({"jsonrpc":"2.0","method":"notifications/initialized"}), + b + ) + .is_none() + ); + result + } + #[test] + fn lifecycle_negotiates_and_rejects_before_initialization() { + let b = backend(); + let mut s = Session::default(); + assert_eq!( + s.dispatch(request(1, "tools/list", json!({})), &b).unwrap()["error"]["code"], + -32002 + ); + assert_eq!( + initialize(&mut s, &b, "unknown")["result"]["protocolVersion"], + VERSIONS[0] + ); + let list = s.dispatch(request(2, "tools/list", json!({})), &b).unwrap(); + assert_eq!(list["result"]["tools"].as_array().unwrap().len(), 17); + assert_eq!( + s.dispatch(request(3, "initialize", json!({})), &b).unwrap()["error"]["code"], + -32600 + ); + } + #[test] + fn supported_version_is_preserved() { + let b = backend(); + let mut s = Session::default(); + assert_eq!( + initialize(&mut s, &b, "2024-11-05")["result"]["protocolVersion"], + "2024-11-05" + ); + } + #[test] + fn notifications_never_generate_responses() { + let b = backend(); + let mut s = Session::default(); + assert!( + s.dispatch(json!({"jsonrpc":"2.0","method":"unknown/notification"}), &b) + .is_none() + ); + assert!(s.dispatch(json!({"jsonrpc":"2.0","method":"notifications/cancelled","params":{"requestId":3}}),&b).is_none()); + } + #[test] + fn invalid_tool_arguments_are_mcp_content_errors() { + let b = backend(); + let mut s = Session::default(); + initialize(&mut s, &b, VERSIONS[0]); + let reply=s.dispatch(request(2,"tools/call",json!({"name":"world_edit","arguments":{"world":"lobby","expected_revision":0,"operation_id":"x","changes":[{"pos":[0,0],"block":1}]}})),&b).unwrap(); + assert_eq!(reply["result"]["isError"], true); + assert!( + reply["result"]["content"][0]["text"] + .as_str() + .unwrap() + .contains("too few items") + ); + } + #[test] + fn unavailable_token_is_a_tool_error_not_transport_error() { + let b = backend(); + let mut s = Session::default(); + initialize(&mut s, &b, VERSIONS[0]); + let reply = s + .dispatch(request(2, "tools/call", json!({"name":"world_list"})), &b) + .unwrap(); + assert_eq!(reply["result"]["isError"], true); + assert!(reply.get("error").is_none()); + } + #[test] + fn malformed_ids_and_requests_do_not_execute() { + let b = backend(); + let mut s = Session::default(); + for req in [ + json!([]), + json!({"jsonrpc":"2.0","id":null,"method":"ping"}), + json!({"id":1,"method":"ping"}), + ] { + assert_eq!(s.dispatch(req, &b).unwrap()["error"]["code"], -32600); + } + } + #[test] + fn bounded_reader_recovers_after_oversized_line() { + let mut input = vec![b'x'; MAX_FRAME + 100]; + input.extend_from_slice(b"\n{\"ok\":true}\n"); + let mut input = io::BufReader::new(io::Cursor::new(input)); + assert!(read_frame(&mut input).unwrap().unwrap().is_err()); + assert_eq!( + read_frame(&mut input).unwrap().unwrap().unwrap(), + b"{\"ok\":true}\n" + ); + assert!(read_frame(&mut input).unwrap().is_none()); + } + #[test] + fn build_shapes_validate_without_allowing_invented_parameters() { + let list = tools(); + let schema = &list.iter().find(|t| t["name"] == "build_plan").unwrap()["inputSchema"]; + assert!(validate(schema,&json!({"world":"lobby","expected_revision":0,"operations":[{"type":"box","min":[0,0,0],"max":[3,3,3],"block":"minecraft:stone"}]}),"args").is_ok()); + assert!(validate(schema,&json!({"world":"lobby","expected_revision":0,"operations":[{"type":"box","min":[0,0,0],"max":[3,3,3],"block":1,"erase_everything":true}]}),"args").is_err()); + } +} diff --git a/crates/shacraft-mcp/tests/sdk-smoke.mjs b/crates/shacraft-mcp/tests/sdk-smoke.mjs new file mode 100644 index 0000000..35ce304 --- /dev/null +++ b/crates/shacraft-mcp/tests/sdk-smoke.mjs @@ -0,0 +1,214 @@ +// Real MCP SDK end-to-end smoke. Requires a running disposable Shacraft server. +// node sdk-smoke.mjs --binary /abs/shacraft-mcp --data /abs/test-data [--server URL] +// SHACRAFT_MCP_SDK may point at an installed @modelcontextprotocol/sdk directory. +import assert from "node:assert/strict"; +import path from "node:path"; +import { pathToFileURL, fileURLToPath } from "node:url"; +import { existsSync } from "node:fs"; +const args = {}; +for (let i = 2; i < process.argv.length; i += 2) + args[process.argv[i].replace(/^--/, "")] = process.argv[i + 1]; +const root = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + "../../..", +); +const sdk = + process.env.SHACRAFT_MCP_SDK || + args.sdk || + path.resolve( + root, + "../minecraft-builder-mcp/bridge/node_modules/@modelcontextprotocol/sdk", + ); +if (!existsSync(sdk)) + throw Error( + "Set SHACRAFT_MCP_SDK to an installed @modelcontextprotocol/sdk directory.", + ); +const { Client } = await import( + pathToFileURL(path.join(sdk, "dist/esm/client/index.js")) +); +const { StdioClientTransport } = await import( + pathToFileURL(path.join(sdk, "dist/esm/client/stdio.js")) +); +const binary = args.binary || path.join(root, "target/debug/shacraft-mcp"); +assert.ok(args.data, "--data is required: use disposable server data"); +const client = new Client( + { name: "shacraft-sdk-smoke", version: "1.0.0" }, + { capabilities: {} }, +); +const transport = new StdioClientTransport({ + command: binary, + args: [ + "--server", + args.server || "http://127.0.0.1:4000", + "--data", + path.resolve(args.data), + ], + stderr: "pipe", +}); +let stderr = ""; +transport.stderr?.on("data", (chunk) => (stderr += chunk)); +async function call(name, arguments_ = {}) { + const r = await client.callTool({ name, arguments: arguments_ }); + assert.notEqual(r.isError, true, `${name}: ${JSON.stringify(r.content)}`); + return ( + r.structuredContent || + JSON.parse(r.content.find((c) => c.type === "text").text) + ); +} +const report = { sdk: true, checks: [], world: `mcp_sdk_${Date.now()}` }; +try { + await client.connect(transport); + assert.equal(client.getServerVersion()?.name, "shacraft-mcp"); + await client.ping(); + report.checks.push( + "SDK initialize, version negotiation, notification and ping", + ); + const listed = await client.listTools(); + assert.equal(listed.tools.length, 17); + report.checks.push("17 discoverable tool schemas accepted by SDK"); + const resources = await client.listResources(); + assert.equal(resources.resources.length, 4); + for (const resource of resources.resources) { + const r = await client.readResource({ uri: resource.uri }); + assert.equal(r.contents[0].mimeType, "application/json"); + JSON.parse(r.contents[0].text); + } + report.checks.push("4 resources read through SDK"); + const prompts = await client.listPrompts(); + assert.equal(prompts.prompts[0].name, "construct"); + const prompt = await client.getPrompt({ + name: "construct", + arguments: { + world: report.world, + request: "Create a small test structure", + }, + }); + assert.ok(prompt.messages.length); + report.checks.push("Construction prompt and arguments"); + const found = await call("catalog_search", { + query: "minecraft:stone", + limit: 32, + }); + const stone = found.items.find((x) => x.state === "minecraft:stone"); + assert.ok(stone); + await call("world_create", { world: report.world }); + const edit = { + world: report.world, + expected_revision: 0, + operation_id: "sdk-edit", + changes: [{ pos: [0, 0, 0], block: stone.id }], + }; + const first = await call("world_edit", edit); + assert.equal(first.revision, 1); + assert.equal((await call("world_edit", edit)).replayed, true); + const read = await call("world_read", { + world: report.world, + min: [0, 0, 0], + max: [1, 1, 1], + }); + assert.equal(read.blocks.length, 1); + const conflict = await client.callTool({ + name: "world_edit", + arguments: { ...edit, operation_id: "sdk-conflict" }, + }); + assert.equal(conflict.isError, true); + await call("world_undo", { + world: report.world, + expected_revision: 1, + operation_id: "sdk-undo", + target_operation: "sdk-edit", + }); + report.checks.push( + "Durable write, read, idempotent retry, conflict content and undo", + ); + const plan = await call("build_plan", { + world: report.world, + expected_revision: 2, + operations: [ + { type: "box", min: [0, 0, 0], max: [2, 1, 2], block: stone.id }, + ], + }); + assert.equal(plan.cells, 18); + const committed = await call("build_commit", { + plan_id: plan.plan_id, + operation_id: "sdk-build", + }); + assert.equal(committed.changed, 18); + assert.equal( + ( + await call("build_commit", { + plan_id: plan.plan_id, + operation_id: "sdk-build", + }) + ).replayed, + true, + ); + report.checks.push("Plan and atomic idempotent commit"); + const image = await client.callTool({ + name: "camera_capture", + arguments: { world: report.world, min: [-2, -2, -2], max: [4, 4, 4] }, + }); + assert.notEqual(image.isError, true); + const png = image.content.find((c) => c.type === "image"); + assert.ok(png); + assert.equal(png.mimeType, "image/png"); + assert.deepEqual( + [...Buffer.from(png.data, "base64").subarray(0, 8)], + [137, 80, 78, 71, 13, 10, 26, 10], + ); + report.checks.push("MCP PNG image content"); + const entity = await call("entity_spawn", { + world: report.world, + kind: "minecraft:pig", + position: [1, 2, 1], + properties: { name: "SDK test" }, + }); + const id = entity.entity.id; + assert.ok(id); + const updated = await call("entity_update", { + id, + position: [2, 2, 1], + properties: { name: "SDK updated" }, + }); + assert.deepEqual(updated.entity.position, [2, 2, 1]); + const entities = await call("entity_list", { world: report.world }); + assert.ok(entities.items.some((e) => e.id === id)); + await call("entity_delete", { id }); + assert.equal( + (await call("entity_list", { world: report.world })).items.length, + 0, + ); + report.checks.push("Entity spawn/update/list/delete"); + const rules = await call("arena_configure", { + world: report.world, + mode: "creative", + spawn: [0, 3, 0], + countdown_seconds: 2, + round_seconds: 120, + min_players: 2, + elimination_y: -5, + spawn_points: [], + spectator_spawn: [13, 3, 0], + floor_block: "minecraft:snow_block", + }); + assert.equal(rules.countdown_seconds ?? rules.rules?.countdown_seconds, 2); + const metrics = await call("metrics"); + assert.ok(metrics.storage); + report.checks.push("Persisted world configuration and measured metrics"); + await call("world_reset", { + world: report.world, + expected_revision: committed.revision, + operation_id: "sdk-reset", + }); + const empty = await call("world_read", { + world: report.world, + min: [0, 0, 0], + max: [2, 1, 2], + }); + assert.equal(empty.blocks.length, 0); + report.checks.push("World reset"); + assert.equal(stderr, "", "MCP server should not emit routine diagnostics"); + console.log(JSON.stringify(report, null, 2)); +} finally { + await client.close(); +} diff --git a/crates/shacraft-server/Cargo.toml b/crates/shacraft-server/Cargo.toml new file mode 100644 index 0000000..6b0af34 --- /dev/null +++ b/crates/shacraft-server/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "shacraft-server" +version.workspace = true +edition.workspace = true +license.workspace = true + +[dependencies] +anyhow.workspace = true +clap.workspace = true +serde.workspace = true +serde_json.workspace = true +shacraft-core.workspace = true +shacraft-content = { path = "../shacraft-content" } +axum = { version = "0.8.9", features = ["ws"] } +tokio = { version = "1", features = ["full"] } +tower-http = { version = "0.6", features = ["fs", "limit", "trace"] } +tower = { version = "0.5", features = ["limit", "load-shed"] } +futures-util = "0.3" +sha2 = "0.10" +base64 = "0.22" +png = "0.17" +wasmi = "2" +uuid = { version = "1", features = ["v4", "serde"] } +rusqlite = { version = "=0.40.2", features = ["bundled"] } + +[dev-dependencies] +tempfile = "3" diff --git a/crates/shacraft-server/src/control.rs b/crates/shacraft-server/src/control.rs new file mode 100644 index 0000000..834c040 --- /dev/null +++ b/crates/shacraft-server/src/control.rs @@ -0,0 +1,499 @@ +impl Game { + pub fn query(&mut self, method: &str, p: Value) -> Result { + match method { + "health" => Ok(json!({"status":"ok","protocol":1,"minecraft":"26.2","tick":self.tick})), + "manifest" => Ok(self.manifest.clone()), + "world.list" => Ok(json!( + self.store + .list_worlds()? + .into_iter() + .filter(|w| self.config(&w.name).mode != "template") + .map(|w| { + let mut v = json!(w); + v["mode"] = json!(self.config(&w.name).mode); + v + }) + .collect::>() + )), + "catalog.search" => { + let query = p["query"].as_str().unwrap_or("").to_lowercase(); + ensure!(query.len() <= 256, "query too long"); + let offset = p["offset"].as_u64().unwrap_or(0) as usize; + let limit = p["limit"].as_u64().unwrap_or(64).clamp(1, 256) as usize; + let selected = p["ids"] + .as_str() + .map(|s| { + s.split(',') + .take(128) + .filter_map(|s| s.parse::().ok()) + .collect::>() + }) + .or_else(|| { + p["states"].as_str().map(|s| { + split_states(s) + .into_iter() + .take(128) + .filter_map(|s| self.id(s).ok()) + .collect::>() + }) + }); + let ids: Vec<_> = self + .store + .registry() + .iter() + .enumerate() + .filter(|(id, s)| { + if let Some(ref selected) = selected { + selected.contains(&(*id as u32)) + } else { + s.to_lowercase().contains(&query) + } + }) + .map(|(i, _)| i as u32) + .collect(); + Ok( + json!({"items":ids.iter().skip(offset).take(limit).filter_map(|id|self.material(*id)).collect::>(),"total":ids.len(),"summary":self.catalog.summary()}), + ) + } + "entity.catalog" => Ok(json!({"items":self.catalog.entities})), + "metrics" => { + let rss = std::fs::read_to_string("/proc/self/status") + .ok() + .and_then(|s| { + s.lines() + .find(|l| l.starts_with("VmRSS:")) + .and_then(|l| l.split_whitespace().nth(1)) + .and_then(|s| s.parse::().ok()) + .map(|n| n * 1024) + }); + Ok( + json!({"tick":self.tick,"tick_ms":self.last_tick_ms,"max_tick_ms":self.max_tick_ms,"uptime_seconds":self.started.elapsed().as_secs(),"players":self.players.len(),"active_worlds":self.players.values().map(|p|&p.world).collect::>().len(),"world_count":self.store.list_worlds()?.len(),"plans":self.plans.len(),"entities":self.meta.entities.len(),"entity_revision":self.meta.revision,"rss_bytes":rss,"slow_clients_disconnected":self.slow_clients,"queued_client_bytes":self.players.values().map(|p|p.out.bytes.load(Ordering::Relaxed)).sum::(),"limits":{"players":32,"command_queue":64,"messages_per_client":16,"bytes_per_client":8388608,"build_plans":16,"plan_cells":32768},"storage":self.store.stats(),"catalog":self.catalog.summary(),"wasm":self.jump.metrics()}), + ) + } + "world.create" => { + let world = string(&p, "world")?; + self.store.create_world(world, p["template"].as_str())?; + let conf = if let Some(template) = p["template"].as_str() { + let mut c = self.config(template); + if c.mode == "template" { + c.mode = "spleef".into(); + } + c + } else { + WorldConfig::default() + }; + self.meta.worlds.insert(world.into(), conf); + self.save_meta()?; + Ok(json!({"world":world,"revision":0})) + } + "world.read" => { + let world = string(&p, "world")?; + let min: Pos = serde_json::from_value(p["min"].clone())?; + let max: Pos = serde_json::from_value(p["max"].clone())?; + let blocks = self.store.read_region(world, min, max)?; + let response = json!({"world":world,"revision":self.store.revision(world)?,"blocks":blocks,"materials":self.materials(&blocks)}); + ensure!( + response.to_string().len() <= 6 * 1024 * 1024, + "read response exceeds 6 MiB; request a smaller region" + ); + Ok(response) + } + "world.edit" => { + let world = string(&p, "world")?; + let rev = p["expected_revision"] + .as_u64() + .context("expected_revision required")?; + let op = string(&p, "operation_id")?; + let changes: Vec = serde_json::from_value(p["changes"].clone())?; + let result = self.store.edit(world, rev, op, changes.clone())?; + if !result.replayed { + self.broadcast(world,json!({"type":"blocks","revision":result.revision,"changes":changes,"materials":self.materials(&changes)})); + } + Ok(json!(result)) + } + "world.undo" | "world.reset" => { + let world = string(&p, "world")?; + let rev = p["expected_revision"] + .as_u64() + .context("expected_revision required")?; + let op = string(&p, "operation_id")?; + let result = if method == "world.undo" { + self.store + .undo(world, rev, op, string(&p, "target_operation")?)? + } else { + self.store.reset_world(world, rev, op)? + }; + if !result.replayed { + self.resnapshot(world); + } + Ok(json!(result)) + } + "entity.list" => { + let world = string(&p, "world")?; + self.store.revision(world)?; + Ok( + json!({"items":self.meta.entities.values().filter(|e|e["world"]==world).skip(p["offset"].as_u64().unwrap_or(0)as usize).take(p["limit"].as_u64().unwrap_or(64).clamp(1,128)as usize).cloned().collect::>(),"total":self.meta.entities.values().filter(|e|e["world"]==world).count(),"revision":self.meta.revision}), + ) + } + "entity.spawn" => { + ensure!(self.meta.entities.len() < 4096, "entity limit reached"); + let world = string(&p, "world")?; + self.store.revision(world)?; + let kind = p["kind"] + .as_str() + .or_else(|| p["entity_type"].as_str()) + .context("kind required")?; + ensure!(self.catalog.entity(kind).is_some(), "unknown entity type"); + let pos = entity_position(&p["position"])?; + let id = Uuid::new_v4().to_string(); + let properties = p.get("properties").cloned().unwrap_or(json!({})); + ensure!( + properties.to_string().len() <= 16384, + "entity properties too large" + ); + let entity = json!({"id":id,"world":world,"kind":kind,"type":kind,"position":pos,"yaw":p["yaw"].as_f64().unwrap_or(0.),"properties":properties}); + self.meta.entities.insert(id, entity.clone()); + self.save_meta()?; + self.broadcast( + world, + json!({"type":"entities","entities":self.entity_list(world)}), + ); + Ok(json!({"entity":entity,"revision":self.meta.revision})) + } + "entity.update" | "entity.delete" => { + let id = string(&p, "id")?; + let mut entity = self + .meta + .entities + .get(id) + .cloned() + .context("unknown entity")?; + let world = entity["world"].as_str().unwrap().to_owned(); + if let Some(r) = p["expected_revision"].as_u64() { + ensure!(r == self.meta.revision, "entity revision conflict"); + } + if method == "entity.delete" { + self.meta.entities.remove(id); + } else { + if p.get("position").is_some() { + entity["position"] = json!(entity_position(&p["position"])?); + } + if let Some(prop) = p.get("properties") { + ensure!( + prop.to_string().len() <= 16384, + "entity properties too large" + ); + entity["properties"] = prop.clone(); + } + if p.get("yaw").is_some() { + entity["yaw"] = json!(number(&p, "yaw")?); + } + self.meta.entities.insert(id.into(), entity.clone()); + } + self.save_meta()?; + self.broadcast( + &world, + json!({"type":"entities","entities":self.entity_list(&world)}), + ); + Ok(json!({"entity":entity,"revision":self.meta.revision})) + } + "arena.configure" => { + let world = string(&p, "world")?; + self.store.revision(world)?; + ensure!( + !self.matches.contains_key(world), + "cannot change rules during a match" + ); + if let Some(revision) = p["expected_revision"].as_u64() { + ensure!( + revision == self.meta.revision, + "arena configuration revision conflict" + ); + } + let mut conf = self.config(world); + if let Some(mode) = p.get("mode") { + let mode = mode.as_str().context("mode must be a string")?; + ensure!( + ["creative", "spleef"].contains(&mode), + "unsupported world mode" + ); + conf.mode = mode.into(); + } + if let Some(value) = p.get("spawn") { + conf.spawn = entity_position(value)?; + } + if let Some(value) = p.get("spectator_spawn") { + conf.spectator_spawn = entity_position(value)?; + } + if let Some(value) = p.get("spawn_points") { + conf.spawn_points = serde_json::from_value(value.clone()) + .context("spawn_points must be arrays of three coordinates")?; + } + if let Some(value) = p.get("countdown_seconds") { + conf.countdown_seconds = u32::try_from( + value + .as_u64() + .context("countdown_seconds must be an integer")?, + ) + .context("countdown_seconds too large")?; + } + if let Some(value) = p.get("round_seconds") { + conf.round_seconds = + u32::try_from(value.as_u64().context("round_seconds must be an integer")?) + .context("round_seconds too large")?; + } + if let Some(value) = p.get("min_players") { + conf.min_players = + usize::try_from(value.as_u64().context("min_players must be an integer")?) + .context("min_players too large")?; + } + if p.get("elimination_y").is_some() { + conf.elimination_y = number(&p, "elimination_y")?; + } + if let Some(value) = p.get("floor_block") { + let name = value + .as_str() + .context("floor_block must be a canonical state")?; + conf.floor_block = self + .catalog + .state(name) + .context("unknown floor_block")? + .state + .clone(); + } + conf.validate(&self.catalog)?; + self.meta.worlds.insert(world.into(), conf.clone()); + self.save_meta()?; + Ok(json!(conf)) + } + "arena.start" => self.start_match(string(&p, "world")?), + "build.plan" => self.build_plan(p), + "build.commit" => { + let id = string(&p, "plan_id")?; + let plan = self.plans.get(id).context("plan missing or expired")?; + ensure!(plan.expires > Instant::now(), "plan expired"); + let world = plan.world.clone(); + let changes = plan.changes.clone(); + let result = self.store.edit( + &world, + plan.revision, + string(&p, "operation_id")?, + changes.clone(), + )?; + if !result.replayed { + self.broadcast(&world,json!({"type":"blocks","revision":result.revision,"changes":changes,"materials":self.materials(&changes)})); + } + Ok(json!(result)) + } + "camera.capture" => { + let world = string(&p, "world")?; + let min: Pos = + serde_json::from_value(p.get("min").cloned().unwrap_or(json!([-24, -4, -24])))?; + let max: Pos = + serde_json::from_value(p.get("max").cloned().unwrap_or(json!([24, 24, 24])))?; + let blocks = self.store.read_region(world, min, max)?; + let colors = blocks + .iter() + .map(|b| { + ( + b.pos, + self.definition(b.block) + .map(|s| s.color) + .unwrap_or([190, 60, 185]), + ) + }) + .collect(); + let png = crate::render::capture(min, max, colors)?; + use base64::Engine; + Ok( + json!({"png_base64":base64::engine::general_purpose::STANDARD.encode(png),"mimeType":"image/png","world":world,"revision":self.store.revision(world)?,"kind":"server-software-isometric","min":min,"max":max}), + ) + } + _ => bail!("unknown control method {method}"), + } + } + fn build_plan(&mut self, p: Value) -> Result { + self.plans.retain(|_, p| p.expires > Instant::now()); + ensure!(self.plans.len() < 16, "build plan limit reached"); + let world = string(&p, "world")?.to_owned(); + let revision = p["expected_revision"] + .as_u64() + .context("expected_revision required")?; + ensure!( + self.store.revision(&world)? == revision, + "revision conflict" + ); + let ops = p["operations"].as_array().context("operations required")?; + ensure!( + !ops.is_empty() && ops.len() <= 128, + "expected 1..128 operations" + ); + let mut cells = BTreeMap::new(); + for op in ops { + let state = op["state"].as_str().or_else(|| op["block"].as_str()); + let block = if let Some(s) = state { + self.id(s)? + } else { + op["block"] + .as_u64() + .filter(|n| *n < self.store.registry().len() as u64) + .context("block ID or state required")? as u32 + }; + let kind = op["type"] + .as_str() + .or_else(|| op["kind"].as_str()) + .context("operation type required")?; + let mut put = |pos: Pos| -> Result<()> { + ensure!( + pos.iter().all(|n| n.unsigned_abs() <= 30_000_000), + "position outside world limits" + ); + cells.insert(pos, block); + ensure!(cells.len() <= 32768, "plan exceeds 32768 cells"); + Ok(()) + }; + match kind { + "box" | "replace" => { + let min: Pos = serde_json::from_value(op["min"].clone())?; + let max: Pos = serde_json::from_value(op["max"].clone())?; + let mut volume = 1i64; + for i in 0..3 { + ensure!(max[i] >= min[i], "invalid box bounds"); + volume = volume + .checked_mul(i64::from(max[i]) - i64::from(min[i]) + 1) + .context("box too large")?; + } + ensure!(volume <= 32768, "box exceeds 32768 cells"); + let replace = if kind == "replace" { + Some(if let Some(s) = op["from"].as_str() { + self.id(s)? + } else { + op["from"].as_u64().context("replace from required")? as u32 + }) + } else { + None + }; + for x in min[0]..=max[0] { + for y in min[1]..=max[1] { + for z in min[2]..=max[2] { + let pos = [x, y, z]; + if op["hollow"] == true + && x != min[0] + && x != max[0] + && y != min[1] + && y != max[1] + && z != min[2] + && z != max[2] + { + continue; + } + if replace.is_none() + || Some(self.store.get_block(&world, pos)?) == replace + { + put(pos)?; + } + } + } + } + } + "line" => { + let from: Pos = serde_json::from_value(op["from"].clone())?; + let to: Pos = serde_json::from_value(op["to"].clone())?; + let steps = (0..3) + .map(|i| (i64::from(to[i]) - i64::from(from[i])).abs()) + .max() + .unwrap(); + ensure!(steps <= 32767, "line too long"); + for n in 0..=steps { + put(std::array::from_fn(|i| { + (f64::from(from[i]) + + (f64::from(to[i]) - f64::from(from[i])) * n as f64 + / steps.max(1) as f64) + .round() as i32 + }))?; + } + } + "cylinder" => { + let center: Pos = serde_json::from_value(op["center"].clone())?; + let radius = op["radius"].as_i64().context("integer radius required")?; + let height = op["height"].as_i64().context("integer height required")?; + ensure!( + (1..=64).contains(&radius) && (1..=128).contains(&height), + "cylinder dimensions out of range" + ); + for x in -radius..=radius { + for z in -radius..=radius { + if x * x + z * z > radius * radius { + continue; + } + if op["hollow"] == true && x * x + z * z < (radius - 1) * (radius - 1) { + continue; + } + for y in 0..height { + put([ + center[0] + .checked_add(x as i32) + .context("coordinate overflow")?, + center[1] + .checked_add(y as i32) + .context("coordinate overflow")?, + center[2] + .checked_add(z as i32) + .context("coordinate overflow")?, + ])?; + } + } + } + } + _ => bail!("unsupported build primitive {kind}"), + } + } + let changes: Vec<_> = cells + .into_iter() + .map(|(pos, block)| BlockChange { pos, block }) + .collect(); + let id = Uuid::new_v4().to_string(); + let count = changes.len(); + let min: Pos = std::array::from_fn(|i| changes.iter().map(|c| c.pos[i]).min().unwrap_or(0)); + let max: Pos = std::array::from_fn(|i| changes.iter().map(|c| c.pos[i]).max().unwrap_or(0)); + self.plans.insert( + id.clone(), + Plan { + world: world.clone(), + revision, + changes, + expires: Instant::now() + Duration::from_secs(300), + }, + ); + Ok( + json!({"plan_id":id,"world":world,"expected_revision":revision,"cells":count,"min":min,"max":max,"expires_in_seconds":300}), + ) + } +} +fn entity_position(v: &Value) -> Result<[f32; 3]> { + let p: [f32; 3] = serde_json::from_value(v.clone())?; + ensure!( + p.iter().all(|n| n.is_finite() && n.abs() <= 32700.), + "position outside playable limits +/-32700" + ); + Ok(p) +} + +fn split_states(s: &str) -> Vec<&str> { + let mut depth = 0; + let mut start = 0; + let mut out = Vec::new(); + for (i, c) in s.char_indices() { + match c { + '[' => depth += 1, + ']' => depth -= 1, + ',' if depth == 0 => { + out.push(&s[start..i]); + start = i + 1; + } + _ => {} + } + } + out.push(&s[start..]); + out +} diff --git a/crates/shacraft-server/src/game.rs b/crates/shacraft-server/src/game.rs new file mode 100644 index 0000000..3e89609 --- /dev/null +++ b/crates/shacraft-server/src/game.rs @@ -0,0 +1,1159 @@ +use anyhow::{Context, Result, bail, ensure}; +use serde::{Deserialize, Serialize}; +use serde_json::{Value, json}; +use shacraft_content::{Catalog, StateDefinition}; +use shacraft_core::{BlockChange, Pos, WorldStore}; +use std::{ + collections::{BTreeMap, HashMap, HashSet}, + path::Path, + sync::{ + Arc, + atomic::{AtomicUsize, Ordering}, + mpsc, + }, + time::{Duration, Instant}, +}; +use tokio::sync::{mpsc as tmpsc, oneshot}; +use uuid::Uuid; + +pub enum Command { + Query(String, Value, oneshot::Sender>), + Join(Value, Outbox, oneshot::Sender>), + Client(String, Value), + Leave(String), +} +#[derive(Clone)] +pub struct Outbox { + pub tx: tmpsc::Sender>, + pub bytes: Arc, +} +impl Outbox { + pub fn send(&self, value: Value) -> bool { + self.send_shared(Arc::new(value.to_string())) + } + pub fn send_shared(&self, value: Arc) -> bool { + let n = value.len(); + if self.bytes.fetch_add(n, Ordering::Relaxed) + n > 8 * 1024 * 1024 { + self.bytes.fetch_sub(n, Ordering::Relaxed); + return false; + } + if self.tx.try_send(value).is_err() { + self.bytes.fetch_sub(n, Ordering::Relaxed); + return false; + } + true + } +} +#[derive(Clone, Serialize, Deserialize)] +#[serde(default)] +pub struct WorldConfig { + pub spawn: [f32; 3], + pub mode: String, + pub countdown_seconds: u32, + pub round_seconds: u32, + pub min_players: usize, + pub elimination_y: f32, + pub spawn_points: Vec<[f32; 3]>, + pub spectator_spawn: [f32; 3], + pub floor_block: String, +} +impl Default for WorldConfig { + fn default() -> Self { + Self { + spawn: [0., 2., 8.], + mode: "creative".into(), + countdown_seconds: 3, + round_seconds: 180, + min_players: 2, + elimination_y: -6., + spawn_points: Vec::new(), + spectator_spawn: [13., 2., 0.], + floor_block: "minecraft:snow_block".into(), + } + } +} +impl WorldConfig { + fn validate(&self, catalog: &Catalog) -> Result<()> { + ensure!( + ["creative", "spleef", "template"].contains(&self.mode.as_str()), + "unsupported world mode" + ); + ensure!( + (1..=30).contains(&self.countdown_seconds), + "countdown_seconds must be 1..30" + ); + ensure!( + (1..=3600).contains(&self.round_seconds), + "round_seconds must be 1..3600" + ); + ensure!( + (2..=32).contains(&self.min_players), + "min_players must be 2..32" + ); + ensure!( + self.elimination_y.is_finite() && self.elimination_y.abs() <= 32700., + "elimination_y outside playable limits" + ); + ensure!( + self.spawn_points.len() <= 32, + "at most 32 spawn_points are allowed" + ); + ensure!( + self.spawn_points.is_empty() || self.spawn_points.len() >= self.min_players, + "spawn_points must accommodate min_players" + ); + for point in std::iter::once(&self.spawn) + .chain(std::iter::once(&self.spectator_spawn)) + .chain(&self.spawn_points) + { + ensure!( + point.iter().all(|n| n.is_finite() && n.abs() <= 32700.), + "spawn position outside playable limits +/-32700" + ); + ensure!( + point[1] > self.elimination_y + 0.5, + "spawn positions must be above elimination_y" + ); + } + for (i, a) in self.spawn_points.iter().enumerate() { + for b in self.spawn_points.iter().skip(i + 1) { + ensure!( + (0..3).map(|axis| (a[axis] - b[axis]).powi(2)).sum::() >= 0.64, + "spawn_points are too close together" + ); + } + } + let floor = catalog + .state(&self.floor_block) + .context("unknown floor_block")?; + ensure!( + !floor.collision.is_empty(), + "floor_block must have a solid collision shape" + ); + Ok(()) + } +} +#[derive(Clone, Default, Serialize, Deserialize)] +struct Metadata { + worlds: BTreeMap, + entities: BTreeMap, + revision: u64, + #[serde(default)] + active_matches: HashSet, +} +#[derive(Clone, Default)] +struct Input { + seq: u64, + yaw: f32, + pitch: f32, + forward: f32, + strafe: f32, + jump: bool, +} +struct Player { + id: String, + name: String, + world: String, + position: [f32; 3], + velocity: f32, + grounded: bool, + input: Input, + out: Outbox, + last_input: Instant, + last_action: Instant, + last_chat: Instant, + last_snapshot: Instant, + view: [i32; 3], + alive: bool, +} +#[derive(Clone)] +struct Match { + phase: String, + deadline: u64, + participants: HashSet, + winner: Option, +} +struct Plan { + world: String, + revision: u64, + changes: Vec, + expires: Instant, +} +pub struct Game { + pub store: WorldStore, + pub catalog: Catalog, + ids: HashMap, + pub manifest: Value, + meta: Metadata, + db: rusqlite::Connection, + players: HashMap, + matches: HashMap, + plans: HashMap, + tick: u64, + started: Instant, + max_tick_ms: f64, + last_tick_ms: f64, + slow_clients: u64, + pub jump: crate::packages::JumpModule, +} +impl Game { + pub fn open( + data: &Path, + cache: usize, + manifest: Value, + jump: crate::packages::JumpModule, + ) -> Result { + let mut store = WorldStore::open(data, cache)?; + let mut catalog = Catalog::load_builtin()?; + jump.extend_catalog(&mut catalog)?; + for s in &catalog.states { + store.register_block(&s.state)?; + } + let ids = store + .registry() + .iter() + .enumerate() + .map(|(i, s)| (s.clone(), i as u32)) + .collect(); + let db = rusqlite::Connection::open(data.join("server.sqlite3"))?; + db.execute_batch("PRAGMA journal_mode=WAL; PRAGMA synchronous=FULL; PRAGMA cache_size=-1024; CREATE TABLE IF NOT EXISTS metadata(id INTEGER PRIMARY KEY CHECK(id=1),json TEXT NOT NULL);")?; + let meta = match db.query_row("SELECT json FROM metadata WHERE id=1", [], |r| { + r.get::<_, String>(0) + }) { + Ok(s) => serde_json::from_str(&s)?, + Err(rusqlite::Error::QueryReturnedNoRows) => Metadata::default(), + Err(e) => return Err(e.into()), + }; + let mut game = Self { + store, + catalog, + ids, + manifest, + meta, + db, + players: HashMap::new(), + matches: HashMap::new(), + plans: HashMap::new(), + tick: 0, + started: Instant::now(), + max_tick_ms: 0., + last_tick_ms: 0., + slow_clients: 0, + jump, + }; + for conf in game.meta.worlds.values() { + conf.validate(&game.catalog)?; + } + game.seed()?; + for world in game.meta.active_matches.clone() { + let revision = game.store.revision(&world)?; + game.store.reset_world( + &world, + revision, + &format!("restart-reset-{}", Uuid::new_v4()), + )?; + } + if !game.meta.active_matches.is_empty() { + game.meta.active_matches.clear(); + game.save_meta()?; + } + Ok(game) + } + fn save_meta(&mut self) -> Result<()> { + let result = (|| -> Result<()> { + self.meta.revision = self + .meta + .revision + .checked_add(1) + .context("metadata revision exhausted")?; + let encoded = serde_json::to_string(&self.meta)?; + ensure!( + encoded.len() <= 8 * 1024 * 1024, + "metadata exceeds 8 MiB budget" + ); + self.db.execute("INSERT INTO metadata(id,json) VALUES(1,?1) ON CONFLICT(id) DO UPDATE SET json=excluded.json",[encoded])?; + Ok(()) + })(); + if result.is_err() { + self.meta = match self + .db + .query_row("SELECT json FROM metadata WHERE id=1", [], |r| { + r.get::<_, String>(0) + }) { + Ok(s) => serde_json::from_str(&s)?, + Err(rusqlite::Error::QueryReturnedNoRows) => Metadata::default(), + Err(e) => return Err(e.into()), + }; + } + result + } + fn id(&self, s: &str) -> Result { + let canonical = self.catalog.state(s).map(|s| s.state.as_str()).unwrap_or(s); + self.ids + .get(canonical) + .copied() + .context("unknown block state") + } + fn seed(&mut self) -> Result<()> { + let worlds = self.store.list_worlds()?; + let names: HashSet<_> = worlds.iter().map(|w| w.name.as_str()).collect(); + if !names.contains("lobby") + || self + .store + .revision("lobby") + .is_ok_and(|revision| revision == 0) + { + if !names.contains("lobby") { + self.store.create_world("lobby", None)?; + } + let mut cells = Vec::new(); + for x in -24i32..=24 { + for z in -24i32..=24 { + let state = if x.abs() < 3 || z.abs() < 3 { + "minecraft:polished_andesite" + } else if x.abs() == 24 || z.abs() == 24 { + "minecraft:stone_bricks" + } else { + "minecraft:grass_block" + }; + cells.push(BlockChange { + pos: [x, 0, z], + block: self.id(state)?, + }); + if (x.abs() == 16 && z % 8 == 0) || (z.abs() == 16 && x % 8 == 0) { + for y in 1..=4 { + cells.push(BlockChange { + pos: [x, y, z], + block: self.id(if y == 4 { + "minecraft:sea_lantern" + } else { + "minecraft:oak_log" + })?, + }); + } + } + } + } + for x in -7..=-4 { + for z in -6..=-3 { + cells.push(BlockChange { + pos: [x, 1, z], + block: self.id("shacraft:trampoline")?, + }); + } + } + for x in 5..=10 { + for z in -10..=-5 { + cells.push(BlockChange { + pos: [x, 1, z], + block: self.id("minecraft:water")?, + }); + } + } + for x in -3i32..=3 { + for y in 1..=6 { + if x.abs() == 3 || y >= 5 { + cells.push(BlockChange { + pos: [x, y, -12], + block: self.id(if y == 6 { + "minecraft:sea_lantern" + } else { + "minecraft:oxidized_copper" + })?, + }); + } + } + } + self.store.edit("lobby", 0, "seed-lobby-v1", cells)?; + } + if !names.contains("spleef_template") + || self + .store + .revision("spleef_template") + .is_ok_and(|revision| revision == 0) + { + if !names.contains("spleef_template") { + self.store.create_world("spleef_template", None)?; + } + let mut cells = Vec::new(); + for x in -14i32..=14 { + for z in -14i32..=14 { + let edge = x.abs() >= 12 || z.abs() >= 12; + cells.push(BlockChange { + pos: [x, 0, z], + block: self.id(if edge { + "minecraft:deepslate_tiles" + } else { + "minecraft:snow_block" + })?, + }); + if x.abs() == 14 || z.abs() == 14 { + for y in 1..=3 { + cells.push(BlockChange { + pos: [x, y, z], + block: self.id(if y == 3 { + "minecraft:sea_lantern" + } else { + "minecraft:glass" + })?, + }); + } + } + } + } + self.store + .edit("spleef_template", 0, "seed-spleef-v1", cells)?; + } + for name in ["arena_1", "arena_2"] { + if !names.contains(name) { + self.store.create_world(name, Some("spleef_template"))?; + } + self.meta.worlds.entry(name.into()).or_insert(WorldConfig { + spawn: [0., 2., 8.], + mode: "spleef".into(), + ..WorldConfig::default() + }); + } + self.meta + .worlds + .entry("spleef_template".into()) + .or_insert(WorldConfig { + spawn: [0., 2., 8.], + mode: "template".into(), + ..WorldConfig::default() + }); + self.meta.worlds.entry("lobby".into()).or_default(); + if !names.contains("gallery") + || self + .store + .revision("gallery") + .is_ok_and(|revision| revision == 0) + { + if !names.contains("gallery") { + self.store.create_world("gallery", None)?; + } + let floor = self.id("minecraft:polished_andesite")?; + let path = self.id("minecraft:deepslate_tiles")?; + let mut cells = Vec::with_capacity(18000); + for x in -64i32..64 { + for z in -64i32..64 { + let marker = (x + 48).rem_euclid(3) == 0 && (z + 57).rem_euclid(3) == 0; + cells.push(BlockChange { + pos: [x, 0, z], + block: if marker { floor } else { path }, + }); + } + } + for sample in self.catalog.sampler() { + cells.push(BlockChange { + pos: sample.position, + block: self.id(&sample.state)?, + }); + } + self.store.edit("gallery", 0, "seed-gallery-v1", cells)?; + } + self.meta + .worlds + .entry("gallery".into()) + .or_insert(WorldConfig { + spawn: [-50., 2., 58.], + ..WorldConfig::default() + }); + self.save_meta()?; + Ok(()) + } + pub fn run(mut self, rx: mpsc::Receiver) { + let mut next = Instant::now() + Duration::from_millis(50); + loop { + match rx.recv_timeout(next.saturating_duration_since(Instant::now())) { + Ok(Command::Query(method, p, reply)) => { + let result = self.query(&method, p); + let _ = reply.send(result); + } + Ok(Command::Join(p, out, reply)) => { + let result = self.join(p, out); + let _ = reply.send(result); + } + Ok(Command::Client(id, p)) => { + if let Err(e) = self.client(&id, p) { + self.send(&id, json!({"type":"error","message":e.to_string()})); + } + } + Ok(Command::Leave(id)) => { + self.players.remove(&id); + } + Err(mpsc::RecvTimeoutError::Disconnected) => break, + Err(mpsc::RecvTimeoutError::Timeout) => {} + } + if Instant::now() >= next { + let start = Instant::now(); + self.step(); + self.last_tick_ms = start.elapsed().as_secs_f64() * 1000.; + self.max_tick_ms = self.max_tick_ms.max(self.last_tick_ms); + next += Duration::from_millis(50); + if next < Instant::now() { + next = Instant::now() + Duration::from_millis(50); + } + } + } + } + fn send(&mut self, id: &str, value: Value) { + if self.players.get(id).is_some_and(|p| !p.out.send(value)) { + self.players.remove(id); + self.slow_clients += 1; + } + } + fn broadcast(&mut self, world: &str, value: Value) { + let value = Arc::new(value.to_string()); + let dead: Vec<_> = self + .players + .iter() + .filter(|(_, p)| p.world == world && !p.out.send_shared(value.clone())) + .map(|(id, _)| id.clone()) + .collect(); + for id in dead { + self.players.remove(&id); + self.slow_clients += 1; + } + } + fn config(&self, world: &str) -> WorldConfig { + self.meta.worlds.get(world).cloned().unwrap_or_default() + } + fn players_json(&self, world: &str) -> Value { + json!(self.players.values().filter(|p|p.world==world).map(|p|json!({"id":p.id,"name":p.name,"position":p.position,"yaw":p.input.yaw,"pitch":p.input.pitch,"alive":p.alive})).collect::>()) + } + fn materials(&self, blocks: &[BlockChange]) -> Vec { + let ids: HashSet<_> = blocks.iter().map(|b| b.block).collect(); + let mut budget = 0; + ids.into_iter() + .filter_map(|id| self.material(id)) + .take(256) + .take_while(|material| { + budget += material.to_string().len(); + budget <= 128 * 1024 + }) + .collect() + } + fn material(&self, id: u32) -> Option { + let state = self.store.registry().get(id as usize)?; + let mut v = if let Some(s) = self.catalog.state(state) { + json!(s) + } else { + json!({"state":state,"color":[190,60,185],"collision":[{"min":[0,0,0],"max":[1,1,1]}],"render":[{"min":[0,0,0],"max":[1,1,1]}],"coverage":{"render":"unknown-placeholder","collision":"unknown-full-cube"}}) + }; + v["id"] = json!(id); + Some(v) + } + fn snapshot(&mut self, id: &str, welcome: bool) -> Result<()> { + let p = self.players.get(id).context("not joined")?; + let world = p.world.clone(); + let center = p.position.map(|v| (v.floor() as i32).div_euclid(16) * 16); + let blocks = self.store.read_region( + &world, + [center[0] - 32, center[1] - 8, center[2] - 32], + [center[0] + 31, center[1] + 31, center[2] + 31], + )?; + let value = json!({"type":if welcome{"welcome"}else{"snapshot"},"id":id,"world":world,"revision":self.store.revision(&world)?,"spawn":p.position,"blocks":blocks,"materials":self.materials(&blocks),"players":self.players_json(&world),"entities":self.entity_list(&world),"manifest_hash":self.manifest["hash"],"view_center":center}); + if let Some(p) = self.players.get_mut(id) { + p.view = center; + p.last_snapshot = Instant::now(); + } + self.send(id, value); + Ok(()) + } + fn join(&mut self, p: Value, out: Outbox) -> Result { + ensure!(self.players.len() < 32, "server full (32 clients)"); + ensure!(p["protocol"] == 1, "unsupported protocol"); + ensure!( + p["manifest_hash"] == self.manifest["hash"], + "package manifest mismatch; refresh resources" + ); + let world = p["world"].as_str().unwrap_or("lobby"); + self.store.revision(world)?; + ensure!( + self.config(world).mode != "template", + "template is not a playable world" + ); + let name = p["name"].as_str().unwrap_or("Игрок").trim(); + ensure!( + !name.is_empty() && name.chars().count() <= 32 && !name.chars().any(char::is_control), + "invalid player name" + ); + let id = Uuid::new_v4().to_string(); + let now = Instant::now(); + self.players.insert( + id.clone(), + Player { + id: id.clone(), + name: name.into(), + world: world.into(), + position: if self.matches.contains_key(world) { + self.config(world).spectator_spawn + } else { + self.config(world).spawn + }, + velocity: 0., + grounded: false, + input: Input::default(), + out, + last_input: now, + last_action: now - Duration::from_secs(1), + last_chat: now - Duration::from_secs(1), + last_snapshot: now, + view: [0; 3], + alive: !self.matches.contains_key(world), + }, + ); + self.snapshot(&id, true)?; + Ok(id) + } + fn client(&mut self, id: &str, p: Value) -> Result<()> { + let typ = p["type"].as_str().context("message type required")?; + let player = self.players.get(id).context("not joined")?; + let world = player.world.clone(); + match typ { + "input" => { + let seq = p["seq"].as_u64().context("input sequence required")?; + let yaw = number(&p, "yaw")?; + let pitch = number(&p, "pitch")?; + let forward = number(&p, "forward")?; + let strafe = number(&p, "strafe")?; + ensure!( + forward.abs() <= 1. + && strafe.abs() <= 1. + && pitch.abs() <= 1.6 + && yaw.abs() < 1e7, + "invalid movement input" + ); + let player = self.players.get_mut(id).unwrap(); + if seq > player.input.seq { + player.input = Input { + seq, + yaw, + pitch, + forward, + strafe, + jump: p["jump"].as_bool().unwrap_or(false), + }; + player.last_input = Instant::now(); + } + } + "break" | "place" => { + ensure!( + player.last_action.elapsed() >= Duration::from_millis(110), + "edit rate limited" + ); + ensure!(player.alive, "spectators cannot edit"); + let pos: Pos = serde_json::from_value(p["pos"].clone())?; + let hit = self.raycast(id)?; + let Some((hit, normal)) = hit else { + bail!("no reachable block") + }; + if typ == "break" { + ensure!(pos == hit, "block outside line of sight"); + } else { + ensure!( + pos == std::array::from_fn::<_, 3, _>(|i| hit[i] + normal[i]), + "placement outside line of sight" + ); + } + let conf = self.config(&world); + if conf.mode == "spleef" { + ensure!(typ=="break"&&self.matches.get(&world).is_some_and(|m|m.phase=="active"&&m.participants.contains(id)),"Spleef allows breaking the configured floor only during a match"); + ensure!( + self.store.get_block(&world, pos)? == self.id(&conf.floor_block)?, + "arena boundary is protected" + ); + } + let block = if typ == "break" { + 0 + } else if let Some(s) = p["state"].as_str() { + self.id(s)? + } else { + p["block"] + .as_u64() + .filter(|v| *v < self.store.registry().len() as u64) + .context("invalid block id")? as u32 + }; + if block != 0 { + ensure!( + self.store.get_block(&world, pos)? == 0, + "placement cell occupied" + ); + ensure!( + !self + .players + .values() + .filter(|q| q.world == world) + .any(|q| intersects( + q.position, + [pos[0] as f32, pos[1] as f32, pos[2] as f32], + [pos[0] as f32 + 1., pos[1] as f32 + 1., pos[2] as f32 + 1.] + )), + "placement intersects a player" + ); + } + let changes = vec![BlockChange { pos, block }]; + let rev = self.store.revision(&world)?; + let result = self.store.edit( + &world, + rev, + &format!("play-{}", Uuid::new_v4()), + changes.clone(), + )?; + self.players.get_mut(id).unwrap().last_action = Instant::now(); + self.broadcast(&world,json!({"type":"blocks","revision":result.revision,"changes":changes,"materials":self.materials(&changes)})); + } + "switch_world" => { + ensure!( + player.last_snapshot.elapsed() >= Duration::from_secs(1), + "world switch rate limited" + ); + let target = p["world"].as_str().context("world required")?; + self.store.revision(target)?; + let conf = self.config(target); + ensure!(conf.mode != "template", "template is not playable"); + if let Some(m) = self.matches.get_mut(&world) { + m.participants.remove(id); + } + let spectator = self.matches.contains_key(target); + let q = self.players.get_mut(id).unwrap(); + q.world = target.into(); + q.position = if spectator { + conf.spectator_spawn + } else { + conf.spawn + }; + q.velocity = 0.; + q.input = Input::default(); + q.alive = !spectator; + self.snapshot(id, false)?; + } + "resync" => { + ensure!( + player.last_snapshot.elapsed() >= Duration::from_millis(500), + "snapshot rate limited" + ); + self.snapshot(id, false)?; + } + "respawn" => { + ensure!( + !self + .matches + .get(&world) + .is_some_and(|m| m.phase == "active" || m.phase == "countdown"), + "respawn is disabled during a match" + ); + let spawn = self.config(&world).spawn; + let q = self.players.get_mut(id).unwrap(); + q.position = spawn; + q.velocity = 0.; + q.alive = true; + } + "start_match" => { + self.start_match(&world)?; + } + "chat" => { + ensure!( + player.last_chat.elapsed() >= Duration::from_millis(700), + "chat rate limited" + ); + let text = p["text"].as_str().context("text required")?.trim(); + ensure!( + !text.is_empty() + && text.chars().count() <= 240 + && !text.chars().any(char::is_control), + "invalid chat text" + ); + let name = player.name.clone(); + self.players.get_mut(id).unwrap().last_chat = Instant::now(); + self.broadcast(&world, json!({"type":"chat","name":name,"text":text})); + } + "ping" => self.send(id, json!({"type":"pong","client_time":p["client_time"]})), + _ => bail!("unknown client message"), + } + Ok(()) + } + fn collision_boxes( + &mut self, + world: &str, + min: Pos, + max: Pos, + ) -> Result> { + let mut boxes = Vec::new(); + for cell in self.store.read_region(world, min, max)? { + let local = self + .definition(cell.block) + .map(|s| s.collision.clone()) + .unwrap_or_else(|| vec![shacraft_content::Aabb::new([0.; 3], [1.; 3])]); + for b in local { + boxes.push(shacraft_content::Aabb::new( + std::array::from_fn(|i| cell.pos[i] as f32 + b.min[i]), + std::array::from_fn(|i| cell.pos[i] as f32 + b.max[i]), + )); + } + } + Ok(boxes) + } + #[cfg(test)] + fn collision(&mut self, world: &str, p: [f32; 3]) -> bool { + let center = p.map(|v| v.floor() as i32); + self.collision_boxes( + world, + [center[0] - 3, center[1] - 3, center[2] - 3], + [center[0] + 3, center[1] + 4, center[2] + 3], + ) + .map(|boxes| boxes.iter().any(|b| intersects(p, b.min, b.max))) + .unwrap_or(true) + } + fn definition(&self, id: u32) -> Option<&StateDefinition> { + self.store + .registry() + .get(id as usize) + .and_then(|s| self.catalog.state(s)) + } + fn step(&mut self) { + self.tick += 1; + let ids: Vec<_> = self.players.keys().cloned().collect(); + for id in ids { + let Some(mut p) = self.players.remove(&id) else { + continue; + }; + if p.last_input.elapsed() > Duration::from_secs(1) { + p.input.forward = 0.; + p.input.strafe = 0.; + p.input.jump = false; + } + let conf = self.config(&p.world); + let frozen = self + .matches + .get(&p.world) + .is_some_and(|m| m.phase == "countdown"); + let speed = if frozen { 0. } else { 5. }; + let len = (p.input.forward * p.input.forward + p.input.strafe * p.input.strafe) + .sqrt() + .max(1.); + let dx = (p.input.yaw.sin() * p.input.forward + p.input.yaw.cos() * p.input.strafe) + * speed + * 0.05 + / len; + let dz = (-p.input.yaw.cos() * p.input.forward + p.input.yaw.sin() * p.input.strafe) + * speed + * 0.05 + / len; + if p.input.jump && p.grounded && !frozen { + let under = [ + p.position[0].floor() as i32, + (p.position[1] - 0.2).floor() as i32, + p.position[2].floor() as i32, + ]; + let trampoline = self + .store + .get_block(&p.world, under) + .ok() + .and_then(|id| self.store.registry().get(id as usize)) + .is_some_and(|state| self.jump.handles(state)); + p.velocity = if trampoline { + self.jump.call().unwrap_or(7.) + } else { + 7. + }; + p.grounded = false; + } + p.velocity = (p.velocity - 20. * 0.05).max(-30.); + let movement = [dx, p.velocity * 0.05, dz]; + p.grounded = false; + let center = p.position.map(|v| v.floor() as i32); + let boxes = match self.collision_boxes( + &p.world, + [center[0] - 3, center[1] - 5, center[2] - 3], + [center[0] + 3, center[1] + 5, center[2] + 3], + ) { + Ok(boxes) => boxes, + Err(e) => { + p.out + .send(json!({"type":"error","message":format!("world read failed: {e}")})); + self.players.insert(id, p); + continue; + } + }; + for axis in [0, 2, 1] { + if movement[axis].abs() < 1e-6 { + continue; + } + let steps = (movement[axis].abs() / 0.15).ceil().max(1.) as usize; + for _ in 0..steps { + let mut candidate = p.position; + candidate[axis] += movement[axis] / steps as f32; + if boxes.iter().any(|b| intersects(candidate, b.min, b.max)) { + let mut low = 0.; + let mut high = 1.; + for _ in 0..10 { + let t = (low + high) * 0.5; + let mut at = p.position; + at[axis] += (candidate[axis] - p.position[axis]) * t; + if boxes.iter().any(|b| intersects(at, b.min, b.max)) { + high = t; + } else { + low = t; + } + } + p.position[axis] += (candidate[axis] - p.position[axis]) * low; + if axis == 1 { + p.grounded = movement[1] < 0.; + p.velocity = 0.; + } + break; + } + p.position = candidate; + } + } + if p.position[1] < conf.elimination_y || p.position.iter().any(|v| v.abs() > 32700.) { + let active = self + .matches + .get(&p.world) + .is_some_and(|m| m.phase == "active"); + if active { + p.alive = false; + p.position = conf.spectator_spawn; + } else { + p.position = conf.spawn; + } + p.velocity = 0.; + } + self.players.insert(id.clone(), p); + let p = &self.players[&id]; + let center = p.position.map(|v| (v.floor() as i32).div_euclid(16) * 16); + if center != p.view && p.last_snapshot.elapsed() > Duration::from_secs(2) { + let _ = self.snapshot(&id, false); + } + } + self.advance_matches(); + let worlds: HashSet<_> = self.players.values().map(|p| p.world.clone()).collect(); + for world in worlds { + let players = self.players_json(&world); + let m = self.match_json(&world); + let ids: Vec<_> = self + .players + .values() + .filter(|p| p.world == world) + .map(|p| (p.id.clone(), p.input.seq)) + .collect(); + for (id, ack) in ids { + self.send( + &id, + json!({"type":"state","tick":self.tick,"ack":ack,"players":players,"match":m}), + ); + } + } + self.plans.retain(|_, p| p.expires > Instant::now()); + } + fn raycast(&mut self, id: &str) -> Result> { + let p = self.players.get(id).context("not joined")?; + let world = p.world.clone(); + let eye = [p.position[0], p.position[1] + 1.62, p.position[2]]; + let dir = [ + p.input.yaw.sin() * p.input.pitch.cos(), + p.input.pitch.sin(), + -p.input.yaw.cos() * p.input.pitch.cos(), + ]; + let end = std::array::from_fn::<_, 3, _>(|i| eye[i] + dir[i] * 6.); + let min = std::array::from_fn(|i| eye[i].min(end[i]).floor() as i32 - 3); + let max = std::array::from_fn(|i| eye[i].max(end[i]).ceil() as i32 + 3); + let mut nearest: Option<(f32, Pos, Pos)> = None; + for change in self.store.read_region(&world, min, max)? { + let cell = change.pos; + let boxes = self + .definition(change.block) + .map(|s| s.render.clone()) + .unwrap_or_else(|| vec![shacraft_content::Aabb::new([0.; 3], [1.; 3])]); + for b in boxes { + if let Some((t, normal)) = ray_box( + eye, + dir, + std::array::from_fn(|i| cell[i] as f32 + b.min[i]), + std::array::from_fn(|i| cell[i] as f32 + b.max[i]), + ) && nearest.is_none_or(|old| t < old.0) + { + nearest = Some((t, cell, normal)); + } + } + } + Ok(nearest.map(|(_, cell, normal)| (cell, normal))) + } + + fn start_match(&mut self, world: &str) -> Result { + let conf = self.config(world); + conf.validate(&self.catalog)?; + ensure!(conf.mode == "spleef", "world is not a Spleef arena"); + ensure!( + self.matches.get(world).is_none_or(|m| m.phase == "waiting"), + "match already in progress" + ); + let ids: Vec<_> = self + .players + .values() + .filter(|p| p.world == world) + .map(|p| p.id.clone()) + .collect(); + ensure!( + ids.len() >= conf.min_players, + "Spleef needs at least {} players", + conf.min_players + ); + ensure!( + conf.spawn_points.is_empty() || conf.spawn_points.len() >= ids.len(), + "configured spawn_points cannot accommodate all joined players" + ); + self.meta.active_matches.insert(world.into()); + self.save_meta()?; + let rev = self.store.revision(world)?; + self.store + .reset_world(world, rev, &format!("match-reset-{}", Uuid::new_v4()))?; + for (i, id) in ids.iter().enumerate() { + let angle = i as f32 / ids.len() as f32 * std::f32::consts::TAU; + let p = self.players.get_mut(id).unwrap(); + p.position = conf.spawn_points.get(i).copied().unwrap_or([ + angle.sin() * 7., + conf.spawn[1], + angle.cos() * 7., + ]); + p.alive = true; + p.velocity = 0.; + } + self.matches.insert( + world.into(), + Match { + phase: "countdown".into(), + deadline: self.tick + u64::from(conf.countdown_seconds) * 20, + participants: ids.iter().cloned().collect(), + winner: None, + }, + ); + self.resnapshot(world); + Ok(self.match_json(world)) + } + fn advance_matches(&mut self) { + let worlds: Vec<_> = self.matches.keys().cloned().collect(); + for world in worlds { + let conf = self.config(&world); + let m = self.matches[&world].clone(); + if m.phase == "countdown" && self.tick >= m.deadline { + let m = self.matches.get_mut(&world).unwrap(); + m.phase = "active".into(); + m.deadline = self.tick + 20 * u64::from(conf.round_seconds); + } else if m.phase == "active" { + let alive: Vec<_> = m + .participants + .iter() + .filter_map(|id| self.players.get(id)) + .filter(|p| p.world == world && p.alive) + .map(|p| p.name.clone()) + .collect(); + if alive.len() <= 1 || self.tick >= m.deadline { + let m = self.matches.get_mut(&world).unwrap(); + m.phase = "finished".into(); + m.deadline = self.tick + 100; + m.winner = if alive.len() == 1 { + Some(alive[0].clone()) + } else { + None + }; + } + } else if m.phase == "finished" && self.tick >= m.deadline { + let rev = self.store.revision(&world).unwrap_or(0); + if self + .store + .reset_world(&world, rev, &format!("round-end-{}", Uuid::new_v4())) + .is_ok() + { + for p in self.players.values_mut().filter(|p| p.world == world) { + p.position = conf.spawn; + p.velocity = 0.; + p.alive = true; + } + self.meta.active_matches.remove(&world); + let _ = self.save_meta(); + self.matches.remove(&world); + self.resnapshot(&world); + } + } + } + } + fn match_json(&self, world: &str) -> Value { + if let Some(m) = self.matches.get(world) { + json!({"phase":m.phase,"remaining":m.deadline.saturating_sub(self.tick)as f32/20.,"winner":m.winner,"rules":self.config(world)}) + } else { + json!({"phase":"waiting","remaining":0,"rules":self.config(world)}) + } + } + pub(super) fn resnapshot(&mut self, world: &str) { + let ids: Vec<_> = self + .players + .values() + .filter(|p| p.world == world) + .map(|p| p.id.clone()) + .collect(); + for id in ids { + let _ = self.snapshot(&id, false); + } + } + fn entity_list(&self, world: &str) -> Vec { + self.meta + .entities + .values() + .filter(|e| e["world"] == world) + .map(|e| json!({"id":e["id"],"kind":e["kind"],"position":e["position"],"yaw":e["yaw"]})) + .collect() + } +} +fn intersects(p: [f32; 3], min: [f32; 3], max: [f32; 3]) -> bool { + let a = [p[0] - 0.3, p[1] + 0.001, p[2] - 0.3]; + let b = [p[0] + 0.3, p[1] + 1.799, p[2] + 0.3]; + (0..3).all(|i| a[i] < max[i] - 0.0001 && b[i] > min[i] + 0.0001) +} +fn number(p: &Value, key: &str) -> Result { + let n = p[key] + .as_f64() + .context(format!("{key} must be a finite number"))?; + ensure!(n.is_finite() && n.abs() < 1e8, "number out of range"); + Ok(n as f32) +} +fn string<'a>(p: &'a Value, key: &str) -> Result<&'a str> { + p[key].as_str().context(format!("{key} string required")) +} +include!("control.rs"); + +fn ray_box(eye: [f32; 3], dir: [f32; 3], min: [f32; 3], max: [f32; 3]) -> Option<(f32, Pos)> { + let mut near = 0f32; + let mut far = 6f32; + let mut normal = [0; 3]; + for i in 0..3 { + if dir[i].abs() < 1e-7 { + if eye[i] < min[i] || eye[i] > max[i] { + return None; + } + continue; + } + let a = (min[i] - eye[i]) / dir[i]; + let b = (max[i] - eye[i]) / dir[i]; + let entry = a.min(b); + if entry > near { + near = entry; + normal = [0; 3]; + normal[i] = if dir[i] > 0. { -1 } else { 1 }; + } + far = far.min(a.max(b)); + if near > far { + return None; + } + } + if normal == [0; 3] { + None + } else { + Some((near, normal)) + } +} +#[cfg(test)] +#[path = "tests.rs"] +mod tests; diff --git a/crates/shacraft-server/src/main.rs b/crates/shacraft-server/src/main.rs new file mode 100644 index 0000000..6392d84 --- /dev/null +++ b/crates/shacraft-server/src/main.rs @@ -0,0 +1,342 @@ +mod game; +mod packages; +mod render; +use anyhow::{Context, Result}; +use axum::{ + Json, Router, + extract::{ + DefaultBodyLimit, Path as AxPath, Query, State, WebSocketUpgrade, + ws::{Message, WebSocket}, + }, + http::{HeaderMap, StatusCode, header}, + response::{IntoResponse, Response}, + routing::{get, post}, +}; +use clap::Parser; +use futures_util::{SinkExt, StreamExt}; +use serde_json::{Value, json}; +use std::{ + path::PathBuf, + sync::{ + Arc, + atomic::{AtomicUsize, Ordering}, + mpsc, + }, + time::{Duration, Instant}, +}; +use tokio::sync::{mpsc as tmpsc, oneshot}; +use tower_http::services::ServeDir; +#[derive(Parser)] +#[command(about = "Shacraft authoritative voxel server + browser client")] +struct Args { + #[arg(long, default_value = "127.0.0.1:4000")] + listen: String, + #[arg(long, default_value = "data")] + data: PathBuf, + #[arg(long, default_value_t = 64)] + cache_sections: usize, + #[arg(long,default_value=concat!(env!("CARGO_MANIFEST_DIR"),"/../../client"))] + client: PathBuf, + #[arg(long,default_value=concat!(env!("CARGO_MANIFEST_DIR"),"/../../packages"))] + packages: PathBuf, +} +#[derive(Clone)] +struct App { + tx: mpsc::SyncSender, + token: Arc, + packages: Arc>, + sockets: Arc, +} +impl App { + async fn query(&self, method: &str, p: Value) -> Result { + let (tx, rx) = oneshot::channel(); + self.tx + .try_send(game::Command::Query(method.into(), p, tx)) + .map_err(|_| anyhow::anyhow!("server command queue busy"))?; + tokio::time::timeout(Duration::from_secs(25), rx) + .await + .context("server query timeout")? + .context("server stopped")? + } +} +#[tokio::main] +async fn main() -> Result<()> { + let args = Args::parse(); + anyhow::ensure!( + (1..=4096).contains(&args.cache_sections), + "cache_sections must be 1..4096" + ); + std::fs::create_dir_all(&args.data)?; + let token_path = args.data.join("control.token"); + let token = if token_path.exists() { + std::fs::read_to_string(&token_path)?.trim().to_owned() + } else { + let token = format!( + "{}{}", + uuid::Uuid::new_v4().simple(), + uuid::Uuid::new_v4().simple() + ); + use std::io::Write; + let mut options = std::fs::OpenOptions::new(); + options.write(true).create_new(true); + #[cfg(unix)] + { + use std::os::unix::fs::OpenOptionsExt; + options.mode(0o600); + } + options.open(&token_path)?.write_all(token.as_bytes())?; + token + }; + anyhow::ensure!( + token.len() >= 32, + "control token must have at least 32 characters" + ); + let loaded = shacraft_content::load_packages(&args.packages)?; + let package_manifest = packages::manifest(&loaded); + let jump = packages::JumpModule::load(&loaded)?; + eprintln!("Loading durable worlds and complete Java 26.2 catalog…"); + let game = game::Game::open(&args.data, args.cache_sections, package_manifest, jump)?; + let (tx, rx) = mpsc::sync_channel(64); + std::thread::Builder::new() + .name("shacraft-world".into()) + .spawn(move || game.run(rx))?; + let app = App { + tx, + token: Arc::new(token), + packages: Arc::new(loaded), + sockets: Arc::new(tokio::sync::Semaphore::new(32)), + }; + let router = Router::new() + .route("/api/health", get(health)) + .route("/api/manifest", get(manifest)) + .route("/api/worlds", get(worlds)) + .route("/api/catalog", get(catalog)) + .route("/api/entities", get(entities)) + .route("/api/metrics", get(metrics)) + .route("/api/control", post(control)) + .route("/packages/{id}/{version}/{*path}", get(resource)) + .route("/ws", get(websocket)) + .fallback_service(ServeDir::new(&args.client)) + .layer(DefaultBodyLimit::max(2 * 1024 * 1024)) + .layer(tower::limit::ConcurrencyLimitLayer::new(16)) + .with_state(app); + let listener = tokio::net::TcpListener::bind(&args.listen).await?; + eprintln!( + "Shacraft ready: http://{} · data {} · 20 ticks/s", + listener.local_addr()?, + args.data.display() + ); + axum::serve(listener, router) + .with_graceful_shutdown(async { + let _ = tokio::signal::ctrl_c().await; + }) + .await?; + Ok(()) +} +fn response(result: Result) -> Response { + match result { + Ok(v) => Json(v).into_response(), + Err(e) => ( + StatusCode::BAD_REQUEST, + Json(json!({"error":e.to_string()})), + ) + .into_response(), + } +} +async fn health(State(app): State) -> Response { + response(app.query("health", json!({})).await) +} +async fn manifest(State(app): State) -> Response { + response(app.query("manifest", json!({})).await) +} +async fn worlds(State(app): State) -> Response { + response(app.query("world.list", json!({})).await) +} +async fn metrics(State(app): State) -> Response { + response(app.query("metrics", json!({})).await) +} +async fn entities(State(app): State) -> Response { + response(app.query("entity.catalog", json!({})).await) +} +async fn catalog( + State(app): State, + Query(q): Query>, +) -> Response { + let p = json!({"query":q.get("query"),"ids":q.get("ids"),"states":q.get("states"),"offset":q.get("offset").and_then(|s|s.parse::().ok()).unwrap_or(0),"limit":q.get("limit").and_then(|s|s.parse::().ok()).unwrap_or(64)}); + response(app.query("catalog.search", p).await) +} +async fn control(State(app): State, headers: HeaderMap, Json(body): Json) -> Response { + if headers + .get(header::AUTHORIZATION) + .and_then(|v| v.to_str().ok()) + != Some(format!("Bearer {}", app.token).as_str()) + { + return ( + StatusCode::UNAUTHORIZED, + Json(json!({"error":"control token required"})), + ) + .into_response(); + } + if let Some(origin) = headers.get(header::ORIGIN).and_then(|v| v.to_str().ok()) + && !same_origin(&headers, origin) + { + return StatusCode::FORBIDDEN.into_response(); + } + let Some(method) = body["method"].as_str() else { + return response(Err(anyhow::anyhow!("method required"))); + }; + match app + .query(method, body.get("params").cloned().unwrap_or(json!({}))) + .await + { + Ok(v) => Json(json!({"result":v})).into_response(), + Err(e) => ( + StatusCode::BAD_REQUEST, + Json(json!({"error":e.to_string()})), + ) + .into_response(), + } +} +async fn resource( + State(app): State, + AxPath((id, version, path)): AxPath<(String, String, String)>, +) -> Response { + let Some(p) = app + .packages + .iter() + .find(|p| p.manifest.id == id && p.manifest.version == version) + else { + return StatusCode::NOT_FOUND.into_response(); + }; + match p.public_resource(&path) { + Ok(bytes) => { + let mime = if path.ends_with(".png") { + "image/png" + } else if path.ends_with(".wav") { + "audio/wav" + } else if path.ends_with(".json") { + "application/json" + } else { + "text/plain; charset=utf-8" + }; + ( + [ + (header::CONTENT_TYPE, mime), + (header::CACHE_CONTROL, "public, max-age=0, must-revalidate"), + (header::X_CONTENT_TYPE_OPTIONS, "nosniff"), + ], + bytes, + ) + .into_response() + } + Err(_) => StatusCode::NOT_FOUND.into_response(), + } +} +fn same_origin(headers: &HeaderMap, origin: &str) -> bool { + headers + .get(header::HOST) + .and_then(|v| v.to_str().ok()) + .is_some_and(|host| { + origin == format!("http://{host}") || origin == format!("https://{host}") + }) +} +async fn websocket(State(app): State, headers: HeaderMap, ws: WebSocketUpgrade) -> Response { + if headers + .get(header::ORIGIN) + .and_then(|v| v.to_str().ok()) + .is_some_and(|o| !same_origin(&headers, o)) + { + return StatusCode::FORBIDDEN.into_response(); + } + let Ok(permit) = app.sockets.clone().try_acquire_owned() else { + return StatusCode::SERVICE_UNAVAILABLE.into_response(); + }; + ws.max_message_size(65536) + .max_frame_size(65536) + .on_upgrade(move |socket| session(socket, app, permit)) +} +async fn session(mut socket: WebSocket, app: App, _permit: tokio::sync::OwnedSemaphorePermit) { + let join = match tokio::time::timeout(Duration::from_secs(10), socket.recv()).await { + Ok(Some(Ok(Message::Text(text)))) => serde_json::from_str::(&text).ok(), + _ => None, + }; + let Some(join) = join else { return }; + if join["type"] != "join" { + return; + } + let (tx, mut rx) = tmpsc::channel(16); + let bytes = Arc::new(AtomicUsize::new(0)); + let out = game::Outbox { + tx, + bytes: bytes.clone(), + }; + let (reply, answer) = oneshot::channel(); + if app + .tx + .try_send(game::Command::Join(join, out, reply)) + .is_err() + { + return; + } + let id = match tokio::time::timeout(Duration::from_secs(25), answer).await { + Ok(Ok(Ok(id))) => id, + Ok(Ok(Err(e))) => { + let _ = socket + .send(Message::Text( + json!({"type":"error","message":e.to_string()}) + .to_string() + .into(), + )) + .await; + return; + } + _ => return, + }; + let (mut writer, mut reader) = socket.split(); + let sending = async { + while let Some(text) = rx.recv().await { + let n = text.len(); + let sent = tokio::time::timeout( + Duration::from_secs(5), + writer.send(Message::Text((*text).clone().into())), + ) + .await; + bytes.fetch_sub(n, Ordering::Relaxed); + if !matches!(sent, Ok(Ok(()))) { + break; + } + } + }; + let receiving = async { + let mut start = Instant::now(); + let mut count = 0; + while let Some(Ok(message)) = reader.next().await { + if start.elapsed() >= Duration::from_secs(1) { + start = Instant::now(); + count = 0; + } + count += 1; + if count > 80 { + break; + } + match message { + Message::Text(text) => { + let Ok(value) = serde_json::from_str(&text) else { + break; + }; + if app + .tx + .try_send(game::Command::Client(id.clone(), value)) + .is_err() + { + break; + } + } + Message::Close(_) => break, + _ => {} + } + } + }; + tokio::select! {_=sending=>{},_=receiving=>{}} + let _ = app.tx.try_send(game::Command::Leave(id)); +} diff --git a/crates/shacraft-server/src/packages.rs b/crates/shacraft-server/src/packages.rs new file mode 100644 index 0000000..cd01a14 --- /dev/null +++ b/crates/shacraft-server/src/packages.rs @@ -0,0 +1,413 @@ +use anyhow::{Context, Result, ensure}; +use serde_json::{Value, json}; +use sha2::{Digest, Sha256}; +use shacraft_content::Package; +use wasmi::{Config, Engine, Linker, Module, Store, StoreLimits, StoreLimitsBuilder, TypedFunc}; +pub fn manifest(packages: &[Package]) -> Value { + let public: Vec<_> = packages + .iter() + .map(|p| { + let mut m = p.manifest.client_manifest(); + let files: Vec<_> = p + .manifest + .resources + .iter() + .filter(|r| r.scope != "server") + .map(|r| { + let mut v = json!(r); + v["url"] = json!(format!( + "/packages/{}/{}/{}", + p.manifest.id, p.manifest.version, r.path + )); + v["kind"] = json!(r.role); + v + }) + .collect(); + m["files"] = json!(files); + m.as_object_mut().unwrap().remove("resources"); + m + }) + .collect(); + let hash = format!("{:x}", Sha256::digest(serde_json::to_vec(&public).unwrap())); + json!({"protocol":1,"hash":hash,"packages":public,"minecraft_version":"26.2","client_integrity":"manifest compatibility only; executable integrity is not proven"}) +} +pub struct JumpModule { + store: Store, + function: TypedFunc<(), f32>, + calls: u64, + traps: u64, + definitions: Vec, + hook_states: std::collections::HashSet, +} +impl JumpModule { + pub fn load(packages: &[Package]) -> Result { + let mut source = None; + for p in packages { + for r in &p.manifest.resources { + if r.role == "wasm-on-jump" { + ensure!(source.is_none(), "only one on_jump provider may be active"); + source = Some(p.read_resource(&r.path)?); + } + } + } + let mut module = Self::from_bytes(&source.context("on_jump module missing")?)?; + module.hook_states.clear(); + for package in packages { + for resource in &package.manifest.resources { + if resource.role == "definitions" { + let data: Value = + serde_json::from_slice(&package.read_resource(&resource.path)?)?; + ensure!( + data["schema"] == 1, + "unsupported content definitions schema" + ); + if let Some(value) = data.get("blocks") { + let blocks = value + .as_array() + .context("content blocks must be an array")?; + ensure!( + package + .manifest + .capabilities + .iter() + .any(|c| c == "blocks.define"), + "blocks.define capability required" + ); + ensure!( + module.definitions.len() + blocks.len() <= 4096, + "package block limit exceeded" + ); + for block in blocks { + if block["behavior"]["server_hook"] == "on_jump" { + module.hook_states.insert( + block["state"].as_str().context("state required")?.into(), + ); + } else { + ensure!( + block.get("behavior").is_none(), + "unsupported block behavior" + ); + } + module.definitions.push(block.clone()); + } + } + } + } + } + Ok(module) + } + fn from_bytes(bytes: &[u8]) -> Result { + ensure!(bytes.len() <= 65536, "WASM module exceeds 64 KiB"); + let mut config = Config::default(); + config.consume_fuel(true); + let engine = Engine::new(&config); + let module = Module::new(&engine, bytes)?; + ensure!( + module.imports().next().is_none(), + "WASM imports are not permitted" + ); + let limits = StoreLimitsBuilder::new() + .memory_size(65536) + .table_elements(128) + .instances(1) + .tables(1) + .memories(1) + .trap_on_grow_failure(true) + .build(); + let mut store = Store::new(&engine, limits); + store.limiter(|s| s); + store.set_fuel(10000)?; + let linker = Linker::new(&engine); + let instance = linker.instantiate_and_start(&mut store, &module)?; + let function = instance.get_typed_func::<(), f32>(&store, "on_jump")?; + Ok(Self { + store, + function, + calls: 0, + traps: 0, + definitions: Vec::new(), + hook_states: ["shacraft:trampoline".into()].into_iter().collect(), + }) + } + pub fn handles(&self, state: &str) -> bool { + self.hook_states.contains(state) + } + pub fn extend_catalog(&self, catalog: &mut shacraft_content::Catalog) -> Result<()> { + use shacraft_content::{Aabb, BlockDefinition, Coverage, StateDefinition}; + let mut seen = std::collections::HashSet::new(); + for definition in &self.definitions { + let state = definition["state"] + .as_str() + .context("package state required")?; + let (namespace, path) = state + .split_once(':') + .context("package namespace required")?; + let valid_part = |part: &str, slash: bool| { + !part.is_empty() + && part.bytes().all(|b| { + b.is_ascii_lowercase() + || b.is_ascii_digit() + || b"_.-".contains(&b) + || (slash && b == b'/') + }) + }; + ensure!( + state.len() <= 512 + && namespace != "minecraft" + && valid_part(namespace, false) + && valid_part(path, true), + "package state must be a new lowercase namespaced identifier" + ); + ensure!(seen.insert(state), "duplicate package block definition"); + let color: [u8; 3] = serde_json::from_value(definition["color"].clone())?; + let collision: Vec = serde_json::from_value(definition["collision"].clone())?; + let render: Vec = if let Some(value) = definition.get("render") { + serde_json::from_value(value.clone())? + } else { + catalog + .state(state) + .map(|s| s.render.clone()) + .unwrap_or_else(|| collision.clone()) + }; + ensure!( + collision.len() <= 64 + && render.len() <= 64 + && collision.iter().chain(&render).all(|b| b.valid() + && b.min.iter().chain(&b.max).all(|v| (-2.0..=3.0).contains(v))), + "invalid package geometry" + ); + let opacity = if let Some(value) = definition.get("opacity") { + value.as_f64().context("opacity must be a number")? + } else { + 1. + }; + ensure!( + opacity.is_finite() && (0.0..=1.0).contains(&opacity), + "opacity must be in 0..1" + ); + let item = StateDefinition { + state: state.into(), + minecraft_id: u32::MAX, + color, + opacity: opacity as f32, + collision, + render, + coverage: Coverage { + identity: "authored-package".into(), + render: "authored-package".into(), + collision: "authored-exact".into(), + behavior: if self.handles(state) { + "wasm-on-jump" + } else { + "storage-and-physics" + } + .into(), + }, + family: state.split(':').nth(1).unwrap().into(), + light: 0, + hardness: 1., + }; + if let Some(existing) = catalog.states.iter_mut().find(|s| s.state == state) { + *existing = item; + } else { + catalog.states.push(item); + catalog.blocks.push(BlockDefinition { + name: state.into(), + default_state: state.into(), + properties: Default::default(), + family: "package".into(), + }); + } + } + catalog.rebuild_indexes()?; + Ok(()) + } + pub fn call(&mut self) -> Result { + self.calls += 1; + self.store.set_fuel(10000)?; + match self.function.call(&mut self.store, ()) { + Ok(v) if v.is_finite() && (0.0..=20.0).contains(&v) => Ok(v), + _ => { + self.traps += 1; + anyhow::bail!("on_jump trapped or returned an invalid impulse") + } + } + } + pub fn metrics(&self) -> Value { + json!({"runtime":"wasmi","calls":self.calls,"traps":self.traps,"fuel_per_call":10000,"memory_limit":65536,"imports":0}) + } +} +#[cfg(test)] +mod tests { + use super::*; + #[test] + fn sandbox_executes_and_bounds_fuel_memory_and_results() { + let mut m = JumpModule::from_bytes( + b"(module (func (export \"on_jump\") (result f32) f32.const 10))", + ) + .unwrap(); + assert_eq!(m.call().unwrap(), 10.); + let mut looped = JumpModule::from_bytes( + b"(module (func (export \"on_jump\") (result f32) (loop br 0) f32.const 10))", + ) + .unwrap(); + assert!(looped.call().is_err()); + assert_eq!(looped.metrics()["traps"], 1); + assert!( + JumpModule::from_bytes( + b"(module (memory 2) (func (export \"on_jump\") (result f32) f32.const 10))" + ) + .is_err() + ); + assert!(JumpModule::from_bytes(b"(module (import \"host\" \"secret\" (func)) (func (export \"on_jump\") (result f32) f32.const 10))").is_err()); + let mut invalid = JumpModule::from_bytes( + b"(module (func (export \"on_jump\") (result f32) f32.const nan))", + ) + .unwrap(); + assert!(invalid.call().is_err()); + } + fn custom_block(state: &str) -> Value { + json!({"state":state,"color":[81,153,187],"collision":[{"min":[0,0,0],"max":[1,0.75,1]}],"render":[{"min":[0.1,0,0.1],"max":[0.9,0.75,0.9]}],"opacity":0.9,"behavior":{"server_hook":"on_jump"}}) + } + fn package_fixture(blocks: Vec) -> (tempfile::TempDir, Vec) { + use shacraft_content::{PackageManifest, PackageResource}; + let root = tempfile::tempdir().unwrap(); + let dir = root.path().join("custom"); + std::fs::create_dir_all(dir.join("common")).unwrap(); + std::fs::create_dir_all(dir.join("server")).unwrap(); + std::fs::write( + dir.join("common/definitions.json"), + serde_json::to_vec(&json!({"schema":1,"blocks":blocks})).unwrap(), + ) + .unwrap(); + let mut wasm = + include_bytes!("../../../packages/trampoline/server/trampoline.wasm").to_vec(); + let end = wasm.len(); + wasm[end - 5..end - 1].copy_from_slice(&12f32.to_le_bytes()); + std::fs::write(dir.join("server/spring.wasm"), &wasm).unwrap(); + let resources = [ + ("common/definitions.json", "common", "definitions"), + ("server/spring.wasm", "server", "wasm-on-jump"), + ] + .into_iter() + .map(|(path, scope, role)| { + let data = std::fs::read(dir.join(path)).unwrap(); + PackageResource { + path: path.into(), + scope: scope.into(), + role: role.into(), + size: data.len() as u64, + sha256: format!("{:x}", Sha256::digest(&data)), + } + }) + .collect(); + let manifest = PackageManifest { + schema: 1, + id: "example.custom".into(), + version: "1.0.0".into(), + license: "MIT".into(), + dependencies: vec![], + capabilities: vec!["blocks.define".into(), "server.on_jump".into()], + resources, + }; + std::fs::write( + dir.join("manifest.json"), + serde_json::to_vec(&manifest).unwrap(), + ) + .unwrap(); + let packages = shacraft_content::load_packages(root.path()).unwrap(); + (root, packages) + } + #[test] + fn verified_custom_package_registers_content_and_binds_real_wasm() { + use shacraft_core::{BlockChange, WorldStore}; + let mut ordinary = custom_block("example:plain_tile"); + ordinary.as_object_mut().unwrap().remove("behavior"); + let (root, packages) = package_fixture(vec![custom_block("example:spring"), ordinary]); + let mut module = JumpModule::load(&packages).unwrap(); + let mut catalog = shacraft_content::Catalog::load_builtin().unwrap(); + module.extend_catalog(&mut catalog).unwrap(); + let spring = catalog.state("example:spring").unwrap(); + assert_eq!(spring.color, [81, 153, 187]); + assert_eq!(spring.collision[0].max[1], 0.75); + assert_eq!(spring.render[0].min[0], 0.1); + assert_eq!(spring.coverage.behavior, "wasm-on-jump"); + assert!(module.handles("example:spring")); + assert!(!module.handles("example:plain_tile")); + assert!(!module.handles("shacraft:trampoline")); + let world_path = root.path().join("world"); + let mut store = WorldStore::open(&world_path, 2).unwrap(); + store.register_block("minecraft:dirt").unwrap(); + let id = store.register_block(&spring.state).unwrap(); + assert_ne!(id, spring.minecraft_id); + store.create_world("module", None).unwrap(); + store + .edit( + "module", + 0, + "package-placement", + vec![BlockChange { + pos: [0, 0, 0], + block: id, + }], + ) + .unwrap(); + let under = store.get_block("module", [0, 0, 0]).unwrap(); + assert!(module.handles(&store.registry()[under as usize])); + assert_eq!(module.call().unwrap(), 12.); + assert_eq!(module.metrics()["calls"], 1); + drop(store); + let mut reopened = WorldStore::open(&world_path, 2).unwrap(); + assert_eq!(reopened.get_block("module", [0, 0, 0]).unwrap(), id); + assert_eq!(reopened.registry()[id as usize], "example:spring"); + let public = manifest(&packages).to_string(); + assert!(public.contains("common/definitions.json")); + assert!(!public.contains("server/spring.wasm")); + } + #[test] + fn duplicate_vanilla_and_invalid_geometry_definitions_are_rejected() { + let mut bad_box = custom_block("example:bad_box"); + bad_box["collision"][0]["max"] = json!([4, 1, 1]); + let mut reversed = custom_block("example:reversed"); + reversed["render"][0]["max"] = json!([0, 0, 0]); + let mut oversized = custom_block("example:many_boxes"); + oversized["render"] = json!(vec![json!({"min":[0,0,0],"max":[1,1,1]}); 65]); + let mut opacity = custom_block("example:bad_opacity"); + opacity["opacity"] = json!(2); + let invalid_sets = vec![ + vec![ + custom_block("example:duplicate"), + custom_block("example:duplicate"), + ], + vec![custom_block("minecraft:stone")], + vec![bad_box], + vec![reversed], + vec![oversized], + vec![opacity], + vec![custom_block("example:bad,state")], + vec![custom_block(":empty")], + ]; + let catalog = shacraft_content::Catalog::load_builtin().unwrap(); + for blocks in invalid_sets { + let (_root, packages) = package_fixture(blocks); + let module = JumpModule::load(&packages).unwrap(); + assert!(module.extend_catalog(&mut catalog.clone()).is_err()); + } + } + #[test] + fn changed_definition_or_module_fails_hash_verification_before_loading() { + for path in ["common/definitions.json", "server/spring.wasm"] { + let (root, packages) = package_fixture(vec![custom_block("example:spring")]); + let file = root.path().join("custom").join(path); + let mut bytes = std::fs::read(&file).unwrap(); + let last = bytes.len() - 1; + bytes[last] ^= 1; + std::fs::write(&file, bytes).unwrap(); + assert!( + JumpModule::load(&packages).is_err(), + "changed {path} accepted after verified package load" + ); + assert!(shacraft_content::load_packages(root.path()).is_err()); + } + } +} diff --git a/crates/shacraft-server/src/render.rs b/crates/shacraft-server/src/render.rs new file mode 100644 index 0000000..98899e7 --- /dev/null +++ b/crates/shacraft-server/src/render.rs @@ -0,0 +1,100 @@ +use anyhow::{Result, ensure}; +use shacraft_core::Pos; +pub fn capture(min: Pos, max: Pos, mut cells: Vec<(Pos, [u8; 3])>) -> Result> { + ensure!((0..3).all(|i| max[i] >= min[i]), "invalid capture bounds"); + let size = 512usize; + let mut image = vec![0u8; size * size * 3]; + for pixel in image.chunks_exact_mut(3) { + pixel.copy_from_slice(&[24, 36, 48]); + } + let span = (max[0] - min[0] + max[2] - min[2] + 2) as f32; + let vertical = ((max[1] - min[1] + 1) as f32 + span * 0.25).max(1.); + let scale = (460. / span.max(1.)).min(440. / vertical).clamp(0.1, 24.); + cells.sort_by_key(|(p, _)| (p[0] + p[2], p[1])); + for (p, c) in cells { + let x = (p[0] - min[0]) as f32; + let y = (p[1] - min[1]) as f32; + let z = (p[2] - min[2]) as f32; + let cx = 256. + (x - z - (max[0] - min[0] - max[2] + min[2]) as f32 * 0.5) * scale; + let cy = 470. - (y + 1.) * scale - (span * 0.5 - x - z) * scale * 0.5; + let top = [ + [cx, cy - scale * 0.5], + [cx + scale, cy], + [cx, cy + scale * 0.5], + [cx - scale, cy], + ]; + polygon(&mut image, size, top, c); + polygon( + &mut image, + size, + [ + [cx - scale, cy], + [cx, cy + scale * 0.5], + [cx, cy + scale * 1.5], + [cx - scale, cy + scale], + ], + c.map(|v| (v as f32 * 0.64) as u8), + ); + polygon( + &mut image, + size, + [ + [cx, cy + scale * 0.5], + [cx + scale, cy], + [cx + scale, cy + scale], + [cx, cy + scale * 1.5], + ], + c.map(|v| (v as f32 * 0.82) as u8), + ); + } + let mut bytes = Vec::new(); + { + let mut encoder = png::Encoder::new(&mut bytes, size as u32, size as u32); + encoder.set_color(png::ColorType::Rgb); + encoder.set_depth(png::BitDepth::Eight); + encoder.write_header()?.write_image_data(&image)?; + } + Ok(bytes) +} +fn polygon(img: &mut [u8], size: usize, p: [[f32; 2]; 4], color: [u8; 3]) { + let minx = p + .iter() + .map(|p| p[0]) + .fold(f32::INFINITY, f32::min) + .floor() + .max(0.) as usize; + let maxx = p + .iter() + .map(|p| p[0]) + .fold(f32::NEG_INFINITY, f32::max) + .ceil() + .clamp(0., size as f32 - 1.) as usize; + let miny = p + .iter() + .map(|p| p[1]) + .fold(f32::INFINITY, f32::min) + .floor() + .max(0.) as usize; + let maxy = p + .iter() + .map(|p| p[1]) + .fold(f32::NEG_INFINITY, f32::max) + .ceil() + .clamp(0., size as f32 - 1.) as usize; + for y in miny..=maxy { + for x in minx..=maxx { + let mut signs = [false; 4]; + for i in 0..4 { + let a = p[i]; + let b = p[(i + 1) % 4]; + signs[i] = (b[0] - a[0]) * (y as f32 + 0.5 - a[1]) + - (b[1] - a[1]) * (x as f32 + 0.5 - a[0]) + >= 0.; + } + if signs.iter().all(|s| *s) || signs.iter().all(|s| !*s) { + let i = (y * size + x) * 3; + img[i..i + 3].copy_from_slice(&color); + } + } + } +} diff --git a/crates/shacraft-server/src/tests.rs b/crates/shacraft-server/src/tests.rs new file mode 100644 index 0000000..1c303b1 --- /dev/null +++ b/crates/shacraft-server/src/tests.rs @@ -0,0 +1,554 @@ +//! Stateful acceptance tests for authority, durability, and bounded client queues. +//! Included as a child module of game.rs so tests exercise the real game actor. +use super::*; +use std::sync::OnceLock; +use tempfile::TempDir; + +type Inbox = tmpsc::Receiver>; +struct TestClient { + id: String, + inbox: Inbox, + bytes: Arc, +} +impl TestClient { + fn drain(&mut self) -> Vec { + let mut messages = Vec::new(); + while let Ok(message) = self.inbox.try_recv() { + self.bytes.fetch_sub(message.len(), Ordering::Relaxed); + messages.push(serde_json::from_str(&message).unwrap()); + } + messages + } +} +fn open_game(path: &Path) -> Game { + let packages = shacraft_content::load_packages( + Path::new(env!("CARGO_MANIFEST_DIR")).join("../../packages"), + ) + .unwrap(); + let manifest = crate::packages::manifest(&packages); + let jump = crate::packages::JumpModule::load(&packages).unwrap(); + Game::open(path, 16, manifest, jump).unwrap() +} +fn fixture() -> (TempDir, Game) { + // Do expensive full-catalog initial registration once. Copy closed durable + // databases into isolated directories; do not share a live WorldStore writer. + static SEED: OnceLock = OnceLock::new(); + let seed = SEED.get_or_init(|| { + let dir = tempfile::tempdir().unwrap(); + let mut game = open_game(dir.path()); + game.store.flush().unwrap(); + drop(game); + dir + }); + let dir = tempfile::tempdir().unwrap(); + for entry in std::fs::read_dir(seed.path()).unwrap() { + let path = entry.unwrap().path(); + if path.is_file() && path.extension().is_some_and(|s| s == "sqlite3") { + std::fs::copy(&path, dir.path().join(path.file_name().unwrap())).unwrap(); + } + } + let game = open_game(dir.path()); + (dir, game) +} +fn connect(game: &mut Game, world: &str, name: &str) -> TestClient { + let (tx, inbox) = tmpsc::channel(16); + let bytes = Arc::new(AtomicUsize::new(0)); + let p = json!({"type":"join","protocol":1,"name":name,"world":world,"manifest_hash":game.manifest["hash"]}); + let id = game + .join( + p, + Outbox { + tx, + bytes: bytes.clone(), + }, + ) + .unwrap(); + TestClient { id, inbox, bytes } +} +fn ticks(game: &mut Game, clients: &mut [&mut TestClient], count: usize) { + for _ in 0..count { + game.step(); + for client in clients.iter_mut() { + client.drain(); + } + } +} +fn edit(game: &mut Game, world: &str, changes: Vec) { + let revision = game.store.revision(world).unwrap(); + game.store + .edit(world, revision, &Uuid::new_v4().to_string(), changes) + .unwrap(); +} +fn entity_spawn(game: &mut Game, kind: &str) -> Result { + game.query("entity.spawn",json!({"world":"lobby","kind":kind,"position":[2.,1.,2.],"properties":{"custom_name":"Saved animal","nbt":{"test:unrecognized":{"type":"long","value":"9223372036854775807"}}},"expected_revision":game.meta.revision,"operation_id":Uuid::new_v4().to_string()})) +} + +#[test] +fn official_collision_shapes_drive_world_physics() { + let (_dir, mut game) = fixture(); + game.store.create_world("collision", None).unwrap(); + let states = [ + "minecraft:stone", + "minecraft:oak_slab[type=bottom,waterlogged=false]", + "minecraft:oak_fence", + "minecraft:water", + ]; + let changes = states + .into_iter() + .enumerate() + .map(|(i, s)| BlockChange { + pos: [i as i32 * 3, 0, 0], + block: game.id(s).unwrap(), + }) + .collect(); + edit(&mut game, "collision", changes); + assert!(!game.collision("collision", [0.5, 1., 0.5])); + assert!(game.collision("collision", [0.5, 0.9, 0.5])); + assert!(!game.collision("collision", [3.5, 0.5, 0.5])); + assert!(game.collision("collision", [3.5, 0.49, 0.5])); + assert!(game.collision("collision", [6.5, 1.2, 0.5])); + assert!(!game.collision("collision", [6.5, 1.5, 0.5])); + assert!(!game.collision("collision", [9.5, 0., 0.5])); +} + +#[test] +fn authoritative_actions_reject_forged_targets_and_sync_real_edits() { + let (_dir, mut game) = fixture(); + let mut a = connect(&mut game, "lobby", "Builder"); + let mut b = connect(&mut game, "lobby", "Observer"); + a.drain(); + b.drain(); + let player = game.players.get_mut(&a.id).unwrap(); + player.position = [0.5, 1., 8.5]; + player.input.pitch = -1.2; + let before = game.store.revision("lobby").unwrap(); + assert!( + game.client(&a.id, json!({"type":"break","pos":[20,0,20]})) + .is_err() + ); + assert_eq!(game.store.revision("lobby").unwrap(), before); + let (hit, normal) = game.raycast(&a.id).unwrap().expect("ground in reach"); + let place: Pos = std::array::from_fn(|i| hit[i] + normal[i]); + assert!( + game.client(&a.id, json!({"type":"place","pos":place,"block":u64::MAX})) + .is_err() + ); + assert_eq!(game.store.revision("lobby").unwrap(), before); + game.client(&a.id, json!({"type":"break","pos":hit})) + .unwrap(); + assert_eq!(game.store.get_block("lobby", hit).unwrap(), 0); + let messages = b.drain(); + let delta = messages + .iter() + .find(|m| m["type"] == "blocks") + .expect("observer must receive edit"); + assert_eq!(delta["revision"], before + 1); + assert_eq!(delta["changes"][0]["pos"], json!(hit)); + assert!( + game.client( + &a.id, + json!({"type":"input","seq":1,"yaw":0,"pitch":0,"forward":1000,"strafe":0,"jump":false}) + ) + .is_err() + ); +} + +#[test] +fn trampoline_executes_wasm_despite_small_contact_gap() { + let (_dir, mut game) = fixture(); + game.store.create_world("spring", None).unwrap(); + let spring = game.id("shacraft:trampoline").unwrap(); + edit( + &mut game, + "spring", + vec![BlockChange { + pos: [0, 0, 0], + block: spring, + }], + ); + let mut client = connect(&mut game, "spring", "Jumper"); + client.drain(); + let p = game.players.get_mut(&client.id).unwrap(); + p.position = [0.5, 1.075, 0.5]; + p.grounded = true; + p.velocity = 0.; + p.input.jump = true; + p.last_input = Instant::now(); + let before = game.jump.metrics()["calls"].as_u64().unwrap(); + game.step(); + client.drain(); + assert_eq!( + game.jump.metrics()["calls"].as_u64().unwrap(), + before + 1, + "grounded spring contact must invoke module" + ); + assert!( + game.players[&client.id].position[1] > 1.45, + "WASM impulse must affect authoritative position" + ); +} + +#[test] +fn eliminated_spleef_players_cannot_reenter_and_late_joins_spectate() { + let (_dir, mut game) = fixture(); + let mut a = connect(&mut game, "arena_1", "A"); + let mut b = connect(&mut game, "arena_1", "B"); + let mut c = connect(&mut game, "arena_1", "C"); + a.drain(); + b.drain(); + c.drain(); + game.start_match("arena_1").unwrap(); + ticks(&mut game, &mut [&mut a, &mut b, &mut c], 60); + assert_eq!(game.match_json("arena_1")["phase"], "active"); + game.players.get_mut(&a.id).unwrap().position[1] = -7.; + ticks(&mut game, &mut [&mut a, &mut b, &mut c], 1); + assert!(!game.players[&a.id].alive); + assert_eq!(game.match_json("arena_1")["phase"], "active"); + game.players.get_mut(&a.id).unwrap().last_snapshot = Instant::now() - Duration::from_secs(5); + game.client(&a.id, json!({"type":"switch_world","world":"lobby"})) + .unwrap(); + a.drain(); + game.players.get_mut(&a.id).unwrap().last_snapshot = Instant::now() - Duration::from_secs(5); + let result = game.client(&a.id, json!({"type":"switch_world","world":"arena_1"})); + if result.is_ok() { + assert!( + !game.players[&a.id].alive, + "eliminated participant became alive by switching worlds" + ); + } + let mut late = connect(&mut game, "arena_1", "Late"); + let welcome = late.drain(); + assert_eq!( + welcome[0]["revision"], + game.store.revision("arena_1").unwrap() + ); + assert!( + !game.players[&late.id].alive, + "mid-round joins must be spectators" + ); + assert!( + game.client(&late.id, json!({"type":"break","pos":[0,0,0]})) + .is_err() + ); +} + +#[test] +fn entities_are_durable_and_failed_commits_do_not_publish_changes() { + let (dir, mut game) = fixture(); + let spawned = entity_spawn(&mut game, "minecraft:cow").unwrap(); + let entity = spawned["entity"].clone(); + let id = entity["id"].as_str().unwrap().to_owned(); + let revision = game.meta.revision; + drop(game); + let mut game = open_game(dir.path()); + assert_eq!(game.meta.entities.get(&id), Some(&entity)); + assert!(game.meta.revision >= revision); + let before = game.meta.entities.clone(); + let revision = game.meta.revision; + game.db.execute_batch("PRAGMA query_only=ON;").unwrap(); + assert!(entity_spawn(&mut game, "minecraft:pig").is_err()); + assert_eq!( + game.meta.entities, before, + "failed persistent mutation leaked into visible RAM state" + ); + assert_eq!( + game.meta.revision, revision, + "failed persistent mutation advanced public revision" + ); + game.db.execute_batch("PRAGMA query_only=OFF;").unwrap(); +} + +#[test] +fn restart_recovers_arena_configuration_and_cleans_interrupted_round() { + let (dir, mut game) = fixture(); + let mut a = connect(&mut game, "arena_1", "A"); + let mut b = connect(&mut game, "arena_1", "B"); + a.drain(); + b.drain(); + game.query("arena.configure",json!({"world":"arena_1","spawn":[3.,2.,5.],"expected_revision":game.meta.revision,"operation_id":Uuid::new_v4().to_string()})).unwrap(); + game.start_match("arena_1").unwrap(); + edit( + &mut game, + "arena_1", + vec![BlockChange { + pos: [0, 0, 0], + block: 0, + }], + ); + let dirty_revision = game.store.revision("arena_1").unwrap(); + drop(game); + let mut reopened = open_game(dir.path()); + assert_eq!(reopened.config("arena_1").spawn, [3., 2., 5.]); + assert_eq!(reopened.match_json("arena_1")["phase"], "waiting"); + assert_eq!( + reopened.store.get_block("arena_1", [0, 0, 0]).unwrap(), + reopened.id("minecraft:snow_block").unwrap(), + "interrupted round left a damaged waiting arena" + ); + assert!(reopened.store.revision("arena_1").unwrap() > dirty_revision); + assert_eq!( + reopened.store.get_block("arena_2", [0, 0, 0]).unwrap(), + reopened.id("minecraft:snow_block").unwrap() + ); +} + +#[test] +fn snapshots_carry_revision_and_slow_consumers_are_disconnected() { + let (_dir, mut game) = fixture(); + let mut client = connect(&mut game, "lobby", "Slow"); + let welcome = client.drain(); + assert_eq!(welcome[0]["type"], "welcome"); + assert_eq!( + welcome[0]["revision"], + game.store.revision("lobby").unwrap() + ); + assert!( + welcome[0]["materials"] + .as_array() + .unwrap() + .iter() + .all(|m| m["id"].is_u64()) + ); + for _ in 0..20 { + game.step(); + } + assert!( + !game.players.contains_key(&client.id), + "full bounded outbox must evict slow player" + ); + assert_eq!(game.slow_clients, 1); + assert!(client.bytes.load(Ordering::Relaxed) <= 8 * 1024 * 1024); +} + +#[test] +fn outbox_has_byte_and_message_limits() { + let (tx, _rx) = tmpsc::channel(16); + let bytes = Arc::new(AtomicUsize::new(0)); + let out = Outbox { + tx, + bytes: bytes.clone(), + }; + assert!(!out.send_shared(Arc::new("x".repeat(8 * 1024 * 1024 + 1)))); + assert_eq!(bytes.load(Ordering::Relaxed), 0); + for _ in 0..16 { + assert!(out.send(json!({"a":1}))); + } + let before = bytes.load(Ordering::Relaxed); + assert!(!out.send(json!({"a":2}))); + assert_eq!(bytes.load(Ordering::Relaxed), before); +} + +#[test] +fn legacy_world_configuration_gets_safe_spleef_defaults() { + let conf: WorldConfig = + serde_json::from_value(json!({"spawn":[1,2,3],"mode":"spleef"})).unwrap(); + assert_eq!(conf.spawn, [1., 2., 3.]); + assert_eq!(conf.countdown_seconds, 3); + assert_eq!(conf.round_seconds, 180); + assert_eq!(conf.min_players, 2); + assert_eq!(conf.elimination_y, -6.); + assert!(conf.spawn_points.is_empty()); + assert_eq!(conf.spectator_spawn, [13., 2., 0.]); + assert_eq!(conf.floor_block, "minecraft:snow_block"); +} + +#[test] +fn arena_configuration_validates_before_mutation() { + let (_dir, mut game) = fixture(); + let before = serde_json::to_value(&game.meta).unwrap(); + for (key, value) in [ + ("countdown_seconds", json!(0)), + ("countdown_seconds", json!(31)), + ("round_seconds", json!(0)), + ("round_seconds", json!(3601)), + ("min_players", json!(1)), + ("min_players", json!(33)), + ("spawn", json!([32701, 2, 0])), + ("spectator_spawn", json!([0, -7, 0])), + ("elimination_y", json!(5)), + ("floor_block", json!("minecraft:water")), + ("floor_block", json!("unknown:missing")), + ("spawn_points", json!([[0, 2, 0]])), + ("spawn_points", json!([[0, 2, 0], [0, 2, 0]])), + ("spawn_points", json!([[0, 2, 0], [1, 2, 0], [32701, 2, 0]])), + ("spawn_points", json!(vec![[0, 2, 0]; 33])), + ("min_players", Value::Null), + ] { + let mut params = json!({"world":"arena_1"}); + params[key] = value; + assert!( + game.query("arena.configure", params).is_err(), + "accepted invalid {key}" + ); + assert_eq!( + serde_json::to_value(&game.meta).unwrap(), + before, + "failed {key} changed persistent metadata" + ); + } + assert!(entity_position(&json!([32701, 1, 0])).is_err()); +} + +#[test] +fn configured_spleef_rules_control_full_round_and_survive_restart() { + let (dir, mut game) = fixture(); + game.store.create_world("stone_template", None).unwrap(); + let stone = game.id("minecraft:stone").unwrap(); + let mut cells = Vec::new(); + for x in -4..=4 { + for z in -4..=4 { + cells.push(BlockChange { + pos: [x, 0, z], + block: stone, + }); + } + } + edit(&mut game, "stone_template", cells); + game.query( + "world.create", + json!({"world":"stone_arena","template":"stone_template"}), + ) + .unwrap(); + let configured=game.query("arena.configure",json!({"world":"stone_arena","mode":"spleef","spawn":[0.5,2.,3.5],"countdown_seconds":1,"round_seconds":2,"min_players":3,"elimination_y":-2,"spawn_points":[[0.5,1.,2.5],[2.5,1.,2.5],[-2.5,1.,2.5]],"spectator_spawn":[13.,2.,4.],"floor_block":"minecraft:stone"})).unwrap(); + let mut a = connect(&mut game, "stone_arena", "A"); + let mut b = connect(&mut game, "stone_arena", "B"); + a.drain(); + b.drain(); + assert!(game.start_match("stone_arena").is_err()); + let mut c = connect(&mut game, "stone_arena", "C"); + c.drain(); + game.start_match("stone_arena").unwrap(); + let spawns: Vec<_> = game + .players + .values() + .filter(|p| p.world == "stone_arena") + .map(|p| p.position) + .collect(); + for point in [[0.5, 1., 2.5], [2.5, 1., 2.5], [-2.5, 1., 2.5]] { + assert!(spawns.contains(&point)); + } + assert_eq!(game.match_json("stone_arena")["remaining"], 1.); + assert!( + game.query( + "arena.configure", + json!({"world":"stone_arena","round_seconds":60}) + ) + .is_err() + ); + ticks(&mut game, &mut [&mut a, &mut b, &mut c], 20); + assert_eq!(game.match_json("stone_arena")["phase"], "active"); + assert_eq!(game.match_json("stone_arena")["remaining"], 2.); + let player = game.players.get_mut(&a.id).unwrap(); + player.position = [0.5, 1., 2.5]; + player.input.pitch = -1.2; + player.last_input = Instant::now(); + let (hit, _) = game.raycast(&a.id).unwrap().unwrap(); + assert_eq!(game.store.get_block("stone_arena", hit).unwrap(), stone); + game.client(&a.id, json!({"type":"break","pos":hit})) + .unwrap(); + assert_eq!(game.store.get_block("stone_arena", hit).unwrap(), 0); + a.drain(); + b.drain(); + c.drain(); + game.players.get_mut(&a.id).unwrap().position[1] = -3.; + ticks(&mut game, &mut [&mut a, &mut b, &mut c], 1); + assert!(!game.players[&a.id].alive); + assert_eq!(game.players[&a.id].position, [13., 2., 4.]); + let mut late = connect(&mut game, "stone_arena", "Late"); + late.drain(); + assert_eq!(game.players[&late.id].position, [13., 2., 4.]); + assert!(!game.players[&late.id].alive); + game.tick = game.matches["stone_arena"].deadline - 1; + ticks(&mut game, &mut [&mut a, &mut b, &mut c, &mut late], 1); + assert_eq!(game.match_json("stone_arena")["phase"], "finished"); + assert_eq!(game.match_json("stone_arena")["winner"], Value::Null); + game.tick = game.matches["stone_arena"].deadline - 1; + ticks(&mut game, &mut [&mut a, &mut b, &mut c, &mut late], 1); + assert_eq!(game.match_json("stone_arena")["phase"], "waiting"); + assert_eq!(game.store.get_block("stone_arena", hit).unwrap(), stone); + assert_eq!(game.players[&a.id].position, [0.5, 2., 3.5]); + assert!(!game.meta.active_matches.contains("stone_arena")); + drop(game); + let mut reopened = open_game(dir.path()); + assert_eq!( + serde_json::to_value(reopened.config("stone_arena")).unwrap(), + configured + ); + assert_eq!( + reopened.store.get_block("stone_template", hit).unwrap(), + stone + ); +} + +#[test] +fn gallery_contains_every_default_state_over_a_bounded_floor() { + let (_dir, mut game) = fixture(); + assert_eq!(game.config("gallery").mode, "creative"); + let samples = game.catalog.sampler(); + assert!(samples.len() >= 1197); + for sample in samples { + assert_eq!( + game.store.get_block("gallery", sample.position).unwrap(), + game.id(&sample.state).unwrap(), + "{} sample missing", + sample.state + ); + assert_ne!( + game.store + .get_block("gallery", [sample.position[0], 0, sample.position[2]]) + .unwrap(), + 0 + ); + } + assert_eq!(game.store.get_block("gallery", [64, 0, 0]).unwrap(), 0); + assert_ne!(game.store.get_block("gallery", [-64, 0, -64]).unwrap(), 0); +} + +#[test] +fn material_payloads_are_bounded_and_runtime_id_lookup_works_without_registry_dump() { + let (_dir, mut game) = fixture(); + let cells = game + .store + .registry() + .iter() + .enumerate() + .map(|(id, _)| BlockChange { + pos: [0, 0, 0], + block: id as u32, + }) + .collect::>(); + let materials = game.materials(&cells); + assert!(materials.len() <= 256); + assert!(serde_json::to_vec(&materials).unwrap().len() <= 129 * 1024); + let stone = game.id("minecraft:stone").unwrap(); + let result = game + .query( + "catalog.search", + json!({"ids":stone.to_string(),"limit":128}), + ) + .unwrap(); + assert_eq!(result["items"].as_array().unwrap().len(), 1); + assert_eq!(result["items"][0]["state"], "minecraft:stone"); +} +#[test] +fn interrupted_creation_of_managed_world_can_finish_its_seed() { + let (_dir, mut game) = fixture(); + // Simulate an interrupted bootstrap after the core committed create_world, + // before its first seed edit. Only reserved demonstration worlds are rebuilt. + let scratch = tempfile::tempdir().unwrap(); + game.store = WorldStore::open(scratch.path(), 8).unwrap(); + for state in &game.catalog.states { + game.store.register_block(&state.state).unwrap(); + } + game.store.create_world("lobby", None).unwrap(); + game.ids = game + .store + .registry() + .iter() + .enumerate() + .map(|(id, s)| (s.clone(), id as u32)) + .collect(); + game.seed().unwrap(); + assert_eq!(game.store.revision("lobby").unwrap(), 1); + assert_ne!(game.store.get_block("lobby", [0, 0, 0]).unwrap(), 0); +} diff --git a/docs/ACCEPTANCE.md b/docs/ACCEPTANCE.md index fa4c40f..6c34c00 100644 --- a/docs/ACCEPTANCE.md +++ b/docs/ACCEPTANCE.md @@ -1,6 +1,6 @@ # Приёмка Shacraft Core -Статус: план проверок; фактические результаты первого этапа находятся в `STATUS.md` и `VERIFICATION.md`. Рубежи A и B целиком ещё не пройдены. Основа — исходный запрос пользователя и текущий `docs/CONTRACT.md`. Последний описывает первый рабочий протокол, но пока не покрывает весь согласованный MVP. +Статус: критерии для локального MVP. Реализованные сценарии и доказательства перечислены в STATUS и VERIFICATION. Этот документ сохраняет исходный план приёмки; ограничения более широких стресс-тестов и совместимости не скрываются общим флагом готовности. Shacraft Core — самостоятельный открытый движок на Rust. Shacraft-сервер и Spleef проверяют его пригодность на практике. Экономия серверной RAM — основное архитектурное требование. Полный базовый каталог Minecraft 26.2 означает контент, состояния и формы, а не требование воспроизвести архитектуру Minecraft или весь ванильный игровой процесс. diff --git a/docs/CLIENT.md b/docs/CLIENT.md new file mode 100644 index 0000000..11d330c --- /dev/null +++ b/docs/CLIENT.md @@ -0,0 +1,33 @@ +# Браузерный клиент MVP + +Клиент находится в `client/` и раздаётся `shacraft-server` по `/`. Сборщик, npm-зависимости и готовый игровой движок не нужны: это ES-модули и собственный WebGL2-рендерер. Откройте `http://127.0.0.1:4000` после запуска сервера. Поддерживаются современные настольные браузеры с WebGL2; `localhost` или HTTPS необходим для `crypto.subtle` и проверки пакетов. + +## Управление + +- Нажмите на мир, чтобы захватить мышь. Если браузер запрещает захват, удерживайте кнопку и перетаскивайте для обзора. +- WASD или стрелки — движение; пробел — прыжок. Направление определяется камерой, +Y вверх, yaw 0 смотрит вдоль −Z. Позиция игрока задаёт ступни. +- ЛКМ — убрать выбранный блок, ПКМ — поставить блок на выбранной грани, средняя кнопка — взять выбранный материал в текущую ячейку. +- 1–9 или колесо мыши — ячейка панели. E — библиотека всех состояний; поиск использует английские Minecraft-идентификаторы. Выбор заменяет текущую ячейку. +- T или Enter — чат, Enter отправляет, Esc закрывает. +- Кнопка имени мира открывает выбор экземпляра. F3 открывает диагностику. Меню содержит имя игрока, возвращение к точке появления и запуск Spleef. +- Esc освобождает мышь; отпускание фокуса и открытие панели отправляют нулевой ввод, чтобы игрок не продолжал движение. + +## Рендер и синхронизация + +Геометрия строится по локальным box-формам материалов. Сетки разбиты на секции 16³; общие грани полных непрозрачных кубов отбрасываются. Изменение блока пересобирает его секцию и смежные секции. Шейдер использует направленный свет, туман, пиксельную фактуру и авторскую текстуру из проверенного пакета. Небо и солнце также рисуются WebGL. Прозрачные материалы рисуются отдельным проходом с сортировкой секций по расстоянию (внутри секции порядок прозрачных поверхностей упрощён). Пакет с декларативным стилем `effect: bounce` (включая trampoline и пользовательские блоки) подключает текстуру, проверенную GLSL-функцию подсветки и авторский звук; отклик привязан к полученному от сервера подъёму игрока. Формы сущностей берутся из каталога; игроки имеют отдельные составные аватары. Это собственное упрощённое визуальное представление, а не точное воспроизведение Minecraft. + +Клиент отправляет ввод максимум 20 раз в секунду, не объявляет собственную позицию и не изменяет блоки оптимистически. Сервер рассчитывает движение, столкновения и правки, а клиент сглаживает полученные позиции между кадрами. Это добавляет небольшую задержку движения, зато визуальное положение следует авторитетной симуляции. Камера реагирует на мышь локально. + +`welcome` и `snapshot` полностью заменяют видимую геометрию. Полный `registry` необязателен: снимок содержит не больше 256 описаний используемых материалов, остальные формы клиент постепенно запрашивает через `/api/catalog?ids=...&limit=128`. Каждый ответ достраивает только затронутые секции; до получения формы отображается нейтральный куб. События `blocks` применяются только по порядку ревизий; данные за пределами последнего окна 64×40×64 отбрасываются, сохраняя продвижение ревизии. Пропуск запрашивает `resync`; старые ревизии игнорируются. При потере соединения клиент переподключается с задержкой 1, 2, 4, 8, 16, затем 20 секунд. Ошибки подключения, несовместимого протокола, ресурсов и отказанные сервером действия выводятся пользователю. + +## Пакеты + +До WebSocket-входа клиент получает `/api/manifest`, загружает объявленные клиентские файлы с того же сервера, проверяет их размер и SHA-256 и сохраняет содержимое в CacheStorage по хешу. Кэшированные файлы повторно проверяются. Отказ кэша не отменяет проверку целостности. При несовпадении хеша файл удаляется из кэша, вход не выполняется. Максимум одного файла — 64 МиБ, набора за загрузку — 128 МиБ, кэш — 512 последних записей. Это ограничения проверяемого содержимого; браузерные сетевые буферы и декодирование изображений также используют память. + +Токен Control API клиенту не передаётся. В браузере не выполняется произвольный привилегированный JavaScript из пакетов. Проверка клиентом хешей означает совместимость ресурсов и не доказывает неизменность самого клиента на устройстве игрока. + +## Отладка и проверки + +F3 показывает настоящие значения: мир, ревизию, число видимых блоков и сущностей, игроков, WebGL, FPS, треугольники, тик, подтверждённый ввод, координаты, пакеты и доступные серверные метрики. На `#world-canvas` есть `data-world`, `data-revision`, `data-blocks`, `data-entities`, `data-webgl`, `data-connected`; они обновляются раз в секунду для автоматизированной браузерной проверки. Секреты и управляющие команды через DOM не выставляются. + +Проверки чистой математики: `cd client && npm test`. Проверяются оси камеры и проекция, отрицательные координаты, ближайшая грань, ограничения дальности и точное попадание в неполные формы. Визуальная и сквозная проверка выполняется с настоящим сервером отдельно от этих unit-тестов. diff --git a/docs/COMPATIBILITY.md b/docs/COMPATIBILITY.md index 94742d4..8ff2b93 100644 --- a/docs/COMPATIBILITY.md +++ b/docs/COMPATIBILITY.md @@ -1,104 +1,30 @@ # Совместимость с Minecraft Java 26.2 -Дата проверки источников: 14 сентября 2026 года. Это план и критерии приёмки; наличие этого документа не означает, что конвертер или полный каталог уже реализованы. +Проверено 14 сентября 2026 года. Реализованы полный каталог целевой версии и двусторонний конвертер с явно определённым профилем точности. Подробные контракты и команды: [CONTENT](CONTENT.md), [interop](interop.md), [SERVER](SERVER.md). -## Цель и границы +## Источник -Shacraft остаётся самостоятельным движком на Rust. Совместимость означает полный каталог идентификаторов блоков, их допустимых состояний и типов сущностей целевой версии, отдельное покрытие форм, а также обмен пользовательскими мирами и постройками с сохранением исходных данных. Совпадение всей симуляции Minecraft — редстоуна, генератора мира, поведения мобов, жидкостей и команд — требует собственных модулей и не следует автоматически из наличия каталога. +Mojang выпустила [Java 26.2](https://www.minecraft.net/en-us/article/minecraft-java-edition-26-2) 16 июня 2026 года. [Официальный launcher manifest](https://piston-meta.mojang.com/mc/game/version_manifest_v2.json) указал точные [метаданные версии](https://piston-meta.mojang.com/v1/packages/bc42e43dfe43d65a2f6c2c1dbb322c75134e51fe/26.2.json): -Целевая версия действительно существует: Mojang выпустила Java 26.2 16 июня 2026 года. В ней добавлены, среди прочего, sulfur/cinnabar и sulfur cube; поэтому каталог более ранней версии нельзя выдавать за 26.2. [Официальный релиз](https://www.minecraft.net/en-us/article/minecraft-java-edition-26-2). +- Server JAR: `823e2250d24b3ddac457a60c92a6a941943fcd6a`, 60 894 273 байта; Java major 25. +- DataVersion, извлечённый из целевой версии: **4903**. +- Отчёты и публичный API подтвердили **1 196 блоков**, **32 366 состояний**, **158 сущностей**. +- Все состояния сопоставляются по канонической строке и множеству свойств, не только по общему количеству. -Первый рабочий срез может иметь небольшой демонстрационный каталог, однако в интерфейсе, README и отчётах он должен называться именно демонстрационным. Требование полного каталога остаётся незакрытым до проверки против зафиксированного источника. +`scripts/catalog_generate.py` проверяет артефакт, извлекает отчёты и измеряет коллизии. Повторное извлечение дало побайтно одинаковые сжатые каталоги. JAR остаётся в игнорируемом кэше; исходный код, текстуры, модели и звуки Minecraft в дистрибутив не включаются. -## Зафиксированный источник данных +## Что означает поддержка -При проверке [официального launcher manifest](https://piston-meta.mojang.com/mc/game/version_manifest_v2.json) получена запись `id=26.2`, `type=release`, `releaseTime=2026-06-16T12:03:33+00:00`. Она ссылается на [метаданные версии](https://piston-meta.mojang.com/v1/packages/bc42e43dfe43d65a2f6c2c1dbb322c75134e51fe/26.2.json): +`identity`, `render`, `collision` и `behavior` — отдельные поля. Все ванильные состояния известны; 179 контекстных состояний явно помечены `approximate-context`. Остальные коллизии измерены при воздушных соседях и пустом контексте сущности. Это не обещает контекстную эквивалентность во всех ситуациях. Визуальные модели авторские процедурные, а не ванильные. Невидимые служебные блоки намеренно не получают видимую геометрию. -- SHA-1 JSON метаданных: `bc42e43dfe43d65a2f6c2c1dbb322c75134e51fe`. -- Java runtime: major version `25`. -- [Официальный server.jar](https://piston-data.mojang.com/v1/objects/823e2250d24b3ddac457a60c92a6a941943fcd6a/server.jar): размер `60894273` байта, SHA-1 `823e2250d24b3ddac457a60c92a6a941943fcd6a`. +158 типов сущностей имеют измеренные размеры, сохраняемые экземпляры и собственные формы. Полноценная AI, redstone, инвентари, генератор и симуляция жидкостей не реализованы. Неизвестные импортированные состояния сохраняются в реестре и видимы как отмеченная заглушка; они не подменяются воздухом в данных. -SHA-1 здесь фиксирует артефакт по метаданным Mojang. Наш файл происхождения дополнительно должен содержать вычисленный SHA-256, дату, команду извлечения, Java version и хеш каждого итогового отчёта. +Числовой runtime BlockId Shacraft не равен Minecraft state ID. Конвертер сопоставляет канонические строки; одинаковые названия в независимых WorldStore могут иметь разные внутренние номера. -План получения каталога: +## Проверенный обмен -1. Скачать этот JAR в локальный игнорируемый кэш, проверить размер и хеш. Не включать его в репозиторий и дистрибутив Shacraft. -2. Проверить доступную точку входа и `--help` генератора данных именно этого артефакта, затем получить отчёты блоков и реестров. Команда для старых версий не считается проверенной командой для 26.2. Сам факт существования `blocks.json` в генераторе подтверждён Mojang; его структура меняется, что видно уже в [изменениях 26.3 Snapshot 2](https://www.minecraft.net/en-us/article/minecraft-26-3-snapshot-2). -3. Из отчёта блоков извлечь resource location, свойства, допустимые значения, все перечисленные состояния и состояние по умолчанию. Из реестров — типы сущностей, block entities, биомы и прочие необходимые для конвертации ключи. Если нужного поля нет в отчёте, пометить пробел и сделать отдельное воспроизводимое извлечение из исполняемого API целевой версии. -4. Получить `DataVersion` из целевого артефакта/мира, сохранить в манифесте. Номер ещё не извлечён в рамках этого исследования; не подменять его номером datapack/resource pack. -5. Хранить минимальный производный каталог и собственные правила адаптации. Текстуры, звуки, модели, шейдеры и декомпилированный код Minecraft в него не входят. Визуальные ресурсы Shacraft создаются отдельно либо подключаются из локальных ресурсов пользователя отдельным адаптером. +Anvil импортируется по одному chunk с типизированным NBT, включая измерения и непрозрачные дополнительные данные. Неизменённый `exact` возвращает сохранённый оригинал после проверки хешей. После правок `exact` консервативно отказывает. `best-effort` переносит изменения блоков и поддержанных свойств сущностей, инвалидирует зависимые данные и сохраняет неподдержанные данные с отчётом и исходником. -Полнота проверяется равенством множеств канонических состояний и типов сущностей с отчётами, а не ожидаемым числом из статьи или ручного списка. Количества блоков/состояний/сущностей появятся только после фактического извлечения. +Sponge `.schem` v3 поддерживается в обе стороны. Обмен между разными форматами не обещает преобразования всей семантики биомов/block entities: неперенесённые данные архивируются и отмечаются в отчёте. Старые версии, legacy `.schematic`, structure `.nbt` и полная миграция произвольных DataVersion не объявляются поддержанными. -## Контракт каталога и форм - -В `WorldStore` используется каноническая строка `namespace:block[key=value,...]`, где ключи свойств отсортированы. Числовой `BlockId` — внутренний идентификатор Shacraft; он не равен числовому идентификатору Minecraft и не переносится между независимыми реестрами без явной таблицы соответствия. `air` остаётся ID 0 по `CONTRACT.md`. - -Для совместимости необходимы разные признаки покрытия: - -- `identity`: идентификатор и все состояния известны и проверены. -- `render`: собственная геометрия отображает состояние; заглушка обозначена явно. -- `collision`: проверена форма столкновений для этого состояния и контекста. -- `behavior`: установлен модуль поведения, если он реализован. -- `roundtrip`: данные можно вернуть в конкретную версию и формат. - -Один флаг `supported` скрывал бы различия. Нельзя получать коллизию автоматически из текстур или из визуальной модели. Формы могут зависеть от соседей, сущности и состояния мира; лестницы, плиты, двери, заборы, стены, растения, жидкости и динамические блоки требуют раздельных тестов. Начать с собственных параметрических форм, затем сравнивать их с выборкой поведения целевой версии. Формы со сложным контекстом сохраняют статус `approximate` до проверки. - -Сущность может быть известна по идентификатору и полностью сохраняться для экспорта, даже если в Shacraft она пока отображается маркером и не имеет AI. В интерфейсе это должно быть видно. Неизвестный блок сохраняет исходную строку и NBT; отображение заглушкой не должно заменять его на `air` в хранилище. - -## Форматы и порядок поддержки - -**NBT — слой сериализации, а не единый формат мира.** Для Java нужен типизированный big-endian NBT. Типы чисел, массивов и списков необходимо сохранять: преобразование к обычному JSON теряет информацию для обратной записи. Это различие прямо показано в [API Prismarine NBT](https://github.com/PrismarineJS/prismarine-nbt), который можно использовать как независимый тестовый декодер, не как зависимость Rust runtime. - -**Sponge `.schem` v3 — первый полноценный адаптер построек.** Поддержать блоки и состояния, block entities, entities, 3D-биомы, размеры, offset, metadata и DataVersion. Спецификация предусматривает эти контейнеры и палитры; точный порядок байтов и кодирование брать из [первичной спецификации Sponge v3](https://github.com/SpongePowered/Schematic-Specification/blob/master/versions/schematic-3.md). Затем добавить v2 как отдельную ветку декодера. Старый MCEdit `.schematic` не считать тем же форматом и не распознавать по одному похожему расширению. - -**Vanilla structure `.nbt` — отдельный адаптер.** Нужно зафиксировать схему 26.2 на файлах, сохранённых structure block: размеры, палитра/альтернативные палитры, блоки, относительные координаты, block entity NBT и сущности. Сырой NBT-декодер не равен поддержке этой схемы. Неподдерживаемые альтернативные палитры нельзя молча свести к первой. - -**Anvil world directory — потоковый адаптер миров.** Обрабатывать `level.dat`, измерения, region-файлы, секции/палитры, биомы, block entities, отдельные файлы сущностей и POI, а также остальные файлы сохранения. Извлекать разделы по мере необходимости, с ограничением кэша, сохраняя оригинал на диске. Проверять chunk `DataVersion` наряду с версией мира. - -Существующая реализация [WorldEdit AnvilChunk18](https://github.com/EngineHub/WorldEdit/blob/dca10737fe81bd81bb6a096e1801cc2d94f1793b/worldedit-core/src/main/java/com/sk89q/worldedit/world/chunk/AnvilChunk18.java) подтверждает практическую работу с секционными палитрами `Name`/`Properties`; [McRegionReader](https://github.com/EngineHub/WorldEdit/blob/dca10737fe81bd81bb6a096e1801cc2d94f1793b/worldedit-core/src/main/java/com/sk89q/worldedit/world/storage/McRegionReader.java) полезен для проверки контейнера. Эти реализации — независимые ориентиры, не доказательство полного соответствия 26.2. Код не копировать в ядро без отдельного решения о лицензии. - -Нужно явно проверить варианты сжатия, внешние chunk payload и крупные chunks на целевых fixtures. Поддержкой одного zlib нельзя объявлять поддержку всех Anvil-файлов: возможность LZ4-сжатия регионов описана в [официальном релизе Java 1.20.5](https://www.minecraft.net/es-es/article/minecraft-java-edition-1-20-5). Неизвестное сжатие даёт диагностируемый отказ, а не пустой chunk. - -## Режимы экспорта и сохранение оригинала - -**`exact` — проверенная точность данных.** По умолчанию используется та же версия и тот же формат, что у источника. Исходные файлы помещаются в неизменяемое дисковое хранилище с хешами; изменения Shacraft хранятся отдельно. Нетронутые файлы копируются побайтно. В изменённых файлах переписываются только поддерживаемые данные; остальные типизированные NBT-поля сохраняются. Контракт точности — семантическое равенство NBT за исключением явных правок и заранее объявленных производных полей, а не одинаковое сжатие и размещение секторов. - -При неизвестной версии, некорректной палитре, неподдерживаемой операции, несовместимой сущности, неразрешённом преобразовании metadata или отсутствии необходимых исходных данных `exact` прекращает экспорт до публикации результата. Особенно проверять замену блока с block entity, инвентари, пассажиров и UUID, а также зависимости от света, heightmaps, POI и scheduled ticks. Нельзя оставить заведомо неверные производные данные и назвать экспорт точным. Правило пересчёта/инвалидации каждого такого поля должно быть проверено целевым Minecraft. - -**`best-effort` — преобразование с отчётом.** Разрешает только явно заданные правила замены. Формирует `conversion-report.json`: версия источника/назначения, формат, координата/UUID, код причины, исходное значение, действие, количество и тяжесть. Неизвестные данные остаются в сопровождающем архиве, однако это не означает, что целевой Minecraft сможет их использовать. Отчёт различает `preserved`, `approximated`, `dropped`, `unsupported`. - -Для мира, созданного в Shacraft без Minecraft-оригинала, экспорт в `.schem` доступен после проверки всех данных на представимость. Создание полноценного Anvil-мира потребует отдельного генератора корректного окружения сохранения; одной записи массива блоков в `.mca` недостаточно. - -Исходный мир никогда не редактируется конвертером на месте. Вывод готовится во временном каталоге и переименовывается после успешной проверки. Прерванный импорт можно возобновить по журналу chunks и хешам. Экспорт получает согласованный снимок мира; параллельные игровые правки не должны давать смесь ревизий. - -## Необходимые дополнения к текущему API - -`CONTRACT.md` покрывает блоки и ревизии. В нём пока нет durable API произвольного NBT, биомов, сущностей и provenance. До заявления о lossless-конвертации добавить версионируемый compatibility sidecar со ссылками на неизменяемые blobs, типизированными NBT и изменениями по chunk/UUID. Он должен участвовать в атомарной фиксации ревизии вместе с блоками. - -Не перегружать строковый реестр блоков всем NBT мира и не держать sidecar целиком в RAM. Экспортёр/импортёр — отдельная библиотека/CLI над ядром; Java используется для получения эталонных данных и интеграционной проверки, но не для работы Shacraft-сервера. - -## Приёмочные проверки - -1. **Каталог:** равенство множеств всех состояний/типов целевому отчёту, один default на блок, канонизация независимо от порядка properties, сохранение неизвестного namespace, стабильность таблицы ID после перезапуска. -2. **NBT:** все типы, пустые списки, 64-битные значения, массивы, Unicode, неизвестные поля. Проверка encode/decode независимым декодером; обычный JSON не выступает эталоном. -3. **Палитры:** один блок на всю секцию, границы размера палитры и битовой упаковки, секции из воздуха, отрицательные X/Z/Y, границы chunks/regions, отсутствующие данные и повреждённые индексы. -4. **Без правок:** Minecraft/WorldEdit fixture → Shacraft → исходный формат. Нетронутые файлы побайтно идентичны; пересобранные структуры семантически равны по типизированному NBT. Третий декодер подтверждает результат. -5. **С правками:** поменять одно состояние, сломать контейнер, поставить лестницу/дверь, переместить поддерживаемую сущность. После экспорта меняются только предусмотренные данные; metadata, прочие inventories/entities/biomes и неизвестные теги сохраняются либо дают точный отказ. -6. **Открытие:** отдельная копия экспортированного мира открывается целевым Java 26.2 без ошибок декодирования/утраты chunks; фиксируются хеш JAR, логи и проверяемые координаты. Одного собственного roundtrip недостаточно — одинаковая ошибка в reader/writer может остаться незамеченной. -7. **Версии/потери:** unsupported DataVersion, модифицированный namespace, отсутствующая модель, неподдерживаемое NBT и cross-format export проверяют отказ `exact` и полный отчёт `best-effort`. -8. **Ресурсы:** большие sparse-миры, высокоэнтропийные секции, большие payload, повреждённые длины и сильное сжатие. Ограничить распакованный размер, глубину NBT, очередь и кэш; измерить пик RAM. Прерывание/повтор импорта и сбой финальной записи не повреждают исходник и сохранённые ревизии. - -Fixtures должны быть собственными маленькими мирами/постройками без сторонних карт и ассетов. Для версии и сжатия, которых нет в fixtures и внешней проверке, не ставить статус `verified`. - -## Этапы и условия завершения - -1. **Происхождение:** зафиксированный источник 26.2, воспроизводимый генератор, DataVersion, хеши и точные количества; отсутствие этих результатов оставляет полный каталог незавершённым. -2. **Реестр:** все состояния и entity IDs загружаются в Shacraft, сохраняются и ищутся; формы и behavior имеют отдельную карту покрытия. -3. **NBT + `.schem` v3:** типизированные данные и архив оригинала, оба направления, отчёт потерь, независимые roundtrip-тесты. -4. **Structure NBT + `.schem` v2:** схемы разделены и проверены на эталонах, включая offset/повороты только там, где они реализованы. -5. **Anvil 26.2:** потоковый импорт, возврат исходного мира, затем проверенные правки и создание новых экспортируемых миров; тесты с целевым Minecraft. -6. **Полное покрытие форм:** все состояния имеют проверенную визуальную форму и отдельно коллизию либо явный незакрытый дефект. Завершение списка ID само по себе не закрывает этот этап. -7. **Расширение версий:** добавлять другие DataVersion только через отдельные адаптеры/миграции и fixtures. Не обещать автоматический downgrade и произвольные модифицированные миры. - -Главные технические риски: дрейф схем между версиями, скрытые связи block entities/POI/ticks, формы с зависимостью от контекста, полная пересборка мира из частично поддерживаемых данных и непредсказуемые пики RAM при распаковке. Каждый риск выше привязан к конкретному отказу или приёмочному тесту, чтобы он не превратился в молчаливую потерю пользовательского мира. +Новый, неизменённый и отредактированный экспорт прочитаны официальными Java 26.2 `NbtIo`, `RegionFile`, `SerializableChunkData`, `PrimaryLevelData`, `WorldGenSettings` и читателем сущностей. Независимый nbtlib проверил Sponge и типы NBT. Это проверка официальных codecs без запуска игрового сервера и принятия EULA; игровой плейтест в Minecraft не заявляется. diff --git a/docs/CONTENT.md b/docs/CONTENT.md new file mode 100644 index 0000000..f3bcad0 --- /dev/null +++ b/docs/CONTENT.md @@ -0,0 +1,91 @@ +# Каталог, формы и единые пакеты MVP + +Встроенный каталог фактически извлечён из **Minecraft Java 26.2**, `DataVersion = 4903`: **1 196 блоков, 32 366 состояний, 158 типов сущностей**. Проверка сравнивает полные множества состояний, числовые ID источника, состояния по умолчанию, свойства и типы сущностей с отдельной проекцией официальных отчётов. Дополнительно зарегистрирован собственный `shacraft:trampoline`: всего 1 197 блоков и 32 367 состояний. + +Числовой `minecraft_id` — только идентификатор источника. Сервер отдельно регистрирует канонические строки в `WorldStore`; внутренний `BlockId` зависит от истории конкретного хранилища. Нельзя использовать `minecraft_id` в операциях редактирования мира. Для собственного состояния значение `minecraft_id = u32::MAX` означает отсутствие ID Minecraft. + +## Происхождение и воспроизведение + +Источник: [официальный server.jar Java 26.2](https://piston-data.mojang.com/v1/objects/823e2250d24b3ddac457a60c92a6a941943fcd6a/server.jar). SHA-1 `823e2250d24b3ddac457a60c92a6a941943fcd6a`, размер 60 894 273 байта. Полные SHA-256, версия Java, команды и контрольные суммы отчётов находятся в `crates/shacraft-content/data/provenance.json`. + +Генератор проверяет закреплённые размер и SHA-1 перед использованием JAR: + +```sh +python3 scripts/catalog_generate.py --java /path/to/java25/bin/java +python3 scripts/catalog_assets.py +cargo test -p shacraft-content +cargo run -p shacraft-content --example catalog_report +``` + +Нужен установленный JDK 25 или новее, включая `javac`. Проверенный локальный runtime: Microsoft OpenJDK 25.0.1+8-LTS. Скрипт не меняет системную Java. `--reuse-reports` позволяет повторно упаковать уже полученные локальные отчёты; полное воспроизведение выполняют без него. Gzip имеет фиксированный `mtime=0`; содержимое каталога детерминировано. В provenance меняется время запуска. + +Фактически проверена точка входа: + +```sh +java -Xmx1G -DbundlerMainClass=net.minecraft.data.Main -jar server.jar --reports --output generated +``` + +`catalog_extract.java` — собственная небольшая программа, вызывающая публичные API реестров и коллизий 26.2. Она не содержит декомпилированного кода. Генератор данных и измерения не запускают игровой сервер, не создают `eula=true`, не принимают соглашений. JAR, распакованные библиотеки, отчёты и Java-классы остаются в игнорируемом `artifacts/catalog-cache`; в дистрибутив входят только минимальные фактические данные совместимости и авторский код. + +## Что проверено у форм + +Для **каждого из 32 366 состояний** получен `getCollisionShape` официального исполняемого API. Измерение не использует текстуры или визуальные модели. Все измерения завершились без ошибок; после дедупликации осталось 326 различных наборов прямоугольных объёмов. + +Базовый контекст измерения — `BlockPos.ZERO`, соседи `air`, отсутствие сущности (`CollisionContext.empty()`). Дополнительно сравнены каменные соседи и `CollisionContext.positionContext(+10/-10)`: различия обнаружены у 32 состояний scaffolding. Помимо них явно помечены классы с зависимостью от сущности/блочной сущности/динамического состояния: powder snow, shulker box, moving piston и big dripleaf. Поэтому покрытие коллизий разделено: + +- 32 187 состояний: `measured-empty-context` — измерена форма в описанном контексте. +- 179 состояний: `approximate-context` — геометрия базового контекста доступна, полной эквивалентности динамических условий нет. +- 1 собственное состояние: `authored-exact`. + +Первое значение **не утверждает эквивалентность во всех произвольных контекстах**. Положение игрока, специальные экипировки, поршневые блочные сущности, открывание shulker box, обновление связей соседей, AI, редстоун и течения жидкостей не следуют из каталога. Сервер реализует собственную симуляцию и явно ограниченные модули. + +Отдельные регрессионные проверки подтверждают верхнюю/нижнюю плиту, объём и направления лестниц, открывание двери, пустую коллизию воды, коллизию забора высотой 1.5, контекстную пометку scaffolding/powder snow, валидность границ всех форм. Геометрия коллизий может выходить за клетку: нельзя безусловно ограничивать Y диапазоном `[0,1]`. + +## Авторское отображение + +`render` и `collision` — разные наборы `Aabb { min, max }`, координаты относительно блока. Рендерер использует собственные процедурные формы и палитру Shacraft. Встроенные PNG, звуковой WAV и GLSL написаны/сгенерированы в этом репозитории; оригинальных ресурсов Minecraft нет. + +Семейства плит, лестниц, дверей, люков, панелей, сундуков и многих сложных твёрдых блоков используют измеренные объёмы как основу самостоятельной геометрии. Для заборов, стен, открытых калиток, знаков, рельсов, жидкостей, растений, кнопок, рычагов, ковров и других нетвёрдых форм предусмотрены отдельные параметрические шаблоны. Забор рисуется до Y=1, при этом коллизия достигает Y=1.5. У наклонного рельса ступенчатая геометрия; изогнутый рельс — угловая аппроксимация из прямоугольников. Это читаемый авторский стиль, а не копия визуальной точности Minecraft. + +Покрытие: 32 317 состояний `authored-procedural` и 50 `intentionally-invisible` (включая воздух, технический light/barrier/structure void и moving piston без исходной динамической блочной сущности). Универсальных визуальных кубов-заглушек для неизвестных семейств встроенного каталога сейчас нет. При этом каждая декоративная деталь, текст надписей, анимация, waterlogged-жидкость внутри модели и световая симуляция не воспроизводятся автоматически по факту наличия состояния. + +Для 158 типов сущностей извлечены начальные width/height/eye height, fixed dimensions, категория, summonable/serializable/fire immune, tracking/update interval и все доступные базовые числовые attributes. Эти свойства находятся в `EntityDefinition.properties`. Модели относительно ног — авторские семейства biped, quadruped, aquatic, winged, boat, cart, dragon, arthropod и другие. Служебные marker/interaction/area effect cloud/lightning bolt намеренно невидимы. Display-сущности имеют явно указанную зависимость от свойств экземпляра. Размеры возраста/позы/масштаба и произвольный NBT сохраняются слоем экземпляров; каталог хранит размеры по умолчанию. Наличие модели не означает наличие ванильного AI. + +## Rust API + +- `Catalog::load_builtin() -> Result`: полный встроенный каталог и trampoline. +- `catalog.state(canonical_or_block_name)`, `catalog.entity(name)`, `catalog.default_state(name)`. +- `catalog.palette()`: 12 удобных канонических состояний для тестового клиента. +- `catalog.sampler()`: 1 197 образцов по умолчанию в сетке 32 столбца с шагом 3; отдельные клетки относительно пола Y=0, X/Z в пределах ±64. Создание пола и запись в мир — ответственность сервера. +- `catalog.summary()`: количества, раздельное покрытие, версия и ограничения. +- `canonical_state(name, properties)`: сортировка ключей и ограниченная валидация без потери неизвестных свойств. +- Все публичные определения реализуют `Clone`, `Serialize`, `Deserialize`. После десериализации целого `Catalog` следует вызвать `rebuild_indexes()` перед поиском. + +Хранение бинарного встроенного каталога занимает около 246 KiB gzip; при загрузке он распаковывается и создаёт строки/геометрию и индексы. Размер файла не равен RAM каталога. Полные строки 32 тысяч состояний и реестр `WorldStore` нужно учитывать отдельно в RSS измерениях процесса. + +## Единый формат пакета v1 + +Каждый подкаталог `packages/` содержит `manifest.json`: + +```json +{ + "schema": 1, + "id": "shacraft.trampoline", + "version": "1.0.0", + "license": "MIT OR Apache-2.0", + "dependencies": [{"id": "shacraft.base", "version": "1.0.0"}], + "capabilities": ["blocks.define", "client.texture", "client.style", "server.on_jump"], + "resources": [{ + "path": "server/trampoline.wasm", "scope": "server", "role": "wasm-on-jump", + "sha256": "<64 lowercase hexadecimal characters>", "size": 40 + }] +} +``` + +Пример иллюстрирует схему; действительные размеры и хеши берутся из сгенерированных манифестов. Версии зависимостей точные. `load_packages(root)` проверяет весь граф до выдачи ресурсов: схему, уникальность, зависимости, совпадение версий, циклы, допустимые capabilities, пути, размеры и SHA-256 всех объявленных ресурсов. Один ресурс ограничен 16 MiB, весь пакет — 64 MiB; symlink и traversal в ресурсных путях отвергаются. `read_resource` повторно проверяет хеш и размер при чтении. + +Scopes: `common` — общие определения; `client` — ресурсы клиента; `server` — внутренние данные и код сервера. `PackageManifest::client_manifest()` исключает серверные ресурсы и capabilities. `Package::public_resource(path)` отказывает для server scope; HTTP-маршрут обязан использовать именно этот метод. Статический сервер не должен раздавать весь каталог `packages/` напрямую. + +`shacraft.base` включает описание каталога, собственный 64×64 текстурный шум и клиентский стиль. `shacraft.trampoline` включает общее определение блока, 32×32 текстуру сетки, клиентский визуальный эффект, короткий авторский звук, необязательную функцию GLSL и **исполняемый серверный WebAssembly-модуль**. Его экспорт `on_jump() -> f32` возвращает скорость 10 блоков/с; импортов, памяти и внешних системных вызовов нет. WAT-исходник находится рядом. Сервер исполняет бинарный модуль в ограниченной среде; контракт предусматривает лимит топлива 10 000, памяти 1 страницу, проверку диапазона результата. Клиент использует встроенный эффект `bounce` по данным пакета, не произвольный JavaScript из сети. Произвольная среда клиентского кода и полноценная модовая экосистема не объявляются реализованными. + +`python3 scripts/catalog_assets.py` детерминированно пересоздаёт все авторские ресурсы и хеши. Ресурсы пакетов доступны на условиях `MIT OR Apache-2.0`, как собственный код проекта. Генерация ничего не скачивает. diff --git a/docs/CONTRACT.md b/docs/CONTRACT.md index 358aef2..43cd137 100644 --- a/docs/CONTRACT.md +++ b/docs/CONTRACT.md @@ -44,3 +44,12 @@ Client fetch GET /api/manifest -> {protocol:1,hash,packages:[],...}; GET /api/wo Control HTTP: GET /api/health, /api/metrics, /api/worlds, /api/catalog public; POST /api/control with Authorization: Bearer token and {method,params}, JSON return {result:...} or {error:'...'}. Control methods: world.list, world.create {name,template?}, world.reset {world,expected_revision,operation_id}, world.read {world,min,max}, world.edit {world,expected_revision,operation_id,changes}, world.undo {world,expected_revision,operation_id,target_operation}, catalog.search {query,limit}, metrics, arena.start {world}, camera.capture {world,min?,max?} (top-down PNG), entity.spawn {world,kind,position}, entity.list {world}. Default server host 127.0.0.1 port 4000, token file data/control.token (0600). No publishing or production access. + + +## Интегрированные компоненты MVP + +Игровой протокол и границы Control API описаны в SERVER.md, настоящий stdio MCP — в MCP.md, пакеты и WASM — в PACKAGES.md, полный каталог — в CONTENT.md, Anvil/Sponge и типизированные sidecar — в interop.md. Данные документы дополняют контракт ядра выше, не изменяя его durable-правил. + +`WorldStore::section_positions(world, after: Option, limit)` постранично возвращает эффективные координаты секций 16³, включая унаследованные секции и воздушные overrides, в порядке x/y/z. Лимит 1–4096. Экспорт удерживает единственного писателя и не меняет мир между страницами. + +История ядра находится на диске. Метаданные сущностей/правил имеют отдельную транзакционную область и ревизию. Планы preview живут 5 минут и не переживают рестарт; принятая правка живёт по контракту WorldStore. Неуспешный metadata commit не публикует изменённое состояние. При прерывании активного матча арена сбрасывается к закреплённой основе на следующем запуске. diff --git a/docs/MCP.md b/docs/MCP.md new file mode 100644 index 0000000..52bd07e --- /dev/null +++ b/docs/MCP.md @@ -0,0 +1,77 @@ +# Shacraft MCP + +`shacraft-mcp` — отдельный процесс с настоящим MCP поверх stdio и JSON-RPC 2.0. Он обращается к авторизованному Control API работающего сервера и не открывает файлы миров напрямую. Сервер хранит и проверяет ревизии, лимиты и долговечность операций. + +```sh +cargo run -p shacraft-mcp -- --server http://127.0.0.1:4000 --data data +``` + +По умолчанию токен читается из `data/control.token`. Параметр `--token-file /absolute/path/control.token` переопределяет путь. Токен читается при управляющем вызове, поэтому MCP можно запустить раньше сервера. В стандартный вывод пишутся только JSON-RPC-сообщения, одна строка на сообщение; диагностика и CLI-ошибки идут в stderr. Не запускайте через командную обёртку, которая печатает посторонний текст в stdout. + +Пример записи в конфигурации MCP-клиента (пути заменяются своими абсолютными): + +```json +{ + "mcpServers": { + "shacraft": { + "command": "/absolute/path/shacraft-core/target/release/shacraft-mcp", + "args": ["--server", "http://127.0.0.1:4000", "--data", "/absolute/path/shacraft-data"] + } + } +} +``` + +## Протокол + +Поддерживаются версии `2025-11-25`, `2025-06-18`, `2025-03-26`, `2024-11-05`. Сервер возвращает запрошенную поддерживаемую версию или новейшую поддерживаемую. Клиент начинает с `initialize`, затем посылает `notifications/initialized`. До этого доступны только `initialize` и `ping`. Уведомления не вызывают ответов; неизвестные методы запросов получают JSON-RPC-ошибку. Ошибки аргументов и выполнения известных инструментов возвращаются в `result.content` с `isError: true`. + +Реализованы `tools/list`, `tools/call`, `resources/list`, `resources/read`, `resources/templates/list`, `prompts/list`, `prompts/get` и `ping`. Списки небольшие и возвращаются целиком. Подписки, асинхронные задачи и уведомления о смене списков не объявляются. Выполнение последовательное; уведомление об отмене не прерывает уже выполняющийся HTTP-запрос. Сетевой тайм-аут ограничен 20 секундами (установление соединения — 3 секунды). + +Строка запроса и HTTP-ответ ограничены 8 МиБ. Слишком длинная входная строка отбрасывается до перевода строки, после чего поток продолжает разбираться. HTTP-редиректы отключены: bearer-токен не передаётся перенаправленному адресу. + +## Инструменты и рабочий процесс + +- `world_list`, `world_create`, `world_read`: осмотр миров и создание пустого мира или экземпляра закреплённого шаблона. +- `catalog_search`: точные состояния, runtime ID, формы и сведения о покрытии реализации. +- `world_edit`, `world_undo`, `world_reset`: атомарные правки, консервативная отмена последней операции и возврат к базе. +- `build_plan`, `build_commit`: предварительный расчёт ограниченной постройки из box/line/cylinder и последующая фиксация плана. +- `entity_list`, `entity_spawn`, `entity_update`, `entity_delete`: сохранённые сущности мира и их свойства. +- `arena_configure`, `arena_start`: сохраняемые правила Spleef (время, минимум игроков, высота выбывания, точки появления, материал пола) и запуск матча. Правила нельзя менять во время начавшегося раунда; материал пола задаёт разрешённые для разрушения блоки, но не перестраивает карту. +- `metrics`: измеренный RSS и отдельные оценки полезных данных кэша. +- `camera_capture`: изометрическое изображение мира в формате MCP image plus metadata. Это диагностическая проекция сервера, не снимок WebGL-камеры игрока. + +Полные JSON Schema доступны через `tools/list`. Имена инструментов соответствуют Control API с заменой первого `_` на точку, например `world_edit` → `world.edit`. + +Для строительства сначала прочитайте ревизию и площадку через `world_list`/`world_read`, найдите точные материалы через `catalog_search`, сформируйте `build_plan`, оцените границы и объём, затем выполните `build_commit` с уникальным `operation_id` в пределах авторизованного запроса. После фиксации проверьте `camera_capture`. При конфликте перечитайте мир и сформируйте новый план. Тот же ключ операции используйте только при повторе идентичного запроса. + +Отмена требует текущую ревизию и `target_operation` исходной правки. Последующие изменения и reset могут сделать отмену недоступной; инструмент не должен перезаписывать их молча. + +## Ресурсы и prompt + +Ресурсы `shacraft://server/status`, `shacraft://catalog/blocks`, `shacraft://catalog/entities`, `shacraft://packages` читают публичные сведения сервера. Ресурс блоков даёт начальную ограниченную страницу; полный каталог доступен поиском и пагинацией инструмента. + +Prompt `construct` принимает строки `world` и `request` и описывает последовательность осмотра, планирования, правки и визуальной проверки. Он не расширяет пользовательское разрешение на действие. + +Проверки: `cargo test -p shacraft-mcp`. Unit-тесты проверяют переходы жизненного цикла, согласование версии, отсутствие ответов на уведомления, ошибки аргументов и токена, недопустимые JSON-RPC ID, восстановление после слишком большой строки и схемы строительных операций. Сквозные тесты с настоящим сервером выполняются дополнительно. + +Основание протокола: официальные [lifecycle](https://modelcontextprotocol.io/specification/2025-11-25/basic/lifecycle), [stdio transport](https://modelcontextprotocol.io/specification/2025-11-25/basic/transports) и [tools](https://modelcontextprotocol.io/specification/2025-11-25/server/tools). + +## Проверка настоящим MCP SDK + +После запуска отдельного тестового сервера: + +```sh +node crates/shacraft-mcp/tests/sdk-smoke.mjs --data /absolute/path/test-server-data +``` + +Скрипт использует `@modelcontextprotocol/sdk` (проверен с 1.30.0), выполняет согласование протокола, читает все ресурсы, вызывает prompt, делает правку/повтор/конфликт/отмену, план/фиксацию, получает PNG, проверяет CRUD сущностей и reset. Он создаёт отдельный мир с префиксом `mcp_sdk_`. Путь к установленному SDK задаётся через `SHACRAFT_MCP_SDK`; в локальной среде поддерживается соседний `minecraft-builder-mcp/bridge/node_modules`. Это независимая проверка протокола, не зависимость исполняемого MCP от Minecraft Builder. + +Для воспроизводимой проверки с автоматически запущенным отдельным сервером: + +```sh +node scripts/check_mcp.mjs --binary target/release/shacraft-server --mcp-binary target/release/shacraft-mcp --port 4002 --output artifacts/mcp-sdk.json +``` + +Обёртка создаёт временный каталог данных, использует настоящий SDK и закрывает тестовый сервер. Рабочий сервер на порту 4000 не затрагивается. `--sdk` или `SHACRAFT_MCP_SDK` задают путь к уже установленному SDK; результат записывается JSON-файлом, включая ошибку при неуспешной проверке. + +Связанный сквозной тест `scripts/check_server.mjs` проверяет HTTP/WebSocket-клиенты, действия, экземпляры миров, полный матч и восстановление после реального `SIGKILL`: подтверждённые блоки, сущности и правила арены должны пережить перезапуск того же каталога данных. Временные тестовые данные сохраняются для разбора. diff --git a/docs/PACKAGES.md b/docs/PACKAGES.md new file mode 100644 index 0000000..c3b91f7 --- /dev/null +++ b/docs/PACKAGES.md @@ -0,0 +1,43 @@ +# Единые пакеты расширений + +`packages//manifest.json` объявляет точные версии, лицензии, зависимости, возможности и ресурсы. При запуске сервер проверяет весь граф зависимостей, размеры, SHA-256, пути и отсутствие symlink. Отсутствующая версия, цикл, неизвестная возможность или изменённый ресурс останавливают запуск. Публикуются только `client` и `common`; файлы `server` не имеют публичного маршрута. Ресурс повторно проверяется при HTTP-чтении. + +Примеры — `packages/base` и `packages/trampoline`. Все изображения, звук и модели авторские. Данные каталога происходят из официальных отчётов и измерения публичного API Java 26.2; ванильные текстуры и модели в пакеты не входят. + +Манифест schema 1 содержит: + +- `id`, `version` из трёх числовых частей, `license`; +- `dependencies:[{id,version}]` с точными версиями; +- `capabilities`, например `blocks.define`, `client.texture`, `server.on_jump`; +- `resources:[{path,scope,role,sha256,size}]`. + +Один ресурс не больше 16 МиБ; пакет не больше 64 МиБ, до 128 ресурсов, до 128 записей в каталоге пакетов. Это ограничения сервера; браузер дополнительно ограничивает суммарно проверяемые публичные ресурсы 128 МиБ на подключение. Определения блоков имеют роль `definitions`, ресурс с этой ролью требует schema 1. Сервер допускает до 4096 дополнительных определений. Блок задаёт `state` как новый идентификатор `namespace:path` без свойств (строчные ASCII-буквы, цифры, `_`, `.`, `-`, дополнительно `/` в path), `color:[r,g,b]`, `collision:[{min,max}]` и необязательный `render` аналогичной формы. Необязательный `opacity` — число 0…1. Если render не указан, используется существующая авторская форма того же состояния или коллизия нового блока. Максимум 64 бокса на каждый набор; допустимый локальный диапазон координат −2…3. Дубликаты определений и переопределение `minecraft:*` отвергаются. Runtime ID назначает сохраняемый реестр; `Game::open` расширяет каталог проверенными определениями до регистрации в WorldStore. Обычный пакетный блок без `behavior` хранится и участвует в физике; `behavior.server_hook: on_jump` связывает его с активным WASM-провайдером. + +```json +{ + "schema": 1, + "blocks": [{ + "state": "example:spring", + "color": [97,205,151], + "collision": [{"min":[0,0,0],"max":[1,1,1]}], + "render": [{"min":[0,0,0],"max":[1,1,1]}], + "behavior": {"server_hook":"on_jump"} + }] +} +``` + +## Исполнение модуля + +В MVP нужен ровно один активный провайдер серверного hook `on_jump`; отсутствие провайдера или два модуля с этой ролью останавливают запуск. Серверный `.wasm` объявляется ресурсом `role: "wasm-on-jump"`, `scope: "server"`; необходима capability `server.on_jump`. Экспорт `on_jump: () -> f32` возвращает импульс прыжка в блоках/с. Сервер вызывает его только при прыжке игрока с блока, который связан с hook через проверенное определение пакета. + +Исполнение идёт в Wasmi: без импортов, файлов, сети и системных вызовов; до 10 000 единиц fuel на вызов, одна память до 64 КиБ, одна таблица до 128 элементов, один экземпляр. Бинарный модуль не больше 64 КиБ. Результат должен быть конечным числом 0…20; trap или недопустимое значение фиксируется метрикой и даёт обычный прыжок. Выполняемый пример возвращает 10. Тесты проверяют реальный вызов, бесконечный цикл, превышение памяти, попытку импорта и NaN. Отдельный тест создаёт пакет `example:spring`, проверяет его SHA-256, добавляет новый блок в каталог, регистрирует и сохраняет runtime ID, связывает блок с модулем и получает импульс 12 от собственного бинарного WASM. Дубликаты, Minecraft override, недопустимая геометрия, opacity/идентификатор и изменение ресурса после загрузки отвергаются. + +Это ограниченный действующий API расширения, а не обещание произвольной совместимости с Forge/Fabric или доступа WASM к полному состоянию мира. Для нового hook необходима явная версия контракта. Spleef в этом MVP реализован серверным режимом Rust с сохраняемыми правилами. + +## Клиентские ресурсы + +`/api/manifest` возвращает публичный список с URL, точной версией, размерами и SHA-256. Браузер скачивает файлы, проверяет размер и хеш **до входа**, затем кладёт в CacheStorage по хешу. При повторном подключении содержимое кэша тоже проверяется. Ошибка хеша удаляет повреждённую запись и запрещает вход. Неподходящий `manifest_hash` сервер отвергает. Публичный хеш не подтверждает, что клиентское приложение не модифицировано. + +Базовый пакет даёт пиксельную текстуру; trampoline — собственную текстуру, GLSL-функцию окраски, настройку стиля и короткий синтезированный звук. Они применяются собственным WebGL2-рендерером. В ядре и сервере отсутствует графический движок. Пакет не загружает произвольный привилегированный JavaScript. + +Для изменения пакета пересчитайте размер и SHA-256 каждого изменённого ресурса, увеличьте версию и обновите точные зависимости. `scripts/catalog_assets.py` воспроизводимо генерирует встроенные авторские ресурсы и манифесты. Формат ориентирован на будущий лаунчер: лаунчер сможет получить тот же manifest и кэшировать по `(id,version,sha256)`; интеграция конкретного лаунчера в этот репозиторий не входит. diff --git a/docs/PLAN.md b/docs/PLAN.md index e821702..9b81ec6 100644 --- a/docs/PLAN.md +++ b/docs/PLAN.md @@ -2,7 +2,7 @@ План составлен до реализации. Каждый этап заканчивается воспроизводимым результатом в локальном репозитории. `docs/STATUS.md` обновляется после проверок. Пункт не считается выполненным по наличию интерфейса, заглушки, каталога имён или успешной компиляции. -Текущий прогресс: этап 0 и первая реализация этапа 1 завершены. Проверены библиотека хранения, CLI и аварийное восстановление. Этапы 2–6 остаются впереди; подробности в STATUS и VERIFICATION. +Текущий прогресс: этапы 0–6 реализованы для локального профиля MVP. Компоненты интегрированы; фактические проверки, пределы нагрузки и ограничения совместимости описаны в STATUS и VERIFICATION. Исходный порядок этапов ниже сохранён. ## Этап 0. Сохранить контекст и проверить проектирование diff --git a/docs/SERVER.md b/docs/SERVER.md new file mode 100644 index 0000000..62fc5b1 --- /dev/null +++ b/docs/SERVER.md @@ -0,0 +1,80 @@ +# Сервер, протокол и эксплуатация MVP + +## Запуск + +Нужны Rust 1.96+ и современный браузер с WebGL2. Java не нужна для запуска Shacraft: проверенный каталог включён в исходники. Node 22+ используется для проверок клиента и сети. + +```sh +cargo build --release --locked --workspace +bash scripts/run.sh --data data --listen 127.0.0.1:4000 +``` + +Открыть http://127.0.0.1:4000. Для друзей в локальной сети можно задать `--listen 0.0.0.0:4000`; браузерная проверка SHA-256 требует HTTPS для адресов вне localhost. Для внешней сети нужен обычный HTTPS/WSS reverse proxy. В MVP нет сервиса аккаунтов; имя игрока не является подтверждённой личностью. Контрольный токен выдаётся только владельцу сервера, клиент его не получает. + +`--data` — каталог WorldStore, `--cache-sections` — ёмкость общего кэша (по умолчанию 64). `--client` и `--packages` задают каталоги статического клиента и проверенных пакетов. Скрипт запуска явно задаёт пути относительно распакованного проекта. Остановка — Ctrl+C; уже подтверждённые правки не зависят от корректного завершения процесса. + +Первый запуск создаёт лобби, галерею `gallery`, неизменяемую основу Spleef и две независимые арены. Каталог содержит все состояния Java 26.2 и авторский trampoline. Импортированный WorldStore тоже можно открыть сервером; импортированные миры появятся в выборе миров рядом с демонстрационными. Галерея содержит 1 197 образцов состояний по умолчанию на полу 128×128, с шагом 3; это обзор всех типов блоков, а не всех 32 тысяч вариантов. Начальная позиция галереи — `[-50,2,58]`; клиент подгружает её частями по мере перемещения. + +## Владение состоянием + +Один выделенный поток владеет WorldStore, физикой и игровым состоянием. HTTP и WebSocket ставят ограниченные команды в очередь. Движение считается 20 раз в секунду: скорость 5 блоков/с, гравитация 20 блоков/с², обычный прыжок 7 блоков/с. Игрок занимает AABB 0.6×1.8 блока; позиция задаёт середину стоп. Оси +Y вверх, yaw растёт вправо, pitch вверх; направление взгляда `[sin(yaw)*cos(pitch),sin(pitch),-cos(yaw)*cos(pitch)]`. + +Игровые позиции и точки появления ограничены диапазоном ±32 700 по каждой оси: физика этого клиента использует `f32`. Хранилище и конвертер сохраняют более широкий контракт ±30 000 000; это не обещание игровой физики на дальних координатах. Выход игрока за игровой диапазон возвращает его на spawn, а в активном матче означает выбывание. + +Ввод содержит намерение двигаться, а не позицию. Сервер проверяет дальность 6 блоков, ближайшее пересечение форм, ячейку установки, пересечение с игроком и правила арены. Просроченный ввод обнуляется через секунду. Игровая физика использует ограниченную область соседних блоков на каждый тик; независимые миры без игроков не требуют массива загруженных секций. + +В `worlds.sqlite3` хранятся блоки и их история. В `server.sqlite3` — конфигурация и сохраняемые сущности с отдельной ревизией. Это две транзакционные области: создание мира и добавление его настроек не заявляются одной общей транзакцией. Если сохранение настроек не удалось после создания мира, мир доступен с безопасными настройками по умолчанию; ошибку нельзя интерпретировать как разрешение повторно создать тот же мир. Для сущностей и настроек неуспешная запись восстанавливает состояние из последней сохранённой версии. Если даже чтение SQLite невозможно, операция возвращает ошибку; ошибка хранения не объявляется успешным подтверждением. + +## HTTP и авторизация + +Публичные GET: `/api/health`, `/api/manifest`, `/api/worlds`, `/api/catalog`, `/api/entities`, `/api/metrics`. Каталог принимает `query`, `offset`, `limit` (1–256) `ids` с максимум 128 runtime ID или `states` с каноническими состояниями, разделёнными запятыми вне скобок свойств. Runtime ID берётся из ответа; он не совпадает с числовым ID Minecraft. + +`POST /api/control` принимает `{ "method": "world.read", "params": {...} }`, возвращает `{ "result": ... }` или HTTP 400 с `{ "error": "..." }`. Требуется `Authorization: Bearer `. При первом запуске файл `control.token` создаётся с режимом 0600 на Unix. Параметры операций доступны в схемах `tools/list` отдельного MCP. Названия Control API используют точку: `world.edit`, `build.plan`, `camera.capture` и т.д. + +Токен не является секретом от администратора локальной машины. Хеш manifest подтверждает совместимость ресурсов; он не доказывает неизменность исполняемого кода клиента. Защита игрового состояния основана на серверных проверках. Origin для браузерного WebSocket и Control API проверяется; межсайтовый доступ не включён. + +## WebSocket, снимки и правки + +Первое сообщение на `/ws` в течение 10 секунд: + +```json +{"type":"join","protocol":1,"manifest_hash":"из /api/manifest","name":"Игрок","world":"lobby"} +``` + +`welcome` содержит `id`, `world`, `revision`, `blocks:[{pos,block}]`, определения использованных `materials`, `players`, `entities`, `spawn`, `view_center` и `manifest_hash`. Снимок покрывает `[centerX-32, centerY-8, centerZ-32]…[centerX+31, centerY+31, centerZ+31]`, максимумы включительные. При перемещении центра видимости сервер присылает новый `snapshot`; клиент полностью заменяет геометрию. Полный строковый реестр в снимке не передаётся. `materials` ограничен 256 записями и 128 КиБ; остальные определения клиент последовательно запрашивает через `/api/catalog?ids=1,2,...&limit=128`. Это позволяет войти в мир с большой палитрой, не переполняя исходящую очередь. + +Клиент отправляет `input` с `seq,yaw,pitch,forward,strafe,jump`; `break` с `pos`; `place` с `pos,block` или `state`; `switch_world`, `resync`, `respawn`, `start_match`, `chat`, `ping`. Ответ `state` содержит авторитетные позиции, `tick`, подтверждённый `ack` и состояние матча. Блоки приходят в `blocks` с новой ревизией. При пропуске ревизии клиент запрашивает снимок. Подписка и создание снимка сериализованы с правками в одном потоке, поэтому промежуточная правка не теряется. + +Для управляющих правок сохраняется контракт ядра: ожидаемая ревизия, уникальный `operation_id`, durable-подтверждение, повтор того же запроса без второй записи, отказ при конфликте. План строительства занимает не более 32 768 ячеек, хранится 5 минут, максимум 16 планов; preview не меняет мир. Планы эфемерны и исчезают после перезапуска, принятые правки остаются на диске. `camera.capture` возвращает PNG изометрической серверной проекции и точную ревизию; это не кадр WebGL-камеры игрока. + +## Правила Spleef + +Матч проходит `waiting → countdown → active → finished → waiting`. По умолчанию нужны 2 игрока, отсчёт занимает 3 секунды, раунд — до 180 секунд. Разрешено разрушать только `minecraft:snow_block` в активном раунде; установка блоков и разрушение границы запрещены. Падение ниже Y=−6 означает выбывание. При одном оставшемся участнике объявляется победитель; истечение времени с несколькими оставшимися даёт ничью. После результата через 5 секунд мир возвращается к своему закреплённому шаблону, игроки — на spawn. Арены независимы. Отключение/уход из мира исключает участника; повторный вход во время раунда остаётся входом зрителя. После перезапуска прерванный матч сбрасывается к шаблону. + +`arena.configure` сохраняет настройки мира. Изменять их можно между матчами; попытка во время countdown/active/finished отклоняется. Доступны `mode`, `spawn` и следующие поля: + +- `countdown_seconds`: целое 1…30, по умолчанию 3; `round_seconds`: целое 1…3600, по умолчанию 180. +- `min_players`: целое 2…32, по умолчанию 2. +- `elimination_y`: конечная координата в пределах ±32 700, по умолчанию −6. +- `spawn_points`: до 32 точек `[x,y,z]`. Пустой список означает круг радиуса 7 вокруг X/Z=0 на высоте `spawn[1]`. Непустой список должен вмещать минимум участников, а при старте — всех вошедших; точки располагаются не ближе 0.8 блока друг к другу. +- `spectator_spawn`: точка зрителя, по умолчанию `[13,2,0]`. +- `floor_block`: известное каноническое состояние с коллизией, которое участникам разрешено разрушать. По умолчанию `minecraft:snow_block`. Пол в закреплённой карте должен уже содержать этот материал; configure не перекрашивает и не перестраивает карту. + +Все точки появления находятся в игровом диапазоне, их Y выше `elimination_y + 0.5`. Необязательный `expected_revision` проверяет общую ревизию метаданных, доступную через `entity.list`/`metrics`; это отдельная ревизия от блоков мира. Правила возвращаются в `match.rules`. Старые настройки с двумя полями `mode/spawn` читаются с указанными значениями по умолчанию. + +Журнал идемпотентности ядра относится к правкам блоков, undo/reset и подтверждению плана. Операции сущностей и настройки арен пока не имеют такого журнала: повторный `entity.spawn` создаёт ещё один экземпляр. После неопределённого сетевого результата сначала следует прочитать текущее состояние. + +## Лимиты и наблюдаемость + +- 32 WebSocket-сессии, включая ожидающие join; 16 одновременно обслуживаемых HTTP-запросов, очередь 64 команд. +- Входное сообщение WebSocket до 64 КиБ, максимум 80 сообщений/с на соединение; действия блоков не чаще 110 мс, чат не чаще 700 мс, явный resync не чаще 500 мс, переход между мирами не чаще секунды, автоматический снимок при смене секции не чаще 2 секунд. +- Control API до 2 МиБ JSON; штатная правка до 32 768 ячеек; чтение до 262 144 ячеек и 6 МиБ ответа; при превышении байтового лимита требуется уменьшить область. +- Исходящая очередь на клиента: 16 сообщений и 8 МиБ. При переполнении или превышении срока отправки медленное соединение закрывается. Общее верхнее ограничение очередей зависит от числа клиентов; эти байты не следует путать с кэшем секций. +- Метаданные сервера до 8 МиБ, до 4096 сущностей, свойства одной сущности до 16 КиБ. В игровые снимки входят компактные представления без произвольного JSON свойств; полные свойства читаются через `entity.list` с offset и limit (по умолчанию 64, максимум 128). +- RAM процесса в `/api/metrics` — фактический Linux VmRSS, а `storage.cache_payload_bytes` — только полезные байты кодированных секций. Каталог, строки, SQLite, сетевые буферы, временные чтения и память аллокатора существуют отдельно. + +Максимальная разрешённая конфигурация лимитов не равна измеренному целевому профилю нагрузки. Условия и результаты benchmark публикуются в VERIFICATION; заявлений о выигрыше относительно Paper без сопоставимого прогона нет. + +## Сущности и совместимость + +158 определений сущностей имеют реальные размеры и авторские процедурные модели. Сохраняемые экземпляры создаются, перемещаются и удаляются через MCP. Полноценные ванильные AI, redstone, жидкости, инвентари и игровая логика Minecraft не реализованы. Формы контекстно зависимых блоков явно отмечены в каталоге. Изменённые и неизвестные данные конвертер обрабатывает по правилам `docs/interop.md`, без молчаливого объявления lossless-совместимости. diff --git a/docs/STATUS.md b/docs/STATUS.md index 38f5656..a2191d1 100644 --- a/docs/STATUS.md +++ b/docs/STATUS.md @@ -1,49 +1,31 @@ # Состояние проекта -Обновлено: 2026-09-14. Рабочая папка: `/home/emil/Desktop/shacraft-core`. +Обновлено 2026-09-14. Реализован и локально проверен весь согласованный профиль MVP. Рабочая папка: `/home/emil/Desktop/shacraft-core`. Исходный план сохранён до реализации коммитом `ddfcef2`; результаты старой облачной среды не использовались как доказательство. -## Завершено: планирование и первый этап хранения +## Готово -План сохранён **до реализации**, отдельным Git-коммитом `ddfcef2`. Исходники старой облачной среды не восстановлены и не использованы как доказательство работы новой реализации. +- Самостоятельное ядро Rust: компактные секции, общий ограниченный LRU, долговечные правки и история, immutable snapshots, независимые миры, revision/idempotency, undo/reset. +- Отдельный авторитетный сервер с игровым циклом 20 Гц, проверкой движения/форм/дальности, ограниченными очередями, сохраняемыми настройками и сущностями. +- Собственный браузерный WebGL2-клиент: строительство, каталог, игроки/сущности, чат, миры, загрузка пакетов и диагностика. Нет зависимости от готового игрового движка. +- Настоящий отдельный stdio MCP: 17 инструментов, 4 ресурса, строительный prompt, планы/commit, визуальный PNG и проверка через независимый MCP SDK. +- Полный каталог Java 26.2: 1 196 блоков, 32 366 состояний, 158 сущностей, DataVersion 4903. Коллизии измерены через официальный API, модели авторские; контекстные случаи отмечены. +- Пакеты: точные версии, граф зависимостей, SHA-256/размеры, приватные серверные файлы, проверяемый клиентский кэш. Действующий WASM `on_jump`, пользовательские определения блоков и собственные текстуры/шейдер/звук. +- Spleef: две независимые арены общей карты, отсчёт, выбывание, победитель/ничья, сброс, spectators, сохраняемые правила, восстановление после прерывания. Лобби и галерея 1 197 образцов. +- Anvil и Sponge v3 import/export: типизированный NBT, сохранение оригинала, атомарная публикация, отчёты о потерях/преобразованиях, перенос игровых правок блоков и сущностей. -Работают две crate: +## Проверено -- `shacraft-core`: versioned codec секций 16³ (uniform/palette/dense), компактный LRU, долговечный реестр, SQLite/WAL/FULL, блокировка второго писателя, неизменяемые снимки, независимые экземпляры, атомарные edit, revision/idempotency, undo/reset и явная уборка недостижимых blobs. -- `shacraft-tools`: локальная JSON-lines сессия для тестирования API, demo, stats и воспроизводимый storage benchmark. Это не MCP и не игровой сервер. +84 Rust-теста, 6 JS-тестов, fmt и Clippy без предупреждений; 14 групп реальных HTTP/WebSocket-сценариев, отдельная MCP SDK-сессия, SIGKILL и восстановление. Экспорты прочитаны официальными Java 26.2 codecs и независимым NBT-читателем. Клиент осмотрен в реальном браузере; подтверждены отрисовка, поиск состояний, переход в галерею, догрузка материалов, повторное соединение и кэш ресурсов. -Проверено на Linux x86_64 с Rust 1.96.0: +Финальный release-стенд: 100 пустующих экземпляров карты — 50.50 МиБ RSS; 10 движущихся клиентов — максимум 59.65 МиБ RSS/VmHWM, p95 выборки работы тика 7.33–9.54 мс. Это ограниченный локальный профиль, не сравнение с Paper. Команды и доказательства — [VERIFICATION](VERIFICATION.md). -- `cargo fmt` и Clippy с запретом предупреждений. -- 29 Rust-тестов: 11 codec, 8 black-box контрактов, 10 хранения. -- Отдельные процессы: 80 подтверждённых правок → SIGKILL → восстановление реестра/данных/replay; прерывание транзакции на 32768 ячеек → отсутствие частичного состояния → безопасный повтор. -- Вытеснение различных секций при превышении кэша; однородная секция остаётся компактной и в RAM. -- Release demo и синтетический benchmark: 256 секций, 100 независимых экземпляров, чтение сверх кэша, edit/reset каждого экземпляра. +## Точные границы -Команды и результаты: [DEVELOPMENT](DEVELOPMENT.md), [VERIFICATION](VERIFICATION.md), `docs/verification/`. +- Это самостоятельная миниигровая платформа с каталогом Minecraft, не полная ванильная симуляция: нет полного AI, redstone, инвентарей или симуляции жидкостей. Формы с зависимостью от контекста помечены; модели не повторяют ванильные ассеты. +- `exact` консервативно отказывает после правок; `best-effort` отражает изменения и выдаёт отчёт. Между Anvil и `.schem` не вся семантика биомов/block entities преобразуется — исходные данные архивируются. Ограничения версий, размеров и контекстов описаны в interop.md. +- История блоков хранится на диске без автоматического удаления. Undo допускает только текущую целевую правку. Preview-планы эфемерны, 5 минут. Метаданные сущностей/правил имеют отдельную ревизию; их API не заявляет журнал идемпотентности ядра. +- Предел игрового пространства с f32-физикой — ±32700; хранение и конвертер поддерживают координаты ядра ±30 миллионов. Память ограничивается несколькими структурами, а не одним магическим RSS-лимитом. +- Проверены Linux x86_64 и локальная нагрузка. Длительный продакшен soak, аппаратное отключение питания, все ОС и игровой плейтест экспорта в запущенном Minecraft не заявляются пройденными. +- Лаунчер, аккаунты, продакшен и существующие серверы — последующая интеграция. Ничего не опубликовано и не развёрнуто на удалённых машинах. -## Следующий этап: сервер и тестовый клиент - -1. Добавить crate сервера с игровым циклом отдельно от долговечных редакторских транзакций. Не выполнять SQL/FULL commit каждого игрового ввода. -2. Уточнить протокол resync, подписку без разрыва между снимком и изменениями, переключение миров и лимиты очередей. -3. Реализовать серверные движение/коллизии/взаимодействия и минимальный WebGL2-клиент по решению D003. -4. Пройти сценарий двух клиентов с общими блоками и независимыми мирами. -5. Затем подключить собственный MCP через общий Control API, полный каталог и конвертер согласно PLAN. - -## Ограничения первого этапа - -- Полный MVP ещё не завершён. Нет игрового сервера, графического клиента, MCP, каталога 26.2, конвертера, системы исполняемых модулей и миниигры. -- Undo консервативный: только целевая правка на текущей ревизии, без последующих операций. Каждый новый успешный edit, включая no-op, повышает ревизию. Retry не повышает. -- История остаётся на диске без автоматического удаления. GC ограничивает число удалённых blobs, но не время сканирования. Он не удаляет историю/снимки и не уменьшает физический файл через VACUUM. -- Реестр строк находится в RAM: максимум 262144 состояния по 512 ASCII-байт. Кэш секций не является лимитом всей памяти процесса. SQLite page-cache budget — настройка движка, не жёсткий RSS-лимит. -- Benchmark проверяет хранение, не игроков/тики/полный каталог и не сравнительную экономию относительно Paper. -- SIGKILL не имитирует отключение питания и отказы накопителя. Платформы вне Linux пока не проверены. -- Продакшен, существующий лаунчер и удалённые репозитории не изменялись. - -## Правила продолжения - -- Перед работой прочитать REQUIREMENTS, PLAN, DECISIONS, CONTRACT и этот файл. -- Новые результаты подтверждать командами, тестами или видимым поведением; старый облачный отчёт не использовать как доказательство. -- Не помечать весь MVP готовым по завершению одного этапа. -- Отмечать точные ограничения контента, конвертера, клиента, модулей и безопасности. -- Команды запуска и проверки сохранять в репозитории; изменения коммитить в локальный Git после проверки. -- Не помещать токены, данные реальных игроков и проприетарные ассеты в Git и архивы. +Контракты компонентов: SERVER.md, MCP.md, CONTENT.md, PACKAGES.md, interop.md. Исходники и release-бинарные файлы упаковывает `scripts/make_release.py`; в архивы не входят токены, локальные миры и Minecraft JAR. diff --git a/docs/VERIFICATION.md b/docs/VERIFICATION.md index 70228de..dd97924 100644 --- a/docs/VERIFICATION.md +++ b/docs/VERIFICATION.md @@ -1,32 +1,60 @@ -# Проверки первого этапа, 14 сентября 2026 +# Проверка локального MVP -Проверены библиотека хранения и CLI. Рубеж A из ACCEPTANCE.md целиком ещё не пройден: сервер/клиент/MCP отсутствуют. Результаты ниже не объявляют полный MVP готовым. +Дата: 2026-09-14. Стенд: Linux x86_64, AMD Ryzen 7 1700, Rust/Cargo 1.96.0, Node 22.22.3, Python 3.14.4. Точные версии — [environment.json](verification/environment.json). Исходная ревизия выпуска фиксируется в `RELEASE.json` каждого архива. ## Автоматические проверки -Команда `bash scripts/verify.sh` завершилась с кодом 0. В [полном журнале](verification/checks.txt) сохранены: - -- форматирование и Clippy `--workspace --all-targets --locked -- -D warnings` без ошибок; -- 29 Rust-тестов (11 секционного формата, 8 публичных контрактов, 10 хранилища); -- сборка CLI; -- девять проверок отдельного процесса, включая принудительное завершение и восстановление. - -В аварийном сценарии 80 правок были подтверждены процессом до SIGKILL и сохранились после повторного открытия. Повтор старой операции вернул её исходный результат без повторной правки. Большая операция на 32768 блоков, завершения которой вызывающий код не наблюдал, восстановилась целиком или отсутствовала целиком; безопасный повтор завершился на одной ревизии. Дополнительно SQL-тест принудительно вызывает отказ в середине изменения и проверяет откат данных, истории и ревизии. - -## Проверка работы и хранения - -`cargo build --release -p shacraft-tools --locked` завершилась успешно. [Результат demo](verification/demo.json) подтверждает сценарий общей карты, двух экземпляров, изолированной правки, undo и reset. - -[Сырой результат benchmark](verification/storage-benchmark.json) получен командой: - ```bash -target/release/shacraft-tools --data <пустой-временный-каталог> --cache 8 benchmark --sections 256 --worlds 100 +bash scripts/verify.sh +cargo build --release --workspace --locked +node scripts/check_server.mjs --binary target/release/shacraft-server --output artifacts/server-e2e-release.json +node scripts/check_mcp.mjs --binary target/release/shacraft-server --output artifacts/mcp-sdk.json +node scripts/benchmark_server.mjs --binary target/release/shacraft-server --output artifacts/server-benchmark-final.json ``` -После создания 100 экземпляров количество blobs осталось 256: карты разделяют неизменяемые данные. После обхода карты резидентный кэш остался в пределах восьми записей и зафиксировал вытеснения. Все экземпляры прошли независимую правку и сброс. RSS, размеры файлов и длительности сохранены в JSON вместе с версией Rust и системой. +`verify.sh` завершился с кодом 0: fmt, Clippy `-D warnings`, **84 Rust-теста** (core 30, content 11, compat 17, MCP 8, server/WASM 18), **6 JS-тестов**, отдельная аварийная проверка хранилища и debug HTTP/WebSocket-сценарий. [Полный журнал](verification/mvp-checks.txt). -Это один синтетический прогон на небольшом реестре из двух состояний, без сети, игроков и симуляции. Не использовать его для оценки готового сервера или сравнения с Paper. Байты закодированных секций не включают служебные структуры/аллокатор; RSS измеряется отдельно. +Release-прогон прошёл **14 групп**: проверка ресурсов/авторизации, несовместимый manifest, два клиента, авторитетное движение, недостижимая правка, реальные break/place, последовательные ревизии, late join, immutable template/изоляция, чат, события сущностей, reconnect, полный Spleef и reset, удаление отключённых игроков, **SIGKILL → восстановление блоков, свойств сущностей и настроек**. [Отчёт](verification/server-e2e.json). -## Ограничения доказательств +Настоящий MCP SDK 1.30.0 прошёл initialize/notification/ping, 17 schemas, 4 resources, prompt, durable edit/replay/conflict/undo, plan/commit/retry, PNG image content, entities CRUD, настройки, metrics/reset. [Отчёт SDK](verification/mcp-sdk.json). Для воспроизведения установить независимый клиент: -Подтверждена работа на Linux x86_64. Тесты завершения процесса не имитируют отключение питания или аппаратные сбои. Часть защиты от повреждений проверяется на намеренно изменённых временных SQLite-базах; реальные миры пользователя не затрагиваются. Интеграция с Minecraft, лаунчером и MCP относится к следующим этапам и пока не проверялась. +```bash +npm install --prefix artifacts/mcp-sdk --no-package-lock @modelcontextprotocol/sdk@1.30.0 +SHACRAFT_MCP_SDK="$PWD/artifacts/mcp-sdk/node_modules/@modelcontextprotocol/sdk" node scripts/check_mcp.mjs --binary target/release/shacraft-server --output artifacts/mcp-sdk.json +``` + +В репозитории нет зависимости рабочего клиента от Node/MCP SDK. Они нужны только проверке. + +## Каталог и совместимость + +Каталог сравнивается с независимой проекцией официальных отчётов по всем каноническим состояниям, properties/defaults и множеству сущностей. Отдельно проверены геометрия, ориентации плит/ступеней/дверей, контекстные случаи, entity dimensions. Повторный полный генератор отчётов/API и авторских ресурсов воспроизвёл файлы побайтно: [reproducibility](verification/catalog-reproducibility.json). + +17 converter-тестов покрывают типизированный NBT, compression modes/external chunks, палитры, negative coordinates, unknown data, offset/3D biomes, удаление stale chest data, original checksums, no-overwrite, invalid input, создание/перемещение/удаление сущностей и отдельный entity fingerprint. + +Официальный Java 26.2 прочитал exact (1 chunk, 3 блока, 1 сущность), edited (2 chunks, 3 блока, 1 сущность) и новый экспорт (2 chunks, 2 блока). nbtlib 2.0.4 проверил Sponge-теги и их числовые типы. [Машиночитаемый результат](verification/interop.json), [команды и ограничения](interop.md). Использовались публичные codecs без запуска Minecraft-сервера и без принятия EULA. + +## Память и тик + +Бюджеты записаны в скрипте **до прогона**: 256 МиБ для процесса с 10 клиентами, p95 выборки работы тика ≤50 мс. Полный каталог включён. Один сервер содержит 5 служебных/демонстрационных миров и 1, 10, затем 100 дополнительных immutable forks лобби. Активные этапы: 10 клиентов в одной области общего мира и в отдельных мирах, движение/прыжок с вводом 20 Гц, по 15 секунд; метрики каждые 100 мс. Затем все клиенты отключаются. Linux VmHWM дополнительно фиксирует пик процесса, включая промежутки между выборками. + +Финальный прогон: + +- 1 / 10 / 100 пустующих forks: максимальный RSS **50.28 / 50.35 / 50.50 МиБ**. +- 10 клиентов в общем мире: RSS/VmHWM **57.00 МиБ**, p95 работы тика **9.54 мс**. +- 10 клиентов в 10 мирах: RSS/VmHWM **59.65 МиБ**, p95 **7.33 мс**. +- После отключения: 0 игроков и 0 активных миров; RSS остаётся **59.65 МиБ** из-за удерживаемого кэша/аллокатора. Нулевое число активных миров не означает нулевой RSS. +- Ограничение кэша выполнено во всех выборках, исходящие очереди и активные миры измерены. Оба заранее заданных бюджета пройдены. + +[Полные фазы и исходные выборки](verification/server-benchmark.json). p95 рассчитан по выборке последней работы тика, не по сетевой задержке и не по всей непрерывной последовательности тиков. Это короткий локальный тест движения; нагрузка ванильных механик, тысячи игроков и бесконечные пользовательские миры не включены. С Paper/NeoForge результат не сравнивался. + +Отдельный storage benchmark этапа 1 сохраняется в [storage-benchmark.json](verification/storage-benchmark.json): 256 уникальных секций, кэш 8, 100 forks, обход сверх кэша и независимые edit/reset. После создания forks число immutable blobs осталось 256. Это синтетический профиль ядра с двумя состояниями, отдельный от полного сервера. + +## Браузер и поставка + +[Браузерный протокол проверки](verification/browser.md) фиксирует реальные снимки/DOM, каталог, неполные формы, сущности, чистое подключение без полного registry, галерею, повторное соединение и проверенный ресурсный кэш. На этом стенде наблюдались 144 FPS; переносить это число на другие устройства нельзя. + +`python3 scripts/make_release.py` и вариант `--binaries` создают архив из чистого Git-коммита, добавляют `RELEASE.json` с SHA-256 каждого файла и проверяют каждый файл при повторном чтении архива. Соседний `.sha256` проверяет весь архив. Поставка проверяется повторной распаковкой, offline Cargo-проверкой исходников и запуском извлечённого Linux-бинарного файла с ресурсами из архива. Итоговый журнал упаковки находится рядом с архивами в `artifacts/`. + +## Границы приёмки + +Основные рубежи A-CORE/SERVER/CLIENT/MCP/SPLEEF подтверждены перечисленными тестами и браузерным осмотром. B-CONTENT, B-PACKAGES, B-INTEROP, B-PERSISTENCE выполнены в документированном профиле. B-MEMORY подтверждён указанной нагрузкой, а не произвольным масштабом. Более широкие пункты исходного ACCEPTANCE (долгий soak, все игровые контексты Minecraft, все варианты внешних миров и реальный Minecraft-плейтест) не объявляются пройденными. Заявления о полной ванильной симуляции, аппаратной отказоустойчивости или экономии относительно Paper отсутствуют. diff --git a/docs/interop.md b/docs/interop.md new file mode 100644 index 0000000..a3f8d82 --- /dev/null +++ b/docs/interop.md @@ -0,0 +1,88 @@ +# Interchange MVP: Java 26.2 и Sponge v3 + +`shacraft-compat` — отдельная Rust-библиотека и автономная CLI. Она действительно переносит состояния блоков в `WorldStore`: браузер, Control API и MCP редактируют импортированные данные, а экспорт читает текущие секции. Исходный мир хранится отдельно на диске с SHA-256. Возврат оригинала без изменений является отдельным проверенным режимом. + +Целевая версия: **Minecraft Java 26.2, DataVersion 4903**. Библиотека не запускает JVM. Java 25 нужна только воспроизводимой проверке и генератору собственных тестовых сохранений. + +## Команды + +Команды выполняются из корня репозитория. Все выходные пути должны отсутствовать. Каждый экспорт публикует **каталог**, даже экспорт одной постройки: в нём находятся `world.schem` и `conversion-report.json`. Если исходный мир уже содержит файл с этим именем, новый отчёт получает числовой суффикс; исходный файл сохраняется. + +```bash +cargo build --release -p shacraft-compat -p shacraft-server + +# Импорт остановленной копии Java-мира в новый native store. +target/release/shacraft-compat import-anvil /path/to/java-world data/imported + +# Открыть импорт в браузере через сервер; в списке миров выбрать main. +target/release/shacraft-server --data data/imported --listen 127.0.0.1:4000 + +# После остановки сервера: все импортированные измерения вместе. +target/release/shacraft-compat export-anvil data/imported artifacts/return-exact +target/release/shacraft-compat export-anvil data/imported artifacts/return-edited --mode best-effort + +# Новый мир Shacraft: полноценный каталог сохранения Java 26.2. +target/release/shacraft-compat export-anvil data artifacts/new-java-world --world lobby --mode best-effort + +# Sponge v3; Offset переносится в координаты native мира. +target/release/shacraft-compat import-schem /path/to/build.schem data/build --world main +target/release/shacraft-compat export-schem data/build artifacts/build-edited --mode best-effort + +# Экспорт ограниченного объёма нового native мира; границы включительные. +target/release/shacraft-compat export-schem data artifacts/build --world lobby --min=-16,-1,-16 --max=16,15,16 +``` + +CLI печатает отчёт JSON в stdout, ошибки — JSON в stderr и ненулевой exit code. Конвертация выполняется offline: `WorldStore` удерживает ту же блокировку единственного писателя, что сервер, поэтому параллельное редактирование не смешивает ревизии в одном экспорте. Сам исходный Java-мир должен быть остановленной копией: изменения размера/времени файла во время копирования обнаруживаются, но это не заменяет согласованный backup работающего Minecraft. + +## Что реализовано + +- Big-endian NBT: все 12 payload-типов, числовые разрядности, float/double bit patterns, signed arrays, Java modified UTF-8/CESU-8, Unicode, тип элемента пустого списка и неизвестные compound-поля. Duplicate compound keys, невозможные длины, превышение глубины и лишние распакованные байты отклоняются. +- Anvil: `level.dat`, обычные измерения, `dimensions//`, секционные палитры `Name`/`Properties`, современные непересекающие 64-битную границу индексы, отрицательные координаты, единообразные секции, биомы. Чтение gzip, zlib, raw и LZ4Block с checksum, включая внешние `c.x.z.mcc`. Запись zlib и внешний payload для chunk более 255 секторов. +- Исходные `entities`, `block_entities`, POI, биомы, inventories, playerdata, datapacks, неизвестные поля и произвольные обычные файлы сохраняются на диске. Отдельные entity region-файлы действительно читаются для серверного представления, а не только копируются. +- Sponge v3: `Blocks`, sparse palette indices и varints, block entities, сущности, полный 3D-контейнер биомов, размеры, Offset, Metadata и неизвестные теги. Контейнер `Schematic` вложен в корневой NBT compound согласно спецификации. +- Новый Anvil-мир использует собственный маленький шаблон сохранения, созданный public API Java 26.2. В 26.2 параметры генерации и game rules находятся в `data/minecraft/world_gen_settings.dat` и `game_rules.dat`; экспорт включает эти файлы. Генератор — пустой flat overworld, creative, три стандартных измерения, биом plains в новых секциях, высота редактируемого экспорта −64…319. + +## Сущности между MCP и файлами мира + +Импорт создаёт совместимый `server.sqlite3`, таблица `metadata(id,json)`. До 4 096 сущностей становятся доступны через сервер и MCP с исходными UUID, типом, координатами и поворотом. Остальные сущности, неподходящие координаты и неподдерживаемые записи остаются в оригинале и отмечаются `preserved`; они не превращаются в пропавшие данные. + +Исходный типизированный NBT каждой редактируемой сущности находится в `compat/entities/.nbt`; его хеш закреплён в provenance. `compat/native-entities.json` содержит исходное серверное представление. Экспорт отдельно сравнивает fingerprint сущностей и ревизии блоков, поэтому перемещение сущности без правки блоков также отклоняет `exact`. + +`best-effort` применяет создание, удаление и перемещение сущностей между chunks/regions и измерениями, а также yaw в радианах из серверного API. Явно поддерживаются свойства `Health`, `CustomName`, `NoGravity`, `Invisible`, `Invulnerable`, `Glowing`, `Silent`, `CustomNameVisible` с соответствующими числовыми/строковыми/логическими типами. Прочие свойства JSON сохраняются в `shacraft-native-entities*.json` и получают `entity_property_unmapped`; они не выдаются за vanilla NBT. Оригинальный NBT сохраняет остальные поля. AI, passengers, leash и связанные UUID не симулируются и не получают обещания точной семантики после перемещения. + +## Exact и best-effort + +`exact` использует DataVersion 4903 и тот же формат, что источник. Пока **любая новая ревизия блоков или изменённое серверное представление сущностей** консервативно запрещает точный возврат исходного мира/постройки. Это касается даже отменённой правки, восстановившей те же блоки: ревизия не возвращается назад. Без правок все исходные файлы побайтно идентичны после проверки SHA-256. + +Для нового native мира `exact` поддерживает представимый Sponge v3. Создание нового Anvil-окружения и межформатное преобразование требуют `best-effort`, поскольку свет и производные данные нуждаются в восстановлении Minecraft. Режим не содержит скрытых замен блоков. Неизвестный namespace остаётся в палитре и получает `unsupported`: целевому Minecraft нужен соответствующий мод, иначе он может заменить неизвестный блок воздухом. + +В изменённых Anvil chunks экспорт обновляет палитры/блоки, удаляет сохранённые light arrays и heightmaps, устанавливает `isLightOn=false`, удаляет устаревшие block entities и scheduled ticks непосредственно в изменённых координатах, инвалидирует POI record изменённого chunk. Все эти действия перечислены в отчёте, оригиналы находятся в `shacraft-source-sidecar*`. Это проверенный профиль сериализации и инвалидации; прохождение полной игровой симуляции света/POI не заявляется. + +При экспорте между `.schem` и Anvil переносится блоковая модель и явный entity bridge. Биомная сетка, block entities и произвольные metadata разных форматов пока архивируются без преобразования и получают `cross_format_opaque_data`. Оригинал находится рядом с результатом. Неподдерживаемые версии не мигрируют через DataFixer: `exact` отказывает, а `best-effort` сохраняет исходный DataVersion и диагностирует непроверенную схему. + +## Ограничения ресурсов и публикация + +- Не более 16 MiB распакованного NBT на chunk/постройку, глубина 64, до 1 000 000 NBT nodes. Это лимиты входных данных, не обещание 16 MiB RSS: Rust-структуры и строки занимают дополнительную память. +- Sponge: максимум 262 144 вокселя; Anvil обрабатывается по одному chunk, экспортная очередь координат находится на диске, страницы секций — не более 4 096 ключей. Кэш ядра конвертера — 32 секции плюс ограниченный SQLite cache. +- Entity bridge: 4 096 записей, до 16 KiB properties на сущность, ограничение сериализованного metadata 8 MiB (импортируемый entity subset ограничен 6 MiB с запасом для настроек сервера). Избыточные исходные сущности сохраняются без загрузки всех записей в серверную RAM. +- До 1 000 подробных issue в отчёте; `omitted_issues` явно считает оставшиеся события. До 256 импортированных измерений, 1 000 000 файлов, 8 GiB на исходный файл и 1 TiB суммарного источника. Symlinks, специальные файлы, выход из каталога, вложенный в исходный мир destination и повреждённые region headers отклоняются. +- Импорт строит весь новый native store, metadata и provenance в соседнем временном каталоге. Экспорт тоже использует staging. Файлы и каталоги синхронизируются, публикация — Linux `renameat2(RENAME_NOREPLACE)` и fsync родителя. Конвертер никогда не перезаписывает существующий destination и не меняет исходный Java-мир. +- При штатной ошибке staging удаляется; после SIGKILL может остаться непубликованный `.shacraft-convert-*`. Повторный импорт безопасно начинается заново. Возобновление с последнего chunk после аварии ещё не реализовано. Нужен запас диска: исходный архив плюс native DB, а изменённый экспорт сохраняет ещё одну полную копию исходника. + +`.schem` v2, legacy `.schematic`, vanilla structure `.nbt`, произвольные повороты/миграции версий и полная ванильная симуляция не включены в этот профиль. Они не распознаются как v3 по расширению файла. + +## Воспроизводимая проверка + +```bash +cargo test -p shacraft-compat +cargo clippy -p shacraft-compat --all-targets -- -D warnings +python3 -m venv artifacts/compat-venv +artifacts/compat-venv/bin/pip install nbtlib==2.0.4 +artifacts/compat-venv/bin/python scripts/compat_verify.py +``` + +Для последней команды нужен pinned JAR/JDK из `scripts/catalog_generate.py`; альтернативный JDK передаётся `--java-bin /path/to/jdk25/bin`. Скрипт проверяет SHA-1 JAR, компилирует `compat_java.java`, проверяет оригинальный, изменённый и новый Rust-экспорт через **официальные `NbtIo`, `RegionFile`, `SerializableChunkData`, `PrimaryLevelData`, `WorldGenSettings`**. Независимый `nbtlib 2.0.4` сравнивает типизированные Sponge-теги. Результат и Java logs сохраняются в `artifacts/compat-verification-*/verification.json`. + +Проверка 14 сентября 2026: 17 Rust-тестов и clippy прошли; Java прочитал exact 1 chunk / 3 блока, edited 2 chunks / 3 блока, new 2 chunks / 2 блока. Плюс тесты всех четырёх compression modes, внешнего большого chunk, границ палитр, отрицательных координат, entities move/create/remove, отказа exact после entity edits, checksum и no-overwrite. Java-проверка использует codecs, **не запускает сервер, не принимает EULA и не является игровым плейтестом**. + +Первичные источники: [Sponge v3 specification](https://github.com/SpongePowered/Schematic-Specification/blob/master/versions/schematic-3.md), [WorldEdit AnvilChunk18](https://github.com/EngineHub/WorldEdit/blob/dca10737fe81bd81bb6a096e1801cc2d94f1793b/worldedit-core/src/main/java/com/sk89q/worldedit/world/chunk/AnvilChunk18.java), [lz4-java block stream](https://github.com/lz4/lz4-java/blob/master/src/java/net/jpountz/lz4/LZ4BlockInputStream.java). Runtime реализация написана самостоятельно; код Minecraft и оригинальные игровые ресурсы не включены. diff --git a/docs/verification/browser.md b/docs/verification/browser.md new file mode 100644 index 0000000..76f1229 --- /dev/null +++ b/docs/verification/browser.md @@ -0,0 +1,14 @@ +# Браузерная проверка 2026-09-14 + +Проверялся реальный Codex In-app Browser на `http://127.0.0.1:4000` через CUA. API-тесты проводились отдельными HTTP/WebSocket-процессами. + +- Чистое открытие страницы: manifest, 8 проверенных ресурсов, вход в lobby, собственный WebGL2-рендер без ошибки инициализации. +- Лобби видно на реальном снимке: пиксельная площадка, световые столбы, арка, вода, trampoline, небо, солнце, HUD. +- Каталог открыл 32 367 состояний; поиск `minecraft:oak_slab` вернул 6 вариантов с точными type/waterlogged. Выбран `type=bottom,waterlogged=false`, быстрый слот сменился на него. +- Диагностика показывала live tick/ack, ревизию, координаты, число блоков, RAM и полезный кэш отдельно. В лобби на стенде наблюдались 144 FPS, 11 920 треугольников, 0 ожидающих секций. +- После остановки и замены серверного процесса открытая страница автоматически переподключилась. Ранее выбранный материал остался выбранным. +- Созданные через Control API сохраняемые сущности пришли в клиент; allay виден на снимке, счётчик сущностей обновился. +- Второй чистый браузерный клиент загрузил финальный протокол **без передачи полного registry**. Hotbar заполнился через поиск каталога; 8 ресурсов повторно прошли проверку из кэша. +- Выбор `gallery` заменил мир. На реальном снимке видны разные кубические и неполные формы, UI не перекрывает весь мир. Диагностика: 1 614 блоков в текущем окне, 7 808 треугольников, 144 FPS, 0 ожидающих секций. Все 1 197 образцов находятся в мире, а не обязательно в одном окне просмотра. + +FPS описывает этот браузер, оборудование, размер окна и точку наблюдения. Это не минимальное требование и не обещание производительности на другом устройстве. Движение, reach, строительство двух клиентов, Spleef, переподключение и аварийная долговечность дополнительно проверены воспроизводимым `scripts/check_server.mjs`. diff --git a/docs/verification/catalog-reproducibility.json b/docs/verification/catalog-reproducibility.json new file mode 100644 index 0000000..c6a4680 --- /dev/null +++ b/docs/verification/catalog-reproducibility.json @@ -0,0 +1,8 @@ +{ + "catalog": "byte-for-byte identical after full reports + runtime extraction", + "package_assets": "byte-for-byte identical after authoring script", + "source_hashes": { + "catalog.json.gz": "df889f6ce074b96130011d00b2f3b661cf910aba44064a0b5f361d7c064ce8ed", + "report-identities.json.gz": "938232b10d17071d3eefa54ce9a1c3026e17f39b5a2c0f4d6ede2644824d9135" + } +} diff --git a/docs/verification/environment.json b/docs/verification/environment.json new file mode 100644 index 0000000..b3af1c5 --- /dev/null +++ b/docs/verification/environment.json @@ -0,0 +1,11 @@ +{ + "date": "2026-09-14", + "platform": "Linux", + "machine": "x86_64", + "kernel": "7.0.0-31-generic", + "cpu": "AMD Ryzen 7 1700 Eight-Core Processor", + "rustc": "rustc 1.96.0 (ac68faa20 2026-05-25)", + "cargo": "cargo 1.96.0 (30a34c682 2026-05-25)", + "node": "v22.22.3", + "python": "3.14.4" +} diff --git a/docs/verification/interop.json b/docs/verification/interop.json new file mode 100644 index 0000000..f13bce7 --- /dev/null +++ b/docs/verification/interop.json @@ -0,0 +1,146 @@ +{ + "success": true, + "directory": "/home/emil/Desktop/shacraft-core/artifacts/compat-verification-2rxmacov", + "java": [ + { + "java26_2_verified": true, + "chunks": 1, + "sections": 1, + "entities": 1, + "nonair_blocks": 3, + "level_name": "Shacraft template", + "scope": "NbtIo,RegionFile,SerializableChunkData,PrimaryLevelData,WorldGenSettings codecs; no server simulation", + "case": "exact" + }, + { + "java26_2_verified": true, + "chunks": 2, + "sections": 25, + "entities": 1, + "nonair_blocks": 3, + "level_name": "Shacraft template", + "scope": "NbtIo,RegionFile,SerializableChunkData,PrimaryLevelData,WorldGenSettings codecs; no server simulation", + "case": "edited" + }, + { + "java26_2_verified": true, + "chunks": 2, + "sections": 48, + "entities": 0, + "nonair_blocks": 2, + "level_name": "own", + "scope": "NbtIo,RegionFile,SerializableChunkData,PrimaryLevelData,WorldGenSettings codecs; no server simulation", + "case": "new" + } + ], + "nbtlib_version": "2.0.4", + "source_jar_sha1": "823e2250d24b3ddac457a60c92a6a941943fcd6a", + "source_jar_sha256": "cdacdfb25898de5e4b4b0e5ddcc2722f77067e46605709c2d886c000ebb63ec5", + "nbtlib_sponge_typed_roundtrip": true, + "exact_source_files_identical": true, + "edited_world": { + "schema_version": 1, + "format": "anvil", + "mode": "best-effort", + "data_version": 4903, + "worlds": { + "main": 2 + }, + "chunks": 2, + "sections": 25, + "nonair_blocks": 3, + "issues": [ + { + "code": "source_archive", + "severity": "info", + "action": "preserved", + "location": "shacraft-source-sidecar", + "detail": "Verified original world retained for unsupported/stale data", + "count": 1 + }, + { + "code": "dependent_records_invalidated", + "severity": "warning", + "action": "dropped", + "location": "main:chunk-1,1", + "detail": "Removed1 stale block_entities at edited coordinates; originals retained in sidecar", + "count": 1 + }, + { + "code": "derived_fields_invalidated", + "severity": "warning", + "action": "approximated", + "location": "main:chunk-1,1", + "detail": "Removed stored light arrays and heightmaps, marked isLightOn=false for Minecraft reconstruction; unknown fields/entities/biomes preserved. No vanilla simulation guarantee.", + "count": 1 + }, + { + "code": "derived_fields_invalidated", + "severity": "warning", + "action": "approximated", + "location": "main:chunk32,-33", + "detail": "Removed stored light arrays and heightmaps, marked isLightOn=false for Minecraft reconstruction; unknown fields/entities/biomes preserved. No vanilla simulation guarantee.", + "count": 1 + }, + { + "code": "entity_edited", + "severity": "warning", + "action": "approximated", + "location": "00000001-0000-0002-0000-000300000004", + "detail": "Position/yaw/type and supported scalar properties applied; unknown original NBT retained; passenger/tether/AI relationships not simulated", + "count": 1 + } + ], + "issue_limit": 1000, + "omitted_issues": 0, + "source_files": 0, + "source_bytes": 0, + "native_entity_bytes": 0, + "profile": "Java 26.2 (DataVersion 4903); blocks editable, other typed NBT preserved on disk; offline writer lock" + }, + "native_world": { + "schema_version": 1, + "format": "anvil", + "mode": "best-effort", + "data_version": 4903, + "worlds": { + "own": 1 + }, + "chunks": 2, + "sections": 48, + "nonair_blocks": 2, + "issues": [ + { + "code": "new_world_profile", + "severity": "warning", + "action": "approximated", + "location": "level.dat", + "detail": "Creative Java 26.2 overworld, empty flat generator, Y[-64,319], default plains biomes. Minecraft reconstructs light/heightmaps. Native entities use the explicit property bridge.", + "count": 1 + }, + { + "code": "derived_fields_invalidated", + "severity": "warning", + "action": "approximated", + "location": "own:chunk-1,0", + "detail": "Removed stored light arrays and heightmaps, marked isLightOn=false for Minecraft reconstruction; unknown fields/entities/biomes preserved. No vanilla simulation guarantee.", + "count": 1 + }, + { + "code": "derived_fields_invalidated", + "severity": "warning", + "action": "approximated", + "location": "own:chunk0,0", + "detail": "Removed stored light arrays and heightmaps, marked isLightOn=false for Minecraft reconstruction; unknown fields/entities/biomes preserved. No vanilla simulation guarantee.", + "count": 1 + } + ], + "issue_limit": 1000, + "omitted_issues": 0, + "source_files": 0, + "source_bytes": 0, + "native_entity_bytes": 0, + "profile": "Java 26.2 (DataVersion 4903); blocks editable, other typed NBT preserved on disk; offline writer lock" + }, + "limitations": "Java checks official disk/container/palette/world-metadata codecs, not running server, client renderer, light simulation or EULA acceptance." +} diff --git a/docs/verification/mcp-sdk.json b/docs/verification/mcp-sdk.json new file mode 100644 index 0000000..d7addf8 --- /dev/null +++ b/docs/verification/mcp-sdk.json @@ -0,0 +1,19 @@ +{ + "passed": true, + "server_binary": "/home/emil/Desktop/shacraft-core/target/release/shacraft-server", + "mcp_binary": "/home/emil/Desktop/shacraft-core/target/release/shacraft-mcp", + "sdk": true, + "checks": [ + "SDK initialize, version negotiation, notification and ping", + "17 discoverable tool schemas accepted by SDK", + "4 resources read through SDK", + "Construction prompt and arguments", + "Durable write, read, idempotent retry, conflict content and undo", + "Plan and atomic idempotent commit", + "MCP PNG image content", + "Entity spawn/update/list/delete", + "Persisted world configuration and measured metrics", + "World reset" + ], + "world": "mcp_sdk_1789395818564" +} diff --git a/docs/verification/mvp-checks.txt b/docs/verification/mvp-checks.txt new file mode 100644 index 0000000..d4f934f --- /dev/null +++ b/docs/verification/mvp-checks.txt @@ -0,0 +1,402 @@ + Checking shacraft-compat v0.1.0 (/home/emil/Desktop/shacraft-core/crates/shacraft-compat) + Checking shacraft-server v0.1.0 (/home/emil/Desktop/shacraft-core/crates/shacraft-server) + Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.77s + Compiling shacraft-compat v0.1.0 (/home/emil/Desktop/shacraft-core/crates/shacraft-compat) + Compiling shacraft-server v0.1.0 (/home/emil/Desktop/shacraft-core/crates/shacraft-server) + Finished `test` profile [unoptimized + debuginfo] target(s) in 3.09s + Running unittests src/lib.rs (target/debug/deps/shacraft_compat-cd22d99df205fe27) + +running 8 tests +test anvil::tests::lz4_raw_and_compressed ... ok +test nbt::tests::rejects_bombs ... ok +test schem::tests::varint_validation ... ok +test nbt::tests::all_types_roundtrip ... ok +test anvil::tests::negative_region_zlib_and_external ... ok +test anvil::tests::all_compression_modes_and_external_payloads ... ok +test anvil::tests::section_palette_boundaries ... ok +test anvil::tests::oversized_chunk_writes_external_and_validates_checksum ... ok + +test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.37s + + Running unittests src/main.rs (target/debug/deps/shacraft_compat-bd4306d00d4a6c17) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/roundtrip.rs (target/debug/deps/roundtrip-f70ba20f52297682) + +running 9 tests +test malformed_input_is_not_published ... ok +test no_overwrite_and_provenance_hash_guard ... ok +test unsupported_data_version_rejects_exact_before_publication ... ok +test duplicate_entity_uuid_stays_outside_editable_subset ... ok +test sponge_entity_metadata_guard_and_position_roundtrip ... ok +test sponge_import_edits_unknown_states_and_preserves_nbt ... ok +test native_entity_edit_move_create_remove_roundtrip ... ok +test genuine_java_world_import_exact_roundtrip_edit_and_new_chunk ... ok +test native_new_world_export_and_schematic ... ok + +test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s + + Running unittests src/lib.rs (target/debug/deps/shacraft_content-ee19c845f27f8fb2) + +running 11 tests +test shapes::tests::four_quarter_rotations_restore_box ... ok +test shapes::tests::connected_fence_has_two_added_rails ... ok +test shapes::tests::rail_ascent_reaches_next_block ... ok +test packages::tests::changed_resource_rejected ... ok +test packages::tests::bundled_packages_hashes_dependencies_and_privacy ... ok +test packages::tests::paths_sizes_and_versions_are_validated ... ok +test tests::key_collision_states_and_orientation ... ok +test tests::official_entity_dimensions_and_authored_models_present ... ok +test tests::sampler_defaults_and_palette_are_registered ... ok +test tests::every_state_has_valid_shapes_and_explicit_coverage ... ok +test tests::complete_against_independent_official_report_projection ... ok + +test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.31s + + Running unittests src/lib.rs (target/debug/deps/shacraft_core-f7257583d500a490) + +running 11 tests +test section::tests::crc32_matches_standard_check_value ... ok +test section::tests::direct_read_rejects_out_of_range_cell - should panic ... ok +test section::tests::packed_indices_match_cross_byte_wire_fixture ... ok +test section::tests::uniform_round_trip_and_little_endian_layout ... ok +test section::tests::invalid_palettes_and_indices_are_rejected ... ok +test section::tests::structurally_invalid_headers_are_rejected_even_with_valid_checksum ... ok +test section::tests::dense_round_trip_and_size_crossover ... ok +test section::tests::truncated_extra_and_corrupted_bytes_are_rejected ... ok +test section::tests::every_storage_mode_checks_registry_bounds ... ok +test section::tests::palette_width_changes_at_powers_of_two ... ok +test section::tests::every_palette_width_round_trips ... ok + +test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s + + Running tests/contract.rs (target/debug/deps/contract-b050c7d50e9640d3) + +running 8 tests +test accepted_noop_advances_revision_and_prevents_undo_of_earlier_edit ... ok +test operation_id_collision_rejects_changed_payload_across_restart_and_methods ... ok +test edit_replay_precedes_revision_check_and_survives_reset_and_reopen ... ok +test invalid_batch_never_partially_writes_or_advances_revision ... ok +test reset_is_monotonic_idempotent_durable_and_an_undo_barrier ... ok +test undo_restores_inherited_content_and_replays_without_mutating_newer_state ... ok +test strict_undo_rejects_later_nonoverlapping_edits_and_aba_cycles ... ok +test snapshots_pin_effective_source_contents_and_air_overrides ... ok + +test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s + + Running tests/section_pages.rs (target/debug/deps/section_pages-92b3be09a3e83895) + +running 1 test +test section_pages_are_sorted_bounded_and_include_inherited_air_overrides ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s + + Running tests/storage.rs (target/debug/deps/storage-be95f5d467d8c630) + +running 10 tests +test lock_is_exclusive_and_released_on_drop ... ok +test registry_is_canonical_durable_and_rejects_malformed_identifiers ... ok +test corrupted_blob_is_reported_instead_of_air ... ok +test revision_overflow_rejects_mutation_but_keeps_original_replay ... ok +test sqlite_failure_mid_edit_rolls_back_blobs_history_and_revision ... ok +test explicit_gc_preserves_snapshots_history_and_cache_correctness ... ok +test oversized_unreachable_blob_is_rejected_before_reinterning ... ok +test compact_cache_evicts_distinct_blobs_and_shares_identical_sections ... ok +test coordinate_boundaries_and_inclusive_read_limits ... ok +test uniform_section_remains_twenty_bytes_in_resident_cache ... ok + +test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s + + Running unittests src/main.rs (target/debug/deps/shacraft_mcp-8af48a29a5cc1f7b) + +running 8 tests +test tests::build_shapes_validate_without_allowing_invented_parameters ... ok +test tests::supported_version_is_preserved ... ok +test tests::malformed_ids_and_requests_do_not_execute ... ok +test tests::notifications_never_generate_responses ... ok +test tests::invalid_tool_arguments_are_mcp_content_errors ... ok +test tests::unavailable_token_is_a_tool_error_not_transport_error ... ok +test tests::lifecycle_negotiates_and_rejects_before_initialization ... ok +test tests::bounded_reader_recovers_after_oversized_line ... ok + +test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s + + Running unittests src/main.rs (target/debug/deps/shacraft_server-33e07bc1da9f7f4e) + +running 18 tests +test game::tests::legacy_world_configuration_gets_safe_spleef_defaults ... ok +test packages::tests::changed_definition_or_module_fails_hash_verification_before_loading ... ok +test game::tests::outbox_has_byte_and_message_limits ... ok +test packages::tests::sandbox_executes_and_bounds_fuel_memory_and_results ... ok +test packages::tests::verified_custom_package_registers_content_and_binds_real_wasm ... ok +test packages::tests::duplicate_vanilla_and_invalid_geometry_definitions_are_rejected ... ok +test game::tests::trampoline_executes_wasm_despite_small_contact_gap ... ok +test game::tests::official_collision_shapes_drive_world_physics ... ok +test game::tests::arena_configuration_validates_before_mutation ... ok +test game::tests::authoritative_actions_reject_forged_targets_and_sync_real_edits ... ok +test game::tests::material_payloads_are_bounded_and_runtime_id_lookup_works_without_registry_dump ... ok +test game::tests::snapshots_carry_revision_and_slow_consumers_are_disconnected ... ok +test game::tests::gallery_contains_every_default_state_over_a_bounded_floor ... ok +test game::tests::eliminated_spleef_players_cannot_reenter_and_late_joins_spectate ... ok +test game::tests::entities_are_durable_and_failed_commits_do_not_publish_changes ... ok +test game::tests::restart_recovers_arena_configuration_and_cleans_interrupted_round ... ok +test game::tests::configured_spleef_rules_control_full_round_and_survive_restart ... ok +test game::tests::interrupted_creation_of_managed_world_can_finish_its_seed ... ok + +test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 15.29s + + Running unittests src/main.rs (target/debug/deps/shacraft_tools-1836b285f941c1f2) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests shacraft_compat + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests shacraft_content + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests shacraft_core + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Compiling shacraft-server v0.1.0 (/home/emil/Desktop/shacraft-core/crates/shacraft-server) + Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.71s +{ + "passed": true, + "checks": [ + "bounded resident cache with verified eviction while reading 80 sections", + "second writer rejected while owner is running", + "80 acknowledged edits and registry survive SIGKILL without flush", + "idempotent replay after SIGKILL precedes current revision check", + "invalid batch leaves both blocks and revision unchanged", + "interrupted 32768-cell transaction is atomic (recovered revision 0)", + "uncertain interrupted request can safely be retried", + "invalid request does not terminate the local test session", + "4096-cell uniform section occupies 20 encoded payload bytes in resident cache" + ], + "final_metrics": { + "process": { + "peak_rss_bytes": 8114176, + "rss_bytes": 8114176, + "source": "/proc/self/status (null when unavailable)" + }, + "storage": { + "cache_capacity_sections": 2, + "cache_entries": 1, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 1, + "cache_payload_bytes": 20, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 0, + "coordinate_limit": 30000000, + "database_bytes": 647168, + "history_change_count": 36944, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 18, + "last_mutation_duration_us": 0, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 82, + "os_rss_bytes": null, + "overlay_section_count": 97, + "registry_count": 2, + "registry_limit_states": 262144, + "registry_text_bytes": 32, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 0, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 16384, + "wal_bytes": 0, + "world_count": 3, + "world_limit": 10000 + } + }, + "limits": [ + "process crash tested; power loss and faulty hardware are not simulated", + "storage-only workload; no Paper or gameplay performance comparison" + ] +} +TAP version 13 +# Subtest: camera axes and world projection match the server coordinate convention +ok 1 - camera axes and world projection match the server coordinate convention + --- + duration_ms: 2.623771 + type: 'test' + ... +# Subtest: DDA resolves negative world coordinates and nearest entry face +ok 2 - DDA resolves negative world coordinates and nearest entry face + --- + duration_ms: 4.264518 + type: 'test' + ... +# Subtest: ray selection respects slab geometry and reach instead of selecting empty half +ok 3 - ray selection respects slab geometry and reach instead of selecting empty half + --- + duration_ms: 8.035945 + type: 'test' + ... +# Subtest: axis aligned ray slabs reject parallel paths outside a box +ok 4 - axis aligned ray slabs reject parallel paths outside a box + --- + duration_ms: 0.271763 + type: 'test' + ... +# Subtest: selection intersects a fence extension owned by the cell below +ok 5 - selection intersects a fence extension owned by the cell below + --- + duration_ms: 1.042738 + type: 'test' + ... +# Subtest: package geometry is selectable across its documented three-block extent +ok 6 - package geometry is selectable across its documented three-block extent + --- + duration_ms: 1.65838 + type: 'test' + ... +1..6 +# tests 6 +# suites 0 +# pass 6 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 134.144281 +{ + "passed": true, + "checks": [ + "Manifest resource SHA-256/size, admin token required, server WASM not public", + "Incompatible manifest rejected", + "Two clients receive shared snapshot and presence", + "Authoritative movement and collision; client position spoof ignored", + "Forged out-of-reach block break rejected", + "Reachable break/place, server revision ordering and broadcast", + "Late join receives current geometry and revision", + "Pinned template and independent clone isolation", + "Scoped game chat delivered to peer", + "Persisted entity events reach both clients", + "Reconnect restores authoritative world snapshot", + "Full two-player Spleef countdown, elimination, winner and automatic floor reset", + "Disconnect removes players and active worlds", + "Real SIGKILL/restart preserves committed blocks, entity properties and arena configuration" + ], + "metrics": { + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 1, + "entity_revision": 13, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 3.362786, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 61239296, + "slow_clients_disconnected": 1, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 8, + "cache_evictions": 0, + "cache_hits": 9, + "cache_misses": 8, + "cache_payload_bytes": 4304, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 0, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 22055, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 87, + "last_mutation_duration_us": 0, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 11, + "os_rss_bytes": null, + "overlay_section_count": 93, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 16384, + "wal_bytes": 1384352, + "world_count": 9, + "world_limit": 10000 + }, + "tick": 1, + "tick_ms": 3.362786, + "uptime_seconds": 0, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 9 + }, + "binary": "/home/emil/Desktop/shacraft-core/target/debug/shacraft-server", + "report_file": "/home/emil/Desktop/shacraft-core/artifacts/server-e2e-debug.json", + "data": "/tmp/shacraft-server-test-nBiKWZ" +} diff --git a/docs/verification/server-benchmark.json b/docs/verification/server-benchmark.json new file mode 100644 index 0000000..1db2484 --- /dev/null +++ b/docs/verification/server-benchmark.json @@ -0,0 +1,41161 @@ +{ + "passed": true, + "profile": "release", + "binary": "/home/emil/Desktop/shacraft-core/target/release/shacraft-server", + "budgets": { + "ten_client_rss_bytes": 268435456, + "p95_tick_ms": 50 + }, + "budget_results": { + "rss_passed": true, + "tick_passed": true + }, + "cache_bounded": true, + "workload": { + "fork_counts": [ + 1, + 10, + 100 + ], + "players": 10, + "input_hz": 20, + "sampling_interval_ms": 100, + "active_sample_ms": 15000, + "template": "lobby", + "scope": "local seeded map; storage and authoritative movement; not full vanilla mechanics" + }, + "limitations": [ + "No comparison with Minecraft or a modded server", + "Tick metrics measure server step work, not end-to-end latency", + "Process RSS excludes browser clients and operating-system disk cache", + "Cache entries remain bounded after disconnect; zero active worlds does not imply zero retained cache" + ], + "phases": [ + { + "phase": "idle_1_template_forks", + "samples": 29, + "rss_bytes": { + "p50": 52707328, + "p95": 52723712, + "max": 52723712 + }, + "tick_ms": { + "p50": 0.002024, + "p95": 0.002394, + "max": 0.002755 + }, + "process_high_water_bytes": 52723712, + "players": 0, + "active_worlds": 0, + "world_count": 6, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "slow_clients_disconnected": 0, + "queued_client_bytes": 0 + }, + { + "phase": "idle_10_template_forks", + "samples": 29, + "rss_bytes": { + "p50": 52789248, + "p95": 52793344, + "max": 52793344 + }, + "tick_ms": { + "p50": 0.001863, + "p95": 0.002424, + "max": 0.002925 + }, + "process_high_water_bytes": 52793344, + "players": 0, + "active_worlds": 0, + "world_count": 15, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "slow_clients_disconnected": 0, + "queued_client_bytes": 0 + }, + { + "phase": "idle_100_template_forks", + "samples": 29, + "rss_bytes": { + "p50": 52953088, + "p95": 52953088, + "max": 52953088 + }, + "tick_ms": { + "p50": 0.0019240000000000001, + "p95": 0.002365, + "max": 0.002835 + }, + "process_high_water_bytes": 52953088, + "players": 0, + "active_worlds": 0, + "world_count": 105, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "slow_clients_disconnected": 0, + "queued_client_bytes": 0 + }, + { + "phase": "10_moving_clients_shared_world", + "samples": 142, + "rss_bytes": { + "p50": 59494400, + "p95": 59691008, + "max": 59768832 + }, + "tick_ms": { + "p50": 2.205753, + "p95": 9.543319, + "max": 40.179120999999995 + }, + "process_high_water_bytes": 59768832, + "players": 10, + "active_worlds": 1, + "world_count": 105, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 7102, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "slow_clients_disconnected": 0, + "queued_client_bytes": 0 + }, + { + "phase": "10_moving_clients_separate_worlds", + "samples": 142, + "rss_bytes": { + "p50": 62513152, + "p95": 62533632, + "max": 62550016 + }, + "tick_ms": { + "p50": 2.0932899999999997, + "p95": 7.325514, + "max": 19.305461 + }, + "process_high_water_bytes": 62550016, + "players": 10, + "active_worlds": 10, + "world_count": 105, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14344, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "slow_clients_disconnected": 0, + "queued_client_bytes": 0 + }, + { + "phase": "after_disconnect_idle", + "samples": 29, + "rss_bytes": { + "p50": 62550016, + "p95": 62550016, + "max": 62550016 + }, + "tick_ms": { + "p50": 0.002004, + "p95": 0.0025450000000000004, + "max": 0.0026249999999999997 + }, + "process_high_water_bytes": 62550016, + "players": 0, + "active_worlds": 0, + "world_count": 105, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "slow_clients_disconnected": 0, + "queued_client_bytes": 0 + } + ], + "samples": [ + { + "phase": "idle_1_template_forks", + "time": 1789396049606, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52625408, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 22, + "tick_ms": 0.001804, + "uptime_seconds": 1, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52637696 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396049714, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52637696, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 24, + "tick_ms": 0.0016929999999999998, + "uptime_seconds": 1, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52658176 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396049824, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52658176, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 26, + "tick_ms": 0.002024, + "uptime_seconds": 1, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52666368 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396049931, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52666368, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 28, + "tick_ms": 0.0021739999999999997, + "uptime_seconds": 1, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52674560 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396050037, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52674560, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 30, + "tick_ms": 0.002254, + "uptime_seconds": 1, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52678656 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396050142, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52678656, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 32, + "tick_ms": 0.0016330000000000001, + "uptime_seconds": 1, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52682752 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396050248, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52682752, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 35, + "tick_ms": 0.0023350000000000003, + "uptime_seconds": 1, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52686848 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396050355, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52686848, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 37, + "tick_ms": 0.002064, + "uptime_seconds": 1, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52690944 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396050463, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52690944, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 39, + "tick_ms": 0.002103, + "uptime_seconds": 2, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52695040 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396050569, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52695040, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 41, + "tick_ms": 0.001993, + "uptime_seconds": 2, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52699136 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396050676, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52699136, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 43, + "tick_ms": 0.0016530000000000002, + "uptime_seconds": 2, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52703232 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396050782, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52703232, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 45, + "tick_ms": 0.002164, + "uptime_seconds": 2, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52703232 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396050888, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52703232, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 47, + "tick_ms": 0.002164, + "uptime_seconds": 2, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52707328 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396050993, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52707328, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 49, + "tick_ms": 0.001793, + "uptime_seconds": 2, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52707328 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396051099, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52707328, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 52, + "tick_ms": 0.002184, + "uptime_seconds": 2, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52711424 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396051205, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52715520, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 54, + "tick_ms": 0.002394, + "uptime_seconds": 2, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52715520 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396051311, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52715520, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 56, + "tick_ms": 0.002614, + "uptime_seconds": 2, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52715520 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396051417, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52715520, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 58, + "tick_ms": 0.001953, + "uptime_seconds": 2, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52719616 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396051523, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52719616, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 60, + "tick_ms": 0.001613, + "uptime_seconds": 3, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52719616 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396051629, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52719616, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 62, + "tick_ms": 0.001673, + "uptime_seconds": 3, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52719616 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396051734, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52719616, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 64, + "tick_ms": 0.0016929999999999998, + "uptime_seconds": 3, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52723712 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396051839, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52723712, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 66, + "tick_ms": 0.002144, + "uptime_seconds": 3, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52723712 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396051944, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52723712, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 68, + "tick_ms": 0.001683, + "uptime_seconds": 3, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52723712 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396052048, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52723712, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 71, + "tick_ms": 0.001562, + "uptime_seconds": 3, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52723712 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396052156, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52723712, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 73, + "tick_ms": 0.002144, + "uptime_seconds": 3, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52723712 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396052260, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52723712, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 75, + "tick_ms": 0.0016229999999999999, + "uptime_seconds": 3, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52723712 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396052366, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52723712, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 77, + "tick_ms": 0.001603, + "uptime_seconds": 3, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52723712 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396052471, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52723712, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 79, + "tick_ms": 0.002194, + "uptime_seconds": 4, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52723712 + }, + { + "phase": "idle_1_template_forks", + "time": 1789396052576, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 2, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52723712, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32375, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 295, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 6, + "world_limit": 10000 + }, + "tick": 81, + "tick_ms": 0.002755, + "uptime_seconds": 4, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 6, + "process_high_water_bytes": 52723712 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396053705, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52752384, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 104, + "tick_ms": 0.0017430000000000002, + "uptime_seconds": 5, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52756480 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396053811, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52756480, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 106, + "tick_ms": 0.0021739999999999997, + "uptime_seconds": 5, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52756480 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396053916, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52760576, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 108, + "tick_ms": 0.001503, + "uptime_seconds": 5, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52760576 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396054023, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52764672, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 110, + "tick_ms": 0.001583, + "uptime_seconds": 5, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52772864 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396054128, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52772864, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 112, + "tick_ms": 0.001523, + "uptime_seconds": 5, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52776960 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396054235, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52776960, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 114, + "tick_ms": 0.001502, + "uptime_seconds": 5, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52781056 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396054340, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52781056, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 116, + "tick_ms": 0.001803, + "uptime_seconds": 5, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52781056 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396054444, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52781056, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 118, + "tick_ms": 0.0023439999999999997, + "uptime_seconds": 6, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52781056 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396054550, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52781056, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 121, + "tick_ms": 0.002565, + "uptime_seconds": 6, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52781056 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396054656, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52781056, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 123, + "tick_ms": 0.0018729999999999999, + "uptime_seconds": 6, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52785152 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396054765, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52785152, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 125, + "tick_ms": 0.001854, + "uptime_seconds": 6, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52785152 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396054872, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52785152, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 127, + "tick_ms": 0.001893, + "uptime_seconds": 6, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52785152 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396054981, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52785152, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 129, + "tick_ms": 0.002424, + "uptime_seconds": 6, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52789248 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396055086, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52789248, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 131, + "tick_ms": 0.001993, + "uptime_seconds": 6, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52789248 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396055191, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52789248, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 133, + "tick_ms": 0.002204, + "uptime_seconds": 6, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52789248 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396055296, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52789248, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 136, + "tick_ms": 0.001663, + "uptime_seconds": 6, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52793344 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396055403, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52793344, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 138, + "tick_ms": 0.001553, + "uptime_seconds": 6, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52793344 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396055510, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52793344, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 140, + "tick_ms": 0.0019939999999999997, + "uptime_seconds": 7, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52793344 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396055619, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52793344, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 142, + "tick_ms": 0.0019939999999999997, + "uptime_seconds": 7, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52793344 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396055726, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52793344, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 144, + "tick_ms": 0.001593, + "uptime_seconds": 7, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52793344 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396055832, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52793344, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 146, + "tick_ms": 0.0019039999999999999, + "uptime_seconds": 7, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52793344 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396055939, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52793344, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 148, + "tick_ms": 0.002925, + "uptime_seconds": 7, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52793344 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396056043, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52793344, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 150, + "tick_ms": 0.001542, + "uptime_seconds": 7, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52793344 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396056147, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52793344, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 153, + "tick_ms": 0.001863, + "uptime_seconds": 7, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52793344 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396056254, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52793344, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 155, + "tick_ms": 0.002164, + "uptime_seconds": 7, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52793344 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396056359, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52793344, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 157, + "tick_ms": 0.001483, + "uptime_seconds": 7, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52793344 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396056464, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52793344, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 159, + "tick_ms": 0.001863, + "uptime_seconds": 8, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52793344 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396056570, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52793344, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 161, + "tick_ms": 0.0018440000000000002, + "uptime_seconds": 8, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52793344 + }, + { + "phase": "idle_10_template_forks", + "time": 1789396056676, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 11, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52793344, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32384, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 235, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 15, + "world_limit": 10000 + }, + "tick": 163, + "tick_ms": 0.001803, + "uptime_seconds": 8, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 15, + "process_high_water_bytes": 52793344 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396057917, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 188, + "tick_ms": 0.0016229999999999999, + "uptime_seconds": 9, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396058022, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 190, + "tick_ms": 0.001533, + "uptime_seconds": 9, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396058130, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 192, + "tick_ms": 0.002264, + "uptime_seconds": 9, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396058235, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 194, + "tick_ms": 0.0019240000000000001, + "uptime_seconds": 9, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396058343, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 196, + "tick_ms": 0.001753, + "uptime_seconds": 9, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396058447, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 199, + "tick_ms": 0.0019240000000000001, + "uptime_seconds": 10, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396058554, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 201, + "tick_ms": 0.001673, + "uptime_seconds": 10, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396058658, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 203, + "tick_ms": 0.001562, + "uptime_seconds": 10, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396058763, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 205, + "tick_ms": 0.002835, + "uptime_seconds": 10, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396058869, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 207, + "tick_ms": 0.002245, + "uptime_seconds": 10, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396058976, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 209, + "tick_ms": 0.001964, + "uptime_seconds": 10, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396059082, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 211, + "tick_ms": 0.002835, + "uptime_seconds": 10, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396059188, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 213, + "tick_ms": 0.0013930000000000001, + "uptime_seconds": 10, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396059294, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 215, + "tick_ms": 0.002365, + "uptime_seconds": 10, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396059399, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 218, + "tick_ms": 0.001563, + "uptime_seconds": 10, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396059504, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 220, + "tick_ms": 0.0016229999999999999, + "uptime_seconds": 11, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396059609, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 222, + "tick_ms": 0.001613, + "uptime_seconds": 11, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396059714, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 224, + "tick_ms": 0.002104, + "uptime_seconds": 11, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396059819, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 226, + "tick_ms": 0.001894, + "uptime_seconds": 11, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396059925, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 228, + "tick_ms": 0.001794, + "uptime_seconds": 11, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396060029, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 230, + "tick_ms": 0.0020540000000000003, + "uptime_seconds": 11, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396060136, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 232, + "tick_ms": 0.002104, + "uptime_seconds": 11, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396060241, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 234, + "tick_ms": 0.0020940000000000004, + "uptime_seconds": 11, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396060346, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 236, + "tick_ms": 0.001863, + "uptime_seconds": 11, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396060452, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 239, + "tick_ms": 0.0019429999999999998, + "uptime_seconds": 12, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396060557, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 241, + "tick_ms": 0.002084, + "uptime_seconds": 12, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396060661, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 243, + "tick_ms": 0.002184, + "uptime_seconds": 12, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396060768, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 245, + "tick_ms": 0.001823, + "uptime_seconds": 12, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "idle_100_template_forks", + "time": 1789396060875, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.009818, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 52953088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 0, + "cache_evictions": 0, + "cache_hits": 0, + "cache_misses": 0, + "cache_payload_bytes": 0, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 247, + "tick_ms": 0.002365, + "uptime_seconds": 12, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 52953088 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396063139, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58560512, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1016, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 292, + "tick_ms": 40.179120999999995, + "uptime_seconds": 14, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58560512 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396063251, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58560512, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1068, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 294, + "tick_ms": 1.684018, + "uptime_seconds": 14, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58560512 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396063358, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58568704, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1128, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 297, + "tick_ms": 2.3516280000000003, + "uptime_seconds": 14, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58572800 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396063466, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58572800, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1170, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 299, + "tick_ms": 2.237232, + "uptime_seconds": 15, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58580992 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396063572, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58589184, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1214, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 301, + "tick_ms": 2.228124, + "uptime_seconds": 15, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58589184 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396063678, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58589184, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1250, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 303, + "tick_ms": 1.793805, + "uptime_seconds": 15, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58589184 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396063785, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58589184, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1290, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 305, + "tick_ms": 1.761524, + "uptime_seconds": 15, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58589184 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396063891, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58589184, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1334, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 307, + "tick_ms": 2.936692, + "uptime_seconds": 15, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58589184 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396063995, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58589184, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1374, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 309, + "tick_ms": 2.512631, + "uptime_seconds": 15, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58589184 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396064099, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58589184, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1434, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 312, + "tick_ms": 2.144327, + "uptime_seconds": 15, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58589184 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396064205, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58589184, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1472, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 314, + "tick_ms": 1.5692519999999999, + "uptime_seconds": 15, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58589184 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396064313, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58589184, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1504, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 316, + "tick_ms": 1.4513079999999998, + "uptime_seconds": 15, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58589184 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396064420, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58597376, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1548, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 318, + "tick_ms": 5.3381929999999995, + "uptime_seconds": 15, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58597376 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396064526, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58597376, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1580, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 320, + "tick_ms": 1.873907, + "uptime_seconds": 16, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58597376 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396064632, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58597376, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1612, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 322, + "tick_ms": 1.932347, + "uptime_seconds": 16, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58597376 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396064739, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58597376, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1644, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 324, + "tick_ms": 3.2074529999999997, + "uptime_seconds": 16, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58597376 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396064845, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58597376, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1678, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 326, + "tick_ms": 2.086327, + "uptime_seconds": 16, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58597376 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396064949, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58597376, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1729, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 329, + "tick_ms": 1.5110810000000001, + "uptime_seconds": 16, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58597376 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396065054, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58597376, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1767, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 331, + "tick_ms": 2.205753, + "uptime_seconds": 16, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58597376 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396065166, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58597376, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1824, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 333, + "tick_ms": 17.565357, + "uptime_seconds": 16, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58597376 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396065271, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58658816, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1895, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 335, + "tick_ms": 11.693978000000001, + "uptime_seconds": 16, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58658816 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396065376, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58658816, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1950, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 337, + "tick_ms": 7.692106, + "uptime_seconds": 16, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58658816 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396065483, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58658816, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 1984, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 339, + "tick_ms": 2.096336, + "uptime_seconds": 17, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58658816 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396065589, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58658816, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2016, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 341, + "tick_ms": 1.872343, + "uptime_seconds": 17, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58658816 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396065694, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58658816, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2050, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 343, + "tick_ms": 2.556604, + "uptime_seconds": 17, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58658816 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396065798, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58658816, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2100, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 346, + "tick_ms": 1.49935, + "uptime_seconds": 17, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58658816 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396065903, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58658816, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2131, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 348, + "tick_ms": 1.383441, + "uptime_seconds": 17, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58658816 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396066009, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58658816, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2160, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 350, + "tick_ms": 3.541182, + "uptime_seconds": 17, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58658816 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396066114, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58658816, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2194, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 352, + "tick_ms": 2.29975, + "uptime_seconds": 17, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58658816 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396066218, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58658816, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2238, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 354, + "tick_ms": 1.7858399999999999, + "uptime_seconds": 17, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58658816 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396066325, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58658816, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2272, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 356, + "tick_ms": 3.648935, + "uptime_seconds": 17, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58658816 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396066429, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58658816, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2306, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 358, + "tick_ms": 2.000996, + "uptime_seconds": 18, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58658816 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396066536, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58658816, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2353, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 360, + "tick_ms": 1.643642, + "uptime_seconds": 18, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58658816 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396066640, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58855424, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2393, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 362, + "tick_ms": 2.167771, + "uptime_seconds": 18, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58855424 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396066747, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58867712, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2431, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 364, + "tick_ms": 4.516063, + "uptime_seconds": 18, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58867712 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396066853, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58867712, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2497, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 367, + "tick_ms": 2.2617179999999997, + "uptime_seconds": 18, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58867712 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396066958, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58867712, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2533, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 369, + "tick_ms": 2.2729299999999997, + "uptime_seconds": 18, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58867712 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396067064, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58867712, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2569, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 371, + "tick_ms": 2.4196959999999996, + "uptime_seconds": 18, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58867712 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396067170, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 58867712, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2607, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 373, + "tick_ms": 1.672406, + "uptime_seconds": 18, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 58867712 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396067275, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59002880, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2673, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 375, + "tick_ms": 5.182138999999999, + "uptime_seconds": 18, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59002880 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396067382, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59002880, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2714, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 377, + "tick_ms": 1.9125489999999998, + "uptime_seconds": 18, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59002880 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396067487, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59002880, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2754, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 379, + "tick_ms": 2.05098, + "uptime_seconds": 19, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59002880 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396067593, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59002880, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2806, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 381, + "tick_ms": 3.237811, + "uptime_seconds": 19, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59002880 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396067699, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59002880, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2866, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 384, + "tick_ms": 1.864448, + "uptime_seconds": 19, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59002880 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396067805, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59064320, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2926, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 386, + "tick_ms": 7.727943, + "uptime_seconds": 19, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59064320 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396067910, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59064320, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 2964, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 388, + "tick_ms": 1.937406, + "uptime_seconds": 19, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59064320 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396068015, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59064320, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3002, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 390, + "tick_ms": 2.285753, + "uptime_seconds": 19, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59064320 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396068120, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59064320, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3040, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 392, + "tick_ms": 2.75581, + "uptime_seconds": 19, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59064320 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396068225, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59064320, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3076, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 394, + "tick_ms": 1.887582, + "uptime_seconds": 19, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59064320 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396068333, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59064320, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3120, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 396, + "tick_ms": 2.2985879999999996, + "uptime_seconds": 19, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59064320 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396068439, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59064320, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3164, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 398, + "tick_ms": 2.645051, + "uptime_seconds": 20, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59064320 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396068546, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59080704, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3210, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 400, + "tick_ms": 7.712394, + "uptime_seconds": 20, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59084800 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396068652, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59088896, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3258, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 403, + "tick_ms": 1.5902209999999999, + "uptime_seconds": 20, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59092992 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396068757, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59092992, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3290, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 405, + "tick_ms": 1.408909, + "uptime_seconds": 20, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59092992 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396068862, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59092992, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3325, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 407, + "tick_ms": 1.477137, + "uptime_seconds": 20, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59097088 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396068968, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59097088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3361, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 409, + "tick_ms": 3.2523880000000003, + "uptime_seconds": 20, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59097088 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396069074, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59097088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3399, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 411, + "tick_ms": 2.007629, + "uptime_seconds": 20, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59097088 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396069183, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59097088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3437, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 413, + "tick_ms": 4.077164000000001, + "uptime_seconds": 20, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59097088 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396069289, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59097088, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3475, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 415, + "tick_ms": 1.824423, + "uptime_seconds": 20, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59097088 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396069394, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59101184, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3513, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 417, + "tick_ms": 3.393434, + "uptime_seconds": 20, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59101184 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396069514, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59203584, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3598, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 420, + "tick_ms": 10.956976000000001, + "uptime_seconds": 21, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59203584 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396069620, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59297792, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3664, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 422, + "tick_ms": 1.750323, + "uptime_seconds": 21, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59297792 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396069727, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59297792, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3702, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 424, + "tick_ms": 1.638151, + "uptime_seconds": 21, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59297792 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396069835, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59297792, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3740, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 426, + "tick_ms": 4.09654, + "uptime_seconds": 21, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59297792 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396069941, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59461632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3794, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 428, + "tick_ms": 1.526861, + "uptime_seconds": 21, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59461632 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396070049, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59461632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3832, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 430, + "tick_ms": 1.926415, + "uptime_seconds": 21, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59461632 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396070155, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59461632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3886, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 433, + "tick_ms": 3.585185, + "uptime_seconds": 21, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59461632 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396070262, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59461632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3920, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 435, + "tick_ms": 2.273921, + "uptime_seconds": 21, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59461632 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396070367, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59461632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3948, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 437, + "tick_ms": 1.86499, + "uptime_seconds": 21, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59461632 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396070473, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59461632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 3976, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 439, + "tick_ms": 2.139467, + "uptime_seconds": 22, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59461632 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396070578, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59494400, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4022, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 441, + "tick_ms": 6.58673, + "uptime_seconds": 22, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59494400 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396070683, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59494400, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4058, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 443, + "tick_ms": 2.572074, + "uptime_seconds": 22, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59494400 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396070789, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59494400, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4104, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 445, + "tick_ms": 2.194741, + "uptime_seconds": 22, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59494400 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396070894, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59494400, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4146, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 447, + "tick_ms": 1.83348, + "uptime_seconds": 22, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59494400 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396071002, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59494400, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4206, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 450, + "tick_ms": 4.343416, + "uptime_seconds": 22, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59494400 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396071107, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59494400, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4246, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 452, + "tick_ms": 2.0621720000000003, + "uptime_seconds": 22, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59494400 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396071212, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59494400, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4298, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 454, + "tick_ms": 1.830744, + "uptime_seconds": 22, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59494400 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396071317, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59494400, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4348, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 456, + "tick_ms": 2.291174, + "uptime_seconds": 22, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59494400 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396071421, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59494400, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4390, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 458, + "tick_ms": 1.78091, + "uptime_seconds": 22, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59494400 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396071526, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59494400, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4432, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 460, + "tick_ms": 3.834266, + "uptime_seconds": 23, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59494400 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396071635, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59494400, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4507, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 462, + "tick_ms": 9.543319, + "uptime_seconds": 23, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59494400 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396071743, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59539456, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4558, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 464, + "tick_ms": 4.5620080000000005, + "uptime_seconds": 23, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59539456 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396071854, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59539456, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4637, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 467, + "tick_ms": 5.844028000000001, + "uptime_seconds": 23, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59539456 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396071960, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59539456, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4679, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 469, + "tick_ms": 1.7481090000000001, + "uptime_seconds": 23, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59539456 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396072066, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59539456, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4717, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 471, + "tick_ms": 2.149076, + "uptime_seconds": 23, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59539456 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396072170, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59539456, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4764, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 473, + "tick_ms": 2.2034979999999997, + "uptime_seconds": 23, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59539456 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396072275, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59539456, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4808, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 475, + "tick_ms": 2.127856, + "uptime_seconds": 23, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59539456 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396072381, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59539456, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4852, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 477, + "tick_ms": 2.006878, + "uptime_seconds": 23, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59539456 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396072487, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59539456, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4896, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 479, + "tick_ms": 2.083401, + "uptime_seconds": 24, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59539456 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396072592, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59539456, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4936, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 481, + "tick_ms": 1.491745, + "uptime_seconds": 24, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59539456 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396072699, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59539456, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 4990, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 484, + "tick_ms": 2.165026, + "uptime_seconds": 24, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59539456 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396072803, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59539456, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5042, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 486, + "tick_ms": 6.691247, + "uptime_seconds": 24, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59539456 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396072908, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59539456, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5082, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 488, + "tick_ms": 2.3460769999999997, + "uptime_seconds": 24, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59539456 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396073015, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59539456, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5122, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 490, + "tick_ms": 1.6586999999999998, + "uptime_seconds": 24, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59539456 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396073120, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59539456, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5160, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 492, + "tick_ms": 2.165867, + "uptime_seconds": 24, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59539456 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396073226, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59539456, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5196, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 494, + "tick_ms": 2.6420850000000002, + "uptime_seconds": 24, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59539456 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396073330, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59539456, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5245, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 496, + "tick_ms": 5.996125, + "uptime_seconds": 24, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59539456 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396073435, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59539456, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5297, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 498, + "tick_ms": 2.60187, + "uptime_seconds": 25, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59539456 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396073541, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59539456, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5335, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 500, + "tick_ms": 2.365795, + "uptime_seconds": 25, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59539456 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396073647, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59539456, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 502, + "tick_ms": 6.914408000000001, + "uptime_seconds": 25, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59539456 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396073752, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59654144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5480, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 505, + "tick_ms": 1.977772, + "uptime_seconds": 25, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59654144 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396073856, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59654144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5514, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 507, + "tick_ms": 2.408235, + "uptime_seconds": 25, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59654144 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396073964, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59654144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5548, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 509, + "tick_ms": 3.584905, + "uptime_seconds": 25, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59654144 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396074071, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59654144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5582, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 511, + "tick_ms": 3.528117, + "uptime_seconds": 25, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59654144 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396074178, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59654144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5616, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 513, + "tick_ms": 4.731007, + "uptime_seconds": 25, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59654144 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396074284, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59654144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5650, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 515, + "tick_ms": 3.594773, + "uptime_seconds": 25, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59654144 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396074390, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59654144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5679, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 517, + "tick_ms": 3.3115699999999997, + "uptime_seconds": 25, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59654144 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396074495, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59654144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5707, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 519, + "tick_ms": 3.382343, + "uptime_seconds": 26, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59654144 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396074600, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59654144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5755, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 522, + "tick_ms": 1.407967, + "uptime_seconds": 26, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59654144 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396074706, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59654144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5787, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 524, + "tick_ms": 1.8612730000000002, + "uptime_seconds": 26, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59654144 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396074812, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59654144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5819, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 526, + "tick_ms": 1.8107769999999999, + "uptime_seconds": 26, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59654144 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396074917, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59654144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5864, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 528, + "tick_ms": 3.188457, + "uptime_seconds": 26, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59654144 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396075023, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59654144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5900, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 530, + "tick_ms": 1.9805270000000001, + "uptime_seconds": 26, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59654144 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396075129, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59654144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5936, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 532, + "tick_ms": 1.806138, + "uptime_seconds": 26, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59654144 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396075235, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59654144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 5972, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 534, + "tick_ms": 2.113227, + "uptime_seconds": 26, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59654144 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396075341, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59654144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6007, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 536, + "tick_ms": 1.496654, + "uptime_seconds": 26, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59654144 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396075448, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59654144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6058, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 539, + "tick_ms": 1.969477, + "uptime_seconds": 27, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59654144 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396075554, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59654144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6092, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 541, + "tick_ms": 4.399482, + "uptime_seconds": 27, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59654144 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396075661, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59654144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6138, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 543, + "tick_ms": 10.271383, + "uptime_seconds": 27, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59654144 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396075768, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6188, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 545, + "tick_ms": 13.33291, + "uptime_seconds": 27, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396075873, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6220, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 547, + "tick_ms": 4.463873, + "uptime_seconds": 27, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396075979, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6268, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 549, + "tick_ms": 11.025376, + "uptime_seconds": 27, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396076084, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6304, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 551, + "tick_ms": 5.202788, + "uptime_seconds": 27, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396076190, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6349, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 553, + "tick_ms": 2.348081, + "uptime_seconds": 27, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396076294, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6404, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 555, + "tick_ms": 9.084944, + "uptime_seconds": 27, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396076400, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6455, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 558, + "tick_ms": 1.478089, + "uptime_seconds": 27, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396076504, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6489, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 560, + "tick_ms": 1.923881, + "uptime_seconds": 28, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396076609, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6522, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 562, + "tick_ms": 1.862685, + "uptime_seconds": 28, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396076713, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6558, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 564, + "tick_ms": 1.549804, + "uptime_seconds": 28, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396076818, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6598, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 566, + "tick_ms": 1.885698, + "uptime_seconds": 28, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396076923, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6656, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 568, + "tick_ms": 5.69161, + "uptime_seconds": 28, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396077028, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6686, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 570, + "tick_ms": 1.945832, + "uptime_seconds": 28, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396077133, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6716, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 572, + "tick_ms": 2.01395, + "uptime_seconds": 28, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396077237, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6746, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 574, + "tick_ms": 1.48912, + "uptime_seconds": 28, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396077342, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6778, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 576, + "tick_ms": 1.770591, + "uptime_seconds": 28, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396077453, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6830, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 579, + "tick_ms": 5.188732, + "uptime_seconds": 29, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396077558, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6866, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 581, + "tick_ms": 4.172614, + "uptime_seconds": 29, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396077665, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6902, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 583, + "tick_ms": 2.2159720000000003, + "uptime_seconds": 29, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396077772, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6938, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 585, + "tick_ms": 4.046586, + "uptime_seconds": 29, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396077877, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 6974, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 587, + "tick_ms": 1.690049, + "uptime_seconds": 29, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396077982, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59691008, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 7038, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 589, + "tick_ms": 11.492156999999999, + "uptime_seconds": 29, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59691008 + }, + { + "phase": "10_moving_clients_shared_world", + "time": 1789396078087, + "active_worlds": 1, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 59768832, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 7102, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 591, + "tick_ms": 1.933739, + "uptime_seconds": 29, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 59768832 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396080277, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62013440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8106, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 635, + "tick_ms": 6.692489, + "uptime_seconds": 31, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62013440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396080381, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62017536, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8203, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 637, + "tick_ms": 2.173322, + "uptime_seconds": 31, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62017536 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396080486, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62017536, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8243, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 639, + "tick_ms": 1.390274, + "uptime_seconds": 32, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62017536 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396080592, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62017536, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8283, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 641, + "tick_ms": 1.6018320000000001, + "uptime_seconds": 32, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62017536 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396080699, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62017536, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8349, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 644, + "tick_ms": 1.6187639999999999, + "uptime_seconds": 32, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62017536 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396080806, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62017536, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8385, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 646, + "tick_ms": 4.008966, + "uptime_seconds": 32, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62017536 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396080912, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62021632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8425, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 648, + "tick_ms": 3.80452, + "uptime_seconds": 32, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62021632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396081017, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62021632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8469, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 650, + "tick_ms": 4.009145, + "uptime_seconds": 32, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62021632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396081124, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62021632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8509, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 652, + "tick_ms": 3.64055, + "uptime_seconds": 32, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62021632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396081230, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62021632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8549, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 654, + "tick_ms": 1.560535, + "uptime_seconds": 32, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62021632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396081337, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62021632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8589, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 656, + "tick_ms": 1.812059, + "uptime_seconds": 32, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62021632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396081444, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62021632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8623, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 658, + "tick_ms": 1.497876, + "uptime_seconds": 33, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62021632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396081554, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62021632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8683, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 661, + "tick_ms": 7.037049, + "uptime_seconds": 33, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62021632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396081660, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62021632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8715, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 663, + "tick_ms": 2.073522, + "uptime_seconds": 33, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62021632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396081765, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62021632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8747, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 665, + "tick_ms": 1.333687, + "uptime_seconds": 33, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62021632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396081872, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62021632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8779, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 667, + "tick_ms": 1.4305489999999998, + "uptime_seconds": 33, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62021632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396081979, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62021632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8813, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 669, + "tick_ms": 1.69092, + "uptime_seconds": 33, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62021632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396082085, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62021632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8847, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 671, + "tick_ms": 1.3660180000000002, + "uptime_seconds": 33, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62021632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396082192, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62021632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8883, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 673, + "tick_ms": 2.115802, + "uptime_seconds": 33, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62021632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396082299, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62021632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 8936, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 676, + "tick_ms": 1.8869909999999999, + "uptime_seconds": 33, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62021632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396082413, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62062592, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9028, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 678, + "tick_ms": 6.372155, + "uptime_seconds": 33, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62062592 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396082518, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62066688, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9083, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 680, + "tick_ms": 7.325514, + "uptime_seconds": 34, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62066688 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396082625, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62066688, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9117, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 682, + "tick_ms": 1.4616779999999998, + "uptime_seconds": 34, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62066688 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396082731, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62066688, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9150, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 684, + "tick_ms": 1.4809249999999998, + "uptime_seconds": 34, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62066688 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396082835, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62066688, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9184, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 686, + "tick_ms": 3.835839, + "uptime_seconds": 34, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62066688 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396082940, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62066688, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9218, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 688, + "tick_ms": 1.810607, + "uptime_seconds": 34, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62066688 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396083045, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62066688, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9250, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 690, + "tick_ms": 1.4672990000000001, + "uptime_seconds": 34, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62066688 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396083149, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62066688, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9294, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 693, + "tick_ms": 1.543823, + "uptime_seconds": 34, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62066688 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396083255, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62066688, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9328, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 695, + "tick_ms": 1.496885, + "uptime_seconds": 34, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62066688 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396083361, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62066688, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9372, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 697, + "tick_ms": 1.93397, + "uptime_seconds": 34, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62066688 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396083470, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62066688, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9406, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 699, + "tick_ms": 1.797803, + "uptime_seconds": 35, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62066688 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396083574, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62066688, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9440, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 701, + "tick_ms": 2.0932899999999997, + "uptime_seconds": 35, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62066688 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396083680, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62066688, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9487, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 703, + "tick_ms": 1.6804109999999999, + "uptime_seconds": 35, + "wasm": { + "calls": 2, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62066688 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396083788, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62066688, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9527, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 705, + "tick_ms": 2.0132890000000003, + "uptime_seconds": 35, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62066688 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396083892, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62066688, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9565, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 707, + "tick_ms": 1.82284, + "uptime_seconds": 35, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62066688 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396083999, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62066688, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9631, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 710, + "tick_ms": 2.334455, + "uptime_seconds": 35, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62066688 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396084104, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62066688, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9667, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 712, + "tick_ms": 1.709997, + "uptime_seconds": 35, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62066688 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396084209, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62066688, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9703, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 714, + "tick_ms": 1.3672, + "uptime_seconds": 35, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62066688 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396084314, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62066688, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9741, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 716, + "tick_ms": 4.081863, + "uptime_seconds": 35, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62066688 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396084418, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62087168, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9807, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 718, + "tick_ms": 9.892498, + "uptime_seconds": 35, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62087168 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396084524, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62087168, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9848, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 720, + "tick_ms": 1.837027, + "uptime_seconds": 36, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62087168 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396084628, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62087168, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9888, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 722, + "tick_ms": 1.868656, + "uptime_seconds": 36, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62087168 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396084733, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62087168, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9940, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 724, + "tick_ms": 3.9867130000000004, + "uptime_seconds": 36, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62087168 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396084837, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62087168, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 9980, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 726, + "tick_ms": 1.445408, + "uptime_seconds": 36, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62087168 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396084944, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62087168, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10020, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 728, + "tick_ms": 2.090315, + "uptime_seconds": 36, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62087168 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396085050, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62087168, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10098, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 731, + "tick_ms": 1.742689, + "uptime_seconds": 36, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62087168 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396085156, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62087168, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10136, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 733, + "tick_ms": 1.782153, + "uptime_seconds": 36, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62087168 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396085263, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62087168, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10174, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 735, + "tick_ms": 3.78942, + "uptime_seconds": 36, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62087168 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396085369, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62087168, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10210, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 737, + "tick_ms": 3.843774, + "uptime_seconds": 36, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62091264 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396085474, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62091264, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10254, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 739, + "tick_ms": 1.7709519999999999, + "uptime_seconds": 37, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62091264 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396085580, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62091264, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10298, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 741, + "tick_ms": 2.034129, + "uptime_seconds": 37, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62091264 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396085684, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62091264, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10344, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 743, + "tick_ms": 5.624153, + "uptime_seconds": 37, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62091264 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396085791, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62091264, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10376, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 745, + "tick_ms": 3.688731, + "uptime_seconds": 37, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62091264 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396085899, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62091264, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10408, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 747, + "tick_ms": 3.0246280000000003, + "uptime_seconds": 37, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62091264 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396086004, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62091264, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10459, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 750, + "tick_ms": 1.935573, + "uptime_seconds": 37, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62091264 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396086110, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62091264, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10495, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 752, + "tick_ms": 1.804015, + "uptime_seconds": 37, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62091264 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396086217, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62091264, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10533, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 754, + "tick_ms": 2.031513, + "uptime_seconds": 37, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62091264 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396086321, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62091264, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10571, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 756, + "tick_ms": 2.2644539999999997, + "uptime_seconds": 37, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62091264 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396086426, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62091264, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10609, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 758, + "tick_ms": 1.518645, + "uptime_seconds": 38, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62091264 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396086532, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62177280, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10675, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 760, + "tick_ms": 2.622318, + "uptime_seconds": 38, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62177280 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396086638, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62177280, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10713, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 762, + "tick_ms": 1.690901, + "uptime_seconds": 38, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62177280 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396086745, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62345216, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10807, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 764, + "tick_ms": 19.123327999999997, + "uptime_seconds": 38, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62345216 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396086853, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62345216, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10864, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 767, + "tick_ms": 4.197171, + "uptime_seconds": 38, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62345216 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396086961, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62345216, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10902, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 769, + "tick_ms": 1.7737969999999998, + "uptime_seconds": 38, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62345216 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396087066, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62431232, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10956, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 771, + "tick_ms": 3.9558350000000004, + "uptime_seconds": 38, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62431232 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396087170, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62431232, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 10994, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 773, + "tick_ms": 3.182766, + "uptime_seconds": 38, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62431232 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396087275, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62431232, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11032, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 775, + "tick_ms": 3.207192, + "uptime_seconds": 38, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62431232 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396087381, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62431232, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11067, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 777, + "tick_ms": 1.591383, + "uptime_seconds": 38, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62431232 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396087487, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62431232, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11099, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 779, + "tick_ms": 3.0779789999999996, + "uptime_seconds": 39, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62431232 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396087595, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62431232, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11127, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 781, + "tick_ms": 4.140192, + "uptime_seconds": 39, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62431232 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396087711, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62513152, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11186, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 784, + "tick_ms": 11.912911, + "uptime_seconds": 39, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62513152 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396087818, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62513152, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11218, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 786, + "tick_ms": 2.055078, + "uptime_seconds": 39, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62513152 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396087923, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62513152, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11264, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 788, + "tick_ms": 1.6253170000000001, + "uptime_seconds": 39, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62513152 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396088030, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62513152, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11310, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 790, + "tick_ms": 4.979998, + "uptime_seconds": 39, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62513152 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396088135, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62513152, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11353, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 792, + "tick_ms": 1.530127, + "uptime_seconds": 39, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62513152 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396088242, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62513152, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11393, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 794, + "tick_ms": 5.042266, + "uptime_seconds": 39, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62513152 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396088354, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62513152, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11464, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 797, + "tick_ms": 4.94964, + "uptime_seconds": 39, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62513152 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396088458, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62513152, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11514, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 799, + "tick_ms": 1.615188, + "uptime_seconds": 40, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62513152 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396088563, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11584, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 801, + "tick_ms": 2.26269, + "uptime_seconds": 40, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396088668, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11626, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 803, + "tick_ms": 1.4209319999999999, + "uptime_seconds": 40, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396088773, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11701, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 805, + "tick_ms": 6.3514349999999995, + "uptime_seconds": 40, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396088878, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11743, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 807, + "tick_ms": 1.57956, + "uptime_seconds": 40, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396088983, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11794, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 809, + "tick_ms": 4.124744, + "uptime_seconds": 40, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396089087, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11850, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 811, + "tick_ms": 2.4456550000000004, + "uptime_seconds": 40, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396089193, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11896, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 813, + "tick_ms": 3.824597, + "uptime_seconds": 40, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396089302, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11957, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 816, + "tick_ms": 4.481146, + "uptime_seconds": 40, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396089409, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 11998, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 818, + "tick_ms": 3.807314, + "uptime_seconds": 40, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396089514, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12042, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 820, + "tick_ms": 2.208237, + "uptime_seconds": 41, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396089619, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12086, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 822, + "tick_ms": 4.8558129999999995, + "uptime_seconds": 41, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396089724, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12130, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 824, + "tick_ms": 1.5845200000000002, + "uptime_seconds": 41, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396089828, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12172, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 826, + "tick_ms": 1.502005, + "uptime_seconds": 41, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396089935, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12208, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 828, + "tick_ms": 1.9969990000000002, + "uptime_seconds": 41, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396090040, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12245, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 830, + "tick_ms": 1.586804, + "uptime_seconds": 41, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396090145, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12297, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 832, + "tick_ms": 4.453414, + "uptime_seconds": 41, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396090252, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12355, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 835, + "tick_ms": 3.950385, + "uptime_seconds": 41, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396090358, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12392, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 837, + "tick_ms": 3.5756680000000003, + "uptime_seconds": 41, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396090463, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12437, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 839, + "tick_ms": 4.536892, + "uptime_seconds": 42, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396090569, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12473, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 841, + "tick_ms": 1.895667, + "uptime_seconds": 42, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396090673, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12525, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 843, + "tick_ms": 2.144246, + "uptime_seconds": 42, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396090779, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62525440, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12584, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 845, + "tick_ms": 19.305461, + "uptime_seconds": 42, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62525440 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396090886, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12635, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 847, + "tick_ms": 7.287933, + "uptime_seconds": 42, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396090992, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12678, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 849, + "tick_ms": 5.335578, + "uptime_seconds": 42, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396091102, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12741, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 852, + "tick_ms": 4.341022, + "uptime_seconds": 42, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396091209, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12777, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 854, + "tick_ms": 4.171862999999999, + "uptime_seconds": 42, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396091314, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12813, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 856, + "tick_ms": 1.3555080000000002, + "uptime_seconds": 42, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396091419, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12849, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 858, + "tick_ms": 1.781512, + "uptime_seconds": 42, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396091524, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12881, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 860, + "tick_ms": 1.614496, + "uptime_seconds": 43, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396091631, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12912, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 862, + "tick_ms": 1.200104, + "uptime_seconds": 43, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396091737, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12944, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 864, + "tick_ms": 3.0920650000000003, + "uptime_seconds": 43, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396091844, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 12976, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 866, + "tick_ms": 3.0880780000000003, + "uptime_seconds": 43, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396091951, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13024, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 869, + "tick_ms": 2.858063, + "uptime_seconds": 43, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396092059, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13056, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 871, + "tick_ms": 2.7995929999999998, + "uptime_seconds": 43, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396092166, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13101, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 873, + "tick_ms": 1.44673, + "uptime_seconds": 43, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396092272, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13137, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 875, + "tick_ms": 1.3413410000000001, + "uptime_seconds": 43, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396092377, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13174, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 877, + "tick_ms": 1.392277, + "uptime_seconds": 43, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396092484, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13212, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 879, + "tick_ms": 3.487571, + "uptime_seconds": 44, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396092592, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13246, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 881, + "tick_ms": 1.347963, + "uptime_seconds": 44, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396092696, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13279, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 883, + "tick_ms": 2.755039, + "uptime_seconds": 44, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396092801, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13342, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 886, + "tick_ms": 4.086571, + "uptime_seconds": 44, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396092907, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13378, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 888, + "tick_ms": 3.1058209999999997, + "uptime_seconds": 44, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396093013, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13416, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 890, + "tick_ms": 1.445568, + "uptime_seconds": 44, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396093118, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13480, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 892, + "tick_ms": 1.650374, + "uptime_seconds": 44, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396093225, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13516, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 894, + "tick_ms": 1.653791, + "uptime_seconds": 44, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396093332, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13562, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 896, + "tick_ms": 9.74473, + "uptime_seconds": 44, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396093439, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13615, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 898, + "tick_ms": 4.582267, + "uptime_seconds": 45, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396093545, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13649, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 900, + "tick_ms": 1.288262, + "uptime_seconds": 45, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396093650, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13700, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 903, + "tick_ms": 1.942876, + "uptime_seconds": 45, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396093758, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13734, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 905, + "tick_ms": 3.363637, + "uptime_seconds": 45, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396093863, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13774, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 907, + "tick_ms": 1.452681, + "uptime_seconds": 45, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396093967, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13810, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 909, + "tick_ms": 1.612443, + "uptime_seconds": 45, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396094071, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13851, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 911, + "tick_ms": 1.913761, + "uptime_seconds": 45, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396094177, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13893, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 913, + "tick_ms": 7.9701900000000006, + "uptime_seconds": 45, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396094284, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13923, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 915, + "tick_ms": 2.72886, + "uptime_seconds": 45, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396094388, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13958, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 917, + "tick_ms": 5.009784, + "uptime_seconds": 45, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396094493, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 13990, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 919, + "tick_ms": 1.826627, + "uptime_seconds": 46, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396094600, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14044, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 922, + "tick_ms": 1.4310910000000001, + "uptime_seconds": 46, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396094706, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14080, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 924, + "tick_ms": 2.241069, + "uptime_seconds": 46, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396094812, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14116, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 926, + "tick_ms": 2.146391, + "uptime_seconds": 46, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396094918, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14180, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 928, + "tick_ms": 4.168076, + "uptime_seconds": 46, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396095024, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62533632, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14244, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 930, + "tick_ms": 8.468481, + "uptime_seconds": 46, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62533632 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396095130, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14308, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 932, + "tick_ms": 9.162901, + "uptime_seconds": 46, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "10_moving_clients_separate_worlds", + "time": 1789396095236, + "active_worlds": 10, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 10, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14344, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 934, + "tick_ms": 1.629585, + "uptime_seconds": 46, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396096850, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 967, + "tick_ms": 0.0014529999999999999, + "uptime_seconds": 48, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396096955, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 969, + "tick_ms": 0.001823, + "uptime_seconds": 48, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396097061, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 971, + "tick_ms": 0.002164, + "uptime_seconds": 48, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396097167, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 973, + "tick_ms": 0.001804, + "uptime_seconds": 48, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396097271, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 975, + "tick_ms": 0.001372, + "uptime_seconds": 48, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396097377, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 977, + "tick_ms": 0.001804, + "uptime_seconds": 48, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396097484, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 979, + "tick_ms": 0.001603, + "uptime_seconds": 49, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396097591, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 981, + "tick_ms": 0.002204, + "uptime_seconds": 49, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396097697, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 983, + "tick_ms": 0.001894, + "uptime_seconds": 49, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396097804, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 986, + "tick_ms": 0.002494, + "uptime_seconds": 49, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396097911, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 988, + "tick_ms": 0.0025450000000000004, + "uptime_seconds": 49, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396098017, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 990, + "tick_ms": 0.0018440000000000002, + "uptime_seconds": 49, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396098125, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 992, + "tick_ms": 0.002004, + "uptime_seconds": 49, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396098240, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 994, + "tick_ms": 0.001663, + "uptime_seconds": 49, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396098347, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 996, + "tick_ms": 0.002074, + "uptime_seconds": 49, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396098452, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 999, + "tick_ms": 0.001833, + "uptime_seconds": 50, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396098557, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 1001, + "tick_ms": 0.0017230000000000001, + "uptime_seconds": 50, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396098664, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 1003, + "tick_ms": 0.002465, + "uptime_seconds": 50, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396098770, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 1005, + "tick_ms": 0.0017829999999999999, + "uptime_seconds": 50, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396098876, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 1007, + "tick_ms": 0.002034, + "uptime_seconds": 50, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396098981, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 1009, + "tick_ms": 0.002294, + "uptime_seconds": 50, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396099087, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 1011, + "tick_ms": 0.002024, + "uptime_seconds": 50, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396099195, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 1013, + "tick_ms": 0.002495, + "uptime_seconds": 50, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396099302, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 1016, + "tick_ms": 0.0026249999999999997, + "uptime_seconds": 50, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396099409, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 1018, + "tick_ms": 0.002285, + "uptime_seconds": 50, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396099516, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 1020, + "tick_ms": 0.002475, + "uptime_seconds": 51, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396099623, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 1022, + "tick_ms": 0.002555, + "uptime_seconds": 51, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396099729, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 1024, + "tick_ms": 0.0016330000000000001, + "uptime_seconds": 51, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + }, + { + "phase": "after_disconnect_idle", + "time": 1789396099835, + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 0, + "entity_revision": 101, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 40.179120999999995, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 62550016, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 16, + "cache_evictions": 0, + "cache_hits": 14380, + "cache_misses": 16, + "cache_payload_bytes": 23152, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 32474, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 21328, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 74, + "last_mutation_duration_us": 131, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 3, + "os_rss_bytes": null, + "overlay_section_count": 84, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 32768, + "wal_bytes": 1384352, + "world_count": 105, + "world_limit": 10000 + }, + "tick": 1026, + "tick_ms": 0.0016330000000000001, + "uptime_seconds": 51, + "wasm": { + "calls": 4, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 105, + "process_high_water_bytes": 62550016 + } + ] +} diff --git a/docs/verification/server-e2e.json b/docs/verification/server-e2e.json new file mode 100644 index 0000000..64de804 --- /dev/null +++ b/docs/verification/server-e2e.json @@ -0,0 +1,119 @@ +{ + "passed": true, + "checks": [ + "Manifest resource SHA-256/size, admin token required, server WASM not public", + "Incompatible manifest rejected", + "Two clients receive shared snapshot and presence", + "Authoritative movement and collision; client position spoof ignored", + "Forged out-of-reach block break rejected", + "Reachable break/place, server revision ordering and broadcast", + "Late join receives current geometry and revision", + "Pinned template and independent clone isolation", + "Scoped game chat delivered to peer", + "Persisted entity events reach both clients", + "Reconnect restores authoritative world snapshot", + "Full two-player Spleef countdown, elimination, winner and automatic floor reset", + "Disconnect removes players and active worlds", + "Real SIGKILL/restart preserves committed blocks, entity properties and arena configuration" + ], + "metrics": { + "active_worlds": 0, + "catalog": { + "collision": { + "approximate-context": 179, + "authored-exact": 1, + "measured-empty-context": 32187 + }, + "collision_context": "BlockPos.ZERO, air neighbors, empty entity context; contextual classes flagged separately", + "data_version": 4903, + "entities": 158, + "minecraft_blocks": 1196, + "minecraft_states": 32366, + "minecraft_version": "26.2", + "palette": { + "fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "glass": "minecraft:glass", + "grass": "minecraft:grass_block[snowy=false]", + "light": "minecraft:sea_lantern", + "sand": "minecraft:sand", + "slab": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "snow": "minecraft:snow_block", + "stairs": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "stone": "minecraft:stone", + "trampoline": "shacraft:trampoline", + "water": "minecraft:water[level=0]", + "wood": "minecraft:oak_planks" + }, + "render": { + "authored-package": 1, + "authored-procedural": 32316, + "intentionally-invisible": 50 + }, + "simulation": "server movement, block editing, authored modules; vanilla AI/redstone/fluid simulation are not implemented", + "total_states": 32367 + }, + "entities": 1, + "entity_revision": 13, + "limits": { + "build_plans": 16, + "bytes_per_client": 8388608, + "command_queue": 64, + "messages_per_client": 16, + "plan_cells": 32768, + "players": 32 + }, + "max_tick_ms": 0.001784, + "plans": 0, + "players": 0, + "queued_client_bytes": 0, + "rss_bytes": 51974144, + "slow_clients_disconnected": 0, + "storage": { + "cache_capacity_sections": 64, + "cache_entries": 8, + "cache_evictions": 0, + "cache_hits": 1, + "cache_misses": 8, + "cache_payload_bytes": 4304, + "cache_representation": "encoded_uniform_palette_dense", + "commits_this_handle": 0, + "coordinate_limit": 30000000, + "database_bytes": 7372800, + "history_change_count": 22055, + "history_retention": "all_operations_until_explicit_future_retention_policy", + "immutable_blob_count": 87, + "last_mutation_duration_us": 0, + "max_edit_cells": 32768, + "max_read_volume": 262144, + "operation_count": 11, + "os_rss_bytes": null, + "overlay_section_count": 93, + "registry_count": 32367, + "registry_limit_states": 262144, + "registry_text_bytes": 2671754, + "schema_version": 1, + "shm_bytes": 32768, + "snapshot_count": 2, + "sqlite_cache_budget_bytes": 4194304, + "sqlite_journal_mode": "wal", + "sqlite_synchronous": "FULL", + "transient_decoded_payload_peak_estimate_bytes": 16384, + "wal_bytes": 1384352, + "world_count": 9, + "world_limit": 10000 + }, + "tick": 1, + "tick_ms": 0.001784, + "uptime_seconds": 0, + "wasm": { + "calls": 0, + "fuel_per_call": 10000, + "imports": 0, + "memory_limit": 65536, + "runtime": "wasmi", + "traps": 0 + }, + "world_count": 9 + }, + "binary": "/home/emil/Desktop/shacraft-core/target/release/shacraft-server" +} diff --git a/packages/base/client/style.json b/packages/base/client/style.json new file mode 100644 index 0000000..c00b3d0 --- /dev/null +++ b/packages/base/client/style.json @@ -0,0 +1,7 @@ +{ + "schema": 1, + "texture": "client/texture.png", + "texture_mode": "repeat-tint", + "pixel_size": 64, + "license": "MIT OR Apache-2.0" +} diff --git a/packages/base/client/texture.png b/packages/base/client/texture.png new file mode 100644 index 0000000..451a180 Binary files /dev/null and b/packages/base/client/texture.png differ diff --git a/packages/base/common/definitions.json b/packages/base/common/definitions.json new file mode 100644 index 0000000..c5f6753 --- /dev/null +++ b/packages/base/common/definitions.json @@ -0,0 +1,7 @@ +{ + "schema": 1, + "catalog": "builtin-java-26.2", + "data_version": 4903, + "coordinates": "+Y up; block models in [0,1], entity models relative feet", + "vanilla_assets": false +} diff --git a/packages/base/manifest.json b/packages/base/manifest.json new file mode 100644 index 0000000..4b69ed4 --- /dev/null +++ b/packages/base/manifest.json @@ -0,0 +1,36 @@ +{ + "schema": 1, + "id": "shacraft.base", + "version": "1.0.0", + "license": "MIT OR Apache-2.0", + "dependencies": [], + "capabilities": [ + "blocks.define", + "entities.define", + "client.texture", + "client.style" + ], + "resources": [ + { + "path": "common/definitions.json", + "scope": "common", + "role": "definitions", + "size": 181, + "sha256": "507e949a255703188fd9af3d8be1c8c1c7e67bd2775d4ed729df8c77f96f6061" + }, + { + "path": "client/texture.png", + "scope": "client", + "role": "texture", + "size": 3939, + "sha256": "a2972ac39a68292b2fe52bbc246b6f52c639ba2f5d1cd90ec405d0f50e502d86" + }, + { + "path": "client/style.json", + "scope": "client", + "role": "client-style", + "size": 140, + "sha256": "2a770ffd217e7689df99e01384b93bf8b0f0608d82a46fa57d31fc5a618727f6" + } + ] +} diff --git a/packages/trampoline/client/bounce.wav b/packages/trampoline/client/bounce.wav new file mode 100644 index 0000000..c14d6b1 Binary files /dev/null and b/packages/trampoline/client/bounce.wav differ diff --git a/packages/trampoline/client/style.json b/packages/trampoline/client/style.json new file mode 100644 index 0000000..c47fb36 --- /dev/null +++ b/packages/trampoline/client/style.json @@ -0,0 +1,13 @@ +{ + "schema": 1, + "block": "shacraft:trampoline", + "color": [ + 97, + 205, + 151 + ], + "texture": "client/texture.png", + "effect": "bounce", + "sound": "client/bounce.wav", + "shader": "client/tint.glsl" +} diff --git a/packages/trampoline/client/texture.png b/packages/trampoline/client/texture.png new file mode 100644 index 0000000..ad4e96e Binary files /dev/null and b/packages/trampoline/client/texture.png differ diff --git a/packages/trampoline/client/tint.glsl b/packages/trampoline/client/tint.glsl new file mode 100644 index 0000000..12bd731 --- /dev/null +++ b/packages/trampoline/client/tint.glsl @@ -0,0 +1,4 @@ +// Original optional Shacraft material function. GLSL ES 3.00. +vec3 shacraftBounceTint(vec3 color, float pulse) { + return color * (1.0 + 0.12 * clamp(pulse, 0.0, 1.0)); +} diff --git a/packages/trampoline/common/definitions.json b/packages/trampoline/common/definitions.json new file mode 100644 index 0000000..e2dac7e --- /dev/null +++ b/packages/trampoline/common/definitions.json @@ -0,0 +1,42 @@ +{ + "schema": 1, + "blocks": [ + { + "state": "shacraft:trampoline", + "color": [ + 97, + 205, + 151 + ], + "collision": [ + { + "min": [ + 0, + 0, + 0 + ], + "max": [ + 1, + 1, + 1 + ] + } + ], + "behavior": { + "server_hook": "on_jump" + } + } + ], + "client_effect": { + "on_jump": "bounce" + }, + "capability_contract": { + "hook": "on_jump", + "parameters": [], + "result": "f32", + "units": "blocks/second", + "fuel": 10000, + "memory_pages": 1, + "imports": [] + } +} diff --git a/packages/trampoline/manifest.json b/packages/trampoline/manifest.json new file mode 100644 index 0000000..21cbd00 --- /dev/null +++ b/packages/trampoline/manifest.json @@ -0,0 +1,71 @@ +{ + "schema": 1, + "id": "shacraft.trampoline", + "version": "1.0.0", + "license": "MIT OR Apache-2.0", + "dependencies": [ + { + "id": "shacraft.base", + "version": "1.0.0" + } + ], + "capabilities": [ + "blocks.define", + "client.texture", + "client.style", + "client.shader", + "client.sound", + "server.on_jump" + ], + "resources": [ + { + "path": "common/definitions.json", + "scope": "common", + "role": "definitions", + "size": 650, + "sha256": "c010805c969996de33d8c679fba3dd7862fe6d39326d318727cf5748f4e1f22c" + }, + { + "path": "client/texture.png", + "scope": "client", + "role": "texture", + "size": 123, + "sha256": "c8a96e96e1a859294db67f08dbbbde13b2c6dbdce38360dbbb6a5591b8ec1d95" + }, + { + "path": "client/style.json", + "scope": "client", + "role": "client-style", + "size": 216, + "sha256": "ba703e1774d8f8859d5e61502d03e98948da811d53589147b886203e4323db9a" + }, + { + "path": "client/bounce.wav", + "scope": "client", + "role": "sound", + "size": 7982, + "sha256": "3ab75928b1347ad2c37f4708e3a3f035ffe32a71f0ba1702253a2d926cc3f51d" + }, + { + "path": "client/tint.glsl", + "scope": "client", + "role": "shader", + "size": 174, + "sha256": "ea8dd1286f475cfc25968588425d74f74378bb27b466442398a7a0399433bb4f" + }, + { + "path": "server/trampoline.wasm", + "scope": "server", + "role": "wasm-on-jump", + "size": 43, + "sha256": "c0c756b7dc5f1e829b75861ae15e83c318e24b143d4970acfa821012764dd7bb" + }, + { + "path": "server/trampoline.wat", + "scope": "server", + "role": "wasm-source", + "size": 145, + "sha256": "cd27136aec4d3b39865d7229be4968529a3a90557fb72238b38276e37a0c311d" + } + ] +} diff --git a/packages/trampoline/server/trampoline.wasm b/packages/trampoline/server/trampoline.wasm new file mode 100644 index 0000000..f933624 Binary files /dev/null and b/packages/trampoline/server/trampoline.wasm differ diff --git a/packages/trampoline/server/trampoline.wat b/packages/trampoline/server/trampoline.wat new file mode 100644 index 0000000..fa4aef6 --- /dev/null +++ b/packages/trampoline/server/trampoline.wat @@ -0,0 +1,2 @@ +;; Original executable server extension. No imports, memory, filesystem or network. +(module (func (export "on_jump") (result f32) f32.const 10)) diff --git a/scripts/benchmark_server.mjs b/scripts/benchmark_server.mjs new file mode 100644 index 0000000..3f5290d --- /dev/null +++ b/scripts/benchmark_server.mjs @@ -0,0 +1,206 @@ +// Fixed local release-server budgets. This is a reproducible Shacraft-only workload, +// not a comparison with Minecraft and not a production player-capacity claim. +import assert from "node:assert/strict"; +import path from "node:path"; +import {readFile} from "node:fs/promises"; +import { harness, Client, delay, options, root } from "./server-harness.mjs"; +const opts = options(); +opts.binary ??= path.join(root, "target/release/shacraft-server"); +const budgets = { ten_client_rss_bytes: 256 * 1024 * 1024, p95_tick_ms: 50 }; +const duration = Number(opts["sample-ms"] || 15000); +assert.ok( + duration >= 3000 && duration <= 120000, + "--sample-ms must be 3000..120000", +); +const h = await harness(opts), + clients = [], + samples = [], + phases = []; +let reportWritten = false; +const percentile = (values, p) => + [...values].sort((a, b) => a - b)[ + Math.min(values.length - 1, Math.floor((values.length - 1) * p)) + ]; +function summary(name, list) { + const rss = list.map((s) => s.rss_bytes).filter(Number.isFinite), + ticks = list.map((s) => s.tick_ms).filter(Number.isFinite); + assert.ok( + rss.length && ticks.length, + "Measured RSS and tick durations are required", + ); + const last = list.at(-1); + return { + phase: name, + samples: list.length, + rss_bytes: { + p50: percentile(rss, 0.5), + p95: percentile(rss, 0.95), + max: Math.max(...rss), + }, + tick_ms: { + p50: percentile(ticks, 0.5), + p95: percentile(ticks, 0.95), + max: Math.max(...ticks), + }, + process_high_water_bytes: last.process_high_water_bytes, + players: last.players, + active_worlds: last.active_worlds, + world_count: last.world_count, + storage: last.storage, + slow_clients_disconnected: last.slow_clients_disconnected, + queued_client_bytes: last.queued_client_bytes, + }; +} +async function sample(name, milliseconds = duration) { + const list = [], + end = Date.now() + milliseconds; + while (Date.now() < end) { + const m = await h.get("/api/metrics"); + const processStatus = await readFile(`/proc/${h.pid}/status`, "utf8"); + const highWater = Number(processStatus.match(/^VmHWM:\s+(\d+)/m)?.[1]) * 1024; + assert.ok(Number.isFinite(highWater), "Linux process high-water RSS required"); + m.process_high_water_bytes = highWater; + const s = { phase: name, time: Date.now(), ...m }; + samples.push(s); + list.push(s); + await delay(100); + } + const result = summary(name, list); + phases.push(result); + return result; +} +let mover; +async function moving(count, distinct) { + const manifest = await h.get("/api/manifest"); + for (let i = 0; i < count; i++) { + const c = new Client(h.url); + clients.push(c); + await c.join( + manifest, + `test_bench_${String(distinct ? i : 0).padStart(3, "0")}`, + `Bench${i}`, + ); + } + const started = Date.now(); + mover = setInterval(() => { + const t = (Date.now() - started) / 1000; + for (let i = 0; i < clients.length; i++) + clients[i].input({ + yaw: (t * 0.75 + (i * Math.PI) / 5) % (Math.PI * 2), + pitch: -0.1, + forward: 1, + strafe: 0, + jump: Math.floor(t) % 5 === 0, + }); + }, 50); + await delay(2000); +} +async function disconnect() { + clearInterval(mover); + await Promise.all(clients.splice(0).map((c) => c.close())); + for (let n = 0; n < 50; n++) { + const m = await h.get("/api/metrics"); + if (m.players === 0) return; + await delay(100); + } + throw Error("Players did not disconnect within 5 seconds"); +} +try { + let created = 0; + for (const count of [1, 10, 100]) { + while (created < count) { + await h.control("world.create", { + world: `test_bench_${String(created).padStart(3, "0")}`, + template: "lobby", + }); + created++; + } + await delay(1000); + const phase = await sample(`idle_${count}_template_forks`, 3000); + assert.equal(phase.players, 0); + assert.equal(phase.active_worlds, 0); + } + await moving(10, false); + await sample("10_moving_clients_shared_world"); + await disconnect(); + await moving(10, true); + await sample("10_moving_clients_separate_worlds"); + await disconnect(); + await delay(1500); + const idle = await sample("after_disconnect_idle", 3000); + assert.equal(idle.players, 0); + assert.equal(idle.active_worlds, 0); + const active = phases.filter((p) => p.phase.includes("moving_clients")); + const budgetResults = { + rss_passed: active.every( + (p) => p.rss_bytes.max <= budgets.ten_client_rss_bytes && p.process_high_water_bytes <= budgets.ten_client_rss_bytes, + ), + tick_passed: active.every((p) => p.tick_ms.p95 <= budgets.p95_tick_ms), + }; + const cacheSamples = samples.map((s) => { + const storage = s.storage; + return { + entries: storage.cache_entries ?? storage.cache?.entries, + capacity: + storage.cache_capacity_sections ?? + storage.cache_capacity ?? + storage.cache_sections ?? + storage.cache?.capacity, + }; + }); + const recognizedCache = cacheSamples.filter( + (s) => Number.isFinite(s.entries) && Number.isFinite(s.capacity), + ); + const cacheBounded = + recognizedCache.length === cacheSamples.length && + recognizedCache.every((s) => s.entries <= s.capacity); + const passed = + budgetResults.rss_passed && budgetResults.tick_passed && cacheBounded; + await h.report({ + passed, + profile: h.binary.includes("/release/") + ? "release" + : "custom binary; verify optimization separately", + binary: h.binary, + budgets, + budget_results: budgetResults, + cache_bounded: cacheBounded, + workload: { + fork_counts: [1, 10, 100], + players: 10, + input_hz: 20, + sampling_interval_ms: 100, + active_sample_ms: duration, + template: "lobby", + scope: + "local seeded map; storage and authoritative movement; not full vanilla mechanics", + }, + limitations: [ + "No comparison with Minecraft or a modded server", + "Tick metrics measure server step work, not end-to-end latency", + "Process RSS excludes browser clients and operating-system disk cache", + "Cache entries remain bounded after disconnect; zero active worlds does not imply zero retained cache", + ], + phases, + samples, + }); + reportWritten = true; + assert.ok( + passed, + "Predetermined benchmark budget or bounded-cache check failed; inspect report", + ); +} catch (error) { + if (!reportWritten) + await h.report({ + passed: false, + budgets, + error: error.stack, + server_logs: h.logs(), + phases, + samples, + }); + throw error; +} finally { + await disconnect().catch(() => {}); + await h.stop(); +} diff --git a/scripts/catalog_assets.py b/scripts/catalog_assets.py new file mode 100644 index 0000000..a5c81bb --- /dev/null +++ b/scripts/catalog_assets.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 +"""Deterministically author original PNG/WAV/WASM package resources using stdlib.""" +from pathlib import Path +import hashlib,json,struct,zlib,math,wave +ROOT=Path(__file__).resolve().parents[1] + +def png(path,w,h,pixel): + def chunk(kind,data):return struct.pack('>I',len(data))+kind+data+struct.pack('>I',zlib.crc32(kind+data)&0xffffffff) + raw=b''.join(b'\x00'+b''.join(bytes(pixel(x,y)) for x in range(w)) for y in range(h)) + path.write_bytes(b'\x89PNG\r\n\x1a\n'+chunk(b'IHDR',struct.pack('>IIBBBBB',w,h,8,2,0,0,0))+chunk(b'IDAT',zlib.compress(raw,9))+chunk(b'IEND',b'')) + +def js(path,obj):path.write_text(json.dumps(obj,indent=2)+'\n') +def manifest(path,ident,deps,caps,resources): + js(path/'manifest.json',{'schema':1,'id':ident,'version':'1.0.0','license':'MIT OR Apache-2.0', + 'dependencies':[{'id':d,'version':'1.0.0'} for d in deps], 'capabilities':caps, + 'resources':[{'path':p,'scope':scope,'role':role,'size':(path/p).stat().st_size,'sha256':hashlib.sha256((path/p).read_bytes()).hexdigest()}for p,scope,role in resources]}) + +base=ROOT/'packages/base'; trampoline=ROOT/'packages/trampoline' +for p in [base/'client',base/'common',trampoline/'client',trampoline/'common',trampoline/'server']:p.mkdir(parents=True,exist_ok=True) +# Pixel noise tile, generated by integer hash; intentionally original, no external art. +def grain(x,y): + v=((x*374761393+y*668265263)^((x+y*17)*1274126177))&0xffffffff + value=211+((v^(v>>13))%29);return[value,value,value] +png(base/'client/texture.png',64,64,grain) +js(base/'client/style.json',{'schema':1,'texture':'client/texture.png','texture_mode':'repeat-tint','pixel_size':64,'license':'MIT OR Apache-2.0'}) +js(base/'common/definitions.json',{'schema':1,'catalog':'builtin-java-26.2','data_version':4903,'coordinates':'+Y up; block models in [0,1], entity models relative feet','vanilla_assets':False}) +# Authored spring mat: dark frame, mint mesh, small crossing weave. +def mat(x,y): + if x<3 or y<3 or x>=29 or y>=29:return[53,78,73] + if x%4==0 or y%4==0:return[123,217,166] + return[75,153,118] +png(trampoline/'client/texture.png',32,32,mat) +js(trampoline/'client/style.json',{'schema':1,'block':'shacraft:trampoline','color':[97,205,151],'texture':'client/texture.png','effect':'bounce','sound':'client/bounce.wav','shader':'client/tint.glsl'}) +(trampoline/'client/tint.glsl').write_text('// Original optional Shacraft material function. GLSL ES 3.00.\nvec3 shacraftBounceTint(vec3 color, float pulse) {\n return color * (1.0 + 0.12 * clamp(pulse, 0.0, 1.0));\n}\n') +with wave.open(str(trampoline/'client/bounce.wav'),'wb') as wav: + rate=22050;n=int(rate*.18);wav.setnchannels(1);wav.setsampwidth(2);wav.setframerate(rate) + wav.writeframes(b''.join(struct.pack(' { + const c = new Client(h.url); + clients.push(c); + return c; +}; +try { + const manifest = await h.get("/api/manifest"); + assert.equal(manifest.protocol, 1); + for (const pack of manifest.packages) + for (const file of pack.files) { + assert.notEqual(file.scope, "server"); + const r = await fetch(h.url + file.url); + assert.equal(r.status, 200); + const bytes = Buffer.from(await r.arrayBuffer()); + assert.equal(bytes.length, file.size); + assert.equal( + createHash("sha256").update(bytes).digest("hex"), + file.sha256, + ); + } + const denied = await fetch(h.url + "/api/control", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ method: "world.list" }), + }); + assert.equal(denied.status, 401); + const secret = await fetch( + h.url + "/packages/shacraft.trampoline/1.0.0/server/trampoline.wasm", + ); + assert.equal(secret.status, 404); + checks.push( + "Manifest resource SHA-256/size, admin token required, server WASM not public", + ); + const bad = createClient(); + await bad.open; + bad.send({ + type: "join", + protocol: 1, + manifest_hash: "incorrect", + world: "lobby", + name: "BadManifest", + }); + assert.match((await bad.next("error")).message, /manifest|package/i); + await bad.close(); + checks.push("Incompatible manifest rejected"); + const catalog = await h.control("catalog.search", { + query: "minecraft:stone", + limit: 64, + }), + stone = catalog.items.find((m) => m.state === "minecraft:stone"); + assert.ok(stone); + await h.control("world.create", { world: "test_e2e_base" }); + const plan = await h.control("build.plan", { + world: "test_e2e_base", + expected_revision: 0, + operations: [ + { type: "box", min: [-8, -1, -8], max: [8, 0, 12], block: stone.id }, + ], + }); + await h.control("build.commit", { + plan_id: plan.plan_id, + operation_id: "test-floor", + }); + for (const world of ["test_e2e_a", "test_e2e_b"]) + await h.control("world.create", { world, template: "test_e2e_base" }); + let a = createClient(); + const b = createClient(); + const wa = await a.join(manifest, "test_e2e_a", "TestAlice"); + await b.join(manifest, "test_e2e_a", "TestBob"); + assert.equal(wa.revision, 0); + assert.ok(wa.blocks.length > 500); + await a.state((p, m) => m.players.length === 2); + checks.push("Two clients receive shared snapshot and presence"); + const initial = (await b.state((p) => p.position[1] < 1.15)).players.find( + (p) => p.id === b.id, + ).position; + b.input({ forward: 1, position: [1000, 1000, 1000] }); + const moved = ( + await b.state((p) => p.position[2] < initial[2] - 0.5) + ).players.find((p) => p.id === b.id).position; + b.input(); + assert.ok(moved.every((v) => Math.abs(v) < 20)); + assert.ok(moved[1] < 2); + checks.push( + "Authoritative movement and collision; client position spoof ignored", + ); + a.send({ type: "break", pos: [1000, 0, 1000] }); + assert.match((await a.next("error")).message, /reach|sight|ray|target/i); + checks.push("Forged out-of-reach block break rejected"); + const p = (await a.state((p) => p.position[1] < 1.15)).players.find( + (p) => p.id === a.id, + ).position; + const materials = new Map(wa.materials.map((m) => [m.id, m])); + const blocks = new Map(wa.blocks.map((b) => [key(b.pos), b.block])); + const hit = raycast( + [p[0], p[1] + 1.62, p[2]], + direction(0.2, -1.3), + blocks, + materials, + ); + assert.ok(hit); + const seq = a.input({ yaw: 0.2, pitch: -1.3 }); + await a.state((_p, m) => m.ack >= seq); + await delay(150); + a.send({ type: "break", pos: hit.pos }); + const removed = await a.next("blocks", (m) => + m.changes.some((c) => key(c.pos) === key(hit.pos) && c.block === 0), + ); + await b.next("blocks", (m) => m.revision === removed.revision); + assert.equal(removed.revision, 1); + await delay(160); + a.send({ type: "place", pos: hit.pos, block: stone.id }); + const restored = await a.next("blocks", (m) => m.revision === 2); + await b.next("blocks", (m) => m.revision === 2); + assert.equal(restored.changes[0].block, stone.id); + checks.push("Reachable break/place, server revision ordering and broadcast"); + const late = createClient(); + const lateSnapshot = await late.join(manifest, "test_e2e_a", "TestLate"); + assert.equal(lateSnapshot.revision, 2); + assert.equal( + lateSnapshot.blocks.find((c) => key(c.pos) === key(hit.pos)).block, + stone.id, + ); + await late.close(); + checks.push("Late join receives current geometry and revision"); + await h.control("world.edit", { + world: "test_e2e_a", + expected_revision: 2, + operation_id: "test-isolation", + changes: [{ pos: [3, 1, 3], block: stone.id }], + }); + await a.next("blocks", (m) => m.revision === 3); + for (const world of ["test_e2e_base", "test_e2e_b"]) { + const r = await h.control("world.read", { + world, + min: [3, 1, 3], + max: [3, 1, 3], + }); + assert.equal(r.blocks.length, 0); + } + checks.push("Pinned template and independent clone isolation"); + a.send({ type: "chat", text: "local integration check" }); + const chat = await b.next( + "chat", + (m) => m.text === "local integration check", + ); + assert.equal(chat.name, "TestAlice"); + checks.push("Scoped game chat delivered to peer"); + const entity = await h.control("entity.spawn", { + world: "test_e2e_a", + kind: "minecraft:pig", + position: [3, 2, 3], + properties: { name: "TestPig" }, + }); + await a.next("entities", (m) => + m.entities.some((e) => e.id === entity.entity.id), + ); + await b.next("entities", (m) => + m.entities.some((e) => e.id === entity.entity.id), + ); + await h.control("entity.delete", { id: entity.entity.id }); + checks.push("Persisted entity events reach both clients"); + await a.close(); + a = createClient(); + const reconnect = await a.join(manifest, "test_e2e_a", "TestAlice"); + assert.equal(reconnect.revision, 3); + assert.ok(reconnect.blocks.some((c) => key(c.pos) === "3,1,3")); + checks.push("Reconnect restores authoritative world snapshot"); + await h.control("world.create", { + world: "test_e2e_arena", + template: "spleef_template", + }); + await delay(1150); + for (const c of [a, b]) { + c.send({ type: "switch_world", world: "test_e2e_arena" }); + await c.next("snapshot", (m) => m.world === "test_e2e_arena"); + } + a.send({ type: "start_match" }); + await a.state((_p, m) => m.match?.phase === "countdown"); + const active = await a.state((_p, m) => m.match?.phase === "active", 7000); + const victim = active.players.find((p) => p.id === a.id), + at = victim.position.map(Math.floor); + const floor = []; + for (let x = at[0] - 1; x <= at[0] + 1; x++) + for (let z = at[2] - 1; z <= at[2] + 1; z++) + floor.push({ pos: [x, 0, z], block: 0 }); + const arena = (await h.control("world.list")).find( + (w) => w.name === "test_e2e_arena", + ); + await h.control("world.edit", { + world: "test_e2e_arena", + expected_revision: arena.revision, + operation_id: "test-eliminate", + changes: floor, + }); + const finished = await b.state( + (_p, m) => m.match?.phase === "finished", + 7000, + ); + assert.equal(finished.match.winner, "TestBob"); + await b.state( + (_p, m) => m.tick > finished.tick && m.match?.phase === "waiting", + 8000, + ); + const reset = await h.control("world.read", { + world: "test_e2e_arena", + min: [at[0], 0, at[2]], + max: [at[0], 0, at[2]], + }); + assert.equal(reset.blocks.length, 1); + checks.push( + "Full two-player Spleef countdown, elimination, winner and automatic floor reset", + ); + for (const c of clients) await c.close(); + let metrics; + for (let n = 0; n < 30; n++) { + metrics = await h.get("/api/metrics"); + if (metrics.players === 0) break; + await delay(100); + } + assert.equal(metrics.players, 0); + assert.equal(metrics.active_worlds, 0); + checks.push("Disconnect removes players and active worlds"); + const durableEdit = await h.control("world.edit", { + world: "test_e2e_a", + expected_revision: 3, + operation_id: "test-durable-edit", + changes: [{ pos: [4, 2, 4], block: stone.id }], + }); + const durableEntity = await h.control("entity.spawn", { + world: "test_e2e_a", + kind: "minecraft:pig", + position: [5, 2, 5], + properties: { name: "DurablePig", marker: "before-sigkill" }, + }); + await h.control("arena.configure", { + world: "test_e2e_a", + mode: "creative", + spawn: [1, 3, 1], + countdown_seconds: 2, + round_seconds: 120, + elimination_y: -5, + }); + const durableData = h.data; + await h.kill("SIGKILL"); + h = await harness({ ...opts, data: durableData }); + const afterCrash = await h.control("world.read", { + world: "test_e2e_a", + min: [4, 2, 4], + max: [4, 2, 4], + }); + assert.equal(afterCrash.revision, durableEdit.revision); + assert.equal(afterCrash.blocks[0]?.block, stone.id); + const persisted = await h.control("entity.list", { world: "test_e2e_a" }); + const pig = persisted.items.find( + (entity) => entity.id === durableEntity.entity.id, + ); + assert.equal(pig?.properties.marker, "before-sigkill"); + // No fields supplied: the server returns and resaves the loaded configuration. + const config = await h.control("arena.configure", { world: "test_e2e_a" }); + assert.equal(config.countdown_seconds, 2); + assert.equal(config.round_seconds, 120); + assert.equal(config.elimination_y, -5); + assert.deepEqual(config.spawn, [1, 3, 1]); + const afterRestart = createClient(); + const restartedWelcome = await afterRestart.join( + await h.get("/api/manifest"), + "test_e2e_a", + "RestartProbe", + ); + assert.deepEqual(restartedWelcome.spawn, [1, 3, 1]); + assert.ok( + restartedWelcome.blocks.some( + (cell) => key(cell.pos) === "4,2,4" && cell.block === stone.id, + ), + ); + await afterRestart.close(); + checks.push( + "Real SIGKILL/restart preserves committed blocks, entity properties and arena configuration", + ); + metrics = await h.get("/api/metrics"); + await h.report({ passed: true, checks, metrics, binary: h.binary }); +} catch (error) { + await h.report({ + passed: false, + checks, + error: error.stack, + server_logs: h.logs(), + client_errors: clients.map((c) => + c.queue.filter((m) => m.type === "error"), + ), + }); + throw error; +} finally { + await Promise.allSettled(clients.map((c) => c.close())); + await h.stop(); +} diff --git a/scripts/compat_fixtures.py b/scripts/compat_fixtures.py new file mode 100644 index 0000000..f470d65 --- /dev/null +++ b/scripts/compat_fixtures.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 +"""Generate tiny original Sponge fixtures using independent nbtlib2.0.4. + +Run with artifacts/compat-venv/bin/python after installing nbtlib==2.0.4. +The fixture contains no game assets or third-party map content. +""" +from pathlib import Path +import gzip +import io +import nbtlib as n + +ROOT = Path(__file__).resolve().parents[1] +out = ROOT / "crates/shacraft-compat/fixtures" +out.mkdir(parents=True, exist_ok=True) +metadata = n.Compound({ + "Name": n.String("Шакрафт тест"), "Byte": n.Byte(-128), + "Short": n.Short(-32768), "Long": n.Long(-9223372036854775808), + "Float": n.Float(1.25), "Double": n.Double(-2.5), + "ByteArray": n.ByteArray([-1, 0, 127]), + "IntArray": n.IntArray([-2147483648, 2147483647]), + "LongArray": n.LongArray([-9223372036854775808, 9223372036854775807]), + "EmptyLongList": n.List[n.Long]([]), + "Nested": n.Compound({"custom_unknown": n.String("keep me")}), +}) +entity = n.Compound({"Id": n.String("minecraft:armor_stand"), + "Pos": n.List[n.Double]([1.5, 1.0, 0.5]), + "Data": n.Compound({"UUID": n.IntArray([1, 2, 3, 4]), "NoGravity": n.Byte(1)})}) +blockentity = n.Compound({"Id": n.String("minecraft:chest"), + "Pos": n.IntArray([0, 0, 0]), "Data": n.Compound({ + "Items": n.List[n.Compound]([n.Compound({"Slot": n.Byte(0), + "id": n.String("minecraft:diamond"), "count": n.Int(3)})]), + "unknown_inventory_tag": n.Long(12345678901234567), + })}) +states = ["minecraft:air", "minecraft:chest[facing=north,type=single,waterlogged=false]", + "minecraft:oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "example:unknown[facing=west]", "minecraft:stone"] +indices = [1, 2, 3, 4] + [0] * 20 +schematic = n.Compound({"Version": n.Int(3), "DataVersion": n.Int(4903), + "Width": n.Short(4), "Height": n.Short(3), "Length": n.Short(2), + "Offset": n.IntArray([-17, -1, 31]), "Metadata": metadata, + "Blocks": n.Compound({"Palette": n.Compound({s: n.Int(i) for i, s in enumerate(states)}), + "Data": n.ByteArray(indices), "BlockEntities": n.List[n.Compound]([blockentity])}), + "Biomes": n.Compound({"Palette": n.Compound({"minecraft:plains": n.Int(0), "minecraft:desert": n.Int(1)}), + "Data": n.ByteArray([i % 2 for i in range(24)])}), + "Entities": n.List[n.Compound]([entity]), + "UnknownRoot": n.Compound({"opaque": n.String("preserve this")}), +}) +f = n.File({"Schematic": schematic}, root_name="") +buffer = io.BytesIO(); f.write(buffer) +(out / "sponge-v3.schem").write_bytes(gzip.compress(buffer.getvalue(), mtime=0)) +print(out / "sponge-v3.schem") diff --git a/scripts/compat_java.java b/scripts/compat_java.java new file mode 100644 index 0000000..8a04409 --- /dev/null +++ b/scripts/compat_java.java @@ -0,0 +1,136 @@ +// Copyright Shacraft contributors. MIT OR Apache-2.0. +// Generate our own tiny world metadata and validate files using public Java26.2 +// APIs. Does not start a server, open sockets, or read/accept an EULA. +import java.nio.file.*; +import java.io.*; +import java.util.*; +import com.mojang.serialization.*; +import net.minecraft.SharedConstants; +import net.minecraft.server.Bootstrap; +import net.minecraft.nbt.*; +import net.minecraft.core.*; +import net.minecraft.core.registries.*; +import net.minecraft.data.registries.VanillaRegistries; +import net.minecraft.world.level.*; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.chunk.*; +import net.minecraft.world.level.chunk.storage.*; +import net.minecraft.world.level.levelgen.*; +import net.minecraft.world.level.levelgen.flat.*; +import net.minecraft.world.level.levelgen.presets.*; +import net.minecraft.world.level.storage.*; +import net.minecraft.world.level.gamerules.*; +import net.minecraft.world.level.biome.*; + +class compat_java { + static final NbtAccounter BUDGET=NbtAccounter.create(16*1024*1024); + static void generate(Path out, HolderLookup.Provider lookup) throws Exception { + Files.createDirectories(out); + var settings=new LevelSettings("Shacraft template",GameType.CREATIVE,LevelSettings.DifficultySettings.DEFAULT,true,WorldDataConfiguration.DEFAULT); + var level=new PrimaryLevelData(settings,PrimaryLevelData.SpecialWorldProperty.FLAT,Lifecycle.stable()); + level.setInitialized(true); + level.setSpawn(LevelData.RespawnData.of(Level.OVERWORLD,new BlockPos(0,80,0),0,0)); + var root=new CompoundTag();root.put("Data",level.createTag(null)); + NbtIo.writeCompressed(root,out.resolve("level.dat")); + var flat=new FlatLevelGeneratorSettings(Optional.of(HolderSet.direct()),lookup.lookupOrThrow(Registries.BIOME).getOrThrow(Biomes.PLAINS),List.of()); + flat.getLayersInfo().add(new FlatLayerInfo(1,Blocks.AIR));flat.updateLayers(); + var dims=lookup.lookupOrThrow(Registries.WORLD_PRESET).getOrThrow(WorldPresets.FLAT).value().createWorldDimensions().replaceOverworldGenerator(lookup,new FlatLevelSource(flat)); + var worldgen=new WorldGenSettings(new WorldOptions(0,false,false),dims); + var encoded=WorldGenSettings.CODEC.encodeStart(lookup.createSerializationContext(NbtOps.INSTANCE),worldgen).getOrThrow(); + var data=new CompoundTag();data.put("data",encoded);NbtUtils.addCurrentDataVersion(data); + Path gen=WorldGenSettings.TYPE.id().withSuffix(".dat").resolveAgainst(out.resolve("data")); + Files.createDirectories(gen.getParent());NbtIo.writeCompressed(data,gen); + var rules=new GameRules(level.enabledFeatures());rules.set(GameRules.SPAWN_MOBS,false,null);rules.set(GameRules.ADVANCE_TIME,false,null); + LevelStorageSource.writeGameRules(level,out,rules); + System.out.println("Generated metadata with public Java26.2 APIs: "+out); + } + static PalettedContainerFactory factory(HolderLookup.Provider lookup) { + var biomeRegistry=new MappedRegistry(Registries.BIOME,Lifecycle.stable()); + lookup.lookupOrThrow(Registries.BIOME).listElements().forEach(h->biomeRegistry.register(h.key(),h.value(),RegistrationInfo.BUILT_IN)); + biomeRegistry.freeze(); + return PalettedContainerFactory.create(new RegistryAccess.ImmutableRegistryAccess(List.of(biomeRegistry))); + } + static void fixture(Path out,HolderLookup.Provider lookup) throws Exception { + generate(out,lookup); + var factory=factory(lookup); + var section=new LevelChunkSection(factory); + section.setBlockState(15,15,15,Blocks.CHEST.defaultBlockState()); + section.setBlockState(14,15,15,Blocks.OAK_STAIRS.defaultBlockState()); + section.setBlockState(13,15,15,Blocks.STONE.defaultBlockState()); + var chest=new CompoundTag();chest.putString("id","minecraft:chest");chest.putInt("x",-1);chest.putInt("y",-1);chest.putInt("z",31); + var item=new CompoundTag();item.putByte("Slot",(byte)0);item.putString("id","minecraft:diamond");item.putInt("count",3); + var inventory=new ListTag();inventory.add(item);chest.put("Items",inventory);chest.putLong("unknown_inventory_tag",12345678901234567L); + var chunk=new SerializableChunkData(factory,new ChunkPos(-1,1),-4,0,0,net.minecraft.world.level.chunk.status.ChunkStatus.FULL, + null,null,UpgradeData.EMPTY,null,Map.of(),new ChunkAccess.PackedTicks(List.of(),List.of()), + new it.unimi.dsi.fastutil.shorts.ShortList[24],false, + List.of(new SerializableChunkData.SectionData(-1,section,null,null)),List.of(),List.of(chest),new CompoundTag()); + var tag=chunk.write();var unknown=new CompoundTag();unknown.putByte("Byte",(byte)-128);unknown.putShort("Short",(short)-32768); + unknown.putLong("Long",Long.MIN_VALUE);unknown.putString("Unicode","Привет🌍\u0000");unknown.putIntArray("UUID",new int[]{1,2,3,4});tag.put("UnknownRoot",unknown); + Files.createDirectories(out.resolve("region")); + try(var region=new RegionFile(new RegionStorageInfo("compat-fixture",Level.OVERWORLD,"chunk"),out.resolve("region/r.-1.0.mca"),out.resolve("region"),false)) { + try(var output=region.getChunkDataOutputStream(new ChunkPos(-1,1))){NbtIo.write(tag,output);} + } + var entity=new CompoundTag();entity.putString("id","minecraft:armor_stand");entity.putIntArray("UUID",new int[]{1,2,3,4}); + var pos=new ListTag();pos.add(DoubleTag.valueOf(-0.5));pos.add(DoubleTag.valueOf(0));pos.add(DoubleTag.valueOf(31.5));entity.put("Pos",pos);entity.putBoolean("NoGravity",true); + var entities=new ListTag();entities.add(entity);var root=new CompoundTag();root.putInt("DataVersion",4903);root.putIntArray("Position",new int[]{-1,1});root.put("Entities",entities); + Files.createDirectories(out.resolve("entities")); + try(var region=new RegionFile(new RegionStorageInfo("compat-fixture",Level.OVERWORLD,"entities"),out.resolve("entities/r.-1.0.mca"),out.resolve("entities"),false)) { + try(var output=region.getChunkDataOutputStream(new ChunkPos(-1,1))){NbtIo.write(root,output);} + } + Files.writeString(out.resolve("custom-metadata.txt"),"own fixture; retain unknown file\n"); + } + static void validate(Path world,HolderLookup.Provider lookup) throws Exception { + var levelRoot=NbtIo.readCompressed(world.resolve("level.dat"),NbtAccounter.create(16*1024*1024)); + var level=levelRoot.getCompoundOrEmpty("Data"); + if(level.getIntOr("DataVersion",-1)!=4903)throw new AssertionError("DataVersion"); + var dynamic=new Dynamic<>(NbtOps.INSTANCE,level); + var config=LevelStorageSource.readDataConfig(dynamic); + var settings=LevelSettings.parse(dynamic,config); + var parsed=PrimaryLevelData.parse(dynamic,settings,PrimaryLevelData.SpecialWorldProperty.FLAT,Lifecycle.stable()); + Path gen=WorldGenSettings.TYPE.id().withSuffix(".dat").resolveAgainst(world.resolve("data")); + var encoded=NbtIo.readCompressed(gen,NbtAccounter.create(16*1024*1024)).getCompoundOrEmpty("data"); + var worldgen=WorldGenSettings.CODEC.parse(lookup.createSerializationContext(NbtOps.INSTANCE),encoded).getOrThrow(); + if(worldgen.dimensions().dimensions().size()!=3)throw new AssertionError("dimensions"); + var factory=factory(lookup);int chunks=0,sections=0,entities=0;long nonair=0; + try(var files=Files.walk(world)) { + for(Path path:files.filter(p->p.toString().endsWith(".mca")&&Set.of("region","entities").contains(p.getParent().getFileName().toString())&&!p.toString().contains("source-sidecar")).toList()) { + boolean entityRegion=path.getParent().getFileName().toString().equals("entities"); + String[] parts=path.getFileName().toString().split("\\.");int rx=Integer.parseInt(parts[1]),rz=Integer.parseInt(parts[2]); + try(var region=new RegionFile(new RegionStorageInfo("compat-check",Level.OVERWORLD,"chunk"),path,path.getParent(),false)) { + for(int i=0;i<1024;i++) { + var pos=new ChunkPos(rx*32+i%32,rz*32+i/32); + if(!region.hasChunk(pos))continue; + try(var input=region.getChunkDataInputStream(pos)) { + var tag=NbtIo.read(input,NbtAccounter.create(16*1024*1024)); + if(entityRegion) { + int[] coordinates=tag.getIntArray("Position").orElseThrow(); + if(coordinates.length!=2||coordinates[0]!=pos.x()||coordinates[1]!=pos.z())throw new AssertionError("entity chunk Position"); + for(var value:tag.getListOrEmpty("Entities")) { + var entity=(CompoundTag)value; + if(entity.getIntArray("UUID").orElseThrow().length!=4)throw new AssertionError("entity UUID"); + if(entity.getListOrEmpty("Pos").size()!=3)throw new AssertionError("entity Pos"); + if(!BuiltInRegistries.ENTITY_TYPE.containsKey(net.minecraft.resources.Identifier.parse(entity.getString("id").orElseThrow())))throw new AssertionError("unknown vanilla entity type"); + entities++; + } + continue; + } + var chunk=SerializableChunkData.parse(LevelHeightAccessor.create(-64,384),factory,tag); + if(chunk==null||!chunk.chunkPos().equals(pos))throw new AssertionError("missing/misplaced chunk "+pos); + for(var section:chunk.sectionData()) { + if(section.chunkSection()!=null){sections++;for(int y=0;y<16;y++)for(int z=0;z<16;z++)for(int x=0;x<16;x++)if(!section.chunkSection().getBlockState(x,y,z).isAir())nonair++;} + } + chunks++; + } + } + } + } + } + System.out.println("{\"java26_2_verified\":true,\"chunks\":"+chunks+",\"sections\":"+sections+",\"entities\":"+entities+",\"nonair_blocks\":"+nonair+",\"level_name\":\""+parsed.getLevelName()+"\",\"scope\":\"NbtIo,RegionFile,SerializableChunkData,PrimaryLevelData,WorldGenSettings codecs; no server simulation\"}"); + } + public static void main(String[] args) throws Exception { + SharedConstants.tryDetectVersion();Bootstrap.bootStrap();var lookup=VanillaRegistries.createLookup(); + if(args[0].equals("generate"))generate(Path.of(args[1]),lookup); + else if(args[0].equals("fixture"))fixture(Path.of(args[1]),lookup); + else validate(Path.of(args[1]),lookup); + } +} diff --git a/scripts/compat_verify.py b/scripts/compat_verify.py new file mode 100644 index 0000000..c5e359a --- /dev/null +++ b/scripts/compat_verify.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python3 +"""Independent interchange acceptance using nbtlib and official Java26.2 APIs. + +Run: artifacts/compat-venv/bin/python scripts/compat_verify.py +Needs nbtlib==2.0.4 and the pinned catalog-cache JAR/JDK25 from catalog generation. +Never starts MinecraftServer or accepts an EULA. Writes only artifacts/. +""" +import argparse +import hashlib +import json +import re +import sqlite3 +import subprocess +import tempfile +from pathlib import Path +import nbtlib + +ROOT=Path(__file__).resolve().parents[1] +parser=argparse.ArgumentParser() +parser.add_argument("--java-bin",type=Path,default=Path.home()/".local/share/PrismLauncher/java/java-runtime-epsilon/bin") +args=parser.parse_args() +output=Path(tempfile.mkdtemp(prefix="compat-verification-",dir=ROOT/"artifacts")) +def command(argv,**kwargs): + cwd=kwargs.pop("cwd",ROOT) + result=subprocess.run(list(map(str,argv)),cwd=cwd,text=True,capture_output=True,timeout=120,**kwargs) + if result.returncode: + raise RuntimeError(f"Command failed: {argv}\n{result.stdout}\n{result.stderr}") + return result.stdout +command(["cargo","build","-p","shacraft-compat","-p","shacraft-tools"]) +compat=ROOT/"target/debug/shacraft-compat";tools=ROOT/"target/debug/shacraft-tools" +def convert(*argv):return json.loads(command([compat,*argv])) +def tool(store,request): + result=json.loads(command([tools,"--data",store,"session"],input=json.dumps(request)+"\n")) + assert result["ok"],result + return result["result"] + +source=ROOT/"crates/shacraft-compat/fixtures/java26_2-world" +store=output/"imported" +import_report=convert("import-anvil",source,store) +exact=output/"exact" +convert("export-anvil",store,exact) +for f in source.rglob("*"): + if f.is_file():assert f.read_bytes()==(exact/f.relative_to(source)).read_bytes() +stone=tool(store,{"op":"register","state":"minecraft:stone"}) +revision=tool(store,{"op":"revision","world":"main"}) +tool(store,{"op":"edit","world":"main","expected_revision":revision,"operation_id":"independent-edit", + "changes":[{"pos":[-1,-1,31],"block":0},{"pos":[512,64,-513],"block":stone}]}) +with sqlite3.connect(store/"server.sqlite3") as db: + meta=json.loads(db.execute("select json from metadata where id=1").fetchone()[0]); entity=next(iter(meta["entities"].values())) + entity["position"]=[513.5,65.,-513.5];entity["yaw"]=1.25;entity["properties"]["Invisible"]=True + meta["revision"]+=1;db.execute("update metadata set json=? where id=1",(json.dumps(meta),)) +edited=output/"edited";edited_report=convert("export-anvil",store,edited,"--mode","best-effort") +native=output/"native" +tool(native,{"op":"create","name":"own","template":None}) +id=tool(native,{"op":"register","state":"minecraft:stone"}) +tool(native,{"op":"edit","world":"own","expected_revision":0,"operation_id":"own-build", "changes":[{"pos":[-1,63,0],"block":id},{"pos":[0,64,0],"block":id}]}) +new=output/"new-world";new_report=convert("export-anvil",native,new,"--world","own","--mode","best-effort") +schem_store=output/"schem-store";schem_source=ROOT/"crates/shacraft-compat/fixtures/sponge-v3.schem" +convert("import-schem",schem_source,schem_store) +revision=tool(schem_store,{"op":"revision","world":"main"}) +tool(schem_store,{"op":"edit","world":"main","expected_revision":revision,"operation_id":"break-chest", "changes":[{"pos":[-17,-1,31],"block":0}]}) +schem=output/"schem";convert("export-schem",schem_store,schem,"--mode","best-effort") +a=nbtlib.load(schem_source)["Schematic"];b=nbtlib.load(schem/"world.schem")["Schematic"] +def typed(tag): + if isinstance(tag,nbtlib.Compound):return ("Compound",tuple((k,typed(v)) for k,v in sorted(tag.items()))) + if isinstance(tag,nbtlib.List):return ("List",tag.subtype.__name__,tuple(typed(v) for v in tag)) + if hasattr(tag,"dtype"):return (type(tag).__name__,tuple(int(v) for v in tag)) + return (type(tag).__name__,str(tag)) +for key in ["Metadata","Biomes","Entities","Offset","UnknownRoot"]: + assert typed(a[key])==typed(b[key]),key +assert not b["Blocks"]["BlockEntities"] +assert isinstance(b["Metadata"]["Long"],nbtlib.Long) +assert isinstance(b["Metadata"]["EmptyLongList"],nbtlib.List[nbtlib.Long]) + +cache=ROOT/"artifacts/catalog-cache" +jar=cache/"server.jar" +assert hashlib.sha1(jar.read_bytes()).hexdigest()=="823e2250d24b3ddac457a60c92a6a941943fcd6a" +cp=":".join(map(str,[cache/"versions/26.2/server-26.2.jar",*cache.glob("libraries/**/*.jar")])) +classes=output/"java-classes";classes.mkdir() +command([args.java_bin/"javac","-cp",cp,"-d",classes,ROOT/"scripts/compat_java.java"]) +java_results=[] +for label,world in [("exact",exact),("edited",edited),("new",new)]: + text=command([args.java_bin/"java","-Xmx768m","-cp",str(classes)+":"+cp,"compat_java","validate",world],cwd=output) + (output/f"java-{label}.log").write_text(text) + line=next(line[line.index('{'):] for line in text.splitlines() if '"java26_2_verified"' in line) + result=json.loads(line);result["case"]=label;java_results.append(result) +assert [r["nonair_blocks"] for r in java_results]==[3,3,2] +summary={"success":True,"directory":str(output),"java":java_results,"nbtlib_version":nbtlib.__version__, + "source_jar_sha1":hashlib.sha1(jar.read_bytes()).hexdigest(),"source_jar_sha256":hashlib.sha256(jar.read_bytes()).hexdigest(), + "nbtlib_sponge_typed_roundtrip":True,"exact_source_files_identical":True, + "edited_world":edited_report,"native_world":new_report, + "limitations":"Java checks official disk/container/palette/world-metadata codecs, not running server, client renderer, light simulation or EULA acceptance."} +(output/"verification.json").write_text(json.dumps(summary,ensure_ascii=False,indent=2)+"\n") +print(json.dumps({"success":True,"report":str(output/"verification.json"),"java":java_results},indent=2)) diff --git a/scripts/make_release.py b/scripts/make_release.py new file mode 100755 index 0000000..204dcd5 --- /dev/null +++ b/scripts/make_release.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 +"""Package a clean, committed source tree and optional Linux executables. + +No user worlds, tokens, Cargo caches, Minecraft JAR, or untracked files enter +an archive. Every extracted file is checked against the in-archive manifest. +""" +import argparse +import gzip +import hashlib +import io +import json +import subprocess +import tarfile +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] + +def git(*args): + return subprocess.check_output(['git', *args], cwd=ROOT) + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('--binaries', action='store_true') + args = parser.parse_args() + if git('status', '--porcelain').strip(): + raise SystemExit('Commit the reviewed tree before packaging.') + revision = git('rev-parse', 'HEAD').decode().strip() + epoch = int(git('show', '-s', '--format=%ct', 'HEAD')) + paths = [Path(p.decode()) for p in git('ls-files', '-z').split(b'\0') if p] + if args.binaries: + paths += [Path('target/release') / name for name in + ['shacraft-server', 'shacraft-mcp', 'shacraft-compat', 'shacraft-tools']] + files = [] + for relative in sorted(paths): + path = ROOT / relative + if path.is_symlink() or not path.is_file(): + raise SystemExit(f'Only regular files are distributable: {relative}') + if relative.name.endswith('.token') or relative.name == '.env': + raise SystemExit(f'Secret filename cannot be distributed: {relative}') + data = path.read_bytes() + files.append((relative.as_posix(), data, 0o755 if path.stat().st_mode & 0o111 else 0o644)) + manifest = {'project':'Shacraft Core','git_revision':revision,'source_epoch':epoch, + 'kind':'linux-x86_64' if args.binaries else 'source', + 'license':'MIT OR Apache-2.0', + 'files':{name:{'sha256':hashlib.sha256(data).hexdigest(),'size':len(data)} for name,data,_ in files}} + files.append(('RELEASE.json', (json.dumps(manifest,indent=2)+'\n').encode(), 0o644)) + output = ROOT / 'artifacts' / f"shacraft-core-mvp-{revision[:8]}-{manifest['kind']}.tar.gz" + output.parent.mkdir(exist_ok=True) + with output.open('wb') as raw, gzip.GzipFile(fileobj=raw,mode='wb',mtime=0) as zipped: + with tarfile.open(fileobj=zipped,mode='w') as archive: + for name,data,mode in files: + info=tarfile.TarInfo('shacraft-core/'+name) + info.size=len(data);info.mode=mode;info.mtime=epoch + archive.addfile(info,io.BytesIO(data)) + digest=hashlib.sha256(output.read_bytes()).hexdigest() + output.with_name(output.name+'.sha256').write_text(f'{digest} {output.name}\n') + with tarfile.open(output,'r:gz') as archive: + for name,data,_ in files: + actual=archive.extractfile('shacraft-core/'+name).read() + if actual!=data: + raise SystemExit(f'Archive verification failed for {name}') + print(json.dumps({'archive':str(output),'sha256':digest,'bytes':output.stat().st_size, + 'git_revision':revision,'verified_files':len(files)},indent=2)) + +if __name__=='__main__': + main() diff --git a/scripts/run.sh b/scripts/run.sh new file mode 100755 index 0000000..369da0f --- /dev/null +++ b/scripts/run.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -euo pipefail +shacraft_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +cd "$shacraft_root" +if [[ ! -x target/release/shacraft-server ]]; then + cargo build --release --locked -p shacraft-server -p shacraft-mcp -p shacraft-compat +fi +exec target/release/shacraft-server --client "$shacraft_root/client" --packages "$shacraft_root/packages" "$@" diff --git a/scripts/server-harness.mjs b/scripts/server-harness.mjs new file mode 100644 index 0000000..07e0790 --- /dev/null +++ b/scripts/server-harness.mjs @@ -0,0 +1,261 @@ +import assert from "node:assert/strict"; +import { spawn } from "node:child_process"; +import { mkdtemp, mkdir, readFile, writeFile } from "node:fs/promises"; +import os from "node:os"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +export const root = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + "..", +); +export const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); +export function options() { + const opts = {}; + for (let i = 2; i < process.argv.length; i += 2) + opts[process.argv[i].replace(/^--/, "")] = process.argv[i + 1]; + return opts; +} +export async function harness(opts = {}) { + const port = Number(opts.port || 4001), + url = `http://127.0.0.1:${port}`; + try { + await fetch(`${url}/api/health`, { signal: AbortSignal.timeout(500) }); + throw Error( + `Port ${port} is already serving HTTP; choose an unused --port`, + ); + } catch (error) { + if (error.message?.includes("already serving")) throw error; + } + const data = opts.data + ? path.resolve(opts.data) + : await mkdtemp(path.join(os.tmpdir(), "shacraft-server-test-")); + await mkdir(data, { recursive: true }); + let stderr = ""; + const binary = path.resolve( + opts.binary || path.join(root, "target/debug/shacraft-server"), + ); + const child = spawn( + binary, + [ + "--listen", + `127.0.0.1:${port}`, + "--data", + data, + "--client", + path.join(root, "client"), + "--packages", + path.join(root, "packages"), + ], + { cwd: root, stdio: ["ignore", "pipe", "pipe"] }, + ); + child.stdout.on("data", (chunk) => (stderr += chunk)); + child.stderr.on("data", (chunk) => (stderr += chunk)); + let failure; + child.on("error", (e) => (failure = e)); + const running = () => + child.exitCode === null && child.signalCode === null && !failure; + async function kill(signal = "SIGKILL") { + if (!running()) return; + const exited = new Promise((resolve) => child.once("exit", resolve)); + async function waitForExit() { + let timer; + await Promise.race([ + exited, + new Promise((resolve) => { + timer = setTimeout(resolve, 5000); + }), + ]); + clearTimeout(timer); + } + child.kill(signal); + await waitForExit(); + if (running()) { + child.kill("SIGKILL"); + await waitForExit(); + } + if (running()) throw Error("Test server did not exit after SIGKILL"); + } + async function stop() { + await kill("SIGINT"); + } + try { + const deadline = Date.now() + 45000; + while (true) { + if (failure) throw failure; + if (!running()) throw Error(`Server exited: ${stderr}`); + try { + if ((await fetch(`${url}/api/health`)).ok) break; + } catch {} + if (Date.now() > deadline) + throw Error(`Server startup timeout: ${stderr}`); + await delay(100); + } + } catch (e) { + await stop(); + throw e; + } + const token = ( + await readFile(path.join(data, "control.token"), "utf8") + ).trim(); + async function get(route) { + const r = await fetch(url + route); + assert.equal(r.status, 200, `${route}: HTTP ${r.status}`); + return r.json(); + } + async function control(method, params = {}) { + const response = await fetch(url + "/api/control", { + method: "POST", + headers: { + Authorization: `Bearer ${token}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({ method, params }), + }); + const body = await response.json(); + if (!response.ok || body.error) + throw Error(`${method}: ${body.error || response.status}`); + return body.result; + } + return { + url, + data, + pid: child.pid, + binary, + get, + control, + stop, + kill, + logs: () => stderr, + async report(value) { + const output = opts.output + ? path.resolve(opts.output) + : path.join(data, "report.json"); + await mkdir(path.dirname(output), { recursive: true }); + await writeFile(output, JSON.stringify(value, null, 2) + "\n"); + console.log( + JSON.stringify( + { + ...value, + samples: undefined, + sample_count: value.samples?.length, + report_file: output, + data, + }, + null, + 2, + ), + ); + }, + }; +} +export class Client { + constructor(url) { + this.ws = new WebSocket(url.replace(/^http/, "ws") + "/ws"); + this.queue = []; + this.waiters = []; + this.id = null; + this.seq = 0; + this.latest = null; + this.revision = null; + this.error = null; + this.open = new Promise((resolve, reject) => { + this.ws.addEventListener("open", resolve, { once: true }); + this.ws.addEventListener( + "error", + () => reject(Error("WebSocket connection failed")), + { once: true }, + ); + }); + this.ws.addEventListener("message", (event) => { + let m; + try { + m = JSON.parse(event.data); + } catch { + return; + } + if (m.type === "state") this.latest = m; + if (m.type === "welcome") { + this.id = m.id; + this.welcome = m; + } + if (["welcome", "snapshot", "blocks"].includes(m.type)) + this.revision = m.revision; + for (let i = 0; i < this.waiters.length; i++) { + const w = this.waiters[i]; + if (w.predicate(m)) { + this.waiters.splice(i, 1); + clearTimeout(w.timer); + w.resolve(m); + return; + } + } + this.queue.push(m); + if (this.queue.length > 500) this.queue.shift(); + }); + } + send(message) { + this.ws.send(JSON.stringify(message)); + } + async join(manifest, world, name = "TestPlayer") { + await this.open; + this.send({ + type: "join", + protocol: 1, + manifest_hash: manifest.hash, + world, + name, + }); + return this.next("welcome"); + } + next(type, predicate = () => true, timeout = 10000) { + return this.wait((m) => m.type === type && predicate(m), timeout); + } + wait(predicate, timeout = 10000) { + const i = this.queue.findIndex(predicate); + if (i >= 0) return Promise.resolve(this.queue.splice(i, 1)[0]); + return new Promise((resolve, reject) => { + const w = { + predicate, + resolve, + timer: setTimeout(() => { + this.waiters = this.waiters.filter((x) => x !== w); + reject(Error(`WebSocket message timeout (${timeout} ms)`)); + }, timeout), + }; + this.waiters.push(w); + }); + } + input(fields = {}) { + const input = { + type: "input", + seq: ++this.seq, + yaw: 0, + pitch: 0, + forward: 0, + strafe: 0, + jump: false, + ...fields, + }; + this.send(input); + return input.seq; + } + async state(predicate = () => true, timeout = 10000) { + return this.next( + "state", + (m) => + predicate( + m.players.find((p) => p.id === this.id), + m, + ), + timeout, + ); + } + async close() { + if (this.ws.readyState === WebSocket.CLOSED) return; + const closed = new Promise((resolve) => + this.ws.addEventListener("close", resolve, { once: true }), + ); + this.ws.close(); + await Promise.race([closed, delay(2000)]); + } +} diff --git a/scripts/verify.sh b/scripts/verify.sh index 19c882e..bbfc4e8 100755 --- a/scripts/verify.sh +++ b/scripts/verify.sh @@ -2,8 +2,10 @@ set -euo pipefail cd "$(dirname "${BASH_SOURCE[0]}")/.." cargo fmt --all -- --check +rustfmt --edition 2024 --check crates/shacraft-server/src/control.rs cargo clippy --workspace --all-targets --locked -- -D warnings cargo test --workspace --locked -cargo build -p shacraft-tools --locked +cargo build --workspace --locked python3 scripts/check_storage.py - +node --test client/tests/*.test.js +node scripts/check_server.mjs --binary target/debug/shacraft-server --port 4001 --output artifacts/server-e2e-debug.json