Compter le nombre d'items

  • Auteur de la discussion Auteur de la discussion pyro59
  • Date de début Date de début

pyro59

Architecte en herbe
19 Août 2013
302
56
135
Bonsoir,
Je me mes un peu aux commandBlocks mais je vois vraiment pas comment :

  • Compter le nombre d'item droppé au sol dans une zone précise (affiché dans un scoreboard)
  • Compter le nombre d'item dans l'inventaire de 2 joueurs
En espérant avoir une réponse :)
Cordialement,
Pyro59
 
- Tu veux compter des entités Item qui sont par terre, OU compter les items ramassés par un joueur ?

- Pour compter les items de joueurs tu peux, par exemple, supprimer les objets 1 par 1 (/clear pour 1 type d'objet), et ajouter "1" a un scoreboard dummy.
 
Tu créés l'objectif nb.
clock - scoreboard players add @e[type=Item,x=x,y=y,z=z,r=rayon,c=nombre] nb nombre
 
Tu créés l'objectif nb.
clock - scoreboard players add @e[type=Item,x=x,y=y,z=z,r=rayon,c=nombre] nb nombre

Euh, non. Clairement pas.

Pour compter les objets au sol, c'est impossible (dès que deux objets identiques se retrouvent à proximité, il se regroupent et ne forment plus qu'un).
Voici ce qu'il est possible de faire:
- Compter les "tas" d'objets au sol
Créer un objectif "Compteur" de type dummy
Code:
/scoreboard objectives add Compteur dummy
Dans une horloge, mettre un bloc de commande avec ceci:
Code:
/testfor @e[type=Item]
Soit x, y et z les coordonnées du bloc de commande, lancer une fois la commande suivante:
Code:
/stats block x y z set SuccessCount Objets Compteur
La commande suivante permettra alors de surveiller le nombre d'objet au sol:
Code:
/scoreboard objectives setdisplay sidebar Compteur

- Compter un type d'objet dans l'inventaire de tout le monde
Créer un objectif "Compteur" de type dummy
Code:
/scoreboard objectives add Compteur dummy
Dans une horloge, mettre un bloc de commande avec ceci:
Code:
/clear @a item data 0
Soit x, y et z les coordonnées du bloc de commande, lancer une fois la commande suivante:
Code:
/stats block x y z set AffectedItems Objets Compteur
La commande suivante permettra alors de surveiller le nombre d'objet désigné présent dans l'inventaire de tout les joueurs:
Code:
/scoreboard objectives setdisplay sidebar Compteur
Pour regarder uniquement dans l'inventaire du joueur le plus proche, il suffit de changer le @a en @p. Et si tu veux regarder chez deux joueurs, il suffit de faire deux fois la procédure, sur deux commandes avec deux sélecteurs différents et changer le Objets en Joueur1 / Joueur2 (ou en sélecteur).
Avec un peu d'adaptation, tu devrais pouvoir arriver au résultat que tu souhaites.
 
- Tu veux compter des entités Item qui sont par terre, OU compter les items ramassés par un joueur ?
Les deux ^^

Merci de votre aide, quand je m'y attellerais je verrais si j'y arrive avec vos indications ;)

Cordialement,
Pyro59
 
Moi, j'ai bien une idée pour compter les items ramassables ...

/scoreboard players set @e[type=Item] itemsCount x {Item:{Count:xb}}
Pour chaque x jusqu'à 64 à exécuter une seule fois.

Après je suis incapable de pondre la commande mais il faut add tout cela et afficher le résultat.
 
J'ai la commande ...

/scoreboard players operation Resultat itemsCount += * itemsCount
 
Moi, j'ai bien une idée pour compter les items ramassables ...

/scoreboard players set @e[type=Item] itemsCount x {Item:{Count=x}}
Pour chaque x jusqu'à 64 à exécuter une seule fois.

Après je suis incapable de pondre la commande mais il faut add tout cela et afficher le résultat.

Ce qui veut dire faire 64 commandes. Long et lourd surtout qu'on est limité à 63 par chunk.
 
  • J'aime
Reactions: Piratdu52
J'ignorais qu'il existe une limite au nombre de commande par Chunk( mais je ne pense pas que cela soit valable pour les minecraft commanBlock d'après un filtre que j'ai pu voir)) Mais oui, c'est lourd a mettre en place, je pense que je vais faire un filtre McEdit pour créer ce genre de chose.

Ps:j'adore Mizle 2
 
En fait, c'est une limite de 63 commandes par tick par chunk pour être précis. Quand la limite est atteinte, les fps chutent de manière brutale (et ça peut aller jusqu'à faire planter le client/serveur, j'ai déjà vu ça).