Une partie de la solution consiste à utiliser le /stats
pour compter le nombre de flèches dans l'inventaire d'un joueur en utilisant la commande /clear
et définissez ce résultat comme un objectif du tableau d'affichage pour le joueur. Ensuite, il est assez simple de donner des flèches quand c'est nécessaire, et de les retirer. Voyons comment j'ai fait.
Tout d'abord, je fais ceci en 1.9, mais les commandes fonctionneront parfaitement en 1.8, avec un petit ajustement et une horloge de remplissage de 20Hz.
Nous avons besoin de 2 objectifs pour le tableau de bord : le nombre de flèches (que vous avez nommé ArrowN, je vais donc le garder dans mon exemple), et une variable de temporisation.
/scoreboard objectives add ArrowN dummy
/scoreboard objectives add Timer dummy
Ensuite, nous avons besoin d'une chaîne de blocs de commande, en commençant par un bloc de commande répétitif, suivi de plusieurs blocs de commande en chaîne. Réglez le bloc de commande répétitif sur "Needs Redstone", au moins pour le moment, et le reste sur "Always Activate". Les deux premières commandes, dans l'ordre, sont :
/scoreboard players remove #Timer Timer 1
/clear @a minecraft:arrow -1 0
#Timer
est un joueur fictif qui n'apparaîtra jamais sur le tableau d'affichage des scores, et il gardera la trace du moment où il faut distribuer les flèches. Il peut être judicieux de définir initialement son paramètre Timer
à 40, mais ce n'est pas strictement nécessaire. La deuxième commande comptera toutes les flèches qu'une personne a dans son inventaire, indépendamment du nombre de piles. Malheureusement, cela ne sert pas à grand-chose tant que ce compte n'est pas entré dans le tableau des scores. Pour ce faire, placez-vous sur le bloc de commande et entrez la commande suivante (via le chat) :
/stats block ~ ~-1 ~ set QueryResult @a ArrowN
Ainsi, chaque fois que le clear
est exécutée, le compte qu'elle trouve sera placé dans ce joueur. ArrowN
score.
Les trois commandes suivantes gèrent la minuterie de 2 secondes et distribuent les flèches. En 1.9, la première est inconditionnelle, tandis que les 2 autres sont conditionnelles. En 1.8, vous pouvez utiliser des comparateurs de chaque côté du premier bloc de commandes, mais c'est un peu inélégant.
/scoreboard players test #Timer Timer * 0
/scoreboard players set #Timer Timer 40
/give @a[score_ArrowN=1] minecraft:arrow
La première commande vérifie si le compteur a atteint 0 et, si c'est le cas, le remet à zéro (deuxième commande) et donne une flèche à tous les joueurs s'ils ont déjà au maximum une flèche (troisième commande).
Maintenant, il suffit de retirer les flèches aux personnes qui en ont trop. Ces commandes sont toutes inconditionnelles, de sorte qu'elles s'exécutent à chaque tick de jeu :
/clear @a[score_ArrowN_min=3] minecraft:arrow -1 1
/clear @a[score_ArrowN_min=12] minecraft:arrow -1 9
/clear @a[score_ArrowN_min=66] minecraft:arrow -1 54
Ces trois commandes retireront un total de 1 flèche si le joueur a entre 3 et 10, 10 flèches s'il a entre 12 et 66, et une pile entière s'il a 66 ou plus. Vous pouvez développer cette commande (et ajouter des intervalles plus fins) si vous trouvez que les flèches ne sont pas retirées assez rapidement, mais cela devrait prendre moins d'une seconde dans la plupart des cas.