Mojira Archive
MC-138111

Block breaking progress is not reset after client finishes / client can finish breaking block infinitely often

1.13.1

The bug

Based on 1.13.1 decompiled using MCPConfig.

The method PlayerInteractionManager.stopDestroyBlock(BlockPos) allows finishing block breaking even if the field isDestroyingBlock is not set. This allows modified clients to instantaneously break blocks at the same position after same time.

How to reproduce

With x, y and z as the coordinates where blocks should be instantaneously broken. During these steps you must not start breaking a block at a different position.

  1. Modify for example the method PlayerControllerMP.tick() to send a CPacketPlayerDigging.Action.STOP_DESTROY_BLOCK packet every tick
    this.connection.sendPacket(new CPacketPlayerDigging(CPacketPlayerDigging.Action.STOP_DESTROY_BLOCK, new BlockPos(x, y, z), EnumFacing.NORTH));
    
  2. Place a block, for example dirt, at x, y, z
  3. Switch to Survival mode and start breaking the block with your hands; does not matter whether you stop before the block is broken
  4. Wait some time until the block is automatically broken
  5. Wait about 30 seconds
  6. Place log blocks at the position (for example using /setblock)
    They are instantaneously broken; if you wait long enough this works even for obsidian

Unresolved

Marcono1234

2018-10-27, 12:14 AM

2023-10-26, 07:24 PM

2

1

Plausible

Low

Platform

Networking

block-breaking

Minecraft 1.13.2

-