aboutsummaryrefslogtreecommitdiff
path: root/azalea-client/src/plugins
diff options
context:
space:
mode:
authorTommy <40905037+qwqawawow@users.noreply.github.com>2025-08-15 09:39:58 +0800
committerGitHub <noreply@github.com>2025-08-14 20:39:58 -0500
commit6695132ddb31780786c67b8b9ff5df8ab3891438 (patch)
treeef9be07e327205f0dfc7835a61efe679005f7004 /azalea-client/src/plugins
parent55a7db13ef028f5b6c6e87a81406b3525cea196f (diff)
downloadazalea-drasl-6695132ddb31780786c67b8b9ff5df8ab3891438.tar.xz
fix: mining fails in Creative Mode (#236)
Diffstat (limited to 'azalea-client/src/plugins')
-rw-r--r--azalea-client/src/plugins/mining.rs24
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(