J'ai une slime qui monte sur un bloc de sable tombant qui vole à travers l'air. J'ai besoin que le bloc de sable tombant disparaisse quand il touche le sol pour que seul le slime reste. Y a-t-il un moyen de faire ça ?
Réponses
Trop de publicités?Créez un objectif de tableau de bord nommé onGround
/scoreboard objectives add onGround dummy
Définissez tous les scores onGround des entités dont la balise OnGround est égale à 1 à 1; tuez toutes les entités FallingSand avec un score onGround de 1
/scoreboard players set @e onGround 1 {OnGround:1b}
/kill @e[type=FallingSand,score_onGround_min=1]
Placez les deux dernières commandes sur une horloge de 20Hz
Si le sol est uniquement constitué d'un certain matériau, par exemple, pierre
Vous pouvez utiliser un execute avec detect et tester le bloc en dessous du FallingSand
/execute @e[type=FallingSand] ~ ~ ~ detect ~ ~-1 ~ stone 0 kill @e[type=FallingStand,r=0]
la r=0 à la fin est pour s'assurer que le FallingSand ne cible que lui-même.
J'ai déjà un slime chevauchant mon bloc, mais si vous avez juste un bloc, vous pouvez faire en sorte qu'une entité invisible le chevauche et cela fonctionnera toujours.
REMARQUE : Toutes les commandes ici, sauf indication contraire, doivent être exécutées sur une horloge de 20hz.
La solution que j'ai trouvée était de laisser le sable en chute devenir un bloc, puis d'utiliser le slime pour détruire le bloc. Tout d'abord, vous devez détecter les slimes qui viennent de toucher le sol, pour qu'ils ne détruisent pas d'autres blocs. Un scoreboard peut être utilisé pour suivre cela. Tout d'abord, créez l'objectif du scoreboard manuellement :
/scoreboard objectives add onGroundTicks dummy
Ensuite, ajoutez le score aux slimes au sol :
/scoreboard players add @e[type=Slime] onGroundTicks 1 {OnGround:1b}
Tout slime qui vient juste de toucher le sol pour la première fois aura un score de 1. Les slimes qui n'ont jamais touché le sol ont un score de 0. Les slimes qui ont déjà touché le sol ont un score qui est supérieur à 1.
Ensuite, vous devez enlever les blocs supplémentaires autour des slimes avec un score de 1. J'utilise des barrières, mais peu importe quel bloc vous utilisez, vous devez remplacer minecraft:barrier
par ce bloc. Seuls les blocs de barrière dans cet exemple sont détruits.
/execute @e[type=Slime,score_onGroundTicks=1] ~ ~ ~ /fill ~1 ~ ~1 ~-1 ~ ~-1 minecraft:air 0 replace minecraft:barrier 0
Vous voudrez peut-être ou non tuer les slimes après cela :
/kill @e[type=Slime,score_onGroundTicks_min=2]