Once the PN532 Python library is installed you're ready to make NFC tags that build blocks in Minecraft!
There are two Python scripts included in the PN532 examples. One is mcpi_write.py and it's used to write a Minecraft block type to a MiFare classic card. The other script is mcpi_listen.py which listens for Minecraft blocks swiped against the PN532 and creates them in a running Minecraft game.
Since you'll be running Minecraft on the Pi you'll want to make sure the Pi is connected to a monitor and has a mouse and keyboard connected to it. If your Pi isn't connected to these devices yet, power it down and connect them, then power it back up so the monitor, keyboard, and mouse are working. Instead of connecting to the Pi over a network connection with SSH, use the mouse, keyboard, and monitor to directly control the terminal on the Raspberry Pi.
If your Raspberry Pi doesn't automatically boot to the graphical X windows environment then login to the Pi and run the following command to start the graphical environment:
startx
Now open a terminal in the X windows environment by clicking the Raspberry Pi Menu in the upper left and drilling in to the Accessories -> Terminal submenu. This terminal will be used to run the python scripts that follow.
Writing Minecraft Blocks to NFC Cards
Start by running the following commands to navigate to the PN532 examples folder and start the mcpi_write.py script:
cd ~/Adafruit_Python_PN532/examples sudo python mcpi_write.py
Once the script starts running it will walk you through choosing a Minecraft block type and writing it to a MiFare classic card. The first thing the script will display is a message telling you to place a card on the PN532:
Place a NFC tag / card on the PN532 and you should see the program detects it and moves to the next step:
Notice the warning to not remove the card until you have finished writing. If the card is removed during the writing process it could be corrupted!
Now you need to pick a block type to write to the card. At the menu you can type L and press enter to have a list of block types displayed. The complete list looks like:
Number Block name
------ ----------
0 Air
1 Bed
2 Bedrock
3 Bedrock, invisible
4 Bookshelf
5 Brick block
6 Cactus
7 Chest
8 Clay
9 Coal ore
10 Cobweb
11 Cobblestone
12 Crafting table
13 Diamond ore
14 Diamond block
15 Dirt
16 Door, iron
17 Door, wood
18 Farmland
19 Fence
20 Fence gate
21 Fire
22 Flower, yellow
23 Flower, cyan
24 Furnace, inactive
25 Furnace, active
26 Glowstone block
27 Gold block
28 Gold ore
29 Glass
30 Grass
31 Grass, tall
32 Glass pane
33 Glowing obsidian
34 Gravel
35 Ice
36 Iron block
37 Iron ore
38 Ladder
39 Lapis lazuli ore
40 Lapis lazuli block
41 Lava, flowing
42 Lava, stationary
43 Leaves
44 Melon
45 Moss stone
46 Mushroom, brown
47 Mushroom, red
48 Nether reactor core
49 Obsidian
50 Redstone ore
51 Sand
52 Sandstone
53 Sapling
54 Snow
55 Snow block
56 Stairs, wood
57 Stairs, cobblestone
58 Stone
59 Stone, brick
60 Stone slab
61 Stone slab, double
62 Sugar cane
63 Torch
64 TNT
65 Water, flowing
66 Water, stationary
67 Wood
68 Wood planks
69 Wool
For example to turn the card into a TNT block enter the number for TNT, 64, at the prompt and press enter. You should see a new menu appear that lists a few sub-types for the TNT block:
Some blocks, like this TNT block, have a subtype that you can choose. Other blocks have no subtype and will skip straight to the next step.
For the TNT block choose the 'Ready to explode' subtype with number 1 so that the block is active and can be exploded by swiping it with the sword in the game. Type 1 and press enter to choose the ready to explode subtype. Now you should see a confirmation screen like:
Now you need to confirm writing the TNT block to the card. Type Y and press enter to confirm the write (or type N and enter to abort the write and quit).
Don't worry if you accidentally write the wrong block type to a card. You can rewrite a new block type to a card at any time by running the mcpi_write.py script again.
After confirming the write you should see a successful card write message like below:
That's all you need to do to write a block type to a card! After the program quits you can safely remove the card from the PN532 breakout.
If you see an error message during the write, carefully check that the card is directly on top of the PN532's antenna and try running the mcpi_write.py script again.
You can run the mcpi_write.py script again to write other cards, or to change the block type written to a card. Note that a card can only have one block type written to it at a time. Also don't use NFC cards that have important data as it will likely be overwritten by the script!
Using Minecraft NFC Blocks
Now for some fun, let's run a script to start using the NFC blocks written in the previous step in Minecraft. First you'll want to run the mcpi_listen.py script to start the program that will listen for NFC blocks. Run the following in the same terminal you were using to run the previous script:
sudo python mcpi_listen.py
You should see the script display a message that it's waiting for a card to be swiped:
Even though Minecraft isn't yet running, try swiping a NFC card that was written earlier. You should see a message displayed with the block type and a warning that Minecraft isn't running:
Now run Minecraft on the Pi to test out the block in the game. With the terminal running the mcpi_listen.py script still open, click the Raspberry Pi menu in the upper left and drill down to the Games -> Minecraft Pi item. You should see Minecraft start to load on the screen.
Once Minecraft loads click the Start Game button to start a game and either choose an existing world or create a new one to start the game.
If you're new to Minecraft or the Raspberry Pi version of Minecraft be sure to read this tutorial on how to play. Experienced Minecraft players will want to note that the Pi edition of Minecraft only has the creative / building mode and not the survival mode with enemies and combat.
Once you're inside a Minecraft world and can see the player's view you're ready to try swiping one of the NFC cards with a block written to it. If you place a NFC card on the PN532 you should see your player start to move into the air. Look directly down at the player's feet and you'll see blocks are being created where the player is standing. Try moving around the world and you'll see blocks created along your path. Pull the card off the PN532 and blocks will stop being created.
Woo hoo, now you can create blocks in Minecraft by just swiping a NFC card! Try swiping other cards with different block types to see those blocks created in the Minecraft world. If you created ready to explode dynamite blocks then try hitting them with the sword a few times to make them flash and explode. Let your creativity flow by using NFC blocks to build amazing Minecraft creations!
When you're done playing Minecraft exit out of the program and return to the terminal that's running the mcpi_listen.py script. Press Ctrl-C to stop the script from running. Remember if you want to create blocks with NFC in future Minecraft games you must have the mcpi_listen.py script running the background.
Finally to complete the Minecraft building experience try making small papercraft Minecraft blocks that contain NFC tags. I found this page allows you to build a Minecraft block that can be printed, cut out, and glued or taped together to make a papercraft block. One thing to note is that the page doesn't seem to have an easy to use printing interface so you might need to take a screenshot of your completed block pattern, crop it in a graphic editor, and print the patten blown up on a piece of paper. Below you can see a few blocks I printed, cut out, and glued together with NFC cards inside:
Remember NFC cards have a small range and can even be embedded in plastic or other material (but not metal!). Try putting a NFC card inside a toy or other container to turn it into an object that interacts with Minecraft!
Page last edited March 20, 2015
Text editor powered by tinymce.