Hacker News new | comments | ask | show | jobs | submit login
Programming Minecraft on the Raspberry Pi (wolfram.com)
155 points by foxwoods 7 months ago | hide | past | web | favorite | 31 comments

I used to joke that Voxel Quest was just a fancy 3d graphing calculator. I think the entryway for a lot of students to become interested in math is to make rendering more accessible. Shadertoy is one step towards this, but SDF equations are much more difficult to grok than binary on/off voxel plotting, and they have to be mathematically sound or you get buggy looking results.

During my university times, I often used EvalDraw as quick 2D/3D graphing calculator:


You type in some C-ish code, it gets immediately executed and drawn. Instant feedback was a winner feature here. Graphing y=f(x) was AFAIR as simple as typing "(x)" in the first line and writing an expression in the next. "(x,t)" for time-varying singals, "(x,y)" for 2-d functions with values viewed as colors, "(x,y,z,&r,&g,&b)" for full-voxels, etc.

I don't even remember how this little program found its way to my hard drive, but I had a lot of good times with it.

Thanks so much for sharing this! This is awesome :D

Me and my boyfriend are both math nerds and will both love this :)

My first programming experience was using Logo on an Atari 800 as a 6 or 7 year old, and I instantly grasped the concept of a giving commands to a turtle with a pen.

It was as game-like as most entertainment software of its time, but it subtly forced me to learn some math in order to create complex shapes.

I think of Minecraft as a similarly clever idea.


I do not get why Logo went out of fashion. To me it is the king among learners.

The physicality of the Logo turtle robot we had at our school back in the eighties was what made it "click" for me. Playing with something connected to the real world takes it to another level.

Logo evolved into modern-day Scratch, which is included with the pi (raspbian).



Scratch is really great - do not get me wrong! But I find it too advanced. They do support various external hardware. And I can highly recommend the Make lock mbot. Truly awesome.

But Scratch is one step up the ladder to me. It is a commitment to an eco-system and a super nice but blank canvas.

I find Logo to be simpler and more limited. This is a "good thing"(tm) when getting kids hooked. The first hit should always be free :-)

I have gotten some of my non-technical friends to buy mbots. They like the idea but the learning curve was to steep for them.

There’s a subset of scratch that felt very logo like. My kids (5 and 7 at the time) readily picked it up.

Their hardest struggle was dragging the blocks around with the touchpad. It would have been less frustrating to have a keyboard-based interface I think. (Now that I type this, I realize maybe I should have tried a two button mouse for them.)

Logo is still available as a major mode of LibreOffice.

Another interesting environment to explore related to Minecraft is an open-source clone of that game: Minetest [1].

It allows extensions in the form of Lua scripts. There is an extension [2] that opens up a TCP socket which can be used to modify the environment in any language across the network. There is an accompanying Python library [3] that is quite accessible (I had to use the 2to3 tool to seamlessly convert it to Python 3 because of some dependency problem).

I've been trying to get it to work in WebAssembly (some notes here [4]) and maybe connect Blockly / Scratch to it, but unfortunately the WebAssembly shared memory model is postponed due to the Spectre and Meltdown debacle [5].

[1] https://www.minetest.net/

[2] https://github.com/sprintingkiwi/pycraft_mod

[3] https://github.com/sprintingkiwi/pycraft_lib

[4] https://news.ycombinator.com/item?id=14855176

[5] https://github.com/WebAssembly/meetings/blob/master/2018/CG-...

Lots of fun stuff you can program in Minecraft Pi Edition.

My son and I made a minecraft version of snake/tron where each player would leave behind a trail of TNT blocks as they ran around a closed arena. Hitting a TNT would set off such huge chain reaction of explosions that the raspberry pi couldn't handle it. After a few rounds of these explosions the minecraft world looks like a total wasteland.

I honestly wish they had some of that level of scripting for the desktop version too, I love the idea of doing Python with Minecraft. Plus fun ideas like that could scale a little better on a much more powered system.

have you seen Microsoft MakeCode? https://www.microsoft.com/en-us/research/blog/code-minecraft...


It's a scratch like programming environment that lets you do all kinds of cool things in Minecraft.

It may be a little outdated (works with minecraft 1.7), but this project replicates the pi functionality for the normal version of minecraft: https://github.com/kbsriram/mcpiapi

There is a custom plugin/language to extend vanilla Minecraft server transparently called Denizen. Custom yaml based scripts and even repl in-game

You can emulate it with a docker image and show the UI on your desktop..or build a QEMU image and play on your desktop!

That would be quite achievable with command blocks though...

This is fantastic. Minecraft is one of the big factors that made me want to learn Java (back when the game first came out), and indirectly spurred a lot of my own personal development. The easier they can make it, the better.

Minecraft, and in particular Bukkit (API for coding server plugins), is by far the single biggest factor in my own development as a programmer. Literally hundreds of hours spent coding plugins for my server, starting from copy-pasting tutorials in the early days and eventually being able to build fairly complex projects on my own. It's formed my personal belief that being able to visually see the effects of code and being able to write code that augments things that are already interesting are great ways to encourage young kids and teens to code.

Minecraft was (probably still is) one of the biggest factors for a lot of people to learn programming. Specially in the first years where it felt so genuinely indie: It had noticeable (but mostly harmless) bugs, and the famous notch was doing everything alone (don't think the solo phase lasted that long, but that's what the public thought).

My son wanted a own MC server to play with. And then he wanted all those plugins. So I had to learn how to code and compile java code. I had almost as much fun coding/compiling as my son had playing and cresting his world. The server I use is Spigot. Easy to get started with.

Snap! is an awesome scheme-like visual programming language that runs in the browser, which is a lot like Scratch (visual Logo), but like Scheme in that everything is first class, including functions, lexical closures, continuations, macros, special forms, user defined functions, control structures, etc.


ProgKids is a Russian site that integrates Snap! (and Python) with Minecraft, so kids can visually program 3d turtles that move around in the world and build things!


ProgKids. Строим дом, а потом ещё пару (Building a house, then another couple)


ProgKids. Куда же без зверей? (Why do you not have animals?)


ProgKids. Как работает Snap? (How does Snap work?)


Minecraft added a full set of command blocks (impulse, repeat, and chain) back in version 1.9 which allow players to make similar modifications to worlds, as well as create and equip entities with various items and behaviors. Basically you add a command to a command block in game, and then it executes when the command is activated. I think command blocks are an easier foray into coding in Minecraft although it would be nice to see more capabilities added in the future.

anyone know what API wolfram is using here to communicate with the minecraft client?

Minecraft Pi has a built-in connection with IDLE. Take a look: https://projects.raspberrypi.org/en/projects/getting-started...

Likely the Minecraft Pi Protocol [0].

It's a text-based protocol, so you can even use via telnet/nc. The python API included with pi is also just a thin wrapper around this.

[0]: http://wiki.vg/Minecraft_Pi_Protocol

There are mods for the java and android versions of Minecraft (Raspberry Juice Mod) that provide the API. The old, limited pi version if Minecraft has builtin python API support.

If you own the Minecraft Windows 10 Edition, you can download their "Code Connection" server and start coding right away in JavaScript.




Off topic:

What are some decent general tutorials for programming voxel games?

A related project, not limited to the Raspberry Pi: https://teachcraft.net/

Imagine running the winning MARLÖ model on this. That's going to turn a lot of heads (most likely going to attract attention from kids as well).

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact