Wie kann ich den Lichtpegel eines Blocks mit Befehlen bestimmen?

Ich möchte einen Satz von Befehlsblöcken aufbauen, die automatisch eine Fackel am Fuß eines Spielers (oder Entity) platzieren, wenn der Lichtpegel unter einen bestimmten Schwellenwert fällt. Also grundsätzlich muss ich in der Lage sein, den Lichtpegel bei einem Spieler mit Befehlsblöcken zu bestimmen.

Ich habe die Wiki-Seiten auf NBT-Daten gesehen, um zu sehen, ob das /execute @p ~ ~ ~ testforblock ~ ~ ~ minecraft:air 0 {dataTagForLight:3b} mit dem Block gespeichert ist, also könnte ich so etwas machen /execute @p ~ ~ ~ testforblock ~ ~ ~ minecraft:air 0 {dataTagForLight:3b} , Aber es scheint kein solches Daten-Tag zu sein.

Ich habe das Laichen eines Tageslichtdetektors in Betracht gezogen, aber ich habe das Gefühl, dass es nicht tun wird, was ich in den Höhlen machen möchte, denn soweit ich es sagen kann, ist es im Primärmodus nur von Sonnenlicht betroffen. Außerdem gibt es noch ein Problem mit dem Plan, und es fühlt sich einfach wie ein Kludge an.

Also, gibt es einen Weg, um die Lichtstärke eines bestimmten Blocks zu bestimmen? Wenn das so ist, wie?

  • Wie kann ich feststellen, ob ein Spieler ein bestimmtes Rüstzeug trägt?
  • Wie kann ich einen Spieler nach dem Erkennen eines Artikels in seinem Inventar ansprechen
  • Test für Artikel im Steckplatz des Ofens
  • So entfernen Sie Minecraft Villager Karriere aus ihrer Trading Interface
  • Wie bezauberst du und nimmst Gegenstände mit / geben mit Befehlsblöcken?
  • Kondensierte Mob-Namen im Anzeigetafel
  • One Solution collect form web for “Wie kann ich den Lichtpegel eines Blocks mit Befehlen bestimmen?”

    Diese Methode ist auch eine ziemlich schlechte Kludge und ein bisschen unpraktisch, aber es sollte in der Lage sein, Blocklicht sowie Sonnenlicht zu erkennen.

    Es gibt ein paar Prozesse, die nur bei bestimmten Lichtniveaus auftreten, Sonnenlicht oder nicht:

     Event || Light Level ================================ Snow/ice melt || >=12 Mushrooms uproot || >=13 Flowers uproot || <=7 Plants grow || <=9 

    Mit einem sehr hohen /gamerule randomTickSpeed können diese Prozesse fast sofort passieren. Offensichtlicher Nachteil ist, dass die Gamerule auch die Prozesse auf der ganzen Welt bewirken wird.

    Verschiedene Mobs haben auch unterschiedliche Laichniveaus:

     Mob || Light Level ================================ Bats || <=3 Most hostiles || <=7 Blaze/silverfish || <=11 Most passives || >=9 

    Sie können auch benutzerdefinierte Mob Spawners wird ein Mob jedes Tick, indem Sie seine MinSpawnDelay und MaxSpawnDelay .

    Mit einer dieser Methoden (oder beiden), was Sie tun müssen, ist so etwas wie:

    1. Klon blockiert den Block / Spieler zu einem bestimmten Bereich
    2. Setzen Sie den Block / Spawner in die Mitte des neu geklonten Bereichs
    3. Warten Sie ein paar Zecken
    4. Testen Sie, ob ein Mob hervorgebracht wurde oder ein Prozess aufgetreten ist

    Du könntest auch den Mob Spawner (Minecart) oder Testblock an der Position des Spielers haben, anstatt ihn zuerst zu klonen, was die Verzögerung stark reduzieren würde, aber den Spieler dazu veranlasse, flackernde Mobs / Blöcke zu sehen.