Il forum è in modalità sola lettura dal 16 giugno 2019, ora siamo su Discord. Altre informazioni

[Richiesta] Chest Rifornibbili ogni tot con i command block?

Salve gente! volevo dire se si poteva con i command block fare che ogni tot dentro una chest viene givvato (Per esempio) un diamante! vorrei anche che quando la chest viene rifornita semre da questo command block che gli oggetti non si accumulassero! + rep a chi mi aiuta (Modificato 05/11/2017, 19:12 da pro84.)
@pro84

Useremo un timer scoreboard, poi Summoneremo e uccideremo subito dopo un carrello con Hopper con l'oggetto dentro, che dovrebbe in teoria andare nella Chest sotto

Cominciamo! I comandi sono stati strutturati in maniera da essere usati in una funzione, volendo, e potrai avere più generatori.

Chat: /scoreboard objectives add timerChest dummy

Ora devi scrivere in Chat questo comando sopra (stando sopra al blocco) ogni chest

/summon armor_stand ~ ~1 ~ {Tags:["generatore"],NoGravity:1b,Marker:1b,Invisible:1,Invulnerable:1}

Per rimuoverlo, vacci vicino e fai
/kill @e[tag=generatore,c=1]

Ora in un cb repeating always active (viola)

scoreboard players add @e[tag=generatore] timerChest 1

Ora in un cb in chain sempre attivo (anche i prossimi comandi!)

execute @e[score_timerChest_min=200] ~ ~ ~ /summon hopper_minecart ~ ~1 ~ {Tags:["CartDiamond"],Items:[{Slot:0,id:"minecraft:diamond",Count:1b}]}

scoreboard players set @e[score_timerChest_min=200] timerChest 0

Sostituisci il 200 con numero di secondi da aspettare x 20

Ora occupiamoci di uccidere il carrello

Prova a vedere se funziona

execute @e[score_timerChest_min=150,score_timerChest=150] ~ ~ ~ kill @[tag=CartDiamond,r=3]

Se ci sono problemi taggami


 Ti sono stato utile?
Yeee! Aiutami con +1 rep Yeee! 

















Non fai prima a clonare una chest con un diamante gia dentro?
05/11/2017, 18:55pro84 ha scritto: ...vorrei anche che quando la chest viene rifornita semre da questo command block che gli oggetti non si accumulassero!

Genera un 'token' sulla chest, ti servirà a ricaricarla/e in massa.

Ovviamente puoi anche essere specifico coi tag:

/summon armor_stand ~ ~ ~ {Tags:["Refill","RefillDiamond"],NoGravity:1b,Invulnerable:1b,Invisible:1b,Marker:1b}


/summon armor_stand ~ ~ ~ {Tags:["Refill","RefillEmerald"],NoGravity:1b,Invulnerable:1b,Invisible:1b,Marker:1b}

[...]

Colore Comando = Colore Command Block

scoreboard objectives add refillTimer dummy

scoreboard players add @e[tag=Refill] refillTimer 1

Puoi decidere quanto tempo deve passare tra un refill e l'altro, non preoccuparti, gli item non si accumuleranno se nessuno svuota il baule.

Lo schema di comando è questo:

execute @e[tag=RefillDiamond,score_refillTimer_min=6000] ~ ~ ~ blockdata ~ ~ ~ {Items:[{Slot:0,id:"minecraft:diamond",Count:1b}]}

scoreboard players set @e[tag=RefillDiamond,score_refillTimer_min=6000] refillTimer 0

In questo caso ho deciso di fare in modo che ogni Chest che deve rigenerare Diamanti (ha il tag "RefillDiamond") lo faccia ogni 5 minuti (60 * 5 = 300, 300 * 20 = 6000)

Queste due linee di comando vanno modificate per quello che vuoi fare, se ad esempio volessi creare un baule che rigenera 2 Smeraldi ogni 10 minuti:

execute @e[tag=RefillEmerald,score_refillTimer_min=12000] ~ ~ ~ blockdata ~ ~ ~ {Items:[{Slot:0,id:"minecraft:emerald",Count:2b}]}

scoreboard players set @e[tag=RefillEmerald,score_refillTimer_min=12000] refillTimer 0
Il primo comando si occupa di eseguire un comando Blockdata che reinserisce gli smeraldi nel baule ogni 10 minuti (60 * 10 = 600, 600 * 20 = 12000)

Il secondo comando riporta il conteggio a 0, in modo che questo loop continui all'infinito.
 ♫~ Se ti sono stato d'aiuto puoi ringraziarmi cliccando su +1 REP ~♪
CBUser e CBDev dalla 1.8, taggami se hai problemi coi Command Block

[Immagine: U85qfto.png]
Clicca il logo per vedere il mio album di disegni ( ˘˘  )
06/11/2017, 13:13Maca ha scritto:
05/11/2017, 18:55pro84 ha scritto: ...vorrei anche che quando la chest viene rifornita semre da questo command block che gli oggetti non si accumulassero!

Genera un 'token' sulla chest, ti servirà a ricaricarla/e in massa.

Ovviamente puoi anche essere specifico coi tag:

/summon armor_stand ~ ~ ~ {Tags:["Refill","RefillDiamond"],NoGravity:1b,Invulnerable:1b,Invisible:1b,Marker:1b}


/summon armor_stand ~ ~ ~ {Tags:["Refill","RefillEmerald"],NoGravity:1b,Invulnerable:1b,Invisible:1b,Marker:1b}

[...]

Colore Comando = Colore Command Block

scoreboard objectives add refillTimer dummy

scoreboard players add @e[tag=Refill] refillTimer 1

