CommandBlock Activation si un certain nombre d'entité présent dans une zone 1.13.2

ChibiFalso

Aventurier
8 Mai 2019
4
1
2
34
Bonjour,

problème un peu différent cette fois, je cherche a exécuter un command block quand au minimum 3 villageois se trouve à proximité. count et limit ne marche pas du coup je ne vois pas d'autre paramètres à utiliser O_o

Code:
/execute if entity @e[type=minecraft:villager,distance=..5,limit=3] run setblock -2644 71 -4445 minecraft:redstone_block

Merci d'avance n(-_-)n
 
  • J'aime
Reactions: Rayan0u94
"Limit" sert à majorer, c.à d. à indiquer un nombre maximum. De ce que je sais (je me trompe peut-être, il n'y a pas de paramètre direct pour le faire.

L'idée étant de compter, avec des commandes, le seul moyen serait donc d'utiliser les scores.
Si tes villageois ne sortent pas de la zone après y être entré, on peut imaginer un système qui ajouterai 1 au score pour chaque villageois sans le tag "déjà compté" et lui donnerai ce tag (en gros un CB repeat
Code:
 execute if entity [est un villageois dans la zone et n'a pas le tag "déjà compté"] run data modify entity [1 villageois sans le tag "déjà compté" dans la zone] Tag add "déjà compté"
couplé à un CB chain en conditionnel qui ajoute 1 au score comptant les villageois)

Sinon, il faut compter aussi ceux qui sortent. On peut le faire avec un système qui retire 1 au score "nombre de villageois" pour chaque villageois avec le tag "déjà compté" hors de la zone et qui lui retire le tag (en utilisant le même principe qu'au dessus, mais avec les commandes inverses).

Ce système n'est pas forcément le meilleur, mais c'est le premier qui me vient à l'esprit.
En espérant que cela t'ait aidé ^^

PS : je précise que la syntaxe des commandes, même les parties rédigées en langage CB, n'est pas forcément (et même probablement pas) exacte. Le but est juste de formaliser le concept.
 
Il y aurait un truc à faire avec le queryresult, je vais regarder ça
 
Ben je cherchais un peu trop loin, c'est bien plus simple :
-crée un objectif dummy, puis exécute ces deux commandes dans l'ordre (en boucle ou par la redstone, au choix) :

Code:
scoreboard players reset @e[scores={<Score>=1..}] <Score>
Code:
execute positioned <XYZ du centre de l'endroit de détection> as @e[type=villager,distance=..5] run scoreboard players add @e[type=villager,sort=nearest,limit=1] <Score> 1


La première commande réinitialise le score des entités ayant déjà stocké une valeur, pour éviter d'en cumuler plusieurs.
La seconde fait ajouter un score de 1 au villageois le plus proche du centre de détection par chaque villageois (y compris lui-même) dans la zone.
C'est peut-être plus facile de stocker la valeur sur le score d'un faux joueur, mais l'assigner à un villageois marche dans 100% des cas