Sonic Pi støtter følgende grunnleggende samhandlinger med Minecraft Pi:
La oss se på hver av disse etter tur.
Let’s see just how easy it is to control Minecraft Pi from Sonic Pi. First, make sure you have both Minecraft Pi and Sonic Pi open at the same time and also make sure you’ve entered a Minecraft world and can walk around.
In a fresh Sonic Pi buffer simply enter the following code:
mc_message "Hello from Sonic Pi"
When you hit the Run button, you’ll see your message flash up on the Minecraft window. Congratulations, you’ve written your first Minecraft code! That was easy wasn’t it.
Now, let’s try a little magic. Let’s teleport ourselves somewhere! Try the following:
mc_teleport 50, 50, 50
When you hit Run - boom! You’re instantly transported to a new place. Most likely it was somewhere in the sky and you fell down either to dry land or into water. Now, what are those numbers: 50, 50, 50
? They’re the coordinates of the location you’re trying to teleport to. Let’s take a brief moment to explore what coordinates are and how they work because they’re really, really important for programming Minecraft.
Imagine a pirate’s map with a big X
marking the location of some treasure. The exact location of the X
can be described with two numbers - how far along the map from left to right and how far along the map from bottom to top. For example 10cm
across and 8cm
up. These two numbers 10
and 8
are coordinates. You could easily imagine describing the locations of other stashes of treasure with other pairs of numbers. Perhaps there’s a big chest of gold at 2
across and 9
up…
Mens i Minecraft er to tall ikke helt nok. Vi trenger også å vite hvor høyt vi er. Vi trenger derfor tre tall:
x
z
y
Og forresten - vi beskriver typisk disse koordinatene i denne rekkefølgen x
, y
, z
.
La oss leke med koordinater. Naviger til en fin plass i Minecraft-kartet og bytt så over til Sonic Pi. Skriv deretter inn følgende:
puts mc_location
Når du trygger på Kjør-knappen vil du se koordinatene til din gjeldende posisjon vist frem i loggvinduet. Merk deg dem og beveg deg fremover i verden og forsøk igjen. Merk hvordan koordinatene endret seg! Nå anbefaler jeg at du bruker litt tid til å gjenta akkurat dette - flytt litt i verden, titt på koordinatene og gjenta. Gjør dette helt til du har en følelse om hvordan koordinatene endrer seg når du beveger deg. Når du har forstått hvordan koordinater virker vil programmering med Minecraft-API-et være enkelt.
Nå når du vet hvordan du finner gjeldende posisjon og kan teleportere ved hjelp av koordinater, har du alle verktøyene du trenger for å gå i gang med å bygge ting i Minecraft med programmering. Lå oss si at du vil få blokken med koordinater 40
, 50
, 60
til å bli glass. Det er superenkelt:
mc_set_block :glass, 40, 50, 60
Haha, det er virkelig så enkelt. For å se håndverket ditt trenger du bare teleportere til et sted i nærheten og ta en titt:
mc_teleport 35, 50, 60
Nå kan du snu deg rundt og der bør du se glassblokken din. Forsøk å endre den til diamant:
mc_set_block :diamond, 40, 50, 60
Hvis du tittet i riktig retning kan du til og med ha sett at den endret deg foran øynene på deg. Dette er starten på noe fantastisk…
Let’s look at one last thing before we move onto something a bit more involved. Given a set of coordinates we can ask Minecraft what the type of a specific block is. Let’s try it with the diamond block you just created:
puts mc_get_block 40, 50, 60
Yey! It’s :diamond
. Try changing it back to glass and asking again - does it now say :glass
? I’m sure it does :-)
Before you go on a Minecraft Pi coding rampage, you might find this list of available block types useful:
:air
:stone
:grass
:dirt
:cobblestone
:wood_plank
:sapling
:bedrock
:water_flowing
:water
:water_stationary
:lava_flowing
:lava
:lava_stationary
:sand
:gravel
:gold_ore
:iron_ore
:coal_ore
:wood
:leaves
:glass
:lapis
:lapis_lazuli_block
:sandstone
:bed
:cobweb
:grass_tall
:flower_yellow
:flower_cyan
:mushroom_brown
:mushroom_red
:gold_block
:gold
:iron_block
:iron
:stone_slab_double
:stone_slab
:brick
:brick_block
:tnt
:bookshelf
:moss_stone
:obsidian
:torch
:fire
:stairs_wood
:chest
:diamond_ore
:diamond_block
:diamond
:crafting_table
:farmland
:furnace_inactive
:furnace_active
:door_wood
:ladder
:stairs_cobblestone
:door_iron
:redstone_ore
:snow
:ice
:snow_block
:cactus
:clay
:sugar_cane
:fence
:glowstone_block
:bedrock_invisible
:stone_brick
:glass_pane
:melon
:fence_gate
:glowing_obsidian
:nether_reactor_core