Alice
Optional PC companion for Wonderland servers: craft and build from nearby chests, a production panel for smelters, kilns and fires, vacuum hand-over and chest settings, bigger chests from the first frame. Does nothing on any other server.Changelog
0.12.2 - Store page
- Store page only: the README was rewritten to the new layout and is now the same on every store, and the website link now goes to https://ravenirongames.com/.
- No change to the mod:
Alice.dllis the same file as in 0.12.1.
0.12.1 - Valheim 1.0.21
- Rebuilt and checked against Valheim 1.0.21 (network version 41). No behaviour change; every game hook Alice uses still resolves.
- Website link moved to https://www.rossgilsonlabs.dev.
- Needs BepInExPack Valheim 5.4.2360.
0.12.0 - Initial public release
Alice is the optional PC companion for servers running Wonderland. Everything it does is something the server already does for every player; Alice lets the players who install it see and steer it. Nobody is required to install it, and a player without it keeps exactly the experience they have today. The version number follows Wonderland's: Alice 0.12 is built for Wonderland 1.12.
Added
-
The link. Alice talks to Wonderland through two messages the server itself registers, and only after the server has spoken to it first: the server advertises, Alice answers, the server switches the features on. On a server that is not running Wonderland with its Alice link on, in singleplayer, or with
Enabled = false, Alice does nothing at all and the game is vanilla. Only the server is believed (a message from anyone else is dropped), every message is parsed defensively, and Alice uses no ServerSync or Jotunn, so Wonderland's vanilla-client enforcement lets it through. -
Production. Look at a fireplace, smelter or kiln and the hover text gains a line: whether the server's auto-supply is feeding it, which half (fuel, ore) is on, and what it last did - fed, full, no fuel in reach, no ore in reach.
Hswitches the whole station,Shift+Hits fuel only,Ctrl+Hits ore only (all rebindable). A key press means "make it the opposite of what I am looking at" and is applied as a set, so two players pressing together, or a slightly stale hover, still end where they meant; switching the station back on keeps your fuel and ore choices. A kiln takes only wood and a fire only fuel, so each shows (and answers to) only the half it has.Ctrl+Shift+Hswitches every station within 20 m off at once andCtrl+Shift+Jback on (BulkRadius, capped by the server). -
Chests. Player-built chests and ship cargo holds have their full grown size from the first frame, empty or not, instead of waiting for the server to park a stack in the bottom row (heights only ever grow; widths are never touched). A chest that does not answer within 0.6 s of pressing E is handed to you by the server and opened.
-
Crafting and building from chests (switches on when a Wonderland that offers them connects). Crafting, upgrading and placing pieces count the materials in player-built chests near you; requirement numbers that will come from chests are drawn in blue. Nothing is ever added to your inventory: the server holds the missing materials for you, and when the game takes its materials Alice takes only your inventory's share and lets the server use the rest. Crafting reserves when you press craft; building keeps one placement's materials held while a piece is selected, so placing stays instant (a piece must stay selected for half a second first, so scrolling through the hammer menu costs nothing). If a craft is cancelled, the window closed, the piece changed, the hammer put away, the reservation runs out or the connection drops, the materials go back to the chests. Alice never destroys an item.
- Safety nets. A craft that would take longer than the server holds the materials (a high-quality upgrade on a short hold) is declined up front, with the numbers, instead of running out at the end. A reply that arrives after Alice stopped waiting is handed straight back. Alice checks that the materials the game takes are exactly the cost, and if a game update ever changes how the game takes them, Alice switches crafting and building from chests off for that session and says so in the log, rather than let anything come out wrong.
- Saving. The chests change the moment you craft, but your character is only written to disk when the game autosaves (every 30 minutes), so a game crash in
between would leave the chests short while your character forgets the craft - the same exposure as carrying the items out of the chest by hand. After a craft that used chest
materials Alice asks the game to save your character a few seconds later (never more than once every 20 s).
SaveAfterChestCraft = falseturns that off.
-
The production panel.
Ctrl+P(ProductionPanelKey) opens a window listing every fireplace, smelter and kiln withinPanelRadius(32 m, capped by the server) with its name, distance, state and the server's last note, three switches per station (station / fuel / ore: the very same idempotent sets the hover keys send) and All off / All on / Kilns off / Kilns on for the list. It reads the list withQueryStationsevery 2 s while open; stations beyond the server'sStationRangeare shown but not switchable. Built in the shared gilt-frame IMGUI theme (libs-Tools/SharedUI), modal like the inventory (cursor free, game input stopped throughUIFocus), closed by the same key, by the game menu or when the link ends.PanelScalesizes it. -
Vacuum cooperation (switches on when a Wonderland that offers it connects;
VacuumCooperation). Link protocol additions (still version 1): ops 48-51, push events 3-5, param keys 7-9, layouts indocs/M3-VACUUM-WIRE.md.- Hand-over. The server offers a ground stack this client owns (
Push ReleaseOffer, up to 16 per message); Alice judges each stack in the frame the push is handled and answers once (ReleaseAnswer). Release =ZDO.SetOwner(server)+ForceSendZDO, then both revisions read back for the server's proof; nothing else is touched. Refused with a reason:PlayerOnIt(the stack is within the auto-pickup range plus a 0.75 m collider margin of the player andPlayer.AutoPickupwould claim it - it asks for ownership back BEFORE it looks at bag room, so releasing there only starts a tug of war - or the player pressed E and is waiting for it),Gone,NotOwner,Busy(no loaded object, no player, dead, teleporting, link not ready). If an answer cannot be sent Alice judges nothing. The decision is a pure function (Vacuum/ReleaseRules.cs) swept over every combination in the tests. - Nudge. A postfix on
ItemDrop.Awakenotes ground items this client owns and created in the last 2 s; ids are batched (<= 16, one request per 250 ms, fire and forget) intoVacuumNudge.VacuumNudge = falseturns it off. - Messages.
Push VacuumMoved(sent only after a real chest write) becomesVacuum: +12 Wood, +5 Stone -> Chest(grouped by chest, at most one toast per half second).VacuumToasts = falseturns it off. - Chest settings (
ChestSettingsKey,Ctrl+K, looking at a chest or with its window open): collect on/off, mode (only what it already holds / chosen list / everything nobody else wants), the chest's reach, and the list with "Learn from contents". Read withQueryContainerPrefswhen the window opens; each change is oneSetContainerPrefswith a field mask, and the window shows what the server answers it stored. A hover line names the key. Settings live on the server, never in the chest.
- Hand-over. The server offers a ground stack this client owns (
-
Sharing a few numbers with the server's Discord bot (
ShareStats, section7 - Sharing; switches on only when a Wonderland that offers it connects, and never sends anything without the player's yes). Link protocol additions (still version 1): ops 64-65, param key 10, layouts indocs/R2-REPORTED-STATS-WIRE.md. The first time such a server welcomes Alice a small window asks once (Share on this server / Not on this server / Never share; closing it without an answer asks again next session); the answer is kept per server in the config (ReportedStatsServers, plain text the player can edit). Reported: DELTAS of the game's own raw per-character counters since a baseline taken when the link came up (crafts and upgrades, pieces placed, trees felled, boss last hits, creatures killed, bosses defeated - kills are reported because a server cannot count them: the creature's owner registers its own player's kill locally) plus the best skill (spaced name, floored level) and the sum of all skill levels, at most once per the server'sReportMinSeconds(60 s; never faster than 30 s) and only when something changed. An acknowledged report moves the baseline by exactly what it carried; a counter that goes down rebaselines silently; no single delta exceeds the server's ceiling of 1,000,000. A crash loses at most one interval. Withdrawing (a server's answer set tono, orShareStats = Never) sendsClearReportedStatsonce to each server Alice has reported to (ReportedStatsSent). Read-only on the game's side.
Changed
SaveAfterChestCraftnow skips the save when the game's own free-disk-space check says there is not enough room, exactly as the game's autosave does.Enabledis documented as read once at start-up (a restart is needed to change it).
Compatibility
- Valheim 1.0 on PC. Wonderland 1.12.0 or newer with
AliceLinkEnabledon (config section20 - Alice Link, off by default). - Needs BepInExPack Valheim 5.4.2351.
