Skip to content

2.2.0

Choose a tag to compare

@github-actions github-actions released this 23 Aug 15:39
· 30 commits to master since this release

A caller can now read what a plugin declares, and several answers that used to read as their opposite have been corrected.

Added

state_query kind="plugin" — what a plugin declares, and what it actually loaded. The commands with the permission node gating each, the permissions with their defaults, and the live config. Until now, to test a permission you had to already know its node: state_query could test one and never list one.

A plugin's config is where database passwords and API tokens live, and this tool is readable by anything holding the agent's token. Values whose key looks like a secret come back (redacted) with the key still shown, so you can see the setting exists and ask a human.

One limit: a command's permission is null whenever its plugin.yml does not declare one, which is common. Read the permissions list too rather than concluding a command is ungated.

bot_spawn reports gameMode and op. Gamemode changes how every later observation reads — creative masks a full-inventory failure, and item grants behave differently.

break_block says what became of the dig. It used to answer "sent", which made a dig a plugin cancelled and a dig that never arrived the same observation. Now:

the block is gone broke <material>
the block is unchanged something cancelled the break
the server never acted on it the join window; no BlockBreakEvent is fired
the bot cannot see the block its chunk has not arrived, so nothing was sent

bot_spawn waits until the ground under the bot is loaded, rather than returning while the bot could still act on a block it has not been told about.

Fixed — answers that read as their opposite

bot_inspect's items was [] for a bot holding a full inventory. items has only ever meant the open menu's contents, and no menu was open — but it reads as "this player has nothing". It is now null, with a note saying where the player's own inventory lives.

exceptions_recent starts empty at every boot. An empty answer reads as "this never happens" when it means "not since this server started". It now says so.

bot_run_scenario's failure evidence covered the whole retention window and was led by whatever was most frequent, with the run's own earlier successes counted in. It is now the events and log lines from the failing step's own window. wait_for's timeout evidence is filtered to the player the condition names.

assert_message checked once and moved on, which is a race against any plugin that does not answer within the same tick, and it failed with wording that reads as a verdict when the truth is "not yet". It now waits, with timeoutMillis.

state_query kind="block" echoed the world argument back rather than the world it read, so omitting it answered "world": null.

logs_query no longer returns the agent's own activity. A search for a plugin's output was coming back largely as your own calls and echoes of results you had just read. Those lines stay on the console. Colour codes are stripped from captured messages.

EndermanAttackPlayerEvent joins the high-frequency exclusions, where it was crowding everything else out of events_summary.

Upgrading

One response shape changed. bot_inspect's items is null rather than [] when no menu is open, so a caller checking for an empty array has to check for null. Nothing else breaks.

Worth knowing

A reused bot name is the player the server already remembers. Inventory, position, advancements and anything a plugin stored against it survive from earlier runs. Use an unused name when a first join is the thing under test.

as does not fire PlayerCommandPreprocessEvent; a scenario's command step does. On a server whose plugin cancels or rewrites commands in that listener, as tests something else.

command_exec with as cannot tell you whether the command worked. dispatched: true with empty output is what a successful command looks like, what a late async reply looks like, and what a plugin refusing on the action bar looks like. Read bot_inspect to tell them apart.

Full Changelog: 2.1.1...2.2.0