# API básico do Minecraft Pi

O Sonic Pi suporta as seguintes iterações básicas com o Minecraft Pi:

- Visualizar mensagens de chat
- Definir a posição do jogador
- Receber a posição do jogador
- Colocar um determinado tipo de bloco numa determinada coordenada
- Verificar o tipo de bloco de determinada coordenada

Vamos ver cada uma delas à vez.

## Visualizar mensagens de chat

Vamos ver como é fácil controlar o Minecraft Pi a partir do Sonic Pi. Primeiro, verifica que temos o Minecraft Pi e o Sonic Pi abertos ao mesmo tempo e que entramos no mundo do Minecraft e nos podemos deslocar.

Numa nova buffer do Sonic Pi coloca o seguinte código:

    mc_message "Hello from Sonic Pi"

Quando pressionamos o botão Run, verás uma mensagem a piscar na janela do Minecraft. Parabéns, escreveste o teu primeiro código no Minecraft! Isto foi fácil não foi.

## Definir a posição do jogador

Agora vamos experimentar uma pequena magia. Vamos teleportar para outro sitio! Experimenta o seguinte:

    mc_teleport 50, 50, 50

Quando carregares no Run - Boom! És instantaneamente teleportado para um novo sitio. Mais provável algures no céu e caíste em terra seca ou para a água. Agora, o que são estes números: `50, 50, 50`? Eles são as coordenadas da localização que estás a tentar teleportar. Vamos tomar algum tempo para explorar que coordenadas são e como funcionam porque elas são realmente importante para programares o Minecraft.

## Coordenadas

Imagina um mapa de um pirata com um `X` grande marcando o local de algum tesouro. A localização exacta do `X` pode ser descrita com dois números - quando ao longo do mapa da esquerda para a direita e quanto ao longo do mapa do fundo para o topo. Por exemplo `10 cm` ao longo e `8 cm` para cima. Estes dois números `10` e `8` são coordenadas. Podes imaginar facilmente descreveres a localização de outros tesouros com outros pares de números. Talvez exista um grande baú de ouro em `2` ao longo e `9` para cima…

Agora, no Minecraft dois números não são suficientes. Necessitamos também saber a altura que estamos. Assim necessitamos 3 números:

- Quanto ao longo da direita para a esquerda estamos no mundo - `x`
- Quando ao longo da frente para trás estamos no mundo - `z`
- Quando alto estamos no mundo - `y`

Uma coisa a mais - tipicamente descrevemos estas coordenadas nesta ordem `x`,`y`,`z`.

## Descobrindo as coordenadas actuais

Vamos brincar com estas coordenadas. Navega para um sitio agradável no mapa do Minecraft e depois muda para o Sonic Pi. Agora escreve o seguinte:

    puts mc_location

Quando carregares no botão Run verás que as coordenadas da tua posição actual apresentadas na janela de log. Toma nota delas, depois move-te para a frente no mundo e tenta outra vez. Repara como as coordenadas mudaram! Agora, recomendo que passes algum tempo a repetir isto - move-te um pouco pelo mundo, verifica as coordenadas e repete. Faz isso até perceberes como as coordenadas mudam enquanto te moves. Uma vez que percebas isso, programar com o API do Minecraft será muito fácil.

## Vamos construir!

Agora que sabemos encontrar a posição actual e teleportar usando coordenadas, terás todas as ferramentas para começar a construir coisas com código Minecraft. Digamos que queres criar um bloco de vidro com coordenadas `40,` 50`,` 60`. É muito fácil:

    mc_set_block :glass, 40, 50, 60

Haha, foi muito fácil. Para ver o resultado teleporta-te para uma zona perto e dá uma olhada:

    mc_teleport 35, 50, 60

Agora volta-te e verás o teu bloco de vidro! Tenta muda-lo para um diamante:

    mc_set_block :diamond, 40, 50, 60

Se tiveres voltado para o lado correcto poderás ter visto a mudança a frente dos teus olhos! Isto é o principio de algo excitante…

## Observando os blocos

Vamos ver uma ultima coisa antes de seguirmos para algo mais evoluido. Dado um conjunto de coordenadas podemos perguntar ao Minecraft que tipo especifico de bloco é. Vamos experimentar com o bloco de diamante que acabamos de criar:

    puts mc_get_block 40, 50, 60

Yey! É um `:diamond`. Tenta mudar do movo para vidro e perguntar outra vez - agora diz `:glass`? Tenho a certeza que sim :-)

## Tipo de blocos disponíveis

Antes de ires num diluvio de código no Minecraft Pi, poderás achas a seguinte lista de tipo de blocos disponíveis útil:

        :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