# How can I control each piston of a pile of 8 pistons?

Is there a way to be able to control (make it open or close) each piston (separately) of a pile of 8 pistons put like this:

``````    P
P
P
...
P
``````
• Which direction are the pistons pointing? Also, are they vertically stacked? May 15, 2012 at 17:13
• @gnovice, They are pointing on > direction. And yes they are vertically stacked one near the other.
– Shoe
May 15, 2012 at 17:15
• Huh. I thought this was "easy" (every other piston needs powering from a different direction, eg either side), but pistons seem to get power from adjacent and adjacent +1 z-level blocks. While this would allow for a full wall of powered pistons (for example) is also means each piston is powered by the trigger for the one above in my suggestion (although the updating of this seems a bit off...) ... so shrug ... don't know :/ +1, will be interested to see the answer. May 15, 2012 at 18:38

I don't believe this is currently possible with respect to controlling each piston in a completely independent manner from all the other pistons. It is possible to isolate the inputs to each piston such that they can be independently extended, but the problem arises when you want to independently retract them. Here is the key point from the "Bugs" section of the Minecraft Wiki for Pistons:

If two extended pistons are one above the other, the lower one cannot retract until the upper one retracts (video explanation). If the top one will start extending while bottom one is still retracting, the last will start extending as well.

The only possible solution I can think of would be to retract all higher pistons whenever a given piston needs to retract, then return them to their previous state (if they were extended) after a brief delay. This is the only way to ensure that a given piston can retract, but would require more complicated redstone circuitry. It would also mean that the pistons aren't acting in a completely independent fashion, since changes to lower pistons would transiently affect the states of higher pistons.

To illustrate proof of concept for this solution (transiently resetting all higher pistons to their retracted state) I built a simple 2-piston stack:

The lever on the left controls the lower piston, and the lever on the right controls the upper piston. Here's a view from the top showing how it's all wired up in back:

The left lever drives the lower piston directly, but the right lever drives another piston that opens and closes a circuit delivering power to the upper piston (basically, an AND gate). The "power" in this case comes from two OR-ed signals: one is the left lever signal passed through a repeater with a 1-tick delay (coming from the left in the image) and the other is the left lever signal inverted then passed through a repeater with a 2-tick delay (coming from the top in the image).

This design creates a scenario whereby power is continuously supplied for use by the upper piston if the lever for the lower piston is in the on state, off state, or transitioning from off to on. However, when transitioning from on to off, the power to the upper piston will be temporarily disconnected. If in the extended state, the upper piston will momentarily retract long enough for the lower piston to retract before returning to the extended state.

Extending this solution to a larger stack of pistons is an exercise I will gladly leave to the reader. I for one am hoping they will simply correct the bug.;)

• The closest I can get is that they can almost be independently extended. See this shot of my test build for this question, if I now switch off the bottom lever the bottom piston will retract, but the 2nd piston up will extend at the same time (even though it doesn't have it's own input at this stage, it looks like it's getting the "leak" from above and I guess doesn't receive a state update until the bottom one wakes it up). Have I missed something / Do you have a method that avoids this? May 15, 2012 at 19:58

Assuming the pistons are pointed to the right, do the following (note, I am using four pistons, however, you can repeat this as many times as desired):

For horizontal:

Place blocks and redstone like this:

Then, cover the redstone on the ground so it doesn't touch the elevated redstone like so:

Now you can test this by placing blocks above the ends of the elevated redstone and placing levers on them (note that you can also place blocks behind the ends and place levers on those blocks). For the redstone on the ground, place the levers directly next to the ends like this:

In the following picture, the levers with bricks behind them are on. Notice that the corresponding pistons are extended:

For vertical (Note, as of now, as gnovice explained (thank you), it is impossible if you want to retract the bottom first):

Like in the horizontal method, start by placing blocks and redstone like so:

Then place blocks in the following locations:

To test this, place blocks and levers in the following locations:

As before, levers with brick behind them are on:

Please note: as stated before and explained by gnovice, currently pistons can't retract until the piston above it has retracted (please upvote his answer for that). So as long as they retract top down, you'll be good to go.

That's all there is to it. Now you can add as many pistons as you want repeating steps 1 and 2. Hope this helped. Happy red-stoning :D

PS: Pistons have had updates so this may not work in older versions such as 1.7

• This doesn't answer the question. The pistons should be stacked vertically. May 15, 2012 at 19:32
• They are vertically stacked...
– Shoe
May 15, 2012 at 19:32
• Wait one minute then. May 15, 2012 at 19:34
• There I fixed it. And whoever didn't read the "Wait one minute then", please re-vote this question. May 15, 2012 at 20:09
• You now got my up vote but still gnovice answered to my real question and you just copied and pasted it. :)
– Shoe
May 15, 2012 at 21:08