Puoi decidere quanto tempo deve passare tra un refill e l'altro, non preoccuparti, gli item non si accumuleranno se nessuno svuota il baule.

Lo schema di comando è questo:

execute @e[tag=RefillDiamond,score_refillTimer_min=6000] ~ ~ ~ blockdata ~ ~ ~ {Items:[{Slot:0,id:"minecraft:diamond",Count:1b}]}

scoreboard players set @e[tag=RefillDiamond,score_refillTimer_min=6000] refillTimer 0

In questo caso ho deciso di fare in modo che ogni Chest che deve rigenerare Diamanti (ha il tag "RefillDiamond") lo faccia ogni 5 minuti (60 * 5 = 300, 300 * 20 = 6000)

Queste due linee di comando vanno modificate per quello che vuoi fare, se ad esempio volessi creare un baule che rigenera 2 Smeraldi ogni 10 minuti:

execute @e[tag=RefillEmerald,score_refillTimer_min=12000] ~ ~ ~ blockdata ~ ~ ~ {Items:[{Slot:0,id:"minecraft:emerald",Count:2b}]}

scoreboard players set @e[tag=RefillEmerald,score_refillTimer_min=12000] refillTimer 0
Il primo comando si occupa di eseguire un comando Blockdata che reinserisce gli smeraldi nel baule ogni 10 minuti (60 * 10 = 600, 600 * 20 = 12000)

Il secondo comando riporta il conteggio a 0, in modo che questo loop continui all'infinito.
Come facc90 che questa chest ha il tag RefiilDiamond ?

ah ok ho risolto grazie (Modificato 06/11/2017, 14:50 da pro84.)
Ops. .. avevo letto che gli oggetti si accumulassero... Ahfefe


 Ti sono stato utile?
Yeee! Aiutami con +1 rep Yeee! 

















Perche dovete fare sti casini quando esiste replace item
1 utente apprezza questo post
08/11/2017, 15:11predator68_steel ha scritto: Perché dovete fare sti casini quando esiste replace item

Per un semplice motivo: @pro84 ha chiesto che gli oggetti NON si possano cumulare.

"Dove sta il problema tra usare replaceitem e blockdata? Alla fine entrambi i comandi fanno la stessa cosa."

Eh no.

Ti mostrerò direttamente per quale motivo si dovrebbe usare blockdata.

[Immagine: teMzD2F.png]

Prendiamo come esempio questo baule: ogni 10 minuti rigenera 5 Diamond Block nel suo slot centrale.

Se stiamo usando replaceitem, ogni 10 minuti i contenuti dello slot 13 vengono rimpiazzati con 5 Diamond Block.

Questo vuol dire che se qualcuno sposta i Diamond Block dallo slot 13 (segnato in rosso nello screen)

[Immagine: rDrsxZ8.png]

Quando la chest rigenererà il contenuto dopo 10 minuti, eseguendo questo comando:

/replaceitem block ~ ~ ~ slot.container.13 diamond_block 5 0

Il suo aspetto sarà questo: la chest contiene più di 5 blocchi di diamante, ne contiene 10. Questo processo è semplicissimo da ricreare: basta spostare gli item rigenerati dallo slot in cui si rigenerano. Si può ripetere semi-infinitamente: il numero massimo raggiungibile prima di dover svuotare uno slot sarebbe (25*64)+5, quindi 1605

[Immagine: j2ZdSy9.png]




Torniamo alla stessa chest in questo stato:

[Immagine: rDrsxZ8.png]

Utilizzando /blockdata ~ ~ ~ {Items:[{Slot:13,id:"minecraft:diamond_block",Count:5b}]} su questa chest, il risultato sarà questo:

[Immagine: teMzD2F.png]

Gli altri sono spariti completamente, la chest può raggiungere un massimo di 5 Blocchi di Diamante stipati contemporaneamente.


Il risultato è uguale, perché i 5 blocchi di diamante ci sono a prescindere, ma è anche diverso, perché mentre in uno sono 'duplicabili' e accumulabili semplicemente spostando i blocchi dallo slot dove vengono generati, nell'altro si svuota tutta la chest.
(Modificato 10/11/2017, 23:30 da Maca.)
 ♫~ Se ti sono stato d'aiuto puoi ringraziarmi cliccando su +1 REP ~♪
CBUser e CBDev dalla 1.8, taggami se hai problemi coi Command Block

[Immagine: U85qfto.png]
Clicca il logo per vedere il mio album di disegni ( ˘˘  )
[quote pid='636726' dateline='1510153438']


Il risultato è uguale ma diverso.

[/quote]

I che mi confonde molto, ma non era uguale se facevi con /clone e clonavi una chest con 5 blochi di diamante? Sarebbe stat la stessa cosa... la chest da clonare ovviamente non è accessibile
Ovviamente con /clone il risultato è identico a /blockdata, ma perché sprecare tempo a impostare coordinate e chest da clonare quando /blockdata fa tutto da solo?

Parlando di risultato finale non c'è differenza, parlando di efficienza, vi è un abisso.
 ♫~ Se ti sono stato d'aiuto puoi ringraziarmi cliccando su +1 REP ~♪
CBUser e CBDev dalla 1.8, taggami se hai problemi coi Command Block

[Immagine: U85qfto.png]
Clicca il logo per vedere il mio album di disegni ( ˘˘  )
Discussioni simili
Risposta di DragonHeart104
03/06/2019, 12:32
Risposta di cla7997
07/04/2019, 18:21
Risposta di Totto
30/03/2019, 22:43
Risposta di CommandLeo
06/03/2019, 21:33
 
2 234
Risposta di Erico
26/02/2019, 16:25

Utente(i) che stanno guardando questa discussione: 1 Ospite(i)