Détecter quand le joueur attaque un autre joueur

Je voudrais détecter quand un joueur attaque / frappe / fait mal à un autre joueur ou entité. J'ai essayé d'utiliser la balise AttackTime , mais cela ne fonctionne pas. Voici ce que j'ai essayé (sur une horloge de 20 heures):

Premier bloc de commande:

 scoreboard players set @a Attack 0 {AttackTime:0s} 

Deuxième bloc de commande:

 scoreboard players set @a Attack 1 {AttackTime:1s} 

Troisième bloc de commande:

 tellraw @a[score_Attack_min=1] "Nice shot!" 

2 Solutions collect form web for “Détecter quand le joueur attaque un autre joueur”

J'ai compris comment faire cela. J'utilise l'objectif du tableau de bord de stat.damageDealt . D'abord, je lance la commande suivante une fois :

 /scoreboard objectives add hit stat.damageDealt 

Ensuite, sur l' horloge 20Hz, je fais ce qui suit:

  • Premier bloc de commande:

    /tellraw @a[score_hit_min=1] "Nice Hit!"

  • Deuxième bloc de commande:

    /scoreboard players reset @a[score_hit_min=1] hit

La façon dont cela fonctionne est que les points sont ajoutés à l'objectif stat.damageDealt chaque fois qu'ils frappent / attaquent / blessent une entité ou un joueur. Ensuite, il exécute la commande sur chaque joueur qui a blessé une autre entité ou joueur. Lorsque cette commande est terminée, l'objectif est réinitialisé.

Comment j'ai trouvé que c'est sur le menu des statistiques du menu de pause, il y a une statistique appelée Damage Dealt .

MODIFIER:

Dans Minecraft 1.9, utilisez le bloc de commande répétitif au lieu d'une horloge de 20Hz .

Cette réponse est basée sur la réponse de @ CommandFox et sur ma propre idée (totalement horrible) pour une solution. Cependant, j'ai constaté que la combinaison des deux ajoute une limitation possible pour blesser des entités spécifiques.

D'abord, créez deux objectifs: didDamage et hurtTime

 scoreboard objectives add didDamage stat.damageDealt scoreboard objectives add hurtTime dummy 

Ensuite, créez une horloge de remplissage et exécutez les commandes suivantes:

 scoreboard players add @e hurtTime 1 scoreboard players set @e hurtTime 0 {HurtTime:0s} execute @e[score_hurtTime_min=1,score_hurtTime=1] ~ ~ ~ tellraw @a[score_didDamage=1] "Nice hit!" scoreboard player set @a didDamage 0 

Jusqu'à présent, nous n'avons gagné rien en utilisant l'objectif de hurtTime . Le principal avantage est que cela peut être limité en utilisant son sélecteur cible. Par exemple, en utilisant

 scoreboard players add @e[type=Zombie] hurtTime 1 scoreboard players set @e[type=Zombie] hurtTime 0 {HurtTime:0s} 

Fait que le message n'apparaît que lorsque vous frappez un zombie. L'utilisation de multiples de cette paire de blocs de commandes permet de sélectionner plusieurs entités.

  • Est-il possible de faire un joueur aller seulement en arrière?
  • Créer un certain bloc impossible?
  • Existe-t-il un moyen de cibler la flèche à partir d'un arc OP par bloc de commande?
  • Compter des objets dans un coffre
  • Comment puis-je créer un bloc-bloc ou une horloge de remplissage?
  • Comment dire quand un joueur ne bouge pas?
  • Comment puis-je créer un générateur de nombres aléatoires avec des blocs de commande dans Minecraft?
  • Comment ferais-je quelque chose qui engendre quand et où une boule de neige frappe quelque chose?
  • Comment puis-je transformer mobs passives hostiles?
  • Comment configurer le (s) Bloc (s) de commande pour tester un temps particulier et émettre un message?
  • Random spawn pour le serveur multijoueur Minecraft