Les évémements
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);