Domanda:
Come faccio a selezionare tutti i tipi di entità tranne due in Minecraft con il selettore del tipo?
Codingale
2014-05-04 01:53:18 UTC
view on stackexchange narkive permalink

Ho posto questa domanda a uno sviluppatore di Minecraft e ho pensato di chiedere anche qui perché potrebbe non vedere la domanda.

Come faccio a selezionare tutti i tipi di entità tranne due in Minecraft ?

Ad esempio, qualcosa come: / say @e [type =! [Player, Item], r = 50] (per chiarire ho anche provato type = Item, Player , type = Item, type = Player ecc)

Dovrebbe selezionare qualsiasi entità che non corrisponde a giocatori o oggetti, quindi cose come Creepers, Ghasts, XPOrbs, PrimedTNT e così via entro un raggio di 50 blocchi e stampali nella chat.

Invece ignora uno dei flag e funziona invece con l'altro.

Non credo che tu possa, purtroppo.
L'ho chiesto a Dinnerbone, ma ci vorrà un po 'prima che risponda, sono sicuro che lo farà.Ma se qualcun altro riesce a trovare un modo per farlo, condividilo grazie.
@MBraedley lo è, la risposta di idtownie sembra che funzionerebbe ma non l'ho testata.
@Codingale La modifica della domanda che hai fatto pochi giorni fa ha cambiato completamente la natura della domanda e invalidato la maggior parte delle risposte.Di solito non è una buona idea.
@pppery Ho annullato la modifica poiché ha senso per chiunque cerchi questo esempio esatto, il vecchio me era stanco e non ci pensava invalidando le risposte esistenti e possibilmente confondendo i lettori futuri quando le risposte precedenti non funzionavano come previsto. Grazie per il testa a testa.
Otto risposte:
#1
+19
idtownie
2014-08-01 16:37:09 UTC
view on stackexchange narkive permalink

Per prima cosa, crea un obiettivo fittizio del tabellone: ​​

/ obiettivi del tabellone segnapunti aggiungi selectMe dummy

Quindi, su un veloce orologio in pietra rossa, dai a tutte le entità un selectMe punteggio di 1:

/ scoreboard players set @e selectMe 1

Assegna a tutti i giocatori e gli oggetti un punteggio selectMe di 0 con questi due blocchi di comando:

/ scoreboard players set @e [type = Player] selectMe 0

/ scoreboard players set @e [type = Item] selectMe 0

Ora puoi selezionarli scegliendo come target tutte le entità in un raggio di 50 blocchi che hanno un punteggio selectMe di 1:

/ say @e [score_selectMe_min = 1, r = 50]

Spero che questo abbia aiutato! :)

Cose come questa mi fanno desiderare VERAMENTE di saperne di più sui tabelloni.
Non ci ho pensato.È fantastico, ma sento comunque che dovrebbero aggiungere un modo per pompare in un array ai selettori.
O aggiungi semplicemente una virgola Esempio./ say @e [type =! Player,! Item, r = 50]
@user97203 Funziona davvero?L'hai provato?
Non lo fa, segue il primo flag ma ignora quello "! Item".Ho provato diversi modi, finora la risposta fornita funziona.
@Codingale è perché, come scritto, Minecraft lo vede come un altro argomento del selettore di destinazione (perché è separato da virgole).Poiché "! Item" non è ovviamente un argomento valido, viene ignorato completamente.
Come ho detto @MrLemon ho provato molte permutazioni e non c'è modo.Ho pensato che un array come "[Item, Player]" ecc. Avrebbe funzionato ma no.
#2
+6
MrLemon
2016-04-07 17:07:07 UTC
view on stackexchange narkive permalink

A partire da Minecraft 1.9, i tag scoreboard si adattano meglio a questo scopo rispetto all'impostazione di un obiettivo e all'assegnazione di un punteggio.

È facile come impostare blocchi di comandi di ripetizione (o una riga di ripetizione / concatenazione) e inserire:

  / scoreboard players tag @e [type = Player] add playerOrItem
/ scoreboard i giocatori taggano @e [type = Item] add playerOrItem
 

Puoi quindi utilizzare @e [tag = playerOrItem] e @e [tag =! playerOrItem] per selezionare ogni entità che è e non è rispettivamente un giocatore o un oggetto.


I vantaggi dell'utilizzo di tag rispetto agli obiettivi del quadro di valutazione sono:

  1. Non è necessario impostare un obiettivo.
  2. Sono inizializzati come vuoti per impostazione predefinita.Cioè @a [tag =! banana] funziona su tutti i giocatori per impostazione predefinita, a differenza di @a [score_banana = 0] .Significa che devi solo influenzare gli obiettivi che desideri effettivamente influenzare.
  3. I tag sono anche memorizzati in dati NBT di entità, nel tag Tags .
#3
+3
Codingale
2019-07-05 01:40:17 UTC
view on stackexchange narkive permalink

