top | item 8201362

Fully Functional 1KB Hard Drive in Vanilla Minecraft

831 points| jonbaer | 11 years ago |imgur.com | reply

109 comments

order
[+] TheLoneWolfling|11 years ago|reply
In recent versions of MC, you can do a much better delay line memory with comparators. You can actually end up being able to store 2b / block (2 and not 4 because comparators have to be placed on something not a comparator.) - it would be half that but there's a trick you can play to avoid requiring redstone dust between comparators.

The delay is faster too - 1 redstone tick / 4 bits, or 40 bits/sec per line, as opposed to this implementation's 1 bit / 8 redstone ticks / line, or 1.25 bits / sec / line. (Note that this implementation of piston tape is decidedly suboptimal: the maximum is actually 3 bits / 4 redstone ticks / line = 7.5 bits/sec/line, as you can actually check for 8 different block types (glass / solid / sticky/non-sticky piston facing 3 directions) and you can make a faster-resetting piston loop.)

The biggest issue with comparator delay-line memory is that there's no way of pausing it.

There's also a way of storing arbitrary amounts of data per block, and that's to use the fact that items with NBT data will stack only when their NBT data is identical. The easiest way to see this is to try to stack renamed items, but there are others. You can make a hopper or dropper chain and encode data in which line which enchanted item is in.

I have yet to see a practical implementation of the above, though.

[+] avn2109|11 years ago|reply
>> "I have yet to see a practical implementation of the above, though."

"Practical" is of course used here in the loosest possible sense :)

[+] skykooler|11 years ago|reply
A comparator memory isn't really a hard drive, because it loses its data if turned off.
[+] NotAtWork|11 years ago|reply
How do you read off the state of the NBT data?

Can command blocks match items on NBT data or chests on their data?

[+] dkhar|11 years ago|reply
This is a good opportunity to plug ORE, a Minecraft community specifically for this kind of thing:

http://openredstone.org/

That video on their main page is mind-boggling to me.

I have a friend who's a regular on that server, and he would occasionally explain to me things like how they take advantage of how Minecraft's redstone handling works to shave precious ticks off the latest ALU design's return time, or how they created a fully vanilla-compatible "internet," to pass data through wires between different people's machines.

They've got mods set up to copy and paste blocks, so you can build modular systems out of components and avoid repetitive block-placing, but AFAIK, everything else is vanilla. It's incredible.

[+] mdellabitta|11 years ago|reply
I have to ask: Has anybody managed to mine Bitcoin in Minecraft yet?
[+] rmc|11 years ago|reply
For people interested in how computers work, I recommend the book/course "From NAND to Tetris - Building a Modern Computer From First Principles"[1]. It starts of with boolean logic and NAND gates, and it steps you through making a computer that can play tetris.

[1] http://www.nand2tetris.org/

[+] TylerJay|11 years ago|reply
I remember hearing that the nand2tetris people were going to do an edX course on it in the fall. Does anyone know anything about that?
[+] ThomPete|11 years ago|reply
Thank you so much. I have been looking for something that explains these principles to a non developer but technically interested designer this looks like it will do the trick.
[+] dangayle|11 years ago|reply
My nephew and his friends are 8-9 years old, and they're masters at building this stuff. The redstone, the logic, the machines, all of it. It's all they think about, all the time. Imagine what potential this early compsci education is fostering?

We just have to remind them when they're older and are running things and building amazing stuff that it's NOT OK to blow up other people's stuff with tnt.

[+] DanFeldman|11 years ago|reply
When I was taking a digital electronics course in high school, Minecraft was getting huge. We would spend hours playing and usually try to build the stuff we learned about in class. It was an incredible teaching tool, tbh.
[+] Sukotto|11 years ago|reply
I hope it's enough. It's not like young hackers can easily disassemble/reassemble stuff in the real world like we older guys did.

And yes, you can take apart a cell phone or a tv or whatever. But the risk:cost ratio isn't nearly as favorable as it was for the previous few generations. The chance of irreversibly breaking it is far higher, and the chance you'll learn very much by just looking are much lower. Likewise, nobody's stopping you from wrapping wire around magnets to make your own memory... but it's not like that's a "thing" kids get exposed to now. But it's all there in minecraft.

(It's also seriously hard to find children's science kits worth buying as the culture of extreme protection of children have turned them into junk. This is one of the only frontiers I'm aware of that's open to children (without the guiding hand of a science-mentor) to learn and play and create in this way)

[+] shawn-butler|11 years ago|reply
Pretty much none.

I've never understood why people think gaming or play ever forms the justification or basis for learning. Decade of nonsensical "gamification" studies has had zero effect no matter what Jane McGonigal says.

Might get an interest or passion going but it has near-zero lasting educational value.

[+] thejj|11 years ago|reply
This will not work as described. I think his design is a good idea, but still does not work.

I build a better harddrive (with 4 kb storage!) over a year ago, imgur link will follow.

Now to the design problem in this HDD: see that all the blocks are blue in the platter? No way to swap each of the bits without magically creating new green blocks. My hdd solves that problem by having BOTH block types available on the platter. But see for yourself:

http://imgur.com/a/8ESMW

[+] philh|11 years ago|reply
How confident are you?

I know very little about Minecraft, but if this doesn't work, it pretty much has to be trolling. (No way you build something like this and not notice that it doesn't work.) And then I wouldn't expect them to offer a link to download the map, and I wouldn't expect someone else to say they've got it working: http://www.reddit.com/r/Minecraft/comments/2e0ghk/fully_func...

