static void Fill3DCallback([NotNull] Player player, [NotNull] Vector3I[] marks, [NotNull] object tag) {
if (player == null) throw new ArgumentNullException("player");
if (marks == null) throw new ArgumentNullException("marks");
if (tag == null) throw new ArgumentNullException("tag");
DrawOperation op = (DrawOperation)tag;
if (!op.Prepare(marks)) return;
if (player.WorldMap.GetBlock(marks[0]) == Block.Air) {
Logger.Log(LogType.UserActivity,
"Fill3D: Asked {0} to confirm replacing air on world {1}",
player.Name,
player.World.Name);
player.Confirm(Fill3DConfirmCallback, op, "{0}: Replace air?", op.Description);
} else {
Fill3DConfirmCallback(player, op, false);
}
}