1 votes

Comment faire : (Question longue)

Donc, j'ai noté plusieurs commandes, et elles sont un peu contradictoires.

/execute as @a[nbt={SelectedItem:{id:"warped_pressure_plate"}}, Dimension:"minecraft:overworld"] in minecraft:the_nether run tp @s ~ 129 ~

/execute as @a[nbt={SelectedItem:{id:"warped_pressure_plate"}}, Dimension:"minecraft:overworld"] in minecraft:the_nether run fill ~15 129 ~15 ~25 112 ~25

En utilisant des commandes répétées dans des blocs de commande, je veux faire en sorte que si le joueur tient une plaque de pression déformée, et s'il se trouve dans l'overworld, il soit téléporté au plafond du Nether avec les mêmes coordonnées. Le problème est que je veux remplir un trou dans le plafond du Nether à 20 blocs de là, une fois qu'ils sont entrés dans le Nether en utilisant la plaque de pression déformée, mais j'ai réfléchi :

  1. Si la personne entre d'abord dans le Néant, PUIS la deuxième commande s'exécute pour faire un trou, la deuxième commande ne fait rien puisque la personne n'est plus dans l'overworld.
  2. Si la commande essaie d'abord de briser le plafond, puis d'amener le joueur sur place, le bris du plafond ne fonctionnera pas tant qu'un joueur ne sera pas là pour charger les morceaux qui génèrent le paysage. (même si le plafond du Nether ne contient littéralement rien).

Je ne peux faire ni l'un ni l'autre, alors comment suggérez-vous que je change mes commandes ? Est-ce que ça marchera si je les branche tous les deux sur la même boucle pour qu'ils tournent exactement au même moment, ou si je les mets tous les deux en mode répétitif pour qu'ils tournent aussi au même moment ? (Je ne sais pas tester ce genre de choses ; aidez-moi s'il vous plaît).

4voto

hyper-neutrino Points 416

Vous pouvez utiliser le tableau d'affichage.

Pour cela, mettez en place une chaîne de quatre blocs de commande. Si vous voulez qu'elle s'exécute dès que le joueur sélectionne la plaque de pression déformée, réglez-les tous sur Toujours actif, puis réglez le premier sur Répéter et les autres sur Enchaîner. Assurez-vous qu'ils sont enchaînés correctement, comme suit :

Command Block Chain

Ensuite, pour les commandes.

Configuration : créer le tableau d'affichage

Créez un nouveau tableau d'affichage pour stocker une variable :

/scoreboard objectives add test dummy

(renommez l'objectif du tableau d'affichage comme vous le souhaitez ; cela n'a pas d'importance, tant que vous mettez à jour ses références dans les commandes également)

Commandement 1 : mettre le score de tous les joueurs concernés à 1 pour qu'ils puissent être ciblés.

scoreboard players set @a[nbt={SelectedItem:{id:"minecraft:warped_pressure_plate"},Dimension:"minecraft:overworld"}] test 1

Commande 2 : téléportation de tous les joueurs concernés

Maintenant, je ne sais pas si vous voulez téléporter un joueur à l'emplacement correspondant par rapport au bloc de commande ou au joueur. Je suppose qu'il s'agit du joueur, sinon vous ne feriez que créer un trou statique dans le plafond puisque l'emplacement ne changerait pas, et dans ce cas, votre première commande ne fonctionne pas correctement. ~ est relative à la position du bloc de commande, sauf si vous la modifiez. Vous pouvez utiliser at o positioned as pour le fixer à une entité différente, dans ce cas, @s fonctionne puisque vous utilisez execute as .

execute as @a[scores={test=1}] in minecraft:the_nether positioned as @s run tp ~ 129 ~

En gros, comme chaque joueur qui a été marqué par la première commande, ceci exécute tp ~ 129 ~ dans le Nether par rapport à la position du joueur sélectionné.

Commande 3 : créer le trou du plafond du Nether

execute as @a[scores={test=1},nbt={Dimension:"minecraft:the_nether"}] at @s run fill ~15 129 ~15 ~25 112 ~25 air

Là encore, vous devez modifier l'emplacement de la cible, sinon cela créera un trou dans l'overworld où se trouve le bloc de commande. Notez que ci-dessus j'ai utilisé positioned as parce que je veux définir la dimension des Bas-Fonds en utilisant in minecraft:the_nether mais ici, le joueur est déjà dans la bonne dimension. De plus, le sélecteur de dimension ici est juste une sauvegarde pour empêcher le trou d'être créé dans l'overworld si la téléportation traîne.

Commande 4 : nettoyage

scoreboard players set @a[nbt={Dimension:"minecraft:the_nether"}] test 0

Cela efface le tableau des scores pour tous ceux qui se sont téléportés avec succès, donc rien de bizarre ne se produit.

Résultats

J'ai testé ceci dans Minecraft 1.16.5 sur un monde Singleplayer et quand je sélectionne une plaque de pression déformée, elle me téléporte immédiatement dans le Nether et crée un trou dans le plafond à plusieurs blocs de distance. Rien ne se passe tant que je ne sélectionne pas la plaque de pression, et si je déplace ma position dans l'Overworld, ma destination dans le Nether est également mise à jour.

0voto

Egor Hans Points 473

L'alternative basée sur les fonctions

Actuellement non testé, n'hésitez pas à signaler tout bogue. Devrait fonctionner en théorie.

Comme vous le verrez, c'est beaucoup plus simple que d'utiliser des tableaux d'affichage, mais cela nécessite de modifier vos fichiers monde. J'utilise netherwarp comme espace de nom et warp_to_roof comme nom de fonction, mais vous pouvez les changer - utilisez simplement des minuscules serpentines, je n'ai pas expérimenté avec les tirets mais la casse camel ne fonctionnera certainement pas.

Tout d'abord, créez un dossier dans le répertoire de votre monde. datapacks dossier. Insérez un simple pack.mcmeta (vous pouvez le copier à partir de n'importe quel resourcepack ou datapack qui fonctionne avec la 1.16.5), puis créez la structure de dossier suivante data/netherwarp/functions . Là, vous avez besoin du fichier warp_to_roof.mcfunction avec le contenu suivant :

/execute in minecraft:the_nether run tp @s ~ 129 ~
/fill ~15 129 ~15 ~25 112 ~25 air

Ensuite, il suffit d'exécuter /execute as @a[nbt={SelectedItem:{id:"warped_pressure_plate"}, Dimension:"minecraft:overworld"}] at @s run mcfunction run netherwarp:warp_to_roof .

Tout en mettant déjà cela dans un datapack, autant mettre la commande de déclenchement dans un loop.mcfunction et ajouter un data/minecraft/tags/functions/tick.json avec le contenu suivant :

{
    "values": [
        "netherwarp:loop"
    ]
}

Cela lancera automatiquement la commande à chaque tic-tac du jeu. Ne vous inquiétez pas des performances, les datapacks sont beaucoup plus économes en ressources que les blocs de commande.

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