mirror of
https://github.com/Pumpkin-MC/Pumpkin.git
synced 2026-08-30 20:14:23 +00:00
chore: add pumpkin_macros::translate_cross! macro
validates translations at compile time, also update bedrock translations to latest 26.40.5
This commit is contained in:
359
Cargo.lock
generated
359
Cargo.lock
generated
@@ -40,9 +40,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aes"
|
name = "aes"
|
||||||
version = "0.9.1"
|
version = "0.9.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f1fc76eaeac4c9164506c466d4ffdd8ec9d0c5bf57ee97177c4d8eceb3a0e138"
|
checksum = "f8eb277bec05f56a0e0591f155a484cbd0f4f07ff2905051a48c72f004f7ed58"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cipher 0.5.2",
|
"cipher 0.5.2",
|
||||||
"cpubits",
|
"cpubits",
|
||||||
@@ -65,9 +65,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aho-corasick"
|
name = "aho-corasick"
|
||||||
version = "1.1.4"
|
version = "1.1.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
|
checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"memchr",
|
"memchr",
|
||||||
]
|
]
|
||||||
@@ -179,9 +179,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "async-trait"
|
name = "async-trait"
|
||||||
version = "0.1.91"
|
version = "0.1.92"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ae36dc4177970ef04fde5178d3e2429882def40e57a451f919c098f72baa6cec"
|
checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -439,9 +439,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cc"
|
name = "cc"
|
||||||
version = "1.3.0"
|
version = "1.4.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c89588d05638b5b4594a3348a2d6c20277e43a7f5c5202b05cc56888475a47b8"
|
checksum = "5d262e149917187838d5b42777c8253bcb64500067342904e7d429499a6f277e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"find-msvc-tools",
|
"find-msvc-tools",
|
||||||
"jobserver",
|
"jobserver",
|
||||||
@@ -573,18 +573,18 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap"
|
name = "clap"
|
||||||
version = "4.6.4"
|
version = "4.6.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d91e0c145792ef73a6ad36d27c75ac09f1832222a3c209689d90f534685ee5b7"
|
checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap_builder",
|
"clap_builder",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap_builder"
|
name = "clap_builder"
|
||||||
version = "4.6.2"
|
version = "4.6.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f09628afdcc538b57f3c6341e9c8e9970f18e4a481690a64974d7023bd33548b"
|
checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anstyle",
|
"anstyle",
|
||||||
"clap_lex",
|
"clap_lex",
|
||||||
@@ -617,7 +617,7 @@ version = "0.3.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1"
|
checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"thiserror 2.0.19",
|
"thiserror 2.0.20",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -699,9 +699,9 @@ checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cookie"
|
name = "cookie"
|
||||||
version = "0.18.1"
|
version = "0.18.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747"
|
checksum = "1a373e3602691c3cdea496d2f0ee5935151e6168fe87739483c463db1b2f2f87"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
"time",
|
"time",
|
||||||
@@ -761,27 +761,27 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-assembler-x64"
|
name = "cranelift-assembler-x64"
|
||||||
version = "0.134.2"
|
version = "0.134.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8f0435c6939d6ef218bf0a3063094f2cc5c46f7a44a88f81cf932da8d3922ff8"
|
checksum = "d552bd33b7a56dc70aeb1e1c960e51a218fa0db50f23873b500a310379450b2d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-assembler-x64-meta",
|
"cranelift-assembler-x64-meta",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-assembler-x64-meta"
|
name = "cranelift-assembler-x64-meta"
|
||||||
version = "0.134.2"
|
version = "0.134.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "aca52511cc21a2c9c927aef493d11c8087bdc5483249a3d93aee41e81b8bd4d1"
|
checksum = "078e80e4c222279e3330f6aa1a256ca77ddf156d4453166a9f09defedc4594dd"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-srcgen",
|
"cranelift-srcgen",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-bforest"
|
name = "cranelift-bforest"
|
||||||
version = "0.134.2"
|
version = "0.134.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6867e99f068454b0c81c50b807af88aa80aaf383105e2be26675d81fc4278466"
|
checksum = "820ce15d4ad3562d613c31a67b6d0434d403e7091a68d1349903842f7d31737e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-entity",
|
"cranelift-entity",
|
||||||
"wasmtime-internal-core",
|
"wasmtime-internal-core",
|
||||||
@@ -789,9 +789,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-bitset"
|
name = "cranelift-bitset"
|
||||||
version = "0.134.2"
|
version = "0.134.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3cf66017aed971344230199ad35ca01c955cf824a0e65fed5240452d2a302445"
|
checksum = "61bca563d4b86d285928d9e27f97f27039bb33a0fc524fa130d7d0c106bf8ab3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
"serde_derive",
|
"serde_derive",
|
||||||
@@ -800,9 +800,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-codegen"
|
name = "cranelift-codegen"
|
||||||
version = "0.134.2"
|
version = "0.134.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "933b2e5237665bf9367a34ad2100eed70c94b2796586cb09d9ba11693e061667"
|
checksum = "709f4b7c0fb57d952658d5b5c07fbdc4149acd7b7f0de9678ae754b9c981949a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bumpalo",
|
"bumpalo",
|
||||||
"cranelift-assembler-x64",
|
"cranelift-assembler-x64",
|
||||||
@@ -831,9 +831,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-codegen-meta"
|
name = "cranelift-codegen-meta"
|
||||||
version = "0.134.2"
|
version = "0.134.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "322e3ca0603683cc17f0c808559c0fb85ad52b0f20ace0478bdd4ba2fa1e9678"
|
checksum = "903dc8915af62aad1d9d0f39a5968d33fa80b9aa899ed6f56e47f40ca4512e1e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-assembler-x64-meta",
|
"cranelift-assembler-x64-meta",
|
||||||
"cranelift-codegen-shared",
|
"cranelift-codegen-shared",
|
||||||
@@ -844,24 +844,24 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-codegen-shared"
|
name = "cranelift-codegen-shared"
|
||||||
version = "0.134.2"
|
version = "0.134.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "287ab88211d049178dc8dda243e2db176919d8b29db605c0efc7c6d76ebea0f7"
|
checksum = "0522d74c227e49f3fd49ab055311486ae4f09083262b66705bed676952491469"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-control"
|
name = "cranelift-control"
|
||||||
version = "0.134.2"
|
version = "0.134.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c11438f9becf9a1e1e061bf76a33241b941a07ed01a489e9dad5fa79dc3624e9"
|
checksum = "66560ea1c5cef72e170b18e46d263dba2d3169c9d39e8cafdab2173c6362cc1a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arbitrary",
|
"arbitrary",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-entity"
|
name = "cranelift-entity"
|
||||||
version = "0.134.2"
|
version = "0.134.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "584ecabe1462593a9cba9efbf9022e0987421ddb548989b455ab8bdd444b743c"
|
checksum = "b62ef5b17cc814d27e96b66a5b46da0e4ce2b8ac55a6d478048bb99d04b05526"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-bitset",
|
"cranelift-bitset",
|
||||||
"serde",
|
"serde",
|
||||||
@@ -871,9 +871,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-frontend"
|
name = "cranelift-frontend"
|
||||||
version = "0.134.2"
|
version = "0.134.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "34249873145213a12106d5fd8a98a9dc9e90e16525e2337b2907874d1e7e9ee7"
|
checksum = "a87e0aaa39dbf70693b348a221e45904111704ee8f9fef140498471005f9842d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-codegen",
|
"cranelift-codegen",
|
||||||
"hashbrown 0.17.1",
|
"hashbrown 0.17.1",
|
||||||
@@ -884,15 +884,15 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-isle"
|
name = "cranelift-isle"
|
||||||
version = "0.134.2"
|
version = "0.134.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b6f1c1dc4d6b4bc4f0be12b08cee0e59f7610287827aa62590f8e9ec6f45dff4"
|
checksum = "cf79003ebfa1eed5e87f3b84446ad5236f540268289960e14f387dc9b28e40b7"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-native"
|
name = "cranelift-native"
|
||||||
version = "0.134.2"
|
version = "0.134.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "31d9e4f6d9a3777b1ffa818000b4a6d7afd1b8787af71a9c58d94baef9076ced"
|
checksum = "05bf4f235743c81e67ee4db617c5a4a0b65d58d3f0cfc575ee0f1a4e0cd58273"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-codegen",
|
"cranelift-codegen",
|
||||||
"libc",
|
"libc",
|
||||||
@@ -901,9 +901,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-srcgen"
|
name = "cranelift-srcgen"
|
||||||
version = "0.134.2"
|
version = "0.134.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4155f8a1afdef96a0272c67804926eee4ef35f9708ab22ad6878d4c9543df596"
|
checksum = "f6977c2a71ab1e0d1e62f966b411a498aa04c4dce47d93d52f8a360a06058922"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "crc"
|
name = "crc"
|
||||||
@@ -1237,6 +1237,12 @@ version = "0.5.8"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
|
checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "diff"
|
||||||
|
version = "0.1.13"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "digest"
|
name = "digest"
|
||||||
version = "0.10.7"
|
version = "0.10.7"
|
||||||
@@ -1284,13 +1290,13 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "displaydoc"
|
name = "displaydoc"
|
||||||
version = "0.2.6"
|
version = "0.2.7"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f"
|
checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.119",
|
"syn 3.0.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -1390,9 +1396,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "either"
|
name = "either"
|
||||||
version = "1.16.0"
|
version = "1.17.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
|
checksum = "9e5e8f6c15a24b9a3ee5efec809ccd006d3b30e8b3bb63c39af737c7f87daa1d"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "elliptic-curve"
|
name = "elliptic-curve"
|
||||||
@@ -1527,9 +1533,9 @@ checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "find-msvc-tools"
|
name = "find-msvc-tools"
|
||||||
version = "0.1.9"
|
version = "0.1.10"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
|
checksum = "26b73573e6edcd2af0cdf47bd6cb58f0b3839491263c314eaad1ccf24430e1de"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "flate2"
|
name = "flate2"
|
||||||
@@ -1890,9 +1896,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "http"
|
name = "http"
|
||||||
version = "1.4.2"
|
version = "1.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425"
|
checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytes",
|
"bytes",
|
||||||
"itoa",
|
"itoa",
|
||||||
@@ -1941,9 +1947,9 @@ checksum = "15cdd26707701c53297e2fa6afb323d55fbc1d0810c3aec078ae3ef0424c3c15"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hybrid-array"
|
name = "hybrid-array"
|
||||||
version = "0.4.13"
|
version = "0.4.14"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c"
|
checksum = "707114b52a152fa7bdb290cd7cd5912d9467273b6d74e21b8d81aca1f8533f6b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"subtle",
|
"subtle",
|
||||||
"typenum",
|
"typenum",
|
||||||
@@ -2223,9 +2229,9 @@ checksum = "2f0fb0570afe1fed943c5c3d4102d5358592d8625fda6a0007fdbe65a92fba96"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ipnet"
|
name = "ipnet"
|
||||||
version = "2.12.0"
|
version = "2.12.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2"
|
checksum = "6a756c3fac73139e83f14c2d742155dd2b78d3ee56597b419a0579b7bdd6dd78"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itertools"
|
name = "itertools"
|
||||||
@@ -2272,9 +2278,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "js-sys"
|
name = "js-sys"
|
||||||
version = "0.3.103"
|
version = "0.3.104"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102"
|
checksum = "0e0c1080212aad755ea003d18543e8768dd432c48819efd73a7bf1e39b7a5a3a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
@@ -2283,9 +2289,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kqueue"
|
name = "kqueue"
|
||||||
version = "1.2.0"
|
version = "1.2.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "273c0752728918e0ac4976f2b275b6fefb9ecd400585dec929419f3844cd87b5"
|
checksum = "8d763e5b24120b4ddf50de6c92308156765aabfbbccebf401da7cff2d70a41ea"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"kqueue-sys",
|
"kqueue-sys",
|
||||||
"libc",
|
"libc",
|
||||||
@@ -2337,9 +2343,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libredox"
|
name = "libredox"
|
||||||
version = "0.1.18"
|
version = "0.1.19"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652"
|
checksum = "2026a5056764a10b2bf5d56488cba40da507f5493a6a429340e2004d9ed085fa"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
@@ -3046,9 +3052,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "portable-atomic"
|
name = "portable-atomic"
|
||||||
version = "1.14.0"
|
version = "1.15.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3d20d5497ef88037a52ff98267d066e7f11fcc5e99bbfbd58a42336193aacec3"
|
checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "postcard"
|
name = "postcard"
|
||||||
@@ -3086,6 +3092,16 @@ dependencies = [
|
|||||||
"zerocopy",
|
"zerocopy",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pretty_assertions"
|
||||||
|
version = "1.4.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d"
|
||||||
|
dependencies = [
|
||||||
|
"diff",
|
||||||
|
"yansi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "prettyplease"
|
name = "prettyplease"
|
||||||
version = "0.2.37"
|
version = "0.2.37"
|
||||||
@@ -3216,9 +3232,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pulley-interpreter"
|
name = "pulley-interpreter"
|
||||||
version = "47.0.2"
|
version = "47.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f6064e52588328c1275d690baad99f8d4b3fdd870736966f1a63cfcbb20560b6"
|
checksum = "bc5c8c21ea032e4efbdf2d067dc45171779dbe0c8ecf20ef4a57efa7474f2b0a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-bitset",
|
"cranelift-bitset",
|
||||||
"log",
|
"log",
|
||||||
@@ -3228,9 +3244,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pulley-macros"
|
name = "pulley-macros"
|
||||||
version = "47.0.2"
|
version = "47.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7e832980317bfc7f8c8538ffc9c69b82912f3e33ec70f7c855d521654c70fa62"
|
checksum = "9f10925455d5dde962e3604eade797ba5488644c8ee14a44191e2f2b58980574"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -3285,7 +3301,7 @@ dependencies = [
|
|||||||
"sha2 0.11.0",
|
"sha2 0.11.0",
|
||||||
"sysinfo",
|
"sysinfo",
|
||||||
"tempfile",
|
"tempfile",
|
||||||
"thiserror 2.0.19",
|
"thiserror 2.0.20",
|
||||||
"time",
|
"time",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-util",
|
"tokio-util",
|
||||||
@@ -3320,13 +3336,34 @@ dependencies = [
|
|||||||
"tracing",
|
"tracing",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pumpkin-codegen"
|
||||||
|
version = "0.1.0-dev+26.1"
|
||||||
|
dependencies = [
|
||||||
|
"heck",
|
||||||
|
"indexmap",
|
||||||
|
"md5",
|
||||||
|
"proc-macro2",
|
||||||
|
"pumpkin-nbt",
|
||||||
|
"pumpkin-util",
|
||||||
|
"quote",
|
||||||
|
"rayon",
|
||||||
|
"semver",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
|
"serde_json5",
|
||||||
|
"serde_repr",
|
||||||
|
"syn 3.0.3",
|
||||||
|
"wit-encoder",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pumpkin-config"
|
name = "pumpkin-config"
|
||||||
version = "0.1.0-dev+26.2-26.40"
|
version = "0.1.0-dev+26.2-26.40"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"pumpkin-util",
|
"pumpkin-util",
|
||||||
"serde",
|
"serde",
|
||||||
"toml 1.1.3+spec-1.1.0",
|
"toml 1.1.4+spec-1.1.0",
|
||||||
"tracing",
|
"tracing",
|
||||||
"uuid",
|
"uuid",
|
||||||
]
|
]
|
||||||
@@ -3353,7 +3390,7 @@ dependencies = [
|
|||||||
"pumpkin-util",
|
"pumpkin-util",
|
||||||
"pumpkin-world",
|
"pumpkin-world",
|
||||||
"rand 0.10.2",
|
"rand 0.10.2",
|
||||||
"thiserror 2.0.19",
|
"thiserror 2.0.20",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tracing",
|
"tracing",
|
||||||
]
|
]
|
||||||
@@ -3364,6 +3401,7 @@ version = "0.1.0-dev+26.2-26.40"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"heck",
|
"heck",
|
||||||
"proc-macro-error2",
|
"proc-macro-error2",
|
||||||
|
"proc-macro2",
|
||||||
"pumpkin-data",
|
"pumpkin-data",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 3.0.3",
|
"syn 3.0.3",
|
||||||
@@ -3379,7 +3417,7 @@ dependencies = [
|
|||||||
"flate2",
|
"flate2",
|
||||||
"pumpkin-codecs",
|
"pumpkin-codecs",
|
||||||
"tempfile",
|
"tempfile",
|
||||||
"thiserror 2.0.19",
|
"thiserror 2.0.20",
|
||||||
"tracing",
|
"tracing",
|
||||||
"uuid",
|
"uuid",
|
||||||
]
|
]
|
||||||
@@ -3399,7 +3437,7 @@ dependencies = [
|
|||||||
name = "pumpkin-protocol"
|
name = "pumpkin-protocol"
|
||||||
version = "0.1.0-dev+26.2-26.40"
|
version = "0.1.0-dev+26.2-26.40"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes 0.9.1",
|
"aes 0.9.2",
|
||||||
"async-compression",
|
"async-compression",
|
||||||
"bitflags 2.13.1",
|
"bitflags 2.13.1",
|
||||||
"bytes",
|
"bytes",
|
||||||
@@ -3412,7 +3450,7 @@ dependencies = [
|
|||||||
"pumpkin-util",
|
"pumpkin-util",
|
||||||
"pumpkin-world",
|
"pumpkin-world",
|
||||||
"serde",
|
"serde",
|
||||||
"thiserror 2.0.19",
|
"thiserror 2.0.20",
|
||||||
"tokio",
|
"tokio",
|
||||||
"uuid",
|
"uuid",
|
||||||
]
|
]
|
||||||
@@ -3440,7 +3478,7 @@ dependencies = [
|
|||||||
"serde_json",
|
"serde_json",
|
||||||
"sha2 0.11.0",
|
"sha2 0.11.0",
|
||||||
"syn 3.0.3",
|
"syn 3.0.3",
|
||||||
"thiserror 2.0.19",
|
"thiserror 2.0.20",
|
||||||
"tokio",
|
"tokio",
|
||||||
"ureq",
|
"ureq",
|
||||||
"uuid",
|
"uuid",
|
||||||
@@ -3475,7 +3513,7 @@ dependencies = [
|
|||||||
"sha2 0.11.0",
|
"sha2 0.11.0",
|
||||||
"slotmap",
|
"slotmap",
|
||||||
"tempfile",
|
"tempfile",
|
||||||
"thiserror 2.0.19",
|
"thiserror 2.0.20",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-util",
|
"tokio-util",
|
||||||
"tracing",
|
"tracing",
|
||||||
@@ -3657,9 +3695,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "regex-automata"
|
name = "regex-automata"
|
||||||
version = "0.4.16"
|
version = "0.4.18"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8fcfdb36bda0c880c5931cdc7a2bcdc8ba4556847b9d912bca70bc94708711ad"
|
checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aho-corasick",
|
"aho-corasick",
|
||||||
"memchr",
|
"memchr",
|
||||||
@@ -3854,9 +3892,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustls"
|
name = "rustls"
|
||||||
version = "0.23.42"
|
version = "0.23.43"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3c54fcab019b409d04215d3a17cb438fd7fbf192ee61461f20f4fe18704bc138"
|
checksum = "0283386ce02abc0151e1761d08802dfe86c173b0b494af5cbc086574e453da06"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
@@ -4019,6 +4057,7 @@ version = "1.0.151"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
|
checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"indexmap",
|
||||||
"itoa",
|
"itoa",
|
||||||
"memchr",
|
"memchr",
|
||||||
"serde",
|
"serde",
|
||||||
@@ -4399,11 +4438,11 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "thiserror"
|
name = "thiserror"
|
||||||
version = "2.0.19"
|
version = "2.0.20"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9"
|
checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"thiserror-impl 2.0.19",
|
"thiserror-impl 2.0.20",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -4419,9 +4458,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "thiserror-impl"
|
name = "thiserror-impl"
|
||||||
version = "2.0.19"
|
version = "2.0.20"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd"
|
checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -4439,9 +4478,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "time"
|
name = "time"
|
||||||
version = "0.3.54"
|
version = "0.3.55"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3e1d5e639ff6bab73cb6885cc7e7b1de96c3f32c68ec55f3952614bec1092244"
|
checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"deranged",
|
"deranged",
|
||||||
"libc",
|
"libc",
|
||||||
@@ -4586,9 +4625,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "toml"
|
name = "toml"
|
||||||
version = "1.1.3+spec-1.1.0"
|
version = "1.1.4+spec-1.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "53c96ecdfa941c8fc4fcaed14f99ada8ebed502eef533015095a07e3301d4c3c"
|
checksum = "3aace63f4bbcdfc2c965b059de67119c89c4017a70d633be6c104910f67056f5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde_core",
|
"serde_core",
|
||||||
"serde_spanned",
|
"serde_spanned",
|
||||||
@@ -4618,9 +4657,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "toml_parser"
|
name = "toml_parser"
|
||||||
version = "1.1.2+spec-1.1.0"
|
version = "1.1.3+spec-1.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526"
|
checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"winnow 1.0.4",
|
"winnow 1.0.4",
|
||||||
]
|
]
|
||||||
@@ -4854,11 +4893,11 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ureq"
|
name = "ureq"
|
||||||
version = "3.3.0"
|
version = "3.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "dea7109cdcd5864d4eeb1b58a1648dc9bf520360d7af16ec26d0a9354bafcfc0"
|
checksum = "972d7902c8735f2695410b8aed7df6ed12a47394aa1c8d7af49f0497b731a94d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64 0.22.1",
|
"base64 0.23.1",
|
||||||
"cookie_store",
|
"cookie_store",
|
||||||
"log",
|
"log",
|
||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
@@ -4873,11 +4912,11 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ureq-proto"
|
name = "ureq-proto"
|
||||||
version = "0.6.0"
|
version = "0.6.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e994ba84b0bd1b1b0cf92878b7ef898a5c1760108fe7b6010327e274917a808c"
|
checksum = "da5f78b09e6941e1a0f2e30e695e4b120377b54d5e0aec11b594bb57b3971613"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64 0.22.1",
|
"base64 0.23.1",
|
||||||
"http",
|
"http",
|
||||||
"httparse",
|
"httparse",
|
||||||
"log",
|
"log",
|
||||||
@@ -4983,9 +5022,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasm-bindgen"
|
name = "wasm-bindgen"
|
||||||
version = "0.2.126"
|
version = "0.2.127"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4"
|
checksum = "1b70935747edd64d89de3efa29d73789b806c15798f8e7dca4d8ac356b50ce70"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
@@ -4996,9 +5035,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasm-bindgen-macro"
|
name = "wasm-bindgen-macro"
|
||||||
version = "0.2.126"
|
version = "0.2.127"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1"
|
checksum = "77775f8f3f7217702089053b94958f8f54061a3f663417df76e19cbdcca29bc1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"quote",
|
"quote",
|
||||||
"wasm-bindgen-macro-support",
|
"wasm-bindgen-macro-support",
|
||||||
@@ -5006,9 +5045,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasm-bindgen-macro-support"
|
name = "wasm-bindgen-macro-support"
|
||||||
version = "0.2.126"
|
version = "0.2.127"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e"
|
checksum = "e11d33f857dc2fb11b8bc75aee111aa9cbeb12cd9f25efd3d4c2a3dd4e235284"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bumpalo",
|
"bumpalo",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
@@ -5019,9 +5058,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasm-bindgen-shared"
|
name = "wasm-bindgen-shared"
|
||||||
version = "0.2.126"
|
version = "0.2.127"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24"
|
checksum = "7ef64dbcc55df09c7e5a46182d181c2cfa3e925f3da937ea764728b4bbb9dcbf"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
@@ -5119,9 +5158,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmtime"
|
name = "wasmtime"
|
||||||
version = "47.0.2"
|
version = "47.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "06d9f263ccb212017dae1d109b9997f218a7675db1e9a7bedf07ae1643322bf3"
|
checksum = "c80ca6098e0d4d06886d91d7f2cc3cb6623eb583c4c0ab3c89cbfb6098c8586c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"addr2line",
|
"addr2line",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
@@ -5162,9 +5201,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmtime-environ"
|
name = "wasmtime-environ"
|
||||||
version = "47.0.2"
|
version = "47.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9915e3d90c36a16e0fec8be746ee87e21cf0d4a017ecf09c49b7d1cc6f31b2b6"
|
checksum = "134f9d136d29c76f6c1b4c9b468e97a2efc38c7d49fd188e39b64870b2fea701"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"cpp_demangle",
|
"cpp_demangle",
|
||||||
@@ -5193,9 +5232,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmtime-internal-cache"
|
name = "wasmtime-internal-cache"
|
||||||
version = "47.0.2"
|
version = "47.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6b7c25436e1602aad2de80bfb3f586dcdfb6fe426d5b17cba37fabf9a1714d32"
|
checksum = "65db2eb1bfc5371a3b4107dbf539d0b93d05016fc29625b1648146b47db02071"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64 0.22.1",
|
"base64 0.22.1",
|
||||||
"directories-next",
|
"directories-next",
|
||||||
@@ -5213,9 +5252,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmtime-internal-component-macro"
|
name = "wasmtime-internal-component-macro"
|
||||||
version = "47.0.2"
|
version = "47.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b627ea698db36fb9110aa77868467f1d23791a76a88a433cb6a43e1242073b77"
|
checksum = "2bf7b91fed3fc34781d57f9c6654ea2513bf0a99f7b0b0523c00de1e6efebe1c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
@@ -5228,15 +5267,15 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmtime-internal-component-util"
|
name = "wasmtime-internal-component-util"
|
||||||
version = "47.0.2"
|
version = "47.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f45bf943cff1d2f1976bac6a241ca4ecaf29a6efd5f1ad89e7722439fa5c392f"
|
checksum = "fc8a678149885cae00289f806fbe74c7863084cf74cace0b8dc73602279400e1"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmtime-internal-core"
|
name = "wasmtime-internal-core"
|
||||||
version = "47.0.2"
|
version = "47.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ea33e1f9685be82f90223bebcf2ffefb6b596ea3d82a3c42384527b9c6f5b447"
|
checksum = "8a0092c4b9d070ac5e278b6d0db10f5e71214190f0347ca57502b4692f796321"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"hashbrown 0.17.1",
|
"hashbrown 0.17.1",
|
||||||
"libm",
|
"libm",
|
||||||
@@ -5245,9 +5284,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmtime-internal-cranelift"
|
name = "wasmtime-internal-cranelift"
|
||||||
version = "47.0.2"
|
version = "47.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8b1ce104719932a48dbdfec0cc292c96494b0bfe764946e45fbfd3340e3a68f9"
|
checksum = "6851ebc9e03cab23d9821d2b2505d380bdfe38f35ccec945247b05274d85c98b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"cranelift-codegen",
|
"cranelift-codegen",
|
||||||
@@ -5262,7 +5301,7 @@ dependencies = [
|
|||||||
"pulley-interpreter",
|
"pulley-interpreter",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
"target-lexicon",
|
"target-lexicon",
|
||||||
"thiserror 2.0.19",
|
"thiserror 2.0.20",
|
||||||
"wasmparser 0.252.0",
|
"wasmparser 0.252.0",
|
||||||
"wasmtime-environ",
|
"wasmtime-environ",
|
||||||
"wasmtime-internal-core",
|
"wasmtime-internal-core",
|
||||||
@@ -5272,9 +5311,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmtime-internal-fiber"
|
name = "wasmtime-internal-fiber"
|
||||||
version = "47.0.2"
|
version = "47.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "976e4b71b9c0da8a9a7bb8d5fa0abedc4da879b397111fd91ece73be524fe621"
|
checksum = "9b26da6d5f60d4c438da70bba3553fe810a840533a64156be287dca2081c6991"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cc",
|
"cc",
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
@@ -5287,9 +5326,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmtime-internal-jit-debug"
|
name = "wasmtime-internal-jit-debug"
|
||||||
version = "47.0.2"
|
version = "47.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f1f60ecba3497cfc26284903c2e79023fd5ea991b95b0e8dafe994fd9fca4c4e"
|
checksum = "ed621ba25d7bf78b7edd7b4749abbb27c2e5cdba836c9504a424ee74b6c23149"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cc",
|
"cc",
|
||||||
"wasmtime-internal-versioned-export-macros",
|
"wasmtime-internal-versioned-export-macros",
|
||||||
@@ -5297,9 +5336,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmtime-internal-jit-icache-coherence"
|
name = "wasmtime-internal-jit-icache-coherence"
|
||||||
version = "47.0.2"
|
version = "47.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "fae6decb025ae6d12f3391b36deb62a6838d45b18864f796d84bced722ceac0d"
|
checksum = "5684ba160951baad06a725696f3c590e2fb0e8067c2aebee27bf7f9259058e85"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"libc",
|
"libc",
|
||||||
@@ -5309,9 +5348,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmtime-internal-unwinder"
|
name = "wasmtime-internal-unwinder"
|
||||||
version = "47.0.2"
|
version = "47.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0982122d9470d3d72ed7aa9ed91e69538ae44c1494cd22d78fec7846b248a940"
|
checksum = "112eead527bffa8ff0646a11fb4339a9d52ddd1da2b9a6fce4aff84c815dd94f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"cranelift-codegen",
|
"cranelift-codegen",
|
||||||
@@ -5322,9 +5361,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmtime-internal-versioned-export-macros"
|
name = "wasmtime-internal-versioned-export-macros"
|
||||||
version = "47.0.2"
|
version = "47.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "363cf88a80e6ed13311d0d34d9bcd02a2e07d98113b994ff41ed386a206f498e"
|
checksum = "153592e0bed824fc13c6696203fa1bd7bd20eb355316475e39a55f081ef80eca"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -5333,9 +5372,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmtime-internal-wit-bindgen"
|
name = "wasmtime-internal-wit-bindgen"
|
||||||
version = "47.0.2"
|
version = "47.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "87ff41bb1656cbeb7befc42b8a7078b30a5f8393a0c8bca36a6cec94360c1a16"
|
checksum = "c456ad6e81e0f46abfeca43687d18ea15e289c395b262ea6e0023e2682e088be"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bitflags 2.13.1",
|
"bitflags 2.13.1",
|
||||||
@@ -5346,9 +5385,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmtime-wasi"
|
name = "wasmtime-wasi"
|
||||||
version = "47.0.2"
|
version = "47.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ed1750b8e5e5d5b1ee3c0eb602d2c49d6a37a36e9996eaf0708b48ac92b62b06"
|
checksum = "4c1cf60cd6a565213af7074b4aad7bb5e110e3c6c6aae54425aa0500a0e15e86"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"bitflags 2.13.1",
|
"bitflags 2.13.1",
|
||||||
@@ -5360,7 +5399,7 @@ dependencies = [
|
|||||||
"io-lifetimes 3.0.1",
|
"io-lifetimes 3.0.1",
|
||||||
"rand 0.10.2",
|
"rand 0.10.2",
|
||||||
"rustix",
|
"rustix",
|
||||||
"thiserror 2.0.19",
|
"thiserror 2.0.20",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tracing",
|
"tracing",
|
||||||
"url",
|
"url",
|
||||||
@@ -5371,9 +5410,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmtime-wasi-http"
|
name = "wasmtime-wasi-http"
|
||||||
version = "47.0.2"
|
version = "47.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "014b8f05cacb7a5d665536e8a733b887bd192a9c179037580d48d0a6a82ecd34"
|
checksum = "a499879061ee9f724342d5f5009754b723ae53c7932161ee063a9fe19395e915"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"bytes",
|
"bytes",
|
||||||
@@ -5394,9 +5433,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmtime-wasi-io"
|
name = "wasmtime-wasi-io"
|
||||||
version = "47.0.2"
|
version = "47.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "54777d3afeaf3f32cc444df661d9cb4fd57067971e183c2b1f5251f33b939e68"
|
checksum = "7fb08e1d7755aaa467ce14080b7b01e33c914a920f6000696f1e42e40ea6387e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"bytes",
|
"bytes",
|
||||||
@@ -5987,6 +6026,19 @@ dependencies = [
|
|||||||
"wit-parser 0.254.0",
|
"wit-parser 0.254.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wit-encoder"
|
||||||
|
version = "0.255.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7cebd2d14c3296dada506c67c1ee5c9440811a2fe88a83367a606ccbd30ebfde"
|
||||||
|
dependencies = [
|
||||||
|
"id-arena",
|
||||||
|
"pretty_assertions",
|
||||||
|
"semver",
|
||||||
|
"serde",
|
||||||
|
"wit-parser 0.255.0",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wit-parser"
|
name = "wit-parser"
|
||||||
version = "0.252.0"
|
version = "0.252.0"
|
||||||
@@ -6025,6 +6077,25 @@ dependencies = [
|
|||||||
"wasmparser 0.254.0",
|
"wasmparser 0.254.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wit-parser"
|
||||||
|
version = "0.255.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ab5f6371fc71f15730b756c1dea3562a67adab1a7e519c4ca010173d883695bb"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"hashbrown 0.17.1",
|
||||||
|
"id-arena",
|
||||||
|
"indexmap",
|
||||||
|
"log",
|
||||||
|
"semver",
|
||||||
|
"serde",
|
||||||
|
"serde_derive",
|
||||||
|
"serde_json",
|
||||||
|
"unicode-ident",
|
||||||
|
"wasmparser 0.255.0",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wnaf"
|
name = "wnaf"
|
||||||
version = "0.14.0"
|
version = "0.14.0"
|
||||||
@@ -6078,6 +6149,12 @@ version = "0.8.18"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "aee1b19627c7c60102ab80d3a9cbe18de90bfe03bfa6c3715447681f0e8c8af6"
|
checksum = "aee1b19627c7c60102ab80d3a9cbe18de90bfe03bfa6c3715447681f0e8c8af6"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "yansi"
|
||||||
|
version = "1.0.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "yasna"
|
name = "yasna"
|
||||||
version = "0.5.2"
|
version = "0.5.2"
|
||||||
@@ -6112,18 +6189,18 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zerocopy"
|
name = "zerocopy"
|
||||||
version = "0.8.55"
|
version = "0.8.56"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b5a105cd7b140f6eeec8acff2ea38135d3cab283ada58540f629fe51e46696eb"
|
checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"zerocopy-derive",
|
"zerocopy-derive",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zerocopy-derive"
|
name = "zerocopy-derive"
|
||||||
version = "0.8.55"
|
version = "0.8.56"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0fe976fb70c78cd64cccfe3a6fc142244e8a77b70959b30faf9d0ac37ee228eb"
|
checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ members = [
|
|||||||
"crates/pumpkin-protocol",
|
"crates/pumpkin-protocol",
|
||||||
"crates/pumpkin-util",
|
"crates/pumpkin-util",
|
||||||
"crates/pumpkin-world",
|
"crates/pumpkin-world",
|
||||||
|
"tools/pumpkin-codegen",
|
||||||
]
|
]
|
||||||
exclude = ["tools/pumpkin-codegen"]
|
|
||||||
|
|
||||||
# [workspace.lints.rust]
|
# [workspace.lints.rust]
|
||||||
# missing_docs = "warn"
|
# missing_docs = "warn"
|
||||||
@@ -204,7 +204,7 @@ time = { version = "0.3", default-features = false, features = ["std"] }
|
|||||||
arc-swap = { version = "1.9", default-features = false }
|
arc-swap = { version = "1.9", default-features = false }
|
||||||
tokio-util = { version = "0.7.19", default-features = false }
|
tokio-util = { version = "0.7.19", default-features = false }
|
||||||
toml = { version = "1.1", default-features = false, features = ["parse", "display", "serde"] }
|
toml = { version = "1.1", default-features = false, features = ["parse", "display", "serde"] }
|
||||||
ureq = { version = "3.3.0", default-features = false, features = ["rustls"] }
|
ureq = { version = "3.4.0", default-features = false, features = ["rustls"] }
|
||||||
notify = { version = "8.2.0", default-features = false, features = ["macos_fsevent"] }
|
notify = { version = "8.2.0", default-features = false, features = ["macos_fsevent"] }
|
||||||
|
|
||||||
sysinfo = { version = "0.39", default-features = false, features = ["system"] }
|
sysinfo = { version = "0.39", default-features = false, features = ["system"] }
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -28,10 +28,12 @@ pub struct AdvancementDisplay {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl AdvancementDisplay {
|
impl AdvancementDisplay {
|
||||||
|
#[allow(deprecated)]
|
||||||
pub fn get_title(&self) -> TextComponent {
|
pub fn get_title(&self) -> TextComponent {
|
||||||
TextComponent::translate(self.title, [])
|
TextComponent::translate(self.title, [])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(deprecated)]
|
||||||
pub fn get_description(&self) -> TextComponent {
|
pub fn get_description(&self) -> TextComponent {
|
||||||
TextComponent::translate(self.description, [])
|
TextComponent::translate(self.description, [])
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1111,6 +1111,7 @@ impl Enchantment {
|
|||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
#[allow(deprecated)]
|
||||||
pub fn get_fullname(&self, level: i32) -> TextComponent {
|
pub fn get_fullname(&self, level: i32) -> TextComponent {
|
||||||
let mut ret = TextComponent::translate(self.description, []).color_named(
|
let mut ret = TextComponent::translate(self.description, []).color_named(
|
||||||
if self.has_tag(&EnchantmentTag::MINECRAFT_CURSE) {
|
if self.has_tag(&EnchantmentTag::MINECRAFT_CURSE) {
|
||||||
|
|||||||
@@ -64250,6 +64250,7 @@ impl Item {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
.unwrap_or(self.registry_key);
|
.unwrap_or(self.registry_key);
|
||||||
|
#[allow(deprecated)]
|
||||||
TextComponent::translate(name, &[])
|
TextComponent::translate(name, &[])
|
||||||
}
|
}
|
||||||
#[doc = "Try to parse an item from a resource location string."]
|
#[doc = "Try to parse an item from a resource location string."]
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -10,9 +10,10 @@ proc-macro = true
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
proc-macro-error2.workspace = true
|
proc-macro-error2.workspace = true
|
||||||
pumpkin-data = { workspace = true, features = ["block", "tag"] }
|
pumpkin-data = { workspace = true, features = ["block", "tag", "translation"] }
|
||||||
|
|
||||||
heck.workspace = true
|
heck.workspace = true
|
||||||
|
proc-macro2 = "1.0"
|
||||||
quote.workspace = true
|
quote.workspace = true
|
||||||
syn.workspace = true
|
syn.workspace = true
|
||||||
|
|
||||||
|
|||||||
@@ -626,3 +626,215 @@ fn is_vec(ty: &Type) -> bool {
|
|||||||
false
|
false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct TranslateCrossInput {
|
||||||
|
java_expr: syn::Expr,
|
||||||
|
bedrock_expr: syn::Expr,
|
||||||
|
args: Vec<syn::Expr>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl syn::parse::Parse for TranslateCrossInput {
|
||||||
|
fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
|
||||||
|
let java_expr: syn::Expr = input.parse()?;
|
||||||
|
let _ = input.parse::<syn::Token![,]>()?;
|
||||||
|
let bedrock_expr: syn::Expr = input.parse()?;
|
||||||
|
|
||||||
|
let mut args = Vec::new();
|
||||||
|
while !input.is_empty() {
|
||||||
|
let _ = input.parse::<syn::Token![,]>()?;
|
||||||
|
if input.is_empty() {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
args.push(input.parse()?);
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(Self {
|
||||||
|
java_expr,
|
||||||
|
bedrock_expr,
|
||||||
|
args,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn eval_translation_key_expr(expr: &syn::Expr) -> Option<(&'static str, proc_macro2::Span)> {
|
||||||
|
match expr {
|
||||||
|
syn::Expr::Path(expr_path) => {
|
||||||
|
let segments: Vec<String> = expr_path
|
||||||
|
.path
|
||||||
|
.segments
|
||||||
|
.iter()
|
||||||
|
.map(|s| s.ident.to_string())
|
||||||
|
.collect();
|
||||||
|
let seg_refs: Vec<&str> = segments.iter().map(String::as_str).collect();
|
||||||
|
|
||||||
|
let (is_java, const_ident) = match seg_refs.as_slice() {
|
||||||
|
["translation", "java", ident]
|
||||||
|
| ["pumpkin_data" | "crate", "translation", "java", ident] => (true, *ident),
|
||||||
|
["translation", "bedrock", ident]
|
||||||
|
| ["pumpkin_data" | "crate", "translation", "bedrock", ident] => (false, *ident),
|
||||||
|
_ => return None,
|
||||||
|
};
|
||||||
|
|
||||||
|
let key = if is_java {
|
||||||
|
pumpkin_data::translation::java::get(const_ident)
|
||||||
|
.and_then(pumpkin_data::translation::java::get_value)
|
||||||
|
} else {
|
||||||
|
pumpkin_data::translation::bedrock::get(const_ident)
|
||||||
|
.and_then(pumpkin_data::translation::bedrock::get_value)
|
||||||
|
};
|
||||||
|
|
||||||
|
key.map(|k| (k, expr.span()))
|
||||||
|
}
|
||||||
|
syn::Expr::Lit(syn::ExprLit {
|
||||||
|
lit: syn::Lit::Str(lit_str),
|
||||||
|
..
|
||||||
|
}) => {
|
||||||
|
// Leaking string slice here is fine since this runs during compilation inside proc macro
|
||||||
|
let s = Box::leak(lit_str.value().into_boxed_str());
|
||||||
|
Some((s, lit_str.span()))
|
||||||
|
}
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn count_placeholders(format_str: &str) -> usize {
|
||||||
|
let mut count = 0;
|
||||||
|
let bytes = format_str.as_bytes();
|
||||||
|
let mut i = 0;
|
||||||
|
while i < bytes.len() {
|
||||||
|
if bytes[i] == b'%' && i + 1 < bytes.len() {
|
||||||
|
if bytes[i + 1] == b'%' {
|
||||||
|
i += 2;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Handle positional specifiers like %1$s, %2$d
|
||||||
|
let mut j = i + 1;
|
||||||
|
while j < bytes.len() && bytes[j].is_ascii_digit() {
|
||||||
|
j += 1;
|
||||||
|
}
|
||||||
|
if j < bytes.len() && bytes[j] == b'$' {
|
||||||
|
count += 1;
|
||||||
|
i = j + 2; // skip past specifier character following $ (e.g., $s)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Handle optional width/flags before specifier type like %s, %d, %f, %1s
|
||||||
|
count += 1;
|
||||||
|
i = j + 1; // skip past specifier character
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
count
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Validates translation keys and arguments at compile-time and returns a `TextComponent`.
|
||||||
|
#[proc_macro]
|
||||||
|
pub fn translate_cross(input: TokenStream) -> TokenStream {
|
||||||
|
let TranslateCrossInput {
|
||||||
|
java_expr,
|
||||||
|
bedrock_expr,
|
||||||
|
args,
|
||||||
|
} = parse_macro_input!(input as TranslateCrossInput);
|
||||||
|
|
||||||
|
if let Some((java_str, span)) = eval_translation_key_expr(&java_expr) {
|
||||||
|
let expected = count_placeholders(java_str);
|
||||||
|
// Java translation keys from generated constants might differ from Bedrock key placeholder formats
|
||||||
|
if expected != args.len() && matches!(java_expr, syn::Expr::Lit(_)) {
|
||||||
|
return syn::Error::new(
|
||||||
|
span,
|
||||||
|
format!(
|
||||||
|
"Java translation key `{}` expects {} argument(s), but {} were provided",
|
||||||
|
java_str,
|
||||||
|
expected,
|
||||||
|
args.len()
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.to_compile_error()
|
||||||
|
.into();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some((bedrock_str, span)) = eval_translation_key_expr(&bedrock_expr) {
|
||||||
|
let expected = count_placeholders(bedrock_str);
|
||||||
|
if expected != args.len() && matches!(bedrock_expr, syn::Expr::Lit(_)) {
|
||||||
|
return syn::Error::new(
|
||||||
|
span,
|
||||||
|
format!(
|
||||||
|
"Bedrock translation key `{}` expects {} argument(s), but {} were provided",
|
||||||
|
bedrock_str,
|
||||||
|
expected,
|
||||||
|
args.len()
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.to_compile_error()
|
||||||
|
.into();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let expanded = quote! {
|
||||||
|
{
|
||||||
|
#[allow(deprecated)]
|
||||||
|
pumpkin_util::text::TextComponent::translate_cross(#java_expr, #bedrock_expr, vec![#(#args),*])
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
expanded.into()
|
||||||
|
}
|
||||||
|
|
||||||
|
struct TranslateJavaInput {
|
||||||
|
java_expr: syn::Expr,
|
||||||
|
args: Vec<syn::Expr>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl syn::parse::Parse for TranslateJavaInput {
|
||||||
|
fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
|
||||||
|
let java_expr: syn::Expr = input.parse()?;
|
||||||
|
|
||||||
|
let mut args = Vec::new();
|
||||||
|
while !input.is_empty() {
|
||||||
|
let _ = input.parse::<syn::Token![,]>()?;
|
||||||
|
if input.is_empty() {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
args.push(input.parse()?);
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(Self { java_expr, args })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Validates Java translation keys and arguments at compile-time and returns a `TextComponent`.
|
||||||
|
#[deprecated(
|
||||||
|
since = "0.1.0",
|
||||||
|
note = "Use `pumpkin_macros::translate_cross!` macro instead for cross-platform (Java & Bedrock) translation support."
|
||||||
|
)]
|
||||||
|
#[proc_macro]
|
||||||
|
pub fn translate_java(input: TokenStream) -> TokenStream {
|
||||||
|
let TranslateJavaInput { java_expr, args } = parse_macro_input!(input as TranslateJavaInput);
|
||||||
|
|
||||||
|
if let Some((java_str, span)) = eval_translation_key_expr(&java_expr) {
|
||||||
|
let expected = count_placeholders(java_str);
|
||||||
|
if expected != args.len() {
|
||||||
|
return syn::Error::new(
|
||||||
|
span,
|
||||||
|
format!(
|
||||||
|
"Java translation key `{}` expects {} argument(s), but {} were provided",
|
||||||
|
java_str,
|
||||||
|
expected,
|
||||||
|
args.len()
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.to_compile_error()
|
||||||
|
.into();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let expanded = quote! {
|
||||||
|
{
|
||||||
|
#[allow(deprecated)]
|
||||||
|
pumpkin_util::text::TextComponent::translate(#java_expr, vec![#(#args),*])
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
expanded.into()
|
||||||
|
}
|
||||||
|
|||||||
@@ -663,6 +663,10 @@ impl TextComponent {
|
|||||||
///
|
///
|
||||||
/// # Returns
|
/// # Returns
|
||||||
/// A new `TextComponent` that will be translated on the client.
|
/// A new `TextComponent` that will be translated on the client.
|
||||||
|
#[deprecated(
|
||||||
|
since = "0.1.0",
|
||||||
|
note = "Use the `pumpkin_macros::translate_java!` macro instead for compile-time translation key and parameter checking."
|
||||||
|
)]
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn translate<K: Into<Cow<'static, str>>, W: Into<Vec<Self>>>(key: K, with: W) -> Self {
|
pub fn translate<K: Into<Cow<'static, str>>, W: Into<Vec<Self>>>(key: K, with: W) -> Self {
|
||||||
Self(TextComponentBase {
|
Self(TextComponentBase {
|
||||||
@@ -685,6 +689,10 @@ impl TextComponent {
|
|||||||
///
|
///
|
||||||
/// # Returns
|
/// # Returns
|
||||||
/// A new `TextComponent` that will be translated natively on both clients.
|
/// A new `TextComponent` that will be translated natively on both clients.
|
||||||
|
#[deprecated(
|
||||||
|
since = "0.1.0",
|
||||||
|
note = "Use the `pumpkin_macros::translate_cross!` macro instead for compile-time translation key and parameter checking."
|
||||||
|
)]
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn translate_cross<
|
pub fn translate_cross<
|
||||||
K1: Into<Cow<'static, str>>,
|
K1: Into<Cow<'static, str>>,
|
||||||
@@ -1023,6 +1031,7 @@ impl TextComponent {
|
|||||||
///
|
///
|
||||||
/// # Returns
|
/// # Returns
|
||||||
/// The new component.
|
/// The new component.
|
||||||
|
#[allow(deprecated)]
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn wrap_in_square_brackets(self) -> Self {
|
pub fn wrap_in_square_brackets(self) -> Self {
|
||||||
Self::translate("chat.square_brackets", [self])
|
Self::translate("chat.square_brackets", [self])
|
||||||
@@ -1277,6 +1286,7 @@ mod test {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn serialize_text_component() {
|
fn serialize_text_component() {
|
||||||
|
#[allow(deprecated)]
|
||||||
let msg_comp = TextComponent::translate(
|
let msg_comp = TextComponent::translate(
|
||||||
"multiplayer.player.joined",
|
"multiplayer.player.joined",
|
||||||
[TextComponent::text("NAME".to_string())],
|
[TextComponent::text("NAME".to_string())],
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ description = "Empowering everyone to host fast and efficient Minecraft servers.
|
|||||||
edition.workspace = true
|
edition.workspace = true
|
||||||
rust-version.workspace = true
|
rust-version.workspace = true
|
||||||
license.workspace = true
|
license.workspace = true
|
||||||
|
default-run = "pumpkin"
|
||||||
|
|
||||||
[package.metadata.tauri-winres]
|
[package.metadata.tauri-winres]
|
||||||
# FileDescription is handled as the Program name by Windows!
|
# FileDescription is handled as the Program name by Windows!
|
||||||
|
|||||||
@@ -97,10 +97,9 @@ impl ScreenHandlerFactory for AnvilScreenFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_display_name(&self) -> TextComponent {
|
fn get_display_name(&self) -> TextComponent {
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::CONTAINER_REPAIR,
|
translation::java::CONTAINER_REPAIR,
|
||||||
translation::bedrock::CONTAINER_REPAIR,
|
translation::bedrock::CONTAINER_REPAIR
|
||||||
&[],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,10 +39,9 @@ impl ScreenHandlerFactory for BarrelScreenFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_display_name(&self) -> TextComponent {
|
fn get_display_name(&self) -> TextComponent {
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::CONTAINER_BARREL,
|
translation::java::CONTAINER_BARREL,
|
||||||
translation::bedrock::CONTAINER_BARREL,
|
translation::bedrock::CONTAINER_BARREL
|
||||||
&[],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,10 +37,9 @@ impl ScreenHandlerFactory for BeaconScreenFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_display_name(&self) -> TextComponent {
|
fn get_display_name(&self) -> TextComponent {
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::CONTAINER_BEACON,
|
translation::java::CONTAINER_BEACON,
|
||||||
translation::bedrock::CONTAINER_BEACON,
|
translation::bedrock::CONTAINER_BEACON
|
||||||
&[],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ use pumpkin_data::translation;
|
|||||||
use pumpkin_macros::pumpkin_block_from_tag;
|
use pumpkin_macros::pumpkin_block_from_tag;
|
||||||
use pumpkin_util::GameMode;
|
use pumpkin_util::GameMode;
|
||||||
use pumpkin_util::math::position::BlockPos;
|
use pumpkin_util::math::position::BlockPos;
|
||||||
use pumpkin_util::text::TextComponent;
|
|
||||||
use pumpkin_world::world::BlockFlags;
|
use pumpkin_world::world::BlockFlags;
|
||||||
|
|
||||||
use crate::block::BlockFuture;
|
use crate::block::BlockFuture;
|
||||||
@@ -247,10 +246,9 @@ impl BlockBehaviour for BedBlock {
|
|||||||
{
|
{
|
||||||
args.player
|
args.player
|
||||||
.send_system_message_raw(
|
.send_system_message_raw(
|
||||||
&TextComponent::translate_cross(
|
&pumpkin_macros::translate_cross!(
|
||||||
translation::java::BLOCK_MINECRAFT_BED_OBSTRUCTED,
|
translation::java::BLOCK_MINECRAFT_BED_OBSTRUCTED,
|
||||||
translation::java::BLOCK_MINECRAFT_BED_OBSTRUCTED,
|
translation::bedrock::TILE_BED_OBSTRUCTED
|
||||||
[],
|
|
||||||
),
|
),
|
||||||
true,
|
true,
|
||||||
)
|
)
|
||||||
@@ -264,10 +262,9 @@ impl BlockBehaviour for BedBlock {
|
|||||||
|
|
||||||
args.player
|
args.player
|
||||||
.send_system_message_raw(
|
.send_system_message_raw(
|
||||||
&TextComponent::translate_cross(
|
&pumpkin_macros::translate_cross!(
|
||||||
translation::java::BLOCK_MINECRAFT_BED_OCCUPIED,
|
translation::java::BLOCK_MINECRAFT_BED_OCCUPIED,
|
||||||
translation::bedrock::TILE_BED_OCCUPIED,
|
translation::bedrock::TILE_BED_OCCUPIED
|
||||||
[],
|
|
||||||
),
|
),
|
||||||
true,
|
true,
|
||||||
)
|
)
|
||||||
@@ -287,10 +284,9 @@ impl BlockBehaviour for BedBlock {
|
|||||||
{
|
{
|
||||||
args.player
|
args.player
|
||||||
.send_system_message_raw(
|
.send_system_message_raw(
|
||||||
&TextComponent::translate_cross(
|
&pumpkin_macros::translate_cross!(
|
||||||
translation::java::BLOCK_MINECRAFT_BED_TOO_FAR_AWAY,
|
translation::java::BLOCK_MINECRAFT_BED_TOO_FAR_AWAY,
|
||||||
translation::java::BLOCK_MINECRAFT_BED_TOO_FAR_AWAY,
|
translation::bedrock::TILE_BED_TOOFAR
|
||||||
[],
|
|
||||||
),
|
),
|
||||||
true,
|
true,
|
||||||
)
|
)
|
||||||
@@ -311,10 +307,9 @@ impl BlockBehaviour for BedBlock {
|
|||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
args.player
|
args.player
|
||||||
.send_system_message(&TextComponent::translate_cross(
|
.send_system_message(&pumpkin_macros::translate_cross!(
|
||||||
translation::java::BLOCK_MINECRAFT_SET_SPAWN,
|
translation::java::BLOCK_MINECRAFT_SET_SPAWN,
|
||||||
translation::bedrock::TILE_BED_RESPAWNSET,
|
translation::bedrock::TILE_BED_RESPAWNSET
|
||||||
[],
|
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
}
|
}
|
||||||
@@ -323,10 +318,9 @@ impl BlockBehaviour for BedBlock {
|
|||||||
if !can_sleep(args.world).await {
|
if !can_sleep(args.world).await {
|
||||||
args.player
|
args.player
|
||||||
.send_system_message_raw(
|
.send_system_message_raw(
|
||||||
&TextComponent::translate_cross(
|
&pumpkin_macros::translate_cross!(
|
||||||
translation::java::BLOCK_MINECRAFT_BED_NO_SLEEP,
|
translation::java::BLOCK_MINECRAFT_BED_NO_SLEEP,
|
||||||
translation::java::BLOCK_MINECRAFT_BED_NO_SLEEP,
|
translation::bedrock::TILE_BED_NOSLEEP
|
||||||
[],
|
|
||||||
),
|
),
|
||||||
true,
|
true,
|
||||||
)
|
)
|
||||||
@@ -346,10 +340,9 @@ impl BlockBehaviour for BedBlock {
|
|||||||
{
|
{
|
||||||
args.player
|
args.player
|
||||||
.send_system_message_raw(
|
.send_system_message_raw(
|
||||||
&TextComponent::translate_cross(
|
&pumpkin_macros::translate_cross!(
|
||||||
translation::java::BLOCK_MINECRAFT_BED_NOT_SAFE,
|
translation::java::BLOCK_MINECRAFT_BED_NOT_SAFE,
|
||||||
translation::java::BLOCK_MINECRAFT_BED_NOT_SAFE,
|
translation::bedrock::TILE_BED_NOTSAFE
|
||||||
[],
|
|
||||||
),
|
),
|
||||||
true,
|
true,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ use pumpkin_inventory::{
|
|||||||
screen_handler::{BoxFuture, InventoryPlayer, ScreenHandlerFactory, SharedScreenHandler},
|
screen_handler::{BoxFuture, InventoryPlayer, ScreenHandlerFactory, SharedScreenHandler},
|
||||||
};
|
};
|
||||||
use pumpkin_macros::pumpkin_block;
|
use pumpkin_macros::pumpkin_block;
|
||||||
use pumpkin_util::text::TextComponent;
|
|
||||||
use pumpkin_world::inventory::Inventory;
|
use pumpkin_world::inventory::Inventory;
|
||||||
use tokio::sync::Mutex;
|
use tokio::sync::Mutex;
|
||||||
|
|
||||||
@@ -73,10 +72,9 @@ impl ScreenHandlerFactory for BlastingFurnaceScreenFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_display_name(&self) -> pumpkin_util::text::TextComponent {
|
fn get_display_name(&self) -> pumpkin_util::text::TextComponent {
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::CONTAINER_BLAST_FURNACE,
|
translation::java::CONTAINER_BLAST_FURNACE,
|
||||||
translation::bedrock::TILE_BLAST_FURNACE_NAME,
|
translation::bedrock::TILE_BLAST_FURNACE_NAME
|
||||||
&[],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,10 +38,9 @@ impl ScreenHandlerFactory for BrewingScreenFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_display_name(&self) -> TextComponent {
|
fn get_display_name(&self) -> TextComponent {
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::CONTAINER_BREWING,
|
translation::java::CONTAINER_BREWING,
|
||||||
translation::bedrock::CONTAINER_BREWING,
|
translation::bedrock::CONTAINER_BREWING
|
||||||
&[],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,16 +59,14 @@ impl ScreenHandlerFactory for ChestScreenFactory {
|
|||||||
|
|
||||||
fn get_display_name(&self) -> TextComponent {
|
fn get_display_name(&self) -> TextComponent {
|
||||||
if self.0.size() > 27 {
|
if self.0.size() > 27 {
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::CONTAINER_CHESTDOUBLE,
|
translation::java::CONTAINER_CHESTDOUBLE,
|
||||||
translation::bedrock::CONTAINER_CHESTDOUBLE,
|
translation::bedrock::CONTAINER_CHESTDOUBLE
|
||||||
&[],
|
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::CONTAINER_CHEST,
|
translation::java::CONTAINER_CHEST,
|
||||||
translation::bedrock::CONTAINER_CHEST,
|
translation::bedrock::CONTAINER_CHEST
|
||||||
&[],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,10 +57,9 @@ impl ScreenHandlerFactory for CraftingTableScreenFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_display_name(&self) -> TextComponent {
|
fn get_display_name(&self) -> TextComponent {
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::CONTAINER_CRAFTING,
|
translation::java::CONTAINER_CRAFTING,
|
||||||
translation::bedrock::CONTAINER_CRAFTING,
|
translation::bedrock::CONTAINER_CRAFTING
|
||||||
&[],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,10 +121,9 @@ impl ScreenHandlerFactory for EnchantingTableScreenFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_display_name(&self) -> TextComponent {
|
fn get_display_name(&self) -> TextComponent {
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::CONTAINER_ENCHANT,
|
translation::java::CONTAINER_ENCHANT,
|
||||||
translation::bedrock::CONTAINER_ENCHANT,
|
translation::bedrock::CONTAINER_ENCHANT
|
||||||
&[],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,10 +38,9 @@ impl ScreenHandlerFactory for EnderChestScreenFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_display_name(&self) -> TextComponent {
|
fn get_display_name(&self) -> TextComponent {
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::CONTAINER_ENDERCHEST,
|
translation::java::CONTAINER_ENDERCHEST,
|
||||||
translation::bedrock::CONTAINER_ENDERCHEST,
|
translation::bedrock::CONTAINER_ENDERCHEST
|
||||||
&[],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ use pumpkin_inventory::{
|
|||||||
screen_handler::{BoxFuture, InventoryPlayer, ScreenHandlerFactory, SharedScreenHandler},
|
screen_handler::{BoxFuture, InventoryPlayer, ScreenHandlerFactory, SharedScreenHandler},
|
||||||
};
|
};
|
||||||
use pumpkin_macros::pumpkin_block;
|
use pumpkin_macros::pumpkin_block;
|
||||||
use pumpkin_util::text::TextComponent;
|
|
||||||
use pumpkin_world::inventory::Inventory;
|
use pumpkin_world::inventory::Inventory;
|
||||||
use tokio::sync::Mutex;
|
use tokio::sync::Mutex;
|
||||||
|
|
||||||
@@ -72,10 +71,9 @@ impl ScreenHandlerFactory for FurnaceScreenFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_display_name(&self) -> pumpkin_util::text::TextComponent {
|
fn get_display_name(&self) -> pumpkin_util::text::TextComponent {
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::CONTAINER_FURNACE,
|
translation::java::CONTAINER_FURNACE,
|
||||||
translation::bedrock::CONTAINER_FURNACE,
|
translation::bedrock::CONTAINER_FURNACE
|
||||||
&[],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,10 +45,9 @@ impl ScreenHandlerFactory for HopperBlockScreenFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_display_name(&self) -> TextComponent {
|
fn get_display_name(&self) -> TextComponent {
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::CONTAINER_HOPPER,
|
translation::java::CONTAINER_HOPPER,
|
||||||
translation::bedrock::CONTAINER_HOPPER,
|
translation::bedrock::CONTAINER_HOPPER
|
||||||
&[],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,10 +97,9 @@ impl ScreenHandlerFactory for LecternScreenFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_display_name(&self) -> TextComponent {
|
fn get_display_name(&self) -> TextComponent {
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::CONTAINER_LECTERN,
|
translation::java::CONTAINER_LECTERN,
|
||||||
translation::bedrock::TILE_LECTERN_NAME,
|
translation::bedrock::TILE_LECTERN_NAME
|
||||||
&[],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,10 +44,9 @@ impl ScreenHandlerFactory for CrafterScreenFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_display_name(&self) -> TextComponent {
|
fn get_display_name(&self) -> TextComponent {
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::CONTAINER_CRAFTER,
|
translation::java::CONTAINER_CRAFTER,
|
||||||
translation::bedrock::CONTAINER_CRAFTER,
|
translation::bedrock::CONTAINER_CRAFTER
|
||||||
&[],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,10 +64,9 @@ impl ScreenHandlerFactory for DispenserScreenFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_display_name(&self) -> TextComponent {
|
fn get_display_name(&self) -> TextComponent {
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::CONTAINER_DISPENSER,
|
translation::java::CONTAINER_DISPENSER,
|
||||||
translation::bedrock::CONTAINER_DISPENSER,
|
translation::bedrock::CONTAINER_DISPENSER
|
||||||
&[],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,10 +48,9 @@ impl ScreenHandlerFactory for DropperScreenFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_display_name(&self) -> TextComponent {
|
fn get_display_name(&self) -> TextComponent {
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::CONTAINER_DROPPER,
|
translation::java::CONTAINER_DROPPER,
|
||||||
translation::bedrock::CONTAINER_DROPPER,
|
translation::bedrock::CONTAINER_DROPPER
|
||||||
&[],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ use pumpkin_data::item::Item;
|
|||||||
use pumpkin_data::sound::{Sound, SoundCategory};
|
use pumpkin_data::sound::{Sound, SoundCategory};
|
||||||
use pumpkin_data::translation;
|
use pumpkin_data::translation;
|
||||||
use pumpkin_macros::pumpkin_block;
|
use pumpkin_macros::pumpkin_block;
|
||||||
use pumpkin_util::text::TextComponent;
|
|
||||||
use pumpkin_world::world::BlockFlags;
|
use pumpkin_world::world::BlockFlags;
|
||||||
|
|
||||||
use crate::block::registry::BlockActionResult;
|
use crate::block::registry::BlockActionResult;
|
||||||
@@ -70,9 +69,9 @@ impl BlockBehaviour for RespawnAnchorBlock {
|
|||||||
|
|
||||||
if props.charges == 0 {
|
if props.charges == 0 {
|
||||||
args.player
|
args.player
|
||||||
.send_system_message(&TextComponent::translate(
|
.send_system_message(&pumpkin_macros::translate_cross!(
|
||||||
translation::java::BLOCK_MINECRAFT_BED_NO_SLEEP,
|
translation::java::BLOCK_MINECRAFT_BED_NO_SLEEP,
|
||||||
&[],
|
translation::bedrock::TILE_BED_NOSLEEP
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
return BlockActionResult::SuccessServer;
|
return BlockActionResult::SuccessServer;
|
||||||
@@ -105,10 +104,9 @@ impl BlockBehaviour for RespawnAnchorBlock {
|
|||||||
);
|
);
|
||||||
|
|
||||||
args.player
|
args.player
|
||||||
.send_system_message(&TextComponent::translate_cross(
|
.send_system_message(&pumpkin_macros::translate_cross!(
|
||||||
translation::java::BLOCK_MINECRAFT_SET_SPAWN,
|
translation::java::BLOCK_MINECRAFT_SET_SPAWN,
|
||||||
translation::bedrock::TILE_BED_RESPAWNSET,
|
translation::bedrock::TILE_BED_RESPAWNSET
|
||||||
[],
|
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,10 +40,9 @@ impl ScreenHandlerFactory for ShulkerBoxScreenFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_display_name(&self) -> TextComponent {
|
fn get_display_name(&self) -> TextComponent {
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::CONTAINER_SHULKERBOX,
|
translation::java::CONTAINER_SHULKERBOX,
|
||||||
translation::bedrock::CONTAINER_SHULKERBOX,
|
translation::bedrock::CONTAINER_SHULKERBOX
|
||||||
&[],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ use pumpkin_inventory::{
|
|||||||
screen_handler::{BoxFuture, InventoryPlayer, ScreenHandlerFactory, SharedScreenHandler},
|
screen_handler::{BoxFuture, InventoryPlayer, ScreenHandlerFactory, SharedScreenHandler},
|
||||||
};
|
};
|
||||||
use pumpkin_macros::pumpkin_block;
|
use pumpkin_macros::pumpkin_block;
|
||||||
use pumpkin_util::text::TextComponent;
|
|
||||||
use pumpkin_world::inventory::Inventory;
|
use pumpkin_world::inventory::Inventory;
|
||||||
use tokio::sync::Mutex;
|
use tokio::sync::Mutex;
|
||||||
|
|
||||||
@@ -72,10 +71,9 @@ impl ScreenHandlerFactory for SmokerScreenFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_display_name(&self) -> pumpkin_util::text::TextComponent {
|
fn get_display_name(&self) -> pumpkin_util::text::TextComponent {
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::CONTAINER_SMOKER,
|
translation::java::CONTAINER_SMOKER,
|
||||||
translation::bedrock::TILE_SMOKER_NAME,
|
translation::bedrock::TILE_SMOKER_NAME
|
||||||
&[],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,10 +54,9 @@ impl ScreenHandlerFactory for StonecutterScreenFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_display_name(&self) -> TextComponent {
|
fn get_display_name(&self) -> TextComponent {
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::CONTAINER_STONECUTTER,
|
translation::java::CONTAINER_STONECUTTER,
|
||||||
translation::bedrock::CONTAINER_STONECUTTER,
|
translation::bedrock::CONTAINER_STONECUTTER
|
||||||
&[],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,10 +74,9 @@ impl ArgumentConsumer for HexColorArgumentConsumer {
|
|||||||
let result = parse_hex_color(raw_arg.value)
|
let result = parse_hex_color(raw_arg.value)
|
||||||
.map(|color| Some(Arg::HexColor(color)))
|
.map(|color| Some(Arg::HexColor(color)))
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
INVALID_HEX_ERROR_TYPE.create_without_context(TextComponent::translate(
|
INVALID_HEX_ERROR_TYPE.create_without_context_args_slice(&[TextComponent::text(
|
||||||
translation::java::ARGUMENT_HEXCOLOR_INVALID,
|
raw_arg.value.to_string(),
|
||||||
[TextComponent::text(raw_arg.value.to_string())],
|
)])
|
||||||
))
|
|
||||||
});
|
});
|
||||||
|
|
||||||
Box::pin(async move { result })
|
Box::pin(async move { result })
|
||||||
|
|||||||
@@ -76,10 +76,9 @@ impl ArgumentConsumer for TeamColorArgumentConsumer {
|
|||||||
let result = NamedColor::try_from(raw_arg.value)
|
let result = NamedColor::try_from(raw_arg.value)
|
||||||
.map(|color| Some(Arg::TeamColor(color)))
|
.map(|color| Some(Arg::TeamColor(color)))
|
||||||
.map_err(|()| {
|
.map_err(|()| {
|
||||||
INVALID_COLOR_ERROR_TYPE.create_without_context(TextComponent::translate(
|
INVALID_COLOR_ERROR_TYPE.create_without_context_args_slice(&[TextComponent::text(
|
||||||
translation::java::ARGUMENT_COLOR_INVALID,
|
raw_arg.value.to_string(),
|
||||||
[TextComponent::text(raw_arg.value.to_string())],
|
)])
|
||||||
))
|
|
||||||
});
|
});
|
||||||
|
|
||||||
Box::pin(async move { result })
|
Box::pin(async move { result })
|
||||||
|
|||||||
@@ -165,14 +165,13 @@ impl CommandExecutor for PlaceTemplateExecutor {
|
|||||||
context
|
context
|
||||||
.source
|
.source
|
||||||
.send_feedback(
|
.send_feedback(
|
||||||
TextComponent::translate(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_PLACE_TEMPLATE_SUCCESS,
|
translation::java::COMMANDS_PLACE_TEMPLATE_SUCCESS,
|
||||||
[
|
translation::bedrock::COMMANDS_PLACE_SUCCESS,
|
||||||
TextComponent::text(template_name.clone()),
|
TextComponent::text(template_name.clone()),
|
||||||
TextComponent::text(block_pos.0.x.to_string()),
|
TextComponent::text(block_pos.0.x.to_string()),
|
||||||
TextComponent::text(block_pos.0.y.to_string()),
|
TextComponent::text(block_pos.0.y.to_string()),
|
||||||
TextComponent::text(block_pos.0.z.to_string()),
|
TextComponent::text(block_pos.0.z.to_string())
|
||||||
],
|
|
||||||
),
|
),
|
||||||
true,
|
true,
|
||||||
)
|
)
|
||||||
@@ -198,7 +197,7 @@ impl CommandExecutor for PlaceJigsawExecutor {
|
|||||||
BlockPos::new(p.x as i32, p.y as i32, p.z as i32)
|
BlockPos::new(p.x as i32, p.y as i32, p.z as i32)
|
||||||
});
|
});
|
||||||
|
|
||||||
let (piece_count, placer) = {
|
let (_piece_count, placer) = {
|
||||||
let seed = hash_block_pos(block_pos.0.x, block_pos.0.y, block_pos.0.z) as u64;
|
let seed = hash_block_pos(block_pos.0.x, block_pos.0.y, block_pos.0.z) as u64;
|
||||||
let random = RandomGenerator::Legacy(LegacyRand::from_seed(seed));
|
let random = RandomGenerator::Legacy(LegacyRand::from_seed(seed));
|
||||||
let world_gen = &context.world().level.world_gen;
|
let world_gen = &context.world().level.world_gen;
|
||||||
@@ -259,14 +258,12 @@ impl CommandExecutor for PlaceJigsawExecutor {
|
|||||||
context
|
context
|
||||||
.source
|
.source
|
||||||
.send_feedback(
|
.send_feedback(
|
||||||
TextComponent::translate(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_PLACE_JIGSAW_SUCCESS,
|
translation::java::COMMANDS_PLACE_JIGSAW_SUCCESS,
|
||||||
[
|
translation::bedrock::COMMANDS_PLACE_SUCCESS,
|
||||||
TextComponent::text(piece_count.to_string()),
|
TextComponent::text(block_pos.0.x.to_string()),
|
||||||
TextComponent::text(block_pos.0.x.to_string()),
|
TextComponent::text(block_pos.0.y.to_string()),
|
||||||
TextComponent::text(block_pos.0.y.to_string()),
|
TextComponent::text(block_pos.0.z.to_string())
|
||||||
TextComponent::text(block_pos.0.z.to_string()),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
true,
|
true,
|
||||||
)
|
)
|
||||||
@@ -525,14 +522,13 @@ impl CommandExecutor for PlaceStructureExecutor {
|
|||||||
context
|
context
|
||||||
.source
|
.source
|
||||||
.send_feedback(
|
.send_feedback(
|
||||||
TextComponent::translate(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_PLACE_STRUCTURE_SUCCESS,
|
translation::java::COMMANDS_PLACE_STRUCTURE_SUCCESS,
|
||||||
[
|
translation::bedrock::COMMANDS_PLACE_SUCCESS,
|
||||||
TextComponent::text(structure_name),
|
TextComponent::text(structure_name),
|
||||||
TextComponent::text(block_pos.0.x.to_string()),
|
TextComponent::text(block_pos.0.x.to_string()),
|
||||||
TextComponent::text(block_pos.0.y.to_string()),
|
TextComponent::text(block_pos.0.y.to_string()),
|
||||||
TextComponent::text(block_pos.0.z.to_string()),
|
TextComponent::text(block_pos.0.z.to_string())
|
||||||
],
|
|
||||||
),
|
),
|
||||||
true,
|
true,
|
||||||
)
|
)
|
||||||
@@ -642,14 +638,13 @@ impl CommandExecutor for PlaceFeatureExecutor {
|
|||||||
context
|
context
|
||||||
.source
|
.source
|
||||||
.send_feedback(
|
.send_feedback(
|
||||||
TextComponent::translate(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_PLACE_FEATURE_SUCCESS,
|
translation::java::COMMANDS_PLACE_FEATURE_SUCCESS,
|
||||||
[
|
translation::bedrock::COMMANDS_PLACE_SUCCESS,
|
||||||
TextComponent::text(feature_name),
|
TextComponent::text(feature_name),
|
||||||
TextComponent::text(block_pos.0.x.to_string()),
|
TextComponent::text(block_pos.0.x.to_string()),
|
||||||
TextComponent::text(block_pos.0.y.to_string()),
|
TextComponent::text(block_pos.0.y.to_string()),
|
||||||
TextComponent::text(block_pos.0.z.to_string()),
|
TextComponent::text(block_pos.0.z.to_string())
|
||||||
],
|
|
||||||
),
|
),
|
||||||
true,
|
true,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -81,9 +81,10 @@ impl CommandExecutor for QueryExecutor {
|
|||||||
QueryMode::GameTime => {
|
QueryMode::GameTime => {
|
||||||
let game_time = level_time.query_gametime();
|
let game_time = level_time.query_gametime();
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_TIME_QUERY_GAMETIME,
|
translation::java::COMMANDS_TIME_QUERY_GAMETIME,
|
||||||
[TextComponent::text(game_time.to_string())],
|
translation::bedrock::COMMANDS_TIME_QUERY_GAMETIME,
|
||||||
|
TextComponent::text(game_time.to_string())
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
Ok(wrap_time(game_time))
|
Ok(wrap_time(game_time))
|
||||||
@@ -91,12 +92,11 @@ impl CommandExecutor for QueryExecutor {
|
|||||||
QueryMode::Time => {
|
QueryMode::Time => {
|
||||||
let total_ticks = level_time.time_of_day;
|
let total_ticks = level_time.time_of_day;
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_TIME_QUERY_ABSOLUTE,
|
translation::java::COMMANDS_TIME_QUERY_ABSOLUTE,
|
||||||
[
|
translation::bedrock::COMMANDS_TIME_QUERY_DAYTIME,
|
||||||
TextComponent::text(clock_name.to_string()),
|
TextComponent::text(clock_name.to_string()),
|
||||||
TextComponent::text(total_ticks.to_string()),
|
TextComponent::text(total_ticks.to_string())
|
||||||
],
|
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
Ok(wrap_time(total_ticks))
|
Ok(wrap_time(total_ticks))
|
||||||
@@ -104,21 +104,21 @@ impl CommandExecutor for QueryExecutor {
|
|||||||
QueryMode::DayTime => {
|
QueryMode::DayTime => {
|
||||||
let curr_time = level_time.query_daytime();
|
let curr_time = level_time.query_daytime();
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_TIME_QUERY,
|
translation::java::COMMANDS_TIME_QUERY,
|
||||||
translation::bedrock::COMMANDS_TIME_QUERY_DAYTIME,
|
translation::bedrock::COMMANDS_TIME_QUERY_DAYTIME,
|
||||||
[TextComponent::text(curr_time.to_string())],
|
TextComponent::text(curr_time.to_string())
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
Ok(curr_time as i32)
|
Ok(wrap_time(curr_time))
|
||||||
}
|
}
|
||||||
QueryMode::Day => {
|
QueryMode::Day => {
|
||||||
let curr_time = level_time.query_day();
|
let curr_time = level_time.query_day();
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_TIME_QUERY,
|
translation::java::COMMANDS_TIME_QUERY,
|
||||||
translation::bedrock::COMMANDS_TIME_QUERY_DAY,
|
translation::bedrock::COMMANDS_TIME_QUERY_DAY,
|
||||||
[TextComponent::text(curr_time.to_string())],
|
TextComponent::text(curr_time.to_string())
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
Ok(curr_time as i32)
|
Ok(curr_time as i32)
|
||||||
@@ -161,12 +161,11 @@ impl CommandExecutor for ActionExecutor {
|
|||||||
level_time.set_time(time_count.into());
|
level_time.set_time(time_count.into());
|
||||||
level_time.send_time(world).await;
|
level_time.send_time(world).await;
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_TIME_SET_ABSOLUTE,
|
translation::java::COMMANDS_TIME_SET_ABSOLUTE,
|
||||||
[
|
translation::bedrock::COMMANDS_TIME_SET,
|
||||||
TextComponent::text(clock_name.to_string()),
|
TextComponent::text(clock_name.to_string()),
|
||||||
TextComponent::text(time_count.to_string()),
|
TextComponent::text(time_count.to_string())
|
||||||
],
|
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
Ok(time_count)
|
Ok(time_count)
|
||||||
@@ -177,12 +176,11 @@ impl CommandExecutor for ActionExecutor {
|
|||||||
level_time.send_time(world).await;
|
level_time.send_time(world).await;
|
||||||
let total_ticks = level_time.time_of_day;
|
let total_ticks = level_time.time_of_day;
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_TIME_SET_ABSOLUTE,
|
translation::java::COMMANDS_TIME_SET_ABSOLUTE,
|
||||||
[
|
translation::bedrock::COMMANDS_TIME_ADDED,
|
||||||
TextComponent::text(clock_name.to_string()),
|
TextComponent::text(clock_name.to_string()),
|
||||||
TextComponent::text(total_ticks.to_string()),
|
TextComponent::text(total_ticks.to_string())
|
||||||
],
|
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
Ok(wrap_time(total_ticks))
|
Ok(wrap_time(total_ticks))
|
||||||
@@ -191,9 +189,10 @@ impl CommandExecutor for ActionExecutor {
|
|||||||
level_time.set_paused(true);
|
level_time.set_paused(true);
|
||||||
level_time.send_time(world).await;
|
level_time.send_time(world).await;
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_TIME_PAUSE,
|
translation::java::COMMANDS_TIME_PAUSE,
|
||||||
[TextComponent::text(clock_name.to_string())],
|
translation::bedrock::COMMANDS_TIME_STOP,
|
||||||
|
TextComponent::text(clock_name.to_string())
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
Ok(1)
|
Ok(1)
|
||||||
@@ -202,9 +201,10 @@ impl CommandExecutor for ActionExecutor {
|
|||||||
level_time.set_paused(false);
|
level_time.set_paused(false);
|
||||||
level_time.send_time(world).await;
|
level_time.send_time(world).await;
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_TIME_RESUME,
|
translation::java::COMMANDS_TIME_RESUME,
|
||||||
[TextComponent::text(clock_name.to_string())],
|
translation::bedrock::COMMANDS_TIME_SET,
|
||||||
|
TextComponent::text(clock_name.to_string())
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
Ok(1)
|
Ok(1)
|
||||||
@@ -218,12 +218,11 @@ impl CommandExecutor for ActionExecutor {
|
|||||||
level_time.set_rate(rate);
|
level_time.set_rate(rate);
|
||||||
level_time.send_time(world).await;
|
level_time.send_time(world).await;
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_TIME_RATE,
|
translation::java::COMMANDS_TIME_RATE,
|
||||||
[
|
translation::bedrock::COMMANDS_TIME_SET,
|
||||||
TextComponent::text(clock_name.to_string()),
|
TextComponent::text(clock_name.to_string()),
|
||||||
TextComponent::text(rate.to_string()),
|
TextComponent::text(rate.to_string())
|
||||||
],
|
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
Ok(1)
|
Ok(1)
|
||||||
|
|||||||
@@ -35,9 +35,10 @@ impl CommandExecutor for ListExecutor {
|
|||||||
let dimension = world.dimension.minecraft_name.to_string();
|
let dimension = world.dimension.minecraft_name.to_string();
|
||||||
|
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_WAYPOINT_LIST_EMPTY,
|
translation::java::COMMANDS_WAYPOINT_LIST_EMPTY,
|
||||||
[TextComponent::text(dimension)],
|
translation::java::COMMANDS_WAYPOINT_LIST_EMPTY,
|
||||||
|
TextComponent::text(dimension)
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
Ok(0)
|
Ok(0)
|
||||||
@@ -98,9 +99,10 @@ impl CommandExecutor for ColorExecutor {
|
|||||||
ColorAction::Named => {
|
ColorAction::Named => {
|
||||||
let color = TeamColorArgumentConsumer::find_arg(args, ARG_COLOR)?;
|
let color = TeamColorArgumentConsumer::find_arg(args, ARG_COLOR)?;
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_WAYPOINT_MODIFY_COLOR,
|
translation::java::COMMANDS_WAYPOINT_MODIFY_COLOR,
|
||||||
[TextComponent::text(color.name()).color_named(color)],
|
translation::java::COMMANDS_WAYPOINT_MODIFY_COLOR,
|
||||||
|
TextComponent::text(color.name()).color_named(color)
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
}
|
}
|
||||||
@@ -108,17 +110,18 @@ impl CommandExecutor for ColorExecutor {
|
|||||||
let color_val = HexColorArgumentConsumer::find_arg(args, ARG_COLOR)?;
|
let color_val = HexColorArgumentConsumer::find_arg(args, ARG_COLOR)?;
|
||||||
let hex_str = format!("{:06X}", color_val & 0xFFFFFF);
|
let hex_str = format!("{:06X}", color_val & 0xFFFFFF);
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_WAYPOINT_MODIFY_COLOR,
|
translation::java::COMMANDS_WAYPOINT_MODIFY_COLOR,
|
||||||
[TextComponent::text(hex_str)],
|
translation::java::COMMANDS_WAYPOINT_MODIFY_COLOR,
|
||||||
|
TextComponent::text(hex_str)
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
}
|
}
|
||||||
ColorAction::Reset => {
|
ColorAction::Reset => {
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_WAYPOINT_MODIFY_COLOR_RESET,
|
translation::java::COMMANDS_WAYPOINT_MODIFY_COLOR_RESET,
|
||||||
[],
|
translation::java::COMMANDS_WAYPOINT_MODIFY_COLOR_RESET
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
}
|
}
|
||||||
@@ -176,9 +179,9 @@ impl CommandExecutor for StyleExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_WAYPOINT_MODIFY_STYLE,
|
translation::java::COMMANDS_WAYPOINT_MODIFY_STYLE,
|
||||||
[],
|
translation::java::COMMANDS_WAYPOINT_MODIFY_STYLE
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
|
|||||||
@@ -37,10 +37,9 @@ async fn kick_non_whitelisted_players(server: &Server) {
|
|||||||
player
|
player
|
||||||
.kick(
|
.kick(
|
||||||
DisconnectReason::Kicked,
|
DisconnectReason::Kicked,
|
||||||
TextComponent::translate_cross(
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::MULTIPLAYER_DISCONNECT_NOT_WHITELISTED,
|
translation::java::MULTIPLAYER_DISCONNECT_NOT_WHITELISTED,
|
||||||
translation::java::MULTIPLAYER_DISCONNECT_NOT_WHITELISTED,
|
translation::bedrock::DISCONNECT_KICKED
|
||||||
&[],
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
@@ -60,18 +59,18 @@ impl CommandExecutor for OnExecutor {
|
|||||||
Box::pin(async move {
|
Box::pin(async move {
|
||||||
let previous = server.white_list.swap(true, Ordering::Relaxed);
|
let previous = server.white_list.swap(true, Ordering::Relaxed);
|
||||||
if previous {
|
if previous {
|
||||||
Err(CommandError::CommandFailed(TextComponent::translate_cross(
|
Err(CommandError::CommandFailed(
|
||||||
translation::java::COMMANDS_WHITELIST_ALREADYON,
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_WHITELIST_ALREADYON,
|
translation::java::COMMANDS_WHITELIST_ALREADYON,
|
||||||
&[],
|
translation::bedrock::COMMANDS_ALLOWLIST_ENABLED
|
||||||
)))
|
),
|
||||||
|
))
|
||||||
} else {
|
} else {
|
||||||
kick_non_whitelisted_players(server).await;
|
kick_non_whitelisted_players(server).await;
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_WHITELIST_ENABLED,
|
translation::java::COMMANDS_WHITELIST_ENABLED,
|
||||||
translation::java::COMMANDS_WHITELIST_ENABLED,
|
translation::bedrock::COMMANDS_ALLOWLIST_ENABLED
|
||||||
&[],
|
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
Ok(1)
|
Ok(1)
|
||||||
@@ -93,19 +92,19 @@ impl CommandExecutor for OffExecutor {
|
|||||||
let previous = server.white_list.swap(false, Ordering::Relaxed);
|
let previous = server.white_list.swap(false, Ordering::Relaxed);
|
||||||
if previous {
|
if previous {
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_WHITELIST_DISABLED,
|
translation::java::COMMANDS_WHITELIST_DISABLED,
|
||||||
translation::java::COMMANDS_WHITELIST_DISABLED,
|
translation::bedrock::COMMANDS_ALLOWLIST_DISABLED
|
||||||
&[],
|
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
Ok(1)
|
Ok(1)
|
||||||
} else {
|
} else {
|
||||||
Err(CommandError::CommandFailed(TextComponent::translate_cross(
|
Err(CommandError::CommandFailed(
|
||||||
translation::java::COMMANDS_WHITELIST_ALREADYOFF,
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_WHITELIST_ALREADYOFF,
|
translation::java::COMMANDS_WHITELIST_ALREADYOFF,
|
||||||
&[],
|
translation::bedrock::COMMANDS_ALLOWLIST_DISABLED
|
||||||
)))
|
),
|
||||||
|
))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -124,10 +123,9 @@ impl CommandExecutor for ListExecutor {
|
|||||||
let whitelist = &server.data.whitelist_config.read().await.whitelist;
|
let whitelist = &server.data.whitelist_config.read().await.whitelist;
|
||||||
if whitelist.is_empty() {
|
if whitelist.is_empty() {
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_WHITELIST_NONE,
|
translation::java::COMMANDS_WHITELIST_NONE,
|
||||||
translation::java::COMMANDS_WHITELIST_NONE,
|
translation::bedrock::COMMANDS_ALLOWLIST_LIST
|
||||||
[],
|
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
return Ok(0);
|
return Ok(0);
|
||||||
@@ -142,13 +140,11 @@ impl CommandExecutor for ListExecutor {
|
|||||||
let names_len = names.len() as i32;
|
let names_len = names.len() as i32;
|
||||||
|
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_WHITELIST_LIST,
|
translation::java::COMMANDS_WHITELIST_LIST,
|
||||||
translation::java::COMMANDS_WHITELIST_LIST,
|
translation::bedrock::COMMANDS_ALLOWLIST_LIST,
|
||||||
[
|
TextComponent::text(whitelist.len().to_string()),
|
||||||
TextComponent::text(whitelist.len().to_string()),
|
TextComponent::text(names)
|
||||||
TextComponent::text(names),
|
|
||||||
],
|
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
@@ -170,10 +166,9 @@ impl CommandExecutor for ReloadExecutor {
|
|||||||
*server.data.whitelist_config.write().await = WhitelistConfig::load();
|
*server.data.whitelist_config.write().await = WhitelistConfig::load();
|
||||||
kick_non_whitelisted_players(server).await;
|
kick_non_whitelisted_players(server).await;
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_WHITELIST_RELOADED,
|
translation::java::COMMANDS_WHITELIST_RELOADED,
|
||||||
translation::java::COMMANDS_WHITELIST_RELOADED,
|
translation::bedrock::COMMANDS_ALLOWLIST_RELOADED
|
||||||
&[],
|
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
Ok(1)
|
Ok(1)
|
||||||
@@ -212,10 +207,10 @@ impl CommandExecutor for AddExecutor {
|
|||||||
.whitelist
|
.whitelist
|
||||||
.push(WhitelistEntry::new(profile.id, profile.name.clone()));
|
.push(WhitelistEntry::new(profile.id, profile.name.clone()));
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_WHITELIST_ADD_SUCCESS,
|
translation::java::COMMANDS_WHITELIST_ADD_SUCCESS,
|
||||||
translation::java::COMMANDS_WHITELIST_ADD_SUCCESS,
|
translation::bedrock::COMMANDS_ALLOWLIST_ADD_SUCCESS,
|
||||||
[TextComponent::text(profile.name.clone())],
|
TextComponent::text(profile.name.clone())
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
successes += 1;
|
successes += 1;
|
||||||
@@ -224,11 +219,12 @@ impl CommandExecutor for AddExecutor {
|
|||||||
whitelist.save();
|
whitelist.save();
|
||||||
|
|
||||||
if successes == 0 {
|
if successes == 0 {
|
||||||
Err(CommandError::CommandFailed(TextComponent::translate_cross(
|
Err(CommandError::CommandFailed(
|
||||||
translation::java::COMMANDS_WHITELIST_ADD_FAILED,
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_WHITELIST_ADD_FAILED,
|
translation::java::COMMANDS_WHITELIST_ADD_FAILED,
|
||||||
&[],
|
translation::bedrock::COMMANDS_ALLOWLIST_ADD_FAILED
|
||||||
)))
|
),
|
||||||
|
))
|
||||||
} else {
|
} else {
|
||||||
Ok(successes)
|
Ok(successes)
|
||||||
}
|
}
|
||||||
@@ -261,10 +257,10 @@ impl CommandExecutor for RemoveExecutor {
|
|||||||
if let Some(i) = i {
|
if let Some(i) = i {
|
||||||
whitelist.whitelist.remove(i);
|
whitelist.whitelist.remove(i);
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_WHITELIST_REMOVE_SUCCESS,
|
translation::java::COMMANDS_WHITELIST_REMOVE_SUCCESS,
|
||||||
translation::java::COMMANDS_WHITELIST_REMOVE_SUCCESS,
|
translation::bedrock::COMMANDS_ALLOWLIST_REMOVE_SUCCESS,
|
||||||
[TextComponent::text(player.name.clone())],
|
TextComponent::text(player.name.clone())
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
successes += 1;
|
successes += 1;
|
||||||
@@ -277,11 +273,12 @@ impl CommandExecutor for RemoveExecutor {
|
|||||||
kick_non_whitelisted_players(server).await;
|
kick_non_whitelisted_players(server).await;
|
||||||
|
|
||||||
if successes == 0 {
|
if successes == 0 {
|
||||||
Err(CommandError::CommandFailed(TextComponent::translate_cross(
|
Err(CommandError::CommandFailed(
|
||||||
translation::java::COMMANDS_WHITELIST_REMOVE_FAILED,
|
pumpkin_macros::translate_cross!(
|
||||||
translation::java::COMMANDS_WHITELIST_REMOVE_FAILED,
|
translation::java::COMMANDS_WHITELIST_REMOVE_FAILED,
|
||||||
&[],
|
translation::bedrock::COMMANDS_ALLOWLIST_REMOVE_FAILED
|
||||||
)))
|
),
|
||||||
|
))
|
||||||
} else {
|
} else {
|
||||||
Ok(successes)
|
Ok(successes)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
use pumpkin_data::translation;
|
||||||
use pumpkin_util::{math::vector2::Vector2, text::TextComponent};
|
use pumpkin_util::{math::vector2::Vector2, text::TextComponent};
|
||||||
|
|
||||||
use crate::command::{
|
use crate::command::{
|
||||||
@@ -16,8 +17,6 @@ const NAMES: [&str; 1] = ["worldborder"];
|
|||||||
|
|
||||||
const DESCRIPTION: &str = "Worldborder command.";
|
const DESCRIPTION: &str = "Worldborder command.";
|
||||||
|
|
||||||
const NOTHING_CHANGED_EXCEPTION: &str = "commands.worldborder.set.failed.nochange";
|
|
||||||
|
|
||||||
const fn distance_consumer() -> BoundedNumArgumentConsumer<f64> {
|
const fn distance_consumer() -> BoundedNumArgumentConsumer<f64> {
|
||||||
BoundedNumArgumentConsumer::new().min(0.0).name("distance")
|
BoundedNumArgumentConsumer::new().min(0.0).name("distance")
|
||||||
}
|
}
|
||||||
@@ -59,10 +58,10 @@ impl CommandExecutor for GetExecutor {
|
|||||||
|
|
||||||
let diameter = border.new_diameter.round() as i32;
|
let diameter = border.new_diameter.round() as i32;
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
"commands.worldborder.get",
|
translation::java::COMMANDS_WORLDBORDER_GET,
|
||||||
"commands.worldborder.get",
|
translation::bedrock::COMMANDS_WORLDBORDER_GET_SUCCESS,
|
||||||
[TextComponent::text(diameter.to_string())],
|
TextComponent::text(diameter.to_string())
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
@@ -96,22 +95,24 @@ impl CommandExecutor for SetExecutor {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (distance - border.new_diameter).abs() < f64::EPSILON {
|
if (distance - border.new_diameter).abs() < f64::EPSILON {
|
||||||
return Err(CommandError::CommandFailed(TextComponent::translate_cross(
|
return Err(CommandError::CommandFailed(
|
||||||
NOTHING_CHANGED_EXCEPTION,
|
pumpkin_macros::translate_cross!(
|
||||||
NOTHING_CHANGED_EXCEPTION,
|
translation::java::COMMANDS_WORLDBORDER_SET_FAILED_NOCHANGE,
|
||||||
[],
|
translation::bedrock::COMMANDS_WORLDBORDER_SET_SUCCESS
|
||||||
)));
|
),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let d = border.new_diameter;
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
"commands.worldborder.set.immediate",
|
translation::java::COMMANDS_WORLDBORDER_SET_IMMEDIATE,
|
||||||
"commands.worldborder.set.immediate",
|
translation::bedrock::COMMANDS_WORLDBORDER_SET_SUCCESS,
|
||||||
[TextComponent::text(format!("{distance:.1}"))],
|
TextComponent::text(format!("{distance:.1}")),
|
||||||
|
TextComponent::text(format!("{d:.1}"))
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
let d = border.new_diameter;
|
|
||||||
border.set_diameter(world, distance, None);
|
border.set_diameter(world, distance, None);
|
||||||
|
|
||||||
Ok((distance - d) as i32)
|
Ok((distance - d) as i32)
|
||||||
@@ -149,37 +150,37 @@ impl CommandExecutor for SetTimeExecutor {
|
|||||||
))));
|
))));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let old_dist = format!("{:.1}", border.new_diameter);
|
||||||
match distance.total_cmp(&border.new_diameter) {
|
match distance.total_cmp(&border.new_diameter) {
|
||||||
std::cmp::Ordering::Equal => {
|
std::cmp::Ordering::Equal => {
|
||||||
return Err(CommandError::CommandFailed(TextComponent::translate_cross(
|
return Err(CommandError::CommandFailed(
|
||||||
NOTHING_CHANGED_EXCEPTION,
|
pumpkin_macros::translate_cross!(
|
||||||
NOTHING_CHANGED_EXCEPTION,
|
translation::java::COMMANDS_WORLDBORDER_SET_FAILED_NOCHANGE,
|
||||||
[],
|
translation::bedrock::COMMANDS_WORLDBORDER_SET_SUCCESS
|
||||||
)));
|
),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
std::cmp::Ordering::Less => {
|
std::cmp::Ordering::Less => {
|
||||||
let dist = format!("{distance:.1}");
|
let dist = format!("{distance:.1}");
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
"commands.worldborder.set.shrink",
|
translation::java::COMMANDS_WORLDBORDER_SET_SHRINK,
|
||||||
"commands.worldborder.set.shrink",
|
translation::bedrock::COMMANDS_WORLDBORDER_SETSLOWLY_SHRINK_SUCCESS,
|
||||||
[
|
TextComponent::text(dist),
|
||||||
TextComponent::text(dist),
|
TextComponent::text(old_dist),
|
||||||
TextComponent::text(time.to_string()),
|
TextComponent::text(time.to_string())
|
||||||
],
|
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
}
|
}
|
||||||
std::cmp::Ordering::Greater => {
|
std::cmp::Ordering::Greater => {
|
||||||
let dist = format!("{distance:.1}");
|
let dist = format!("{distance:.1}");
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
"commands.worldborder.set.grow",
|
translation::java::COMMANDS_WORLDBORDER_SET_GROW,
|
||||||
"commands.worldborder.set.grow",
|
translation::bedrock::COMMANDS_WORLDBORDER_SETSLOWLY_GROW_SUCCESS,
|
||||||
[
|
TextComponent::text(dist),
|
||||||
TextComponent::text(dist),
|
TextComponent::text(old_dist),
|
||||||
TextComponent::text(time.to_string()),
|
TextComponent::text(time.to_string())
|
||||||
],
|
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
}
|
}
|
||||||
@@ -218,21 +219,24 @@ impl CommandExecutor for AddExecutor {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if distance_add == 0.0 {
|
if distance_add == 0.0 {
|
||||||
return Err(CommandError::CommandFailed(TextComponent::translate_cross(
|
return Err(CommandError::CommandFailed(
|
||||||
NOTHING_CHANGED_EXCEPTION,
|
pumpkin_macros::translate_cross!(
|
||||||
NOTHING_CHANGED_EXCEPTION,
|
translation::java::COMMANDS_WORLDBORDER_SET_FAILED_NOCHANGE,
|
||||||
[],
|
translation::bedrock::COMMANDS_WORLDBORDER_SET_SUCCESS
|
||||||
)));
|
),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
let distance = border.new_diameter + distance_add;
|
let distance = border.new_diameter + distance_add;
|
||||||
|
|
||||||
let dist = format!("{distance:.1}");
|
let dist = format!("{distance:.1}");
|
||||||
|
let old_dist = format!("{:.1}", border.new_diameter);
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
"commands.worldborder.set.immediate",
|
translation::java::COMMANDS_WORLDBORDER_SET_IMMEDIATE,
|
||||||
"commands.worldborder.set.immediate",
|
translation::bedrock::COMMANDS_WORLDBORDER_SET_SUCCESS,
|
||||||
[TextComponent::text(dist)],
|
TextComponent::text(dist),
|
||||||
|
TextComponent::text(old_dist)
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
border.set_diameter(world, distance, None);
|
border.set_diameter(world, distance, None);
|
||||||
@@ -273,6 +277,7 @@ impl CommandExecutor for AddTimeExecutor {
|
|||||||
|
|
||||||
let distance = distance_add + border.new_diameter;
|
let distance = distance_add + border.new_diameter;
|
||||||
|
|
||||||
|
let old_dist = format!("{:.1}", border.new_diameter);
|
||||||
match distance.total_cmp(&border.new_diameter) {
|
match distance.total_cmp(&border.new_diameter) {
|
||||||
std::cmp::Ordering::Equal => {
|
std::cmp::Ordering::Equal => {
|
||||||
return Err(CommandError::CommandFailed(TextComponent::text(format!(
|
return Err(CommandError::CommandFailed(TextComponent::text(format!(
|
||||||
@@ -283,26 +288,24 @@ impl CommandExecutor for AddTimeExecutor {
|
|||||||
std::cmp::Ordering::Less => {
|
std::cmp::Ordering::Less => {
|
||||||
let dist = format!("{distance:.1}");
|
let dist = format!("{distance:.1}");
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
"commands.worldborder.set.shrink",
|
translation::java::COMMANDS_WORLDBORDER_SET_SHRINK,
|
||||||
"commands.worldborder.set.shrink",
|
translation::bedrock::COMMANDS_WORLDBORDER_SETSLOWLY_SHRINK_SUCCESS,
|
||||||
[
|
TextComponent::text(dist),
|
||||||
TextComponent::text(dist),
|
TextComponent::text(old_dist),
|
||||||
TextComponent::text(time.to_string()),
|
TextComponent::text(time.to_string())
|
||||||
],
|
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
}
|
}
|
||||||
std::cmp::Ordering::Greater => {
|
std::cmp::Ordering::Greater => {
|
||||||
let dist = format!("{distance:.1}");
|
let dist = format!("{distance:.1}");
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
"commands.worldborder.set.grow",
|
translation::java::COMMANDS_WORLDBORDER_SET_GROW,
|
||||||
"commands.worldborder.set.grow",
|
translation::bedrock::COMMANDS_WORLDBORDER_SETSLOWLY_GROW_SUCCESS,
|
||||||
[
|
TextComponent::text(dist),
|
||||||
TextComponent::text(dist),
|
TextComponent::text(old_dist),
|
||||||
TextComponent::text(time.to_string()),
|
TextComponent::text(time.to_string())
|
||||||
],
|
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
}
|
}
|
||||||
@@ -335,13 +338,11 @@ impl CommandExecutor for CenterExecutor {
|
|||||||
let Vector2 { x, y } = Position2DArgumentConsumer.find_arg_default_name(args)?;
|
let Vector2 { x, y } = Position2DArgumentConsumer.find_arg_default_name(args)?;
|
||||||
|
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
"commands.worldborder.center.success",
|
translation::java::COMMANDS_WORLDBORDER_CENTER_SUCCESS,
|
||||||
"commands.worldborder.center.success",
|
translation::bedrock::COMMANDS_WORLDBORDER_CENTER_SUCCESS,
|
||||||
[
|
TextComponent::text(format!("{x:.2}")),
|
||||||
TextComponent::text(format!("{x:.2}")),
|
TextComponent::text(format!("{y:.2}"))
|
||||||
TextComponent::text(format!("{y:.2}")),
|
|
||||||
],
|
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
border.set_center(world, x, y);
|
border.set_center(world, x, y);
|
||||||
@@ -376,19 +377,22 @@ impl CommandExecutor for DamageAmountExecutor {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (damage_per_block - border.damage_per_block).abs() < f32::EPSILON {
|
if (damage_per_block - border.damage_per_block).abs() < f32::EPSILON {
|
||||||
return Err(CommandError::CommandFailed(TextComponent::translate_cross(
|
return Err(CommandError::CommandFailed(
|
||||||
"commands.worldborder.damage.amount.failed",
|
pumpkin_macros::translate_cross!(
|
||||||
"commands.worldborder.damage.amount.failed",
|
translation::java::COMMANDS_WORLDBORDER_DAMAGE_AMOUNT_FAILED,
|
||||||
[],
|
translation::bedrock::COMMANDS_WORLDBORDER_DAMAGE_AMOUNT_SUCCESS
|
||||||
)));
|
),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
let damage = format!("{damage_per_block:.2}");
|
let damage = format!("{damage_per_block:.2}");
|
||||||
|
let old_damage = format!("{:.2}", border.damage_per_block);
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
"commands.worldborder.damage.amount.success",
|
translation::java::COMMANDS_WORLDBORDER_DAMAGE_AMOUNT_SUCCESS,
|
||||||
"commands.worldborder.damage.amount.success",
|
translation::bedrock::COMMANDS_WORLDBORDER_DAMAGE_AMOUNT_SUCCESS,
|
||||||
[TextComponent::text(damage)],
|
TextComponent::text(damage),
|
||||||
|
TextComponent::text(old_damage)
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
border.damage_per_block = damage_per_block;
|
border.damage_per_block = damage_per_block;
|
||||||
@@ -422,19 +426,22 @@ impl CommandExecutor for DamageBufferExecutor {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (buffer - border.buffer).abs() < f32::EPSILON {
|
if (buffer - border.buffer).abs() < f32::EPSILON {
|
||||||
return Err(CommandError::CommandFailed(TextComponent::translate_cross(
|
return Err(CommandError::CommandFailed(
|
||||||
"commands.worldborder.damage.amount.failed",
|
pumpkin_macros::translate_cross!(
|
||||||
"commands.worldborder.damage.amount.failed",
|
translation::java::COMMANDS_WORLDBORDER_DAMAGE_BUFFER_FAILED,
|
||||||
[],
|
translation::bedrock::COMMANDS_WORLDBORDER_DAMAGE_BUFFER_SUCCESS
|
||||||
)));
|
),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
let buf = format!("{buffer:.2}");
|
let buf = format!("{buffer:.2}");
|
||||||
|
let old_buf = format!("{:.2}", border.buffer);
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
"commands.worldborder.damage.buffer.success",
|
translation::java::COMMANDS_WORLDBORDER_DAMAGE_BUFFER_SUCCESS,
|
||||||
"commands.worldborder.damage.buffer.success",
|
translation::bedrock::COMMANDS_WORLDBORDER_DAMAGE_BUFFER_SUCCESS,
|
||||||
[TextComponent::text(buf)],
|
TextComponent::text(buf),
|
||||||
|
TextComponent::text(old_buf)
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
border.buffer = buffer;
|
border.buffer = buffer;
|
||||||
@@ -468,18 +475,20 @@ impl CommandExecutor for WarningDistanceExecutor {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if distance == border.warning_blocks {
|
if distance == border.warning_blocks {
|
||||||
return Err(CommandError::CommandFailed(TextComponent::translate_cross(
|
return Err(CommandError::CommandFailed(
|
||||||
"commands.worldborder.warning.distance.failed",
|
pumpkin_macros::translate_cross!(
|
||||||
"commands.worldborder.warning.distance.failed",
|
translation::java::COMMANDS_WORLDBORDER_WARNING_DISTANCE_FAILED,
|
||||||
[],
|
translation::bedrock::COMMANDS_WORLDBORDER_WARNING_DISTANCE_SUCCESS
|
||||||
)));
|
),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
"commands.worldborder.warning.distance.success",
|
translation::java::COMMANDS_WORLDBORDER_WARNING_DISTANCE_SUCCESS,
|
||||||
"commands.worldborder.warning.distance.success",
|
translation::bedrock::COMMANDS_WORLDBORDER_WARNING_DISTANCE_SUCCESS,
|
||||||
[TextComponent::text(distance.to_string())],
|
TextComponent::text(distance.to_string()),
|
||||||
|
TextComponent::text(border.warning_blocks.to_string())
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
border.set_warning_distance(world, distance);
|
border.set_warning_distance(world, distance);
|
||||||
@@ -513,18 +522,20 @@ impl CommandExecutor for WarningTimeExecutor {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if time == border.warning_time {
|
if time == border.warning_time {
|
||||||
return Err(CommandError::CommandFailed(TextComponent::translate_cross(
|
return Err(CommandError::CommandFailed(
|
||||||
"commands.worldborder.warning.time.failed",
|
pumpkin_macros::translate_cross!(
|
||||||
"commands.worldborder.warning.time.failed",
|
translation::java::COMMANDS_WORLDBORDER_WARNING_TIME_FAILED,
|
||||||
[],
|
translation::bedrock::COMMANDS_WORLDBORDER_WARNING_TIME_SUCCESS
|
||||||
)));
|
),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
sender
|
sender
|
||||||
.send_message(TextComponent::translate_cross(
|
.send_message(pumpkin_macros::translate_cross!(
|
||||||
"commands.worldborder.warning.time.success",
|
translation::java::COMMANDS_WORLDBORDER_WARNING_TIME_SUCCESS,
|
||||||
"commands.worldborder.warning.time.success",
|
translation::bedrock::COMMANDS_WORLDBORDER_WARNING_TIME_SUCCESS,
|
||||||
[TextComponent::text(time.to_string())],
|
TextComponent::text(time.to_string()),
|
||||||
|
TextComponent::text(border.warning_time.to_string())
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
border.set_warning_delay(world, time);
|
border.set_warning_delay(world, time);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#![deny(clippy::unwrap_used)]
|
#![deny(clippy::unwrap_used)]
|
||||||
#![cfg_attr(test, allow(clippy::unwrap_used, clippy::expect_used, clippy::panic))]
|
#![cfg_attr(test, allow(clippy::unwrap_used, clippy::expect_used, clippy::panic))]
|
||||||
// Not warn event sending macros
|
// Not warn event sending macros
|
||||||
#![allow(unused_labels)]
|
#![allow(unused_labels, deprecated)]
|
||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate pumpkin_macros;
|
extern crate pumpkin_macros;
|
||||||
|
|||||||
@@ -250,9 +250,9 @@ impl JavaClient {
|
|||||||
{
|
{
|
||||||
self.wait_for_keep_alive.store(false, Ordering::Relaxed);
|
self.wait_for_keep_alive.store(false, Ordering::Relaxed);
|
||||||
} else {
|
} else {
|
||||||
self.kick(TextComponent::translate(
|
self.kick(pumpkin_macros::translate_cross!(
|
||||||
translation::java::DISCONNECT_TIMEOUT,
|
translation::java::DISCONNECT_TIMEOUT,
|
||||||
[],
|
translation::bedrock::DISCONNECT_TIMEOUT
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -198,7 +198,7 @@ impl JavaClient {
|
|||||||
_ = keep_alive_interval.tick() => {
|
_ = keep_alive_interval.tick() => {
|
||||||
// If the client never responded to the LAST keep-alive, they timed out.
|
// If the client never responded to the LAST keep-alive, they timed out.
|
||||||
if self.wait_for_keep_alive.load(Ordering::Relaxed) {
|
if self.wait_for_keep_alive.load(Ordering::Relaxed) {
|
||||||
self.kick(TextComponent::translate(translation::java::DISCONNECT_TIMEOUT, [])).await;
|
self.kick(pumpkin_macros::translate_cross!(translation::java::DISCONNECT_TIMEOUT, translation::bedrock::DISCONNECT_TIMEOUT)).await;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2193,9 +2193,9 @@ impl JavaClient {
|
|||||||
);
|
);
|
||||||
self.wait_for_keep_alive.store(false, Ordering::Relaxed);
|
self.wait_for_keep_alive.store(false, Ordering::Relaxed);
|
||||||
} else {
|
} else {
|
||||||
self.kick(TextComponent::translate(
|
self.kick(pumpkin_macros::translate_cross!(
|
||||||
translation::java::DISCONNECT_TIMEOUT,
|
translation::java::DISCONNECT_TIMEOUT,
|
||||||
[],
|
translation::bedrock::DISCONNECT_TIMEOUT
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,5 +27,10 @@ syn = { version = "3.0", features = ["full", "extra-traits"] }
|
|||||||
pumpkin-util = { path = "../../crates/pumpkin-util", features = ["codegen"] }
|
pumpkin-util = { path = "../../crates/pumpkin-util", features = ["codegen"] }
|
||||||
pumpkin-nbt = { path = "../../crates/pumpkin-nbt" }
|
pumpkin-nbt = { path = "../../crates/pumpkin-nbt" }
|
||||||
|
|
||||||
[lints]
|
[lints.clippy]
|
||||||
workspace = true
|
expect_used = "allow"
|
||||||
|
unwrap_used = "allow"
|
||||||
|
panic = "allow"
|
||||||
|
indexing_slicing = "allow"
|
||||||
|
pedantic = { level = "allow", priority = -1 }
|
||||||
|
all = { level = "allow", priority = -1 }
|
||||||
|
|||||||
@@ -314,6 +314,7 @@ pub fn build() -> TokenStream {
|
|||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
#[allow(deprecated)]
|
||||||
pub fn get_fullname(&self, level: i32) -> TextComponent {
|
pub fn get_fullname(&self, level: i32) -> TextComponent {
|
||||||
let mut ret = TextComponent::translate(self.description, []).color_named(
|
let mut ret = TextComponent::translate(self.description, []).color_named(
|
||||||
if self.has_tag(&EnchantmentTag::MINECRAFT_CURSE) {
|
if self.has_tag(&EnchantmentTag::MINECRAFT_CURSE) {
|
||||||
|
|||||||
@@ -1614,13 +1614,20 @@ pub fn build() -> TokenStream {
|
|||||||
#constants
|
#constants
|
||||||
|
|
||||||
#[must_use]
|
#[must_use]
|
||||||
|
#[allow(deprecated)]
|
||||||
pub fn translated_name(&self) -> TextComponent {
|
pub fn translated_name(&self) -> TextComponent {
|
||||||
TextComponent::translate(
|
let name = self
|
||||||
self.components
|
.components
|
||||||
.iter()
|
.iter()
|
||||||
.find_map(|(id, data)| (id == &ItemName).then(|| data.as_any().downcast_ref::<ItemNameImpl>().unwrap().name)).unwrap(),
|
.find_map(|(id, data)| {
|
||||||
&[],
|
if id == &ItemName {
|
||||||
)
|
data.as_any().downcast_ref::<ItemNameImpl>().map(|n| n.name)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.unwrap_or(self.registry_key);
|
||||||
|
TextComponent::translate(name, &[])
|
||||||
}
|
}
|
||||||
|
|
||||||
#[doc = "Try to parse an item from a resource location string."]
|
#[doc = "Try to parse an item from a resource location string."]
|
||||||
|
|||||||
@@ -9,8 +9,10 @@ pub fn build() -> TokenStream {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
let mut java_constants = TokenStream::new();
|
let mut java_constants = TokenStream::new();
|
||||||
|
let mut java_match_arms = TokenStream::new();
|
||||||
for (name, value) in &java_json {
|
for (name, value) in &java_json {
|
||||||
let ident = to_valid_ident(name);
|
let ident = to_valid_ident(name);
|
||||||
|
let ident_str = ident.to_string();
|
||||||
let doc = if !value.is_empty() {
|
let doc = if !value.is_empty() {
|
||||||
quote!(#[doc = #value])
|
quote!(#[doc = #value])
|
||||||
} else {
|
} else {
|
||||||
@@ -20,11 +22,15 @@ pub fn build() -> TokenStream {
|
|||||||
#doc
|
#doc
|
||||||
pub const #ident: &str = #name;
|
pub const #ident: &str = #name;
|
||||||
});
|
});
|
||||||
|
java_match_arms.extend(quote! {
|
||||||
|
#ident_str => Some(#ident),
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
let bedrock_content =
|
let bedrock_content =
|
||||||
fs::read_to_string("../../assets/en_us_bedrock.lang").expect("en_us_bedrock is missing");
|
fs::read_to_string("../../assets/en_us_bedrock.lang").expect("en_us_bedrock is missing");
|
||||||
let mut bedrock_constants = TokenStream::new();
|
let mut bedrock_constants = TokenStream::new();
|
||||||
|
let mut bedrock_match_arms = TokenStream::new();
|
||||||
|
|
||||||
for line in bedrock_content.lines() {
|
for line in bedrock_content.lines() {
|
||||||
let line = line.trim();
|
let line = line.trim();
|
||||||
@@ -36,6 +42,7 @@ pub fn build() -> TokenStream {
|
|||||||
let name = name.trim();
|
let name = name.trim();
|
||||||
let value = value.trim();
|
let value = value.trim();
|
||||||
let ident = to_valid_ident(name);
|
let ident = to_valid_ident(name);
|
||||||
|
let ident_str = ident.to_string();
|
||||||
|
|
||||||
let doc = if !value.is_empty() {
|
let doc = if !value.is_empty() {
|
||||||
quote!(#[doc = #value])
|
quote!(#[doc = #value])
|
||||||
@@ -46,6 +53,32 @@ pub fn build() -> TokenStream {
|
|||||||
#doc
|
#doc
|
||||||
pub const #ident: &str = #name;
|
pub const #ident: &str = #name;
|
||||||
});
|
});
|
||||||
|
bedrock_match_arms.extend(quote! {
|
||||||
|
#ident_str => Some(#ident),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut java_value_match_arms = TokenStream::new();
|
||||||
|
for (name, value) in &java_json {
|
||||||
|
java_value_match_arms.extend(quote! {
|
||||||
|
#name => Some(#value),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut bedrock_value_match_arms = TokenStream::new();
|
||||||
|
for line in bedrock_content.lines() {
|
||||||
|
let line = line.trim();
|
||||||
|
if line.is_empty() || line.starts_with('#') || line.starts_with('/') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some((name, value)) = line.split_once('=') {
|
||||||
|
let name = name.trim();
|
||||||
|
let value = value.trim();
|
||||||
|
bedrock_value_match_arms.extend(quote! {
|
||||||
|
#name => Some(#value),
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,9 +87,33 @@ pub fn build() -> TokenStream {
|
|||||||
#![allow(clippy::doc_markdown)]
|
#![allow(clippy::doc_markdown)]
|
||||||
pub mod java {
|
pub mod java {
|
||||||
#java_constants
|
#java_constants
|
||||||
|
pub fn get(const_name: &str) -> Option<&'static str> {
|
||||||
|
match const_name {
|
||||||
|
#java_match_arms
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub fn get_value(key: &str) -> Option<&'static str> {
|
||||||
|
match key {
|
||||||
|
#java_value_match_arms
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
pub mod bedrock {
|
pub mod bedrock {
|
||||||
#bedrock_constants
|
#bedrock_constants
|
||||||
|
pub fn get(const_name: &str) -> Option<&'static str> {
|
||||||
|
match const_name {
|
||||||
|
#bedrock_match_arms
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub fn get_value(key: &str) -> Option<&'static str> {
|
||||||
|
match key {
|
||||||
|
#bedrock_value_match_arms
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user