Frage:
Wie wähle ich mit der Typauswahl alle bis auf zwei Arten von Entitäten in Minecraft aus?
Codingale
2014-05-04 01:53:18 UTC
view on stackexchange narkive permalink

Ich habe diese Frage einem Entwickler für Minecraft gestellt und dachte, ich würde sie auch hier stellen, da sie die Frage möglicherweise nicht sehen.

Wie wähle ich alle bis auf zwei Arten von Entitäten in Minecraft aus? ?

Zum Beispiel: / say @e [type =! [Player, Item], r = 50] (um zu verdeutlichen, dass ich auch type = ausprobiert habe Gegenstand, Spieler , type = Gegenstand, type = Spieler usw.)

Sollte eine Entität auswählen, die nicht mit Spielern oder Gegenständen übereinstimmt, also Dinge wie Creepers, Ghasts, XPOrbs, PrimedTNT usw. innerhalb eines Radius von 50 Blöcken und drucken sie im Chat aus.

Stattdessen wird eines der Flags ignoriert und stattdessen mit dem anderen gearbeitet.

Ich glaube nicht, dass du das leider kannst.
Ich habe Dinnerbone danach gefragt, aber es wird eine Weile dauern, bis er überhaupt antwortet. Ich bin mir sicher, ob er es überhaupt tut.Aber wenn jemand anderes einen Weg finden kann, teilen Sie es bitte danke.
@MBraedley ist es, idtownies Antwort scheint, als würde es funktionieren, aber ich habe es nicht getestet.
@Codingale Die Bearbeitung der Frage, die Sie vor einigen Tagen gestellt haben, hat die Art der Frage vollständig geändert und die meisten Antworten ungültig gemacht.Dies ist normalerweise keine gute Idee.
@pppery Ich habe die Bearbeitung zurückgesetzt, da es für jeden sinnvoll ist, nach genau diesem Beispiel zu suchen. Ich war müde und habe nicht daran gedacht, vorhandene Antworten ungültig zu machen und möglicherweise zukünftige Leser zu verwirren, wenn die vorherigen Antworten nicht wie beabsichtigt funktionieren. Danke für die Warnung.
Acht antworten:
#1
+19
idtownie
2014-08-01 16:37:09 UTC
view on stackexchange narkive permalink

Erstellen Sie zunächst ein Dummy-Scoreboard-Ziel:

/ Scoreboard-Ziele add selectMe Dummy

Geben Sie dann auf einer schnellen Redstone-Uhr allen Entitäten ein selectMe Punktzahl von 1:

/ Anzeigetafelspieler setzen @e selectMe 1

Geben Sie allen Spielern und Gegenständen eine selectMe-Punktzahl von 0 mit diesen beiden Befehlsblöcken:

/ Anzeigetafelspieler setzen @e [Typ = Spieler] selectMe 0

/ Anzeigetafelspieler setzen @e [type = Item] selectMe 0

Jetzt können Sie sie auswählen, indem Sie auf alle Objekte innerhalb eines Radius von 50 Blöcken mit einer selectMe-Punktzahl von 1 abzielen:

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

Hoffe, das hat geholfen! :)

Solche Dinge bringen mich WIRKLICH dazu, mehr über Anzeigetafeln zu erfahren.
Daran habe ich nicht gedacht.Das ist erstaunlich, aber ich habe immer noch das Gefühl, dass sie den Selektoren eine Möglichkeit hinzufügen sollten, ein Array einzupumpen.
Oder fügen Sie einfach ein Komma hinzu Beispiel.Ich sage @e [Typ =! Spieler ,! Gegenstand, r = 50]
@user97203 Funktioniert das tatsächlich?Hast du es getestet?
Dies ist nicht der Fall, es folgt dem ersten Flag, ignoriert jedoch das "! Item".Ich habe einige Möglichkeiten ausprobiert, bis jetzt funktioniert die Antwort.
@Codingale, weil Minecraft dies wie geschrieben als ein weiteres Zielauswahlargument ansieht (weil es durch Kommas getrennt ist).Da `! Item` offensichtlich kein gültiges Argument ist, wird es vollständig ignoriert.
Wie gesagt @MrLemon habe ich viele Permutationen ausprobiert und es gibt keinen Weg.Ich dachte, ein Array wie "[Item, Player]" usw. würde funktionieren, aber nein.
#2
+6
MrLemon
2016-04-07 17:07:07 UTC
view on stackexchange narkive permalink

