I. Structure de l'API▲
-
minecraft.py
-
Classe Minecraft - classe principale pour se connecter au jeu et interagir avec lui
- Classe camera - changement de l'angle de vue de la caméra et de sa position
- Classe player - obtenir et modifier la position et les caractéristiques des joueurs
- Classe entity - obtenir et modifier la position et les caractéristiques des entités
- Classe events - récupérer les événements qui ont eu lieu au cours du jeu
-
-
block.py
- Classe Block - définition d'un bloc, en particulier de son type
-
event.py
- Classe BlockEvent - définition d'un événement de bloc, en particulier quel événement, quel bloc et quel joueur
-
vec3.py
- Classe Vec3 - classe générique pour gérer un vecteur de coordonnées à trois dimensions (à savoir x, y, z)
- connection.py - module interne utilisé par l'API
- util.py - module interne utilisé par l'API
II. Compatibilité▲
Les fonctions et les types de blocs ne sont pas tous disponibles sur toutes les versions de l'API. Pour chaque fonction, un logo vous indiquera si cette fonction est disponible pour votre version de l'API :
Disponible sur l'édition Minecraft Pi |
|
Disponible sur RaspberryJuice |
III. Le monde Minecraft : Minecraft▲
Minecraft est la classe principale pour interagir avec le monde Minecraft. Elle comprend les fonctions pour établir une connexion, modifier les joueurs et enregistrer les événements.
III-A. create▲
.create
(
address =
"localhost"
, port =
4711
)
Crée une connexion à Minecraft (adresse, port) => un objet Minecraft
# utilise les adresse et port par défaut
mc =
minecraft.Minecraft.create
(
)
# spécifie une adresse IP et un port
mc =
minecraft.Minecraft.create
(
"192.168.1.1"
, 4711
)
# l'objet mc créé sera utilisé dans les exemples de code ci-dessous
III-B. getBlock▲
.getBlock
(
x,y,z)
Récupère l'identifiant d'un bloc (coordonnées x, y et z) => id:int
# récupère le type de bloc en position 0,0,0
blockType =
mc.getBlock
(
0
,0
,0
)
III-C. getBlocks▲
.getBlocks
(
x0,y0,z0,x1,y1,z1)
Récupère un « cuboïde » (parallélépipède rectangle) de blocs (x0,y0,z0,x1,y1,z1) => [id:int]
# récupère les identifiants des blocs d'un cuboïde
blocks =
mc.getBlocks
(-
1
,-
1
,-
1
,1
,1
,1
)
for
block in
blocks:
print
block
III-D. getBlockWithData▲
.getBlockWithData
(
x,y,z)
Récupère un objet et ses données (x,y,z) => Block
# récupère l'objet block du bloc se trouvant aux coordonnées 0,0,0
blockObj =
mc.getBlockWithData
(
0
,0
,0
)
III-E. setBlock▲
.setBlock
(
x,y,z)
Place un bloc de type id aux coordonnées x, y, z : (x,y,z,id,[data])
III-F. setBlocks▲
.setBlocks
(
x0,y0,z0,x1,y1,z1,blockType, blockData)
Remplit un « cuboïde » (parallélépipède) de blocs
# place plusieurs blocs d'un seul coup et remplit tout l'espace
# entre deux ensembles de coordonnées x, y et z
mc.setBlocks
(-
1
, -
1
, -
1
, 1
, 1
, 1
, block.STONE.id)
III-G. getHeight▲
.getHeight
(
x,z)
Récupère l'altitude de coordonnées horizontales (x,z) => int
# détermine la coordonnée verticale y du point de coordonnées
# horizontales x, z représentant le bloc (autre que de l'air)
# le plus élevé
y =
mc.getHeight
(
0
,0
)
III-H. getPlayerEntityIds▲
.getPlayerEntityIds
(
)
Récupère l'identifiant d'entité des joueurs connectés au jeu => [id:int]
# Récupère l'identifiant des joueurs connectés au jeu
entityIds =
mc.getPlayerEntityIds
(
)
for
entityId in
entityIds:
print
entityId
III-I. getPlayerEntityId▲
.getPlayerEntityId
(
playerName)
Récupère l'identifiant d'entité d'un joueur nommé => [id:int]
# Récupère l'identifiant d'entité du joueur appelé 'martinohanlon'
entityId =
mc.getPlayerEntityId
(
"martinohanlon"
)
print
entityId
III-J. saveCheckpoint▲
.saveCheckpoint
(
)
Sauvegarde un point de contrôle qui peut être utilisé pour restaurer un état du jeu
mc.saveCheckpoint
(
)
III-K. restoreCheckpoint▲
.restoreCheckpoint
(
)
Restaure l'état du jeu au moment de la sauvegarde d'un point de contrôle
mc.restoreCheckpoint
(
)
III-L. postToChat▲
.postToChat
(
message)
Poste un message dans la fenêtre de message du jeu
# Écrit 'Hello Minecraft World' dans la fenêtre de message
mc.postToChat
(
"Hello Minecraft World"
)
III-M. setting▲
.setting
(
setting, status)
Configure un monde (setting, status). Clefs : world_immutable, nametags_visible
# passe le réglage world_immutable (monde non modifiable) à Vrai
mc.setting
(
"world_immutable"
, True
)
# passe le réglage nametags_visible (étiquettes de noms visibles) à Faux
mc.setting
(
"nametags_visible"
, False
)
IV. Le joueur : Minecraft.player▲
IV-A. getPos▲
.getPos
(
)
Récupère la position du joueur dans le monde sous la forme d'un Vec3 de nombres en virgule flottante (nombres décimaux). Si le joueur est au milieu d'un bloc, renvoie la coordonnée x.5.
# Récupère la position du joueur sous la forme de nombres en virgule flottante
playerPos =
mc.player.getPos
(
)
IV-B. setPos▲
.setPos
(
x,y,z)
Déplace un joueur à la position désignée par les coordonnées passées en paramètres ([x,y,z])
# Place le joueur à la position désignée (nombres en virgule flottante)
mc.player.setPos
(
0.0
,0.0
,0.0
)
IV-C. getTilePos▲
.getTilePos
(
)
Récupère la position de la « tuile » sur laquelle se trouve le joueur
# Récupère la position de la tuile où se trouve le joueur
playerTile =
mc.player.getTilePos
(
)
IV-D. setTilePos▲
.setTilePos
(
x,y,z)
Déplace le joueur à la position dans le monde de la tuile en passant des coordonnées ([x,y,z])
# Fixe la position de la tuile sur laquelle se trouve le joueur
mc.player.setTilePos
(
0
,0
,0
)
IV-E. setting▲
.setting
(
setting, status)
Configure un joueur (setting, status). Clefs : autojump
# Passe le réglage autojump à Vrai
mc.player.setting
(
"autojump"
, True
)
IV-F. getRotation▲
.getRotation
(
)
Récupère l'angle de rotation dans le plan horizontal (0 à 360°) du joueur => [angle:float]
# Récupère l'angle de rotation du joueur (azimutal)
angle =
mc.player.getRotation
(
)
print
angle
IV-G. getPitch▲
.getPitch
(
)
Récupère l'angle dans le plan vertical (-90 à 90°) du joueur => [pitch:float]
# Récupère l'angle vertical (inclinaison ou angle de cabrage)
pitch =
mc.player.getPitch
(
)
print
pitch
IV-H. getDirection▲
.getDirection
(
)
Récupère le vecteur unitaire des x, y, z de la direction (cap) du joueur => [Vec3]
# récupère la direction du joueur
direction =
mc.player.getDirection
(
)
print
direction
V. Entités (autres joueurs) : Minecraft.entity▲
Les fonctions relatives aux entités sont utilisées de concert avec la fonction .getPlayerEntityIds
(
) pour interagir avec une entité (les joueurs) d'un jeu. Ces fonctions sont utiles en jeu multijoueur.
Pour obtenir les identifiants d'entité des joueurs connectés au jeu :
# obtenir les identifiants d'entité des joueurs connectés au jeu
entityIds =
mc.getPlayerEntityIds
(
)
PremierId =
entityIds[0
]
SecondId =
entityIds[1
]
# ...
V-A. getPos▲
.getPos
(
entityId)
Récupère la position d'une entité dans le monde, sous la forme d'un Vec3 de nombres en virgule flottante (nombres décimaux). Si une entité est au milieu d'un bloc, renvoie une valeur du type x.5.
# Récupère la position d'une entité (nombres en virgule flottante)
entityPos =
mc.entity.getPos
(
entityId)
V-B. setPos▲
.setPos
(
entityId,x,y,z)
Déplace une entité à une position dans le monde, en passant les coordonnées de cette position
# place les joueurs aux positions désignées par les coordonnées
# (nombres en virgule flottante)
mc.player.setPos
(
entityId,0.0
,0.0
,0.0
)
V-C. getTilePos▲
.getTilePos
(
entityId)
Récupère la position de la « tuile » sur laquelle se trouve l'entité
# récupère la position de la tuile où se trouve l'entité
entityTile =
mc.entity.getTilePos
(
entityId)
V-D. setTilePos▲
.setTilePos
(
entityId, x,y,z)
Déplace l'entité à une position de tuile dans le monde en passant des coordonnées ([x,y,z])
# fixe la position de la tuile sur laquelle se trouve l'entité
mc.player.setTilePos
(
entityId,0
,0
,0
)
V-E. getRotation▲
.getRotation
(
entityId)
Récupère l'angle de rotation dans le plan horizontal (0 à 360°) de l'entité => [angle:float]
# récupère l'angle de rotation de l'entité
angle =
mc.entity.getRotation
(
entityId)
print
angle
V-F. getPitch▲
.getPitch
(
entityId)
Récupère l'angle dans le plan vertical (-90 à 90°) d'une entité => [pitch:float]
# Récupère l'angle vertical (angle de cabrage) de l'entité
pitch =
mc.entity.getPitch
(
entityId)
print
pitch
V-G. getDirection▲
.getDirection
(
entityId)
Récupère le vecteur unitaire des x, y, z de la direction (cap) du joueur => [Vec3]
# récupère la direction d'une entité
direction =
mc.entity.getDirection
(
entityId)
print
direction
VI. Caméra (Minecraft.camera)▲
VI-A. setNormal▲
.setNormal
(
entityId)
Configure la caméra en mode Minecraft normal (vision du joueur) ([entityId])
# Configure la caméra en mode normal pour un joueur
mc.camera.setNormal
(
entityId)
VI-B. setFixed▲
.setFixed
(
)
Configure la caméra en mode vue fixe
# Configure la caméra en mode vue fixe
mc.camera.setFixed
(
)
VI-C. setFollow▲
.setFollow
(
entityId)
Configure la caméra en mode suivi d'une entité ([entityId])
# configure la caméra pour suivre un joueur spécifique
mc.camera.setFollow
(
entityId)
VI-D. setPos▲
.setPos
(
x,y,z)
Configure la position de l'entité caméra (x,y,z)
# place la caméra à une position spécifique de coordonnées x, y, z
mc.camera.setPos
(
0
,0
,0
)
VII. Événements Minecraft (Minecraft.events)▲
VII-A. pollBlockHits▲
.pollBlockHits
(
)
Frappes de blocs (déclenchées uniquement par l'épée) => [BlockEvent]
# récupère les frappes de bloc qui ont eu lieu depuis la dernière
# fois que la fonction a été exécutée
blockEvents =
mc.events.pollBlockHits
(
)
for
blockEvent in
blockEvents:
print
blockEvent
VII-B. clearAll▲
.clearAll
(
)
Efface tous les événements anciens
# efface les événements anciens
mc.events.clearAll
(
)
VIII. Block▲
Le tableau ci-dessous donne la définition d'un bloc dans Minecraft, utilisée pour décrire le type de bloc (pierre, air, herbe, etc.) et, le cas échéant ses données, c'est-à-dire ses propriétés supplémentaires. Il contient aussi les constantes pour les identifiants de types de blocs, par exemple BLOCK.AIR.id.
# crée un bloc d'un type spécifique
blockObj =
block.Block
(
id)
# crée un bloc d'un type spécifique et applique une donnée
blockObj =
block.Block
(
id, data)
VIII-A. Identifiants (id)▲
.id
L'identifiant (id) du type d'un bloc.
Type (nom officiel) |
ID |
Type en français |
AIR |
Block(0) |
Air |
STONE |
Block(1) |
Roche |
GRASS |
Block(2) |
Herbe |
DIRT |
Block(3) |
Terre |
COBBLESTONE |
Block(4) |
Pierre |
WOOD_PLANKS |
Block(5) |
Planche |
SAPLING |
Block(6) |
Pousse d'arbre |
BEDROCK |
Block(7) |
Bedrock |
WATER_FLOWING |
Block(8) |
Eau |
WATER |
WATER_FLOWING |
Eau |
WATER_STATIONARY |
Block(9) |
Eau stationnaire |
LAVA_FLOWING |
Block(10) |
Lave |
LAVA |
LAVA_FLOWING |
Lave |
LAVA_STATIONARY |
Block(11) |
Lave stationnaire |
SAND |
Block(12) |
Sable |
GRAVEL |
Block(13) |
Gravier |
GOLD_ORE |
Block(14) |
Minerai d'or |
IRON_ORE |
Block(15) |
Minerai de fer |
COAL_ORE |
Block(16) |
Minerai de charbon |
WOOD |
Block(17) |
Bois |
LEAVES |
Block(18) |
Feuillage |
GLASS |
Block(20) |
Verre |
LAPIS_LAZULI_ORE |
Block(21) |
Minerai de lapis-lazuli |
LAPIS_LAZULI_BLOCK |
Block(22) |
Bloc de lapis-lazuli |
SANDSTONE |
Block(24) |
Grès |
BED |
Block(26) |
Lit |
COBWEB |
Block(30) |
Toile d'araignée |
GRASS_TALL |
Block(31) |
Herbe haute |
WOOL |
Block(35) |
Laine |
FLOWER_YELLOW |
Block(37) |
Pissenlit |
FLOWER_CYAN |
Block(38) |
Fleur cyan |
MUSHROOM_BROWN |
Block(39) |
Champignon brun |
MUSHROOM_RED |
Block(40) |
Champignon rouge |
GOLD_BLOCK |
Block(41) |
Bloc d'or |
IRON_BLOCK |
Block(42) |
Bloc de fer |
STONE_SLAB_DOUBLE |
Block(43) |
Double dalle |
STONE_SLAB |
Block(44) |
Dalle |
BRICK_BLOCK |
Block(45) |
Bloc de brique d'argile |
TNT |
Block(46) |
TNT |
BOOKSHELF |
Block(47) |
Bibliothèque |
MOSS_STONE |
Block(48) |
Pierre moussue |
OBSIDIAN |
Block(49) |
Obsidienne |
TORCH |
Block(50) |
Torche |
FIRE |
Block(51) |
Feu |
STAIRS_WOOD |
Block(53) |
Escalier de bois |
CHEST |
Block(54) |
Coffre |
DIAMOND_ORE |
Block(56) |
Minerai de diamant |
DIAMOND_BLOCK |
Block(57) |
Bloc de diamant |
CRAFTING_TABLE |
Block(58) |
Établi |
FARMLAND |
Block(60) |
Terre labourée |
FURNACE_INACTIVE |
Block(61) |
Fourneau |
FURNACE_ACTIVE |
Block(62) |
Fourneau en utilisation |
DOOR_WOOD |
Block(64) |
Porte en bois |
LADDER |
Block(65) |
Échelle |
STAIRS_COBBLESTONE |
Block(67) |
Escalier de pierre |
DOOR_IRON |
Block(71) |
Porte en fer |
REDSTONE_ORE |
Block(73) |
Minerai de redstone |
SNOW |
Block(78) |
Neige |
ICE |
Block(79) |
Glace |
SNOW_BLOCK |
Block(80) |
Bloc de neige |
CACTUS |
Block(81) |
Cactus |
CLAY |
Block(82) |
Bloc d'argile |
SUGAR_CANE |
Block(83) |
Canne à sucre |
FENCE |
Block(85) |
Barrière |
GLOWSTONE_BLOCK |
Block(89) |
Bloc de glowstone |
BEDROCK_INVISIBLE |
Block(95) |
Bedrock invisible |
STONE_BRICK |
Block(98) |
Brique de pierre |
GLASS_PANE |
Block(102) |
Vitre |
MELON |
Block(103) |
Bloc de pastèque |
FENCE_GATE |
Block(107) |
Portillon |
GLOWING_OBSIDIAN |
Block(246) |
Obsidienne flamboyante |
NETHER_REACTOR_CORE |
Block(247) |
Cœur de réacteur du Nether |
VIII-B. Données▲
.data
Les données (sous-types ou propriétés supplémentaires) de certains types de blocs.
VIII-B-1. Couleurs des blocs de type WOOL (laine)▲
0 : White (blanc)
1 : Orange (orange)
2 : Magenta (magenta)
3 : Light Blue (bleu ciel)
4 : Yellow (jaune)
5 : Lime (vert clair)
6 : Pink (rose)
7 : Grey (gris)
8 : Light grey (gris clair)
9 : Cyan (cyan)
10 : Purple (violet)
11 : Blue (bleu)
12 : Brown (marron)
13 : Green (vert)
14 : Red (rouge)
15 : Black (noir)
VIII-B-2. Essences de bois des blocs de type WOOD▲
0 : Oak (chêne) (orienté haut-bas)
1 : Spruce (épicéa) (orienté haut-bas)
2 : Birch (bouleau) (orienté haut-bas)
Les essences ci-dessous ne sont pas disponibles sur le Pi :
3 : Jungle (orienté haut-bas)
4 : Oak (chêne) (orienté est-ouest)
5 : Spruce (épicéa) (orienté est-ouest)
6 : Birch (bouleau) (orienté est-ouest)
7 : Jungle (orienté est-ouest)
8 : Oak (chêne) (orienté nord-sud)
9 : Spruce (épicéa) (orienté nord-sud)
10 : Birch (bouleau)(orienté nord-sud)
11 : Jungle (orienté nord-sud)
12 : Oak (chêne) (écorce seule)
13 : Spruce (épicéa) (écorce seule)
14 : Birch (bouleau) (écorce seule)
15 : Jungle (écorce seule)
VIII-B-3. WOOD_PLANKS (Planches), non disponibles sur le Pi▲
0 : Oak (chêne)
1 : Spruce (épicéa)
2 : Birch (bouleau)
3 : Jungle
VIII-B-4. SAPLING (pousses d'arbres)▲
0 : Oak (chêne)
1 : Spruce (épicéa)
2 : Birch (bouleau)
3 : Jungle (jungle, pas sur le Pi)
VIII-B-5. GRASS_TALL (herbes hautes)▲
0 : Shrub (arbuste)
1 : Grass (herbe)
2 : Fern (fougère)
3 : Grass (couleur affectée par le biome, c'est-à-dire le type de végétation dominante de la région) (pas sur le Pi)
VIII-B-6. TORCH (torche)▲
1 : Pointing east (vers l'est)
2 : Pointing west (vers l'ouest)
3 : Pointing south (vers le sud)
4 : Pointing north (vers le nord)
5 : Facing up (vers le haut)
VIII-B-7. STONE_BRICK (pierres taillées)▲
0 : Stone brick (pierre taillée)
1 : Mossy stone brick (pierre taillée moussue)
2 : Cracked stone brick (pierre taillée craquelée)
3 : Chiseled stone brick (pierre sculptée)
VIII-B-8. STONE_SLAB / STONE_SLAB_DOUBLE (dalles, doubles dalles)▲
0 : Stone (roche)
1 : Sandstone (grès)
2 : Wooden (bois)
3 : Cobblestone (pierre)
4 : Brick (brique)
5 : Stone Brick (pierre taillée)
Les dalles suivantes ne sont pas disponibles sur le Pi
6 : Nether Brick (brique du Nether)
7 : Quartz (quartz)
VIII-B-9. SNOW_BLOCK (bloc de neige)▲
0-7 : Hauteur de la neige, 0 étant la plus faible et 7 la plus haute.
VIII-B-10. TNT▲
0 : Inactif
1 : Prêt à exploser
VIII-B-11. LEAVES (feuillage)▲
1 : Oak leaves (feuillage de chêne)
2 : Spruce leaves (feuillage d'épicéa)
3 : Birch leaves (feuillage de bouleau)
VIII-B-12. SANDSTONE (grès)▲
0 : Sandstone (grès)
1 : Chiseled sandstone (grès gravé)
2 : Smooth sandstone (grès poli)
VIII-B-13. STAIRS_[COBBLESTONE, WOOD] (matériaux d'escalier)▲
0 : Ascending east - montant vers l'est
1 : Ascending west - montant vers l'ouest
2 : Ascending south - montant vers le sud
3 : Ascending north - montant vers le nord
4 : Ascending east (upside down) - montant vers l'est (à l'envers)
5 : Ascending west (upside down) - montant vers l'ouest (à l'envers)
6 : Ascending south (upside down) - montant vers le sud (à l'envers)
7 : Ascending north (upside down) - montant vers le nord (à l'envers)
VIII-B-14. LADDERS, CHESTS, FURNACES, FENCE_GATE (échelles, coffres, fourneaux, portillon)▲
2 : Vers le nord
3 : Vers le sud
4 : Vers l'ouest
5 : Vers l'est
VIII-B-15. [WATER, LAVA]_STATIONARY (eau ou lave stationnaire)▲
0-7 : Niveau de l'eau, 0 le plus élevé, 7 le plus bas
VIII-B-16. NETHER_REACTOR_CORE (cœur du réacteur du Nether)▲
0 : Non utilisé
1 : Actif
2 : Arrêté/en fin de vie
IX. Événement de bloc (BlockEvent)▲
La définition d'un Blockevent dans Minecreaft, utilisé pour décrire les événements affectant les blocs ; renvoyé par la méthode Minecraft.events.pollBlockHits
(
).
blockEvent =
mc.events.pollBlockHits
(
)
IX-A. type▲
.type
Type d'événement de bloc. Il n'y a qu'un seul type d'événement défini pour l'instant : BlockEvent.HIT
blockEventType =
blockEvent.type
IX-A-1. Types d'événements ▲
0 : BlockEvent.HIT
IX-B. pos▲
.pos
La position du bloc où l'événement a eu lieu, c'est-à-dire le bloc qui a été frappé. .pos renvoie un objet Vec3 de coordonnées x, y et z.
blockEventPos =
BlockEvent.pos
IX-C. face▲
.face
La face du bloc où l'événement a eu lieu.
blockEventFace =
BlockEvent.face
IX-D. entityId▲
.entityId
Identifiant d'entité du joueur à l'origine de l'événement de bloc, autrement dit le joueur qui a frappé le bloc.
blockEventPlayer -
BlockEvent.entityId
X. Vec3▲
La définition d'un vecteur de trois valeurs dans Minecraft. Il s'agit d'un ensemble de trois coordonnées x, y et z. Les coordonnées x et z sont les coordonnées dans le plan horizontal, et y est la coordonnée verticale (altitude).
position =
vec3.Vec
(
0
,0
,0
)
X-A. x▲
.x
Position selon l'axe des x
xPos =
position.x
X-B. y▲
.y
Position selon l'axe des y
yPos =
position.y
X-C. z▲
.z
Position selon l'axe des z
zPos =
position.y
XI. Notes de la rédaction de Developpez.com▲
Ce guide de l'API Python pour Minecraft Pi est une traduction de la référence API Minecraft écrit par Martin O'Hanlon. Des informations supplémentaires sont disponibles sur la page Minecraft de l'auteur.
Nous remercions les membres de la Rédaction de Developpez pour le travail de traduction et de relecture qu'ils ont effectué, en particulier :