Résolu Problème selecteur tag qui ne marche pas

basouli13

Aventurier
15 Mai 2018
6
1
3
Bonjour à tous,
je joue en 1.12.2 et j'essaye de mettre en place sur un serveur un système qui je crois ne devrait pas être très complexe : Lorsqu'un joueur boit une potion, sa santé maximale augmente. Au plus il boit de potions, au plus il gagne en vie maximum.

J'ai pour cela mit en place un scoreboard "potion" qui compte le nombre de fois qu'un joueur boit une potion, et j'ai fait un petit réseau de command block :

1er command block en repeat, always active =
Code:
/scoreboard players tag @p[tag=!effect1,score_potion=1] add coeur1

2ème command block en chain, always active =
Code:
/effect @p[tag=!effect1,tag=coeur1] 21 999999 0

3ème command block en chain, always active =
Code:
/scoreboard players tag @p[tag=!effect1,tag=coeur1] add effect1

J'esperais qu'avec cela, le troisième block donne un tag "effect1" qui permettrait de désactiver la "réussite" des blocks précédents puisqu'ils sélectionnent les personnes n'ayant pas le tag "effect1". Mais cela ne marche pas, dans le chat je reçoit un message en boucle =
[@: tag effect1 added]
[@:Given Health Boost (ID 21) x0 to "nomdemonjoeur" for 999999 seconds]

les deux block chain sont donc manifestement continuellement réactiver, je reçoit l'effet de potion 21 en boucle alors que mon personnage a reçus le tag "effect1" et les blocks ont le critère [tag=!effect1] pour fonctionner, alors je ne comprends pas ...
Cela encombre le chat, parasite les autres commandes que j'aimerais faire en lien avec ceci et empêche de profiter de l'effet 21 car le fait de recevoir l'effet en boucle, réinitialise sa "réception" à chaque tick. c'est à dire que mes coeurs suplémentaire commencent à se régen, mais sont intérrompu par la nouvelle réception de l'effet 21 et ca reboot le regen. Donc les coeurs ne se régen jamais quoi ^^ ma santé maximale est bien augmentée visuellement mais on ne peut pas se régen jusqu'au nouveau max à cause du reboot infini.

image du jeu :
2018-06-06_12.05.15.png

De plus si vous avez une idée sur comment rendre plus précis le consommable à prendre pour recevoir l'effet je suis preneur ! car "stat.useItem.minecraft.potion" ça encadre toutes les potions, on ne peut pas définir la quelle précisément ! Est-ce que vous connaissez aussi un moyen d'augmenter les coeurs maximum de 1 ? car l'effet 21 les augmente 2 par 2 !
 
Dernière édition:

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 345
2
1 053
297
24
Bretagne
Hey !
Le problème vient du fait que tu ne peux pas mettre plusieurs fois l'argument "tag=..." dans un sélecteur en 1.12 (seulement possible à partir de la 1.13) cela ne détectes donc que le tag "coeur1", il fout que tu passes par la détection de nbt, essaye cela :
Code:
/scoreboard players tag @p add effect1 {Tags:["effect1","coeur1"]}
 
Dernière édition:
  • J'aime
Reactions: basouli13

basouli13

Aventurier
15 Mai 2018
6
1
3
Hey !
Le problème vient du fait que tu ne peux pas mettre plusieurs fois l'argument "tag=..." dans un sélecteur en 1.12 (seulement possible à partir de la 1.13) cela ne détectes donc que le tag "coeur1", il fout que tu passes par la détection de nbt, essaye cela :
Code:
/scoreboard players tag @p[tag=!effect1,tag=coeur1] add effect1 {Tags:["effect1","coeur1"]}

Du coup dans la commande que tu as écrite il y a aussi deux fois "tag=" dans tes crochets c'est normal ?
 

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 345
2
1 053
297
24
Bretagne
Oups, j'ai oublié de delete de sélecteur dans ma copie, désolé ^^"
 

basouli13

Aventurier
15 Mai 2018
6
1
3
Problème résolu, en prenant en compte ce qu'a dit @Oromis j'ai fait cet assemblement :

chat : /scoreboard objectives add potion stat.useItem.minecraft.potion
Code:
 REPEAT, ALWAYS ACTIVE = /scoreboard players tag @a[score_potion=1] set coeur1
Code:
 CHAIN, ALWAYS ACTIVE = /effect @a[tag=coeur1] 21 999999 0
Code:
 CHAIN, ALWAYS ACTIVE = /scoreboard players set @a[tag=coeur1] potion 2
Code:
 CHAIN, ALWAYS ACTIVE = /scoreboard players tag @a[tag=coeur1] remove coeur1

2018-06-06_14.41.46.png

Pour que l'absorbtion d'une potion suplémentaire augmente à chaque fois d'un cran l'effet HealthBoost, j'ai ajouté sur la map un assemblement similaire, qu'il suffit de reproduire autant de fois que l'on veut pouvoir augmenter le HealthBoost. attention à ce que sur le command_block repeat de chaque étape le score aille de 2 en 2, à partir de 1 (1,3,5,7,...).

Exemple pour une deuxième absorbtion de potion qui donnerai le cran healthboost au dessus (+2coeur) =
Code:
 REPEAT, ALWAYS ACTIVE = /scoreboard players tag @a[score_potion_min=3,score_potion=3] set coeur2
Code:
 CHAIN, ALWAYS ACTIVE = /effect @a[tag=coeur2] 21 999999 1
Code:
 CHAIN, ALWAYS ACTIVE = /scoreboard players set @a[tag=coeur2] potion 4
Code:
 CHAIN, ALWAYS ACTIVE = /scoreboard players tag @a[tag=coeur2] remove coeur2

2018-06-06_14.42.09.png

Merci @Oromis :)
 

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 345
2
1 053
297
24
Bretagne
Pas de problème, n'oublie pas de mettre ton post en résolu ;)