public override void OnBuild(WorldEdit worldEdit, int oldBlockId, BlockSelection blockSel, ItemStack withItemStack) { if (startPos == null) { return; } BlockPos destPos = blockSel.Position.AddCopy(blockSel.Face.Opposite); Block block = blockAccessRev.GetBlock(blockSel.Position); if (PlaceMode) { block = blockAccessRev.GetBlock(0); } worldEdit.sapi.World.BlockAccessor.SetBlock(oldBlockId, blockSel.Position); if (!worldEdit.MayPlace(block, startPos.ManhattenDistance(destPos))) { return; } GameMath.BresenHamPlotLine3d(startPos.X, startPos.Y, startPos.Z, destPos.X, destPos.Y, destPos.Z, (pos) => blockAccessRev.SetBlock(block.BlockId, pos, withItemStack)); if (LineMode == EnumLineStartPoint.LineStrip) { startPos = destPos.Copy(); } blockAccessRev.SetHistoryStateBlock(blockSel.Position.X, blockSel.Position.Y, blockSel.Position.Z, oldBlockId, blockAccessRev.GetBlockId(blockSel.Position)); blockAccessRev.Commit(); }