MagPI 11 Page 18

De Le French MagPi
Aller à : Navigation, rechercher

En utilisant le programme que nous avons écrit, vous pouvez vous assurer que tout fonctionne. Lancez Minecraft et créez un monde (ou entrez dans un monde existant). Appuyez sur ALT+TAB pour basculer sur votre éditeur. Si vous utilisez Idle, sélectionnez "Run Module" dans le menu Run. Si tout a été correctement configuré, vous devriez voir le message "Bonjour Monde de Minecraft" dans le jeu.

L'interaction avec le joueur est réalisée avec la classe player de l'objet mc qui nous permet de récupérer et changer la position du joueur. Le bloc de code suivant trouve la position du joueur en appelant la méthode getPos() qui renvoie un objet comportant des champs x, y et z pour les coordonnées. La méthode setPos() est ensuite utilisée pour déplacer le joueur de 50 cases vers le haut, en ajoutant 50 à la coordonnée y du joueur. Nous faisons ensuite une pause, de manière à laisser au joueur le temps de tomber au sol !

playerPos = mc.player.getPos()
mc.player.setPos(playerPos.x, playerPos.y + 50, playerPos.z)
mc.postToChat("Ne regardez pas en bas")
time.sleep(5)

Vous pouvez utiliser la position du joueur comme point de repère pour les interactions avec les blocs. De cette manière, vous pouvez trouver le bloc sur lequel le joueur se tient ou placer des blocs autour du joueur. Il y a cependant une difficulté car les coordonnées x,y,z du joueur renvoyées par la méthode getPos() sont des nombres à virgule (soit du type float) puisque le joueur peut se tenir au milieu d'un bloc. Pour agir sur les blocs, nous devons manipuler des nombres entiers (de type integer), donc nous devons appeler la méthode getTilePos() qui renvoie le bloc (ou tuile, tile en anglais) sur lequel se tient le joueur.

Le code suivant récupère la position de la tuile du joueur. Il appelle ensuite la méthode getBlock() de l'API Minecraft pour connaître le type du bloc sur lequel se tient le joueur (en soustrayant 1 à la coordonnée y) avant d'utiliser setBlock() pour créer des blocs de ce type autour du joueur. Donc si le joueur se tient sur un bloc DIRT (terre en anglais), il finira entouré de terre, mais s'il se tient sur un bloc STONE (pierre en anglais), de la pierre va apparaître.

playerTilePos = mc.player.getTilePos()
blockBelowPlayerType = mc.getBlock(playerTilePos.x, playerTilePos.y - 1, playerTilePos.z)
mc.setBlock(playerTilePos.x + 1, playerTilePos.y + 1, playerTilePos.z, blockBelowPlayerType)
mc.setBlock(playerTilePos.x, playerTilePos.y + 1, playerTilePos.z + 1, blockBelowPlayerType)
mc.setBlock(playerTilePos.x - 1, playerTilePos.y + 1, playerTilePos.z, blockBelowPlayerType)
mc.setBlock(playerTilePos.x, playerTilePos.y + 1, playerTilePos.z - 1,  blockBelowPlayerType)
mc.postToChat("Je vous ai piégé")
time.sleep(5)

Nous avons maintenant piégé notre joueur entre 4 blocs (s'il ne s'est pas échappé !); pour le libérer, nous devons enlever un bloc. L'effacement de blocs se fait en appelant setBlock(), mais au lieu de faire un bloc solide, comme WOOD (bois en anglais) ou STONE (pierre), nous faisons apparaître de l'AIR.

mc.setBlock(playerTilePos.x + 1, payerTilePos.y + 1, playerTilePos.z, block.AIR)
mc.postToChat("Je vous libère")
time.sleep(5)

On peut trouver une liste exhaustive des blocs disponibles dans la spécification de l'API Minecraft ou dans le module block.py dans la bibliothèque de l'API Python : ~/mcpi/api/python/mcpi/block.py.

L'API vous permet aussi de créer plusieurs blocs à la fois, en vous donnant la possibilité de créer très rapidement des cubes avec la méthode setBlocks(). Cela fonctionne en spécifiant deux jeux de coordonnées x,y,z entre lesquels on remplit l'espace avec des blocs du type passé en dernier paramètre. Le code suivant crée un sol de diamant sous notre joueur de 50 blocs (de largeur) x 1 bloc (d'épaisseur) x 50 blocs (de longueur), avec notre joueur au milieu (à 25 blocs des bords).

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Boîte à outils