setblock
ne peut pas replace
blocs spécifiques de ce type ; seulement fill
can. Mise en place replace
dans un setblock
indique simplement à la commande de ne laisser tomber aucun élément du bloc remplacé. Votre première commande semble fonctionner, mais elle ignore en fait la commande end_portal
complètement. Il peut mettre à l'air n'importe quel bloc : de la terre, de la pierre, n'importe quoi.
La syntaxe correcte pour le setblock
est
/setblock <x> <y> <z> <block> [dataValue|state] [oldBlockHandling] [dataTag]
Donc, votre commande initiale,
/setblock ~ ~6 ~ air 0 replace end_portal
devrait raisonnablement échouer pour deux raisons :
- En
air
ne prend pas en charge NBT
end_portal
données NBT non valides
Ce qui se passe en fait, c'est que Minecraft dit : "Bon, air
ne supporte pas NBT, donc je vais ignorer cette partie qui devrait être NBT". Votre commande est donc équivalente à
/setblock ~ ~6 ~ air 0 replace
Mais avec votre deuxième commande, Minecraft dit "The end_portal
bloc hace supportent NBT, donc analysons ceci -hey ! Ce n'est pas un NBT valide !" et lance une erreur.
Si vous utilisez des blocs de commande, vous pouvez tester le bloc aérien de manière explicite, puis définir le portail de fin uniquement si le test a réussi :
/testforblock <x> <y> <z> air
C: /setblock <x> <y> <z> end_portal
Où C:
indique un bloc de commande conditionnel.