Résolu Retirer 1 item à la fois

Venatorem

Architecte en herbe
12 Juillet 2016
74
9
48
28
Bonjour, est-il possible de retirer 1 item d'un bloc conteneur (1 item à la fois sur un seul stack) ?
Parce j'ai essayé : /data merge block ~-2 ~1 ~-1 {Items:[{id:"minecraft:coal",Count:-1}]} mais le Count semble définir le nombre d'item et non un ajout
et avec : /replaceitem block ~-2 ~1 ~-1 container.0 minecraft:coal -1 mais il ne prend pas les valeurs négatives...

Quelqu'un à une idée svp ?
 

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 345
2
1 053
297
24
Bretagne
Hey !
C'est assez simple en fait ! Par la commande execute store, tu stockes la quantité d'item dans un scoreboard, tu décrémentes ce score de 1, puis tu remets par le execute store cette valeur dans le tag Count ;)
 

Venatorem

Architecte en herbe
12 Juillet 2016
74
9
48
28
Enfin pigé (je crois)...
/execute store result score @p COAL(score) run data get block ~ ~1 ~ Items[0].Count
en gros ça détecte le nombre d'items dans un conteneur
mais comment je fais l'inverse, je comprends pas le tag Count?
 
Dernière édition:

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 345
2
1 053
297
24
Bretagne
De prime abord :
Code:
execute store result score @s Test run data get block ~ ~1 ~ Items[0].Count
On décrémente :
Code:
scoreboard players remove @s Test 1
On remet le score :
Code:
execute store result block ~ ~1 ~ Items[0].Count int 1 run scoreboard players get @s Test
Tout simplement ;)
 
  • J'aime
Reactions: Venatorem

Venatorem

Architecte en herbe
12 Juillet 2016
74
9
48
28
Ah ! et si je veux tester un item en particulier dans le conteneur (pas l'emplacement, mais l'item)?
 

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 345
2
1 053
297
24
Bretagne
Là c'est plus "compliqué" si tu veux faire un test d'égalité. Mais sache qu'un comportement de la commande data permet de le faire :
Si tu essayes de remplacer une chaîne de caractères par une chaîne de caractères identique, alors la commande échoue (échec que l'on peut récupérer par la commande execute store success).
Tu peux donc mettre le nom de l'item que tu veux dans un storage, copier le nom de l'item à tester dans un storage aussi, puis tenter de mettre le premier nom à l'emplacement du second. Si la commande réussi, alors les deux noms n'étaient pas égaux !
 
  • J'aime
Reactions: Venatorem

Venatorem

Architecte en herbe
12 Juillet 2016
74
9
48
28
Wow, c'est trop compliqué pour moi et l'identification de l'item n'est pas non plus indispensable. En tout cas merci pour tes réponses !
 
  • J'aime
Reactions: Oromis