soulfire.tasks.SoulFireTasks¶
- class soulfire.tasks.SoulFireTasks(instance_id: str, bot_id: str, client: soulfire.task_connect.BotTaskServiceClient, header_factory: HeaderFactory)[source]¶
Start and observe durable jobs for one bot.
Access this API through
soulfire.SoulFireBot.tasks. Named start methods returnSoulFireTaskafter server acceptance. Call the handle’sresult()to wait for successful completion.run_*methods instead produce progress events and tie cancellation to stream interruption by default.A request timeout limits transport work. A task
deadlinelimits server execution and must be timezone-aware. Keep these limits separate. For retries of task submission, use a stableidempotency_keyrather than start another job accidentally.- start[ResultT: google.protobuf.message.Message](task_input: google.protobuf.message.Message, result_type: type[ResultT], *, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, disconnect_policy: soulfire.task_pb2.BotTaskDisconnectPolicy = BOT_TASK_DISCONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, parent_task_id: str | None = None, causation_id: str | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[ResultT], soulfire.errors.SoulFireOperationError][source]¶
Submit a protobuf task input and return a typed handle after acceptance.
- Parameters:
task_input – Protobuf task input, such as
CollectBlocksTask.result_type – Matching protobuf result class for
task.result().conflict_policy – Server policy for conflicting task resources.
reconnect_policy – Server policy when the bot reconnects.
disconnect_policy – Server policy when the owning RPC disconnects.
priority – Scheduling priority; unspecified values use server defaults.
deadline – Absolute, timezone-aware execution deadline, or no deadline.
parent_task_id – Parent task identifier for task relationships.
causation_id – Identifier for the event or operation that caused this task.
idempotency_key – Stable key for retries of the same task submission.
headers – Extra request metadata; the SDK adds any active control token.
timeout_ms – RPC timeout in milliseconds, separate from
deadline.
- Returns:
An Effect that produces
SoulFireTask[result_type]after acceptance. It does not wait for completion or register a cancellation finalizer.
- run(task_input: google.protobuf.message.Message, *, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, disconnect_policy: soulfire.task_pb2.BotTaskDisconnectPolicy = BOT_TASK_DISCONNECT_POLICY_CANCEL_WITH_CALL, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, parent_task_id: str | None = None, causation_id: str | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
Submit a protobuf task and stream progress with RPC ownership.
The stream is lazy: consumption starts the job. Its default disconnect policy is
CANCEL_WITH_CALL. Closing or interrupting the stream therefore cancels unfinished work unless an explicit policy selects different behavior. Task failure is also represented in event snapshots; inspect task status.- Parameters:
task_input – Protobuf task input.
disconnect_policy – Policy for a closed RPC. Defaults to cancellation.
deadline – Absolute, timezone-aware task execution deadline.
idempotency_key – Stable key for retries of this submission.
timeout_ms – RPC timeout in milliseconds, separate from
deadline.headers – Extra request metadata.
- Returns:
A Stream of
BotTaskEventvalues. Scheduling and relationship options have the same meaning asstart().
- run_go_to(goal: soulfire.bot_live_pb2.PathfindGoal, *, options: soulfire.bot_live_pb2.PathfindOptions | None = None, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
Navigate to a goal and stream task updates until execution ends.
Consumption starts the job. Interruption cancels unfinished work by default. Use
go_to()for a handle with explicit ownership.deadlinelimits server execution;timeout_mslimits the RPC in milliseconds.
- go_to(goal: soulfire.bot_live_pb2.PathfindGoal, *, options: soulfire.bot_live_pb2.PathfindOptions | None = None, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.GoToTaskResult], soulfire.errors.SoulFireOperationError][source]¶
Start a durable navigation task and return its typed handle.
goaldescribes arrival, andoptionscontrols pathfinding. This operation returns after acceptance. Useyield from task.result()to wait for arrival, orrun_go_to()for progress with stream ownership. Scheduling and request options have the same meaning asstart().
- run_follow_entity(target: FollowEntityTarget, *, distance: float = 3, options: soulfire.bot_live_pb2.PathfindOptions | None = None, target_unavailable_timeout_seconds: int = 0, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- follow_entity(target: FollowEntityTarget, *, distance: float = 3, options: soulfire.bot_live_pb2.PathfindOptions | None = None, target_unavailable_timeout_seconds: int = 0, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.FollowEntityTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_attack_entity(target: AttackEntityTarget, *, attack_range: float = 3, sprinting: bool = False, maximum_attacks: int = 0, options: soulfire.bot_live_pb2.PathfindOptions | None = None, target_unavailable_timeout_seconds: int = 0, select_best_weapon: bool = True, weapon: soulfire.inventory_pb2.ItemSelector | None = None, restore_selected_slot: bool = True, use_offhand_shield: bool = False, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- attack_entity(target: AttackEntityTarget, *, attack_range: float = 3, sprinting: bool = False, maximum_attacks: int = 0, options: soulfire.bot_live_pb2.PathfindOptions | None = None, target_unavailable_timeout_seconds: int = 0, select_best_weapon: bool = True, weapon: soulfire.inventory_pb2.ItemSelector | None = None, restore_selected_slot: bool = True, use_offhand_shield: bool = False, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.AttackEntityTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_attack_nearest(selector: soulfire.world_pb2.EntitySelector, *, radius: float = 32, attack_range: float = 3, sprinting: bool = False, maximum_attacks: int = 0, maximum_targets: int = 0, no_target_timeout_seconds: int = 0, complete_when_no_target: bool = False, select_best_weapon: bool = True, weapon: soulfire.inventory_pb2.ItemSelector | None = None, restore_selected_slot: bool = True, options: soulfire.bot_live_pb2.PathfindOptions | None = None, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- attack_nearest(selector: soulfire.world_pb2.EntitySelector, *, radius: float = 32, attack_range: float = 3, sprinting: bool = False, maximum_attacks: int = 0, maximum_targets: int = 1, no_target_timeout_seconds: int = 0, complete_when_no_target: bool = True, select_best_weapon: bool = True, weapon: soulfire.inventory_pb2.ItemSelector | None = None, restore_selected_slot: bool = True, options: soulfire.bot_live_pb2.PathfindOptions | None = None, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.AttackNearestTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_ranged_attack(target: AttackEntityTarget, *, minimum_range: float = 8, maximum_range: float = 24, maximum_shots: int = 0, target_unavailable_timeout_seconds: int = 10, weapon: soulfire.inventory_pb2.ItemSelector | None = None, bow_draw_ticks: int = 20, lead_target: bool = True, compensate_gravity: bool = True, strafe: bool = True, restore_selected_slot: bool = True, options: soulfire.bot_live_pb2.PathfindOptions | None = None, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- ranged_attack(target: AttackEntityTarget, *, minimum_range: float = 8, maximum_range: float = 24, maximum_shots: int = 0, target_unavailable_timeout_seconds: int = 10, weapon: soulfire.inventory_pb2.ItemSelector | None = None, bow_draw_ticks: int = 20, lead_target: bool = True, compensate_gravity: bool = True, strafe: bool = True, restore_selected_slot: bool = True, options: soulfire.bot_live_pb2.PathfindOptions | None = None, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.RangedAttackTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_flee(threats: soulfire.world_pb2.EntitySelector, *, trigger_radius: float = 8, safe_distance: float = 16, safe_seconds: int = 2, complete_when_safe: bool = False, maximum_escapes: int = 0, options: soulfire.bot_live_pb2.PathfindOptions | None = None, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- flee(threats: soulfire.world_pb2.EntitySelector, *, trigger_radius: float = 8, safe_distance: float = 16, safe_seconds: int = 2, complete_when_safe: bool = True, maximum_escapes: int = 0, options: soulfire.bot_live_pb2.PathfindOptions | None = None, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.FleeTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_guard(position: soulfire.common_pb2.BlockPosition, threats: soulfire.world_pb2.EntitySelector, *, guard_radius: float = 16, maximum_pursuit_distance: float = 24, return_radius: float = 3, attack_range: float = 3, sprinting: bool = False, maximum_attacks: int = 0, maximum_targets: int = 0, complete_when_clear: bool = False, clear_seconds: int = 3, select_best_weapon: bool = True, weapon: soulfire.inventory_pb2.ItemSelector | None = None, restore_selected_slot: bool = True, options: soulfire.bot_live_pb2.PathfindOptions | None = None, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- guard(position: soulfire.common_pb2.BlockPosition, threats: soulfire.world_pb2.EntitySelector, *, guard_radius: float = 16, maximum_pursuit_distance: float = 24, return_radius: float = 3, attack_range: float = 3, sprinting: bool = False, maximum_attacks: int = 0, maximum_targets: int = 0, complete_when_clear: bool = True, clear_seconds: int = 3, select_best_weapon: bool = True, weapon: soulfire.inventory_pb2.ItemSelector | None = None, restore_selected_slot: bool = True, options: soulfire.bot_live_pb2.PathfindOptions | None = None, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.GuardTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_protect(entity: AttackEntityTarget, threats: soulfire.world_pb2.EntitySelector, *, guard_radius: float = 16, maximum_pursuit_distance: float = 24, return_radius: float = 3, attack_range: float = 3, sprinting: bool = False, maximum_attacks: int = 0, maximum_targets: int = 0, complete_when_clear: bool = False, clear_seconds: int = 3, select_best_weapon: bool = True, weapon: soulfire.inventory_pb2.ItemSelector | None = None, restore_selected_slot: bool = True, options: soulfire.bot_live_pb2.PathfindOptions | None = None, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- protect(entity: AttackEntityTarget, threats: soulfire.world_pb2.EntitySelector, *, guard_radius: float = 16, maximum_pursuit_distance: float = 24, return_radius: float = 3, attack_range: float = 3, sprinting: bool = False, maximum_attacks: int = 0, maximum_targets: int = 0, complete_when_clear: bool = True, clear_seconds: int = 3, select_best_weapon: bool = True, weapon: soulfire.inventory_pb2.ItemSelector | None = None, restore_selected_slot: bool = True, options: soulfire.bot_live_pb2.PathfindOptions | None = None, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.GuardTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_sleep(bed: soulfire.common_pb2.BlockPosition | None = None, *, search_radius: int = 24, wait_until_possible: bool = True, retry_interval_ticks: int = 20, options: soulfire.bot_live_pb2.PathfindOptions | None = None, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- sleep(bed: soulfire.common_pb2.BlockPosition | None = None, *, search_radius: int = 24, wait_until_possible: bool = False, retry_interval_ticks: int = 20, options: soulfire.bot_live_pb2.PathfindOptions | None = None, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.SleepTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_fish(*, maximum_catches: int = 0, maximum_failed_casts: int = 0, rod: soulfire.inventory_pb2.ItemSelector | None = None, cast_timeout_ticks: int = 100, bite_timeout_ticks: int = 12000, complete_when_no_rod: bool = False, restore_selected_slot: bool = True, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- fish(*, maximum_catches: int = 1, maximum_failed_casts: int = 0, rod: soulfire.inventory_pb2.ItemSelector | None = None, cast_timeout_ticks: int = 100, bite_timeout_ticks: int = 12000, complete_when_no_rod: bool = True, restore_selected_slot: bool = True, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.FishTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_farm(crop_ids: collections.abc.Iterable[str] = (), *, center: soulfire.common_pb2.BlockPosition | None = None, radius: int = 24, maximum_harvests: int = 0, replant: bool = True, complete_when_no_mature_crops: bool = False, options: soulfire.bot_live_pb2.PathfindOptions | None = None, rescan_interval_ticks: int = 100, restore_selected_slot: bool = True, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- farm(crop_ids: collections.abc.Iterable[str] = (), *, center: soulfire.common_pb2.BlockPosition | None = None, radius: int = 24, maximum_harvests: int = 1, replant: bool = True, complete_when_no_mature_crops: bool = True, options: soulfire.bot_live_pb2.PathfindOptions | None = None, rescan_interval_ticks: int = 100, restore_selected_slot: bool = True, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.FarmTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_breed(animals: soulfire.world_pb2.EntitySelector | None = None, *, food: soulfire.inventory_pb2.ItemSelector | None = None, center: soulfire.common_pb2.BlockPosition | None = None, radius: int = 24, maximum_pairs: int = 0, complete_when_no_pair: bool = False, complete_when_no_food: bool = False, options: soulfire.bot_live_pb2.PathfindOptions | None = None, rescan_interval_ticks: int = 100, breeding_timeout_ticks: int = 100, restore_selected_slot: bool = True, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- breed(animals: soulfire.world_pb2.EntitySelector | None = None, *, food: soulfire.inventory_pb2.ItemSelector | None = None, center: soulfire.common_pb2.BlockPosition | None = None, radius: int = 24, maximum_pairs: int = 1, complete_when_no_pair: bool = True, complete_when_no_food: bool = True, options: soulfire.bot_live_pb2.PathfindOptions | None = None, rescan_interval_ticks: int = 100, breeding_timeout_ticks: int = 100, restore_selected_slot: bool = True, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.BreedTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_explore(*, origin: soulfire.common_pb2.BlockPosition | None = None, radius: int = 256, waypoint_spacing: int = 64, maximum_waypoints: int = 0, options: soulfire.bot_live_pb2.PathfindOptions | None = None, return_to_origin: bool = False, purpose: str = 'sdk-explore', reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- explore(*, origin: soulfire.common_pb2.BlockPosition | None = None, radius: int = 256, waypoint_spacing: int = 64, maximum_waypoints: int = 1, options: soulfire.bot_live_pb2.PathfindOptions | None = None, return_to_origin: bool = False, purpose: str = 'sdk-explore', conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.ExploreTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_stash(container: soulfire.common_pb2.BlockPosition, operations: collections.abc.Iterable[ContainerTransferSpec | soulfire.task_pb2.ContainerTransferOperation], *, options: soulfire.bot_live_pb2.PathfindOptions | None = None, close_container: bool = True, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- stash(container: soulfire.common_pb2.BlockPosition, operations: collections.abc.Iterable[ContainerTransferSpec | soulfire.task_pb2.ContainerTransferOperation], *, options: soulfire.bot_live_pb2.PathfindOptions | None = None, close_container: bool = True, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.ContainerTransferTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_withdraw(container: soulfire.common_pb2.BlockPosition, operations: collections.abc.Iterable[ContainerTransferSpec | soulfire.task_pb2.ContainerTransferOperation], *, options: soulfire.bot_live_pb2.PathfindOptions | None = None, close_container: bool = True, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- withdraw(container: soulfire.common_pb2.BlockPosition, operations: collections.abc.Iterable[ContainerTransferSpec | soulfire.task_pb2.ContainerTransferOperation], *, options: soulfire.bot_live_pb2.PathfindOptions | None = None, close_container: bool = True, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.ContainerTransferTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_maintain_loadout(container: soulfire.common_pb2.BlockPosition, requirements: collections.abc.Iterable[LoadoutRequirementSpec | soulfire.task_pb2.LoadoutRequirement], *, options: soulfire.bot_live_pb2.PathfindOptions | None = None, check_interval_ticks: int = 100, maximum_rebalances: int = 0, complete_when_satisfied: bool = False, close_container: bool = True, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- maintain_loadout(container: soulfire.common_pb2.BlockPosition, requirements: collections.abc.Iterable[LoadoutRequirementSpec | soulfire.task_pb2.LoadoutRequirement], *, options: soulfire.bot_live_pb2.PathfindOptions | None = None, check_interval_ticks: int = 100, maximum_rebalances: int = 0, complete_when_satisfied: bool = False, close_container: bool = True, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.MaintainLoadoutTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- balance_loadout(container: soulfire.common_pb2.BlockPosition, requirements: collections.abc.Iterable[LoadoutRequirementSpec | soulfire.task_pb2.LoadoutRequirement], *, options: soulfire.bot_live_pb2.PathfindOptions | None = None, check_interval_ticks: int = 100, close_container: bool = True, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.MaintainLoadoutTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_auto_eat(food_item_ids: collections.abc.Iterable[str] = (), *, food_level: int = 14, check_interval_ticks: int = 20, maximum_meals: int = 0, complete_when_no_food: bool = False, restore_selected_slot: bool = True, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- auto_eat(food_item_ids: collections.abc.Iterable[str] = (), *, food_level: int = 14, check_interval_ticks: int = 20, maximum_meals: int = 0, complete_when_no_food: bool = False, restore_selected_slot: bool = True, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.AutoEatTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_auto_respawn(*, respawn_delay_ticks: int = 0, maximum_respawns: int = 0, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- auto_respawn(*, respawn_delay_ticks: int = 0, maximum_respawns: int = 0, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.AutoRespawnTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_auto_totem(*, check_interval_ticks: int = 20, maximum_equips: int = 0, complete_when_no_totem: bool = False, replace_occupied_offhand: bool = False, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- auto_totem(*, check_interval_ticks: int = 20, maximum_equips: int = 0, complete_when_no_totem: bool = False, replace_occupied_offhand: bool = False, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.AutoTotemTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_auto_armor(*, check_interval_ticks: int = 20, maximum_equips: int = 0, complete_when_no_upgrade: bool = False, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- auto_armor(*, check_interval_ticks: int = 20, maximum_equips: int = 0, complete_when_no_upgrade: bool = False, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.AutoArmorTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_collect_blocks(block_ids: str | collections.abc.Iterable[str] = (), *, tags: collections.abc.Iterable[str] = (), count: int = 1, search_radius: int = 32, avoid_submerged_targets: bool = False, require_line_of_sight: bool = False, target_y_range: soulfire.world_pb2.IntRange | None = None, options: soulfire.bot_live_pb2.PathfindOptions | None = None, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
Collect matching blocks and stream progress with cancellation ownership.
Selector and pathfinding options match
collect_blocks(). Consumption starts the job. Interruption cancels unfinished work by default.deadlinelimits server execution;timeout_mslimits the RPC in milliseconds.
- collect_blocks(block_ids: str | collections.abc.Iterable[str] = (), *, tags: collections.abc.Iterable[str] = (), count: int = 1, search_radius: int = 32, avoid_submerged_targets: bool = False, require_line_of_sight: bool = False, target_y_range: soulfire.world_pb2.IntRange | None = None, options: soulfire.bot_live_pb2.PathfindOptions | None = None, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.CollectBlocksTaskResult], soulfire.errors.SoulFireOperationError][source]¶
Start a durable block collection task and return its typed handle.
- Parameters:
block_ids – Block IDs or
#-prefixed tags; accepts one string or an iterable.tags – Additional block tags, such as
"minecraft:logs".count – Blocks to collect. Defaults to 1.
search_radius – Search distance in blocks. Defaults to 32, at most 64.
avoid_submerged_targets – Skip targets covered by fluid up to the bot’s height.
require_line_of_sight – Restrict selection to visible blocks.
target_y_range – Allowed block heights; an omitted bound is open.
options – Pathfinding configuration.
deadline – Absolute, timezone-aware task execution deadline.
idempotency_key – Stable key for retries of the same submission.
timeout_ms – RPC timeout in milliseconds.
- Returns:
An Effect that produces
SoulFireTask[CollectBlocksTaskResult]after acceptance. Scheduling options have the same meaning asstart().
Examples
Inside an Effect workflow:
task = yield from bot.tasks.collect_blocks(tags=["minecraft:logs"], count=16) result = yield from task.result()
See also
soulfire.SoulFireBot.collect()to wait with automatic cancellation of unfinished work, orrun_collect_blocks()to stream progress.
- run_excavate(from_position: soulfire.common_pb2.BlockPosition, to_position: soulfire.common_pb2.BlockPosition, *, options: soulfire.bot_live_pb2.PathfindOptions | None = None, maximum_blocks: int = 0, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- excavate(from_position: soulfire.common_pb2.BlockPosition, to_position: soulfire.common_pb2.BlockPosition, *, options: soulfire.bot_live_pb2.PathfindOptions | None = None, maximum_blocks: int = 0, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.ExcavateTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_build(origin: soulfire.common_pb2.BlockPosition, blocks: collections.abc.Iterable[SchematicBlock], *, rotation: soulfire.task_pb2.BuildRotation = BUILD_ROTATION_NONE, mirror: soulfire.task_pb2.BuildMirror = BUILD_MIRROR_NONE, substitutions: collections.abc.Mapping[str, collections.abc.Iterable[str]] | None = None, options: soulfire.bot_live_pb2.PathfindOptions | None = None, break_incorrect_blocks: bool = True, restore_selected_slot: bool = True, partition_index: int = 0, partition_count: int = 1, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- build(origin: soulfire.common_pb2.BlockPosition, blocks: collections.abc.Iterable[SchematicBlock], *, rotation: soulfire.task_pb2.BuildRotation = BUILD_ROTATION_NONE, mirror: soulfire.task_pb2.BuildMirror = BUILD_MIRROR_NONE, substitutions: collections.abc.Mapping[str, collections.abc.Iterable[str]] | None = None, options: soulfire.bot_live_pb2.PathfindOptions | None = None, break_incorrect_blocks: bool = True, restore_selected_slot: bool = True, partition_index: int = 0, partition_count: int = 1, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.task_pb2.BuildTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_craft(recipe_id: str, *, count: int = 1, station: soulfire.common_pb2.BlockPosition | None = None, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- craft(recipe_id: str, *, count: int = 1, station: soulfire.common_pb2.BlockPosition | None = None, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.recipe_pb2.CraftTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_smelt(input: soulfire.inventory_pb2.ItemSelector, *, count: int = 1, fuel: soulfire.inventory_pb2.ItemSelector | None = None, station: soulfire.common_pb2.BlockPosition | None = None, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- smelt(input: soulfire.inventory_pb2.ItemSelector, *, count: int = 1, fuel: soulfire.inventory_pb2.ItemSelector | None = None, station: soulfire.common_pb2.BlockPosition | None = None, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.recipe_pb2.SmeltTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_brew(input: soulfire.inventory_pb2.ItemSelector, ingredient: soulfire.inventory_pb2.ItemSelector, *, count: int = 1, fuel: soulfire.inventory_pb2.ItemSelector | None = None, station: soulfire.common_pb2.BlockPosition | None = None, expected_result: soulfire.inventory_pb2.ItemSelector | None = None, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- brew(input: soulfire.inventory_pb2.ItemSelector, ingredient: soulfire.inventory_pb2.ItemSelector, *, count: int = 1, fuel: soulfire.inventory_pb2.ItemSelector | None = None, station: soulfire.common_pb2.BlockPosition | None = None, expected_result: soulfire.inventory_pb2.ItemSelector | None = None, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.recipe_pb2.BrewTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- run_villager_trade(offer_index: int, *, count: int = 1, expected_result: soulfire.inventory_pb2.ItemSelector | None = None, close_when_done: bool = False, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶
- villager_trade(offer_index: int, *, count: int = 1, expected_result: soulfire.inventory_pb2.ItemSelector | None = None, close_when_done: bool = False, conflict_policy: soulfire.task_pb2.BotTaskConflictPolicy = BOT_TASK_CONFLICT_POLICY_UNSPECIFIED, reconnect_policy: soulfire.task_pb2.BotTaskReconnectPolicy = BOT_TASK_RECONNECT_POLICY_UNSPECIFIED, priority: soulfire.task_pb2.BotTaskPriority = BOT_TASK_PRIORITY_UNSPECIFIED, deadline: datetime.datetime | None = None, idempotency_key: str | None = None, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[soulfire.recipe_pb2.VillagerTradeTaskResult], soulfire.errors.SoulFireOperationError][source]¶
- get[ResultT: google.protobuf.message.Message](task_id: str, result_type: type[ResultT], *, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[SoulFireTask[ResultT], soulfire.errors.SoulFireOperationError][source]¶
- list(*, statuses: collections.abc.Iterable[soulfire.task_pb2.BotTaskStatus] = (), include_terminal: bool = False, page_size: int = 100, headers: dict[str, str] | None = None, timeout_ms: int | None = None) effect_py.Effect[list[soulfire.task_pb2.BotTask], soulfire.errors.SoulFireOperationError][source]¶
- watch(*, statuses: collections.abc.Iterable[soulfire.task_pb2.BotTaskStatus] = (), after_sequence: int = 0, include_snapshot: bool = True, headers: dict[str, str] | None = None, timeout_ms: int | None = None) soulfire.streams.Stream[soulfire.task_pb2.BotTaskEvent, soulfire.errors.SoulFireOperationError][source]¶