虛擬方塊變更
虛擬方塊變更允許你改變客戶端看到的方塊,但不實際改變世界上的方塊。
發送虛擬方塊變更給客戶端只需簡單的呼叫 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
代替此方法中的三個整數。