Wie kann ich überprüfen, ob ein Spieler in der Luft ist mit / testfor?

Ich bin daran interessiert, den Fallschaden mit Befehlsblöcken zu vernachlässigen, indem er den Spielern Resistance gibt, während sie fallen. Wie kann ich /testfor , um zu sagen, ob ein Spieler auf dem Boden oder in der Luft ist?

Versuche dies:

 testfor <player> {OnGround:1b} 

Tests für den angegebenen Spieler auf dem Boden, dann machen Sie einen Komparator zu einem NICHT-Tor (Block mit einer Redstone-Fackel drauf)

Lassen Sie uns ein Ziel machen, dies zu verfolgen, und nennen es 'Boden'.

 /scoreboard objectives add ground dummy 

Dieser Befehl muss nur einmal ausgeführt werden.

Dann, auf einer schnellen Uhr, laufen

 /scoreboard players set @a ground 1 

und

 /execute @a ~ ~ ~ detect ~ ~-1 ~ air scoreboard set @p ground 0 

in dieser Reihenfolge.

Der erste Befehl setzt alle Spieler auf "auf dem Boden", und der zweite Befehl setzt diejenigen, die in der Luft sind, nicht auf dem Boden zu sein.

Um Spieler in der Luft zu beeinflussen, benutze @a[score_ground_min=0]

Um Spieler auf dem Boden zu beeinflussen, verwenden Sie @a[score_ground=1]

Du brauchst nur noch 1 Befehl: hook this up to a redstone clock:

 /execute @a ~ ~ ~ detect ~ ~-3 ~ air 0 effect @p jump_boost 1 255 true 

Es gibt ihnen unendliche Sprungverstärkung, während in der Luft, die Fallschaden verhindert (sie können noch Brandschaden, Verwelken, etc.)

Testen in luft:

 execute @a[parameters] ~ ~ ~ detect ~ ~-1 ~ air 0 <command> 

Testen auf Boden:

 scoreboard objectives add onGround dummy scoreboard players set @a onGround 1 {onGround:1b} execute @a[score_onGround_min=1] ~ ~ ~ <command> scoreboard players set @a[score_onGround_min=1] onGround 1