Je fais une carte de parkour et la clôture de mon chantier est faite de barres de fer. Je veux faire une pioche que le joueur peut utiliser à l'intérieur du chantier mais ne peut pas briser la clôture. Je veux créer un obstacle à l'intérieur du chantier en barres de fer qui pourrait être brisé avec une pioche en fer qui peut briser les barres de fer à l'intérieur du chantier, mais pas à l'extérieur.
Réponse
Trop de publicités?Ceci peut être fait avec 2 blocs de commande répétitifs. La première commande donne l'objet au joueur le plus proche :
give @p minecraft:iron_pickaxe{CanDestroy:["iron_bars"],tag:1}
La première commande ne s'exécute que si le joueur se trouve dans la zone dans laquelle la pioche doit fonctionner, c'est ce qui est déterminé dans les champs x=... y=... z=... ainsi que dx=... dy=... dz=...
x y z est le cordon et dx dy dz est la taille (x=10 et dx=2 mettrait le x de départ à 10 et la fin à 12). C'est la zone dans laquelle se trouve l'obstacle, ne la rendez pas trop petite pour que le joueur ait besoin de serrer les barres de fer pour les détruire, mais pas trop grande pour qu'il puisse atteindre les barres de fer indésirables.
La commande remplace l'objet tenu par le joueur seulement si l'objet est une pioche et a le tag tag:1
. Le tag est nécessaire pour que la commande ne donne pas continuellement une nouvelle pioche au joueur. Ensuite, la commande /replaceitem
remplace l'objet tenu par une pioche qui peut briser les barres de fer.
Cette commande doit se trouver dans un bloc de commande répétitif :
execute if entity @a[x=-12,y=56,z=8,dx=-7,dy=1,dz=-2] as @a[nbt={SelectedItem:
{id:"minecraft:iron_pickaxe",tag:{tag:1}}}] if entity @s
run replaceitem entity @s weapon.mainhand iron_pickaxe{CanDestroy:["iron_bars"]}
La commande suivante fait essentiellement tout le contraire de la première commande. Elle ne s'exécute que pour les joueurs qui ne sont pas dans la zone spécifiée (assurez-vous d'entrer les mêmes x y z et dx dy dz dans les deux commandes), elle teste ensuite la présence d'une pioche tenue qui peut briser les barres de fer et enfin elle exécute la commande /replaceitem
et donne au joueur une pioche normale avec le tag tag:1
.
Celui-ci doit également être dans un bloc de commande répétitif :
execute unless entity @a[x=-12,y=56,z=8,dx=-7,dy=1,dz=-2]
as @a[nbt={SelectedItem:{id:"minecraft:iron_pickaxe",tag:
{CanDestroy:["iron_bars"]}}}] if entity @s run replaceitem
entity @s weapon.mainhand iron_pickaxe{tag:1}
Les commandes n'affectent pas un joueur qui n'a pas la pioche spéciale, vous pouvez donc en créer d'autres plus tard avec des balises différentes.
Remarque importante
/replaceitem
sera supprimé en 1.17 et remplacé par /item
. Toutefois, vous pouvez facilement passer à la nouvelle commande, au lieu de :
/replaceitem entity @s weapon.mainhand iron_pickaxe{tag:1}
il le sera :
/item entity @s weapon.mainhand replace iron_pickaxe{tag:1}