Tutorials, Fragen und Antworten zu Command-Blocks und Servercommands

Hidden Evil

Moderator
Teammitglied
Moin Leute,

da ich aktuell ein Problem mit einem Command habe, starte ich gleich mal generell einen Thread, in dem jeder Fragen und hoffentlich antworten kann :)

Also:

Ich kann ja mit dem Befehl
Code:
/setblock <x> <y> <z> command_block 0 replace {Command:"say test"}
einen Commandblock generieren, der einen Befehl schon beinhaltet.

Mit dem Befehl
Code:
/give @p chest 1 0 
{
  BlockEntityTag:
  {
    Items:
    [
      {Slot:3,id:diamond,Count:1},
      {Slot:5,id:diamond,Count:1},
      {Slot:13,id:coal,Count:1},
      {Slot:21,id:gold_nugget,Count:1},
      {Slot:22,id:gold_nugget,Count:1},
      {Slot:23,id:gold_nugget,Count:1}
    ]
  }
}
Könnte ich eine Truhe in die Hand bekommen, die bereits eine vordefinierte Sammlung und Menge an Items beinhaltet.

Würde ich einen Slot mit {Slot:3,id:command_block,Count:1} definieren, bekäme ich einen Commandblock in das entsprechende Feld.

Aber wie muss ich den Parameter mit dem Befehl angeben, damit der Commandblock auch einen Befehl bekommt?

Probiert hatte ich schon vieles, auch den tag-Tag. sah dann so aus:

Code:
/give @p chest 1 0 
{
  BlockEntityTag:
  {
    Items:
    [
      {Slot:0,id:command_block,Count:1, tag:{Command:"say test"}},
    ]
  }
}

Naja, das will aber nicht gehen. Hat da jemand vielleicht eine Idee?
 
Warum auch immer, aber das hier hat funktioniert...
Code:
/give @p chest 1 0 
{
  BlockEntityTag:
  {
    Items:
    [
      {
        Slot:0,id:command_block,Count:1,tag:
        {
          BlockEntityTag:
          {
            Command:"say test"
          }
        }
      }
    ]
  }
}

Warum man den "BlockEntityTag" 2x angeben muss, ist mir ein Rätsel. Vorallem bringt es keine Erweiterungen, nur Umständlichkeiten... (selbst der 1.)
 
Geil, vielen Dank. Jetzt bräuchte ich aber hier noch zusätzlich einen individuellen definierten Namen für den Commandblock. Wo ich dann den Name-Tag einfügen muss ist mir ebenfalls ein Rätsel.
 
Das ist auch Möglich:
Code:
give @p chest 1 0 
{
 BlockEntityTag:
 {
  Items:
  [
   {
    Slot:1,
    id:command_block,
    Count:1,
    tag:
    {
     display:
     {
      Name:"NameAlsItem",
      Lore:
      [
       "EineZeile",
       "ZweiteZeile"
      ]
     },
     BlockEntityTag:
     {
      Command:"say test",
      CustomName:"NameInChat"
     }
    }
   }
  ]
 }
}

Wenn "NameAlsItem" gegeben ist, wird damit "NameInChat" überschrieben.
Hier noch ein paar Bilder:
2014-09-17_12.27.36.png2014-09-17_12.27.45.png
 
Wow, geil, vielen Dank :eek: (y)

Und der ganze Kram für nur einen Truhen-Slot. Das wird ja noch spaßig werden, wenn ich mehrere Commandblocks in die Truhe einfüge :rolleyes:
 
Moin, ich mal wieder :)

Ich versuche mich gerade daran, aus einer Truhe eine Art Tastatur zu machen. Klingt komisch, ist aber so. Und es funktioniert sogar. Ich habe als Test 4 Redstone-Blöcke (Testweise, kann auch was anderes sein) in Form eines Kreuzes auf die Slots 1, 9, 11 und 19 gelegt (fängt ja mit 0 an).
mc_truhe_1.png

Klicke ich einen davon an (was dem Anklicken von "oben", "links", "rechts" und "unten" entsprechen soll) nehme ich den Block ja auf.

Abgefragt wird der Spaß für die Funktion "oben" mit dem Befehl
testforblock -2077 56 683 chest 3 {Items:[{Slot:1b,id:"minecraft:redstone_block",Count:1b}]}

Um den entfernten Block zu ersetzen (der Block befindet sich ja nun im Maus-Cursor) benutze ich den Befehl
replaceitem block -2077 56 683 slot.container.1 redstone_block 1

natürlich wird das zuvor mit einer Redstonefackel negiert (oder ging das auch mit einer Befehls-Ergänzung? Egal, jetzt nicht wichtig, wär aber gut zu wissen)

Aus Spaß an der Freude (und für ein akustisches Feedback) häng noch ein Block mit diesem Befehl an jeder "Tasten"-Abfrage
/playsound random.click @p ~ ~ ~ 100

Soweit so gut, bis hierhin alles schön. Allerdings hatte ich ja oben etwas fett markiert, was nämlich mein Problem an der Sache ist:
Wie bekomme das Item aus dem Maus-Cursor des Spielers gelöscht? Das soll man nämlich nicht behalten können und es würde nur stören beim Steuern aller "Tasten".
Ich habe mal gesehen dass das gehen soll, nur finde ich leider keinen passenden Befehl dazu. Hat da jemand von Euch zufällig eine Idee parat?
 
Das bringt leider auch nichts, das wirkt sich weder auf den Cursor aus noch auf das Inventar, wenn ich gerade was aus der Truhe genommen habe. Was mich ebenso wundert, aber das spielt ja keine Rolle.

Zum Testen hatte ich den Clear-Befehl an eine Clock gehangen.

//Edit:

Über einen Umweg geht es nun:

Wenn ich die Shift-Taste gedrückt halte wandert der angeklickte Block ja ohne Umwege ins Intenvar. Ich habe diese Steuerungs-Blöcke mit Namen versehen und für jeden (derzeit 4) jeweils einen Clear-Befehl an die Clock rangehangen.
/clear @a minecraft:redstone_block 0 9999 {display:{Name:"Oben"}}
zum Beispiel.
 
Zuletzt bearbeitet:
Nicht einmal das Inventar des Spielers (nicht der Truhe) wird gelöscht? Dann ist es entweder ein Bug in Minecraft, oder du hast den Befehl falsch getippt bzw. auf die falschen Items eingeschränkt.
 
Doch doch, aber scheinbar wird es erst bei erneutem Aufrufen gelöscht, und nicht unmittelbar wenn es im Inventar per Hand abgelegt wird. Wie dem auch sei, im Edit oben steht ja, dass es über den kleinen Umweg funktioniert :)

Trotzdem danke :)
 
Oben