From e45e3ec36243a2673a89acb670b92b082d093539 Mon Sep 17 00:00:00 2001 From: Bjorn Beishline <75190918+BjornTheProgrammer@users.noreply.github.com> Date: Thu, 12 Feb 2026 01:43:21 -0700 Subject: [PATCH] Move jars download to client instead of build --- rust/Cargo.lock | 553 +++++++++++++++++-------------------- rust/build/java.rs | 115 +------- rust/src/commands/mod.rs | 2 +- rust/src/java/resources.rs | 168 +++++++++-- rust/src/lib.rs | 17 +- 5 files changed, 419 insertions(+), 436 deletions(-) diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 69b3298..30e04d9 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -50,12 +50,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - [[package]] name = "annotate-snippets" version = "0.12.11" @@ -66,15 +60,6 @@ dependencies = [ "unicode-width 0.2.2", ] -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - [[package]] name = "anstream" version = "0.6.21" @@ -148,9 +133,9 @@ checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "async-compression" -version = "0.4.37" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d10e4f991a553474232bc0a31799f6d24b034a84c0971d80d2e2f78b2e576e40" +checksum = "68650b7df54f0293fd061972a0fb05aaf4fc0879d3b3d21a638a182c5c543b9f" dependencies = [ "compression-codecs", "compression-core", @@ -259,9 +244,9 @@ checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" [[package]] name = "bytes" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "bzip2" @@ -322,13 +307,13 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chacha20" -version = "0.10.0-rc.9" +version = "0.10.0-rc.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c81d916c6ae06736ec667b51f95ee5ff660a75f4ea6ce1bd932c942365c0ea43" +checksum = "c536927023d1c432e6e23a25ef45f6756094eac2ab460db5fb17a772acdfd312" dependencies = [ "cfg-if", "cpufeatures", - "rand_core 0.10.0-rc-6", + "rand_core 0.10.0", ] [[package]] @@ -415,9 +400,9 @@ checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] name = "constant_time_eq" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] name = "cookie" @@ -448,6 +433,12 @@ dependencies = [ "url", ] +[[package]] +name = "cpubits" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ef0c543070d296ea414df2dd7625d1b24866ce206709d8a4a424f28377f5861" + [[package]] name = "cpufeatures" version = "0.2.17" @@ -549,9 +540,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crossfire" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9c756fd351d7bc1f95698a33a90ce39c8f7458335cc7e95132d3d36124902a" +checksum = "86db11309bffee9435040d648c13c3efbdbcdcd3ead9872e65ce9dff4c3f79ce" dependencies = [ "crossbeam-utils", "futures-core", @@ -573,13 +564,14 @@ dependencies = [ [[package]] name = "crypto-bigint" -version = "0.7.0-rc.22" +version = "0.7.0-rc.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c3561863ce55e3226ecc48b08679f4b66cb1b92b9afb42c2c402dfe8b9b51" +checksum = "cba9eeeb213f7fd29353032f71f7c173e5f6d95d85151cb3a47197b0ea7e8be7" dependencies = [ + "cpubits", "ctutils", "num-traits", - "rand_core 0.10.0-rc-6", + "rand_core 0.10.0", "serdect", "zeroize", ] @@ -596,9 +588,9 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.2.0-rc.13" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7722afd27468475c9b6063dc03a57ef2ca833816981619f8ebe64d38d207eef" +checksum = "211f05e03c7d03754740fd9e585de910a095d6b99f8bcfffdef8319fa02a8331" dependencies = [ "hybrid-array", ] @@ -609,9 +601,9 @@ version = "0.7.0-pre.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "334a79c97c0b7fa536716dc132fd417d0afbf471440a41fc25a5d9f66d8771cd" dependencies = [ - "crypto-bigint 0.7.0-rc.22", + "crypto-bigint 0.7.0-rc.25", "libm", - "rand_core 0.10.0-rc-6", + "rand_core 0.10.0", ] [[package]] @@ -723,13 +715,13 @@ dependencies = [ [[package]] name = "digest" -version = "0.11.0-rc.9" +version = "0.11.0-rc.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff8de092798697546237a3a701e4174fe021579faec9b854379af9bf1e31962" +checksum = "02b42f1d9edf5207c137646b568a0168ca0ec25b7f9eaf7f9961da51a3d91cea" dependencies = [ "block-buffer 0.11.0", "const-oid 0.10.2", - "crypto-common 0.2.0-rc.13", + "crypto-common 0.2.0", "subtle", ] @@ -859,9 +851,9 @@ dependencies = [ [[package]] name = "env_filter" -version = "0.1.4" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" +checksum = "7a1c3cc8e57274ec99de65301228b537f1e4eedc1b8e0f9411c6caac8ae7308f" dependencies = [ "log", "regex", @@ -869,9 +861,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" +checksum = "b2daee4ea451f429a58296525ddf28b45a3b64f1acf6587e2067437bb11e218d" dependencies = [ "anstream", "anstyle", @@ -955,9 +947,9 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" dependencies = [ "crc32fast", "miniz_oxide", @@ -976,12 +968,6 @@ 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" @@ -1146,16 +1132,18 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.4.0-rc.1" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f70a332ddf75e5e5e43284304179ba02f391f82f692f030b08a8378adf3c99" +checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi", - "rand_core 0.10.0-rc-6", + "rand_core 0.10.0", "wasip2", "wasip3", + "wasm-bindgen", ] [[package]] @@ -1193,7 +1181,7 @@ version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ - "foldhash 0.1.5", + "foldhash", ] [[package]] @@ -1201,11 +1189,6 @@ name = "hashbrown" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash 0.2.0", -] [[package]] name = "heck" @@ -1239,11 +1222,11 @@ dependencies = [ [[package]] name = "hmac" -version = "0.13.0-rc.4" +version = "0.13.0-rc.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9956e202a691c5c86c60303a421f66f93f44b29433407b7c43cf2bebadc750e" +checksum = "ef451d73f36d8a3f93ad32c332ea01146c9650e1ec821a9b0e46c01277d544f8" dependencies = [ - "digest 0.11.0-rc.9", + "digest 0.11.0-rc.11", ] [[package]] @@ -1273,9 +1256,9 @@ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "hybrid-array" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b41fb3dc24fe72c2e3a4685eed55917c2fb228851257f4a8f2d985da9443c3e5" +checksum = "e1b229d73f5803b562cc26e4da0396c8610a4ee209f4fac8fa4f8d709166dc45" dependencies = [ "typenum", ] @@ -1472,9 +1455,9 @@ dependencies = [ [[package]] name = "jiff" -version = "0.2.18" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e67e8da4c49d6d9909fe03361f9b620f58898859f5c7aded68351e85e71ecf50" +checksum = "c867c356cc096b33f4981825ab281ecba3db0acefe60329f044c1789d94c6543" dependencies = [ "jiff-static", "log", @@ -1485,9 +1468,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.18" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c84ee7f197eca9a86c6fd6cb771e55eb991632f15f2bc3ca6ec838929e6e78" +checksum = "f7946b4325269738f270bb55b3c19ab5c5040525f83fd625259422a9d25d9be5" dependencies = [ "proc-macro2", "quote", @@ -1533,6 +1516,12 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + [[package]] name = "leb128fmt" version = "0.1.0" @@ -1620,15 +1609,6 @@ version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" -[[package]] -name = "lru" -version = "0.16.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593" -dependencies = [ - "hashbrown 0.16.1", -] - [[package]] name = "lz4-java-wrc" version = "0.2.0" @@ -1655,6 +1635,15 @@ dependencies = [ "sha2 0.10.9", ] +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + [[package]] name = "md-5" version = "0.10.6" @@ -1761,6 +1750,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -1816,15 +1815,6 @@ dependencies = [ "libc", ] -[[package]] -name = "num_threads" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" -dependencies = [ - "libc", -] - [[package]] name = "object" version = "0.37.3" @@ -1852,6 +1842,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + [[package]] name = "owo-colors" version = "4.2.3" @@ -1954,49 +1950,6 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" -[[package]] -name = "pest" -version = "2.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9eb05c21a464ea704b53158d358a31e6425db2f63a1a7312268b05fe2b75f7" -dependencies = [ - "memchr", - "ucd-trie", -] - -[[package]] -name = "pest_derive" -version = "2.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f9dbced329c441fa79d80472764b1a2c7e57123553b8519b36663a2fb234ed" -dependencies = [ - "pest", - "pest_generator", -] - -[[package]] -name = "pest_generator" -version = "2.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bb96d5051a78f44f43c8f712d8e810adb0ebf923fc9ed2655a7f66f63ba8ee5" -dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pest_meta" -version = "2.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "602113b5b5e8621770cfd490cfd90b9f84ab29bd2b0e49ad83eb6d186cef2365" -dependencies = [ - "pest", - "sha2 0.10.9", -] - [[package]] name = "petgraph" version = "0.8.3" @@ -2239,16 +2192,15 @@ dependencies = [ [[package]] name = "pumpkin" version = "0.1.0-dev+1.21.11" -source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#441040105bb8ceb8b118bf84039727e6423046aa" +source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#e438e09991619d105c9835570b09c1b4624eedc5" dependencies = [ "arc-swap", "base64", "bytes", "crossbeam", - "dashmap", "flate2", "futures", - "hmac 0.13.0-rc.4", + "hmac 0.13.0-rc.5", "libloading 0.9.0", "log", "num-bigint", @@ -2267,14 +2219,14 @@ dependencies = [ "rustyline", "serde", "serde_json", - "sha1 0.11.0-rc.4", - "sha2 0.11.0-rc.4", - "signature 2.2.0", - "simplelog", + "sha1 0.11.0-rc.5", + "sha2 0.11.0-rc.5", "thiserror", "time", "tokio", "tokio-util", + "tracing", + "tracing-subscriber", "ureq", "uuid", ] @@ -2282,7 +2234,7 @@ dependencies = [ [[package]] name = "pumpkin-api-macros" version = "0.1.0-dev+1.21.11" -source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#441040105bb8ceb8b118bf84039727e6423046aa" +source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#e438e09991619d105c9835570b09c1b4624eedc5" dependencies = [ "proc-macro-error2", "proc-macro2", @@ -2293,7 +2245,7 @@ dependencies = [ [[package]] name = "pumpkin-config" version = "0.1.0-dev+1.21.11" -source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#441040105bb8ceb8b118bf84039727e6423046aa" +source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#e438e09991619d105c9835570b09c1b4624eedc5" dependencies = [ "log", "pumpkin-util", @@ -2305,27 +2257,19 @@ dependencies = [ [[package]] name = "pumpkin-data" version = "0.1.0-dev+1.21.11" -source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#441040105bb8ceb8b118bf84039727e6423046aa" +source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#e438e09991619d105c9835570b09c1b4624eedc5" dependencies = [ "crc-fast", - "heck", - "indexmap", "phf", - "proc-macro2", "pumpkin-nbt", "pumpkin-util", - "quote", - "rayon", "serde", - "serde_json", - "serde_json5", - "syn", ] [[package]] name = "pumpkin-inventory" version = "0.1.0-dev+1.21.11" -source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#441040105bb8ceb8b118bf84039727e6423046aa" +source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#e438e09991619d105c9835570b09c1b4624eedc5" dependencies = [ "crossbeam-utils", "log", @@ -2340,10 +2284,9 @@ dependencies = [ [[package]] name = "pumpkin-macros" version = "0.1.0-dev+1.21.11" -source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#441040105bb8ceb8b118bf84039727e6423046aa" +source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#e438e09991619d105c9835570b09c1b4624eedc5" dependencies = [ "proc-macro-error2", - "proc-macro2", "pumpkin-data", "quote", "syn", @@ -2352,7 +2295,7 @@ dependencies = [ [[package]] name = "pumpkin-nbt" version = "0.1.0-dev+1.21.11" -source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#441040105bb8ceb8b118bf84039727e6423046aa" +source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#e438e09991619d105c9835570b09c1b4624eedc5" dependencies = [ "bytes", "cesu8", @@ -2364,7 +2307,7 @@ dependencies = [ [[package]] name = "pumpkin-protocol" version = "0.1.0-dev+1.21.11" -source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#441040105bb8ceb8b118bf84039727e6423046aa" +source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#e438e09991619d105c9835570b09c1b4624eedc5" dependencies = [ "aes", "async-compression", @@ -2386,7 +2329,7 @@ dependencies = [ [[package]] name = "pumpkin-util" version = "0.1.0-dev+1.21.11" -source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#441040105bb8ceb8b118bf84039727e6423046aa" +source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#e438e09991619d105c9835570b09c1b4624eedc5" dependencies = [ "base64", "bytes", @@ -2411,7 +2354,7 @@ dependencies = [ [[package]] name = "pumpkin-world" version = "0.1.0-dev+1.21.11" -source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#441040105bb8ceb8b118bf84039727e6423046aa" +source = "git+https://github.com/Pumpkin-MC/Pumpkin.git?branch=master#e438e09991619d105c9835570b09c1b4624eedc5" dependencies = [ "bitflags", "bytes", @@ -2423,10 +2366,7 @@ dependencies = [ "futures", "itertools", "log", - "lru", "lz4-java-wrc", - "num-derive", - "num-traits", "num_cpus", "pumpkin-config", "pumpkin-data", @@ -2437,10 +2377,9 @@ dependencies = [ "ruzstd", "serde", "serde_json", - "sha2 0.11.0-rc.4", + "sha2 0.11.0-rc.5", "slotmap", "thiserror", - "thread_local", "tokio", "tokio-util", "uuid", @@ -2473,12 +2412,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.10.0-rc.8" -source = "git+https://github.com/rust-random/rand#a4c9a8e565fa310de423e3ba89593b647b721e8c" +version = "0.10.0-rc.9" +source = "git+https://github.com/rust-random/rand#72afe1e973fcd83d840cf597888223072bbdb04c" dependencies = [ "chacha20", - "getrandom 0.4.0-rc.1", - "rand_core 0.10.0-rc-6", + "getrandom 0.4.1", + "rand_core 0.10.0", ] [[package]] @@ -2492,29 +2431,9 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.10.0-rc-6" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70765ff7112b0fb2d272d24d9a2f907fc206211304328fe58b2db15a5649ef28" - -[[package]] -name = "rayon" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] +checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba" [[package]] name = "redox_syscall" @@ -2544,8 +2463,17 @@ checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", - "regex-automata", - "regex-syntax", + "regex-automata 0.4.13", + "regex-syntax 0.8.8", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", ] [[package]] @@ -2556,9 +2484,15 @@ checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.8.8", ] +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + [[package]] name = "regex-syntax" version = "0.8.8" @@ -2591,19 +2525,18 @@ dependencies = [ [[package]] name = "rsa" -version = "0.10.0-rc.14" +version = "0.10.0-rc.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ef381dd6f207f81aff2ee3a8264eddd68ba475bbfcdb44ca445e5906bce381b" +checksum = "1b342b99544549f37509ed7fd42b0cea04bfd9ce07c16ca56094cf0fbeefbbcd" dependencies = [ "const-oid 0.10.2", - "crypto-bigint 0.7.0-rc.22", + "crypto-bigint 0.7.0-rc.25", "crypto-primes", - "digest 0.11.0-rc.9", + "digest 0.11.0-rc.11", "pkcs1", "pkcs8 0.11.0-rc.10", - "rand_core 0.10.0-rc-6", - "sha1 0.11.0-rc.4", - "signature 3.0.0-rc.9", + "rand_core 0.10.0", + "signature 3.0.0-rc.10", "spki 0.8.0-rc.4", "zeroize", ] @@ -2742,9 +2675,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] name = "same-file" @@ -2861,17 +2794,6 @@ dependencies = [ "zmij", ] -[[package]] -name = "serde_json5" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d34d03f54462862f2a42918391c9526337f53171eaa4d8894562be7f252edd3" -dependencies = [ - "pest", - "pest_derive", - "serde", -] - [[package]] name = "serde_spanned" version = "1.0.4" @@ -2904,13 +2826,13 @@ dependencies = [ [[package]] name = "sha1" -version = "0.11.0-rc.4" +version = "0.11.0-rc.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c777f0a122a53fddb0beb6e706771197000b8eb5c9f42b5b850f450ef48c788" +checksum = "3b167252f3c126be0d8926639c4c4706950f01445900c4b3db0fd7e89fcb750a" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.11.0-rc.9", + "digest 0.11.0-rc.11", ] [[package]] @@ -2926,13 +2848,22 @@ dependencies = [ [[package]] name = "sha2" -version = "0.11.0-rc.4" +version = "0.11.0-rc.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7535f94fa3339fe9e5e9be6260a909e62af97f6e14b32345ccf79b92b8b81233" +checksum = "7c5f3b1e2dc8aad28310d8410bd4d7e180eca65fca176c52ab00d364475d0024" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.11.0-rc.9", + "digest 0.11.0-rc.11", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", ] [[package]] @@ -2972,12 +2903,12 @@ dependencies = [ [[package]] name = "signature" -version = "3.0.0-rc.9" +version = "3.0.0-rc.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad0ce3b3f8efd7406f22e2ca5d02be21cdf3b3d1d53ab141f784de8965c7c7e" +checksum = "7f1880df446116126965eeec169136b2e0251dba37c6223bcc819569550edea3" dependencies = [ - "digest 0.11.0-rc.9", - "rand_core 0.10.0-rc-6", + "digest 0.11.0-rc.11", + "rand_core 0.10.0", ] [[package]] @@ -2986,18 +2917,6 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" -[[package]] -name = "simplelog" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16257adbfaef1ee58b1363bdc0664c9b8e1e30aed86049635fb5f147d065a9c0" -dependencies = [ - "ansi_term", - "log", - "termcolor", - "time", -] - [[package]] name = "siphasher" version = "1.0.2" @@ -3006,9 +2925,9 @@ checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" [[package]] name = "slab" -version = "0.4.12" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "slotmap" @@ -3153,15 +3072,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - [[package]] name = "terminal_size" version = "0.4.3" @@ -3213,16 +3123,14 @@ dependencies = [ [[package]] name = "time" -version = "0.3.46" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9da98b7d9b7dad93488a84b8248efc35352b0b2657397d4167e7ad67e5d535e5" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", "itoa", "js-sys", - "libc", "num-conv", - "num_threads", "powerfmt", "serde_core", "time-core", @@ -3237,9 +3145,9 @@ checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" [[package]] name = "time-macros" -version = "0.2.26" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc610bac2dcee56805c99642447d4c5dbde4d01f752ffea0199aee1f601dc4" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" dependencies = [ "num-conv", "time-core", @@ -3335,6 +3243,68 @@ version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec 1.15.1", + "thread_local", + "time", + "tracing", + "tracing-core", + "tracing-log", +] + [[package]] name = "twox-hash" version = "1.6.3" @@ -3353,9 +3323,9 @@ checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" [[package]] name = "typed-path" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3015e6ce46d5ad8751e4a772543a30c7511468070e98e64e20165f8f81155b64" +checksum = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e" [[package]] name = "typenum" @@ -3363,12 +3333,6 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" -[[package]] -name = "ucd-trie" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" - [[package]] name = "uncased" version = "0.9.10" @@ -3422,9 +3386,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "3.1.4" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d39cb1dbab692d82a977c0392ffac19e188bd9186a9f32806f0aaa859d75585a" +checksum = "fdc97a28575b85cfedf2a7e7d3cc64b3e11bd8ac766666318003abbacc7a21fc" dependencies = [ "base64", "cookie_store", @@ -3525,6 +3489,12 @@ dependencies = [ "syn", ] +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + [[package]] name = "version_check" version = "0.9.5" @@ -3553,16 +3523,16 @@ version = "1.0.2+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" dependencies = [ - "wit-bindgen 0.51.0", + "wit-bindgen", ] [[package]] name = "wasip3" -version = "0.3.1+wasi-0.3.0-rc-2025-09-16" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba4be47b1d11244670d11857eee0758a8f2c39aea64d80b78c1ce29b4642cd" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ - "wit-bindgen 0.48.1", + "wit-bindgen", ] [[package]] @@ -3612,9 +3582,9 @@ dependencies = [ [[package]] name = "wasm-encoder" -version = "0.241.2" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01164c9dda68301e34fdae536c23ed6fe90ce6d97213ccc171eebbd3d02d6b8" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" dependencies = [ "leb128fmt", "wasmparser", @@ -3622,9 +3592,9 @@ dependencies = [ [[package]] name = "wasm-metadata" -version = "0.241.2" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876fe286f2fa416386deedebe8407e6f19e0b5aeaef3d03161e77a15fa80f167" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" dependencies = [ "anyhow", "indexmap", @@ -3634,9 +3604,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.241.2" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46d90019b1afd4b808c263e428de644f3003691f243387d30d673211ee0cb8e8" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" dependencies = [ "bitflags", "hashbrown 0.15.5", @@ -3863,24 +3833,18 @@ checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" [[package]] name = "wit-bindgen" -version = "0.48.1" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f8c2adb5f74ac9395bc3121c99a1254bf9310482c27b13f97167aedb5887138" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" dependencies = [ "wit-bindgen-rust-macro", ] [[package]] -name = "wit-bindgen" +name = "wit-bindgen-core" version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" - -[[package]] -name = "wit-bindgen-core" -version = "0.48.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b881a098cae03686d7a0587f8f306f8a58102ad8da8b5599100fbe0e7f5800b" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" dependencies = [ "anyhow", "heck", @@ -3889,9 +3853,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" -version = "0.48.1" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69667efa439a453e1d50dac939c6cab6d2c3ac724a9d232b6631dad2472a5b70" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" dependencies = [ "anyhow", "heck", @@ -3905,9 +3869,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" -version = "0.48.1" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae2e22cceb5d105d52326c07e3e67603a861cc7add70fc467f7cc7ec5265017" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" dependencies = [ "anyhow", "prettyplease", @@ -3920,9 +3884,9 @@ dependencies = [ [[package]] name = "wit-component" -version = "0.241.2" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0c57df25e7ee612d946d3b7646c1ddb2310f8280aa2c17e543b66e0812241" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" dependencies = [ "anyhow", "bitflags", @@ -3939,9 +3903,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.241.2" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ef1c6ad67f35c831abd4039c02894de97034100899614d1c44e2268ad01c91" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" dependencies = [ "anyhow", "id-arena", @@ -3986,18 +3950,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.37" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7456cf00f0685ad319c5b1693f291a650eaf345e941d082fc4e03df8a03996ac" +checksum = "fdea86ddd5568519879b8187e1cf04e24fce28f7fe046ceecbce472ff19a2572" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.37" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1328722bbf2115db7e19d69ebcc15e795719e2d66b60827c6a69a117365e37a0" +checksum = "0c15e1b46eff7c6c91195752e0eeed8ef040e391cdece7c25376957d5f15df22" dependencies = [ "proc-macro2", "quote", @@ -4080,9 +4044,9 @@ dependencies = [ [[package]] name = "zip" -version = "7.2.0" +version = "7.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42e33efc22a0650c311c2ef19115ce232583abbe80850bc8b66509ebef02de0" +checksum = "cc12baa6db2b15a140161ce53d72209dacea594230798c24774139b54ecaa980" dependencies = [ "aes", "bzip2", @@ -4090,8 +4054,7 @@ dependencies = [ "crc32fast", "deflate64", "flate2", - "generic-array", - "getrandom 0.3.4", + "getrandom 0.4.1", "hmac 0.12.1", "indexmap", "lzma-rust2", @@ -4108,15 +4071,15 @@ dependencies = [ [[package]] name = "zlib-rs" -version = "0.5.5" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40990edd51aae2c2b6907af74ffb635029d5788228222c4bb811e9351c0caad3" +checksum = "a7948af682ccbc3342b6e9420e8c51c1fe5d7bf7756002b4a3c6cabfe96a7e3c" [[package]] name = "zmij" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1966f8ac2c1f76987d69a74d0e0f929241c10e78136434e3be70ff7f58f64214" +checksum = "3ff05f8caa9038894637571ae6b9e29466c1f4f829d26c9b28f869a29cbe3445" [[package]] name = "zopfli" diff --git a/rust/build/java.rs b/rust/build/java.rs index 4cd8795..fe9b55b 100644 --- a/rust/build/java.rs +++ b/rust/build/java.rs @@ -1,10 +1,9 @@ -use std::{collections::HashSet, fs, path::PathBuf}; +use std::{fs, path::PathBuf}; -use j4rs::{JvmBuilder, LocalJarArtifact, MavenArtifact, MavenArtifactRepo, MavenSettings}; +use j4rs::{JvmBuilder, LocalJarArtifact, MavenArtifactRepo, MavenSettings}; pub fn setup_java(base: PathBuf) { let resources = base.join("resources"); - let jassets = resources.join("jassets"); let deps = resources.join("deps"); let mut java_path = base.clone(); @@ -17,82 +16,6 @@ pub fn setup_java(base: PathBuf) { .join("libs") .join("patchbukkit.jar"); - let dependencies = [ - ("com.google.guava", "guava", "33.3.1-jre"), - ( - "net.md-5", - "bungeecord-chat", - "1.21-R0.2-deprecated+build.21", - ), - ("net.kyori", "adventure-text-logger-slf4j", "4.25.0"), - ("net.kyori", "adventure-text-minimessage", "4.25.0"), - ("net.kyori", "adventure-text-serializer-legacy", "4.25.0"), - ("net.kyori", "adventure-text-serializer-plain", "4.25.0"), - ("net.kyori", "adventure-text-serializer-json", "4.25.0"), - ("net.kyori", "adventure-api", "4.25.0"), - ("net.kyori", "adventure-key", "4.25.0"), - ("net.kyori", "adventure-text-serializer-commons", "4.25.0"), - ("net.kyori", "adventure-text-serializer-gson", "4.25.0"), - ("com.google.code.gson", "gson", "2.11.0"), - ("org.yaml", "snakeyaml", "2.2"), - ("org.joml", "joml", "1.10.8"), - ("it.unimi.dsi", "fastutil", "8.5.15"), - ("org.apache.logging.log4j", "log4j-api", "2.24.1"), - ( - "org.apache.maven.resolver", - "maven-resolver-connector-basic", - "1.9.18", - ), - ( - "org.apache.maven.resolver", - "maven-resolver-transport-http", - "1.9.18", - ), - ("org.apache.maven", "maven-resolver-provider", "3.9.6"), - ("org.apache.maven.resolver", "maven-resolver-impl", "1.9.18"), - ("org.slf4j", "jcl-over-slf4j", "1.7.36"), - ( - "org.apache.maven.resolver", - "maven-resolver-named-locks", - "1.9.18", - ), - ("org.slf4j", "slf4j-api", "2.0.16"), - ("com.mojang", "brigadier", "1.3.10"), - ("org.jspecify", "jspecify", "1.0.0"), - ("com.google.guava", "failureaccess", "1.0.2"), - ( - "com.google.guava", - "listenablefuture", - "9999.0-empty-to-avoid-conflict-with-guava", - ), - ("com.google.code.findbugs", "jsr305", "3.0.2"), - ("org.checkerframework", "checker-qual", "3.43.0"), - ("com.google.errorprone", "error_prone_annotations", "2.28.0"), - ("com.google.j2objc", "j2objc-annotations", "3.0.0"), - ("org.apache.maven", "maven-model-builder", "3.9.6"), - ("org.apache.maven", "maven-model", "3.9.6"), - ("org.apache.maven", "maven-repository-metadata", "3.9.6"), - ("org.apache.maven.resolver", "maven-resolver-spi", "1.9.18"), - ("org.apache.maven.resolver", "maven-resolver-util", "1.9.18"), - ("org.apache.maven.resolver", "maven-resolver-api", "1.9.18"), - ("org.apache.maven", "maven-artifact", "3.9.6"), - ("org.codehaus.plexus", "plexus-utils", "3.5.1"), - ("javax.inject", "javax.inject", "1"), - ("org.apache.httpcomponents", "httpclient", "4.5.14"), - ("org.apache.httpcomponents", "httpcore", "4.4.16"), - ("commons-codec", "commons-codec", "1.16.0"), - ("net.kyori", "examination-string", "1.3.0"), - ("net.kyori", "examination-api", "1.3.0"), - ("org.codehaus.plexus", "plexus-interpolation", "1.26"), - ("org.apache.maven", "maven-builder-support", "3.9.6"), - ("org.eclipse.sisu", "org.eclipse.sisu.inject", "0.9.0.M2"), - ("org.apache.commons", "commons-lang3", "3.12.0"), - ("net.kyori", "option", "1.1.0"), - // These are deps of patchbukkit itself - ("io.papermc.paper", "paper-api", "1.21.11-R0.1-SNAPSHOT"), - ("com.google.protobuf", "protobuf-java", "4.33.5"), - ]; - let jvm = JvmBuilder::new() .with_maven_settings(MavenSettings::new(vec![MavenArtifactRepo::from( "papermc::https://repo.papermc.io/repository/maven-public/", @@ -103,40 +26,6 @@ pub fn setup_java(base: PathBuf) { .map_err(|err| format!("jvm failed to init: {err:?}")) .unwrap(); - let expected: HashSet = dependencies - .iter() - .map(|d| format!("{}-{}.jar", d.1, d.2)) - .collect(); - - for entry in fs::read_dir(&jassets).unwrap() { - let entry = entry.unwrap(); - let file_name = entry.file_name().to_string_lossy().into_owned(); - - if file_name.starts_with("j4rs-") { - continue; - } - - if !expected.contains(&file_name) { - let remove_path = entry.path(); - fs::remove_file(remove_path).unwrap(); - } - } - - if deps.exists() { - fs::remove_dir_all(&deps).unwrap(); - } - - for dep in dependencies { - let jar_path = jassets.join(format!("{}-{}.jar", dep.1, dep.2)); - if !jar_path.exists() { - jvm.deploy_artifact(&MavenArtifact::from(format!( - "{}:{}:{}", - dep.0, dep.1, dep.2 - ))) - .unwrap(); - } - } - if !&patchbukkit_jar.exists() { panic!( "Failed to find patchbukkit.jar, build the java library first by running `gradle build` in the java directory!" diff --git a/rust/src/commands/mod.rs b/rust/src/commands/mod.rs index 13598b1..9fb37de 100644 --- a/rust/src/commands/mod.rs +++ b/rust/src/commands/mod.rs @@ -142,7 +142,7 @@ impl CommandExecutor for JavaCommandExecutor { }) .await .unwrap(); - Ok(()) + Ok(1) }) } } diff --git a/rust/src/java/resources.rs b/rust/src/java/resources.rs index e5e3d12..56303cb 100644 --- a/rust/src/java/resources.rs +++ b/rust/src/java/resources.rs @@ -5,36 +5,170 @@ use std::{ }; use anyhow::Result; +use j4rs::{JvmBuilder, MavenArtifact, MavenArtifactRepo, MavenSettings}; use rust_embed::Embed; #[derive(Embed)] #[folder = "resources/"] pub struct Resources; -pub fn cleanup_stale_files(j4rs_folder: &PathBuf) { - let allowed: HashSet = Resources::iter() +pub const DEPENDENCIES: &[(&str, &str, &str)] = &[ + ("com.google.guava", "guava", "33.3.1-jre"), + ( + "net.md-5", + "bungeecord-chat", + "1.21-R0.2-deprecated+build.21", + ), + ("net.kyori", "adventure-text-logger-slf4j", "4.25.0"), + ("net.kyori", "adventure-text-minimessage", "4.25.0"), + ("net.kyori", "adventure-text-serializer-legacy", "4.25.0"), + ("net.kyori", "adventure-text-serializer-plain", "4.25.0"), + ("net.kyori", "adventure-text-serializer-json", "4.25.0"), + ("net.kyori", "adventure-api", "4.25.0"), + ("net.kyori", "adventure-key", "4.25.0"), + ("net.kyori", "adventure-text-serializer-commons", "4.25.0"), + ("net.kyori", "adventure-text-serializer-gson", "4.25.0"), + ("com.google.code.gson", "gson", "2.11.0"), + ("org.yaml", "snakeyaml", "2.2"), + ("org.joml", "joml", "1.10.8"), + ("it.unimi.dsi", "fastutil", "8.5.15"), + ("org.apache.logging.log4j", "log4j-api", "2.24.1"), + ( + "org.apache.maven.resolver", + "maven-resolver-connector-basic", + "1.9.18", + ), + ( + "org.apache.maven.resolver", + "maven-resolver-transport-http", + "1.9.18", + ), + ("org.apache.maven", "maven-resolver-provider", "3.9.6"), + ("org.apache.maven.resolver", "maven-resolver-impl", "1.9.18"), + ("org.slf4j", "jcl-over-slf4j", "1.7.36"), + ( + "org.apache.maven.resolver", + "maven-resolver-named-locks", + "1.9.18", + ), + ("org.slf4j", "slf4j-api", "2.0.16"), + ("com.mojang", "brigadier", "1.3.10"), + ("org.jspecify", "jspecify", "1.0.0"), + ("com.google.guava", "failureaccess", "1.0.2"), + ( + "com.google.guava", + "listenablefuture", + "9999.0-empty-to-avoid-conflict-with-guava", + ), + ("com.google.code.findbugs", "jsr305", "3.0.2"), + ("org.checkerframework", "checker-qual", "3.43.0"), + ("com.google.errorprone", "error_prone_annotations", "2.28.0"), + ("com.google.j2objc", "j2objc-annotations", "3.0.0"), + ("org.apache.maven", "maven-model-builder", "3.9.6"), + ("org.apache.maven", "maven-model", "3.9.6"), + ("org.apache.maven", "maven-repository-metadata", "3.9.6"), + ("org.apache.maven.resolver", "maven-resolver-spi", "1.9.18"), + ("org.apache.maven.resolver", "maven-resolver-util", "1.9.18"), + ("org.apache.maven.resolver", "maven-resolver-api", "1.9.18"), + ("org.apache.maven", "maven-artifact", "3.9.6"), + ("org.codehaus.plexus", "plexus-utils", "3.5.1"), + ("javax.inject", "javax.inject", "1"), + ("org.apache.httpcomponents", "httpclient", "4.5.14"), + ("org.apache.httpcomponents", "httpcore", "4.4.16"), + ("commons-codec", "commons-codec", "1.16.0"), + ("net.kyori", "examination-string", "1.3.0"), + ("net.kyori", "examination-api", "1.3.0"), + ("org.codehaus.plexus", "plexus-interpolation", "1.26"), + ("org.apache.maven", "maven-builder-support", "3.9.6"), + ("org.eclipse.sisu", "org.eclipse.sisu.inject", "0.9.0.M2"), + ("org.apache.commons", "commons-lang3", "3.12.0"), + ("net.kyori", "option", "1.1.0"), + // These are deps of patchbukkit itself + ("io.papermc.paper", "paper-api", "1.21.11-R0.1-SNAPSHOT"), + ("com.google.protobuf", "protobuf-java", "4.33.5"), +]; + +pub fn setup_j4rs(j4rs_folder: &Path) -> Result<()> { + sync_embedded_resources(j4rs_folder)?; + cleanup_stale_files(j4rs_folder); + resolve_maven_dependencies(j4rs_folder)?; + + Ok(()) +} + +fn resolve_maven_dependencies(j4rs_folder: &Path) -> Result<()> { + let jassets = j4rs_folder.join("jassets"); + + // Check if all expected jars already exist + let all_present = DEPENDENCIES + .iter() + .all(|&(_, artifact, version)| jassets.join(format!("{artifact}-{version}.jar")).exists()); + + if all_present { + log::debug!("All Maven dependencies already present, skipping JVM init"); + return Ok(()); + } + + log::info!("Some Maven dependencies missing, starting JVM to resolve..."); + + let jvm = JvmBuilder::new() + .with_maven_settings(MavenSettings::new(vec![MavenArtifactRepo::from( + "papermc::https://repo.papermc.io/repository/maven-public/", + )])) + .skip_setting_native_lib() + .with_base_path(j4rs_folder) + .build() + .map_err(|err| anyhow::anyhow!("JVM failed to init: {err:?}"))?; + + for &(group, artifact, version) in DEPENDENCIES { + let jar_path = jassets.join(format!("{artifact}-{version}.jar")); + if !jar_path.exists() { + log::info!("Downloading Maven dependency: {group}:{artifact}:{version}"); + jvm.deploy_artifact(&MavenArtifact::from(format!( + "{group}:{artifact}:{version}" + ))) + .map_err(|err| { + anyhow::anyhow!("Failed to deploy {group}:{artifact}:{version}: {err:?}") + })?; + } + } + + Ok(()) +} + +fn cleanup_stale_files(j4rs_folder: &Path) { + let embedded_paths: HashSet = Resources::iter() .map(|p| PathBuf::from(p.to_string())) .collect(); + let maven_jars: HashSet = DEPENDENCIES + .iter() + .map(|d| format!("{}-{}.jar", d.1, d.2)) + .collect(); + for entry in walkdir::WalkDir::new(j4rs_folder) .into_iter() - .filter_map(std::result::Result::ok) + .filter_map(|e| e.ok()) .filter(|e| e.file_type().is_file()) { let path = entry.path(); + if let Ok(rel_path) = path.strip_prefix(j4rs_folder) { + // Skip Maven-managed jars — handled by cleanup_stale_maven_jars + if let Some(file_name) = path.file_name().and_then(|f| f.to_str()) + && maven_jars.contains(file_name) + { + continue; + } - if let Ok(rel_path) = path.strip_prefix(j4rs_folder) - && !allowed.contains(rel_path) - { - log::warn!("Removing stale j4rs file: {}", rel_path.display()); - if let Err(e) = fs::remove_file(path) { - log::error!("Failed to remove stale file {}: {}", path.display(), e); + if !embedded_paths.contains(rel_path) { + log::warn!("Removing stale embedded file: {}", rel_path.display()); + let _ = fs::remove_file(path); } } } } -pub fn sync_embedded_resources(j4rs_folder: &Path) -> Result<(), String> { +pub fn sync_embedded_resources(j4rs_folder: &Path) -> Result<()> { for resource_path_str in Resources::iter() { let resource_path = j4rs_folder.join(resource_path_str.to_string()); let resource = Resources::get(&resource_path_str).unwrap(); @@ -49,25 +183,23 @@ pub fn sync_embedded_resources(j4rs_folder: &Path) -> Result<(), String> { Ok(()) } -fn write_resource(path: &Path, data: &[u8]) -> Result<(), String> { +fn write_resource(path: &Path, data: &[u8]) -> Result<()> { if let Some(parent) = path.parent() { - fs::create_dir_all(parent) - .map_err(|_| format!("Failed to create directory: {}", parent.display()))?; + fs::create_dir_all(parent)?; } - fs::write(path, data).map_err(|_| format!("Failed to write resource: {}", path.display()))?; + fs::write(path, data)?; Ok(()) } -fn update_resource_if_changed(path: &Path, new_data: &[u8]) -> Result<(), String> { +fn update_resource_if_changed(path: &Path, new_data: &[u8]) -> Result<()> { // Quick check: If file sizes differ, it's definitely changed, TODO: use Hash ? let metadata = fs::metadata(path).ok(); let size_matches = metadata.is_some_and(|m| m.len() == new_data.len() as u64); - if !size_matches || fs::read(path).map_err(|e| e.to_string())? != new_data { + if !size_matches || fs::read(path)? != new_data { log::debug!("Updating changed resource: {}", path.display()); - fs::write(path, new_data) - .map_err(|_| format!("Failed to update resource: {}", path.display()))?; + fs::write(path, new_data)?; } Ok(()) diff --git a/rust/src/lib.rs b/rust/src/lib.rs index 415f00c..24c5f11 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -13,18 +13,18 @@ pub mod java; pub mod proto; use directories::setup_directories; -use java::{ - jar::discover_jar_files, - resources::{cleanup_stale_files, sync_embedded_resources}, -}; +use java::jar::discover_jar_files; use tokio::sync::{ mpsc::{self, Receiver}, oneshot, }; -use crate::java::jvm::{ - commands::{JvmCommand, LoadPluginResult}, - worker::JvmWorker, +use crate::java::{ + jvm::{ + commands::{JvmCommand, LoadPluginResult}, + worker::JvmWorker, + }, + resources::setup_j4rs, }; async fn on_load_inner(plugin: &PatchBukkitPlugin, server: Arc) -> Result<(), String> { @@ -101,8 +101,7 @@ async fn on_load_inner(plugin: &PatchBukkitPlugin, server: Arc) -> Resu } // Manage embedded resources - cleanup_stale_files(&dirs.j4rs); - sync_embedded_resources(&dirs.j4rs)?; + setup_j4rs(&dirs.j4rs).map_err(|e| format!("Failed to setup J4RS: {e}"))?; { let (tx, rx) = oneshot::channel();