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.
- 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));
- Place a block, for example dirt, at x, y, z
- Switch to Survival mode and start breaking the block with your hands; does not matter whether you stop before the block is broken
- Wait some time until the block is automatically broken
- Wait about 30 seconds
- Place log blocks at the position (for example using /setblock)
→
They are instantaneously broken; if you wait long enough this works even for obsidian
2018-10-27, 12:14 AM
2023-10-26, 07:24 PM
2
1
-