1 votes

Tuez tous les supports d'armure dans un bloc sauf un Minecraft

J'ai un projet de bloc de commandes sur lequel je travaille et qui a un bug où des supports d'armure continuent d'apparaître sur le même bloc à chaque fois que je le lance.

Mais ce n'est pas juste sur un bloc, mais sur plusieurs. Donc disons qu'il y a 2 000 supports d'armure sur un seul bloc et 1 000 sur un autre bloc. Comment puis-je en tuer tous sauf un pour qu'il me reste 1 support d'armure sur un bloc et 1 sur l'autre ? Merci !

P.S. Si cela peut être utile de connaître davantage sur le projet, je travaille sur l'implémentation du jeu de la vie de Conway dans Minecraft. Je fournirai un téléchargement du monde si nécessaire.

1voto

Venya Points 509

J'ai réalisé cela en trois blocs de commande et un tableau de bord. Voici les commandes:

/scoreboard players set @e[type=armor_stand] near 0
/execute @e[type=armor_stand] ~ ~ ~ /scoreboard players add @e[type=armor_stand,r=0,c=2] near 1
/kill @e[score_near_min=2,c=1]

Commande n°1 : cela réinitialise le tableau de bord pour l'exécution

Commande n°2 : cela ajoute un (au tableau de bord) aux armorstands qui ont un autre dans leur carré

Commande n°3 : et cela tue un armorstand qui a un autre armorstand dans son carré

Note : cette configuration tue un armorstand à chaque fois que les trois blocs de commande sont exécutés, il est donc préférable de l'exécuter en permanence. Mais tant que vous ne générez pas les armorstands trop rapidement, vous devriez être bien

Note 2 : Le tableau de bord que j'ai utilisé s'appelle near, mais vous pouvez utiliser n'importe quel nom, tant qu'il correspond dans chaque bloc.

Mais je vous suggère de corriger le bogue que vous avez, plutôt que de rajouter quelque chose pour le corriger.

EDIT : J'ai réussi à le faire fonctionner pour tuer tous sauf un par groupe d'armorstands, voici ce que j'ai changé/ajouté:

Supprimez la commande de kill, et remplacez-la par ce qui suit:

/scoreboard players tag @e[score_near_min=2,c=1] add nokill
/execute @e[tag=nokill] ~ ~ ~ /kill @e[r=0,tag=!nokill,type=armor_stand]
/scoreboard players tag @e[tag=nokill] remove nokill

Note : cela tue tous sauf un, par groupe d'armorstands, il faut donc l'exécuter une fois pour chaque pile d'armorstands.

EDIT2 : Je l'ai encore amélioré, changements:

supprimé c=1 de:

/scoreboard players tag ... add nokill

et ajouté

/kill @e[c=-1,tag=nokill]

juste avant:

/scoreboard players tag ... remove nokill

nouvelle liste de commandes:

/scoreboard players set @e[type=armor_stand] near 0
/execute @e[type=armor_stand] ~ ~ ~ /scoreboard players add @e[type=armor_stand,r=0,c=2] near 1
/scoreboard players tag @e[score_near_min=2] add nokill
/execute @e[tag=nokill] ~ ~ ~ /kill @e[r=0,tag=!nokill,type=armor_stand]
/kill @e[c=-1,tag=nokill]
/scoreboard players tag @e[tag=nokill] remove nokill

0 votes

Je suis d'accord, je vais essayer de résoudre le problème. Mais lorsque vous dites, "Vous devrez le mettre sur une horloge." Si c'était sur une chaîne de blocs de commandes répétitive fonctionnant en continu, cela supprimerait toutes les balises d'armure sauf une sur un bloc?

0 votes

J'ai trouvé un moyen de faire en sorte qu'il doit être exécuté une fois pour chaque pile, beaucoup plus rapidement qu'avant.

0 votes

J'ai maintenant augmenté la vitesse, maintenant il peut suivre plusieurs blocs de commandes répétés, ce n'est pas parfait, cela prend toujours quelques exécutions pour s'assurer que chaque pile n'a qu'un seul.

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