[Progetto] /hat plugin in vanilla minecraft snapshot 14w26c

Utilizzado il nuovo comando /replaceitem, aggiunto nel recente snapshot 14w26c, emulerò con più fedeltà possibile il comando /hat del plugin essentials. 

Riassumerò in poche parole la funzione del comando in questione: avendo un qualsiasi blocco in mano e scrivendo nella chat /hat il blocco o oggetto selezionato si metterà in testa. 

Purtroppo non credo di riuscire a emulare al 100% questo comando poichè ci sono delle restrizioni (per adesso) in /replaceitem infatti si possono mettere in testa solo blocchi(pietra,ossidiana...etc) e non oggetti(spade,vanghe...etc). 
Come seconda differenza, per indossare il blocco voluto, bisogna mettere il materiale desiderato nel primo slot e averlo in mano. Mentre il blocco è in mano scrivete: "hat" in un book and quill. Quando avete selezionato il blocco voluto, sempre nel book and quill, scrivete:"stop".

I comandi più utilizzati sono: "/replaceitem entity @a slot.armor.head stone" e "/testfor @a {SelectedItemSlot:0,Inventory:[{Slot:0b,id:"minecraft:stone"}]}"

Il primo è il nuovo comando in questione che è strutturato in comando:"/replaceitem", su chi o che cosa bisogna modificare l'inventario:"entity(chi)/block(che cosa)" @a è un identificatore che significa a tutti i giocatori, "slot.aromor.head" specifica dove (in questo caso la testa) bisogna mettere il blocco voluto che è l'ultima parte "stone".
Il secondo è un vecchio comando che cerca un giocatore che ha il primo Slot dell'inventario selezionato "SelectedItemSlot:0" e in quello Slot c'è un blocco di pietra "Inventory:[{Slot:0b,id:"minecraft:stone"}]}".

Il congegno è ancora in fase di costruzione e prova ma appena finito metterò il download del mondo.

Come sempre feedback e consigli su come migliorare il macchinario sono e saranno ben accetti.

T_p_O_n

p.s. Mi serve una mano su come rederlo multiplayer-friendly poichè visto che il selettore è @a quando uno sceglie un blocco tutti i giocatori avranno quel blocco e questo non va bene!!! 
Quindi chiedo a tutte le menti di pensare su come aiutarmi!!! Grazie
[Immagine: u2rtNar.gif]

Se volete ridere:
@T_p_O_n , personalmente, ti direi di rinunciare. Il problema di base è proprio la ''dimensione'' di cosa vuoi fare.

Per i blocchi ci sono 175 id diversi. Se inoltre conti i damage value questo numero come minimo si triplica.

Se decidi comunque di continuare il mio consiglio è questo.

Usa un libro Json, con alcuni comandi (non solo questo) preimpostati.
I player potranno attivare quella funzione con un click.
Il comando ovviamente dovrà essere di tipo trigger (e per comodità chiamerò il suo obbiettivo Cappello).
Per esempio ti direi di mettere che cliccando sulla parola nel libro /hat viene attivato questo comando

/trigger Cappello set 1

In questo modo, ogni persona potrà settare con un click il proprio punteggio Cappello a 1.

Allo spawn, metti un replace clock (lo consiglio per la dimensione di ciò che vuoi fare).

Fai in modo che il primo comando attivato dal clock sia

scoreboard players enable @a Cappello

In questo modo tutti i player potranno cliccare il libro.
(Volendo modifica il selettore @a per fare in modo che coinvolga solo una categoria di player paganti).

