Come sostituire un articolo SPECIFICO nella hotbar di un giocatore con un altro object specifico

Voglio farlo in modo da avere un block di comandi che verifica se un giocatore ha una bottiglia di vetro selezionata nello slot 1 della sua hotbar, se questo è vero, quel giocatore specifico e solo quel giocatore viene aggiunto a una squadra. Ogni giocatore che è in quella squadra ottiene un effetto pozione temporanea di invisibilità per 30 secondi e poi sostituisce la bottiglia di vetro nella hotbar delle persone con una bottiglia d'acqua e li rimuove dalla squadra. La ragione per cui voglio farlo è che voglio creare un potere temporaneo e ricaricabile che un giocatore può triggersre in modo che utilizzi un object, get un'abilità, dopo un certo periodo di tempo perdere l'abilità e recuperare l'object originale dopo il "potere" si è ricaricato.

Il problema che ho è … Posso verificare se un giocatore ha un object specifico in uno specifico slot, e poi avere un comparatore uscire dal block di command che ottiene un output se il command testfor diventa vero per qualsiasi giocatore. Ma poi non so come colpire solo quel giocatore specifico con la bottiglia di vetro da inserire in una squadra poiché gli unici comandi di targeting sono @a, @p o @r. Questi comandi di targeting non funzionano poiché non voglio che tutti i giocatori vengano aggiunti alla squadra e ottengano gli effetti pozione e non voglio che il giocatore più vicino al block di comandi venga aggiunto alla squadra e ottenga gli effetti pozione come il giocatore che ha triggersto il testfor il block di command potrebbe essere più lontano dal block di command di un'altra persona. E naturalmente, un giocatore random non functionrebbe neanche. Quindi c'è un command in cui posso scegliere come target tutti i giocatori che hanno una bottiglia di vetro nello slot 1 della loro hotbar e aggiungerli a una squadra piuttosto che vedere se un giocatore ha una bottiglia di vetro nella slot 1 della loro hotbar e aggiungere tutte le persone a una squadra.

Scusate per la lunga spiegazione, non sono molto bravo a spiegare le cose, se qualcuno può aiutare, sarebbe molto apprezzato.

Dovrai "tradurre" il tag dei dati della bottiglia di vetro in qualcosa che funzioni con i selettori di destinazione (@a e così via). Ciò può essere ottenuto più facilmente utilizzando valori di tabellone fittizio o, in 1,9, tag del tabellone segnapunti.

In 1.8, crea un objective usando

scoreboard objectives add bottleInOne dummy 

Crea un orologio di riempimento ed esegui i seguenti due comandi

 scoreboard players set @a[score_bottleInOne_min=1] bottleInOne 0 scoreboard players set @a[score_bottleInOne=0] bottleInOne 1 {SelectedItemSlot:0,SelectedItem:{id:minecraft:glass_bottle}} 

Se la parte del team è necessaria, ora puoi aggiungere @a[score_bottleInOne_min=1] al team e rimuovere @a[score_bottleInOne=0] da esso, usando lo stesso clock di riempimento. Puoi anche usare questi selettori di destinazione direttamente per i comandi /effect e /replaceitem , se la parte del team era solo la tua idea di select quel giocatore per l'effetto.


Nel 1.9, puoi omettere l'objective del tabellone a favore dei tag. Utilizzando una catena di blocchi di comandi Ripeti / Catena, esegui

 scoreboard players tag @a[tag=bottleInOne] remove bottleInOne scoreboard players tag @a[tag=!bottleInOne] add bottleInOne {SelectedItemSlot:0,SelectedItem:{id:minecraft:glass_bottle}} 

Nei seguenti comandi, puoi usare @a[tag=bottleInOne] o @a[tag=!bottleInOne] per @a[tag=!bottleInOne] come target i giocatori con e senza il flacone selezionato nello slot 0, rispettivamente.