Détecter une mort spécifique?

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Bonjour!
J'ai en tête un petit concept sympa pour un gameplay différent de minecraft, mais il me reste encore à résoudre un léger problème, plus complexe qu'il n'y parait, semble-t-il :

Comment détecter la cause de la mort d'une entité (Dans ce cas-ci, un joueur, pas de version minecraft spécifique) ?

Pour être plus précis, il s'agirait, par exemple, de déclencher une commande / signal redstone uniquement quand un joueur meurt dans la lave...
On peut effectivement détecter une partie des morts, entre autres par entités, via le /scoreboard, mais j'aimerais pouvoir avoir accès à toutes les morts possibles.


Possibilités...?

-J'ai accès au fichier de traductions du jeu, donc à la liste complète des morts; je vois par exemple que le message de décès par la lave est appelé à l'origine "death.attack.lava", traduit par la suite dans la langue sélectionnée.

-Il est également possible d'envoyer ce message directement dans le chat avec cette commande :
Code:
/tellraw @a {"translate":"death.attack.lava","with":["Quelqu'un"]}
Ce qui donne "Quelqu'un a essayé de nager dans la lave". C'est donc très probablement de la même manière que minecraft procède.

-Si on trouve le moyen pour détecter le type de mort, on peut utiliser les scoreboards avec l'objectif "deaths", par exemple, qui déclenchera le processus. Du côté de l'activation, c'est donc réglé.


À chercher

-La difficulté, c'est que, à ma connaissance, seul le nombre de morts peut être retracé, mais pas leurs spécifications... Je me suis donc penché sur un moyen de détecter le message envoyé en chat, mais en vanilla, on ne trouve pas grand chose sur le sujet...



Je fais appel à vous qui lisez ce texte pour me proposer des solutions à ce problème... Je pense que les datapacks ont un peu plus de possibilités là-dedans, et en dernier recours, les mods seraient acceptables (mais pour les installer, c'est moins pratique, je privilégie le easy to play)...

Merci!
 

Myuto

Une pomme
22 Juin 2016
398
174
155
Bonjour,
détecter le message dans le chat c'est impossible (sauf avec mode ou plugin je pense).
Pour tout ce qui est entité il y a les scoreboard comme tu l'as dit, mais après tu peux pousser plus loin et détecter chaque situation de joueur, si il est en feu, dans la lave, sous un block (pas d'air), etc... et bien sûr si il meurt. Mais c'est complexe. Après il y a des situation ambiguë : les pied dans la lave et un bloc sur la tête, il meurt comment ?
 

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Oui, c'est vrai... Mon idée de départ, c'était "Chaque jour, le joueur doit mourir d'une nouvelle façon et il gagne s'il les a toutes faites, et s'il meurt deux fois de la même façon ou s'il n'a pas réussi à mourir à la fin d'une journée, il a perdu"...

Je pourrais peut-être changer ça pour une map avec des chambres dans lesquelles il faudra essayer de se suicider, quelque chose come ça...

En tout cas, je me suis aussi penché sur le /stats, sans succès pour l'idée de base, mais ça m'a permis de trouver un moyen de détecter le temps réel (heure de l'ordiateur, à la seconde près) dans le jeu!! Je ferai un post là-dessus... Au moins ça de gagné!
 

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 345
2
1 053
297
24
Bretagne
Hey !

Comme l'ont dit les autres, il n'y a pas moyen propre de faire cela :/
 

FunkyToc

Map Baker
26 Mars 2013
511
112
155
33
France, Paris
funkytoc.fr
il y a beaucoup plus simple désormais en 1.13, si tu cherches un moyen d'avoir le timestamp :fou:

Créer un scorebord :
Code:
/scoreboard objectives add Timestamp dummy
Lance en boucle :
Code:
/execute store result score @a Timestamp run time query daytime
Regarde le score :
Code:
/scoreboard objectives setdisplay sidebar Timestamp
 

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Ah tu parlais de mon autre post... Ben au moins, ça marche en 1.9... et puis de toutes façons, la 1.13, y a trop de trucs, c'est moins bien
[Le gars qui veut pas s'avouer vaincu :( ]
 

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
il y a beaucoup plus simple désormais en 1.13, si tu cherches un moyen d'avoir le timestamp :fou:

Créer un scorebord :
Code:
/scoreboard objectives add Timestamp dummy
Lance en boucle :
Code:
/execute store result score @a Timestamp run time query daytime
Regarde le score :
Code:
/scoreboard objectives setdisplay sidebar Timestamp

Le /time query daytime marche aussi en 1.9 mais je sais pas... il est 17h25 et ça me met 18261... et ça augmente de 1 par tick... ça a changé en 1.13?
J'ai vu ton post où tu as mentionné ça... c'est différent en 1.13?