[+] Kiro|11 years ago|reply
What won't work?
[+] awiesenhofer|11 years ago|reply
Reminds me of http://xkcd.com/505/ "A Bunch Of Rocks"

Although: no need for someone immortal with infinite time and energy to run the simulation, rather lots of people each devoting a small amount of both to it...

[+] atanasb|11 years ago|reply
This is really cool. I really like Minecraft computer components, but I could never help to think that if the guys who build them, started playing with something practical, the results might be more tangible.
[+] patio11|11 years ago|reply
Think of it more like a better UI on top of EE307 or whatever your local equivalent is for low-level hardware design. I had to scratchbuild a functional CPU using nothing but NAND gates to pass mine. I got through it, somehow, producing a CPU which would run minimal assembly-esque programs but which existed on no physical hardware and wouldn't be for for any purpose if it did. If you can do it with red stone I think any rational person would say you have all the knowledge my class tried to impart.
[+] dkhar|11 years ago|reply
I have a friend who used to keep excitedly showing me his crazy, impressive redstone ALU/CPU designs. I kept trying to get him to buy an FPGA and build out something with real hardware, but he maintained that a big part of why it was fun was because of the environment and community that came with Minecraft. That might go some way toward providing an explanation.
[+] NotAtWork|11 years ago|reply
I've worked in hardware, and think this kind of play is meaningful.

You confront many of the engineering challenges you'd face (in terms of line routing, timing challenges, design concerns, modularity, etc), but they have simpler and more straightforward constraints because of the different medium.

You're also really unlikely to get results using exactly this same skill set when trying to work with real hardware. The immediate need for programming and complicated tools becomes apparent when you try to grapple with the complexity of modern ICs.

If you're just going to have them blink LEDs using logic gates, I fail to see what you think you're getting from hiding all the logic circuitry in little black boxes and making the parts harder to work with. I've encountered all the engineering concepts (minus some physics concerns) I learned in several quarters of circuit design as an undergrad.

The reality is that Minecraft actually is a very good tool for introducing hardware concepts, because it removes the dependence on understanding software to do something.

(Really, the tooling around hardware needs to be better, particularly for things like FPGAs. Raspberry Pis and Arduinos are making good inroads.)

[+] VLM|11 years ago|reply
"playing" "practical" "results" "tangible"

The relationships between those not-necessarily related words would need considerable detail for the claim to mean anything.

Play doesn't require results, a virtual world in a computer will never be tangible and is likely used by people uninterested in being tangible, practical things usually aren't involved in playing, it goes on and on.

[+] zbowling|11 years ago|reply
Someone needs to make a FUSE driver that patches into this with a mod for Minecraft.
[+] wiml|11 years ago|reply
Interesting, maybe a bit more like bubble memory than a hard drive.
[+] snake_plissken|11 years ago|reply
I always wonder when I see these things, are players placing each block individually? Or are they mapped out in some file and fed to the server to render?
[+] DanBC|11 years ago|reply
I imagine they use programs like MCEdit.

You'd create parts of the hardware in Minecraft, then use MCEdit to copy and paste those parts.

http://www.mcedit.net/

[+] Houshalter|11 years ago|reply
In classic minecraft there used to be a convenient command where you could type /cuboid or /z and then place or destroy two blocks, and it would fill the area in between. There were countless more server-side commands and mods that let you build large scale structures. Copy and pasting sections, building spheres or cylinders, making shapes hollow, etc. Flying was much easier and faster too, although it did required a mod.

Minecraft now has so many more features and block types. But I miss some of those features, and building large scale structures is much more difficult.

[+] xenophonf|11 years ago|reply
In addition to MCEdit, which reads and writes Minecraft worlds offline, there is WorldEdit, which can be used in-game (whether via a client-side mod such as Single Player Commands or via the official server-side plugin). If I recall correctly, with CraftScript installed one can also automate block placement. With the right config you can make this all work in SSP or SMP - WorldEdit will use blocks from one's inventory instead of creating them ex nihilo.
[+] rednukleus|11 years ago|reply
Even if this has no practical reason to exist, it makes me happy to know that it does. The world is a better place for it.
[+] Sami_Lehtinen|11 years ago|reply
If you like to play with logic stuff, this is something to try out: http://www.neuroproductions.be/logic-lab/ It's simple, but does it job pretty visually.
[+] leni536|11 years ago|reply
Really nice, however I there is some buggy behavior in this logic simulation: It can end up in an inconsistent state:

I have a little Robot Odyssey experience where it would loop forever between inconsistent states. However that design is not perfect either, it's still much better than this in my opinion.

The interface is quite nice though.

[+] Gravityloss|11 years ago|reply
That's awesome! The making of layout is quite effortless.
[+] IgorPartola|11 years ago|reply
What Minecraft could really use would be a scripting capability of some sort. Basically, once you've figured out how to do something, you should be able to build a machine that does it for you. That would be a pretty sweet game.
[+] munimkazia|11 years ago|reply
What minecraft needs is a way to speed up the game. There have been quite a few people who have made calculators and "electronic" components, which would be a lot more cooler if they could work faster.
[+] linker3000|11 years ago|reply
If he can shorten the duration of the redstone signals to be very small pulses, he'd have a 'flash' drive!

/Working with PCIe flash memory products, so getting a kick..etc..

//Sorry

[+] Fando|11 years ago|reply
What type of circuits are technically possible to build in Minecraft? Could one build a basic CPU with RAM, HDD, and BUS? What is the limit of what one could build?