Willkommen in den Minebench.de-Minecraftforen.

Frage zu einem Command aus den 1.8 Snapschots

mcp1_Neon » Sa 21. Jun 2014, 20:46#1

Ich habe vor eine AdventureMap zu bauen. Ein Element besteht aus einer Unsichtbaren Brücke, welche, wenn man drüber läuft, in form eines 3*3 Feldes unter dir erscheint. Ich bin auch schon soweit, dass die Blöcke erscheinen und verschwinden wenn man über sie läuft. Sie erscheinen sogar nur da, wo man gerade steht(freu). Nur erscheinen sie auch, wenn man noch am Rand steht. sie sollen jedoch erst erschienen, wenn an einen Schritt in die Luft wagt.
Sprich man steht am Rand und es sieht so aus, als würde dort nichts als eine Schlucht sein. Wenn man jedoch weiter läuft steht man urplötzlich doch nicht in der Luft.

Ich habe bereits eine Clock mit zwei Commandblöcken erstellt welche das Erscheinen und Verschwinden der Blöcker ermöglicht.

/execute @a[m=2] ~ ~ ~ /fill ~-1 ~-1 ~-1 ~1 ~0 ~1 iron_block 0 replace air 2
(Das ist der Befehl, welcher die Brückenblöcke erscheinen läst. Der andere ist bereits fertig.)

Nun ist jedoch meine Frage:
Wie kann ich dem Abschnitt
"alle Spieler, die sich im Adventuremode befinden" @a[m=2]
zu
"alle Spieler, die sich im Adventuremode befinden und auf einem bestimmten Block stehen" @a[m=2, ??? ]
umwandeln?

Gibt es da vileicht solche pararmeter wie "[standOnBlock=(BlockID)]" oder soetwas in der Art?

mfg mcp1_Neon

Rene_Z » So 22. Jun 2014, 00:59#2

Aus dem MC-Wiki:
SPOILER

Sprich, du kannst mit x, y und z eine Koordinate angeben und dann entweder mit dx, dy und dz die Seitenlängen eines Quaders oder mit r (und rm) den Radius einer Kugel angeben. Für eine Brücke brauchst du vermutlich eher einen quaderförmigen Bereich. Du nimmst also die Ecke mit den niedrigsten Koordinaten als x, y und z und dann die Größe des Erkennungsbereichs der Brücke als dx, dy und dz.

Das funktioniert so natürlich nur für festgelegte Koordinaten. Das ganze mit der Erkennung von bestimmten Blöcken zu machen wäre mit /testforblock sicherlich möglich, aber recht aufwändig.
Signatur
Rene_Z Staff

mcp1_Neon » So 22. Jun 2014, 01:42#3

Dass sich die Brücke auf- und wieder abbaut habe ich ja bereits geschafft. Doch sie soll sich halt erst aufbauen, wenn man sie betritt. Solange man nur daneben steht soll sie verborgen bleiben.
Darum suche ich eine Möglichkeit um zu testen auf welchen Block der Spieler gerade steht.

Ich habe es bereit mit einem /testforblock-Command versucht. Das Problem dabei ist jedoch, dass der Commandblock mit dem /execute-Command nicht schnell genug bepauert wird, da der Komperator (viel) zu langsam aus und wieder angeht. Das verursacht Lags und man fällt zudem nicht selten von der Brücke, da sie mit aufbauen nicht hinterher kommt.

Ergo bleibt mir leider nur die Möglichkeit in den Player-Spezifizierungen (@p[...]) eine Funktion hinzuzufügen mit der man testen kann auf welchen block jener Player steht.
Es sei den es gibt eine Scoreboard-Funktion mit dieser Möglichkeit, ähnlich wie "stat.useItem.-", nur weiß ich nicht wie dieser Befehl aussieht und Google bzw. YouTube wollen mir diesbezüglich auch nicht helfen.

Daher bleibt meine Frage bestehen...
Gibt es eine Möglichkeit den Abschnitt
"alle Spieler, die sich im Adventuremode befinden" (@a[m=2])
zu
"alle Spieler, die sich im Adventuremode befinden und auf einem bestimmten Block stehen" (@a[m=2,???])
umzuwandeln?

Aber danke für die schnelle Antwort.

Florian » So 22. Jun 2014, 11:48#4

/execute @a[m=2,X,Y,Z] ~ ~ ~ /fill ~-1 ~-1 ~-1 ~1 ~0 ~1 iron_block 0 replace air 2

Glaube ich. :)
SPOILER

;)
Florian Stammspieler

mcp1_Neon » So 22. Jun 2014, 12:20#5

Naja.. Dann müsste ich aber für jeden Brückenblock ein extra Commandblock bereitstellen. Das würde nur Lags verursachen. Doch genau das will ich vermeiden.

Rene_Z » So 22. Jun 2014, 14:26#6

Ich meinte das so, dass der Befehl dann nur für Spieler funktioniert, die auf der Brücke sind. Wenn sich der Spieler 1 Block vor der Brücke befindet, passiert nichts, und wenn er irgendwo auf der Brücke ist funktioniert es genauso wie vorher. Das ist doch das, was du erreichen willst.
Du kannst mit x, y, z, dx, dy und dz auf einen festgelegten Bereich prüfen. Da sich die Brücke ja nicht bewegt ist das doch völlig ausreichend. Wozu ist dann die Erkennung eines bestimmten Block-Typs notwendig, wenn du doch vorher weißt, wo sich die Brücke befindet. Oder hab ich da was falsch verstanden?
Signatur
Rene_Z Staff

mcp1_Neon » So 22. Jun 2014, 21:40#7

Die Idee ist gut. An eine Verwendung von dx, dy und dz in den Parametern habe ich noch garnicht gedacht. Die Umsetzung wird jedoch nur schwer bis leider garnicht möglich sein, da sich die Brücken in Stage 3 überschneiden und an früheren stellen rauskommen als eine andere beginnt. Sprich ein Unsichtbares Labyrinth.
Daher war ja meine Frage, ob man die Pararmeter so erweitern kann, dass mit dem execute-Command nur die Spieler angewählt werden, welche auf dem angegeben Block (in diesem Fall ein Luftblock mit dem Wert "2") stehen.
Und da mit dem zweiten Command die Blöcke ja wieder zu Luft gewechselt werden, steht der Spieler, wenn die Brücke geupdatet wird, ja so gesehen wieder in der Luft, wenn er vom execute-Command angewählt wird.

mcp1_Neon » Mi 25. Jun 2014, 17:26#8

Nach einer scheinbar endlosen Suche nach besagten Pararmeter-Erweiterungen bin ich zu dem Schluss gekommen, dass es diese Pararmeter wohl nicht gibt. Dann bleibt mir wohl nicht anderes übrig als zu hoffen, dass diese Funktion in einem der kommenden Snapshots dazu kommt.
Allerdings bin ich gern offen für Ideen wie man das anders lösen könnte.

Rene_Z » Mi 25. Jun 2014, 18:39#9

Lustiger Zufall:
Der Befehl wurde im heutigen Snapshot (14w26a/b) hinzugefügt ^^
/execute @a[m=2] ~ ~ ~ detect ~ ~-1 ~ air 2 /fill ~-1 ~-1 ~-1 ~1 ~0 ~1 iron_block 0 replace air 2

EDIT: Command gefixt (Data ID nach Block ID hat gefehlt)
Signatur
Rene_Z Staff

mcp1_Neon » Mi 25. Jun 2014, 18:50#10

:Hashtag: Freu
Cool, danke. Werd's sofort testen.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 78 Gäste