This is a project I have been working on for a while now, A Massive Expandable Storage System, or MESS for short. A minecraft storage system where the player inputs a location, using the lever selection panel, and at a push of a button the corresponding item (or shulkerbox) is sent to the player. One benefit to this system is it is expandable to hold 4096 different items. Minecraft however has less than 512 stackable items, so you only need to build 1/8 of the maximum. One downside is that the system creates a fair amount of lag, so to minimize the impact on performance, the system uses little redstone dust, and no entities (dropped items). One more thing to mention is it takes less than 10 seconds on average to request an item (depending on the computer), which would be a lot faster for a storage system of this scale, however a small system for only bare essentials would be much better for casual players.
and for a quick calculation of how many items it can hold, for each item there is,
one dropper, 7 hoppers, and 6 double chests that can be filled with shulkerboxes,
that is 9 + 7(5) + 6(9*6) = 368 shulkerboxes per item,
368 shulkerboxes * 27 stacks per shulkerbox * 64 items per stack = 635904 items per each sort able item.
635904 items * 4096 theoretical maximum = 2,604,662,784 possible items.
635904 items * 512 practical limit = 325,582,848 items.
Step 1: Lever Selection Panel
place the stone, lever, redstone torch, repeaters, rails(either powered rails or activator rails), and pistons as shown in the above picture.(picture 1)
repeat until you have 16 levers (picture 2)
Place an observer from about this angle on one of the two center blocks (picture 3)
you can test it by flipping a single lever and the pistons should cover every other lever until the lever is turned off.
place some stone and some more rails, if they are not aligning properly, there is a trick to placing them. To place rails against the way they prefer to align, place rails on every other block, one longer on each side, then fill in the spaces and then remove the extra rails.(picture 4 - 5)
place some stone, and observers like in the pictures. Anyone who knows binary may notice the patter reflects the binary numbers 0 - 15. (picture 6)
place more rails, more rails, more rails, stone , observers, more stone and more rails. (pictures 7 - 11)
connect the two layers together in the middle with some more observers and rails (picture 12)
and then repeat the entire thing two times over again. (picture 13)
if any of the stone blocks move over the torches when the levers aren't flipped, just move them back(picture 14)
if you want, and I do suggest doing this, label the levers 0 through F, which is 0 - 15 in hexadecimal, and if you want you can add the binary equivalent. (picture 15)
here is a table of numbers if you need it.
Step 2: Optional Elevator
You could use a ladder, but that isn't as cool or as fast.
Start with a slime block , sticky piston and some objects that slime blocks can't move, these include glazed terracotta, obsidian, droppers, dispensers, note blocks, chests, etc. This first layer of unmovable blocks should be level with your first floor. (picture 1)
Place another sticky piston below the slime block and any solid block next to it, the terracotta was removes so you can see better. (picture 2)
Place more unmovable blocks, solid blocks and two buttons. (picture 3)
Behind the left button, place an observer, a rail (powered rail or activator rail), and some redstone dust on a block. Now the button when pressed will retract the slime block and piston below it allowing the player to go down one floor (picture 4)
Behind the right button place a torch, a few blocks, an observer and some rails. The rails will be used to transfer the signal to the next floor above to move the blocks out of the way so the player can go up to the next floor. (pictures 5 and 6)
Place two more observers, some blocks and a redstone dust. (picture 7)
Build the next two floors exactly the same, just with one more observer below the horizontal piston watching the rails we placed earlier. (picture 8, and 9)
Your elevator is finished, go ahead and test it out. The button on the left will drop you down one floor and the button on the right should launch you up one floor. If you want you can relocate the button on the right to inside the elevator, while still on the same block, to make it easier to press while in the correct position (in the center of the slime block). (picture 10)
Step 3: Main System (binary Selector Part 1)
You want to start building your binary selector about 16 blocks away. (picture 1)
I tend to build in sections of 16 because minecraft is already segmented into chunks of 16 X 16 blocks. You can see these chunks if you press F3 and H
You want to place 3 sets of 4 observers,with the "face" towards the lever selection panel with one block of space between them. The left most group should have one more observer added onto the left. (picture 2)
Now place observers 16 blocks long with their "face" up and rails on top, and sticky pistons below. repeat this for the entire left most group of 5 observers. (picture 3, 4, and 5)
For the center group of observers, just place rails on top of stone, with observers to extend the signal, behind the output of the observers (picture 6)
place observers, with the output down, under the center and right group of observers with downward facing sticky pistons (picture 7)
Step 4: Main System (binary Selector Programming Part 2)
The programming of the selector, while it looks complicated is actually simple. Start by placing a line of stone blocks one block under the outermost sticky pistons of the group of five, this will only allow the signal through when that line is turned on. The rest of the programming is simply using the binary patterns that you might have labeled your signs with, if not no worry, they follow an easy pattern. From left (towards the selection panel) to right (away from the selection panel), repeat the pattern of one up, one down, for the 16 pistons. The next row is two up, then two down. the next row isn't three its four up and four down. Last is 8 up 8 down. (picture 1)
Now you need to connect all of them together with a line of rails (the first block which is closest to the selection panel has to be a slab). You must use both, alternating, powered rails then activator rails, or activator rails then powered rails. It doesn't matter which way you alternate as long as you change the type. (picture 2, and 3)
Now place observers under the center group of pistons as shown in picture 4.
Extend a line of rails, and observer, with the first block having to be a slab. (picture 5, doesn't have the slab but you should)
place more observers, just like before. (picture 6)
If you would like a more in depth explanation, read on. If you are content with the explanation of "redstone magic" then you may continue to the next step.
when a block is place in front of the first observers you placed they will output a single tic pulse through to the rails, and in turn to the connected 16 sticky pistons the pistons "drop" their block. That means that if the block is directly against the piston, it moves it out, and retracts without the block. if the block is already "dropped" and a single tick pulse is sent through the piston, the piston will pick the block back up and move it to the retracted position. This function in combination with the unique pattern, when a 4 bit binary number (four 0's and 1's) the corresponding column of observers is complete (all of them are retracted against the sticky pistons) and a signal can be passed through to the dropper that will be placed in the next step. the middle and right most groups of observers and pistons will deal with the expansion of the system, and will be handled later.
Step 5: Main System (Output Instant Dropper)
Place two hoppers, two droppers, and two stone. The hopper / dropper on the right will be part of the storage, and will be triggered by the selector behind it. (picture 1)
Now do that 15 more times, as we do in this tutorial. Also place alternating double chests, and double trapped chests as the start of the main storage. (picture 2)
place observers and two sets of eight rails, the two sets should be different. (picture 3)
place several comparators, and 2 sets of 8 rails. (picture 4)
Place some sticky pistons, observers (face towards the sky), stone, rails, slime blocks (picture 5)
Next place observers, sticky pistons, slime blocks and a maximum delay repeater. (pictures 6 and 7)
Place redstone blocks as shown in pictures 8 and 9.
you should now have a "smart" instant dropper line. To test it place any item, or amount of items into any of the droppers. The comparators should turn on, activating the rails and in turn the observer clock that triggers the piston to activate the instant signal line which activates all the droppers in the same tick, but they are calculated in order of the farthest to the closest, meaning the item is sent across the entire line in the same game tick, effectively an instant dropper line.
Step 6: Main System (Chests)
This step is really simple, just stack chests and hoppers at least as high as shown in the above pictures. the trick to getting double chests next to each other is to place trapped chests next to the normal chests, just make sure not to open the trapped chests because it may trigger some redstone somewhere.
Step 7: Main System (Optional Shulker Box Loader)
this is a simply complicated device that loads shulkerboxes and breaks them and places them into the chest below. The loader isn't needed however it increases the storage by a lot. For details on how to build it look at the picture above.
Step 8: Main System (Filter )
The filter, like the shulker loader, is simple and effective. it can be made by copying the structure in picture one.
then stack the filter, and loader 15 more times. (picture 2)
Fill the top most hoppers with four renamed items, it doesn't matter what item as long as it is renamed something unique. (picture 3)
Make sure you fill every hopper.(picture 4)
Step 9: Main System (Item Input Dropper Line)
this is another simple device that moves the items over the filter without using more hoppers. It is made with a dropper, comparator, four observers and a torch. (pictures 1 and 2)
repeat this alot (picture 3)
If you want you can just use hoppers instead, however hoppers do produce more lag by just been there, because they constantly check to see if they can pick up a dropped item above them. and this dropperline can handle if you place a stack directly into the dropper.
Step 10: Connecting It Together (Weird Rails and Stuff)
Place sticky pistons 2 blocks away, and stone blocks will go on their face so when the pistons are turned on they will trigger the observers. I would suggest not placing the stone blocks until you are finished so the "program" isn't messed up by repeated triggering. (picture 1)
For systems which use more than one layer, I would suggest using doors, blocks, and observers to transfer the location data to each layer. (picture 2)
For the input trigger, place a redstone line connecting the first observer (the rightmost if facing away from the lever selection panel) and the last observer (The observer that controls the stone blocks behind the droppers). The redstone line should have a single tick repeater (default delay), a four tick repeater (most delay, three additional clicks), an observer above the four tick repeater "watching" the repeater, and a door connecting the observer above the repeater, and the observer that triggers the rails. Placing the door may trigger the pistons to retract the stone blocks, just trigger the door with an observer's pulse or quickly break and replace the door.(picture 3)
Now for the complicated wiring, connect each layer of the lever selection panel's output to the three separate sets of observers, It doesn't matter how this is done, just as long as the observers are no more than 9 rails apart (because that's as far as the signal will travel through rails) and that the lines don't interact with the others. (picture 4)
If You have problems placing the rails, please refer to step 1.
Step 11: Connecting the Outputs
Now, simply extend the instant dropper line to where the desired output chest is. (pictures 1 and 2)
Use some hoppers to connect any upper levels to the main output line. You could just have a walled tube which the items are fall down as dropped items, but if a player isn't within the area, (this would be rare, but possible if you have something automatically request items) the dropped items won't be calculated. (picture 3)
If you want you can connect the output of the lowest filter to the main output line, in the case that there isn't any free spaces, or the item isn't in the system already, so the item would just be returned to the player. (picture 4)
Step 12: Making the Inputs
You can place your button to request an item anywhere you want, just connect it to the redstone marked in picture 1
Wrap the trigger signal around and through two repeaters, the first on the least delay and the second on the most delay. The second repeater should be all the way at the other end in front of the sticky pistons that moves the stone blocks behind the droppers. Above the second repeater should be an observer and a door. If placing any of these components trigger the pistons, simply send a second signal through using an observer to correct it. (picture 2)
Now, sorry for the change of scenery, but it should be easier to see what is going on. The input can be placed wherever is most convenient and has enough space to fit.
Start off with a chest, and some hoppers, and some solid blocks. there should be two lines of hoppers, the first line goes straight across and the second line goes down two hoppers, then away from where the blocks are.(picture 3)
Place a comparator, redstone dust, torch, and a repeater on the blocks next to the hoppers. While this does look like the filter from earlier, it will not be sorting for specific items, only unstackable items will be pulled down. (picture 4)
Place a dispenser so that the bottom hopper leads into the side of it, and more hoppers running parallel to the first line of hoppers one block in front of the dispenser. also place one comparator, a block and a torch. (picture 5)
Place 4 observers, two looking down, above the dispenser, and two looking up next to the first two. (picture 6)
Place some blocks, redstone dust, rails, and a block under the second pair of observers, next to the dispenser. Now whenever anything is filtered into the dispenser, it will depower the rails, triggering the observers to fire the dispenser, which will trigger the other observers, to trigger the rails. this will repeat until the dispenser is empty. (picture 7)
Place two more observers and a piston. Now whenever the dispenser fires, the piston will fire shortly after. so if a filled bucket is placed into the input chest, it will be filtered into the dispenser, because it cant stack more than one, then the dispenser will empty the bucket, and the piston will delete any fluid dropped from the bucket, then the dispenser will fire once again to drop the bucket. (picture 8)
Add a few blocks, a comparator, a torch and a sticky piston. Now the system will still function the same, but if a shulkerbox is dispensed and has items inside, the comparator will turn the torch off, pulling the observer away from the piston, and preventing the shulker box from been broken until it is empty. (picture 9)
Add a single redstone dust, a sticky piston and a redstone block. an also right click the comparator reading from the dispenser so the torch is turned on. This will turn off the dispenser if there is a shulkerbox with items is dispensed. (picture 10)
add some blocks to prevent any fluid from spilling out, or any shulkerboxes from flying away.
add a second nonstackable item filter, the same as before, to filter out the empty shulkerboxes, and any nonstackable items inside the shulkerboxes. the output of the second nonstackable item filter can be routed to any output that is easily accessible by the player. (picture 12)
rout the stackable outputs of the two filters together, an into the dropper tower that is going to be made now. (picture 13)
stack droppers up to the input of the highest input for the main storage. Place some solid blocks,a comparator, a repeater, on full delay, and two redstone dust. You cant see it in the picture, but there is a second redstone dust behind the two blocks next to the repeater.(picture 14)
place a repeater and some redstone dust connecting to the piece of redstone dust you couldn't see in the last step. Place a two by one block stack of solid blocks, in a "zipper pattern" one block away from the droppers, and starting on the top pf the comparator. (picture 15)
fill the gaps in the zipper with redstone torches and more torches between the droppers and the zipper. (picture 16)
Filaly connect the output of the dropper tower to some hoppers leading into the input of the highest filter of the main storage system. (picture 17)
Step 13: INFINITE* Expansion!
*is not infinite, however 1/8 of the maximum capabilities is enough to hold more than every stackable item in the game, so it is well more than anything that one would ever need.
to expand the system, repeat steps 3 - 9 for a maximum length of 16 segments of 16 blocks, or you can stack it 16 layers high. Any player however will only need at most 2 layers of 16 segments of 16 blocks, or 4 layers of 8 segments of 16 blocks. Both total to 512 items, which is more than enough for minecraft as of 1.12.2.
To properly connect the additional segments, you have to modify the second/ third sets of observers placed in step 3. The middle section corresponds to the sections of 16, and the right most is for which layer. the modified positions are the exact same as the "program" in step 4, its just that each column goes to each segment / layer. So the second layer, and the right most observers would be down up up up. The wall of doors and observers isn't needed unless you do stack up multiple layers. they should connect well enough, and transmit the location data to each layer.
Another thing to not forget if you do build multiple layers is to connect the output of each layer's filter line to the input to the next layer as shown in the pictures.
Step 14: If All Else Fails
download the world yourself and compare or, use mc-edit/ world edit to place the system into your world, or use schematica to build it. This tutorial will not cover this, however there are several other tutorials on how to do this. Be aware however, when placing it into the world, several observers may trigger, causing several things to break, so be careful.