# How to avoid sand/gravel blocks to break when using in Minecraft mechanisms?

When making mechanisms such as elevators based on sand/gravel blocks (and their property of being affected by gravity) how one can avoid those blocks from breaking?

I understand that if blocks bounce there's a higher chance of them breaking. So possibly another take at the question would be: what are the conditions for sand/gravel blocks to break into an item?

-

I believe I have determined the algorithm for sand and gravel falling; I previously wrote it up on Minecraft Wiki. I will use "sand" to refer to sand or gravel.

When sand is falling, it is an entity, just like all other freely moving objects. This entity falls under the influence of gravity until it hits something solid on its bottom. This causes an attempt to place a solid block at the cube-grid location containing the bottom-center point of the falling sand. Then, if that cube is occupied by a block (such as a slab or torch), the sand turns into a resource entity (the rotating cube you can pick up) instead.

So, just as conclusions from the above description, some other ways sand can break besides falling on torches:

• A piston head was moving upward through the cube when the sand landed.
• Another sand block landed in that cube while the sand was entering it.
• A piston pushed a block into the cube the sand already partly occupied. (This is what happens in your tower-of-sand example.)

In order to avoid breaking sand with piston mechanisms, don't push blocks into space sand is currently falling into.

-
Ok, this is nicely put together. Yet we are still at a loss in terms of knowing for sure when this might happen, e.g. at what clock speed (if a piston is driven by a clock) sand would break because the piston head (or other blocks propelled by it) go up quicker than the top sand block lands? – Dmitry Selitskiy Jul 13 '11 at 14:34
That's going to depend on at least how tall your tower of sand is. To reliably not break sand, you have to wait until the tower has completely settled before pushing it up again. I'm pretty sure that pushing a simple tower will always break at least one block otherwise, because there's always going to be some split-point where the sand has had a little chance to fall but you just occupied its block with more sand. (On the other hand, maybe there's some slop in the sand-landing algorithm that would make that work. You'll have to find out by experiment.) – Kevin Reid Jul 13 '11 at 14:36
experimentation shows that in a certain set up it would break in half the times. So now I'm trying to figure out why only in half – Dmitry Selitskiy Jul 13 '11 at 15:06
It probably has to do with the interaction of the differing update rates of redstone wiring, piston motion, and entity motion. – Kevin Reid Jul 13 '11 at 16:14
More experiments to be done then. I will report back. – Dmitry Selitskiy Jul 14 '11 at 0:35

A sand/gravel block will break when falling if the block below is not solid. While moving, the blocks are not considered exactly 'solid', so if the falling block tries to enter a block where there is a moving piston (or block moved by piston), it will likely break.

-
Ok this answer is closer to what I was looking for. However, how is it possible that the block that is breaking is moving faster than the one underneath (and therefore manages to "catch up" with the block underneath)? Hm.. – Dmitry Selitskiy Jul 13 '11 at 14:26

If it lands on a torch or other non-solid block, it will break.

Simply do not use non-solid blocks, or in other words; do not let them land on torches, steps, half steps, or the like.

-
They would break when they land on other blocks of the same type too, e.g. when you have a tower of sand/gravel in an elevator-like mechanism. – Dmitry Selitskiy Jul 13 '11 at 14:09
Never seen that happen, personally. – The Communist Duck Jul 13 '11 at 14:11
Try to put a tower of sand 5-6 blocks tall on a piston and then hook the piston up to a fast clock. That should be a good demonstration. – Dmitry Selitskiy Jul 13 '11 at 14:14
@Dmitry is correct; if you, for example, drop sand on a piston that's moving several times a second, the sand will eventually decide that it can't stay there and break. This is the whole point of the question. – Shinrai Jul 13 '11 at 14:18
@Shinrai I understand. Yet I don't see any definite pattern in when it breaks and when it does not and that's what I am trying to find out: the conditions under which it will break and under which it won't – Dmitry Selitskiy Jul 13 '11 at 14:19