虛擬方塊變更

虛擬方塊變更允許你改變客戶端看到的方塊,但不實際改變世界上的方塊。

發送虛擬方塊變更給客戶端只需簡單的呼叫 Viewer#sendBlockChange(int, int, int, BlockState) 方法。你需要指定要改變的方塊座標以及新的 BlockState 。如以下範例:

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

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

這將會改變座標位於 0, 65, 0 的方塊成指令方塊。當然,你不只能用方塊的預設狀態。任何 BlockState 都可以被 sendBlockChange() 方法被接受。

除了指定三個整數的座標外,你也可以指定 Vector3i ,例如以下範例使用 Viewer#sendBlockChange(Vector3i, BlockState) 方法:

import org.spongepowered.math.vector.Vector3i;

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

小訣竅

If you wish to send a virtual block to all clients, you can now use BlockChangeFlags#NOTIFY_CLIENTS

重設變更

要重設你對特定位置的變更,你可以呼叫 Viewer#resetBlockChange(int, int, int) 方法。例如要還原我們上一個範例的破壞,我們可以呼叫 resetBlockChange() 方法並指定與之前相同的座標:

viewer.resetBlockChange(0, 65, 0);

請注意,你也可以使用 Vector3i 代替此方法中的三個整數。