6 votes

Comment puis-je tester qu'il n'y a pas d'entités ? Par exemple, faire quelque chose quand il n'y a pas de golems de fer dans un certain rayon ?

J'espère créer une commande qui fera quelque chose lorsque la commande /testfor fait apparaître 0 d'une entité spécifiée. Par exemple :

/testfor @e[x,y,z,r,type=Zombie,count=0]

3voto

APCoding Points 1555

Faites ce qui suit : enter image description here Faites le bloc de commande qui est le plus bas testfor @e[r=[radius], type=VillagerGolem] (Remplacer [radius] avec votre rayon de test. (En outre, supprimez le [] ))

Et faites de celle du haut ce que vous voulez faire quand il n'y a pas de Golem de Fer dans ce rayon.

2voto

Bridgeyman Points 1098

Utiliser un compteur de tableau d'affichage auquel on ajoute 1 par entité qui répond aux exigences

Mise en place :

/scoreboard objectives add Counter dummy
/summon ArmorStand <X> <Y> <Z> {CustomName:Counter}

Horloge (20 Hz) :

/scoreboard players set @e[type=ArmorStand,name=Counter] Counter 0
/execute @e[type=VillagerGolem,x=<X>,y=<Y>,z=<Z>,r=<Range>] ~ ~ ~ scoreboard players add @e[type=ArmorStand,name=Counter] Counter 1
/execute @e[type=ArmorStand,name=Counter,score_counter=0] ~ ~ ~ <Desiered Command>

Trucs et astuces techniques :

Mise en place :

Tout d'abord, un objectif de tableau de bord appelé Counter est créé. Ensuite, une armure appelée Counter est invoquée.

Boucle :

Le score est d'abord remis à zéro, puis pour chaque Golem de fer à portée, 1 est ajouté au score de l'ArmorStand. Enfin, la commande d'exécution ne s'exécutera que sur tout socle d'armure appelé Counter dont le score est égal à 0.

Si vous modifiez le score_counter de la dernière commande, vous pouvez modifier le nombre de Golems de Fer que vous souhaitez avant que la commande ne soit exécutée.

1voto

ydobonebi Points 1218

enter image description here En utilisant 2 blocs de commande, 1 comparateur, 1 bloc de construction, 1 torche de redstone. Vous pouvez accomplir ceci ainsi :

  • Bloc de commande 1 : testfor @e[r=radius, type=VillagerGolem]
  • Bloc de commande 2 : your command

Tu devras quand même mettre une horloge dessus. La mienne est sous le golem :)

À titre d'information, il est déconseillé d'utiliser l'option c=0 parce que cela ne veut pas dire qu'il faut trouver s'il y a 0, mais plutôt que lorsque vous faites une correspondance, il faut en faire 0. Donc dans votre cas, cela n'a aucun effet réel.

1voto

André Laszlo Points 121

Faites une déclaration if else. Par exemple. Commencez par créer un tableau d'affichage.

/scoreboard objectives add IfElse dummy

Grâce à ce tableau d'affichage, vous saurez si quelque chose a réussi ou non. Vous utiliserez le score 0 si quelque chose ne s'est pas produit (un test a échoué) et le score 1 si quelque chose a réussi.

La pose d'une horloge, où vous avez mis votre premier bloc de commande à répéter, sur un morceau de redstone. Maintenant, pour qu'un score soit porté, vous avez besoin d'un support d'armure. Donc invoquez une armure qui a le nom "IfElse1" ou quelque chose comme ça.

Maintenant, pour le premier bloc de votre ligne de commande, vous voulez mettre les scores de l'amortisseur (des amortisseurs) à 0, de sorte que chaque fois que l'horloge finit de tester les scores/les changer, ils seront remis à la normale. (Score 0)

/scoreboard players set @e[name=IfElse1] IfElse 0
                    (Armorstand)and(Scoreboard)

Si vous allez utiliser plusieurs déclarations IfElse dans votre engin, je suggère de lui donner un tag, de sorte que vous pouvez cibler et réinitialiser tous vos IfElse(x) armorstands facilement en utilisant un seul bloc de commande. Donc quelque chose comme ça :

/scoreboard players set @e[tag=IfElseAll] IfElse 0

Vous pourriez donc mettre ceci comme première commande à la place.

Ensuite, il s'agit de tester l'opposé de ce que vous voulez réellement découvrir et obtenir un résultat. Pour savoir si quelque chose n'est pas vrai, vous devez d'abord découvrir le type de résultat que vous obtiendrez en faisant une vérification. Donc quelque chose comme ça

/testfor @e[type=Player,r=20] 

(On pourrait ajouter une étiquette de région, à vérifier dans une case, ou une étiquette, ou n'importe quoi qui pourrait être donné au joueur pour le compter comme étant dans le jeu.

Exemple :

étiquette :

/testfor @e[type=Player,tag=InGame]  

score :

/testfor @e[type=Player,score_GameStatus_min=1,score_GameStatus=1]

Ensuite, vous voulez avoir un bloc de commande conditionnel. Ce bloc de commande obtiendra une sortie si le test a réussi, ou ne sera pas activé du tout s'il n'a pas réussi. En d'autres termes, c'est là que vous placeriez votre sortie s'il y a des joueurs dans le jeu. Mais nous essayons de trouver le contraire, donc vous mettez ce qui suit.

/scoreboard players set @e[name=IfElse1] IfElse 1

Ceci changera le score par défaut des armorstands (0). à 1. Indiquant qu'il y a des joueurs dans le jeu. Mais si ce n'est pas le cas. Le score restera(0). (Si vous souhaitez qu'il y ait des joueurs dans le jeu, vous pouvez ajouter des blocs de commande conditionnels. Mais n'oubliez pas que si l'un d'eux échoue, la chaîne ne s'active pas jusqu'au bout).

Maintenant, après votre test pour les joueurs, vous savez s'il y a des joueurs ou non dans votre jeu, déterminé par l'état du score "No players(0)". "Joueurs (1)". Maintenant, pour obtenir un résultat sur le fait qu'il n'y a pas de joueurs dans le jeu, faites une autre commande testfor dans la même chaîne "qui n'est pas conditionnelle".

/testfor @e[name=IfElse1,score_IfElse_min=0,score_IfElse=0]

(Vérification d'un score minimum de 0, et maximum de 0 pour l'armure "IfElse1" dans le tableau d'affichage "IfElse").

Maintenant, créez une autre chaîne de blocs de commande conditionnelle, avec les résultats que vous souhaitez. Pour qu'il n'y ait pas de joueurs dans le jeu.

Et vous devriez être prêt.

Pas besoin de comparateurs, ni de redstone.

1voto

pppery Points 3211

C'est trivial en 1.13 :

/execute unless entity @e[...] run ...

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X