2 votes

Comment puis-je téléporter des joueurs d'une dimension à l'autre avec des ratios corrects à l'aide d'un pack de données ?

Je suis en train de créer un pack de données dans lequel les entités se téléportent dans une autre dimension lorsqu'elles descendent en dessous du socle rocheux ou dépassent la limite de hauteur, comme ceci :

END
Y -128 --> Y 320
Y 384 --> Y -64
OVERWORLD
Y -128 --> Y 320
Y 384 --> Y -64
NETHER

Et je veux me téléporter avec un ratio de 1:8 dans le Nether y Fin. Exemples :

Overworld -821 385 511 --> End -6568 -64 4088
End 140 -128 -4843 --> Overworld 17 320 -605
Nether 3583 -128 283 --> Nothing (You can't go below the Nether)

Je veux qu'il soit compatible avec le plus grand nombre d'entités possible et qu'il n'y ait pas trop de laggy.

2voto

Fabian Röling Points 19325

Similaire à cette réponse vous avez besoin d'une entité fictive dont la position est stockée et peut être définie dans NBT.
Tout cela doit être exécuté en une seule fois, par exemple sous la forme d'une fonction.

Assomptions : Joueur est étiqueté comme " teleportMe ", tableaux d'affichage x y z existent.

Invoque une entité factice sur le joueur :

execute at @a[tag=teleportMe] run summon armor_stand ~ ~ ~ {NoGravity:1,NoAI:1,Invisible:1,Marker:1,ActiveEffects:[{Id:11,Amplifier:9,Duration:9}],Tags:["teleportHelper"]}

Obtenir les coordonnées de l'entité dans les tableaux de bord :

execute as @e[tag=teleportHelper] store result score @s x run data get entity @s Pos[0] 71
execute as @e[tag=teleportHelper] store result score @s z run data get entity @s Pos[2] 71

Les tableaux d'affichage sont toujours des nombres entiers, donc multiplier par 71 et ensuite diviser par 71-8 vous donne la meilleure précision.

Remettre les coordonnées mises à l'échelle dans le NBT :

execute as @e[tag=teleportHelper] store result entity @s Pos[0] double 0.001760563380281690140845070422535211267605633802816901408450704225352112676056338028169014084507042253521126760563380281690140845070422535211267605633 run scoreboard players get @s x
execute as @e[tag=teleportHelper] store result entity @s Pos[2] double 0.001760563380281690140845070422535211267605633802816901408450704225352112676056338028169014084507042253521126760563380281690140845070422535211267605633 run scoreboard players get @s z

Téléporte le joueur aux coordonnées d'une entité fictive, mais dans une autre dimension et plus haut :

execute at @e[tag=teleportHelper] in the_end run tp @a[tag=teleportMe] ~ ~512 ~

Nettoyage :

kill @e[tag=teleportHelper]

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