Tu écriras mon nom ...

Copie cette fonction, et colle là dans l'éditeur

var utils = require('utils');
var tag = function() {
  var player = utils.player("TONPSEUDO");
  if ( player ) {
    var drone = new Drone(utils.getMousePos(player));
    drone.left(10).blocktype(player.name, blocks.wool.red);
  }
}

Remplace 'TONPSEUDO' par ton pseudo.

À quoi cette fonction peut-elle bien servir ?

Pour le savoir, essaye-là : Il suffit d'ajouter une ligne exports..., de tapper T, puis /js MonPseudo.tag().

C'est réussi ? Bravo ! Tu viens d'appeler la fonction tag.

Et si on faisait différement ?

En base du programme commencé plus haut, ajoute cette ligne :

events.playerArmSwing(tag);

Sauve ton programme. retourne dans minecraft, et clique sur un bloc, de manière que ton personnage bouge le bras.

Que se passe-t-il ?

Réponse : La fonction tag a été appelée, mais pas par toi ! C'est Minecraft qui a appelé ta fonction tout seul !

Avec la ligne précédent, on a dit à Minecraft d'appeler la fonction tag, à chaque fois qu'on bouge le bras.

Autrement dit, on a dit à Minecraft d'accrocher notre fonction aux événements de type "un joueur bouge le bras".

Les problèmes commence.

Le plus amusant : demande à ton voisin ou ta voisine de bouger le bras, et regarde ton écran ... ça marche aussi !

Bon, si tout le monde commence à cliquer ... ça va devenir difficile de jouer.

Que faire pour que tag écrive devant la personne qui a bougé le bras ? (plutôt que devant toi)

Quand Minecraft appelle une fonction que nous avons accroché à un type d'événement, il nous aide en nous donnant un événement (event) qui apporte tous les indices dont on a besoin.

Dans le cas du type d'événement "un joueur bouge le bras", l'indice répond à "quel joueur à bougé le bras ?" (event.player)

Modifie la fonction tag comme ceci :

var utils = require('utils');
var tag = function(event) {
  player = event.player;
  if ( player ) {
    var drone = new Drone(utils.getMousePos(player));
    drone.left(10).blocktype(player.name, blocks.wool.red);
  }
}
events.playerArmSwing(tag);

Et demande à ton voisin de cliquer ... est-ce que ça marche ?

Bouge !

Il y a plein d'événements auxquels ont peut accrocher des fonctions :

Le type d'événement un joueur s'est déplacé (playerMove), qui contient les indices :

  • event.player : quel joueur s'est déplacé ?
  • event.to : où arrive-t-il ?
  • event.from : d'où vient-il ?

Exemple :

function laisseUneTrace(event) {
  if (event.player.onGround) {
    move(event.from).down(1).box(blocks.gold);
  }
}
events.playerMove(laisseUneTrace);

Clique

Il y a plein d'événements auxquels ont peut accrocher des fonctions :

Le type d'événement un joueur a cliqué avec le bouton droit (playerMove), qui contient les indices :

  • event.player : quel joueur a cliqué ?
  • event.blockClicked : sur quel bloc a-t-il cliqué ?
var cEstQuoi = function(event) {
  echo(event.player, "Ce bloc est de type " + event.blockClicked.type);
};
events.blockRightClick(cEstQuoi);