Project icon Alec's Tamework!
Alec's Tamework!

Mob taming framework and asset patcher. Breeding, traits, leveling, tame management UI, easier interaction chains, capture/spawn items that store metadata, ownership/tamed status, lots of behavior components and more!

97
yesterday
Library

v5.0.0

Release
Alec's Tamework! v5.0.02 weeks ago0

Compatibility

Hytale versions

0.6.x

Platform

Vanilla

Changes

5.0.0 - Companion Store Rework - 2026-10-04

Upgrade compatibility: Back up the world's universe folder before updating. This release requires Hytale server 0.6.0 or later; 0.5.x is no longer supported. The first start on a 3.x or 4.x world imports all companion data automatically, before worlds load. The old database files are only read and stay unchanged, so rolling back to 4.3.x uses them as they were before the update. 2.x worlds are not imported: run Tamework 4.3.x once first, or start fresh. A later release will remove the importer, so 3.x and 4.x worlds must run a 5.0.x version once before moving past it. The public Java API is now 3.0.0 and is not compatible with 2.x, so mods that call it, such as HyDragon and Alec's NPC Debug Inspector, need versions built for Tamework 5.0. See World Migration for Server Admins.

Migration

  • Each import writes import-report-.txt to the Tamework/Data folder, prints a one-line summary to the console and records a receipt in the new store's meta.json. The report lists the sources, counts, skipped entries with reasons, and companions that need attention.
  • A failed import writes import-report-failed.txt, shows operators a notice, changes nothing, keeps companion features off and tries again at every start. A Companions folder that is a link or junction, or that holds files but no meta.json, is refused with instructions.
  • 2.x worlds show operators a chat notice and a popup that name the version to run first. While old data blocks the world, operators can run /tw persistence start-fresh [confirm] instead, also from the console. It creates an empty companion store, leaves the old files alone and takes effect after a restart.
  • After the import, companions that 4.x left in unloaded chunks are located in the background, one chunk at a time on a low-priority thread that slows down under server load and resumes after a restart. Until it finishes, their cards show "Being located after the update" and Recall, Recover and Locate are refused. A companion found in no saved chunk is listed as lost and can be recovered; if its animal loads later, it rejoins.
  • As chunks load, each old animal is matched to its imported companion. Leftover stale copies are removed without a death or drops, and animals that cannot be proved stale are left alone. A player who claimed a removed copy gets a message. Leftover copies cannot be captured or put in a coop.
  • Companions imported as lost because the old data was unclear rejoin when their animal loads. Animals that 4.x had released can be tamed again.
  • Imported dead, lost, stored and bonded companions can be revived, recovered and summoned from their saved state. A companion that starved revives with default needs.
  • 4.x capture items release their companion once; copies are refused. 2.x capture items that were never rewritten restore the animal from their own data on first use; copies are refused. A tamed companion with no owner in an imported item becomes the releaser's, within their limits.
  • Command items keep their links, including links to an old animal. Imported coop residents rejoin their coop when it loads. They wait while a coop block stands without a usable config, and are released beside the block, or listed as lost and recoverable, if the coop is gone or full.
  • Items held by an unfinished 4.x bonded revive payment are returned when the player enters a world. Items that do not fit drop at the player's feet, with a message. Paid or refunded payments are discarded.
  • Retired 4.x data is removed from animals and players as they load.
  • Timed summons that were active at import restart their remaining time from the import.
  • Limits that another mod enforces through Tamework do not count imported companions until their next change.
  • A 4.x settings file's limitPerPlayerOwnedTotal value moves to the new limitPerPlayerDeployedTotal, and the owned limit becomes unlimited, because 4.x counted only loaded companions. Imported companions not seen since the import do not count as deployed. Review both limits in /tw settings.
  • A world that needs migration logs a warning at startup instead of a severe error.

Added

  • Separate per-player limits in /tw settings. "Max companions out in the world" (limitPerPlayerDeployedTotal) counts every summoned companion, loaded or not. "Max companions owned" (limitPerPlayerOwnedTotal) counts everything a player owns, including companions in items, rosters and coops, dead and lost. Each limit has its own refusal message.
  • A "Captured companion ownership" setting with three modes: Follows the item (default; whoever takes the filled item into their inventory becomes the owner, within their limits), Owner only, and Changes on release (the releaser becomes the owner). A companion in a capture item always keeps an owner.
  • Filled capture items show an "Owner:" line that updates when the item changes hands.
  • In Follows the item mode, a player at their limit cannot pick up another player's filled capture item. Item configs can turn this off with BlockIneligibleHolders: false.
  • Recall and Forget for captured companions in the companion panel. Recall brings the companion out of its item; Forget releases it permanently and frees its slot. Either way, surviving copies of the item become empty.
  • /tw companions forget [confirm] and /tw companions restore [confirm] let admins forget a captured companion or restore one from an item, a coop or lost.
  • /tw bonded grant [name] gives an online player a stored bonded companion.
  • Admins see a one-time in-game notice about the 5.0 changes, with a reminder to back up and a pointer to the migration guide.
  • Bonded roster configs accept NameKey for a translated family name.
  • The optional example pack includes a roster capture item, command item and companion config for testing rosters, timed summons and paid revives.

