aicompanion-0.2.5.jar
Curse Maven Snippet
What's new
0.2.5 — It can dig, it goes where you send it, and two of them stop taking turns
Bundles PlayerEngine 1.0.55. Self-contained jar as always — don't install a standalone engine alongside it.
Nothing to do after updating. A new staircase-mine skill appears alongside the others; your existing
skill files are untouched.
dig — a staircase you can walk back up
New command:
dig east 30 # cuts east, ending 30 blocks lower
dig 15 # 15 down, in whichever direction it's already facing
dig # facing direction, 30 down
It descends at 45° — one block down for every block along — so the result is a stairwell you can walk out of, not a pit you're stuck at the bottom of. It stops by itself at lava, at water, or near bedrock, and tells you where it got to and how deep.
There was no digging command before. Excavation happened as a side effect of walking somewhere, which
worked but was discoverable by nobody — including the companion, which tried inventing dig, then
reached for build_structure (the opposite operation: it places blocks and costs materials out of
its inventory), then tried to run a skill name as a command. None of it produced a staircase.
The bundled staircase-mine skill now just asks where you want the entrance and which way, walks
there, checks it has a pickaxe, and issues one dig. Everything else is done for it.
It goes where you send it
Every goto in the mod travelled to world origin. The destination was read before it had been
filled in, so the coordinates were always zero, while the command otherwise looked entirely
successful. Anything built on movement inherited it: "go to these coordinates" walked to spawn, and
the old staircase procedure aimed every step at the same wrong place — which is what was seen as a
companion setting off toward the horizon and never coming back.
Coordinates are also read more forgivingly now. Asked to go to a position it had just been shown, the companion would echo it back in the game's own format — brackets, commas, long decimals — which the command then rejected; one session spent 39 turns re-sending the same rejected string. Brackets, commas and decimals are all accepted, and positions are reported as plain block coordinates.
Two companions no longer take turns
With more than one out, only one could think at a time. Whichever was busiest held the floor: a companion working a long task kept every other one frozen for the duration, so the second looked broken while the first worked. Speech was part of it — one companion talking stopped every other one thinking until it finished the sentence.
Each companion now thinks independently, and how many can do so at once is configurable
(llm.maxConcurrentRequests, default 2 — raise it for a hosted model or a bigger roster, since every
extra slot is another request running at the same time).
It stops claiming to do things it isn't
Three separate versions of the same problem, all fixed:
- "I'm following you" while standing still. Asked to follow you, the companion would write your name in lowercase, the lookup was case-sensitive, and it matched nobody — then waited forever without saying so. Names now match regardless of case, and if the player genuinely can't be found it says so after a few seconds instead of pretending.
- Talking sensibly and then doing nothing at all. On a long session the companion would answer
perfectly and never act. Its instructions had grown past what the model could hold, and the first
thing lost was the part telling it how to phrase a command. Conversations are now trimmed to fit
(
llm.maxPromptChars), and a well-reasoned answer in the wrong format is recovered rather than discarded. - Repeating a command that could never work. A command that failed was retried indefinitely — one session logged 39 identical attempts, another 30. After three the companion is told plainly that it will not work and to try something else or explain itself.
Fewer wasted turns
- Invented a command that doesn't exist? The error now lists the ones that do, so it can correct itself on the next turn instead of guessing again.
- The list of your skills read to the companion as a second menu of commands, and it tried to run the skill names. It now says plainly that those are routines you start.
0.2.4 — It runs on a real server now, and they don't all sound alike
Bundles PlayerEngine 1.0.48. Self-contained jar as always — don't install a standalone engine alongside it.
Nothing to do after updating.
It works on a dedicated server
Until now it didn't, and it failed badly: the companion spawned, stood there doing nothing, and the first time you walked into it the server dropped you with "Internal server error". Every version up to this one was single-player-only in practice, whatever the description said.
The cause was code that only exists in the Minecraft client being reached by the server. In single player the two run in the same process, so nothing ever noticed. On a dedicated server the companion's AI threw on its very first tick and could never take one, and a separate piece of the same problem crashed the player's connection on contact.
Both are fixed, along with two more of the same kind waiting further along — one in placing blocks, one in the engine's logging. A companion on a dedicated server now spawns, paths, fights, gathers, completes tasks and survives a restart.
If you run a server, note that its timings are measured in server ticks. A server running below 20 ticks per second stretches every wait the companion makes, so it will feel slower under load than it does on your own machine. That is expected, not a fault.
Each companion can have its own voice
Voice used to be one setting shared by everyone, so a roster of three was three identical voices — which rather undoes having given them separate names, faces and personalities.
It now belongs to the companion. /companion config → Companions, and each one has a Voice
picker beside its skin, with the common Kokoro voices listed and searchable. af_/am_ are American
female/male, bf_/bm_ British, and you can type any voice id your setup serves if it isn't in the
list.
Leave it on (use global tts.voice) and nothing changes — that companion uses the shared setting exactly as before. The Voice tab keeps that shared setting as the fallback.
The config screen now admits when it can't reach the server
/companion config opens on a multiplayer server, lets you change anything, saves without complaint
— and changes nothing. It edits the copy of the config on your machine, and the server reads its
own.
It said nothing about this, and the log even claimed the changes would apply on the next world load, which they never would. Every tab now says which file it is editing, in red when that file is going nowhere.
To configure companions on a server, edit config/aicompanion.json on the server and run
/companion reload. Voice, personality, skins, LLM settings — all of it lives there. In single player
and on a LAN host the screen works exactly as it always has.
This mod has no additional files