Erkennung eines Tropfers mit Gegenständen in ihm ohne / testfor

Ich habe diesen Befehl benutzt, um eine benutzerdefinierte Crafting-Tabelle zu verwenden:

/execute @a ~ ~ ~ detect ~ ~-1 ~ dropper 1 {Items:[{id:minecraft:blaze_rod,Slot:1b,Count:1b,Damage:0s},{id:minecraft:blaze_rod,Slot:4b,Count:1b},{id:minecraft:stick,Slot:7b,Count:1b}]} /scoreboard players set @p LSC 1 

Aber ich bekomme diese Fehlermeldung, wenn ich mit diesen Gegenständen auf einen Tropfer stehe:

Fehler beim Ausführen von '{Items: [{id: minecraft: blaze_rod, Slot: 1b, Count: 1b, Schaden: 0s}, {id: minecraft: blaze_rod, Slot: 4b, Count: 1b}, {id: minecraft: stick , Slot: 7b, Count: 1b}]} / Scoreboard-Spieler setzen @p LSC 1 'als TrevMCC38

Übrigens, Im in 16w06a

  • Wie bezauberst du und nimmst Gegenstände mit / geben mit Befehlsblöcken?
  • Wie man Spieler in MC zu einem Scoreboard-Team automatisch zuordnen, wenn sie beitreten?
  • Wie man einen kopierten Befehl in einen Befehlsblock setzt?
  • Wie kann ich meine weit entfernten Befehlsblöcke machen?
  • Minecraft Test Wenn eine Truhe ein Item enthält
  • Gibt es eine Möglichkeit, einen Spielernamen in einem Entity-Tag zu verwenden?
  • 2 Solutions collect form web for “Erkennung eines Tropfers mit Gegenständen in ihm ohne / testfor”

    Die detect von /execute akzeptiert keine NBT-Daten, sondern nur einen ID und einen Schadenswert.

    Sie müssen stattdessen verwenden /testforblock , und wenn Sie Multiplayer-Freundlichkeit benötigen, mischen sie mit CommandStats.

    Voraussetzungen:

    Ziel, den CommandStats-Wert zu halten.

     /scoreboard objectives add CraftSuccess dummy 

    Die Anwendung der AffectedBlocks Trigger auf Spieler, die die Punktzahl des Spielers basierend auf dem Erfolg von Befehlen, die speziell auf Blöcke, wie /testforblock . Möglicherweise muss es auf einer Uhr laufen, falls neue Spieler jederzeit beitreten können.

     /stats entity @a set AffectedBlocks @a[c=1] CraftSuccess 

    Damit CommandStats die Punktzahl eines Ziels ändern kann, muss dieses Ziel auf dem Scoreboard vorher verfolgt werden. Dies kann auch auf eine Uhr aus dem gleichen Grund wie vorher laufen.

     /scoreboard players add @a CraftSuccess 0 

    Erkennung:

    Folgendes muss in numerischer Reihenfolge ausgeführt werden.

    1. Weil Spieler den notwendigen /testforblock Befehl /testforblock .

       /execute @a ~ ~ ~ /testforblock ~ ~-1 ~ minecraft:dropper 1 {Items:[{id:"minecraft:blaze_rod",Slot:1b,Count:1b,Damage:0s},{id:"minecraft:blaze_rod",Slot:4b,Count:1b},{id:"minecraft:stick",Slot:7b,Count:1b}]} 
    2. Infolgedessen wird der ausführende Spieler eine eigene "CraftSuccess" -Preismenge haben, die gleich der Anzahl der Blöcke ist, die durch den Befehl /testforblock . Wenn der Befehl fehlgeschlagen ist, wird ihre Punktzahl auf 0 gesetzt. Wenn der Befehl erfolgreich war, wird ihre Punktzahl auf 1 gesetzt. Du würdest dann Spieler auf der Grundlage ihrer Punktzahl ansprechen.

       /scoreboard players set @a[score_CraftSuccess_min=1] LSC 1 

    Als Nebennote sollten Sie @a als Executor und @p als das Ziel des verschachtelten Befehls mischen, wenn Sie denselben Spieler ansprechen sollen. Während @a auf tote Spieler @p kann, kann @p nicht. Das bedeutet, dass, während der Exekutor laufen kann /execute während sie tot sind, werden sie sich nicht selbst zielen und stattdessen auf den am nächsten lebenden Spieler richten. Dies kann die Genauigkeit schwer verletzen und möglicherweise einen zielsensitiven Mechanismus brechen.

    Die Lösung ist, den gleichen Selektor zu verwenden, wenn nötig. Für das tote Spieler-Targeting würden Sie @a als Executor mit @a[c=1] als verschachtelter Selektor verwenden:

     /execute @a ~ ~ ~ /say @a[c=1] 

    Für lebende Spieler würden Sie @e[type=Player] mit @p :

     /execute @e[type=Player] ~ ~ ~ /say @p 

    Es ist auch aus diesem Grund, dass CommandStat-Ziele @a[c=1] bei der Arbeit mit Spielern verwenden sollten, da dies dafür sorgt, dass es kein ungewolltes Ziel gibt, bei dem ihre Punktzahl geändert wurde.

    Verwenden Sie Komparatoren, weil sie erkennen, ob etwas Blöcke in ihm und sendet ein Redstone-Signal.