Changed

  • Companion data is stored as files in universe/Tamework/Companions: one file per owner, plus one saved state for each companion that is not in a world. Hytale world backups include it. Tamework no longer uses a database.
  • Each companion and capture item carries a generation. An outdated copy, such as a duplicated capture item or an animal left behind in an unloaded chunk, is refused or removed when it is next seen.
  • Recall and follow across worlds respawn the companion from its saved state, leaving no copy behind.
  • A capture item that despawns or is destroyed leaves its companion lost and recoverable.
  • Breaking a coop releases its residents beside the block.
  • Coop production follows vanilla coop timing: it runs on the world's game clock, produces at the morning roam and catches up missed days.
  • A tamed animal with no owner is claimed only when a player interacts with it, within that player's limits.
  • Owned and group limits count every owned companion, including those in items, rosters, coops, dead and lost. Admin tamed spawns of managed roles count toward limits like any other new companion.
  • Dead and lost companion cards show a status strip. Dead cards show the revive countdown, or that the companion is ready to revive; lost cards show that the companion is missing and ready to recover.
  • Bonded companions are stored with all other companions. A revive brings the companion back active at the chosen place and needs a free active slot; the cost is charged first and refunded if the revive fails. Bonded companions are stored when their session expires or the owner logs out or changes world, not when the owner dies. A lost bonded companion is listed as stored and can be summoned again. Provisioned bonded companions count toward the owner's owned and group limits.
  • Redesigned bonded roster cards with a named family header, counts and a full bar, a gender icon, and a family-full line that names the active companion. Bonded names read as given name, translated role, then species.
  • Ordinary command items no longer control bonded companions, and owned-pet transformation refuses roster companions.
  • When a mod limits taming through Tamework, the action is refused if that mod's check is missing, slow or failing, and a limit of 0 allows none. A first attempt may answer "checking requirements, try again". These messages no longer mention Husbandry.
  • The mod jar is about half the size (30 MB down to 16 MB). The bundled SQLite driver is used only by the importer and keeps native files for Windows x64, Linux x64 and ARM64 (including Alpine), and macOS x64 and ARM64. On other platforms the import fails without changing anything.
  • Public Java API 3.0.0 changes events, diagnostics, profile data, population counts and bonded companions, and the API is available only while the companion store is ready. See Changes from 2.x.

Removed

  • /tw debug persistence and all its subcommands: status, health, detail, export, reviveready, compact and simulateerror. For support, send the server log and, after an import, the import report.
  • Automatic startup database compaction from 4.3.2, along with the database.
  • The "Spawn requires owner" setting. The capture item fields Spawn.OwnerRestricted, Spawn.RequireOwner and Capture.ClearsOwner still load but are ignored; the captured companion ownership mode decides. Existing capture-clears-owner and spawn-sets-owner settings map to the nearest mode. A capture with TamesTarget always tames.
  • The companion config field Travel.OnTransferFailure still loads but is ignored. Recall across worlds respawns the companion from its saved state, so there is no transfer to fail.
  • Public API entry points commandFamilyRosters(), commandTimedSummoning(), companionProvisioning(), paidCommandRevival(), policies().populationAdmissions() with its reservation tokens, populationGroups().getReconciliationStatus(), profileData().findOperation(...) and the persistence resilience diagnostics, with their capabilities. Rosters, timed summons and paid revives stay available through roster and companion configs, and bonded companions through bondedCompanions(); add limit checks with policies().admissionProviders().
  • Events no longer published: population group membership and limit changes, timed summoning, provisioning, provisioned death and revive, paid revive, and command roster membership.
  • Direct import of 2.x saves.
  • Support for Hytale server 0.5.x.
  • The optional NameplateBuilder integration: the pet-name override for the entity-name segment and the Happiness, Hunger, Thirst, Tranquilizer and Traits segments. Tamework pet naming is unchanged.

Fixed

  • Updated embedded Beacon to 2.0.3 to remove mod archive scans during player joins and world transfers, and reduce repeated consent-file reads.
  • Changes to idle companions, such as renames, stats and progression, now always reach the world save. Before, Hytale saved them only when something else also changed the animal.
  • /tw api test run and /tw api test status no longer fail with "Assert not in thread".
  • German, French, Canadian French and Brazilian Portuguese no longer show leftover English placeholder text, and Spanish uses "Niv." for level.

Creators

5followers
11projects
280downloads

What to know

Contains AI-generated code and text
I use ChatGPT Codex for Java coding assistance and translation.
Contains opt-out telemetry
Using Beacon (https://beacon.modstats.io/privacy) for anonymous crash/error reports and anonymous activity, usage, and performance statistics

Details

Licensed GPL-3.0-only
Created Jun 10
Updated Oct 16
ID: FAAm3g