Ab Minecraft 1.9 passen Anzeigetafel-Tags besser dazu, als ein Ziel einzurichten und eine Punktzahl zuzuweisen.

Es ist so einfach wie das Einrichten von Wiederholungsbefehlsblöcken (oder einer Wiederholungs- / Kettenzeile) und das Setzen von:

  / Scoreboard-Spieler tag @e [type = Player] playerOrItem hinzufügen
/ Anzeigetafel-Spieler tag @e [type = Item] playerOrItem hinzufügen
 

Anschließend können Sie mit @e [tag = playerOrItem] und @e [tag =! playerOrItem] jede Entität auswählen, die istund ist kein Spieler bzw. Gegenstand.


Die Verwendung von Tags gegenüber Anzeigetafelzielen bietet folgende Vorteile:

  1. Sie müssen kein Ziel festlegen.
  2. Sie werden standardmäßig als leer initialisiert.Das heißt, @a [tag =! banana] funktioniert standardmäßig bei jedem Spieler, im Gegensatz zu @a [score_banana = 0] .Dies bedeutet, dass Sie nur die Ziele beeinflussen müssen, die Sie tatsächlich beeinflussen möchten.
  3. Tags werden auch in NBT-Daten einer Entität im Tag Tags gespeichert.
  4. ol>
#3
+3
Codingale
2019-07-05 01:40:17 UTC
view on stackexchange narkive permalink

Ab Minecraft 1.13 (Java Edition) können Sie jetzt mehrere Selektoren zum Zielen auf Entitäten verwenden.

Aus dem Minecraft-Wiki:

tag = foo, tag = bar, tag =! baz entspricht jemandem mit foo, bar und nicht baz.

Typ =! Kuh, Typ =! Huhn passt zu etwas, das keine Kuh und kein Huhn ist.

Typ = Kuh, Typ = Huhn ist nicht erlaubt, da etwas nicht sowohl eine Kuh als auch ein Huhn sein kann.

Für Versionen vor 1.13

Sie können entweder idtownie oder this from user113642 verwenden, wobei letzteres nicht getestet wurde.

