add one more option

This commit is contained in:
Alexander Medvedev 2026-08-28 11:57:18 +02:00
parent 85ff0f4e28
commit 8d3619f838
5 changed files with 58 additions and 92 deletions

86
Cargo.lock generated
View File

@ -169,9 +169,9 @@ checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
[[package]] [[package]]
name = "cc" name = "cc"
version = "1.4.3" version = "1.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "509591b7bcd67f4ef775afad7662703b4935daaa6ec0e5605cfb1090b32a2b6d" checksum = "0ad534f4357a5264cce5019c989cf66a4f0dc4e0d1b1d15f8aacec0ff7360273"
dependencies = [ dependencies = [
"find-msvc-tools", "find-msvc-tools",
"shlex", "shlex",
@ -250,7 +250,7 @@ dependencies = [
"heck", "heck",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 3.0.3", "syn 3.0.4",
] ]
[[package]] [[package]]
@ -329,9 +329,9 @@ dependencies = [
[[package]] [[package]]
name = "crc32fast" name = "crc32fast"
version = "1.5.0" version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" checksum = "8498c871161e1742aaa9d52551b2d6ebdd4c3d45a3be423e3728f33b955be550"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
] ]
@ -392,19 +392,6 @@ version = "0.8.22"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17"
[[package]]
name = "crossfire"
version = "3.1.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "111ce8f7abfbac38b4bc4f32a3a2dda1a8034b873c90c7899f302cc9dbbc05ec"
dependencies = [
"crossbeam-utils",
"futures-core",
"parking_lot",
"pointers",
"smallvec",
]
[[package]] [[package]]
name = "crypto-bigint" name = "crypto-bigint"
version = "0.7.5" version = "0.7.5"
@ -533,9 +520,9 @@ dependencies = [
[[package]] [[package]]
name = "either" name = "either"
version = "1.17.0" version = "1.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e5e8f6c15a24b9a3ee5efec809ccd006d3b30e8b3bb63c39af737c7f87daa1d" checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34"
[[package]] [[package]]
name = "elliptic-curve" name = "elliptic-curve"
@ -613,7 +600,6 @@ checksum = "9a31d2a3fbaaeb2af2368bbdd904aa8e812d3c04a1ee10d3171f52d556e5d0a3"
dependencies = [ dependencies = [
"futures-channel", "futures-channel",
"futures-core", "futures-core",
"futures-executor",
"futures-io", "futures-io",
"futures-sink", "futures-sink",
"futures-task", "futures-task",
@ -636,17 +622,6 @@ version = "0.3.34"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e"
[[package]]
name = "futures-executor"
version = "0.3.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432"
dependencies = [
"futures-core",
"futures-task",
"futures-util",
]
[[package]] [[package]]
name = "futures-io" name = "futures-io"
version = "0.3.34" version = "0.3.34"
@ -661,7 +636,7 @@ checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 3.0.3", "syn 3.0.4",
] ]
[[package]] [[package]]
@ -843,9 +818,9 @@ dependencies = [
[[package]] [[package]]
name = "log" name = "log"
version = "0.4.33" version = "0.4.34"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6"
[[package]] [[package]]
name = "lz4-java-wrc" name = "lz4-java-wrc"
@ -920,7 +895,7 @@ checksum = "e4e98dc3b890f6c23a0f9d3d491a2823d0dea0fa656302a13dd225fa924112a8"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 3.0.3", "syn 3.0.4",
] ]
[[package]] [[package]]
@ -967,16 +942,6 @@ dependencies = [
"sha2", "sha2",
] ]
[[package]]
name = "parking_lot"
version = "0.12.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
dependencies = [
"lock_api",
"parking_lot_core",
]
[[package]] [[package]]
name = "parking_lot_core" name = "parking_lot_core"
version = "0.9.12" version = "0.9.12"
@ -1074,12 +1039,6 @@ dependencies = [
"spki", "spki",
] ]
[[package]]
name = "pointers"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5dcdc93847ad24990939cce6e1804361e903efcb5f99daa5abd87943a9d6d7ba"
[[package]] [[package]]
name = "powerfmt" name = "powerfmt"
version = "0.2.0" version = "0.2.0"
@ -1183,7 +1142,7 @@ dependencies = [
"proc-macro2", "proc-macro2",
"pumpkin-data", "pumpkin-data",
"quote", "quote",
"syn 3.0.3", "syn 3.0.4",
] ]
[[package]] [[package]]
@ -1231,6 +1190,7 @@ dependencies = [
"bytes", "bytes",
"colored", "colored",
"crypto-bigint", "crypto-bigint",
"dashmap",
"ecdsa", "ecdsa",
"md5", "md5",
"num-derive", "num-derive",
@ -1243,7 +1203,6 @@ dependencies = [
"serde_json", "serde_json",
"sha2", "sha2",
"thiserror", "thiserror",
"tokio",
"ureq", "ureq",
"uuid", "uuid",
] ]
@ -1256,7 +1215,6 @@ dependencies = [
"bitflags", "bitflags",
"bytes", "bytes",
"crossbeam", "crossbeam",
"crossfire",
"dashmap", "dashmap",
"flate2", "flate2",
"futures", "futures",
@ -1427,9 +1385,9 @@ dependencies = [
[[package]] [[package]]
name = "rustls-webpki" name = "rustls-webpki"
version = "0.103.14" version = "0.103.15"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0527518605e68109d875e248ea259b6758801cf165e4b2c2733ae3b51f12535a" checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2"
dependencies = [ dependencies = [
"ring", "ring",
"rustls-pki-types", "rustls-pki-types",
@ -1495,7 +1453,7 @@ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 3.0.3", "syn 3.0.4",
] ]
[[package]] [[package]]
@ -1669,9 +1627,9 @@ dependencies = [
[[package]] [[package]]
name = "syn" name = "syn"
version = "3.0.3" version = "3.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" checksum = "e6275cddf4610d1775e6d1fe9469b2e77d0f39fd98fb7450901b821e0c53649f"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -1695,7 +1653,7 @@ checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 3.0.3", "syn 3.0.4",
] ]
[[package]] [[package]]
@ -1754,7 +1712,7 @@ checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 3.0.3", "syn 3.0.4",
] ]
[[package]] [[package]]
@ -1910,9 +1868,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
[[package]] [[package]]
name = "uuid" name = "uuid"
version = "1.24.1" version = "1.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2cefc03fd367c0c6d4305de1b312cf00248c4114f4a0418ce6a6af769e3b0bd9" checksum = "f053576934f05a761a402421fbbe3d425d9366f75f978806a037b3ca481abecc"
dependencies = [ dependencies = [
"getrandom 0.4.3", "getrandom 0.4.3",
"js-sys", "js-sys",

View File

@ -12,15 +12,15 @@ codegen-units = 1
log = "0.4" log = "0.4"
simple_logger = "5.2.0" simple_logger = "5.2.0"
# CLI # CLI
clap = { version = "4.6.1", features = ["derive"] } clap = { version = "4.6.6", features = ["derive"] }
# Networking # Networking
tokio = { version = "1.52.3", features = ["net", "io-util"] } tokio = { version = "1.53.1", features = ["net", "io-util"] }
pumpkin-protocol = { git = "https://github.com/Pumpkin-MC/Pumpkin", package = "pumpkin-protocol", default-features = false, features = ["serverbound", "clientbound"]} pumpkin-protocol = { git = "https://github.com/Pumpkin-MC/Pumpkin", package = "pumpkin-protocol", default-features = false, features = ["serverbound", "clientbound"]}
pumpkin-util = { git = "https://github.com/Pumpkin-MC/Pumpkin", package = "pumpkin-util"} pumpkin-util = { git = "https://github.com/Pumpkin-MC/Pumpkin", package = "pumpkin-util"}
pumpkin-data = { git = "https://github.com/Pumpkin-MC/Pumpkin", package = "pumpkin-data"} pumpkin-data = { git = "https://github.com/Pumpkin-MC/Pumpkin", package = "pumpkin-data"}
crossbeam = "0.8.4" crossbeam = "0.8.4"
uuid = "1.23.4" uuid = "1.25.0"
rand = { git = "https://github.com/rust-random/rand"} rand = { git = "https://github.com/rust-random/rand"}
rsa = { version = "=0.10.0-rc.18", default-features = false, features = ["std", "encoding"] } rsa = { version = "=0.10.0-rc.18", default-features = false, features = ["std", "encoding"] }

View File

@ -39,6 +39,10 @@ Here's a detailed breakdown of all available command-line arguments:
- The timeout (in milliseconds) for each bot connection. - The timeout (in milliseconds) for each bot connection.
- Example: `--delay 500` (500 milliseconds delay) - Example: `--delay 500` (500 milliseconds delay)
- **`--enable_spam_message <false/true>` (Optional, Default: `true`):**
- Enable periodic chat spam messages.
- Example: `--enable_spam_message true`
- **`--spam_message "<message>"` (Optional, Default: `Please do not spam!`):** - **`--spam_message "<message>"` (Optional, Default: `Please do not spam!`):**
- Will send a Chat message with the specified `spam_message_delay`. - Will send a Chat message with the specified `spam_message_delay`.
- Example: `--spam_message "Hello, I'm a Robot"` - Example: `--spam_message "Hello, I'm a Robot"`

View File

@ -255,23 +255,25 @@ impl Client {
return; return;
} }
if let Some(spam_message) = &args.spam_message { if args.enable_spam_message {
let result = self.message_spam_cooldown.fetch_update( if let Some(spam_message) = &args.spam_message {
Ordering::SeqCst, let result = self.message_spam_cooldown.fetch_update(
Ordering::Relaxed, Ordering::SeqCst,
|curr| { Ordering::Relaxed,
if curr == 0 { |curr| {
let delay = rand::random_range( if curr == 0 {
args.spam_message_delay_min..args.spam_message_delay_max, let delay = rand::random_range(
); args.spam_message_delay_min..args.spam_message_delay_max,
Some(delay) );
} else { Some(delay)
Some(curr - 1) } else {
} Some(curr - 1)
}, }
); },
if let Ok(0) = result { );
self.send_message(spam_message).await; if let Ok(0) = result {
self.send_message(spam_message).await;
}
} }
} }

View File

@ -18,22 +18,24 @@ pub struct Args {
#[arg(short, long, default_value_t = 5000)] #[arg(short, long, default_value_t = 5000)]
pub timeout: u64, pub timeout: u64,
#[arg(long, default_value = "Please do not spam!")] #[arg(long, default_value_t = true, default_missing_value = "true", num_args = 0..=1, action = clap::ArgAction::Set, alias = "enable_spam_message")]
pub enable_spam_message: bool,
#[arg(long, default_value = "Please do not spam!", alias = "spam_message")]
pub spam_message: Option<String>, pub spam_message: Option<String>,
#[arg(long, default_value_t = 150)] #[arg(long, default_value_t = 150, alias = "spam_message_delay_min")]
pub spam_message_delay_min: u32, pub spam_message_delay_min: u32,
#[arg(long, default_value_t = 250)] #[arg(long, default_value_t = 250, alias = "spam_message_delay_max")]
pub spam_message_delay_max: u32, pub spam_message_delay_max: u32,
#[arg(long, default_value_t = true)] #[arg(long, default_value_t = true, default_missing_value = "true", num_args = 0..=1, action = clap::ArgAction::Set, alias = "enable_rotation")]
pub enable_rotation: bool, pub enable_rotation: bool,
#[arg(long, default_value_t = true)] #[arg(long, default_value_t = true, default_missing_value = "true", num_args = 0..=1, action = clap::ArgAction::Set, alias = "enable_swing")]
pub enable_swing: bool, pub enable_swing: bool,
#[arg(long, default_value_t = true)] #[arg(long, default_value_t = true, default_missing_value = "true", num_args = 0..=1, action = clap::ArgAction::Set, alias = "enable_movement")]
pub enable_movement: bool, pub enable_movement: bool,
#[arg(long, default_value_t = true)] #[arg(long, default_value_t = true, default_missing_value = "true", num_args = 0..=1, action = clap::ArgAction::Set, alias = "enable_jumping")]
pub enable_jumping: bool, pub enable_jumping: bool,
#[arg(long, default_value_t = true)] #[arg(long, default_value_t = true, default_missing_value = "true", num_args = 0..=1, action = clap::ArgAction::Set, alias = "enable_physics")]
pub enable_physics: bool, pub enable_physics: bool,
} }