5 votes

Comment utiliser les systèmes de coordonnées ^^^ pour le mouvement nbt

Depuis que nous pouvons utiliser ^ ^ ^ pour des coordonnées relatives avec la version 1.13 comme

/execute as Asaf31214 run summon lightning_bolt ^ ^ ^10

(Fait apparaître un éclair à 10 blocs de moi dans la direction où je regarde. Sois dit en passant, la première partie est la distance vers la gauche, la deuxième vers le haut et la troisième est la distance par rapport à toi, si tu vois cette fonction pour la première fois. C'est un peu comme des coordonnées cylindriques en science.)

J'ai essayé d'écrire une commande qui lance un TNT dans la direction que je veux. C'était censé être :

/summon tnt ^ ^1 ^10 //1 bloc vers le haut et 10 blocs en avant// {Fuse:50,Motion[^0,^1,^10]} 

si je n'utilise pas ^ il lancera le TNT dans une direction x constante. Mais cela donne une erreur si je l'utilise avec le nouveau système de coordonnées ^.

Pouvez-vous m'expliquer comment faire cela? Je suppose que ce système de coordonnées n'est pas encore entièrement utile car il est tout nouveau, et cela peut être impossible pour le moment.

5voto

Fabian Röling Points 19325

Tout comme vous ne pouvez pas utiliser de coordonnées relatives avec ~ dans NBT, vous ne pouvez pas non plus utiliser de coordonnées relatives avec ^. Ce que vous pouvez faire à la place, c'est obtenir à la fois votre position et celle du TNT et les soustraire pour obtenir un élan.

Pour la position, vous pouvez utiliser la balise NBT "Pos", car elle peut être lue avec data get. Le reste est assez simple, il suffit de mettre la balise NBT Pos dans des tableaux de bord, d'appliquer une opération et de la remettre dans NBT, cette fois Motion.

Préparation:

scoreboard objectives add x dummy
scoreboard objectives add y dummy
scoreboard objectives add z dummy

Quand vous voulez l'activer:

execute as @p at @s run summon tnt ^ ^ ^1 {Fuse:80,Tags:["toMove"]}
execute as @e[type=tnt,tag=toMove] store result score @s x run data get entity @s Pos[0] 50
execute as @e[type=tnt,tag=toMove] store result score @s y run data get entity @s Pos[1] 50
execute as @e[type=tnt,tag=toMove] store result score @s z run data get entity @s Pos[2] 50
execute as @p store result score @s x run data get entity @s Pos[0] 50
execute as @p store result score @s y run data get entity @s Pos[1] 50
execute as @p store result score @s z run data get entity @s Pos[2] 50
scoreboard players operation @e[type=tnt,tag=toMove] x -= @p x
scoreboard players operation @e[type=tnt,tag=toMove] y -= @p y
scoreboard players operation @e[type=tnt,tag=toMove] z -= @p z
execute as @e[type=tnt,tag=toMove] store result entity @s Motion[0] double 0.02 run scoreboard players get @s x
execute as @e[type=tnt,tag=toMove] store result entity @s Motion[1] double 0.02 run scoreboard players get @s y
execute as @e[type=tnt,tag=toMove] store result entity @s Motion[2] double 0.02 run scoreboard players get @s z

Cela fonctionne pour plusieurs TNTs en même temps, mais pas encore pour plusieurs joueurs. Si vous voulez l'utiliser en multijoueur, vous devez remplacer @p par votre sélecteur et probablement aussi utiliser des balises pour eux.

Pour une méthode qui fonctionne avec plusieurs entités en même temps, voir ici.

1 votes

Aussi, pour ceux qui ont besoin de plus de précision, les 10 et 0.1 dans les commandes peuvent être modifiés pour n'importe quelles deux valeurs qui multiplient à 1. Plus le premier est grand, plus c'est précis (jusqu'à un certain point).

0 votes

Oh, d'accord, normalement j'utilise 50 et 0,02, parce que c'est le plus grand nombre rond qui fonctionne sans risquer un débordement à des coordonnées très élevées. 71 fonctionnerait aussi, mais vous obtenez des fractions récurrentes pour l'inverse. Je vais changer les chiffres. Edit: Fait. Je devrais aussi expliquer les commandes mieux. Mais cela va sur ma liste de choses à faire pour plus tard.

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