diff --git a/projects/Cooking/docs/husbandry.md b/projects/Cooking/docs/husbandry.md index 504112b..9706ef6 100644 --- a/projects/Cooking/docs/husbandry.md +++ b/projects/Cooking/docs/husbandry.md @@ -327,9 +327,9 @@ Never delete a row on unload just because `Bukkit.getEntity` is null. Unowned wi A forced stop can kill the server before it saves chunks, so an owned animal that moved since the last save can be missing from every saved chunk. Cooking guards against this with snapshots: - Every minute, on chunk unload and on disable, each loaded **owned** animal is serialized into the `snapshots` table (one row per animal, cascading from `animals`). -- At start, after the saved-chunk scan, an owned animal found in no saved chunk of its world and under no logged-out rider (`playerdata` `RootVehicle`) is lost. If it has a snapshot, Cooking spawns it again at the captured position with its UUID, name, coat, gear, owners and stats, and logs `Restored lost animal …`. If the entity turns up with its chunk first, nothing is spawned. If the spawn is refused, it stays `Missing` and is retried at the next start. +- At start, after the saved-chunk scan, an owned animal found in no saved chunk of its world and under no logged-out rider (`playerdata` `RootVehicle` of `.dat` files) is lost. If it has a snapshot, Cooking spawns it again at the captured position with its UUID, name, coat, gear, owners and stats, and logs `Restored lost animal …`. If the entity turns up with its chunk first, nothing is spawned. If the spawn is refused, it stays `Missing` and is retried at the next start. - Without a snapshot, the row and owners are deleted and `Dropped ghost animal …` is logged. An incomplete estate intent prevents ghost deletion: the record stays `Missing` for staff review, retaining existing animal, owner and snapshot rows and account capacity. The scan continues with other animals and counts these records as held. -- A scan that could not read some chunk or player file restores and drops nothing. +- A scan that could not read some chunk or player file restores and drops nothing. Its lost animals show `Missing`, the summary line ends `kept N missing animals because some files could not be read`, and a warning names the first 10 unreadable files or chunks with the reason. Only `.dat` player files are read: the `-.dat` temp file a crash mid-save leaves behind, `.dat_old` backups and `_corrupted_` copies are skipped. - Death deletes the snapshot with the row. Any other removal except a chunk unload or a rider logging out (plugin removal, discard) deletes the snapshot too, so a deliberately removed animal is not brought back. - `restore-lost-animals: false` turns restoring off; lost animals are then dropped as ghosts. @@ -389,7 +389,7 @@ Stars are **not** shown in the GUI (visible on slaughter quality instead). No af Players (no permission node): -- `/animals` (alias `/livestock`) — list every animal the selected character owns or co-owns. Each line is name, species, co-owner when shared, growing when immature, Happy / Hungry / Dirty, then the world and block coordinates last recorded for that animal. Click the coordinates to copy them. Animals in unloaded chunks are listed too. When the server starts, Cooking reads the saved entity chunks to fill in or correct where each unloaded animal is. An owned animal lost from the save is restored or dropped at that scan (see [Lost animals](#lost-animals)). One that could not be restored shows `Missing` (with `last seen` coordinates if any were recorded) until it loads again. `location not recorded yet` only appears when neither a recorded spot nor a saved chunk is available, for example when some chunks could not be read. The header counts the selected character's animals; a separate `Account animal places: used/max` line shows capacity across all its characters and held slots. +- `/animals` (alias `/livestock`) — list every animal the selected character owns or co-owns. Each line is name, species, co-owner when shared, growing when immature, Happy / Hungry / Dirty, then the world and block coordinates last recorded for that animal. Click the coordinates to copy them. Animals in unloaded chunks are listed too. When the server starts, Cooking reads the saved entity chunks to fill in or correct where each unloaded animal is. An owned animal lost from the save is restored or dropped at that scan (see [Lost animals](#lost-animals)). One that could not be restored, or that a scan could not confirm because some files were unreadable, shows `Missing` (with `last seen` coordinates if any were recorded) until it loads again. `location not recorded yet` only appears when neither a recorded spot nor a saved chunk is available, for example when some chunks could not be read. The header counts the selected character's animals; a separate `Account animal places: used/max` line shows capacity across all its characters and held slots. Staff with `cooking.admin`, including the console, can run `/animals ` for someone who has joined. This read-only account view aggregates distinct animals across that account's resolved character slots. A player without that permission cannot list another player's animals.