10

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?

5 Answers 5

15

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.

5
  • 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? Jul 13, 2011 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, 2011 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 Jul 13, 2011 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, 2011 at 16:14
  • More experiments to be done then. I will report back. Jul 14, 2011 at 0:35
1

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.

1
  • 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.. Jul 13, 2011 at 14:26
0

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.

6
  • 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. Jul 13, 2011 at 14:09
  • 1
    Never seen that happen, personally. Jul 13, 2011 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. Jul 13, 2011 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, 2011 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 Jul 13, 2011 at 14:19
0

I think the sand/gravel falling is slightly slower then the piston so you get something like this: The first three pushes of the piston doesn't break the sand, till the forth one which will break the sand. If something like this happens you might need to tweak around with the timing of the clock or use a older version of Minecraft

0

I think you just need to put a slime block underneath the piston headband that makes it bounce, causing it to keep bouncing till it rests

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .