diff options
| author | Tommy <40905037+qwqawawow@users.noreply.github.com> | 2025-08-15 09:39:58 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-14 20:39:58 -0500 |
| commit | 6695132ddb31780786c67b8b9ff5df8ab3891438 (patch) | |
| tree | ef9be07e327205f0dfc7835a61efe679005f7004 | |
| parent | 55a7db13ef028f5b6c6e87a81406b3525cea196f (diff) | |
| download | azalea-drasl-6695132ddb31780786c67b8b9ff5df8ab3891438.tar.xz | |
fix: mining fails in Creative Mode (#236)
| -rw-r--r-- | azalea-client/src/plugins/mining.rs | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/azalea-client/src/plugins/mining.rs b/azalea-client/src/plugins/mining.rs index 2ee476ae..f584bacb 100644 --- a/azalea-client/src/plugins/mining.rs +++ b/azalea-client/src/plugins/mining.rs @@ -255,6 +255,17 @@ fn handle_mining_queued( // is outside of the worldborder if game_mode.current == GameMode::Creative { + // In creative mode, first send START_DESTROY_BLOCK packet then immediately + // finish mining + commands.trigger(SendPacketEvent::new( + entity, + ServerboundPlayerAction { + action: s_player_action::Action::StartDestroyBlock, + pos: mining_queued.position, + direction: mining_queued.direction, + seq: sequence_number.start_predicting(), + }, + )); commands.trigger_targets( FinishMiningBlockEvent { position: mining_queued.position, @@ -262,6 +273,7 @@ fn handle_mining_queued( entity, ); **mine_delay = 5; + commands.trigger(SwingArmEvent { entity }); } else if mining.is_none() || !is_same_mining_target( mining_queued.position, @@ -579,12 +591,6 @@ pub fn continue_mining_block( if game_mode.current == GameMode::Creative { // TODO: worldborder check **mine_delay = 5; - commands.trigger_targets( - FinishMiningBlockEvent { - position: mining.pos, - }, - entity, - ); commands.trigger(SendPacketEvent::new( entity, ServerboundPlayerAction { @@ -594,6 +600,12 @@ pub fn continue_mining_block( seq: prediction_handler.start_predicting(), }, )); + commands.trigger_targets( + FinishMiningBlockEvent { + position: mining.pos, + }, + entity, + ); commands.trigger(SwingArmEvent { entity }); } else if mining.force || is_same_mining_target( |