Ich mag besonders den Kommentar von Dinnerbone darüber, sowohl [eine Kuh als auch ein Huhn] zu sein (https://gist.github.com/Dinnerbone/943fbcd763c19be188ed6b72a12d7e65/a7ecc4cfb1d12b66aeb6d4e7f643bec227f0d4f7#entie-
#4
  0
mineguy1009
2015-07-30 15:38:32 UTC
view on stackexchange narkive permalink

Die effizienteste Möglichkeit, zwei bestimmte Entitäten gleichzeitig mit dem Argument "Typ" auszuwählen, besteht darin, zwei Argumente vom Typ "Typ" nebeneinander zu platzieren.

Bsp.

@ e [Typ = Spieler, Typ = Dorfbewohner]

Zielt nur auf Spieler und Dorfbewohner ab.

Bsp.

@r [Typ = Spieler, Typ = Dorfbewohner]

Zielt nur auf Spieler und Dorfbewohner ab. Dieser Zielselektor wählt jedoch eine zufällige Entität innerhalb der angegebenen Parameter des Arguments aus, während der vorherige Selektor jede Entität auswählte, die den Parametern des Arguments entsprach.

Dies kann unbegrenzt fortgesetzt werden, bis Sie jeden Entitätstyp ausgewählt haben in Minecraft (Dies wäre jedoch eine völlige Zeitverschwendung, da dieselbe Aktion mit @e ausgeführt werden kann.)

Bitte korrigieren Sie alle Fehler, die ich möglicherweise gemacht habe.

Weitere Informationen Informationen zu Argumenten der Zielauswahl finden Sie in diesem Beitrag im Minecraft-Forum.

http://www.minecraftforum.net/forums/minecraft-discussion/redstone-discussion-and/command-blocks/2477949 -minecraft-pc-target-selectors-und-ihre-Argumente

[Es hat bei mir nicht funktioniert] (http://i.imgur.com/XRuSOkN.png), die vorherige Antwort hat die Antwort besser beantwortet.Ich glaube, ich hatte bereits alle (oder fast alle) Permutationen vor dem Posten getestet, einschließlich "[Typ = Gegenstand, Spieler]" [Typ = Gegenstand, Typ = Spieler] "[Typ = [Gegenstand, Spieler]" und ich deutlicherinnere mich, dass einer mich zum Absturz gebracht hat und keiner von ihnen funktioniert hat.
Das funktioniert nicht.Aufgrund der einfachen Analyse der von Minecraft verwendeten Argumente ist "@e [Typ = Spieler, Typ = Dorfbewohner]" funktional identisch mit "@e [Typ = Dorfbewohner]".Das zweite Argument überschreibt einfach das erste.
#5
  0
user113642
2016-08-11 02:18:25 UTC
view on stackexchange narkive permalink

In Minecraft 1.9 gibt es eine einfache Möglichkeit, mit Hilfe von Kettenbefehlsblöcken ohne Anzeigetafeln zu arbeiten. Zur Demonstration werde ich alle Entitäten töten, die keine Spieler oder Gegenstände sind.

Erster Befehlsblock: @e ~ ~ ~ ArmorStand beschwören ~ ~ ~ {Unsichtbar: 1, NoGravity: 1}

Dadurch steht eine Rüstung an derselben Stelle wie jede Entität. Der erste Befehlsblock muss in den zweiten Befehlsblock zeigen.

Zweiter Befehlsblock: @e ausführen [type = Player] ~ ~ ~ kill @e [type = ArmorStand, c = 1]

Dadurch töten alle Spieler die Rüstungsständer, die etwas tun wollen.

Dritter Befehlsblock: @e ausführen [type = Item] ~ ~ ~ kill @e [type = ArmorStand, c = 1]

Wie oben, außer bei Spielern. Sie können dies so oft tun, wie Sie möchten.

Letzter Befehlsblock: @e ausführen [type = ArmorStand] ~ ~ ~ kill @e [c = 2] ~ ~ ~

Dadurch töten alle Rüstungsstände sich selbst und die von ihnen dargestellte Entität.

Die Vorteile:

  • Verwendet Rüstungsständer. Warum nicht?
  • Benötigt keine Anzeigetafeln

Die Nachteile:

  • Wenn eine Entität stirbt / sich zu einem entfernten Ort teleportiert, nachdem der Rüstungsstand beschworen wurde, aber bevor die Rüstungsstände ihre Befehle ausführen, wird eine Entität getötet, die nicht zum Töten bestimmt ist.

Wenn Sie möchten, dass alle Nicht-Spieler-Nicht-Element-Entitäten einen Befehl ausführen, verwenden Sie einfach Folgendes:

Letzter Befehlsblock: @e ausführen [type = ArmorStand] ~ ~ ~ @e ausführen [r = 1, c = -1] ~ ~ ~ <command>

Nachteile:

  • Wenn eine Entität stirbt / teleportiert / die Reichweite in weniger als 1 ms verlässt, führt der Rüstungsständer den Befehl selbst aus
#6
  0
ThatGuy124816
2017-11-12 23:23:20 UTC
view on stackexchange narkive permalink

Ab 1.12 können Sie @e [type =! Player, type =! Sheep, r = 10] ausführen.Dies funktioniert, indem zuerst nach einem Nicht-Spieler-Mob und dann nach einem Nicht-Schaf-Mob gesucht wird.Der Radius prüft beide Parameter innerhalb des Radius.Die Syntax ist korrekt, da das Komma die Datatags trennt und nur ! Player oder ! Sheep nicht funktionieren würde.

Ist das nicht eine Änderung von 1,13?
Nein, ich habe dies erfolgreich in meinen Befehlsarbeiten verwendet.Wenn ich zweimal nach einer Mob-Typprüfung rufe, fungiert sie als UND-Logikoperator.Es muss kein Spieler UND kein Schaf sein
Dies funktioniert in 1.12 nicht.Sie erhalten falsch positive Ergebnisse.Vor 1.13 sind Selektorparameter ein grundlegendes assoziatives Array, bei dem Schlüsselnamen eindeutig sein müssen.Der zweite Typ überschreibt den ersten Typ vollständig.Ihr Befehl in 1.12 zielt nur auf alles ab, was kein Schaf ist.
#7
-2
FOODFREAK28
2015-11-29 01:36:50 UTC
view on stackexchange narkive permalink

Ein viel einfacherer Weg, dies zu tun, ist die Verwendung dieses Befehls:

/ kill @e [type =! Player, r = 20].Das Ausrufezeichen bedeutet, alles außer dem Typ der Zieleinheit zu töten.Sie können dies auf eine Redstone-Uhr setzen und es funktioniert großartig.Ich hoffe das hat dir geholfen!:) P.S.Sie können so viele Entitäten in den Befehl einfügen, wie Sie möchten.Mach einfach Folgendes: / kill @e [type =! Player ,! Sheep, r = 20]

Dies beantwortet die Frage nicht wirklich und der letzte Teil ist einfach falsch.`/ kill @e [type =! Player ,! Sheep, r = 20]` * tötet * alle Schafe innerhalb von 20 Blöcken, da Zielargumentargumente definitiv nicht so funktionieren.
Ja, wie sie sagten.Es ist nicht korrekt, und dies wurde in der ursprünglichen Frage und den Kommentaren anderer Antworten erwähnt.
#8
-2
Egor Hans
2016-06-14 18:58:22 UTC
view on stackexchange narkive permalink

Wie andere mir später erklärten, ist der wahre Grund, dass sich Einschränkungen der gleichen Art gegenseitig überschreiben. Entschuldigung, ich kann mich nicht davon abhalten, Logik für die Beantwortung von Fragen zu verwenden, auf die ich eigentlich keine Antwort weiß, und verliere aus den Augen, dass die Dinge normalerweise nicht so logisch sind, wie ich denke.


Original Antwort:

Ich ziele nicht häufig auf Entitäten ab, aber nach der fehlgeschlagenen Antwort von mineguy1009 stelle ich Folgendes fest:

Die Antwort schlägt höchstwahrscheinlich fehl, weil dies wie [type = Player AND type = Villager] analysiert wird, was natürlich zu Unsinn führt (es ist nicht gerade Unsinn selbst, eigentlich ist es ein ziemlich vernünftiger Ansatz Das Komma weist darauf hin, dass es sich um [Typ = Spieler ODER Typ = Dorfbewohner] ) handelt.

Während Sie negieren, ist dies genau das, was Sie brauchen: [type =! Player, type =! Item] sollte als [type! = Player AND type! = analysiert werden Artikel] . Wenn Sie möchten, dass Entitäten einer Kategorie aus einer Gruppe angehören, sollte dies intuitiv [! [Type =! <type1>, type =! <type2>, ...], <otherconditions>] sein. Wenn dies nicht funktioniert, können Sie sich immer noch für invertierte Gruppen entscheiden, was jedoch furchtbar lang werden würde (da Sie buchstäblich alle Berechtigungen auflisten müssen, die nicht zu Ihrer Gruppe gehören sollen).

Wenn diese Antwort ebenfalls fehlschlägt, lautet das Entity-Targeting wat.

Nur dass das völlig falsch ist.Beim Parsen von "[Typ = Spieler, Typ = Dorfbewohner]" vergisst das Spiel einfach "Spieler", die Typvariable wird einfach überschrieben.Außerdem ist nicht gleich in Minecraft "=!", Da "argument = value" analysiert wird, wobei das Gleichheitszeichen festgelegt ist und der Wert durch das!
@MrLemon Ich habe den verschiedenen Operator verwendet, um den Pseudocode zu verdeutlichen.Wenn der Dorfbewohner den Spieler schreibt, dann natürlich wat.
Es würde mich übrigens für jeden interessieren, der auf den Link geklickt hat: Haben Sie diesen Unsinn in MineCraft-Sachen beobachtet?Natürlich ist die Handhabung von Einschränkungen unlogisch, aber nicht im äußersten Maße der Beispiele im Video.
@EgorHans-Auswahlparameter werden als grundlegendes [assoziatives Array] (https://en.wikipedia.org/wiki/Associative_array) zugeordnet, wobei die Schlüsselnamen eindeutig sein müssen.Es wäre dasselbe wie der Versuch, das Array "[" key1 "=>" a "," key1 "=>" b "]" zu deklarieren, indem "key1" dupliziert und somit überschrieben wurde.
@Skylinerw Es macht bis zu einem gewissen Punkt Sinn.Es ist jedoch ziemlich offensichtlich, dass eine solche Implementierung eigentlich keine gute Idee ist.Wenn ein Schlüssel mehrfach vorkommt, ist zu erwarten, dass beide Auswirkungen haben.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...