From 7f729bfd99cbfe5a3115f69832c91c9a982b4c23 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Fri, 9 May 2025 15:25:57 -0400 Subject: [PATCH] Update dependencies (binrw, physis, bitflags) This updates three major crates we use to the latest version with all of their API changes, and the others too. Notably, this removes the Syn v1 dependency thanks to binrw 0.15 switching to Syn v2. --- Cargo.lock | 270 +++++++++++---------------- Cargo.toml | 9 +- src/common/customize_data.rs | 4 +- src/common/gamedata.rs | 39 ++-- src/inventory/mod.rs | 8 +- src/ipc/lobby/service_login_reply.rs | 7 +- src/ipc/zone/common_spawn.rs | 7 +- src/world/database.rs | 3 +- src/world/zone.rs | 10 +- 9 files changed, 164 insertions(+), 193 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 78ed004..7fdfbc5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -40,9 +40,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de45108900e1f9b9242f7f2e254aa3e2c029c921c258fe9e6b4217eeebd54288" +checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" dependencies = [ "axum-core", "bytes", @@ -116,9 +116,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", "cfg-if", @@ -137,9 +137,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "binrw" -version = "0.14.1" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d4bca59c20d6f40c2cc0802afbe1e788b89096f61bdf7aeea6bf00f10c2909b" +checksum = "81419ff39e6ed10a92a7f125290859776ced35d9a08a665ae40b23e7ca702f30" dependencies = [ "array-init", "binrw_derive", @@ -148,22 +148,16 @@ dependencies = [ [[package]] name = "binrw_derive" -version = "0.14.1" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8ba42866ce5bced2645bfa15e97eef2c62d2bdb530510538de8dd3d04efff3c" +checksum = "376404e55ec40d0d6f8b4b7df3f87b87954bd987f0cf9a7207ea3b6ea5c9add4" dependencies = [ "either", "proc-macro2", "quote", - "syn 1.0.109", + "syn", ] -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - [[package]] name = "bitflags" version = "2.9.0" @@ -188,9 +182,9 @@ checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "bytemuck" -version = "1.22.0" +version = "1.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" +checksum = "9134a6ef01ce4b366b50689c94f82c14bc72bc5d0386829828a2e2752ef7958c" [[package]] name = "byteorder" @@ -225,9 +219,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.19" +version = "1.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e3a13707ac958681c13b39b458c073d0d9bc8a22cb1b2f4c8e55eb72c13f362" +checksum = "32db95edf998450acc7881c932f94cd9b05c87b4b2599e8bab064753da4acfd1" dependencies = [ "shlex", ] @@ -251,9 +245,9 @@ dependencies = [ [[package]] name = "crc" -version = "3.2.1" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" dependencies = [ "crc-catalog", ] @@ -302,7 +296,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn", ] [[package]] @@ -313,7 +307,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn", ] [[package]] @@ -470,9 +464,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" dependencies = [ "foldhash", ] @@ -580,21 +574,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", "litemap", @@ -603,31 +598,11 @@ dependencies = [ "zerovec", ] -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" - [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ "displaydoc", "icu_collections", @@ -635,67 +610,54 @@ dependencies = [ "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "2549ca8c7241c82f59c80ba2a6f415d931c5b58d24fb8412caa1a1f02c49139a" dependencies = [ "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "potential_utf", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" +checksum = "8197e866e47b68f8f7d95249e172903bec06004b18b2937f1095d40a0c57de04" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", + "icu_locale_core", "stable_deref_trait", "tinystr", "writeable", "yoke", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.100", -] - [[package]] name = "idna" version = "1.0.3" @@ -709,9 +671,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", @@ -756,7 +718,7 @@ dependencies = [ "axum", "axum-extra", "binrw", - "bitflags 1.3.2", + "bitflags", "fastrand", "md5", "minijinja", @@ -800,9 +762,9 @@ dependencies = [ [[package]] name = "libz-rs-sys" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "902bc563b5d65ad9bba616b490842ef0651066a1a1dc3ce1087113ffcb873c8d" +checksum = "6489ca9bd760fe9642d7644e827b0c9add07df89857b0416ee15c1cc1a3b8c5a" dependencies = [ "zlib-rs", ] @@ -815,9 +777,9 @@ checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "litemap" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "lock_api" @@ -829,12 +791,6 @@ dependencies = [ "scopeguard", ] -[[package]] -name = "lockfree-object-pool" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" - [[package]] name = "log" version = "0.4.27" @@ -912,9 +868,9 @@ dependencies = [ [[package]] name = "minijinja" -version = "2.9.0" +version = "2.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98642a6dfca91122779a307b77cd07a4aa951fbe32232aaf5bad9febc66be754" +checksum = "dd72e8b4e42274540edabec853f607c015c73436159b06c39c7af85a20433155" dependencies = [ "memo-map", "self_cell", @@ -1060,13 +1016,12 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "physis" version = "0.4.0" -source = "git+https://github.com/redstrate/physis#cdc39ad4b6fbd2cdc3f1e991a994ba011b64990d" +source = "git+https://github.com/redstrate/physis#e751ffa765ccd316112b3cb6ccdbb7a80fab8ccf" dependencies = [ "binrw", - "bitflags 1.3.2", + "bitflags", "half", "libz-rs-sys", - "tracing", ] [[package]] @@ -1087,6 +1042,15 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -1113,11 +1077,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.11" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3" +checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" dependencies = [ - "bitflags 2.9.0", + "bitflags", ] [[package]] @@ -1168,7 +1132,7 @@ version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a22715a5d6deef63c637207afbe68d0c72c3f8d0022d7cf9714c442d6157606b" dependencies = [ - "bitflags 2.9.0", + "bitflags", "fallible-iterator", "fallible-streaming-iterator", "hashlink", @@ -1190,11 +1154,11 @@ checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustix" -version = "1.0.5" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "bitflags 2.9.0", + "bitflags", "errno", "libc", "linux-raw-sys", @@ -1252,7 +1216,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn", ] [[package]] @@ -1362,20 +1326,9 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "syn" -version = "1.0.109" +version = "2.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" dependencies = [ "proc-macro2", "quote", @@ -1393,13 +1346,13 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn", ] [[package]] @@ -1445,9 +1398,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", "zerovec", @@ -1455,9 +1408,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.44.2" +version = "1.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" +checksum = "2513ca694ef9ede0fb23fe71a4ee4107cb102b9dc1930f6d0fd77aae068ae165" dependencies = [ "backtrace", "bytes", @@ -1477,7 +1430,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn", ] [[package]] @@ -1514,7 +1467,7 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ - "bitflags 2.9.0", + "bitflags", "bytes", "futures-util", "http", @@ -1616,12 +1569,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -1677,7 +1624,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.100", + "syn", "wasm-bindgen-shared", ] @@ -1712,7 +1659,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -1935,23 +1882,17 @@ version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - [[package]] name = "writeable" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "yoke" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ "serde", "stable_deref_trait", @@ -1961,13 +1902,13 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn", "synstructure", ] @@ -1988,15 +1929,26 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn", "synstructure", ] [[package]] -name = "zerovec" -version = "0.10.4" +name = "zerotrie" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" dependencies = [ "yoke", "zerofrom", @@ -2005,13 +1957,13 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn", ] [[package]] @@ -2033,20 +1985,18 @@ dependencies = [ [[package]] name = "zlib-rs" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b20717f0917c908dc63de2e44e97f1e6b126ca58d0e391cee86d504eb8fbd05" +checksum = "868b928d7949e09af2f6086dfc1e01936064cc7a819253bce650d4e2a2d63ba8" [[package]] name = "zopfli" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946" +checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" dependencies = [ "bumpalo", "crc32fast", - "lockfree-object-pool", "log", - "once_cell", "simd-adler32", ] diff --git a/Cargo.toml b/Cargo.toml index 189b6dd..f79530f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -61,7 +61,7 @@ serde_json = { version = "1.0", default-features = false } serde_yaml_ng = { version = "0.10", default-features = false } # Async runtime -tokio = { version = "1.44", features = ["macros", "rt", "rt-multi-thread", "io-util"], default-features = false } +tokio = { version = "1.45", features = ["macros", "rt", "rt-multi-thread", "io-util"], default-features = false } # Logging tracing = { version = "0.1", default-features = false } @@ -71,10 +71,10 @@ tracing-subscriber = { version = "0.3", features = ["fmt"], default-features = f fastrand = { version = "2.3", features = ["std"], default-features = false } # HTML templates used in the web servers -minijinja = { version = "2.9", features = ["serde", "loader", "multi_template"], default-features = false } +minijinja = { version = "2.10", features = ["serde", "loader", "multi_template"], default-features = false } # Serialization of packets -binrw = { version = "0.14", features = ["std"], default-features = false } +binrw = { version = "0.15", features = ["std"], default-features = false } # Used in encryption of packets md5 = { version = "0.7", default-features = false } @@ -86,8 +86,7 @@ physis = { git = "https://github.com/redstrate/physis", default-features = false rusqlite = { version = "0.35", features = ["bundled"], default-features = false } # needed for c-style bitflags -# cannot upgrade to 2.0.0, breaking changes that aren't recoverable: https://github.com/bitflags/bitflags/issues/314 -bitflags = { version = "1.3", default-features = false } +bitflags = { version = "2.9", default-features = false } # For server-side scripting mlua = { version = "0.10", features = ["lua51", "vendored", "send", "async", "serialize"], default-features = false } diff --git a/src/common/customize_data.rs b/src/common/customize_data.rs index 080ae69..53b1471 100644 --- a/src/common/customize_data.rs +++ b/src/common/customize_data.rs @@ -32,8 +32,8 @@ pub struct CustomizeData { pub face_paint_color: u8, } -impl From for CustomizeData { - fn from(value: physis::chardat::CustomizeData) -> Self { +impl From for CustomizeData { + fn from(value: physis::savedata::chardat::CustomizeData) -> Self { Self { race: value.race as u8, gender: value.gender as u8, diff --git a/src/common/gamedata.rs b/src/common/gamedata.rs index 9fc131e..f21e9e9 100644 --- a/src/common/gamedata.rs +++ b/src/common/gamedata.rs @@ -1,5 +1,5 @@ use physis::common::{Language, Platform}; -use physis::exd::EXD; +use physis::exd::{EXD, ExcelRowKind}; use physis::exh::EXH; use crate::{common::Attributes, config::get_config}; @@ -22,8 +22,7 @@ impl GameData { let config = get_config(); let mut game_data = - physis::gamedata::GameData::from_existing(Platform::Win32, &config.game_location) - .unwrap(); + physis::gamedata::GameData::from_existing(Platform::Win32, &config.game_location); let mut item_pages = Vec::new(); @@ -51,9 +50,11 @@ impl GameData { .read_excel_sheet("World", &exh, Language::None, 0) .unwrap(); - let world_row = &exd.read_row(&exh, world_id as u32).unwrap()[0]; + let ExcelRowKind::SingleRow(world_row) = &exd.get_row(world_id as u32).unwrap() else { + panic!("Expected a single row!") + }; - let physis::exd::ColumnData::String(name) = &world_row.data[1] else { + let physis::exd::ColumnData::String(name) = &world_row.columns[1] else { panic!("Unexpected type!"); }; @@ -68,9 +69,11 @@ impl GameData { .read_excel_sheet("ClassJob", &exh, Language::English, 0) .unwrap(); - let world_row = &exd.read_row(&exh, classjob_id as u32).unwrap()[0]; + let ExcelRowKind::SingleRow(world_row) = &exd.get_row(classjob_id as u32).unwrap() else { + panic!("Expected a single row!") + }; - let physis::exd::ColumnData::UInt8(town_id) = &world_row.data[33] else { + let physis::exd::ColumnData::UInt8(town_id) = &world_row.columns[33] else { panic!("Unexpected type!"); }; @@ -87,10 +90,12 @@ impl GameData { .read_excel_sheet("Tribe", &exh, Language::English, 0) .unwrap(); - let tribe_row = &exd.read_row(&exh, tribe_id as u32).unwrap()[0]; + let ExcelRowKind::SingleRow(tribe_row) = &exd.get_row(tribe_id as u32).unwrap() else { + panic!("Expected a single row!") + }; let get_column = |column_index: usize| { - let physis::exd::ColumnData::Int8(delta) = &tribe_row.data[column_index] else { + let physis::exd::ColumnData::Int8(delta) = &tribe_row.columns[column_index] else { panic!("Unexpected type!"); }; @@ -109,10 +114,12 @@ impl GameData { /// Gets the primary model ID for a given item ID pub fn get_primary_model_id(&mut self, item_id: u32) -> Option { for page in &self.item_pages { - if let Some(row) = page.read_row(&self.item_exh, item_id) { - let item_row = &row[0]; + if let Some(row) = page.get_row(item_id) { + let ExcelRowKind::SingleRow(item_row) = row else { + panic!("Expected a single row!") + }; - let physis::exd::ColumnData::UInt64(id) = &item_row.data[47] else { + let physis::exd::ColumnData::UInt64(id) = &item_row.columns[47] else { panic!("Unexpected type!"); }; @@ -131,13 +138,15 @@ impl GameData { .read_excel_sheet("Warp", &exh, Language::English, 0) .unwrap(); - let row = &exd.read_row(&exh, warp_id).unwrap()[0]; + let ExcelRowKind::SingleRow(row) = &exd.get_row(warp_id).unwrap() else { + panic!("Expected a single row!") + }; - let physis::exd::ColumnData::UInt32(pop_range_id) = &row.data[0] else { + let physis::exd::ColumnData::UInt32(pop_range_id) = &row.columns[0] else { panic!("Unexpected type!"); }; - let physis::exd::ColumnData::UInt16(zone_id) = &row.data[1] else { + let physis::exd::ColumnData::UInt16(zone_id) = &row.columns[1] else { panic!("Unexpected type!"); }; diff --git a/src/inventory/mod.rs b/src/inventory/mod.rs index bf4e94d..acf3bfe 100644 --- a/src/inventory/mod.rs +++ b/src/inventory/mod.rs @@ -1,4 +1,4 @@ -use physis::common::Language; +use physis::{common::Language, exd::ExcelRowKind}; use serde::{Deserialize, Serialize}; use crate::common::GameData; @@ -128,10 +128,12 @@ impl Inventory { .read_excel_sheet("Race", &exh, Language::English, 0) .unwrap(); - let world_row = &exd.read_row(&exh, race_id as u32).unwrap()[0]; + let ExcelRowKind::SingleRow(world_row) = &exd.get_row(race_id as u32).unwrap() else { + panic!("Expected a single row!") + }; let get_column = |column_index: usize| { - let physis::exd::ColumnData::Int32(item_id) = &world_row.data[column_index] else { + let physis::exd::ColumnData::Int32(item_id) = &world_row.columns[column_index] else { panic!("Unexpected type!"); }; diff --git a/src/ipc/lobby/service_login_reply.rs b/src/ipc/lobby/service_login_reply.rs index 2a5f529..6fc7a94 100644 --- a/src/ipc/lobby/service_login_reply.rs +++ b/src/ipc/lobby/service_login_reply.rs @@ -5,9 +5,12 @@ use crate::common::CHAR_NAME_MAX_LENGTH; use super::{read_string, write_string}; +#[binrw] +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct CharacterFlag(u8); + bitflags! { - #[binrw] - pub struct CharacterFlag : u8 { + impl CharacterFlag : u8 { const NONE = 0; /// "You cannot select this character with your current account." const LOCKED = 1; diff --git a/src/ipc/zone/common_spawn.rs b/src/ipc/zone/common_spawn.rs index 34d6ed9..28b65be 100644 --- a/src/ipc/zone/common_spawn.rs +++ b/src/ipc/zone/common_spawn.rs @@ -116,9 +116,12 @@ pub enum GameMasterRank { Debug = 90, } +#[binrw] +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct DisplayFlag(u32); + bitflags! { - #[binrw] - pub struct DisplayFlag : u32 { + impl DisplayFlag : u32 { const NONE = 0x0; // Can be made visible with ActorControl I think const INVISIBLE = 0x20; diff --git a/src/world/database.rs b/src/world/database.rs index 3700883..09832c0 100644 --- a/src/world/database.rs +++ b/src/world/database.rs @@ -100,7 +100,8 @@ impl WorldDatabase { let charsave_file = archive.by_name("FFXIV_CHARA_01.dat").unwrap(); let charsave_bytes: Vec = charsave_file.bytes().map(|x| x.unwrap()).collect(); - let charsave = physis::chardat::CharacterData::from_existing(&charsave_bytes).unwrap(); + let charsave = + physis::savedata::chardat::CharacterData::from_existing(&charsave_bytes).unwrap(); let customize = CustomizeData::from(charsave.customize); diff --git a/src/world/zone.rs b/src/world/zone.rs index e02231a..1988272 100644 --- a/src/world/zone.rs +++ b/src/world/zone.rs @@ -1,5 +1,6 @@ use physis::{ common::Language, + exd::ExcelRowKind, gamedata::GameData, layer::{ ExitRangeInstanceObject, InstanceObject, LayerEntryData, LayerGroup, PopRangeInstanceObject, @@ -33,13 +34,16 @@ impl Zone { return zone; }; - let Some(territory_type_row) = &exd.read_row(&exh, id as u32) else { + let Some(territory_type_row) = &exd.get_row(id as u32) else { return zone; }; - let territory_type_row = &territory_type_row[0]; + + let ExcelRowKind::SingleRow(territory_type_row) = territory_type_row else { + panic!("Expected a single row!") + }; // e.g. ffxiv/fst_f1/fld/f1f3/level/f1f3 - let physis::exd::ColumnData::String(bg_path) = &territory_type_row.data[1] else { + let physis::exd::ColumnData::String(bg_path) = &territory_type_row.columns[1] else { panic!("Unexpected type!"); };