We’ve just got a MakerBot Replicator and the boys naturally wanted to print their Minecraft creations.

To start, we installed minecraft.print. I actually installed this on their Ubuntu-based Minecraft server (Josh doesn’t have root access). Cloning it from GitHub was pretty simple and I installed the dependencies using apt-get and pip.

Josh did put marker blocks in the main Minecraft world with a speed an proficiency I couldn’t properly match. We then tried to run the script on the world.

Problem 1: Paths

It appears the minecraft.print scripts expect to run on a client, with the world file created as a result of a save in the Minecraft client. So expects the world file to be in ~/.minecraft/saves.

So just to get things working, we ran our backup script and then copied the world file in to ~/.minecraft/saves. I suspect we should really fix the script.

Problem 2: Large Worlds

Then we found the script was taking ages and ages to run as their main world is pretty large. So Josh used a smaller world (am unsure about the details on this).

I suspect they’ll copy what they want to print into smaller worlds as the script would take an appreciable time to run on their main world.

Problem 3: minecraft.print and Bukkit

The script ran and then kicked out an error saying something about a ChunkNotPresent:

…Run the command…
98.773402195%
99.4189799871%
100%
Congrats, looks like we have two markers

Capturing marked area… this may take a minute…
Traceback (most recent call last):
File “run.py”, line 7, in <module>
mp.generate()
File “/home/mc/minecraft.print/minecraft_print.py”, line 48, in generate
self.copy_marked_area()
File “/home/mc/minecraft.print/minecraft_print.py”, line 132, in copy_marked_area
chunk = self.world.getChunk(x_pos, z_pos)
File “/home/mc/minecraft.print/pymclevel/infiniteworld.py”, line 1470, in getChunk
chunkData = self._getChunkData(cx, cz)
File “/home/mc/minecraft.print/pymclevel/infiniteworld.py”, line 1431, in _getChunkData
data = self._getChunkBytes(cx, cz)
File “/home/mc/minecraft.print/pymclevel/infiniteworld.py”, line 1424, in _getChunkBytes
return self.worldFolder.readChunk(cx, cz)
File “/home/mc/minecraft.print/pymclevel/infiniteworld.py”, line 975, in readChunk
raise ChunkNotPresent((cx, cz))
pymclevel.mclevelbase.ChunkNotPresent: (-25, 82)

Turns out this was because their server runs Bukkit and the World format isn’t compatible with minecraft.print.

So Josh converted the world to the normal Minecraft format, and the script ran.

Success!

So now we have a .stl file with our object from the Minecraft world, which I can open in Makerbot’s Makerware. I need to resize the objects to get a decent size, it seems. I also wonder if we isn’t creating very solid objects which would be a waste of plastic and increase the printing time…

Problem 4: A stray block

The items we’ve printed so far have a block which we think is one of the marker blocks. As an example, see here on the top left in a screenshot from Makerware

I’m not sure what the printer will make of this, but ideally I can find some 3D editing software which will let me edit it… a subject for another post.

We’ll try printing our creations tomorrow.