mirror of
https://github.com/Pumpkin-MC/Pumpkin.git
synced 2026-08-30 20:14:23 +00:00
feat(plugin-api): added PlayerToggleFlightEvent
This commit is contained in:
120
Cargo.lock
generated
120
Cargo.lock
generated
@@ -146,9 +146,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
|
||||
|
||||
[[package]]
|
||||
name = "axum"
|
||||
version = "0.8.8"
|
||||
version = "0.8.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8"
|
||||
checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90"
|
||||
dependencies = [
|
||||
"axum-core",
|
||||
"bytes",
|
||||
@@ -219,9 +219,9 @@ checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "2.11.0"
|
||||
version = "2.11.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af"
|
||||
checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3"
|
||||
|
||||
[[package]]
|
||||
name = "bitmaps"
|
||||
@@ -357,9 +357,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.2.59"
|
||||
version = "1.2.60"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b7a4d3ec6524d28a329fc53654bbadc9bdd7b0431f5d65f1a56ffb28a1ee5283"
|
||||
checksum = "43c5703da9466b66a946814e1adf53ea2c90f10063b86290cc9eb67ce3478a20"
|
||||
dependencies = [
|
||||
"find-msvc-tools",
|
||||
"jobserver",
|
||||
@@ -402,7 +402,7 @@ checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cpufeatures 0.3.0",
|
||||
"rand_core 0.10.0",
|
||||
"rand_core 0.10.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -945,16 +945,16 @@ dependencies = [
|
||||
"cpubits",
|
||||
"ctutils",
|
||||
"num-traits",
|
||||
"rand_core 0.10.0",
|
||||
"rand_core 0.10.1",
|
||||
"serdect",
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crypto-common"
|
||||
version = "0.1.7"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
|
||||
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
|
||||
dependencies = [
|
||||
"generic-array",
|
||||
"typenum",
|
||||
@@ -977,7 +977,7 @@ checksum = "21f41f23de7d24cdbda7f0c4d9c0351f99a4ceb258ef30e5c1927af8987ffe5a"
|
||||
dependencies = [
|
||||
"crypto-bigint 0.7.3",
|
||||
"libm",
|
||||
"rand_core 0.10.0",
|
||||
"rand_core 0.10.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1051,7 +1051,7 @@ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
|
||||
dependencies = [
|
||||
"block-buffer 0.10.4",
|
||||
"const-oid 0.9.6",
|
||||
"crypto-common 0.1.7",
|
||||
"crypto-common 0.1.6",
|
||||
"subtle",
|
||||
]
|
||||
|
||||
@@ -1401,9 +1401,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "generic-array"
|
||||
version = "0.14.7"
|
||||
version = "0.14.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
|
||||
checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2"
|
||||
dependencies = [
|
||||
"typenum",
|
||||
"version_check",
|
||||
@@ -1442,16 +1442,16 @@ dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"r-efi 6.0.0",
|
||||
"rand_core 0.10.0",
|
||||
"rand_core 0.10.1",
|
||||
"wasip2",
|
||||
"wasip3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gimli"
|
||||
version = "0.33.1"
|
||||
version = "0.33.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "19e16c5073773ccf057c282be832a59ee53ef5ff98db3aeff7f8314f52ffc196"
|
||||
checksum = "0bf7f043f89559805f8c7cacc432749b2fa0d0a0a9ee46ce47164ed5ba7f126c"
|
||||
dependencies = [
|
||||
"fnv",
|
||||
"hashbrown 0.16.1",
|
||||
@@ -1977,9 +1977,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "js-sys"
|
||||
version = "0.3.94"
|
||||
version = "0.3.95"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2e04e2ef80ce82e13552136fabeef8a5ed1f985a96805761cbb9a2c34e7664d9"
|
||||
checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca"
|
||||
dependencies = [
|
||||
"once_cell",
|
||||
"wasm-bindgen",
|
||||
@@ -2005,9 +2005,9 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.184"
|
||||
version = "0.2.185"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af"
|
||||
checksum = "52ff2c0fe9bc6cb6b14a0592c2ff4fa9ceb83eea9db979b0487cd054946a2b8f"
|
||||
|
||||
[[package]]
|
||||
name = "libloading"
|
||||
@@ -2027,9 +2027,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
|
||||
|
||||
[[package]]
|
||||
name = "libredox"
|
||||
version = "0.1.15"
|
||||
version = "0.1.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7ddbf48fd451246b1f8c2610bd3b4ac0cc6e149d89832867093ab69a17194f08"
|
||||
checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
@@ -2582,9 +2582,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pkg-config"
|
||||
version = "0.3.32"
|
||||
version = "0.3.33"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
|
||||
checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e"
|
||||
|
||||
[[package]]
|
||||
name = "postcard"
|
||||
@@ -2892,7 +2892,7 @@ dependencies = [
|
||||
"postcard",
|
||||
"tracing",
|
||||
"tracing-serde-structured",
|
||||
"wit-bindgen 0.55.0",
|
||||
"wit-bindgen 0.56.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3028,7 +3028,7 @@ checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207"
|
||||
dependencies = [
|
||||
"chacha20",
|
||||
"getrandom 0.4.2",
|
||||
"rand_core 0.10.0",
|
||||
"rand_core 0.10.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3052,9 +3052,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.10.0"
|
||||
version = "0.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba"
|
||||
checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69"
|
||||
|
||||
[[package]]
|
||||
name = "rand_xoshiro"
|
||||
@@ -3067,9 +3067,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rayon"
|
||||
version = "1.11.0"
|
||||
version = "1.12.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f"
|
||||
checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d"
|
||||
dependencies = [
|
||||
"either",
|
||||
"rayon-core",
|
||||
@@ -3184,7 +3184,7 @@ dependencies = [
|
||||
"digest 0.11.2",
|
||||
"pkcs1",
|
||||
"pkcs8 0.11.0-rc.11",
|
||||
"rand_core 0.10.0",
|
||||
"rand_core 0.10.1",
|
||||
"signature 3.0.0-rc.10",
|
||||
"spki 0.8.0",
|
||||
"zeroize",
|
||||
@@ -3259,9 +3259,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rustls"
|
||||
version = "0.23.37"
|
||||
version = "0.23.38"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4"
|
||||
checksum = "69f9466fb2c14ea04357e91413efb882e2a6d4a406e625449bc0a5d360d53a21"
|
||||
dependencies = [
|
||||
"log",
|
||||
"once_cell",
|
||||
@@ -3283,9 +3283,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rustls-webpki"
|
||||
version = "0.103.10"
|
||||
version = "0.103.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef"
|
||||
checksum = "8279bb85272c9f10811ae6a6c547ff594d6a7f3c6c6b02ee9726d1d0dcfcdd06"
|
||||
dependencies = [
|
||||
"ring",
|
||||
"rustls-pki-types",
|
||||
@@ -3534,7 +3534,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7f1880df446116126965eeec169136b2e0251dba37c6223bcc819569550edea3"
|
||||
dependencies = [
|
||||
"digest 0.11.2",
|
||||
"rand_core 0.10.0",
|
||||
"rand_core 0.10.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3729,7 +3729,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
|
||||
dependencies = [
|
||||
"fastrand",
|
||||
"getrandom 0.3.4",
|
||||
"getrandom 0.4.2",
|
||||
"once_cell",
|
||||
"rustix 1.1.4",
|
||||
"windows-sys 0.61.2",
|
||||
@@ -3848,9 +3848,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tokio"
|
||||
version = "1.51.1"
|
||||
version = "1.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f66bf9585cda4b724d3e78ab34b73fb2bbaba9011b9bfdf69dc836382ea13b8c"
|
||||
checksum = "a91135f59b1cbf38c91e73cf3386fca9bb77915c45ce2771460c9d92f0f3d776"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"libc",
|
||||
@@ -4310,9 +4310,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen"
|
||||
version = "0.2.117"
|
||||
version = "0.2.118"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0551fc1bb415591e3372d0bc4780db7e587d84e2a7e79da121051c5c4b89d0b0"
|
||||
checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"once_cell",
|
||||
@@ -4323,9 +4323,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro"
|
||||
version = "0.2.117"
|
||||
version = "0.2.118"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7fbdf9a35adf44786aecd5ff89b4563a90325f9da0923236f6104e603c7e86be"
|
||||
checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"wasm-bindgen-macro-support",
|
||||
@@ -4333,9 +4333,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro-support"
|
||||
version = "0.2.117"
|
||||
version = "0.2.118"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dca9693ef2bab6d4e6707234500350d8dad079eb508dca05530c85dc3a529ff2"
|
||||
checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904"
|
||||
dependencies = [
|
||||
"bumpalo",
|
||||
"proc-macro2",
|
||||
@@ -4346,9 +4346,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-shared"
|
||||
version = "0.2.117"
|
||||
version = "0.2.118"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "39129a682a6d2d841b6c429d0c51e5cb0ed1a03829d8b3d1e69a011e62cb3d3b"
|
||||
checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
@@ -5141,12 +5141,12 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "wit-bindgen"
|
||||
version = "0.55.0"
|
||||
version = "0.56.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6870386de1813a61406d88749d5897484e2f6fe90a39408a6a94e160d8c72378"
|
||||
checksum = "7607d30e7e5e8fd5a0695f7cb8b2128829e0bf9dca7a1fe8c4d6ed3ca1058fce"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"wit-bindgen-rust-macro 0.55.0",
|
||||
"wit-bindgen-rust-macro 0.56.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -5162,9 +5162,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "wit-bindgen-core"
|
||||
version = "0.55.0"
|
||||
version = "0.56.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4779c97d3b9dda56600c3404355d404f8c6567fae0c4d8dfeb92f6e9b2c4c8c3"
|
||||
checksum = "fda3a4ce47c08d27f575d451a60102bab5251776abd0a7a323d1f038eb6339ab"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"heck",
|
||||
@@ -5189,9 +5189,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "wit-bindgen-rust"
|
||||
version = "0.55.0"
|
||||
version = "0.56.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a89a98e0efe034f47f5cf86fa8aeb5d6d7175bade32bbba476aeba29541fed9"
|
||||
checksum = "920a1c8c0f89397431db4900a7bf7c511b78e1b7068289fe812dc76e993f1491"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"heck",
|
||||
@@ -5199,7 +5199,7 @@ dependencies = [
|
||||
"prettyplease",
|
||||
"syn",
|
||||
"wasm-metadata 0.246.2",
|
||||
"wit-bindgen-core 0.55.0",
|
||||
"wit-bindgen-core 0.56.0",
|
||||
"wit-component 0.246.2",
|
||||
]
|
||||
|
||||
@@ -5220,9 +5220,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "wit-bindgen-rust-macro"
|
||||
version = "0.55.0"
|
||||
version = "0.56.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b81978b3d68d12116ae8e5ef3d2125c4cb619ea30002ed20cb7549383f6fca9"
|
||||
checksum = "857a143d2373abfcd31ad946393efe775ed8c90a2a365ce73c61bf38f36a1000"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"macro-string",
|
||||
@@ -5230,8 +5230,8 @@ dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"wit-bindgen-core 0.55.0",
|
||||
"wit-bindgen-rust 0.55.0",
|
||||
"wit-bindgen-core 0.56.0",
|
||||
"wit-bindgen-rust 0.56.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
||||
@@ -90,17 +90,16 @@ debug = true
|
||||
strip = false
|
||||
|
||||
[workspace.dependencies]
|
||||
tokio = { version = "1.51", default-features = false }
|
||||
tokio = { version = "1.52", default-features = false }
|
||||
syn = { version = "2.0", default-features = false, features = ["printing"] }
|
||||
|
||||
|
||||
thiserror = "2.0"
|
||||
|
||||
bytes = "1.11"
|
||||
|
||||
# Concurrency/Parallelism and Synchronization
|
||||
futures = { version = "0.3", default-features = false, features = ["executor"] }
|
||||
rayon = "1.11"
|
||||
rayon = "1.12"
|
||||
crossbeam = "0.8"
|
||||
chrono = "0.4"
|
||||
|
||||
@@ -181,7 +180,7 @@ ureq = "3.3.0"
|
||||
|
||||
wasmtime = "43.0"
|
||||
wasmtime-wasi = "43.0"
|
||||
wit-bindgen = "0.55"
|
||||
wit-bindgen = "0.56"
|
||||
wasmparser = "0.246"
|
||||
|
||||
postcard = { version = "1.1", features = ["alloc"] }
|
||||
|
||||
@@ -16,6 +16,7 @@ pub mod player_login;
|
||||
pub mod player_move;
|
||||
pub mod player_permission_check;
|
||||
pub mod player_teleport;
|
||||
pub mod player_toggle_flight;
|
||||
pub mod player_toggle_sneak;
|
||||
pub mod player_toggle_sprint;
|
||||
|
||||
@@ -37,5 +38,6 @@ pub use player_login::*;
|
||||
pub use player_move::*;
|
||||
pub use player_permission_check::*;
|
||||
pub use player_teleport::*;
|
||||
pub use player_toggle_flight::*;
|
||||
pub use player_toggle_sneak::*;
|
||||
pub use player_toggle_sprint::*;
|
||||
|
||||
21
pumpkin-plugin-api/src/events/player/player_toggle_flight.rs
Normal file
21
pumpkin-plugin-api/src/events/player/player_toggle_flight.rs
Normal file
@@ -0,0 +1,21 @@
|
||||
use crate::wit::pumpkin::plugin::event::{Event, EventType, PlayerToggleFlightEventData};
|
||||
|
||||
use super::super::FromIntoEvent;
|
||||
|
||||
/// An event that occurs when a player toggles flight.
|
||||
pub struct PlayerToggleFlightEvent;
|
||||
impl FromIntoEvent for PlayerToggleFlightEvent {
|
||||
const EVENT_TYPE: EventType = EventType::PlayerToggleFlightEvent;
|
||||
type Data = PlayerToggleFlightEventData;
|
||||
|
||||
fn data_from_event(event: Event) -> Self::Data {
|
||||
match event {
|
||||
Event::PlayerToggleFlightEvent(data) => data,
|
||||
_ => panic!("unexpected event"),
|
||||
}
|
||||
}
|
||||
|
||||
fn data_into_event(data: Self::Data) -> Event {
|
||||
Event::PlayerToggleFlightEvent(data)
|
||||
}
|
||||
}
|
||||
@@ -161,6 +161,12 @@ interface event {
|
||||
cancelled: bool
|
||||
}
|
||||
|
||||
record player-toggle-flight-event-data {
|
||||
player: player,
|
||||
is-flying: bool,
|
||||
cancelled: bool
|
||||
}
|
||||
|
||||
record player-toggle-sprint-event-data {
|
||||
player: player,
|
||||
is-sprinting: bool,
|
||||
@@ -265,6 +271,7 @@ interface event {
|
||||
player-interact-unknown-entity-event,
|
||||
player-interact-event,
|
||||
player-toggle-sneak-event,
|
||||
player-toggle-flight-event,
|
||||
player-toggle-sprint-event,
|
||||
block-redstone-event,
|
||||
block-break-event,
|
||||
@@ -297,6 +304,7 @@ interface event {
|
||||
player-interact-unknown-entity-event(player-interact-unknown-entity-event-data),
|
||||
player-interact-event(player-interact-event-data),
|
||||
player-toggle-sneak-event(player-toggle-sneak-event-data),
|
||||
player-toggle-flight-event(player-toggle-flight-event-data),
|
||||
player-toggle-sprint-event(player-toggle-sprint-event-data),
|
||||
block-redstone-event(block-redstone-event-data),
|
||||
block-break-event(block-break-event-data),
|
||||
|
||||
@@ -521,7 +521,7 @@ impl BedrockClient {
|
||||
match packet.id {
|
||||
SPlayerAuthInput::PACKET_ID => {
|
||||
if let Ok(input_packet) = SPlayerAuthInput::read(reader) {
|
||||
self.player_pos_update(player, input_packet).await;
|
||||
self.player_pos_update(player, input_packet, server).await;
|
||||
}
|
||||
}
|
||||
SLoadingScreen::PACKET_ID => {
|
||||
|
||||
@@ -24,7 +24,10 @@ use pumpkin_util::{math::position::BlockPos, text::TextComponent};
|
||||
use crate::{
|
||||
entity::{EntityBase, player::Player},
|
||||
net::{DisconnectReason, bedrock::BedrockClient},
|
||||
plugin::player::{player_chat::PlayerChatEvent, player_command_send::PlayerCommandSendEvent},
|
||||
plugin::player::{
|
||||
player_chat::PlayerChatEvent, player_command_send::PlayerCommandSendEvent,
|
||||
player_toggle_flight_event::PlayerToggleFlightEvent,
|
||||
},
|
||||
server::{Server, seasonal_events},
|
||||
world::chunker::{self},
|
||||
};
|
||||
@@ -76,7 +79,12 @@ impl BedrockClient {
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn player_pos_update(&self, player: &Arc<Player>, packet: SPlayerAuthInput) {
|
||||
pub async fn player_pos_update(
|
||||
&self,
|
||||
player: &Arc<Player>,
|
||||
packet: SPlayerAuthInput,
|
||||
server: &Server,
|
||||
) {
|
||||
if !player.has_client_loaded() {
|
||||
return;
|
||||
}
|
||||
@@ -98,11 +106,35 @@ impl BedrockClient {
|
||||
}
|
||||
|
||||
if input_data.get(InputData::StartFlying) {
|
||||
player.abilities.lock().await.flying = true;
|
||||
player.send_abilities_update().await;
|
||||
let mut abilities = player.abilities.lock().await;
|
||||
if !abilities.flying {
|
||||
send_cancellable! {{
|
||||
server;
|
||||
PlayerToggleFlightEvent::new(player.clone(), true);
|
||||
'after: {
|
||||
abilities.flying = true;
|
||||
player.send_abilities_update().await;
|
||||
}
|
||||
'cancelled: {
|
||||
player.send_abilities_update().await;
|
||||
}
|
||||
}}
|
||||
}
|
||||
} else if input_data.get(InputData::StopFlying) {
|
||||
player.abilities.lock().await.flying = false;
|
||||
player.send_abilities_update().await;
|
||||
let mut abilities = player.abilities.lock().await;
|
||||
if abilities.flying {
|
||||
send_cancellable! {{
|
||||
server;
|
||||
PlayerToggleFlightEvent::new(player.clone(), false);
|
||||
'after: {
|
||||
abilities.flying = false;
|
||||
player.send_abilities_update().await;
|
||||
}
|
||||
'cancelled: {
|
||||
player.send_abilities_update().await;
|
||||
}
|
||||
}}
|
||||
}
|
||||
}
|
||||
|
||||
if input_data.get(InputData::StartSneaking) {
|
||||
|
||||
@@ -766,8 +766,12 @@ impl JavaClient {
|
||||
.await;
|
||||
}
|
||||
id if id == SPlayerAbilities::to_id(version) => {
|
||||
self.handle_player_abilities(player, SPlayerAbilities::read(payload, &version)?)
|
||||
.await;
|
||||
self.handle_player_abilities(
|
||||
player,
|
||||
SPlayerAbilities::read(payload, &version)?,
|
||||
server,
|
||||
)
|
||||
.await;
|
||||
}
|
||||
id if id == SPlayerAction::to_id(version) => {
|
||||
self.handle_player_action(player, SPlayerAction::read(payload, &version)?, server)
|
||||
|
||||
@@ -30,7 +30,9 @@ use crate::plugin::player::player_interact_entity_event::PlayerInteractEntityEve
|
||||
use crate::plugin::player::player_interact_event::{InteractAction, PlayerInteractEvent};
|
||||
use crate::plugin::player::player_interact_unknown_entity_event::PlayerInteractUnknownEntityEvent;
|
||||
use crate::plugin::player::player_move::PlayerMoveEvent;
|
||||
use crate::plugin::player::player_toggle_flight_event::PlayerToggleFlightEvent;
|
||||
use crate::plugin::player::player_toggle_sneak_event::PlayerToggleSneakEvent;
|
||||
|
||||
use crate::plugin::player::player_toggle_sprint_event::PlayerToggleSprintEvent;
|
||||
use crate::server::{Server, seasonal_events};
|
||||
use crate::world::{World, chunker};
|
||||
@@ -1970,17 +1972,29 @@ impl JavaClient {
|
||||
|
||||
pub async fn handle_player_abilities(
|
||||
&self,
|
||||
player: &Player,
|
||||
player: &Arc<Player>,
|
||||
player_abilities: SPlayerAbilities,
|
||||
server: &Server,
|
||||
) {
|
||||
let mut abilities = player.abilities.lock().await;
|
||||
|
||||
// Set the flying ability
|
||||
let flying = player_abilities.flags & 0x02 != 0 && abilities.allow_flying;
|
||||
if flying {
|
||||
player.living_entity.fall_distance.store(0.0);
|
||||
if abilities.flying != flying {
|
||||
send_cancellable! {{
|
||||
server;
|
||||
PlayerToggleFlightEvent::new(player.clone(), flying);
|
||||
'after: {
|
||||
if event.is_flying {
|
||||
player.living_entity.fall_distance.store(0.0);
|
||||
}
|
||||
abilities.flying = event.is_flying;
|
||||
}
|
||||
'cancelled: {
|
||||
player.send_abilities_update().await;
|
||||
}
|
||||
}}
|
||||
}
|
||||
abilities.flying = flying;
|
||||
}
|
||||
|
||||
pub async fn handle_play_ping_request(&self, request: SPlayPingRequest) {
|
||||
|
||||
@@ -17,6 +17,7 @@ pub mod player_login;
|
||||
pub mod player_move;
|
||||
pub mod player_permission_check;
|
||||
pub mod player_teleport;
|
||||
pub mod player_toggle_flight_event;
|
||||
pub mod player_toggle_sneak_event;
|
||||
pub mod player_toggle_sprint_event;
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
use pumpkin_macros::{Event, cancellable};
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::entity::player::Player;
|
||||
|
||||
use super::PlayerEvent;
|
||||
|
||||
/// An event that occurs when a player toggles their flight state.
|
||||
///
|
||||
/// This event contains the player and their new flight state.
|
||||
/// It is cancellable to prevent the flight state change.
|
||||
#[cancellable]
|
||||
#[derive(Event, Clone)]
|
||||
pub struct PlayerToggleFlightEvent {
|
||||
/// The player who toggled their flight state.
|
||||
pub player: Arc<Player>,
|
||||
|
||||
/// The new flight state of the player.
|
||||
pub is_flying: bool,
|
||||
}
|
||||
|
||||
impl PlayerToggleFlightEvent {
|
||||
/// Creates a new instance of `PlayerToggleFlightEvent`.
|
||||
///
|
||||
/// # Arguments
|
||||
/// - `player`: A reference to the player who toggled their flight state.
|
||||
/// - `is_flying`: The new flight state.
|
||||
///
|
||||
/// # Returns
|
||||
/// A new instance of `PlayerToggleFlightEvent`.
|
||||
pub const fn new(player: Arc<Player>, is_flying: bool) -> Self {
|
||||
Self {
|
||||
player,
|
||||
is_flying,
|
||||
cancelled: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl PlayerEvent for PlayerToggleFlightEvent {
|
||||
fn get_player(&self) -> &Arc<Player> {
|
||||
&self.player
|
||||
}
|
||||
}
|
||||
@@ -57,6 +57,7 @@ async fn register_player_event(
|
||||
player_join::PlayerJoinEvent, player_leave::PlayerLeaveEvent,
|
||||
player_login::PlayerLoginEvent, player_move::PlayerMoveEvent,
|
||||
player_permission_check::PlayerPermissionCheckEvent, player_teleport::PlayerTeleportEvent,
|
||||
player_toggle_flight_event::PlayerToggleFlightEvent,
|
||||
player_toggle_sneak_event::PlayerToggleSneakEvent,
|
||||
player_toggle_sprint_event::PlayerToggleSprintEvent,
|
||||
};
|
||||
@@ -140,6 +141,10 @@ async fn register_player_event(
|
||||
register_typed_event::<PlayerToggleSneakEvent>(resource, handler, priority, blocking)
|
||||
.await;
|
||||
}
|
||||
EventType::PlayerToggleFlightEvent => {
|
||||
register_typed_event::<PlayerToggleFlightEvent>(resource, handler, priority, blocking)
|
||||
.await;
|
||||
}
|
||||
EventType::PlayerToggleSprintEvent => {
|
||||
register_typed_event::<PlayerToggleSprintEvent>(resource, handler, priority, blocking)
|
||||
.await;
|
||||
|
||||
@@ -18,7 +18,8 @@ use crate::plugin::{
|
||||
PlayerInteractUnknownEntityEventData, PlayerItemHeldEventData, PlayerJoinEventData,
|
||||
PlayerLeaveEventData, PlayerLoginEventData, PlayerMoveEventData,
|
||||
PlayerPermissionCheckEventData, PlayerTeleportEventData,
|
||||
PlayerToggleSneakEventData, PlayerToggleSprintEventData,
|
||||
PlayerToggleFlightEventData, PlayerToggleSneakEventData,
|
||||
PlayerToggleSprintEventData,
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -41,6 +42,7 @@ use crate::plugin::{
|
||||
player_move::PlayerMoveEvent,
|
||||
player_permission_check::PlayerPermissionCheckEvent,
|
||||
player_teleport::PlayerTeleportEvent,
|
||||
player_toggle_flight_event::PlayerToggleFlightEvent,
|
||||
player_toggle_sneak_event::PlayerToggleSneakEvent,
|
||||
player_toggle_sprint_event::PlayerToggleSprintEvent,
|
||||
},
|
||||
@@ -625,6 +627,31 @@ impl ToFromV0_1_0WasmEvent for PlayerToggleSneakEvent {
|
||||
}
|
||||
}
|
||||
|
||||
impl ToFromV0_1_0WasmEvent for PlayerToggleFlightEvent {
|
||||
fn to_v0_1_0_wasm_event(&self, state: &mut PluginHostState) -> Event {
|
||||
let player = state
|
||||
.add_player(self.player.clone())
|
||||
.expect("failed to add player resource");
|
||||
|
||||
Event::PlayerToggleFlightEvent(PlayerToggleFlightEventData {
|
||||
player,
|
||||
is_flying: self.is_flying,
|
||||
cancelled: self.cancelled,
|
||||
})
|
||||
}
|
||||
|
||||
fn from_v0_1_0_wasm_event(event: Event, state: &mut PluginHostState) -> Self {
|
||||
match event {
|
||||
Event::PlayerToggleFlightEvent(data) => Self {
|
||||
player: consume_player(state, &data.player),
|
||||
is_flying: data.is_flying,
|
||||
cancelled: data.cancelled,
|
||||
},
|
||||
_ => panic!("unexpected event type"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl ToFromV0_1_0WasmEvent for PlayerToggleSprintEvent {
|
||||
fn to_v0_1_0_wasm_event(&self, state: &mut PluginHostState) -> Event {
|
||||
let player = state
|
||||
|
||||
Reference in New Issue
Block a user