Come impostare il block snow_layer solo se il block sottostante è un block completo?

O c'è davvero un modo per farlo?

Fondamentalmente faccio un /setblock ~ ~ ~ snow_layer al giocatore, ma se è sopra qualcosa che il livello di neve non può essere acceso (ad esempio lastra, segno, erba) sembra solo buggato. : / Potrei evitarlo causando un aggiornamento del block subito dopo averlo creato.

Qualsiasi idea è utile anche se non sei sicuro che funzioni o no! (meglio sarebbe un metodo a un block di command)

Come puoi vedere nella foto, cercando {OnGround:true} non risolve tutto il tempo: inserisci la descrizione dell'immagine qui

AGGIORNAMENTO: Potrei fare un /setblock sopra di esso, ma questo potrebbe rimuovere altri blocchi, quindi sto cercando un'idea più sicura.

AGGIORNAMENTO 2: titolo modificato per rappresentare il problema in modo più chiaro.

3 Solutions collect form web for “Come impostare il block snow_layer solo se il block sottostante è un block completo?”

Metodo semplice

Esegui i seguenti 2 comandi in sequenza in 1 tick:

 /execute @p ~ ~ ~ setblock ~ ~ ~ snow_layer 0 keep /execute @p ~ ~ ~ detect ~ ~ ~ snow_layer 0 clone ~ ~1 ~ ~ ~1 ~ ~ ~1 ~ replace force 

Il primo command posiziona lo strato di neve nella posizione del giocatore, mentre il secondo command aggiornerà lo strato di neve e rimuoverà quelli impropri. Usando questo metodo aggiornerai costantemente i blocchi adiacenti intorno al block in cui si trova la testa del giocatore, se non vuoi che usi invece il metodo avanzato.


Metodo avanzato

  1. Per prima cosa devi allocare 2 blocchi (in <x> <y> <z> e <x> <y+1> <z> ) sul tuo mondo in questo sistema a blocchi di comandi. Quale dovrebbe essere indipendente e tenuto lontano da altri blocchi o entity framework;.
  2. I seguenti comandi verranno eseguiti sequenzialmente in 1 tick una volta completati (funziona meglio con clock di riempimento / clonazione 20Hz):

    /execute @p ~ ~.999999999999999 ~ clone ~ ~-1 ~ ~ ~ ~ <x> <y> <z> replace
    /setblock <x> <y+1> <z> snow_layer 0 keep
    /clone <x> <y> <z> <x> <y> <z> <x> <y> <z> replace force
    /execute @p ~ ~.999999999999999 ~ detect <x> <y+1> <z> snow_layer 0 setblock ~ ~ ~ snow_layer

  3. Sostituisci <x> <y> <z> , <x> <y+1> <z> con le coordinate dei blocchi allocati dall'alto

Dopo aver provato molte cose, ho finalmente trovato una soluzione che funziona tutto il tempo (spero) e non cambia alcun block:

Invece di creare lo strato di neve con:

 /setblock ~ ~ ~ snow_layer 

Io uso il command:

 /summon FallingSand ~ ~ ~ {Block:"minecraft:snow_layer",Time:1,DropItem:false} 

che fa abbastanza bene il lavoro, e a causa di DropItem:false non fa cadere nemless la neve se si mette male. 🙂

NOTA:

Evocare la sabbia che cade nello stesso block in cui ce n'è uno esistente causerà la sua cancellazione, quindi solo evocare la sabbia se c'è aria! Nel mio esempio:

Evoca FallingSand che diventa uno snow_layer A each giocatore:

/execute @a ~ ~ ~ rileva ~ ~ ~ aria 0 /summon FallingSand ~ ~ ~ {...}

Potrei fare un / setblock sopra di esso, ma questo potrebbe rimuovere altri blocchi, quindi sto cercando un'idea più sicura.

Il command /setblock consente una modalità di mantenimento del block precedente, che significa che sostituirà solo l'aria. Per questo motivo, possiamo tranquillamente usare un block che si trasformsrà immediatamente in aria (come uno snow_layer) per causare un aggiornamento di block. Eseguendo un command come questo nello stesso momento in cui il tuo attuale dovrebbe aggiustare le cose:

 /setblock ~ ~1 ~ snow_layer 0 keep 
  • Perché i ragni sono sempre sul mio muro est?
  • Puoi fare un seme?
  • Che cos'è l'impostazione "Usa VBO"?
  • La pelle di Minecraft smette di funzionare a 1.9
  • Come cambiare una mappa da Super piatto a Normale; Minecraft Bukkit Server
  • I selettori di destinazione non funzionano su Aternos Server
  • Minecraft - Elevatore a pistone senza perle appiccicose / melma / Ender?
  • Cosa esiste oltre le terre lontane?
  • XboxTips.com Ci piace giocare a giochi, specialmente videogiochi con Xbox e Playstation.