Vous pouvez détecter si un joueur se faufile à l'aide de cette commande:
/scoreboard objectives add sneaks minecraft.custom:minecraft.sneak_time
Ensuite, exécutez cette commande dans un bloc de commande en mode répétition pour faire léviter chaque joueur qui s'est faufilé pendant 1 tick et qui n'est pas au sol (ce qui semble être la façon dont vous voulez que le second saut fonctionne)
/execute as @e[scores={sneaks=1},nbt={OnGround:0b}] run effect give @s minecraft:levitation 1 2 true
Vous pouvez utiliser un bloc de commande en mode chaîne pour exécuter cette commande, cela réinitialisera le temps de furtivité pour tout joueur qui est debout sur le sol:
/scoreboard players reset @a[nbt={OnGround:1b}] sneaks
Si vous vous faufilez pendant un très court laps de temps, alors vous pouvez avoir un temps de furtivité de 1, ce qui conduirait à léviter indéfiniment, car l'effet se réappliquerait à plusieurs reprises. Pour éviter cela, vous pouvez utiliser cette commande dans un second bloc de commande en chaîne:
/execute as @a[scores={sneaks=1}] run scoreboard players add @s sneaks 1
Lorsque le joueur touche sa tête, alors vous voulez qu'il cesse de léviter et tombe à nouveau, vous pouvez y parvenir avec un autre bloc de commande en chaîne et cette commande:
/execute as @a[scores={sneaks=2..}] at @s unless block ~ ~1.8 ~ minecraft:air run effect clear @s minecraft:levitation
Modifications après quelques ajustements
Vous pouvez mettre ces commandes dans un bloc de commande en répétition et 4 blocs de commandes en chaîne, cela fonctionne de manière similaire à ce que j'ai expliqué ci-dessus, mais cela donne vraiment l'impression de sauter en plein air, car l'effet de lévitation est beaucoup plus fort. J'ai ajouté un objectif de score fictif appelé "durée", qui reçoit une valeur de la balise ActiveEffects
dans la 4ème commande. La 5ème commande efface l'effet de lévitation 17 ticks (0,85 seconde) avant qu'il ne disparaisse normalement:
/execute as @e[scores={sneaks=1},nbt={OnGround:0b}] run effect give @s minecraft:levitation 1 20 true
/scoreboard players reset @a[nbt={OnGround:1b}] sneaks
/execute as @a[scores={sneaks=1}] run scoreboard players add @s sneaks 1
/execute as @a store result score @s duration run data get entity @s ActiveEffects[{Id:25b}].Duration 1
/execute as @a[scores={duration=..17}] run effect clear @s
Remarque : J'ai supprimé la commande qui vérifie si vous touchez votre tête, car l'effet de lévitation sera si court que vous remarquerez à peine que vous lévitez contre un plafond.
Remarque 2 : cela a pour effet secondaire d'ajouter une sorte de super saut si vous vous faufilez et sautez tout en vous faufilant, ce saut est d'environ 4 blocs de haut et vous ne pouvez pas effectuer un double saut à partir de celui-ci. Un double saut vous élève d'environ 3 blocs de haut.
0 votes
Bonjour Sebastian, pouvez-vous nous dire ce qui ne marche pas ? Que se passe-t-il exactement lorsque vous tentez un double saut ?
0 votes
Je ne peux pas dire. Je te le dirais, mais je ne peux pas le dire (je suis assez nouvelle)
0 votes
Qu'est-ce qui se passe lorsque vous essayez d'exécuter les commandes, recevez-vous des erreurs? Est-ce que cela fonctionne partiellement (c'est-à-dire que vous ne pouvez faire un double saut qu'une seule fois et plus jamais? ou pouvez-vous continuer à sauter indéfiniment?) Il est difficile de dire où vous rencontrez le problème.