Forum - Minecraft ITALIA
[Problema] Rilevare oggetti nell'inventario - Versione stampabile

+- Forum - Minecraft ITALIA (https://www.minecraft-italia.it/forum)
+-- Forum: Generale - Parliamo di Minecraft (https://www.minecraft-italia.it/forum/f-generale-parliamo-di-minecraft)
+--- Forum: Command Block (https://www.minecraft-italia.it/forum/f-command-block)
+--- Discussione: [Problema] Rilevare oggetti nell'inventario (/t-problema-rilevare-oggetti-nell-inventario)



Rilevare oggetti nell'inventario - Mik_LOM - 05/03/2019

SALVE BELLA GENTEETNEG Bananarap

Nella mia mappa ho messo un puzzle dove devi trovare gli oggetti per craftare una leva che può essere piazzata su un determinato blocco (blocco d'oro). Nel mio caso devo far si che quando il player ha la leva nell'inventario, questa gli venga tolta e subito gliene viene givvata una con il CanPlaceOn. Per fare questo ho messo, acceso da un blocco di redstone, un CB a ripetizione non condizionale serve red con il seguente comando:
Codice:
clear @a minecraft:lever



Subito collegato ad esso un CB catena condizionale serve red con il seguente comando:
Codice:
give @a minecraft:lever 1 0 {CanPlaceOn:["gold_block"]}

poi un altro CB uguale al precedente che toglie il blocco di redstone (spegne la catena).
Dov'è il problema ... Innanzitutto quando ho in mano una leva non so perché ma se premo Q non getta la leva, ma soprattutto se raccolgo una leva mi viene mangiata ma non ricevo nulla...
Perché succede questo ragazziz?
Se non sapete perché succede, potreste suggerirmi un modo migliore per raggiungere il mio scopo?
E se non siete in grado di aiutarmi, fate vedere questo post a gente bravaavarb.


GRAZIE MILLEELLIM Bananarap SeeS


RE: Rilevare oggetti nell'inventario - DragonHeart104 - 06/03/2019

Il problema dovrebbe essere il fatto che se levi il blocco di redstone il command block a ripetizione resta comunque attivo, prova a metterlo sempre attivo e al suo interno metti il seguente comando:

/execute as @a[nbt={Inventory:[{id:"minecraft:lever"}]}] run clear @s lever

Mentre nell'ultimo command block metti il seguente comando:

/datamerge block CORDINATE {auto:0b}

dove al posto di CORDINATE metti le cordinate del command block a ripetizine


RE: Rilevare oggetti nell'inventario - Mik_LOM - 06/03/2019

06/03/2019, 08:22DragonHeart104 ha scritto: Il problema dovrebbe essere il fatto che se levi il blocco di redstone il command block a ripetizione resta comunque attivo, prova a metterlo sempre attivo e al suo interno metti il seguente comando:

/execute as @a[nbt={Inventory:[{id:"minecraft:lever"}]}] run clear @s lever

Mentre nell'ultimo command block metti il seguente comando:

/datamerge block CORDINATE {auto:0b}

dove al posto di CORDINATE metti le cordinate del command block a ripetizine

Scusa mi sono dimenticato di scrivere che gioco in 1.12.2

Ogni problema/domanda che faccio è sempre riferito a 1.12.2


RE: Rilevare oggetti nell'inventario - DragonHeart104 - 08/03/2019

Ah ok, nella 1.12 allora devi mettere in un command block a ripetizione sempre attivo il seguente comando:

/testfor @a {Inventory:[{id:"minecraf:lever"}]}

in dei command block a catena condizionali sempre attivi metti i seguenti comandi:

/clear @a lever

/give @a lever 1 0 {CanPlaceOn:[gold_block]}

/blockdata CORDINATE {auto:0b}

dove al posto do CORDINATE ci metti le cordinate del command block a ripetizione

Il problema tuo però è sempre lo stesso, il command block a ripetizione la redstone gli serve solo per attivarsi se è a "serve redstone" poi se la levi rimane comunque attivo.



RE: Rilevare oggetti nell'inventario - Mik_LOM - 09/03/2019

08/03/2019, 15:40DragonHeart104 ha scritto: Ah ok, nella 1.12 allora devi mettere in un command block a ripetizione sempre attivo il seguente comando:

/testfor @a {Inventory:[{id:"minecraf:lever"}]}

in dei command block a catena condizionali sempre attivi metti i seguenti comandi:

/clear @a lever

/give @a lever 1 0 {CanPlaceOn:[gold_block]}

/blockdata CORDINATE {auto:0b}

dove al posto do CORDINATE ci metti le cordinate del command block a ripetizione

Il problema tuo però è sempre lo stesso, il command block a ripetizione la redstone gli serve solo per attivarsi se è a "serve redstone" poi se la levi rimane comunque attivo.

Ok grazie, quando torno a casa vedo se funziona.

Potresti dirmi a che serve Blockdata?


RE: Rilevare oggetti nell'inventario - DragonHeart104 - 09/03/2019

/blockdata <x> <y> <z> <dataTag> ti permette di cambiare le tag di un blocco, che le puoi vedere con il comando /blockdata CORDINATE {} dove al posto di CORDINATE metti il blocco di cui vuoi vedere le tag, quando eseguirai in chat il comando ti compariranno tutte le tag che te puoi cambiare con il comando iniziale.

Nn tutti i blocchi però hanno le tag, solo alcuni le possiedono, come ad esempio una chest, oppure un alambicco, un command block, insomma il secondo comando ti permette di capire quali blocchi hanno le loro tag.

Un esempio di comando è quello che serve a te, che cambia il command block a ripetizione da "sempre attivo" a "serve redstone", infatti la tag che permette ciò é {auto:_}, dove se dopo i due punti metti 0b il command block diviene a "serve redstone", mentre se metti 1b il command block diviene a "sempre attivo".


Con questo comando però puoi anche cambiare molte altre cose, il suo corrispettivo che ha molte più funzionalità é /entitydata <entità> <dataTag>, che ti permette di modificare le tag di un'entità


RE: Rilevare oggetti nell'inventario - Mik_LOM - 13/03/2019

09/03/2019, 18:01DragonHeart104 ha scritto: /blockdata <x> <y> <z> <dataTag> ti permette di cambiare le tag di un blocco, che le puoi vedere con il comando /blockdata CORDINATE {} dove al posto di CORDINATE metti il blocco di cui vuoi vedere le tag, quando eseguirai in chat il comando ti compariranno tutte le tag che te puoi cambiare con il comando iniziale.

Nn tutti i blocchi però hanno le tag, solo alcuni le possiedono, come ad esempio una chest, oppure un alambicco, un command block, insomma il secondo comando ti permette di capire quali blocchi hanno le loro tag.

Un esempio di comando è quello che serve a te, che cambia il command block a ripetizione da "sempre attivo" a "serve redstone", infatti la tag che permette ciò é {auto:_}, dove se dopo i due punti metti 0b il command block diviene a "serve redstone", mentre se metti 1b il command block diviene a "sempre attivo".


Con questo comando però puoi anche cambiare molte altre cose, il suo corrispettivo che ha molte più funzionalità é /entitydata <entità> <dataTag>, che ti permette di modificare le tag di un'entità



BESTIALE! funziona il comando e grazie per il tutorial su blockdata, è davvero molto utile Big Grin

Problema risolto, potete chiudere Big Grin Bananarap