Dopo di questo (ti ripeto che l'ordine è importante) fai in modo che il replace clock attivi una coppia di command block per ogni blocco (per questo dico che è un lavoro assurdo).

Il primo della coppia deve essere

/scoreboard players set @a Blocco VALORE {Inventory:[{Slot:0b,id:minecrat:ID,DamageBig GrinAMAGE_VALUE}]}

Dove Blocco è un obbiettivo dummy ID e DAMAGE_VALUE sono l'id e il damage value del blocco e VALORE è una valore diverso per ogni blocco.

Il gioco saprà che blocco il player ha nel primo slot dal valore del suo punteggio Blocco.

Nel secondo command block della coppia metti

/replaceitem entity @a[score_Cappello_min=1,score_Blocco=VALORE,score_Blocco_min=VALORE] slot.armor.head ID DAMAGE_VALUE

Con le stesse sostituzioni di prima. In pratica questo comando metterà il blocco che il player ha nel primo slot nella sua testa quando preme la parola nel libro.

Come ultima (ripeto, l'ordine è importante) cosa metti un command block (uno solo per fortuna) con

/scoreboard players set @a Cappello 0

che resetterà il tutto.

Il risultato è questo:

- In qualunque momento il player ha un punteggio Blocco che riconosce il blocco che ha nel primo slot;

- Quando clicca il libro, per un tick di gioco il suo punteggio Cappello sale a 1, gli viene messo il cappello (identificato grazie al punteggio Blocco) e gli viene resettato il punteggio Cappello (per questa azione simultanea serve come minimo un fill clock, ma consiglio un replace clock per la versatilità).

I difetti del metodo che ti consiglio sono:

1) La mole di lavoro, però inevitabile;

2) Se il player ha un blocco nel primo slot e lo cambia con un oggetto, questo mio metodo gli farà indossare comunque il blocco di prima, dato che l'oggetto non modifica il punteggio Blocco del player.

P.S: volendo nel comando replaceitem puoi anche mettere anche le NBT tag ma se decidi di valutare anche quelle ti assicuro che non ti basterà tutta la tua vita per finire il lavoro (non è una metafora). (Modificato 29/06/2014, 00:47 da MandelCube.)
Grazie innanzitutto GRAZIE per l'aiuto. Mi sono appena svegliato e appena posso accendo il computer e allegherò un'immagine con cosa sono riuscito a fare ieri. Grazie ancora di tutto TPON


P.s. Sai come Si alleghi un'immagine direttamente nella discussione? Grazie


Inviato dal mio iPad utilizzando Tapatalk
[Immagine: u2rtNar.gif]

Se volete ridere:
Non allegare le immagini, c'è un bug che le fa cancellare dopo un po'

Carica l'immagine su imgur.com e poi usa il tasto immagine nell'editor delle risposte.
Non rispondo a richieste di supporto in privato!

Moderatore&Neswer
Sviluppatore

Ecco le immagini: nella prima in giallo non si vede ma c'è scritto: "/testfor @a {SelectedItemSlot:0,Inventory:[{Slot:0b,id:"minecraft:stone}]}".

[Immagine: OgBrO2O.png]
[Immagine: RrVUa6J.png]
[Immagine: u2rtNar.gif]

Se volete ridere:
29/06/2014, 08:49T_p_O_n ha scritto: Grazie innanzitutto GRAZIE per l'aiuto. Mi sono appena svegliato e appena posso accendo il computer e allegherò un'immagine con cosa sono riuscito a fare  ieri. Grazie ancora di tutto TPON


P.s. Sai come Si alleghi un'immagine direttamente nella discussione? Grazie


Inviato dal mio iPad utilizzando Tapatalk

@T_p_O_n , 3 grazie nel messaggio ma alla fine hai ancora usato /testfor per l'identificazione che ovviamente non è compatibile in multi-player (dato che, se ci pensi un attimo, non fa assolutamente nulla) .-.

P.S: 162 blocchi non bastano, ce ne sono di più.

P.P.S: non usare il clock a comparatore in creative. Fa ricalcolare eccessivamente l'ordine della redstone causando lag ed è troppo lento per questi lavori di precisione... (Modificato 29/06/2014, 11:33 da MandelCube.)
Ho pensato a una cosa troppo pazza ormai ho fatto così e me la tengo solo per il single player pazienza Grazie di tutto.
[Immagine: u2rtNar.gif]

Se volete ridere:
Allora, mi spieghi che senso ha aver creato questo post come progetto? -.-
Discussioni simili
Risposta di ReNext
14/10/2018, 19:21
 
6 598
Risposta di Dark86_
19/12/2017, 18:41
Risposta di Enwarth
02/12/2017, 18:24
 
[Domanda] Replace in vanilla
Risposta di HemeralDErik
11/09/2017, 12:42

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