A partire da Minecraft 1.13 (Java Edition) ora puoi utilizzare più selettori per targetizzare le entità.

Dal Minecraft Wiki:

tag = foo, tag = bar, tag =! baz corrisponde a qualcuno con foo, bar e non baz.

type =! cow, type =! chicken corrisponde a qualcosa che non è una mucca e non è un pollo.

type = cow, type = chicken non è consentito, perché qualcosa non può essere sia mucca che pollo.

Per versioni precedenti alla 1.13

Puoi utilizzare idtownie o questo da user113642, quest'ultimo non testato.

Mi piace in particolare il commento di Dinnerbone sull'essere sia [una mucca che un pollo] (https://gist.github.com/Dinnerbone/943fbcd763c19be188ed6b72a12d7e65/a7ecc4cfb1d12b66aeb6d4e7f643bec227f0d4f7#entity-selectors-ie)
#4
  0
mineguy1009
2015-07-30 15:38:32 UTC
view on stackexchange narkive permalink

Il modo più efficiente per selezionare due entità specifiche contemporaneamente con l'argomento "tipo" è mettere due argomenti "tipo" uno accanto all'altro.

Es.

@ e [type = Player, type = Villager]

Prende di mira solo giocatori e abitanti del villaggio.

Es.

@r [type = Player, type = Villager]

Prende di mira solo giocatori e abitanti del villaggio. Tuttavia, questo selettore di destinazione sceglie un'entità casuale all'interno dei parametri specificati dell'argomento, mentre il selettore precedente ha selezionato ogni entità che soddisfaceva i parametri dell'argomento.

Ciò potrebbe continuare indefinitamente finché non avrai selezionato ogni tipo di entità in Minecraft (tuttavia, sarebbe una completa perdita di tempo perché la stessa azione può essere eseguita con @e).

Correggi gli errori che potrei aver fatto.

Per ulteriori informazioni sugli argomenti del selettore di destinazione, visita questo post dal forum di Minecraft.

http://www.minecraftforum.net/forums/minecraft-discussion/redstone-discussion-and/command-blocks/2477949 -minecraft-pc-target-selector-and-their-arguments

[Non ha funzionato per me] (http://i.imgur.com/XRuSOkN.png), la risposta selezionata in precedenza risponde meglio a questa.Credo di aver già testato tutte (o quasi tutte) le permutazioni prima di pubblicare, tra cui "[type = Item, Player]` `[type = Item, type = Player]` `[type = [Item, Player]` e distintamentericordo uno che mi ha schiantato e nessuno di loro funzionava.
Questo non funziona.A causa della semplice analisi degli argomenti utilizzati da Minecraft, "@e [type = Player, type = Villager]" è funzionalmente identico a "@e [type = Villager]".Il secondo argomento sovrascrive semplicemente il primo.
#5
  0
user113642
2016-08-11 02:18:25 UTC
view on stackexchange narkive permalink

In Minecraft 1.9, c'è un modo semplice per farlo senza tabelloni utilizzando i blocchi di comando a catena. Per dimostrazione, ucciderò tutte le entità che non sono giocatori o oggetti.

Primo blocco di comando: esegui @e ~ ~ ~ summon ArmorStand ~ ~ ~ {Invisible: 1, NoGravity: 1}

Questo fa sì che un'armatura si trovi nello stesso punto di ogni entità. Il primo blocco di comandi deve essere rivolto verso il secondo blocco di comandi.

Secondo blocco di comando: esegui @e [type = Player] ~ ~ ~ kill @e [type = ArmorStand, c = 1]

Questo fa sì che tutti i giocatori uccidano i supporti delle armature che stanno per fare qualcosa.

Terzo blocco di comando: esegui @e [type = Item] ~ ~ ~ kill @e [type = ArmorStand, c = 1]

Come sopra tranne che con i giocatori. Puoi farlo tutte le volte che vuoi.

Ultimo blocco comandi: esegui @e [type = ArmorStand] ~ ~ ~ kill @e [c = 2] ~ ~ ~

Questo fa sì che tutte le armature uccidano se stesse e l'entità che rappresentavano.

I vantaggi:

  • Utilizza supporti per armature. Perché no?
  • Non richiede tabelloni

Gli svantaggi:

  • Se un'entità muore / si teletrasporta in una posizione lontana dopo che il supporto dell'armatura è stato evocato ma prima che i supporti dell'armatura eseguano i loro comandi, alcune entità che non devono essere uccise verranno uccise

Se vuoi che tutte le entità non-giocatore non oggetto eseguano un comando, usa questo:

Ultimo blocco comandi: execute @e [type = ArmorStand] ~ ~ ~ execute @e [r = 1, c = -1] ~ ~ ~ <command>

Svantaggi di questo:

  • Se un'entità muore / si teletrasporta / lascia il raggio d'azione in meno di 1 ms, il supporto dell'armatura eseguirà il comando stesso
#6
  0
ThatGuy124816
2017-11-12 23:23:20 UTC
view on stackexchange narkive permalink

A partire dalla 1.12 puoi eseguire @e [type =! Player, type =! Sheep, r = 10] .Funziona in quanto controlla prima un mob non giocatore, quindi controlla un mob non pecore.Il raggio controlla entrambi i parametri all'interno del raggio.La sintassi è corretta poiché la virgola separa i datatag e solo ! Player o ! Sheep non funzionerebbero.

Non è una modifica dell'1,13?
No, l'ho usato con successo nei miei lavori di comando.Quando chiamo un controllo del tipo di mob due volte, agisce come un operatore logico AND.Non deve essere un giocatore E non una pecora
Questo ** non ** funziona in 1.12.Stai ricevendo falsi positivi.Prima della 1.13, i parametri del selettore sono un array associativo di base, in cui i nomi delle chiavi devono essere univoci.Il secondo "tipo" sovrascrive completamente il primo "tipo".Il tuo comando nella 1.12 prenderà di mira solo tutto ciò che non è una pecora.
#7
-2
FOODFREAK28
2015-11-29 01:36:50 UTC
view on stackexchange narkive permalink

Un modo molto più semplice per farlo è usare questo comando:

/ kill @e [type =! Player, r = 20].Il punto esclamativo significa uccidere tutto tranne il tipo di entità presa di mira.Puoi metterlo su un orologio in pietra rossa e funziona benissimo.Spero che questo ti abbia aiutato!:) P.S.puoi inserire tutte le entità che desideri all'interno del comando.Basta fare questo: / kill @e [type =! Player,! Sheep, r = 20]

