diff --git a/Cargo.lock b/Cargo.lock index 40d338ca4..e7af7fa47 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -93,13 +93,13 @@ checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" [[package]] name = "async-trait" -version = "0.1.81" +version = "0.1.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn", ] [[package]] @@ -170,11 +170,11 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.11.0-rc.0" +version = "0.11.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17092d478f4fadfb35a7e082f62e49f0907fdf048801d9d706277e34f9df8a78" +checksum = "8969801e57d15e15bc4d7cdc5600dc15ca06a9a62b622bd4871c2d21d8aeb42d" dependencies = [ - "crypto-common 0.2.0-rc.0", + "crypto-common 0.2.0-rc.1", ] [[package]] @@ -185,9 +185,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.16.3" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "102087e286b4677862ea56cf8fc58bb2cdfa8725c40ffb80fe3a008eb7f2fc83" +checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" [[package]] name = "byteorder" @@ -274,30 +274,31 @@ dependencies = [ [[package]] name = "cbindgen" -version = "0.26.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da6bc11b07529f16944307272d5bd9b22530bc7d05751717c9d416586cedab49" +checksum = "3fce8dd7fcfcbf3a0a87d8f515194b49d6135acab73e18bd380d1d93bb1a15eb" dependencies = [ "heck", - "indexmap 1.9.3", + "indexmap", "log", "proc-macro2", "quote", "serde", "serde_json", - "syn 1.0.109", + "syn", "tempfile", - "toml 0.5.11", + "toml", ] [[package]] name = "cc" -version = "1.1.8" +version = "1.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "504bdec147f2cc13c8b57ed9401fd8a147cc66b67ad5cb241394244f2c947549" +checksum = "e9d013ecb737093c0e86b151a7b837993cf9ec6c502946cfb44bedc392421e0b" dependencies = [ "jobserver", "libc", + "shlex", ] [[package]] @@ -386,39 +387,50 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpp_demangle" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8227005286ec39567949b33df9896bcadfa6051bccca2488129f108ca23119" +checksum = "96e58d342ad113c2b878f16d5d034c03be492ae460cdbc02b7f0f2284d310c7d" dependencies = [ "cfg-if", ] [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" dependencies = [ "libc", ] [[package]] name = "cranelift-bforest" -version = "0.109.0" +version = "0.110.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6b33d7e757a887989eb18b35712b2a67d96171ec3149d1bfb657b29b7b367c" +checksum = "305d51c180ebdc46ef61bc60c54ae6512db3bc9a05842a1f1e762e45977019ab" dependencies = [ "cranelift-entity", ] [[package]] -name = "cranelift-codegen" -version = "0.109.0" +name = "cranelift-bitset" +version = "0.110.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9acf15cb22be42d07c3b57d7856329cb228b7315d385346149df2566ad5e4aa" +checksum = "e3247afacd9b13d620033f3190d9e49d1beefc1acb33d5604a249956c9c13709" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "cranelift-codegen" +version = "0.110.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd7ca95e831c18d1356da783765c344207cbdffea91e13e47fa9327dbb2e0719" dependencies = [ "bumpalo", "cranelift-bforest", + "cranelift-bitset", "cranelift-codegen-meta", "cranelift-codegen-shared", "cranelift-control", @@ -435,43 +447,44 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.109.0" +version = "0.110.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e934d301392b73b3f8b0540391fb82465a0f179a3cee7c726482ac4727efcc97" +checksum = "450c105fa1e51bfba4e95a86e926504a867ad5639d63f31d43fe3b7ec1f1c9ef" dependencies = [ "cranelift-codegen-shared", ] [[package]] name = "cranelift-codegen-shared" -version = "0.109.0" +version = "0.110.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb2a2566b3d54b854dfb288b3b187f6d3d17d6f762c92898207eba302931da" +checksum = "5479117cd1266881479908d383086561cee37e49affbea9b1e6b594cc21cc220" [[package]] name = "cranelift-control" -version = "0.109.0" +version = "0.110.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0100f33b704cdacd01ad66ff41f8c5030d57cbff078e2a4e49ab1822591299fa" +checksum = "34378804f0abfdd22c068a741cfeed86938b92375b2a96fb0b42c878e0141bfb" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.109.0" +version = "0.110.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8cfdc315e5d18997093e040a8d234bea1ac1e118a716d3e30f40d449e78207b" +checksum = "a48cb0a194c9ba82fec35a1e492055388d89b2e3c03dee9dcf2488892be8004d" dependencies = [ + "cranelift-bitset", "serde", "serde_derive", ] [[package]] name = "cranelift-frontend" -version = "0.109.0" +version = "0.110.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f74b84f16af2e982b0c0c72233503d9d55cbfe3865dbe807ca28dc6642a28b5" +checksum = "8327afc6c1c05f4be62fefce5b439fa83521c65363a322e86ea32c85e7ceaf64" dependencies = [ "cranelift-codegen", "log", @@ -481,15 +494,15 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.109.0" +version = "0.110.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adf306d3dde705fb94bd48082f01d38c4ededc74293a4c007805f610bf08bc6e" +checksum = "56b08621c00321efcfa3eee6a3179adc009e21ea8d24ca7adc3c326184bc3f48" [[package]] name = "cranelift-native" -version = "0.109.0" +version = "0.110.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ea0ebdef7aff4a79bcbc8b6495f31315f16b3bf311152f472eaa8d679352581" +checksum = "d51180b147c8557c1196c77b098f04140c91962e135ea152cd2fcabf40cf365c" dependencies = [ "cranelift-codegen", "libc", @@ -498,9 +511,9 @@ dependencies = [ [[package]] name = "cranelift-wasm" -version = "0.109.0" +version = "0.110.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d549108a1942065cdbac3bb96c2952afa0e1b9a3beff4b08c4308ac72257576d" +checksum = "019e3dccb7f15e0bc14f0ddc034ec608a66df8e05c9e1e16f75a7716f8461799" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -521,15 +534,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "crossbeam-channel" -version = "0.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "crossbeam-deque" version = "0.8.5" @@ -567,9 +571,9 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.2.0-rc.0" +version = "0.2.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c070b79a496dccd931229780ad5bbedd535ceff6c3565605a8e440e18e1aa2b" +checksum = "b0b8ce8218c97789f16356e7896b3714f26c2ee1079b79c0b7ae7064bb9089fa" dependencies = [ "hybrid-array", ] @@ -631,7 +635,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.76", + "syn", "unicode-xid", ] @@ -653,8 +657,8 @@ version = "0.11.0-pre.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf2e3d6615d99707295a9673e889bf363a04b2a466bd320c65a72536f7577379" dependencies = [ - "block-buffer 0.11.0-rc.0", - "crypto-common 0.2.0-rc.0", + "block-buffer 0.11.0-rc.1", + "crypto-common 0.2.0-rc.1", ] [[package]] @@ -743,9 +747,9 @@ dependencies = [ [[package]] name = "extism" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b3dc6c1b4091536f0eb7ad69dc15624a9d79a044a6957994e7c6447941d8669" +checksum = "74614574b03f716c9d1439d46dbd993dc9ed778ebd149bec40a2d32142297b78" dependencies = [ "anyhow", "cbindgen", @@ -756,7 +760,7 @@ dependencies = [ "serde", "serde_json", "sha2", - "toml 0.8.19", + "toml", "tracing", "tracing-subscriber", "ureq", @@ -764,13 +768,14 @@ dependencies = [ "uuid", "wasi-common", "wasmtime", + "wiggle", ] [[package]] name = "extism-convert" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7327af9eaa0d7fe470f6bb0ee7a724045629bc4e6653afbdb066fb5aea4023f0" +checksum = "573b553cad4f82bd5625825803744815f40de4524fac5a6a6d1f137ab60c878b" dependencies = [ "anyhow", "base64 0.22.1", @@ -784,22 +789,22 @@ dependencies = [ [[package]] name = "extism-convert-macros" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48fc993e1ec975698a3d6e8d88d6c81088397ba9b80c43c76fef8e8f7a631e72" +checksum = "1dd2e4b0608d189ded6694a6c2c2da7522b54564ca143996b69cdda0ae56b7ac" dependencies = [ "manyhow", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.76", + "syn", ] [[package]] name = "extism-manifest" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23f529ac444f67ea8e6f81c36fa01c9864c30ca62cb356114fd0a071fb3bf3a4" +checksum = "6be4814f095a74d0547175bd9d8747106a03b21cfbe675f73457c0677a97042b" dependencies = [ "base64 0.22.1", "serde", @@ -815,7 +820,7 @@ checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] name = "fastnbt" version = "2.5.0" -source = "git+https://github.com/owengage/fastnbt.git#0ea1a338671e51e62277645fbfffbdcaf2d2ec60" +source = "git+https://github.com/owengage/fastnbt.git#e2a5d8a7001d4f074ae99fd21bb485667934baeb" dependencies = [ "byteorder", "cesu8", @@ -829,19 +834,6 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" -[[package]] -name = "fastsnbt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b48b5b742a5441eb6dac3dfe2c2bd048e91fd8e98abf266b4d9f89972aa8ec" -dependencies = [ - "byteorder", - "itoa", - "nom", - "ryu", - "serde", -] - [[package]] name = "fd-lock" version = "4.0.2" @@ -954,7 +946,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn", ] [[package]] @@ -1037,7 +1029,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" dependencies = [ "fallible-iterator", - "indexmap 2.3.0", + "indexmap", "stable_deref_trait", ] @@ -1055,9 +1047,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "h2" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ "atomic-waker", "bytes", @@ -1065,19 +1057,13 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.3.0", + "indexmap", "slab", "tokio", "tokio-util", "tracing", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.13.2" @@ -1189,9 +1175,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.2" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", "http", @@ -1278,19 +1264,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.3" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - -[[package]] -name = "indexmap" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -1383,9 +1359,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] @@ -1407,9 +1383,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libm" @@ -1457,7 +1433,7 @@ dependencies = [ "manyhow-macros", "proc-macro2", "quote", - "syn 2.0.76", + "syn", ] [[package]] @@ -1517,27 +1493,12 @@ dependencies = [ "rustix", ] -[[package]] -name = "memoffset" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] - [[package]] name = "mime" version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "miniz_oxide" version = "0.7.4" @@ -1583,13 +1544,14 @@ dependencies = [ ] [[package]] -name = "nom" -version = "7.1.3" +name = "noise" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +checksum = "6da45c8333f2e152fc665d78a380be060eb84fad8ca4c9f7ac8ca29216cff0cc" dependencies = [ - "memchr", - "minimal-lexical", + "num-traits", + "rand", + "rand_xorshift", ] [[package]] @@ -1643,7 +1605,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn", ] [[package]] @@ -1687,13 +1649,13 @@ dependencies = [ [[package]] name = "object" -version = "0.36.3" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "crc32fast", "hashbrown 0.14.5", - "indexmap 2.3.0", + "indexmap", "memchr", ] @@ -1747,7 +1709,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn", ] [[package]] @@ -1860,9 +1822,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.12.6" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" +checksum = "3b2ecbe40f08db5c006b5764a2645f7f3f141ce756412ac9e1dd6087e6d32995" dependencies = [ "bytes", "prost-derive", @@ -1870,22 +1832,22 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.12.6" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" +checksum = "acf0c195eebb4af52c752bec4f52f645da98b6e92077a04110c7f349477ae5ac" dependencies = [ "anyhow", - "itertools 0.12.1", + "itertools 0.13.0", "proc-macro2", "quote", - "syn 2.0.76", + "syn", ] [[package]] name = "psm" -version = "0.1.21" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" dependencies = [ "cc", ] @@ -1896,7 +1858,6 @@ version = "0.1.0-dev" dependencies = [ "base64 0.22.1", "bytes", - "crossbeam-channel", "ctrlc", "digest 0.11.0-pre.9", "hmac", @@ -1927,7 +1888,6 @@ dependencies = [ "simple_logger", "thiserror", "tokio", - "toml 0.8.19", "uuid", ] @@ -1938,7 +1898,7 @@ dependencies = [ "log", "pumpkin-core", "serde", - "toml 0.8.19", + "toml", ] [[package]] @@ -1958,8 +1918,6 @@ dependencies = [ name = "pumpkin-entity" version = "0.1.0" dependencies = [ - "num-derive", - "num-traits", "pumpkin-core", ] @@ -1980,7 +1938,7 @@ version = "0.1.0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn", ] [[package]] @@ -2009,8 +1967,6 @@ dependencies = [ "pumpkin-macros", "pumpkin-world", "serde", - "serde_json", - "take_mut", "thiserror", "uuid", ] @@ -2020,7 +1976,6 @@ name = "pumpkin-registry" version = "0.1.0" dependencies = [ "fastnbt", - "fastsnbt", "pumpkin-core", "pumpkin-protocol", "serde", @@ -2032,14 +1987,15 @@ version = "0.1.0" dependencies = [ "derive_more", "fastnbt", - "fastsnbt", "flate2", "futures", "itertools 0.13.0", "log", + "noise", "num-derive", "num-traits", "pumpkin-core", + "rand", "rayon", "serde", "serde_json", @@ -2050,9 +2006,9 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b22d8e7369034b9a7132bc2008cac12f2013c8132b45e0554e6e20e2617f2156" +checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" dependencies = [ "bytes", "pin-project-lite", @@ -2068,9 +2024,9 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba92fb39ec7ad06ca2582c0ca834dfeadcaf06ddfc8e635c80aa7e1c05315fdd" +checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" dependencies = [ "bytes", "rand", @@ -2085,15 +2041,15 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" +checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" dependencies = [ "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2135,6 +2091,15 @@ dependencies = [ "getrandom", ] +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core", +] + [[package]] name = "rayon" version = "1.10.0" @@ -2353,9 +2318,9 @@ checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "3f55e80d50763938498dd5ebb18647174e0c76dc38c5505294bb224624f30f36" dependencies = [ "bitflags 2.6.0", "errno", @@ -2399,9 +2364,9 @@ checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" [[package]] name = "rustls-webpki" -version = "0.102.6" +version = "0.102.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +checksum = "84678086bd54edf2b415183ed7a94d0efb049f1b646a33e22a36f3794be6ae56" dependencies = [ "ring", "rustls-pki-types", @@ -2419,6 +2384,9 @@ name = "semver" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] [[package]] name = "serde" @@ -2446,14 +2414,14 @@ checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn", ] [[package]] name = "serde_json" -version = "1.0.122" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", "memchr", @@ -2522,6 +2490,12 @@ dependencies = [ "dirs", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signature" version = "2.2.0" @@ -2638,20 +2612,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "1.0.109" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -2704,12 +2667,6 @@ dependencies = [ "winx", ] -[[package]] -name = "take_mut" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" - [[package]] name = "target-lexicon" version = "0.12.16" @@ -2729,6 +2686,15 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + [[package]] name = "thiserror" version = "1.0.63" @@ -2746,7 +2712,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn", ] [[package]] @@ -2831,7 +2797,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn", ] [[package]] @@ -2847,9 +2813,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -2858,15 +2824,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.8.19" @@ -2894,7 +2851,7 @@ version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ - "indexmap 2.3.0", + "indexmap", "serde", "serde_spanned", "toml_datetime", @@ -2918,15 +2875,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -2948,7 +2905,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn", ] [[package]] @@ -3114,9 +3071,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasi-common" -version = "22.0.0" +version = "23.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b86fd41e1e26ff6af9451c6a332a5ce5f5283ca51e87d875cdd9a05305598ee3" +checksum = "9c19d0b2b2f88ef39e8f5fd0e29e8b00d129e0824cc8c06d2caf9866a6a72b6b" dependencies = [ "anyhow", "bitflags 2.6.0", @@ -3140,34 +3097,35 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.76", + "syn", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" dependencies = [ "cfg-if", "js-sys", @@ -3177,9 +3135,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3187,28 +3145,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "wasm-encoder" -version = "0.209.1" +version = "0.212.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4a05336882dae732ce6bd48b7e11fe597293cb72c13da4f35d7d5f8d53b2a7" +checksum = "501940df4418b8929eb6d52f1aade1fdd15a5b86c92453cb696e3c906bd3fc33" dependencies = [ "leb128", ] @@ -3224,37 +3182,39 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.209.1" +version = "0.212.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07035cc9a9b41e62d3bb3a3815a66ab87c993c06fe1cf6b2a3f2a18499d937db" +checksum = "8d28bc49ba1e5c5b61ffa7a2eace10820443c4b7d1c0b144109261d14570fdf8" dependencies = [ "ahash", "bitflags 2.6.0", "hashbrown 0.14.5", - "indexmap 2.3.0", + "indexmap", "semver", "serde", ] [[package]] name = "wasmprinter" -version = "0.209.1" +version = "0.212.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceca8ae6eaa8c7c87b33c25c53bdf299f8c2a764aee1179402ff7652ef3a6859" +checksum = "dfac65326cc561112af88c3028f6dfdb140acff67ede33a8e86be2dc6b8956f7" dependencies = [ "anyhow", + "termcolor", "wasmparser", ] [[package]] name = "wasmtime" -version = "22.0.0" +version = "23.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786d8b5e7a4d54917c5ebe555b9667337e5f93383f49bddaaeec2eba68093b45" +checksum = "07232e0b473af36112da7348f51e73fa8b11047a6cb546096da3812930b7c93a" dependencies = [ "addr2line 0.21.0", "anyhow", "async-trait", + "bitflags 2.6.0", "bumpalo", "cc", "cfg-if", @@ -3262,14 +3222,13 @@ dependencies = [ "fxprof-processed-profile", "gimli 0.28.1", "hashbrown 0.14.5", - "indexmap 2.3.0", + "indexmap", "ittapi", "libc", "libm", "log", "mach2", "memfd", - "memoffset", "object", "once_cell", "paste", @@ -3284,7 +3243,7 @@ dependencies = [ "smallvec", "sptr", "target-lexicon", - "wasm-encoder 0.209.1", + "wasm-encoder 0.212.0", "wasmparser", "wasmtime-asm-macros", "wasmtime-cache", @@ -3304,18 +3263,18 @@ dependencies = [ [[package]] name = "wasmtime-asm-macros" -version = "22.0.0" +version = "23.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d697d99c341d4a9ffb72f3af7a02124d233eeb59aee010f36d88e97cca553d5e" +checksum = "e5a9c42562d879c749288d9a26acc0d95d2ca069e30c2ec2efce84461c4d62b3" dependencies = [ "cfg-if", ] [[package]] name = "wasmtime-cache" -version = "22.0.0" +version = "23.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "916610f9ae9a6c22deb25bba2e6247ba9f00b093d30620875203b91328a1adfa" +checksum = "38d5d5aac98c8ae87cf5244495da7722e3fa022aa6f3f4fcd5e3d6e5699ce422" dependencies = [ "anyhow", "base64 0.21.7", @@ -3326,21 +3285,21 @@ dependencies = [ "serde", "serde_derive", "sha2", - "toml 0.8.19", + "toml", "windows-sys 0.52.0", "zstd", ] [[package]] name = "wasmtime-component-macro" -version = "22.0.0" +version = "23.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b29b462b068e73b5b27fae092a27f47e5937cabf6b26be2779c978698a52feca" +checksum = "c0c3f57c4bc96f9b4a6ff4d6cb6e837913eff32e98d09e2b6d79b5c4647b415b" dependencies = [ "anyhow", "proc-macro2", "quote", - "syn 2.0.76", + "syn", "wasmtime-component-util", "wasmtime-wit-bindgen", "wit-parser", @@ -3348,15 +3307,15 @@ dependencies = [ [[package]] name = "wasmtime-component-util" -version = "22.0.0" +version = "23.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d2912c53d9054984b380dfbd7579f9c3681b2a73b903a56bd71a1c4f175f1e" +checksum = "1da707969bc31a565da9b32d087eb2370c95c6f2087c5539a15f2e3b27e77203" [[package]] name = "wasmtime-cranelift" -version = "22.0.0" +version = "23.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3975deafea000457ba84355c7c0fce0372937204f77026510b7b454f28a3a65" +checksum = "62cb6135ec46994299be711b78b03acaa9480de3715f827d450f0c947a84977c" dependencies = [ "anyhow", "cfg-if", @@ -3378,23 +3337,25 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "22.0.0" +version = "23.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f444e900e848b884d8a8a2949b6f5b92af642a3e663ff8fbe78731143a55be61" +checksum = "9bcaa3b42a0718e9123da7fb75e8e13fc95df7db2a7e32e2f2f4f0d3333b7d6f" dependencies = [ "anyhow", "cpp_demangle", + "cranelift-bitset", "cranelift-entity", "gimli 0.28.1", - "indexmap 2.3.0", + "indexmap", "log", "object", "postcard", "rustc-demangle", + "semver", "serde", "serde_derive", "target-lexicon", - "wasm-encoder 0.209.1", + "wasm-encoder 0.212.0", "wasmparser", "wasmprinter", "wasmtime-component-util", @@ -3403,9 +3364,9 @@ dependencies = [ [[package]] name = "wasmtime-fiber" -version = "22.0.0" +version = "23.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ded58eb2d1bf0dcd2182d0ccd7055c4b10b50d711514f1d73f61515d0fa829d" +checksum = "baf1c805515f4bc157f70f998038951009d21a19c1ef8c5fbb374a11b1d56672" dependencies = [ "anyhow", "cc", @@ -3418,9 +3379,9 @@ dependencies = [ [[package]] name = "wasmtime-jit-debug" -version = "22.0.0" +version = "23.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bc54198c6720f098210a85efb3ba8c078d1de4d373cdb6778850a66ae088d11" +checksum = "118e141e52f3898a531a612985bd09a5e05a1d646cad2f30a3020b675c21cd49" dependencies = [ "object", "once_cell", @@ -3430,9 +3391,9 @@ dependencies = [ [[package]] name = "wasmtime-jit-icache-coherence" -version = "22.0.0" +version = "23.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5afe2f0499542f9a4bcfa1b55bfdda803b6ade4e7c93c6b99e0f39dba44b0a91" +checksum = "2cfee42dac5148fc2664ab1f5cb8d7fa77a28d1a2cf1d9483abc2c3d751a58b9" dependencies = [ "anyhow", "cfg-if", @@ -3442,16 +3403,17 @@ dependencies = [ [[package]] name = "wasmtime-slab" -version = "22.0.0" +version = "23.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a7de1f2bec5bbb35d532e61c85c049dc84ae671df60492f90b954ecf21169e7" +checksum = "42eb8f6515708ec67974998c3e644101db4186308985f5ef7c2ef324ff33c948" [[package]] name = "wasmtime-types" -version = "22.0.0" +version = "23.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "412463e9000e14cf6856be48628d2213c20c153e29ffc22b036980c892ea6964" +checksum = "046873fb8fb3e9652f3fd76fe99c8c8129007695c3d73b2e307fdae40f6e324c" dependencies = [ + "anyhow", "cranelift-entity", "serde", "serde_derive", @@ -3461,20 +3423,20 @@ dependencies = [ [[package]] name = "wasmtime-versioned-export-macros" -version = "22.0.0" +version = "23.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de5a9bc4f44ceeb168e9e8e3be4e0b4beb9095b468479663a9e24c667e36826f" +checksum = "99c02af2e9dbeb427304d1a08787d70ed0dbfec1af2236616f84c9f1f03e7969" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn", ] [[package]] name = "wasmtime-winch" -version = "22.0.0" +version = "23.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed4db238a0241df2d15f79ad17b3a37a27f2ea6cb885894d81b42ae107544466" +checksum = "b2ceddc47a49af10908a288fdfdc296ab3932062cab62a785e3705bbb3709c59" dependencies = [ "anyhow", "cranelift-codegen", @@ -3489,13 +3451,13 @@ dependencies = [ [[package]] name = "wasmtime-wit-bindgen" -version = "22.0.0" +version = "23.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc077306b38288262e5ba01d4b21532a6987416cdc0aedf04bb06c22a68fdc" +checksum = "75f528f8b8a2376a3dacaf497d960216dd466d324425361e1e00e26de0a7705c" dependencies = [ "anyhow", "heck", - "indexmap 2.3.0", + "indexmap", "wit-parser", ] @@ -3532,9 +3494,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" dependencies = [ "js-sys", "wasm-bindgen", @@ -3542,18 +3504,18 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.3" +version = "0.26.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" +checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a" dependencies = [ "rustls-pki-types", ] [[package]] name = "wiggle" -version = "22.0.0" +version = "23.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29830e5d01c182d24b94092c697aa7ab0ee97d22e78a2bf40ca91eae6ebca5c2" +checksum = "af4a61a764e5c4f0cb8c1796859d266e75828c244089e77c81c6158dd8c4fda4" dependencies = [ "anyhow", "async-trait", @@ -3562,32 +3524,33 @@ dependencies = [ "tracing", "wasmtime", "wiggle-macro", + "witx", ] [[package]] name = "wiggle-generate" -version = "22.0.0" +version = "23.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "557567f2793508760cd855f7659b7a0b9dc4dbc451f53f1415d6943a15311ade" +checksum = "f2d45f4c50cfcbc222fb5221142fa65aa834d0a54b77b5760be0ea0a1ccad52d" dependencies = [ "anyhow", "heck", "proc-macro2", "quote", "shellexpand", - "syn 2.0.76", + "syn", "witx", ] [[package]] name = "wiggle-macro" -version = "22.0.0" +version = "23.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc26129a8aea20b62c961d1b9ab4a3c3b56b10042ed85d004f8678af0f21ba6e" +checksum = "12e0fbccad12e5b406effb8676eb3713fdbe366975fb65d56f960ace6da118e4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn", "wiggle-generate", ] @@ -3607,6 +3570,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -3615,9 +3587,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" -version = "0.20.0" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c6915884e731b2db0d8cf08cb64474cb69221a161675fd3c135f91febc3daa" +checksum = "2a41b67a37ea74e83c38ef495cc213aba73385236b1deee883dc869e835003b9" dependencies = [ "anyhow", "cranelift-codegen", @@ -3838,13 +3810,13 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.209.1" +version = "0.212.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e79b9e3c0b6bb589dec46317e645851e0db2734c44e2be5e251b03ff4a51269" +checksum = "ceeb0424aa8679f3fcf2d6e3cfa381f3d6fa6179976a2c05a6249dd2bb426716" dependencies = [ "anyhow", "id-arena", - "indexmap 2.3.0", + "indexmap", "log", "semver", "serde", @@ -3884,7 +3856,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index c66e5dd1e..f60a61650 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,17 @@ [workspace] resolver = "2" -members = [ "pumpkin-config", "pumpkin-core", "pumpkin-entity", "pumpkin-inventory", "pumpkin-macros/", "pumpkin-plugin", "pumpkin-protocol/", "pumpkin-registry/", "pumpkin-world", "pumpkin/"] +members = [ + "pumpkin-config", + "pumpkin-core", + "pumpkin-entity", + "pumpkin-inventory", + "pumpkin-macros/", + "pumpkin-plugin", + "pumpkin-protocol/", + "pumpkin-registry/", + "pumpkin-world", + "pumpkin/", +] [workspace.package] version = "0.1.0" @@ -13,7 +24,14 @@ codegen-units = 1 [workspace.dependencies] log = "0.4" -tokio = { version = "1.39.2", features = ["net", "macros", "rt-multi-thread", "fs", "io-util", "sync"] } +tokio = { version = "1.40", features = [ + "net", + "macros", + "rt-multi-thread", + "fs", + "io-util", + "sync", +] } rayon = "1.10.0" uuid = { version = "1.10.0", features = ["serde", "v3"] } derive_more = { version = "1.0.0", features = ["full"] } diff --git a/pumpkin-config/Cargo.toml b/pumpkin-config/Cargo.toml index 782294c9c..eacb43380 100644 --- a/pumpkin-config/Cargo.toml +++ b/pumpkin-config/Cargo.toml @@ -5,8 +5,8 @@ edition.workspace = true [dependencies] pumpkin-core = { path = "../pumpkin-core" } +serde.workspace = true +log.workspace = true -serde = "1.0" toml = "0.8" -log.workspace = true diff --git a/pumpkin-core/Cargo.toml b/pumpkin-core/Cargo.toml index ce34c98b4..b1b756968 100644 --- a/pumpkin-core/Cargo.toml +++ b/pumpkin-core/Cargo.toml @@ -5,8 +5,8 @@ edition.workspace = true [dependencies] serde.workspace = true -fastnbt = { git = "https://github.com/owengage/fastnbt.git" } uuid.workspace = true +fastnbt = { git = "https://github.com/owengage/fastnbt.git" } colored = "2" md5 = "0.7.0" diff --git a/pumpkin-core/src/text/hover.rs b/pumpkin-core/src/text/hover.rs index f01d8f30b..d9651fa4b 100644 --- a/pumpkin-core/src/text/hover.rs +++ b/pumpkin-core/src/text/hover.rs @@ -6,7 +6,6 @@ use super::Text; #[derive(Clone, Debug, Serialize, Deserialize)] #[serde(tag = "action", content = "contents", rename_all = "snake_case")] -#[allow(clippy::enum_variant_names)] pub enum HoverEvent<'a> { /// Displays a tooltip with the given text. ShowText(Text<'a>), diff --git a/pumpkin-entity/Cargo.toml b/pumpkin-entity/Cargo.toml index 2b96f7651..60d12a21e 100644 --- a/pumpkin-entity/Cargo.toml +++ b/pumpkin-entity/Cargo.toml @@ -4,7 +4,4 @@ version.workspace = true edition.workspace = true [dependencies] -pumpkin-core = { path = "../pumpkin-core"} - -num-traits = "0.2" -num-derive = "0.4" \ No newline at end of file +pumpkin-core = { path = "../pumpkin-core"} \ No newline at end of file diff --git a/pumpkin-inventory/Cargo.toml b/pumpkin-inventory/Cargo.toml index ccbb61f69..e30cbb273 100644 --- a/pumpkin-inventory/Cargo.toml +++ b/pumpkin-inventory/Cargo.toml @@ -9,4 +9,4 @@ num-derive = "0.4" thiserror = "1.0.63" itertools = "0.13.0" # For items -pumpkin-world = { path = "../pumpkin-world"} +pumpkin-world = { path = "../pumpkin-world"} \ No newline at end of file diff --git a/pumpkin-inventory/src/player.rs b/pumpkin-inventory/src/player.rs index a4cadd46a..a3611229c 100644 --- a/pumpkin-inventory/src/player.rs +++ b/pumpkin-inventory/src/player.rs @@ -2,8 +2,6 @@ use crate::container_click::MouseClick; use crate::{handle_item_change, Container, InventoryError, WindowType}; use pumpkin_world::item::ItemStack; -#[allow(dead_code)] -#[derive(Debug)] pub struct PlayerInventory { // Main Inventory + Hotbar crafting: [Option; 4], diff --git a/pumpkin-macros/Cargo.toml b/pumpkin-macros/Cargo.toml index 1950cc99b..c677c7c01 100644 --- a/pumpkin-macros/Cargo.toml +++ b/pumpkin-macros/Cargo.toml @@ -7,6 +7,6 @@ edition.workspace = true proc-macro = true [dependencies] -proc-macro2 = "1.0.86" -quote = "1.0.37" -syn = "2.0.76" +proc-macro2 = "1.0" +quote = "1.0" +syn = "2.0" diff --git a/pumpkin-plugin/Cargo.toml b/pumpkin-plugin/Cargo.toml index 558ce3b4c..9a1b4781a 100644 --- a/pumpkin-plugin/Cargo.toml +++ b/pumpkin-plugin/Cargo.toml @@ -4,6 +4,6 @@ version.workspace = true edition.workspace = true [dependencies] -extism = "1.5.0" -log.workspace = true serde.workspace = true +log.workspace = true +extism = "1.6.0" diff --git a/pumpkin-protocol/Cargo.toml b/pumpkin-protocol/Cargo.toml index b9d59e16f..0c0ab1296 100644 --- a/pumpkin-protocol/Cargo.toml +++ b/pumpkin-protocol/Cargo.toml @@ -13,12 +13,10 @@ bytes = "1.7" uuid.workspace = true serde.workspace = true -# to parse strings to json responses -serde_json = "1.0" flate2 = "1.0.33" -thiserror = "1.0.63" +thiserror = "1.0" log.workspace = true num-traits = "0.2" num-derive = "0.4" @@ -26,6 +24,6 @@ num-derive = "0.4" # encryption aes = "0.8.4" cfb8 = "0.8.1" -take_mut = "0.2.2" + itertools = "0.13.0" fastnbt = { git = "https://github.com/owengage/fastnbt.git" } diff --git a/pumpkin-protocol/src/bytebuf/deserializer.rs b/pumpkin-protocol/src/bytebuf/deserializer.rs index c2d96839f..1593d4bd2 100644 --- a/pumpkin-protocol/src/bytebuf/deserializer.rs +++ b/pumpkin-protocol/src/bytebuf/deserializer.rs @@ -45,77 +45,77 @@ impl<'a, 'de> de::Deserializer<'de> for Deserializer<'a> { where V: de::Visitor<'de>, { - visitor.visit_bool(self.inner.get_bool()) + visitor.visit_bool(self.inner.get_bool()?) } fn deserialize_i8(self, visitor: V) -> Result where V: de::Visitor<'de>, { - visitor.visit_i8(self.inner.get_i8()) + visitor.visit_i8(self.inner.get_i8()?) } fn deserialize_i16(self, visitor: V) -> Result where V: de::Visitor<'de>, { - visitor.visit_i16(self.inner.get_i16()) + visitor.visit_i16(self.inner.get_i16()?) } fn deserialize_i32(self, visitor: V) -> Result where V: de::Visitor<'de>, { - visitor.visit_i32(self.inner.get_i32()) + visitor.visit_i32(self.inner.get_i32()?) } fn deserialize_i64(self, visitor: V) -> Result where V: de::Visitor<'de>, { - visitor.visit_i64(self.inner.get_i64()) + visitor.visit_i64(self.inner.get_i64()?) } fn deserialize_u8(self, visitor: V) -> Result where V: de::Visitor<'de>, { - visitor.visit_u8(self.inner.get_u8()) + visitor.visit_u8(self.inner.get_u8()?) } fn deserialize_u16(self, visitor: V) -> Result where V: de::Visitor<'de>, { - visitor.visit_u16(self.inner.get_u16()) + visitor.visit_u16(self.inner.get_u16()?) } fn deserialize_u32(self, visitor: V) -> Result where V: de::Visitor<'de>, { - visitor.visit_u32(self.inner.get_u32()) + visitor.visit_u32(self.inner.get_u32()?) } fn deserialize_u64(self, visitor: V) -> Result where V: de::Visitor<'de>, { - visitor.visit_u64(self.inner.get_u64()) + visitor.visit_u64(self.inner.get_u64()?) } fn deserialize_f32(self, visitor: V) -> Result where V: de::Visitor<'de>, { - visitor.visit_f32(self.inner.get_f32()) + visitor.visit_f32(self.inner.get_f32()?) } fn deserialize_f64(self, visitor: V) -> Result where V: de::Visitor<'de>, { - visitor.visit_f64(self.inner.get_f64()) + visitor.visit_f64(self.inner.get_f64()?) } fn deserialize_char(self, _visitor: V) -> Result @@ -129,7 +129,7 @@ impl<'a, 'de> de::Deserializer<'de> for Deserializer<'a> { where V: de::Visitor<'de>, { - let string = self.inner.get_string().map_err(DeserializerError::Stdio)?; + let string = self.inner.get_string()?; visitor.visit_str(&string) } @@ -137,7 +137,7 @@ impl<'a, 'de> de::Deserializer<'de> for Deserializer<'a> { where V: de::Visitor<'de>, { - let string = self.inner.get_string().map_err(DeserializerError::Stdio)?; + let string = self.inner.get_string()?; visitor.visit_str(&string) } diff --git a/pumpkin-protocol/src/bytebuf/mod.rs b/pumpkin-protocol/src/bytebuf/mod.rs index d6be909de..4ec1dc5a6 100644 --- a/pumpkin-protocol/src/bytebuf/mod.rs +++ b/pumpkin-protocol/src/bytebuf/mod.rs @@ -1,7 +1,6 @@ use crate::{BitSet, FixedBitSet, VarInt, VarLongType}; use bytes::{Buf, BufMut, BytesMut}; use core::str; -use std::io::{self, Error, ErrorKind}; mod deserializer; pub use deserializer::DeserializerError; @@ -26,12 +25,12 @@ impl ByteBuffer { Self { buffer } } - pub fn get_var_int(&mut self) -> VarInt { + pub fn get_var_int(&mut self) -> Result { let mut value: i32 = 0; let mut position: i32 = 0; loop { - let read = self.buffer.get_u8(); + let read = self.get_u8()?; value |= ((read & SEGMENT_BITS) as i32) << position; @@ -42,19 +41,19 @@ impl ByteBuffer { position += 7; if position >= 32 { - panic!("VarInt is too big"); + return Err(DeserializerError::Message("VarInt is too big".to_string())); } } - VarInt(value) + Ok(VarInt(value)) } - pub fn get_var_long(&mut self) -> VarLongType { + pub fn get_var_long(&mut self) -> Result { let mut value: i64 = 0; let mut position: i64 = 0; loop { - let read = self.buffer.get_u8(); + let read = self.get_u8()?; value |= ((read & SEGMENT_BITS) as i64) << position; @@ -65,49 +64,48 @@ impl ByteBuffer { position += 7; if position >= 64 { - panic!("VarInt is too big"); + return Err(DeserializerError::Message("VarLong is too big".to_string())); } } - value + Ok(value) } - pub fn get_string(&mut self) -> Result { + pub fn get_string(&mut self) -> Result { self.get_string_len(32767) } - pub fn get_string_len(&mut self, max_size: usize) -> Result { - let size = self.get_var_int().0; + pub fn get_string_len(&mut self, max_size: usize) -> Result { + let size = self.get_var_int()?.0; if size as usize > max_size { - return Err(Error::new( - ErrorKind::InvalidData, - "String length is bigger than max size", + return Err(DeserializerError::Message( + "String length is bigger than max size".to_string(), )); } - let data = self.buffer.copy_to_bytes(size as usize); + + let data = self.copy_to_bytes(size as usize)?; if data.len() > max_size { - return Err(Error::new( - ErrorKind::InvalidData, - "String is bigger than max size", + return Err(DeserializerError::Message( + "String is bigger than max size".to_string(), )); } match str::from_utf8(&data) { Ok(string_result) => Ok(string_result.to_string()), - Err(e) => Err(Error::new(ErrorKind::InvalidData, e)), + Err(e) => Err(DeserializerError::Message(e.to_string())), } } - pub fn get_bool(&mut self) -> bool { - self.buffer.get_u8() != 0 + pub fn get_bool(&mut self) -> Result { + Ok(self.get_u8()? != 0) } - pub fn get_uuid(&mut self) -> uuid::Uuid { + pub fn get_uuid(&mut self) -> Result { let mut bytes = [0u8; 16]; - self.buffer.copy_to_slice(&mut bytes); - uuid::Uuid::from_slice(&bytes).expect("Failed to parse UUID") + self.copy_to_slice(&mut bytes)?; + Ok(uuid::Uuid::from_slice(&bytes).expect("Failed to parse UUID")) } - pub fn get_fixed_bitset(&mut self, bits: usize) -> FixedBitSet { + pub fn get_fixed_bitset(&mut self, bits: usize) -> Result { self.copy_to_bytes(bits.div_ceil(8)) } @@ -161,11 +159,14 @@ impl ByteBuffer { /// Reads a boolean. If true, the closure is called, and the returned value is /// wrapped in Some. Otherwise, this returns None. - pub fn get_option(&mut self, val: impl FnOnce(&mut Self) -> T) -> Option { - if self.get_bool() { - Some(val(self)) + pub fn get_option( + &mut self, + val: impl FnOnce(&mut Self) -> Result, + ) -> Result, DeserializerError> { + if self.get_bool()? { + Ok(Some(val(self)?)) } else { - None + Ok(None) } } /// Writes `true` if the option is Some, or `false` if None. If the option is @@ -177,13 +178,16 @@ impl ByteBuffer { } } - pub fn get_list(&mut self, val: impl Fn(&mut Self) -> T) -> Vec { - let len = self.get_var_int().0 as usize; + pub fn get_list( + &mut self, + val: impl Fn(&mut Self) -> Result, + ) -> Result, DeserializerError> { + let len = self.get_var_int()?.0 as usize; let mut list = Vec::with_capacity(len); for _ in 0..len { - list.push(val(self)); + list.push(val(self)?); } - list + Ok(list) } /// Writes a list to the buffer. pub fn put_list(&mut self, list: &[T], write: impl Fn(&mut Self, &T)) { @@ -211,50 +215,109 @@ impl ByteBuffer { pub fn buf(&mut self) -> &mut BytesMut { &mut self.buffer } -} -// trait -impl ByteBuffer { - pub fn get_u8(&mut self) -> u8 { - self.buffer.get_u8() + // Trait equivalents + pub fn get_u8(&mut self) -> Result { + if self.buffer.has_remaining() { + Ok(self.buffer.get_u8()) + } else { + Err(DeserializerError::Message( + "No bytes left to consume".to_string(), + )) + } } - pub fn get_i8(&mut self) -> i8 { - self.buffer.get_i8() + pub fn get_i8(&mut self) -> Result { + if self.buffer.has_remaining() { + Ok(self.buffer.get_i8()) + } else { + Err(DeserializerError::Message( + "No bytes left to consume".to_string(), + )) + } } - pub fn get_u16(&mut self) -> u16 { - self.buffer.get_u16() + pub fn get_u16(&mut self) -> Result { + if self.buffer.remaining() >= 2 { + Ok(self.buffer.get_u16()) + } else { + Err(DeserializerError::Message( + "Less than 2 bytes left to consume".to_string(), + )) + } } - pub fn get_i16(&mut self) -> i16 { - self.buffer.get_i16() + pub fn get_i16(&mut self) -> Result { + if self.buffer.remaining() >= 2 { + Ok(self.buffer.get_i16()) + } else { + Err(DeserializerError::Message( + "Less than 2 bytes left to consume".to_string(), + )) + } } - pub fn get_u32(&mut self) -> u32 { - self.buffer.get_u32() + pub fn get_u32(&mut self) -> Result { + if self.buffer.remaining() >= 4 { + Ok(self.buffer.get_u32()) + } else { + Err(DeserializerError::Message( + "Less than 4 bytes left to consume".to_string(), + )) + } } - pub fn get_i32(&mut self) -> i32 { - self.buffer.get_i32() + pub fn get_i32(&mut self) -> Result { + if self.buffer.remaining() >= 4 { + Ok(self.buffer.get_i32()) + } else { + Err(DeserializerError::Message( + "Less than 4 bytes left to consume".to_string(), + )) + } } - pub fn get_u64(&mut self) -> u64 { - self.buffer.get_u64() + pub fn get_u64(&mut self) -> Result { + if self.buffer.remaining() >= 8 { + Ok(self.buffer.get_u64()) + } else { + Err(DeserializerError::Message( + "Less than 8 bytes left to consume".to_string(), + )) + } } - pub fn get_i64(&mut self) -> i64 { - self.buffer.get_i64() + pub fn get_i64(&mut self) -> Result { + if self.buffer.remaining() >= 8 { + Ok(self.buffer.get_i64()) + } else { + Err(DeserializerError::Message( + "Less than 8 bytes left to consume".to_string(), + )) + } } - pub fn get_f32(&mut self) -> f32 { - self.buffer.get_f32() + pub fn get_f32(&mut self) -> Result { + if self.buffer.remaining() >= 4 { + Ok(self.buffer.get_f32()) + } else { + Err(DeserializerError::Message( + "Less than 4 bytes left to consume".to_string(), + )) + } } - pub fn get_f64(&mut self) -> f64 { - self.buffer.get_f64() + pub fn get_f64(&mut self) -> Result { + if self.buffer.remaining() >= 8 { + Ok(self.buffer.get_f64()) + } else { + Err(DeserializerError::Message( + "Less than 8 bytes left to consume".to_string(), + )) + } } + // TODO: SerializerError? pub fn put_u8(&mut self, n: u8) { self.buffer.put_u8(n) } @@ -295,12 +358,25 @@ impl ByteBuffer { self.buffer.put_f64(n) } - pub fn copy_to_bytes(&mut self, len: usize) -> bytes::Bytes { - self.buffer.copy_to_bytes(len) + pub fn copy_to_bytes(&mut self, len: usize) -> Result { + if self.buffer.len() >= len { + Ok(self.buffer.copy_to_bytes(len)) + } else { + Err(DeserializerError::Message( + "Unable to copy bytes".to_string(), + )) + } } - pub fn copy_to_slice(&mut self, dst: &mut [u8]) { - self.buffer.copy_to_slice(dst) + pub fn copy_to_slice(&mut self, dst: &mut [u8]) -> Result<(), DeserializerError> { + if self.buffer.remaining() >= dst.len() { + self.buffer.copy_to_slice(dst); + Ok(()) + } else { + Err(DeserializerError::Message( + "Unable to copy slice".to_string(), + )) + } } pub fn put_slice(&mut self, src: &[u8]) { diff --git a/pumpkin-protocol/src/bytebuf/packet_id.rs b/pumpkin-protocol/src/bytebuf/packet_id.rs index a422e247a..3a1004aab 100644 --- a/pumpkin-protocol/src/bytebuf/packet_id.rs +++ b/pumpkin-protocol/src/bytebuf/packet_id.rs @@ -83,12 +83,13 @@ where P: Packet + Serialize, { fn write(&self, bytebuf: &mut ByteBuffer) { - take_mut::take(bytebuf, |bytebuf| { - let mut serializer = serializer::Serializer::new(bytebuf); - self.serialize(&mut serializer) - .expect("Could not serialize packet"); - serializer.into() - }); + let mut serializer = serializer::Serializer::new(ByteBuffer::empty()); + self.serialize(&mut serializer) + .expect("Could not serialize packet"); + // We write the packet in an empty bytebuffer and then put it into our current one. + // In the future we may do packet batching thats the reason i don't let every packet create a new bytebuffer and use + // an existing instead + bytebuf.put(serializer.output.buf()); } } diff --git a/pumpkin-protocol/src/bytebuf/serializer.rs b/pumpkin-protocol/src/bytebuf/serializer.rs index 825288c2a..599852339 100644 --- a/pumpkin-protocol/src/bytebuf/serializer.rs +++ b/pumpkin-protocol/src/bytebuf/serializer.rs @@ -9,7 +9,7 @@ use thiserror::Error; use super::ByteBuffer; pub struct Serializer { - output: ByteBuffer, + pub output: ByteBuffer, } impl Serializer { diff --git a/pumpkin-protocol/src/client/play/c_login.rs b/pumpkin-protocol/src/client/play/c_login.rs index 7990bba96..5fcbf28b4 100644 --- a/pumpkin-protocol/src/client/play/c_login.rs +++ b/pumpkin-protocol/src/client/play/c_login.rs @@ -30,7 +30,7 @@ pub struct CLogin<'a> { } impl<'a> CLogin<'a> { - #[allow(clippy::too_many_arguments)] + #[expect(clippy::too_many_arguments)] pub fn new( entity_id: i32, is_hardcore: bool, diff --git a/pumpkin-protocol/src/client/play/c_particle.rs b/pumpkin-protocol/src/client/play/c_particle.rs index c3fa35a17..4ea1b66a2 100644 --- a/pumpkin-protocol/src/client/play/c_particle.rs +++ b/pumpkin-protocol/src/client/play/c_particle.rs @@ -21,7 +21,7 @@ pub struct CParticle<'a> { } impl<'a> CParticle<'a> { - #[allow(clippy::too_many_arguments)] + #[expect(clippy::too_many_arguments)] pub fn new( long_distance: bool, x: f64, diff --git a/pumpkin-protocol/src/client/play/c_player_chat_message.rs b/pumpkin-protocol/src/client/play/c_player_chat_message.rs index a79d0516c..8ec95ddca 100644 --- a/pumpkin-protocol/src/client/play/c_player_chat_message.rs +++ b/pumpkin-protocol/src/client/play/c_player_chat_message.rs @@ -22,7 +22,7 @@ pub struct CPlayerChatMessage<'a> { } impl<'a> CPlayerChatMessage<'a> { - #[allow(clippy::too_many_arguments)] + #[expect(clippy::too_many_arguments)] pub fn new( sender: UUID, index: VarInt, diff --git a/pumpkin-protocol/src/client/play/c_spawn_player.rs b/pumpkin-protocol/src/client/play/c_spawn_player.rs index ca3a7e3cc..73d0f8541 100644 --- a/pumpkin-protocol/src/client/play/c_spawn_player.rs +++ b/pumpkin-protocol/src/client/play/c_spawn_player.rs @@ -22,7 +22,7 @@ pub struct CSpawnEntity { } impl CSpawnEntity { - #[allow(clippy::too_many_arguments)] + #[expect(clippy::too_many_arguments)] pub fn new( entity_id: VarInt, entity_uuid: UUID, diff --git a/pumpkin-protocol/src/packet_encoder.rs b/pumpkin-protocol/src/packet_encoder.rs index 511d095d2..36b9c3697 100644 --- a/pumpkin-protocol/src/packet_encoder.rs +++ b/pumpkin-protocol/src/packet_encoder.rs @@ -22,8 +22,6 @@ pub struct PacketEncoder { } impl PacketEncoder { - // i think clippy is broken - #[allow(clippy::needless_borrows_for_generic_args)] pub fn append_packet(&mut self, packet: &P) -> Result<(), PacketError> { let start_len = self.buf.len(); @@ -87,6 +85,7 @@ impl PacketEncoder { let mut front = &mut self.buf[start_len..]; + #[allow(clippy::needless_borrows_for_generic_args)] VarInt(packet_len as i32) .encode(&mut front) .map_err(|_| PacketError::EncodeLength)?; diff --git a/pumpkin-protocol/src/server/handshake/mod.rs b/pumpkin-protocol/src/server/handshake/mod.rs index 100e67fd0..4935e5d00 100644 --- a/pumpkin-protocol/src/server/handshake/mod.rs +++ b/pumpkin-protocol/src/server/handshake/mod.rs @@ -16,10 +16,10 @@ pub struct SHandShake { impl ServerPacket for SHandShake { fn read(bytebuf: &mut ByteBuffer) -> Result { Ok(Self { - protocol_version: bytebuf.get_var_int(), - server_address: bytebuf.get_string_len(255).unwrap(), - server_port: bytebuf.get_u16(), - next_state: bytebuf.get_var_int().into(), + protocol_version: bytebuf.get_var_int()?, + server_address: bytebuf.get_string_len(255)?, + server_port: bytebuf.get_u16()?, + next_state: bytebuf.get_var_int()?.into(), }) } } diff --git a/pumpkin-protocol/src/server/login/s_encryption_response.rs b/pumpkin-protocol/src/server/login/s_encryption_response.rs index 980e54b20..16d40289e 100644 --- a/pumpkin-protocol/src/server/login/s_encryption_response.rs +++ b/pumpkin-protocol/src/server/login/s_encryption_response.rs @@ -15,10 +15,10 @@ pub struct SEncryptionResponse { impl ServerPacket for SEncryptionResponse { fn read(bytebuf: &mut ByteBuffer) -> Result { - let shared_secret_length = bytebuf.get_var_int(); - let shared_secret = bytebuf.copy_to_bytes(shared_secret_length.0 as usize); - let verify_token_length = bytebuf.get_var_int(); - let verify_token = bytebuf.copy_to_bytes(shared_secret_length.0 as usize); + let shared_secret_length = bytebuf.get_var_int()?; + let shared_secret = bytebuf.copy_to_bytes(shared_secret_length.0 as usize)?; + let verify_token_length = bytebuf.get_var_int()?; + let verify_token = bytebuf.copy_to_bytes(shared_secret_length.0 as usize)?; Ok(Self { shared_secret_length, shared_secret: shared_secret.to_vec(), diff --git a/pumpkin-protocol/src/server/login/s_login_start.rs b/pumpkin-protocol/src/server/login/s_login_start.rs index 96bbbac70..f9f0cb7ab 100644 --- a/pumpkin-protocol/src/server/login/s_login_start.rs +++ b/pumpkin-protocol/src/server/login/s_login_start.rs @@ -14,8 +14,8 @@ pub struct SLoginStart { impl ServerPacket for SLoginStart { fn read(bytebuf: &mut ByteBuffer) -> Result { Ok(Self { - name: bytebuf.get_string_len(16).unwrap(), - uuid: bytebuf.get_uuid(), + name: bytebuf.get_string_len(16)?, + uuid: bytebuf.get_uuid()?, }) } } diff --git a/pumpkin-protocol/src/server/login/s_plugin_response.rs b/pumpkin-protocol/src/server/login/s_plugin_response.rs index 15fca41f1..44360bde2 100644 --- a/pumpkin-protocol/src/server/login/s_plugin_response.rs +++ b/pumpkin-protocol/src/server/login/s_plugin_response.rs @@ -16,9 +16,9 @@ pub struct SLoginPluginResponse { impl ServerPacket for SLoginPluginResponse { fn read(bytebuf: &mut ByteBuffer) -> Result { Ok(Self { - message_id: bytebuf.get_var_int(), - successful: bytebuf.get_bool(), - data: bytebuf.get_option(|v| v.get_slice()), + message_id: bytebuf.get_var_int()?, + successful: bytebuf.get_bool()?, + data: bytebuf.get_option(|v| Ok(v.get_slice()))?, }) } } diff --git a/pumpkin-protocol/src/server/play/s_chat_message.rs b/pumpkin-protocol/src/server/play/s_chat_message.rs index 9332a28f2..76bd707cc 100644 --- a/pumpkin-protocol/src/server/play/s_chat_message.rs +++ b/pumpkin-protocol/src/server/play/s_chat_message.rs @@ -21,12 +21,12 @@ pub struct SChatMessage { impl ServerPacket for SChatMessage { fn read(bytebuf: &mut ByteBuffer) -> Result { Ok(Self { - message: bytebuf.get_string().unwrap(), - timestamp: bytebuf.get_i64(), - salt: bytebuf.get_i64(), - signature: bytebuf.get_option(|v| v.copy_to_bytes(256)), - message_count: bytebuf.get_var_int(), - acknowledged: bytebuf.get_fixed_bitset(20), + message: bytebuf.get_string()?, + timestamp: bytebuf.get_i64()?, + salt: bytebuf.get_i64()?, + signature: bytebuf.get_option(|v| v.copy_to_bytes(256))?, + message_count: bytebuf.get_var_int()?, + acknowledged: bytebuf.get_fixed_bitset(20)?, }) } } diff --git a/pumpkin-protocol/src/server/play/s_interact.rs b/pumpkin-protocol/src/server/play/s_interact.rs index 18e651163..36c968645 100644 --- a/pumpkin-protocol/src/server/play/s_interact.rs +++ b/pumpkin-protocol/src/server/play/s_interact.rs @@ -18,8 +18,8 @@ impl ServerPacket for SInteract { fn read( bytebuf: &mut crate::bytebuf::ByteBuffer, ) -> Result { - let entity_id = bytebuf.get_var_int(); - let typ = bytebuf.get_var_int(); + let entity_id = bytebuf.get_var_int()?; + let typ = bytebuf.get_var_int()?; let action = ActionType::from_i32(typ.0).ok_or(DeserializerError::Message( "invalid action type".to_string(), ))?; @@ -27,13 +27,13 @@ impl ServerPacket for SInteract { ActionType::Interact => None, ActionType::Attack => None, ActionType::InteractAt => { - Some((bytebuf.get_f32(), bytebuf.get_f32(), bytebuf.get_f32())) + Some((bytebuf.get_f32()?, bytebuf.get_f32()?, bytebuf.get_f32()?)) } }; let hand = match action { - ActionType::Interact => Some(bytebuf.get_var_int()), + ActionType::Interact => Some(bytebuf.get_var_int()?), ActionType::Attack => None, - ActionType::InteractAt => Some(bytebuf.get_var_int()), + ActionType::InteractAt => Some(bytebuf.get_var_int()?), }; Ok(Self { @@ -41,7 +41,7 @@ impl ServerPacket for SInteract { typ, target_position, hand, - sneaking: bytebuf.get_bool(), + sneaking: bytebuf.get_bool()?, }) } } diff --git a/pumpkin-protocol/src/server/play/s_player_command.rs b/pumpkin-protocol/src/server/play/s_player_command.rs index f6365cc02..c042f4769 100644 --- a/pumpkin-protocol/src/server/play/s_player_command.rs +++ b/pumpkin-protocol/src/server/play/s_player_command.rs @@ -25,9 +25,9 @@ pub enum Action { impl ServerPacket for SPlayerCommand { fn read(bytebuf: &mut crate::bytebuf::ByteBuffer) -> Result { Ok(Self { - entity_id: bytebuf.get_var_int(), - action: bytebuf.get_var_int(), - jump_boost: bytebuf.get_var_int(), + entity_id: bytebuf.get_var_int()?, + action: bytebuf.get_var_int()?, + jump_boost: bytebuf.get_var_int()?, }) } } diff --git a/pumpkin-protocol/src/slot.rs b/pumpkin-protocol/src/slot.rs index 1b2727ba3..671e1d0c5 100644 --- a/pumpkin-protocol/src/slot.rs +++ b/pumpkin-protocol/src/slot.rs @@ -7,7 +7,6 @@ use serde::{ }; #[derive(Debug, Clone)] -#[allow(dead_code)] pub struct Slot { item_count: VarInt, item_id: Option, diff --git a/pumpkin-registry/Cargo.toml b/pumpkin-registry/Cargo.toml index 8ba0b9457..f4fe985d9 100644 --- a/pumpkin-registry/Cargo.toml +++ b/pumpkin-registry/Cargo.toml @@ -9,6 +9,5 @@ pumpkin-core = { path = "../pumpkin-core"} # nbt fastnbt = { git = "https://github.com/owengage/fastnbt.git" } -fastsnbt = "0.2" serde.workspace = true diff --git a/pumpkin-registry/src/lib.rs b/pumpkin-registry/src/lib.rs index 2fb7d1a1b..ee9a3eeca 100644 --- a/pumpkin-registry/src/lib.rs +++ b/pumpkin-registry/src/lib.rs @@ -33,12 +33,12 @@ impl Registry { registry_id: "minecraft:worldgen/biome".to_string(), registry_entries: vec![ RegistryEntry { - entry_id: "minecraft:snowy_taiga", + entry_id: "minecraft:plains", data: fastnbt::to_bytes_with_opts(&Biome::default(), SerOpts::network_nbt()) .unwrap(), }, RegistryEntry { - entry_id: "minecraft:plains", + entry_id: "minecraft:snowy_taiga", data: fastnbt::to_bytes_with_opts(&Biome::default(), SerOpts::network_nbt()) .unwrap(), }, diff --git a/pumpkin-world/Cargo.toml b/pumpkin-world/Cargo.toml index 0cf6e622e..90be69d5c 100644 --- a/pumpkin-world/Cargo.toml +++ b/pumpkin-world/Cargo.toml @@ -6,20 +6,22 @@ edition.workspace = true [dependencies] pumpkin-core = { path = "../pumpkin-core"} - fastnbt = { git = "https://github.com/owengage/fastnbt.git" } -fastsnbt = "0.2" tokio.workspace = true rayon.workspace = true derive_more.workspace = true itertools = "0.13.0" -thiserror = "1.0.63" -futures = "0.3.30" -flate2 = "1.0.33" +thiserror = "1.0" +futures = "0.3" +flate2 = "1.0" serde.workspace = true serde_json = "1.0" static_assertions = "1.1.0" log.workspace = true +noise = "0.9.0" + +rand = "0.8.5" + num-traits = "0.2" num-derive = "0.4" diff --git a/pumpkin-world/src/biome.rs b/pumpkin-world/src/biome.rs index 3196e6ed6..6af83f6e0 100644 --- a/pumpkin-world/src/biome.rs +++ b/pumpkin-world/src/biome.rs @@ -1,9 +1,11 @@ use serde::{Deserialize, Serialize}; // TODO make this work with the protocol +// Send by the registry #[derive(Serialize, Deserialize, Clone, Copy)] #[non_exhaustive] pub enum Biome { Plains, + SnowyTiga, // TODO list all Biomes } diff --git a/pumpkin-world/src/chunk.rs b/pumpkin-world/src/chunk.rs index 1c13d423c..dd5aa643b 100644 --- a/pumpkin-world/src/chunk.rs +++ b/pumpkin-world/src/chunk.rs @@ -54,7 +54,7 @@ pub struct ChunkHeightmaps { } #[derive(Deserialize, Debug)] -#[allow(dead_code)] +#[expect(dead_code)] struct ChunkSection { #[serde(rename = "Y")] y: i32, @@ -64,7 +64,7 @@ struct ChunkSection { #[derive(Deserialize, Debug)] #[serde(rename_all = "PascalCase")] struct ChunkNbt { - #[allow(dead_code)] + #[expect(dead_code)] data_version: usize, #[serde(rename = "sections")] @@ -171,7 +171,7 @@ impl ChunkBlocks { index.y.get_absolute() as usize * CHUNK_AREA + *index.z as usize * 16 + *index.x as usize } - #[allow(dead_code)] + #[expect(dead_code)] fn calculate_heightmap(&self) -> ChunkHeightmaps { // figure out how LongArray is formatted // figure out how to find out if block is motion blocking diff --git a/pumpkin-world/src/global_registry.rs b/pumpkin-world/src/global_registry.rs index 1723cb8f8..19f8a6e6f 100644 --- a/pumpkin-world/src/global_registry.rs +++ b/pumpkin-world/src/global_registry.rs @@ -24,7 +24,6 @@ pub fn get_protocol_id(category: &str, entry: &str) -> u32 { .expect("No Entry found") } -#[allow(dead_code)] pub fn get_default<'a>(category: &str) -> Option<&'a str> { REGISTRY .get(category) diff --git a/pumpkin-world/src/item/item_registry.rs b/pumpkin-world/src/item/item_registry.rs index 9f3f64ab4..f91dd300c 100644 --- a/pumpkin-world/src/item/item_registry.rs +++ b/pumpkin-world/src/item/item_registry.rs @@ -28,12 +28,12 @@ pub struct ItemElement { components: ItemComponents, } -#[allow(dead_code)] +#[expect(dead_code)] pub fn get_item_element(item_id: &str) -> &ItemComponents { &ITEMS.get(item_id).expect("Item not found").components } -#[allow(dead_code)] +#[expect(dead_code)] pub fn get_item_protocol_id(item_id: &str) -> u32 { global_registry::get_protocol_id(ITEM_REGISTRY, item_id) } diff --git a/pumpkin-world/src/level.rs b/pumpkin-world/src/level.rs index 9f3f9f403..51578bde6 100644 --- a/pumpkin-world/src/level.rs +++ b/pumpkin-world/src/level.rs @@ -26,7 +26,7 @@ pub struct Level { } struct SaveFile { - #[allow(dead_code)] + #[expect(dead_code)] root_folder: PathBuf, region_folder: PathBuf, } @@ -277,7 +277,7 @@ impl Level { match compression { Compression::Gzip => { let mut z = GzDecoder::new(&compressed_data[..]); - let mut chunk_data = Vec::new(); + let mut chunk_data = Vec::with_capacity(compressed_data.len()); match z.read_to_end(&mut chunk_data) { Ok(_) => {} Err(e) => { @@ -288,7 +288,7 @@ impl Level { } Compression::Zlib => { let mut z = ZlibDecoder::new(&compressed_data[..]); - let mut chunk_data = Vec::new(); + let mut chunk_data = Vec::with_capacity(compressed_data.len()); match z.read_to_end(&mut chunk_data) { Ok(_) => {} Err(e) => { diff --git a/pumpkin-world/src/world_gen/generator.rs b/pumpkin-world/src/world_gen/generator.rs index 75ec90838..0a7d043d6 100644 --- a/pumpkin-world/src/world_gen/generator.rs +++ b/pumpkin-world/src/world_gen/generator.rs @@ -1,3 +1,4 @@ +use noise::Perlin; use pumpkin_core::math::vector2::Vector2; use static_assertions::assert_obj_safe; @@ -12,7 +13,6 @@ pub trait GeneratorInit { } pub trait WorldGenerator: Sync + Send { - #[allow(dead_code)] fn generate_chunk(&self, at: Vector2) -> ChunkData; } assert_obj_safe! {WorldGenerator} @@ -21,6 +21,17 @@ pub(crate) trait BiomeGenerator: Sync + Send { fn generate_biome(&self, at: XZBlockCoordinates) -> Biome; } +#[expect(dead_code)] pub(crate) trait TerrainGenerator: Sync + Send { + fn prepare_chunk(&self, at: &Vector2); + + /// Is static fn generate_block(&self, at: BlockCoordinates, biome: Biome) -> BlockId; } + +pub(crate) trait PerlinTerrainGenerator: Sync + Send { + fn prepare_chunk(&self, at: &Vector2, perlin: &Perlin); + + /// Dependens on the perlin noise height + fn generate_block(&self, at: BlockCoordinates, chunk_height: i16, biome: Biome) -> BlockId; +} diff --git a/pumpkin-world/src/world_gen/generic_generator.rs b/pumpkin-world/src/world_gen/generic_generator.rs index 6cb87ce22..8bdc17135 100644 --- a/pumpkin-world/src/world_gen/generic_generator.rs +++ b/pumpkin-world/src/world_gen/generic_generator.rs @@ -1,35 +1,46 @@ +use noise::{NoiseFn, Perlin}; use pumpkin_core::math::vector2::Vector2; use crate::{ chunk::{ChunkBlocks, ChunkData}, coordinates::{ChunkRelativeBlockCoordinates, ChunkRelativeXZBlockCoordinates}, - WORLD_LOWEST_Y, WORLD_MAX_Y, + WORLD_LOWEST_Y, }; use super::{ - generator::{BiomeGenerator, GeneratorInit, TerrainGenerator, WorldGenerator}, + generator::{BiomeGenerator, GeneratorInit, PerlinTerrainGenerator, WorldGenerator}, Seed, }; -pub struct GenericGenerator { +pub struct GenericGenerator { biome_generator: B, terrain_generator: T, + // TODO: May make this optional?. But would be pain to use in most biomes then. Maybe make a new trait like + // PerlinTerrainGenerator + perlin: Perlin, } -impl GeneratorInit +impl GeneratorInit for GenericGenerator { fn new(seed: Seed) -> Self { Self { biome_generator: B::new(seed), terrain_generator: T::new(seed), + perlin: Perlin::new(seed.0 as u32), } } } -impl WorldGenerator for GenericGenerator { +impl WorldGenerator for GenericGenerator { fn generate_chunk(&self, at: Vector2) -> ChunkData { let mut blocks = ChunkBlocks::default(); + self.terrain_generator.prepare_chunk(&at, &self.perlin); + let noise_value = self.perlin.get([at.x as f64 / 16.0, at.z as f64 / 16.0]); + + let base_height = 64.0; + let height_variation = 16.0; + let chunk_height = (noise_value * height_variation + base_height) as i32; for x in 0..16u8 { for z in 0..16u8 { @@ -42,7 +53,7 @@ impl WorldGenerator for GenericGenerator ); // Iterate from the highest block to the lowest, in order to minimize the heightmap updates - for y in (WORLD_LOWEST_Y..WORLD_MAX_Y).rev() { + for y in (WORLD_LOWEST_Y..chunk_height as i16).rev() { let coordinates = ChunkRelativeBlockCoordinates { x: x.into(), y: y.into(), @@ -51,8 +62,11 @@ impl WorldGenerator for GenericGenerator blocks.set_block( coordinates, - self.terrain_generator - .generate_block(coordinates.with_chunk_coordinates(at), biome), + self.terrain_generator.generate_block( + coordinates.with_chunk_coordinates(at), + chunk_height as i16, + biome, + ), ); } } @@ -64,3 +78,42 @@ impl WorldGenerator for GenericGenerator } } } + +// TODO: implement static terrain generator +/* +fn generate_chunk(&mut self, at: Vector2) -> ChunkData { + let mut blocks = ChunkBlocks::default(); + self.terrain_generator.prepare_chunk(&at, &self.perlin); + for x in 0..16u8 { + for z in 0..16u8 { + let biome = self.biome_generator.generate_biome( + ChunkRelativeXZBlockCoordinates { + x: x.into(), + z: z.into(), + } + .with_chunk_coordinates(at), + ); + + // Iterate from the highest block to the lowest, in order to minimize the heightmap updates + for y in (WORLD_LOWEST_Y..WORLD_MAX_Y).rev() { + let coordinates = ChunkRelativeBlockCoordinates { + x: x.into(), + y: y.into(), + z: z.into(), + }; + + blocks.set_block( + coordinates, + self.terrain_generator + .generate_block(coordinates.with_chunk_coordinates(at), biome), + ); + } + } + } + + ChunkData { + blocks, + position: at, + } +} +*/ diff --git a/pumpkin-world/src/world_gen/implementations/mod.rs b/pumpkin-world/src/world_gen/implementation/mod.rs similarity index 50% rename from pumpkin-world/src/world_gen/implementations/mod.rs rename to pumpkin-world/src/world_gen/implementation/mod.rs index 716121f9d..7aa11a83b 100644 --- a/pumpkin-world/src/world_gen/implementations/mod.rs +++ b/pumpkin-world/src/world_gen/implementation/mod.rs @@ -1 +1,2 @@ +pub mod overworld; pub mod superflat; diff --git a/pumpkin-world/src/world_gen/implementation/overworld/biome/mod.rs b/pumpkin-world/src/world_gen/implementation/overworld/biome/mod.rs new file mode 100644 index 000000000..df9a5d69f --- /dev/null +++ b/pumpkin-world/src/world_gen/implementation/overworld/biome/mod.rs @@ -0,0 +1 @@ +pub mod plains; diff --git a/pumpkin-world/src/world_gen/implementation/overworld/biome/plains.rs b/pumpkin-world/src/world_gen/implementation/overworld/biome/plains.rs new file mode 100644 index 000000000..cb3f3e981 --- /dev/null +++ b/pumpkin-world/src/world_gen/implementation/overworld/biome/plains.rs @@ -0,0 +1,60 @@ +use noise::Perlin; +use pumpkin_core::math::vector2::Vector2; + +use crate::{ + biome::Biome, + block::BlockId, + coordinates::{BlockCoordinates, XZBlockCoordinates}, + world_gen::{ + generator::{BiomeGenerator, GeneratorInit, PerlinTerrainGenerator}, + generic_generator::GenericGenerator, + Seed, + }, +}; + +pub type PlainsGenerator = GenericGenerator; + +pub(crate) struct PlainsBiomeGenerator {} + +impl GeneratorInit for PlainsBiomeGenerator { + fn new(_: Seed) -> Self { + Self {} + } +} + +impl BiomeGenerator for PlainsBiomeGenerator { + // TODO make generic over Biome and allow changing the Biome in the config. + fn generate_biome(&self, _: XZBlockCoordinates) -> Biome { + Biome::Plains + } +} + +pub(crate) struct PlainsTerrainGenerator {} + +impl GeneratorInit for PlainsTerrainGenerator { + fn new(_: Seed) -> Self { + Self {} + } +} + +impl PerlinTerrainGenerator for PlainsTerrainGenerator { + fn prepare_chunk(&self, _at: &Vector2, _perlin: &Perlin) {} + // TODO allow specifying which blocks should be at which height in the config. + fn generate_block(&self, at: BlockCoordinates, chunk_height: i16, _: Biome) -> BlockId { + let begin_stone_height = chunk_height - 5; + let begin_dirt_height = chunk_height - 1; + + let y = *at.y; + if y == -64 { + BlockId::from_id(79) // BEDROCK + } else if y >= -63 && y <= begin_stone_height { + return BlockId::from_id(1); // STONE + } else if y >= begin_stone_height && y < begin_dirt_height { + return BlockId::from_id(10); // DIRT; + } else if y == chunk_height - 1 { + return BlockId::from_id(9); // GRASS BLOCK + } else { + BlockId::AIR + } + } +} diff --git a/pumpkin-world/src/world_gen/implementation/overworld/mod.rs b/pumpkin-world/src/world_gen/implementation/overworld/mod.rs new file mode 100644 index 000000000..f1af41c40 --- /dev/null +++ b/pumpkin-world/src/world_gen/implementation/overworld/mod.rs @@ -0,0 +1 @@ +pub mod biome; diff --git a/pumpkin-world/src/world_gen/implementations/superflat.rs b/pumpkin-world/src/world_gen/implementation/superflat.rs similarity index 92% rename from pumpkin-world/src/world_gen/implementations/superflat.rs rename to pumpkin-world/src/world_gen/implementation/superflat.rs index edbbcf4ba..3acf32495 100644 --- a/pumpkin-world/src/world_gen/implementations/superflat.rs +++ b/pumpkin-world/src/world_gen/implementation/superflat.rs @@ -1,3 +1,5 @@ +use pumpkin_core::math::vector2::Vector2; + use crate::{ biome::Biome, block::BlockId, @@ -9,7 +11,7 @@ use crate::{ }, }; -#[allow(dead_code)] +#[expect(dead_code)] pub type SuperflatGenerator = GenericGenerator; pub(crate) struct SuperflatBiomeGenerator {} @@ -36,6 +38,7 @@ impl GeneratorInit for SuperflatTerrainGenerator { } impl TerrainGenerator for SuperflatTerrainGenerator { + fn prepare_chunk(&self, _at: &Vector2) {} // TODO allow specifying which blocks should be at which height in the config. fn generate_block(&self, at: BlockCoordinates, _: Biome) -> BlockId { match *at.y { diff --git a/pumpkin-world/src/world_gen/mod.rs b/pumpkin-world/src/world_gen/mod.rs index 9ab676e24..ddb1bbb9e 100644 --- a/pumpkin-world/src/world_gen/mod.rs +++ b/pumpkin-world/src/world_gen/mod.rs @@ -1,16 +1,15 @@ mod generator; mod generic_generator; -mod implementations; +mod implementation; mod seed; pub use generator::WorldGenerator; +use implementation::overworld::biome::plains::PlainsGenerator; pub use seed::Seed; use generator::GeneratorInit; -use implementations::superflat::SuperflatGenerator; -#[allow(dead_code)] pub fn get_world_gen(seed: Seed) -> Box { // TODO decide which WorldGenerator to pick based on config. - Box::new(SuperflatGenerator::new(seed)) + Box::new(PlainsGenerator::new(seed)) } diff --git a/pumpkin-world/src/world_gen/seed.rs b/pumpkin-world/src/world_gen/seed.rs index a3245c2b6..137a6ecdd 100644 --- a/pumpkin-world/src/world_gen/seed.rs +++ b/pumpkin-world/src/world_gen/seed.rs @@ -1,6 +1,5 @@ use std::hash::{DefaultHasher, Hash, Hasher}; -#[allow(dead_code)] #[derive(Clone, Copy)] pub struct Seed(pub i64); diff --git a/pumpkin/Cargo.toml b/pumpkin/Cargo.toml index bd0264416..edb2209a7 100644 --- a/pumpkin/Cargo.toml +++ b/pumpkin/Cargo.toml @@ -21,7 +21,6 @@ pumpkin-registry = { path = "../pumpkin-registry"} # config serde.workspace = true serde_json = "1.0" -toml = "0.8.19" bytes = "1.7" @@ -29,7 +28,7 @@ rand = "0.8.5" num-traits = "0.2" num-derive = "0.4" -num-bigint = "0.4.6" +num-bigint = "0.4" ctrlc = "3.4" @@ -47,7 +46,7 @@ digest = "=0.11.0-pre.9" hmac = "0.12.1" sha2 = "0.10.8" -thiserror = "1.0.63" +thiserror = "1.0" # icon loading base64 = "0.22.1" @@ -59,7 +58,6 @@ log.workspace = true # networking mio = { version = "1.0.2", features = ["os-poll", "net"]} -crossbeam-channel = "0.5.13" uuid.workspace = true tokio.workspace = true diff --git a/pumpkin/src/client/authentication.rs b/pumpkin/src/client/authentication.rs index 692cf266c..1320d934d 100644 --- a/pumpkin/src/client/authentication.rs +++ b/pumpkin/src/client/authentication.rs @@ -13,8 +13,8 @@ use uuid::Uuid; use crate::server::Server; #[derive(Deserialize, Clone, Debug)] -#[allow(non_snake_case)] -#[allow(dead_code)] +#[expect(non_snake_case)] +#[expect(dead_code)] pub struct ProfileTextures { timestamp: i64, profileId: Uuid, @@ -24,8 +24,7 @@ pub struct ProfileTextures { } #[derive(Deserialize, Clone, Debug)] -#[allow(non_snake_case)] -#[allow(dead_code)] +#[expect(dead_code)] pub struct Texture { url: String, metadata: Option>, diff --git a/pumpkin/src/commands/cmd_gamemode.rs b/pumpkin/src/commands/cmd_gamemode.rs index 17e47fea4..d7b25ecf5 100644 --- a/pumpkin/src/commands/cmd_gamemode.rs +++ b/pumpkin/src/commands/cmd_gamemode.rs @@ -72,7 +72,7 @@ pub(crate) fn init_command_tree<'a>() -> CommandTree<'a> { ))); } else { // TODO - #[allow(clippy::let_underscore_future)] + #[expect(clippy::let_underscore_future)] let _ = target.set_gamemode(gamemode); target.send_system_message(TextComponent::text(&format!( "Game mode was set to {:?}", @@ -97,7 +97,7 @@ pub(crate) fn init_command_tree<'a>() -> CommandTree<'a> { ))); } else { // TODO - #[allow(clippy::let_underscore_future)] + #[expect(clippy::let_underscore_future)] let _ = target.set_gamemode(gamemode); target.send_system_message(TextComponent::text(&format!( "Game mode was set to {:?}", diff --git a/pumpkin/src/commands/tree.rs b/pumpkin/src/commands/tree.rs index eb0647826..63243be59 100644 --- a/pumpkin/src/commands/tree.rs +++ b/pumpkin/src/commands/tree.rs @@ -23,8 +23,9 @@ pub(crate) enum NodeType<'a> { run: &'a (dyn Fn(&mut CommandSender, &mut Server, &ConsumedArgs) -> Result<(), InvalidTreeError> + Sync), }, - #[allow(dead_code)] // todo: remove (so far no commands requiring this are implemented) - Literal { string: &'a str }, + Literal { + string: &'a str, + }, Argument { name: &'a str, consumer: ArgumentConsumer<'a>, diff --git a/pumpkin/src/commands/tree_builder.rs b/pumpkin/src/commands/tree_builder.rs index 338dc5f69..acb285259 100644 --- a/pumpkin/src/commands/tree_builder.rs +++ b/pumpkin/src/commands/tree_builder.rs @@ -131,7 +131,7 @@ impl<'a> NonLeafNodeBuilder<'a> { } /// Matches a sting literal. -#[allow(dead_code)] // todo: remove (so far no commands requiring this are implemented) +#[expect(dead_code)] // todo: remove (so far no commands requiring this are implemented) pub fn literal(string: &str) -> NonLeafNodeBuilder { NonLeafNodeBuilder { node_type: NodeType::Literal { string }, diff --git a/pumpkin/src/main.rs b/pumpkin/src/main.rs index 18bc812b0..3ac0c7840 100644 --- a/pumpkin/src/main.rs +++ b/pumpkin/src/main.rs @@ -1,5 +1,4 @@ -#![allow(clippy::await_holding_refcell_ref)] -#![allow(clippy::await_holding_lock)] +#![expect(clippy::await_holding_lock)] #[cfg(target_os = "wasi")] compile_error!("Compiling for WASI targets is not supported!"); diff --git a/pumpkin/src/proxy/velocity.rs b/pumpkin/src/proxy/velocity.rs index b2f753506..b23e17082 100644 --- a/pumpkin/src/proxy/velocity.rs +++ b/pumpkin/src/proxy/velocity.rs @@ -52,7 +52,7 @@ pub fn receive_plugin_response( buf.put_slice(data_without_signature); // check velocity version - let version = buf.get_var_int(); + let version = buf.get_var_int().unwrap(); let version = version.0; if version > MAX_SUPPORTED_FORWARDING_VERSION { client.kick(&format!(