aboutsummaryrefslogtreecommitdiff
path: root/azalea-client/src/plugins
diff options
context:
space:
mode:
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(