Questo in realtà non risponde alla domanda e l'ultima parte è semplicemente sbagliata.`/ kill @e [type =! Player,! Sheep, r = 20]` * * ucciderà * tutte le pecore entro 20 blocchi, perché sicuramente non è così che funzionano gli argomenti del selettore di destinazione.
Sì, come hanno detto.Non è corretto, e questo è stato sollevato nella domanda originale e nei commenti di altre risposte.
#8
-2
Egor Hans
2016-06-14 18:58:22 UTC
view on stackexchange narkive permalink

Come altri mi hanno spiegato in seguito, la vera ragione è che restrizioni dello stesso tipo si scrivono a vicenda. Mi spiace, non posso trattenermi dal provare a usare la logica per rispondere a domande a cui in realtà non conosco la risposta, perdendo di vista che le cose di solito non sono logiche come penso.


Risposta originale:

Non mi rivolgo spesso a entità, ma andando avanti dalla risposta fallita di mineguy1009 ho capito quanto segue:

La risposta molto probabilmente fallisce perché viene analizzata come [type = Player AND type = Villager] , che ovviamente risulta in una sciocchezza (non è esattamente una sciocchezza in sé, in realtà è un approccio abbastanza ragionevole in quanto la virgola suggerisce che sarebbe [type = Player OR type = Villager] ).

Tuttavia, poiché stai negando, è esattamente ciò di cui hai bisogno: [type =! Player, type =! Item] dovrebbe essere analizzato come [type! = Player AND type! = Articolo] . Se vuoi che le entità appartengano a una delle due categorie di un gruppo, intuitivamente dovrebbe essere [! [Type =! <type1>, type =! <type2>, ...], <otherconditions>] . Se ciò non funziona, potresti comunque optare per gruppi invertiti, che tuttavia diventerebbero terribilmente lunghi (poiché devi elencare letteralmente tutte le entità che non devono essere nel tuo gruppo).

Se anche questa risposta fallisce, il targeting per entità è, sì, wat.

Tranne che questo è completamente sbagliato.Quando si analizza "[type = Player, type = Villager]", il gioco si dimentica semplicemente di "Player", la variabile type viene semplicemente sovrascritta.Inoltre, non è uguale a "=!" In Minecraft a causa dell'analisi di "argomento = valore", dove il segno di uguale è fisso e il valore è negato dal!.
@MrLemon Ho usato l'operatore diverso per chiarire che è pseudo codice.Se l'abitante del villaggio scrive Player, allora, ovviamente, wat.
Mi interesserebbe, tra l'altro, a chiunque abbia cliccato sul collegamento: hai osservato quel livello di sciocchezze in qualsiasi materiale di MineCraft?Perché certo, la gestione delle restrizioni non è logica, ma non al livello estremo degli esempi nel video.
I parametri del selettore @EgorHans sono mappati come un [array associativo] di base (https://en.wikipedia.org/wiki/Associative_array), dove i nomi delle chiavi devono essere univoci.Sarebbe lo stesso che provare a dichiarare che l'array "[" key1 "=>" a "," key1 "=>" b "]" in "key1" è stato duplicato e quindi sovrascritto.
@Skylinerw Ha senso fino a un certo punto.Tuttavia, è abbastanza ovvio che implementarlo in questo modo non è effettivamente una buona idea.Se hai più occorrenze di una chiave, ti aspetteresti che entrambe abbiano un certo impatto.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...