promotional bannermobile promotional banner

Blockpilot

Lets AI agents and scripts see and play Minecraft through a fast, token-efficient local interface, for playing or for play-testing your own mods.
Back to Files

Blockpilot 1.1.0 for NeoForge 26.3

File nameblockpilot-1.1.0-26.3-neoforge.jar
Uploader
sparten11740sparten11740
Uploaded
Nov 7, 2026
Downloads
10
Size
867.9 KB
Mod Loaders
NeoForge
File ID
9499021
Type
R
Release
Supported game versions
  • 26.3

Curse Maven Snippet

NeoForge

implementation "curse.maven:blockpilot-1778878:9499021"

Learn more about Curse Maven

What's new

For filming: a camera that glides, follows, circles, zooms and tilts, one that films far from the player, entities taken by name, sounds where the camera hears them, and marks for the edit. With Baritone installed, goto and mine walk through it. blockpilot-api becomes 2.1.0, an addition, so integrations built against 2.0.0 keep working.

  • BREAKING, chat from other players: player chat reaches agents with its text only from trustedPlayers in config/blockpilot/config.json, empty by default; everyone else's arrives as withheld from=<name>, in ! chat events, messages, the chat window, its log line and, when the agent hosts, the server's log line. On a server that doesn't check accounts nobody is trusted. The list is set in the file only and applies within a second; trust shows it, and BlockpilotApi.isTrusted tells extensions. Single-player play and tests are unaffected (safety.md).
  • BREAKING, other mods' commands: commands and events that other mods register reach agents only once their namespace is in allowedExtensions in config/blockpilot/config.json, empty by default; until then a call answers err not_allowed <namespace>:<name>, events are dropped and help names the setting. Blockpilot's own sable: commands need no entry. Integrations should tell their users to add their namespace.
  • Play-only agents: agentCommands: "play" refuses cmd, server, world files, recordings, captures, mod configs, switching worlds, quitting and server-side extension commands with err not_allowed, holds back slash commands an agent types or clicks in chat, keeps its input to gameplay screens and refuses clicks on links.
  • Camera moves: camera move <pos> [via <pos>]… [look <pos|e<id>|ahead>] over <duration> [ease=] glides the camera to a point, placed anew in every frame, through up to 32 via points on one smooth curve at a constant speed. It keeps its target, turns to a new one or looks ahead, and ease=in|out|inout shapes its speed. With background it glides while the script goes on, so characters can move and sounds play during the shot, and camera wait waits for its end. stop leaves it where the last frame drew it. status names a placed camera's position, and an entity look target is followed where each frame draws it.
  • Following and orbiting: camera follow <entity> [at <~dx,dy,dz>] [turning] keeps the camera's framing on a moving entity, turning with it over its shoulder if asked, and camera orbit <pos|entity> [by <degrees>] over <duration> circles a point or a moving entity, timed like a move, with ease= and background.
  • Camera lens: fov= and roll= give a placed camera its own field of view, from 1 to 170 degrees, and tilt; camera at and follow set them, move and orbit glide to them, so a zoom can tighten along a move.
  • A camera away from the player: camera at … away has the integrated server load, send and play the world around the camera, so a set a thousand blocks off can be filmed while the player stands still, and look and find search around it.
  • Sounds: sound <id> [at <pos>] plays a sound on this client alone, heard from the camera, in singleplayer and on servers alike.
  • Entities by name: every command that takes e<id> also takes @<name>, the entity with that tag or custom name, the nearest of several, so a script can summon a tagged actor and point the camera at it without reading its id.
  • Slow motion: docs/recording.md shows how to film it with tick rate, and what slows with the game.
  • A take that ends with its script: record script [name] records until its script ends, however it ends, and the reply carries the take's summary as ! record …, so a failing step no longer leaves a recording running.
  • Recording marks: record mark <label> notes the video time and frame a script reached; record stop lists the marks, and <name>.marks.json keeps them beside the video.
  • Baritone: with Baritone installed, goto and mine by type walk through it on their own, digging into closed rooms and to blocks behind walls, and their replies add by=baritone. Its settings decide whether it breaks or places blocks: with allowBreak and allowPlace off, a walk alters nothing. Without Baritone they walk as before, and mine by type now walks closer to a block it can't see before passing over it. Pathfinders sit behind one port, so another pathfinding mod is one adapter more.
  • GameTests: gametest run <selector> runs the game's own GameTests, the ones a mod or a data pack registers, on the integrated server, and answers with a row per test, passed or failed with its message, on every target. NeoForge runs them only in a development environment with -Dneoforge.enableGameTest=true.
  • Worlds with experimental settings: when the game asks whether to back a world up first as it uses experimental settings, as a data pack's GameTests make it, join world, and snapshot save and restore, which join the world again, load a test world without a backup, with experimental=true, and fail at once with err join_failed for any other world, the question left on screen, where they waited until they timed out.
  • Fewer fields in a sample: sample … fields=a,b keeps only those fields in each row, so a wide readout stays readable.
  • Server steps: consecutive server steps run back to back on the server's ticks, so settle=1t spaces commands exactly one server tick apart and settle=0t runs them in one.
  • Fixes: server function of a function without return answers ok, not err command_failed. wait <N>t waits N ticks, where it waited one fewer, so scripts that allowed for that run a tick longer per wait. On 26.x, screenshot now names a placed camera's position. A command line the launcher can't read prints one line saying what is wrong, not its whole usage text first. Entering a world starts the sound, message and particle logs anew, so since= no longer lists an earlier world's entries, whose ticks could lie in the new world's future.
  • Extension API: Form.repeated(limit, group) declares a part that may come several times, read back with Args.values and Args.positions. An ArgType.ENTITY slot takes @<name> too, looked up before the handler runs, so the handler still reads an id; Lexicon.isEntityName tells a name. CommandContext.atEnd(action) runs an action when the script ends, however it ends, before its reply.

This mod has no additional files