Virtuelle Block Änderungen

Virtuelle Block Änderungen erlauben es dir, es so aussehen zu lassen, als ob sich ein Block im Client geändert hat, ohne dass sich ein echter Block in der Welt geändert hat.

Das Senden einer virtuellen Block-Änderung an den Client ist so einfach, wie das Aufrufen der Methode Viewer#sendBlockChange(int, int, int, BlockState). Du musst die Koordinate, des Blocks angeben, den du ändern möchtest, sowie den neuen BlockState, den du anzeigen möchtest. Ein Beispiel davon sähe wie folgt aus:

import org.spongepowered.api.block.BlockTypes;
import org.spongepowered.api.effect.Viewer;

viewer.sendBlockChange(0, 65, 0, BlockTypes.COMMAND_BLOCK.getDefaultState());

Dies lässt es so aussehen, als ob sich der Block an der Koordinate 0, 65, 0 in einen Befehlsblock verwandelt hat. Natürlich bist du nicht auf den Standardzustand des Blockes begrenzt. Jegliche BlockStates werden von der sendBlockChange() Methode akzeptiert.

Neben der Möglichkeit die Koordinate als drei Integers anzugeben, kannst du sie auch als Vector3i angeben. Ein Beispiel, wie die Viewer#sendBlockChange(Vector3i, BlockState) Methode verwendet werden kann, siehst du hier:

import com.flowpowered.math.vector.Vector3i;

Vector3i vector = new Vector3i(0, 65, 0);
viewer.sendBlockChange(vector, BlockTypes.COMMAND_BLOCK.getDefaultState());

Zurücksetzen der Änderungen

Um jegliche Änderungen an der Position, die du zum Client gesendet hast, Rückgänging zu machen, kannst du die Viewer#resetBlockChange(int, int, int) Methode aufrufen. Zum Beispiel, um die Schäden des vorherigen Beispiels rückgängig zu machen, können wir die resetBlockChange() Methode mit den gleichen Koordinaten aufrufen wie zuvor:

viewer.resetBlockChange(0, 65, 0);

Bitte beachte, dass du in diesem Fall ebenfalls den Vector3i anstelle der drei Integers verwenden kannst.