{"project":{"id":"3145c0f3-a890-49b3-bc87-0648b8bd736c","slug":"tamework","title":"Alec's Tamework!","about":"<p>\n    <a href=\"https://www.curseforge.com/hytale/mods/alecs-tamework\" target=\"_blank\" rel=\"noopener noreferrer\"><img alt=\"Tamework downloads\" src=\"https://img.shields.io/curseforge/dt/1447962?label=Tamework&amp;style=for-the-badge&amp;logo=curseforge&amp;color=rgb(241%2C100%2C54)\" /></a>\n    <a href=\"https://www.curseforge.com/hytale/mods/alecs-cats\" target=\"_blank\" rel=\"noopener noreferrer\"><img alt=\"Cats downloads\" src=\"https://img.shields.io/curseforge/dt/1432112?label=Cats&amp;style=for-the-badge&amp;logo=curseforge&amp;color=rgb(241%2C100%2C54)\" /></a>\n    <a href=\"https://www.curseforge.com/hytale/mods/alecs-nametags\" target=\"_blank\" rel=\"noopener noreferrer\"><img alt=\"Nametags downloads\" src=\"https://img.shields.io/curseforge/dt/1464844?label=Nametags&amp;style=for-the-badge&amp;logo=curseforge&amp;color=rgb(241%2C100%2C54)\" /></a>\n    <a href=\"https://www.curseforge.com/hytale/mods/alecs-animal-husbandry\" target=\"_blank\" rel=\"noopener noreferrer\"><img alt=\"Animal Husbandry downloads\" src=\"https://img.shields.io/curseforge/dt/1480275?label=Animal%20Husbandry&amp;style=for-the-badge&amp;logo=curseforge&amp;color=rgb(241%2C100%2C54)\" /></a>\n  </p>\n  <p>\n    <a href=\"https://discord.gg/E8n8RgTTdq\" target=\"_blank\" rel=\"noopener noreferrer\"><img alt=\"Join Discord\" src=\"https://img.shields.io/discord/1468261809739005996?style=for-the-badge&amp;logo=discord&amp;logoColor=white&amp;label=Join%20Discord&amp;color=rgb(88,101,242)\" /></a>\n    <a href=\"https://ko-fi.com/alechilles\" target=\"_blank\" rel=\"noopener noreferrer\"><img alt=\"Support me on Ko-fi\" src=\"https://img.shields.io/badge/ko--fi-Support%20Me-ff5f5f?logo=ko-fi&amp;style=for-the-badge\" /></a>\n    <a href=\"https://hytale.com/\" target=\"_blank\" rel=\"noopener noreferrer\"><img alt=\"Creator Code Alec\" src=\"https://img.shields.io/badge/Creator%20Code-Alec-00AEEF?style=for-the-badge\" /></a>\n    <a href=\"https://twitter.com/intent/user?screen_name=Alechilles\" target=\"_blank\" rel=\"noopener noreferrer\"><img alt=\"Follow Alec on X\" src=\"https://img.shields.io/badge/Follow-%40Alec-White?style=for-the-badge&amp;logo=x&amp;logoColor=rgb(255%2C255%2C255)&amp;logoSize=auto&amp;label=Follow&amp;labelColor=rgb(85%2C85%2C85)&amp;color=rgb(147%2C147%2C147)\" /></a>\n  </p>\n<p>\n    <a href=\"https://bisecthosting.com/Alec\" target=\"_blank\"><img alt=\"25% Off BisectHosting Servers With Code: Alec\" src=\"https://www.bisecthosting.com/partners/custom-banners/249bd432-0996-4ccb-8184-65cd3791a3d2.webp\" /></a>\n</p>\n<p>\n    <a href=\"https://www.modstats.io/stats/alecs-tamework\" target=\"_blank\" rel=\"nofollow\"><img src=\"https://www.modstats.io/api/v1/stats/projects/alecs-tamework/embed/card.svg?layout=live&amp;theme=curseforge\" alt=\"Alec's Tamework! ModStats\"></a>\n</p>\n\n# Alec's Tamework!\nAlec's Tamework is a modular NPC framework for Hytale built to let modders add rich NPC features through assets, templates, and config-driven systems instead of writing custom Java code. It embeds Patchwork for non-destructive asset patching, so artists, designers, and less technical modders can build advanced optional integrations without first creating their own plugin.\n\nTamework also aims to establish a shared standard for tameable NPCs in Hytale so different mods can work on top of similar ownership, naming, command, progression, and companion-management systems instead of forcing players to learn a different workflow for every mod.\n\n## This Is a Library\nTamework is a framework dependency for other mods. It does not add a standalone gameplay expansion by itself.\n\nIf you are a player looking for gameplay built on Tamework, start with [Alec's Animal Husbandry](https://www.curseforge.com/hytale/mods/alecs-animal-husbandry) or [Alec's Cats](https://www.curseforge.com/hytale/mods/alecs-cats), or see the wiki for the specific mod you are using.\n\n## Why Tamework\n- **No Java required for most integrations**: the main integration path is built around JSON assets, templates, role wiring, and `Tw*Config` files rather than custom Java systems.\n- **Non-destructive asset patching**: Embedded Patchwork can add, merge, and insert JSON into one or many Hytale assets with composable conditions. It regenerates at startup, on an administrator reload, and after relevant directory-pack edits, and it reports which changes require a restart.\n- **A shared standard for tameable NPCs**: mods built on Tamework can present familiar ownership, naming, command, linked-panel, breeding, and progression behavior instead of inventing incompatible one-off systems.\n- **Optimized interactions**: build taming, feeding, mounting, harvesting, breeding, and custom interactions with `TwInteractionConfig` and `TameworkInteract`.\n- **Boss and combat tools**: author sweeping beams, targeted leaps, native boss health bars, projectile landing markers, and hatching NPCs through assets. Targeted leaps require Hytale 0.6.7 or later.\n- **Ownership and tame-state systems**: use reusable builders and role-scoped policy for owner checks, protection rules, and companion behavior.\n- **Spawner, naming, and command items**: capture and respawn NPCs with metadata, name companions with custom items, and build command tools with radial and linked-panel support.\n- **Linked companion runtime**: manage loaded, unloaded, dead, and lost companions through a linked panel with recall, home, revive, and related flows.\n- **Progression systems**: add happiness, needs, breeding, life stage, and trait-driven variation through config-driven systems.\n- **Coop integration**: configured coops can accept eligible live companions or\n  canonical filled capture items and release the same saved companion again;\n  other coops retain their normal behavior.\n- **Durable population controls**: separate per-player limits for companions\n  out in the world and companions owned, plus role-defined group limits, count\n  every saved companion across unloads, capture items, rosters, coops, death,\n  travel, and restarts. Direct SimpleClaims checks can still limit breeding by\n  claim and apply its native tamed-companion damage rules.\n- **Advanced extension points when needed**: bridge into custom logic through hooks and optional integrations without giving up the higher-level framework.\n- **Stable integration data**: Public API 3.0 exposes companion profiles,\n  bonded companions, population groups, admission providers, and namespaced\n  profile extension data, including revision-fenced compare-and-set writes for\n  integrations that need restart-safe custom state. Command rosters, timed\n  summons, provisioning, and paid revival are configured through `Tw*Config`\n  assets instead of public APIs.\n- **Companion data in the world folder**: Tamework 5.0 saves companions as\n  plain files under `universe/Tamework/Companions`, so normal Hytale world\n  backups include them. There is no database.\n\n## Requirements and Upgrades\n- Tamework 5.0 requires Hytale server 0.6.0 or later.\n- Back up the world's `universe` folder before updating.\n- The first start on a 3.x or 4.x world imports all companion data\n  automatically before worlds load. The old database files are only read and\n  stay unchanged. A later release removes this importer, so 3.x and 4.x worlds\n  must run a 5.0.x release once before they update further.\n- 2.x worlds are not imported. Run Tamework 4.3.x once first, or start fresh\n  with `/tw persistence start-fresh`.\n- Mods that call the Tamework Java API need a version built for Public API 3.0.\n- See [World Migration for Server Admins](https://wiki.hytalemodding.dev/mod/alecs-tamework/world-migration-for-server-admins)\n  for the full upgrade guide.\n\n## What Integration Looks Like\nIntegrating Tamework is usually a content-authoring workflow, not a programming workflow. Mods can use it in two ways:\n\n### Required Dependency\n- Wire your desired Tamework behavior directly into your NPC, item, config, and other server-side assets.\n- Add configs for the Tamework systems you want to support.\n- Add Alec's Tamework as a required dependency when deploying to CurseForge.\n\n### Optional Dependency\n- Keep your base assets clean of any references to Tamework functionality.\n- Create asset patches under `Server/Patchwork/Patches` that add Tamework actions, interactions, configs, and other JSON-based behavior only when Tamework is installed. Use `Targets` for shared operations across several assets and `When.ModInstalled` for optional cross-mod gates. The legacy `Server/Tamework/Patches` root remains readable while Tamework is installed, but new integrations should use the neutral Patchwork root.\n- Add configs for the Tamework systems you want to support.\n- Declare Patchwork as a dependency for asset-only patch packs. Declare Alec's Tamework too when the patch uses Tamework macros or behavior.\n\n### Optional example asset pack\n\nThe Tamework plugin jar does not include sample NPCs, sample items, or sample\nprogression configs. This keeps a library-only installation dormant until a\ndownstream mod supplies matching assets.\nReusable framework media, including the Nametag and Soul Lantern asset\nclosures, remain in the main jar so dependent mods can reference them without\ninstalling the examples pack.\n\nBuild the optional examples with `./gradlew exampleAssetPack`. Install the\ngenerated `Alec's Tamework! Examples v<version>.zip` beside the Tamework jar\nand explicitly enable it only when you need the sample graph. The pack is\ndisabled by default, declares Tamework as a dependency, and can be omitted\nfrom production servers.\n\nIn both cases, no Java is required: install the optional example pack when you\nneed a starting point, then copy and adapt its assets. Enable the systems you\nwant through comprehensive configs, and polish. The full setup and\nimplementation details can be found in the wiki.\n\nAdvanced integrations should use the Public API for canonical profiles and\nnamespaced profile extension data instead of writing Tamework metadata or\ncompanion store files directly. Always check the relevant capability before using an\noptional API surface.\n\nTamework also builds one immutable runtime activation plan at startup. It\ninstalls no systems, feature listeners, or workers for an unused module. See [Runtime Activation](docs/Runtime-Activation.md) for\nautomatic evidence, restart-bound reloads, `/tw runtime status`, and the\nRuneteria/RuneProfessions activation contract.\n\nPlayer-facing Tamework config strings support `server.lang` keys. Built-in talents, traits, command labels, interaction messages, happiness labels, and major UI labels use language keys so translation packs can override copy without changing behavior assets.\n\n## Documentation\n- [Wiki Home](https://wiki.hytalemodding.dev/mod/alecs-tamework)\n- [Player Guides](https://wiki.hytalemodding.dev/mod/alecs-tamework/player-guides)\n- [Modder Documentation](https://wiki.hytalemodding.dev/mod/alecs-tamework/modder-documentation)\n- [Developer Documentation](https://wiki.hytalemodding.dev/mod/alecs-tamework/developer-documentation)\n- [HyDragon / API 3.0 Integration Guide](https://wiki.hytalemodding.dev/mod/alecs-tamework/hydragon-integration-guide)\n\n## Licensing\nTamework is licensed under the [GNU General Public License v3.0 with an attribution clause](LICENSE.txt). You may use, modify, and redistribute Tamework under GPLv3.\n\nDistributed versions and derivative works must credit \"Alec's Tamework!\" by Alechilles in their listing, description, or documentation.\n\n## Issue Reporting\nIf you run into a bug, integration issue, or behavior problem, report it in the Discord server:\n\nhttps://discord.gg/E8n8RgTTdq\n\n<H2>Telemetry</H2>\n<p><a href=\"https://www.curseforge.com/hytale/mods/alecs-tamework\">Alec's Tamework</a> uses <a href=\"https://wiki.hytalemodding.dev/mod/beacon/migrate-to-beacon-2-0\">Beacon</a> for its own crash, error, lifecycle, performance, and usage telemetry. The Patchwork runtime embedded in Tamework reports Patchwork operations through a separate hosted-only project.</p>\n<p>Tamework 5.0 no longer sends automatic persistence diagnostics or database attachments. Automatic events never attach save data or companion store files. Set <code>telemetry.enabled</code> to <code>false</code> in Tamework's global settings, or change Tamework's entry in <code>/beacon consent</code>, to opt out.</p>\n<p>Automatic aggregate Tamework and Patchwork telemetry does not include personally identifiable information and is used to diagnose issues and improve the mods. Reports you submit manually can include the contact text and server-log attachments you choose to send; review those fields and files before submitting.</p>\n<p>Tamework and Patchwork have independent consent entries, so disabling Tamework telemetry does not implicitly disable Patchwork telemetry. You may change either entry at any time in the `/beacon consent` menu.</p>\n<p>Alec's Tamework also reports anonymized active user numbers to <a href=\"https://hstats.dev/\">HStats</a> to track active user count summaries.</p>\n<br />\n","description":"A taming framework for Hytale that focuses on fast setup and giving modders reusable systems for companion NPCs. Add ownership, taming, capture/spawn, command tools, and rich NPC interactions without huge custom instruction trees in every role.","authorId":"69987b3019df001165db8aa9","author":"alechilles","imageUrl":"https://cdn.modtale.net/images/7bb0e3f8-f4da-4b65-95a4-e5a01d4f8207-cropped-image.png","bannerUrl":"https://cdn.modtale.net/images/45909520-37f9-49b8-a489-108fcd73d225-cropped-image.png","classification":"PLUGIN","tags":["API","Vanilla+","Mechanics","Functions","Survival"],"downloadCount":24,"favoriteCount":1,"repositoryUrl":"https://github.com/Alechilles/AlecsTamework","updatedAt":"2026-10-09T17:15:45.906313065","createdAt":"2026-02-27T09:50:50.197332036","license":"GNU GPL v3.0 w/ Attribution Clause","customLicenseOpenSource":true,"links":{"LICENSE":"https://github.com/Alechilles/AlecsTamework/blob/main/LICENSE.txt","DISCORD":"https://discord.gg/8PYZkb3qFT","WIKI":"https://wiki.hytalemodding.dev/mod/alecs-tamework"},"allowModpacks":true,"allowComments":true,"hmWikiEnabled":true,"hmWikiSlug":"alecs-tamework","galleryCarouselEnabled":false,"status":"PUBLISHED","canEdit":false,"isOwner":false},"metadata":{"mod":{"id":"019d8799-6a15-702a-80c7-a2f651a639ce","name":"Alec's Tamework!","slug":"alecs-tamework","description":"Taming framework for Hytale. Easily add advanced taming, breeding, needs, happiness, capturing/spawning, ownership, commands, and more to your custom NPCs.","visibility":"public","author":{"name":"Alec","username":"Alec","avatar_url":"https://wiki.hytalemodding.dev/storage/avatars/b9527532-e3c0-4dfd-aa81-12b94bbd5d9f.png"},"created_at":"2026-04-13T14:07:51.000000Z","updated_at":"2026-06-25T22:30:22.000000Z"},"pages":[{"id":"019d8799-e096-7085-9201-5a36d4903cf9","title":"Home","slug":"home","kind":"page","children":[]},{"id":"019d8799-e08a-7049-ba70-6cdace4e5a81","title":"Player Guides","slug":"player-guides","kind":"page","children":[{"id":"019d8799-e086-738c-9852-e112ccb2a357","title":"Companion Controls","slug":"companion-controls","kind":"page","children":[{"id":"019d8799-e0ef-7381-af8f-6c67b2c6db12","title":"Linked Panel Guide","slug":"linked-panel-guide","kind":"page","children":[]},{"id":"019d8799-e0ee-70ef-834c-403f96e4f1fa","title":"Command Radial and Controls","slug":"command-radial-and-controls","kind":"page","children":[]},{"id":"019d8799-e0f0-731e-b942-85224585825a","title":"Naming, Capture, and Command Items","slug":"naming-capture-and-command-items","kind":"page","children":[]}]},{"id":"019d8799-e087-723a-b7e2-e054282b6f7b","title":"Getting Started","slug":"getting-started","kind":"page","children":[{"id":"019d8799-e0f3-72a7-9469-50e72167e704","title":"What Tamework Is","slug":"what-tamework-is","kind":"page","children":[]},{"id":"019d8799-e0f1-720c-897b-1cf1749cb3d4","title":"Ownership, Taming, and Interaction Basics","slug":"ownership-taming-and-interaction-basics","kind":"page","children":[]}]},{"id":"019d8799-e088-7051-8509-dbf786b6c457","title":"Systems","slug":"systems","kind":"page","children":[{"id":"019fdcbd-bc28-711a-b6a2-612007d1dae0","title":"Scarecrow Spawn Suppression","slug":"scarecrow-spawn-suppression","kind":"page","children":[]},{"id":"019d8799-e0f5-70f7-a0a5-84072e24dc67","title":"Happiness, Needs, Breeding, and Traits","slug":"happiness-needs-breeding-and-traits","kind":"page","children":[]},{"id":"019d8799-e0f4-7031-ba2c-004422d39fcd","title":"Coops, Feed Troughs, and Shared Systems","slug":"coops-feed-troughs-and-shared-systems","kind":"page","children":[]}]},{"id":"019d8799-e089-7219-9cf7-ffe689d2f05c","title":"Troubleshooting and Glossary","slug":"troubleshooting-and-glossary","kind":"page","children":[{"id":"019d8799-e0f7-73cb-9c13-e578071d81cf","title":"Troubleshooting for Players","slug":"troubleshooting-for-players","kind":"page","children":[]},{"id":"019d8799-e0f6-708a-b1b2-68c1be00d344","title":"Player Glossary","slug":"player-glossary","kind":"page","children":[]},{"id":"01a10577-afd0-72ac-bc17-652166c25573","title":"World Migration for Server Admins","slug":"world-migration-for-server-admins","kind":"page","children":[]}]}]},{"id":"019d8799-e085-729f-b4a9-2954ad16f270","title":"Modder Documentation","slug":"modder-documentation","kind":"page","children":[{"id":"019d8799-e07d-7023-beb8-7b91f454032d","title":"Config Reference","slug":"config-reference","kind":"page","children":[{"id":"01a09827-0e80-7124-b121-2d03d4f6a9ce","title":"TwDynamicIconConfig Reference","slug":"twdynamiciconconfig-reference","kind":"page","children":[]},{"id":"019d8799-e09a-70f6-868c-5d429fe17974","title":"TwCoopConfig Reference","slug":"twcoopconfig-reference","kind":"page","children":[]},{"id":"019f81c2-afd0-70dc-99fa-6d3581952998","title":"TwDynamicAttachmentsConfig Reference","slug":"twdynamicattachmentsconfig-reference","kind":"page","children":[]},{"id":"019d8799-e09c-73c3-868b-7b9a82d2afd6","title":"TwGlobalConfig Reference","slug":"twglobalconfig-reference","kind":"page","children":[]},{"id":"019d8799-e099-72d3-80e4-c16851bd9373","title":"TwCompanionConfig Reference","slug":"twcompanionconfig-reference","kind":"page","children":[]},{"id":"019d8799-e0af-702f-8b3e-836110863f46","title":"TwInteractionConfig Reference","slug":"twinteractionconfig-reference","kind":"page","children":[]},{"id":"019fa63d-16ee-726c-8012-6c0060cc9a4d","title":"TwPopulationGroupConfig Reference","slug":"twpopulationgroupconfig-reference","kind":"page","children":[]},{"id":"019d8799-e0b4-70a5-9bec-41b2ffb1dbc0","title":"TwSpawnerConfig Reference","slug":"twspawnerconfig-reference","kind":"page","children":[]},{"id":"019d8799-e0b0-7163-9ba7-6bcba38e3402","title":"TwNameItemConfig Reference","slug":"twnameitemconfig-reference","kind":"page","children":[]},{"id":"019dab31-958a-704f-aa01-c4d9371fd3e8","title":"TwLevelingConfig Reference","slug":"twlevelingconfig-reference","kind":"page","children":[]},{"id":"019e4c50-d0ec-7392-a82b-35b0ff62d50e","title":"TwAttachmentDisplayConfig Reference","slug":"twattachmentdisplayconfig-reference","kind":"page","children":[]},{"id":"019d8799-e098-7240-a8b3-60996df2ec93","title":"TwCommandItemConfig Reference","slug":"twcommanditemconfig-reference","kind":"page","children":[]},{"id":"019dab31-958e-7215-b467-65f3f3cb36bc","title":"TwTalentConfig Reference","slug":"twtalentconfig-reference","kind":"page","children":[]},{"id":"019e1f7e-7eb1-7002-bc93-ff9c61c0b06b","title":"TwAttachmentMigrationConfig Reference","slug":"twattachmentmigrationconfig-reference","kind":"page","children":[]},{"id":"019f1152-6de5-7151-8c7b-73c286098475","title":"TwFoodConfig Reference","slug":"twfoodconfig-reference","kind":"page","children":[]},{"id":"019d8799-e09d-7102-9672-a8e8031ff4f5","title":"TwHappinessConfig Reference","slug":"twhappinessconfig-reference","kind":"page","children":[]},{"id":"019fb2e6-0e78-711a-8803-66dde48bee86","title":"TwCompanionMovementConfig Reference","slug":"twcompanionmovementconfig-reference","kind":"page","children":[]},{"id":"019d8799-e0b3-7094-b059-9205d27252af","title":"TwNeedsConfig Reference","slug":"twneedsconfig-reference","kind":"page","children":[]},{"id":"019fa63d-16e8-72da-aedb-982b714fee63","title":"TwCapturePolicyConfig Reference","slug":"twcapturepolicyconfig-reference","kind":"page","children":[]},{"id":"019d8799-e097-71f5-9834-204b813fd22d","title":"TwBreedingConfig Reference","slug":"twbreedingconfig-reference","kind":"page","children":[]},{"id":"019d8799-e0b6-7191-8922-73dba3c491fa","title":"TwTraitConfig Reference","slug":"twtraitconfig-reference","kind":"page","children":[]},{"id":"019d8799-e09b-710c-bee9-055db57e40df","title":"TwDebugConfig Reference","slug":"twdebugconfig-reference","kind":"page","children":[]},{"id":"019d8799-e0b2-73af-b4a0-3bf58d236bc2","title":"TwNamesConfig Reference","slug":"twnamesconfig-reference","kind":"page","children":[]},{"id":"019fa63d-16e5-73ba-bea3-3f76536b2356","title":"TwBondedCompanionRosterConfig Reference","slug":"twbondedcompanionrosterconfig-reference","kind":"page","children":[]}]},{"id":"019d8799-e07e-7342-89b5-aa1515ffd62b","title":"Optional Integrations","slug":"optional-integrations","kind":"page","children":[{"id":"019d8799-e0b7-710e-9b4f-e708c99c55ab","title":"Hooks, Bridges, and Optional Integrations","slug":"hooks-bridges-and-optional-integrations","kind":"page","children":[]},{"id":"019e5f61-4b5e-704f-9956-53f9ee1a6504","title":"Asset Patches","slug":"asset-patches","kind":"page","children":[]},{"id":"019e51b4-84cb-7124-8888-e47bf9bda6c7","title":"Asset Patch Operations","slug":"asset-patch-operations","kind":"page","children":[]},{"id":"019e51b4-84ca-70da-9ffe-42926287af2c","title":"Asset Patch Macros","slug":"asset-patch-macros","kind":"page","children":[]},{"id":"019e51b4-84ce-700a-b97f-8963bab3a4a7","title":"Asset Patch Workflow","slug":"asset-patch-workflow","kind":"page","children":[]},{"id":"019e51b4-84cc-706c-acc6-64dd56df0304","title":"Asset Patch Troubleshooting","slug":"asset-patch-troubleshooting","kind":"page","children":[]}]},{"id":"019d8799-e081-72ce-89b1-02e8037c6e5d","title":"Public API","slug":"public-api","kind":"page","children":[{"id":"019d8799-e07f-715a-8a2d-fec7bd31165c","title":"API Recipes","slug":"api-recipes","kind":"page","children":[{"id":"019d8799-e0b8-72ba-b55e-6f156a1a7fc8","title":"API Bootstrap and Capability Checks","slug":"api-bootstrap-and-capability-checks-recipe","kind":"page","children":[]},{"id":"019d8799-e0c5-7212-81b8-2ce3dc9eadde","title":"Increase Mob Happiness from Custom Interaction Recipe","slug":"increase-mob-happiness-from-custom-interaction-recipe","kind":"page","children":[]},{"id":"019d8799-e0c0-739d-acca-881fac253ce9","title":"Decrease Mob Happiness from Negative Event Recipe","slug":"decrease-mob-happiness-from-negative-event-recipe","kind":"page","children":[]},{"id":"019d8799-e0cf-72e0-a5c0-5844d5133283","title":"Set Hunger and Thirst from Custom Feeding Recipe","slug":"set-hunger-and-thirst-from-custom-feeding-recipe","kind":"page","children":[]},{"id":"019d8799-e0c3-72cc-98ba-065c3fc4547e","title":"Force Breeding Ready from Custom Ritual Recipe","slug":"force-breeding-ready-from-custom-ritual-recipe","kind":"page","children":[]},{"id":"019d8799-e0ce-71f9-b145-db9c1acc974f","title":"Reroll Traits and Show Values Recipe","slug":"reroll-traits-and-show-values-recipe","kind":"page","children":[]},{"id":"019d8799-e0ba-7025-bc1a-08dcfd828a3d","title":"Apply Attachment Preset from Custom UI Recipe","slug":"apply-attachment-preset-from-custom-ui-recipe","kind":"page","children":[]},{"id":"019d8799-e0bf-7065-badb-4fac08b157be","title":"Check the Owner Cap before Taming","slug":"check-population-cap-before-spawning-or-taming-recipe","kind":"page","children":[]},{"id":"019d8799-e0cc-7100-bd4b-eb73426b4d22","title":"Read Saved Home Position and Show a Waypoint Recipe","slug":"read-saved-home-position-and-show-a-waypoint-recipe","kind":"page","children":[]},{"id":"019d8799-e0bd-703a-afd2-6ea10da84b9a","title":"Check Command Link State before Running Feature Recipe","slug":"check-command-link-state-before-running-feature-recipe","kind":"page","children":[]},{"id":"019d8799-e0bc-7062-b64d-8c531426a14b","title":"Build Companion Inspector UI Card Recipe","slug":"build-companion-inspector-ui-card-recipe","kind":"page","children":[]},{"id":"019d8799-e0d1-71de-9fc0-ebec115be3dc","title":"Store Per-Mob Plugin State JSON Recipe","slug":"store-per-mob-plugin-state-json-recipe","kind":"page","children":[]},{"id":"019d8799-e0bb-702a-9b55-455c736dbaf1","title":"Auto-Register Companion on Capture Event Recipe","slug":"auto-register-companion-on-capture-event-recipe","kind":"page","children":[]},{"id":"019d8799-e0c9-708e-96e8-d9c9815b2f8d","title":"Pause Companion Jobs on Death or Lost Event Recipe","slug":"pause-companion-jobs-on-death-or-lost-event-recipe","kind":"page","children":[]},{"id":"019d8799-e0c8-725d-8886-fbe38b6d6edb","title":"Keep Companion Cache in Sync with Profile Changed Events Recipe","slug":"keep-companion-cache-in-sync-with-profile-changed-events-recipe","kind":"page","children":[]},{"id":"019e6f51-461a-71c4-8ffa-cba68c2ea116","title":"Credit External Skill XP from Companion XP Recipe","slug":"credit-external-skill-xp-from-companion-xp-recipe","kind":"page","children":[]},{"id":"019d8799-e0c1-7022-86dc-5b9ce0a293f2","title":"Enforce Ownership before Custom Command or Effect Recipe","slug":"enforce-ownership-before-custom-command-or-effect-recipe","kind":"page","children":[]},{"id":"019d8799-e0cd-7388-8003-db39f56cec5c","title":"Register Interaction Extensions in Plugin Lifecycle Recipe","slug":"register-interaction-extensions-in-plugin-lifecycle-recipe","kind":"page","children":[]},{"id":"019e0aae-17e3-720c-ba43-c7d69436746f","title":"Register Custom Trait Effect Key Recipe","slug":"register-custom-trait-effect-key-recipe","kind":"page","children":[]},{"id":"019d8799-e0c2-73b8-a2a4-01383d14d5e3","title":"Event Subscription Lifecycle Recipe","slug":"event-subscription-lifecycle-recipe","kind":"page","children":[]},{"id":"019d8799-e0ca-73b1-a0cc-40936dcdaf38","title":"Progression Mutation Status Handling Recipe","slug":"progression-mutation-status-handling-recipe","kind":"page","children":[]},{"id":"019d8799-e0c7-705a-8a6e-a0cc2072556e","title":"Interaction Extension Registration Recipe","slug":"interaction-extension-registration-recipe","kind":"page","children":[]},{"id":"019d8799-e0c4-71aa-8128-4712113c6b17","title":"In-Game API Self-Test Smoke Recipe","slug":"in-game-api-self-test-smoke-recipe","kind":"page","children":[]},{"id":"01a0607f-f4ef-71df-a0a3-545e2914b05b","title":"Register a Custom Command UI Recipe","slug":"register-a-custom-command-ui-recipe","kind":"page","children":[]},{"id":"01a0607f-f4ee-735f-9138-adc8105cdf72","title":"Register Custom Command HUDs Recipe","slug":"register-custom-command-huds-recipe","kind":"page","children":[]}]},{"id":"019d8799-e080-72f6-b142-c444b79aef8b","title":"API Reference","slug":"api-reference","kind":"page","children":[{"id":"019d8799-e0dc-721f-8fbd-21d1f9fdee8b","title":"Public API Overview","slug":"public-api-overview","kind":"page","children":[]},{"id":"019d8799-e0da-7169-999d-8c47a83847fb","title":"Profiles API Reference","slug":"profiles-api-reference","kind":"page","children":[]},{"id":"019d8799-e0d9-729d-abcb-724e05be1834","title":"Profile Data API Reference","slug":"profile-data-api-reference","kind":"page","children":[]},{"id":"019d8799-e0d2-729c-b5b1-f8dff6c03e9e","title":"Command Links API Reference","slug":"command-links-api-reference","kind":"page","children":[]},{"id":"019d8799-e0d8-72bf-bdff-925b2f520d9e","title":"Policies API Reference","slug":"policies-api-reference","kind":"page","children":[]},{"id":"019d8799-e0db-70d6-8304-8cf6ce56847d","title":"Progression API Reference","slug":"progression-api-reference","kind":"page","children":[]},{"id":"019d8799-e0d3-72cf-8083-75eddd353a09","title":"Config Reads API Reference","slug":"config-reads-api-reference","kind":"page","children":[]},{"id":"019d8799-e0d5-7143-a1af-8ea4eeae3a45","title":"Events API Reference","slug":"events-api-reference","kind":"page","children":[]},{"id":"019d8799-e0d4-71df-bca4-cce9527b280f","title":"Diagnostics API Reference","slug":"diagnostics-api-reference","kind":"page","children":[]},{"id":"019d8799-e0d7-72d3-96a1-7a4dfb6fbc7f","title":"Interaction Extensions API Reference","slug":"interaction-extensions-api-reference","kind":"page","children":[]},{"id":"019e0aae-17ef-71e5-84ac-61df205b1fcc","title":"Trait Effects API Reference","slug":"trait-effects-api-reference","kind":"page","children":[]},{"id":"01a0607f-f50d-739e-8397-56cfce4f6579","title":"Husbandry Outcomes API Reference","slug":"husbandry-outcomes-api-reference","kind":"page","children":[]},{"id":"019fa63d-16fa-7229-8ce3-fc0ac6819d86","title":"Capture Policy API Reference","slug":"capture-policy-api-reference","kind":"page","children":[]},{"id":"019fa63d-1706-72d2-a84c-d7a1c6e8e734","title":"Population Groups API Reference","slug":"population-groups-api-reference","kind":"page","children":[]},{"id":"01a10577-af9d-70a7-9825-024e7a9b08fa","title":"Admission Providers API Reference","slug":"admission-providers-api-reference","kind":"page","children":[]},{"id":"019fa63d-16f8-7102-8e73-1dae1409bd8b","title":"Bonded Companion API Reference","slug":"bonded-companion-api-reference","kind":"page","children":[]},{"id":"01a0607f-f509-709f-b56d-1515ca415203","title":"Command UI Renderer and Contributor API Reference","slug":"command-ui-renderer-and-contributor-api-reference","kind":"page","children":[]},{"id":"01a0607f-f507-73bc-bd6e-b217b317155e","title":"Command HUD Renderer and Contributor API Reference","slug":"command-hud-renderer-and-contributor-api-reference","kind":"page","children":[]},{"id":"01a0b775-f804-71f0-a224-1622cf863ac6","title":"Captured Item Display API Reference","slug":"captured-item-display-api-reference","kind":"page","children":[]}]}]},{"id":"019d8799-e082-732d-9380-6a011c6ee707","title":"Start Here","slug":"start-here","kind":"page","children":[{"id":"019d8799-e0e0-7017-b162-5dc808ec35f6","title":"Setup and Quick Start","slug":"setup-and-quick-start","kind":"page","children":[]},{"id":"019d8799-e0df-7387-a9ba-af3f08b22132","title":"Interaction Paths and Role Wiring","slug":"interaction-paths-and-role-wiring","kind":"page","children":[]},{"id":"019d8799-e0de-731a-88b3-55853c36655d","title":"Config Discovery, Resolution, and Inheritance","slug":"config-discovery-resolution-and-inheritance","kind":"page","children":[]}]},{"id":"019d8799-e083-708c-94b3-15113ba7361e","title":"System Integration","slug":"system-integration","kind":"page","children":[{"id":"019e4c50-d0fb-73df-a669-8a14b2562c1e","title":"Spawner Icon Generation","slug":"spawner-icon-generation","kind":"page","children":[]},{"id":"019d8799-e0e9-7042-a6e8-6133167dc5f6","title":"Spawner System Guide","slug":"spawner-system-guide","kind":"page","children":[]},{"id":"019d8799-e0e4-71ac-83fa-540bb7c8e352","title":"Naming System Guide","slug":"naming-system-guide","kind":"page","children":[]},{"id":"019d8799-e0e2-72b6-99e0-80fcee6a4a4f","title":"Command System and Linked Panel Guide","slug":"command-system-and-linked-panel-guide","kind":"page","children":[]},{"id":"019fa63d-1710-70bc-af5c-0eb36b64024b","title":"HyDragon Integration Guide","slug":"hydragon-integration-guide","kind":"page","children":[]},{"id":"019d8799-e0e5-7121-b092-a11df49926af","title":"Ownership Policy and Core Builders","slug":"ownership-policy-and-core-builders","kind":"page","children":[]},{"id":"019d8799-e0e7-727c-ae49-9091649bce34","title":"Progression Systems Guide","slug":"progression-systems-guide","kind":"page","children":[]},{"id":"019fe966-ab3a-7237-95ac-619bbf1981b5","title":"AvatarFlight NPC Integration Guide","slug":"avatarflight-npc-integration-guide","kind":"page","children":[]},{"id":"019d8799-e0e3-73f2-8126-554532986b6d","title":"Coop and Feed Trough Guide","slug":"coop-and-feed-trough-guide","kind":"page","children":[]},{"id":"019d8799-e0e8-7107-92c2-2b26caa6036d","title":"Projectile Combat and Hazard Interactions Guide","slug":"projectile-combat-and-hazard-interactions-guide","kind":"page","children":[]},{"id":"01a09827-0e8d-7169-ae69-bcb2a3126521","title":"Flight Formation Guide","slug":"flight-formation-guide","kind":"page","children":[]},{"id":"01a09827-0e8b-7129-85f5-d3beeaa91770","title":"Companion Follow Formation","slug":"companion-follow-formation","kind":"page","children":[]},{"id":"01a09827-0e8e-70b1-8d08-48cb20dfd9ff","title":"Ground Formation Guide","slug":"ground-formation-guide","kind":"page","children":[]}]},{"id":"019d8799-e084-71dc-868b-bc20b8df6180","title":"Testing and Diagnostics","slug":"testing-and-diagnostics","kind":"page","children":[{"id":"019d8799-e0eb-70e4-b722-4f967614e0e8","title":"In-Game API Self-Tests","slug":"in-game-api-self-tests","kind":"page","children":[]},{"id":"019d8799-e0ed-71c9-9332-3a22647053ae","title":"Tamework Settings UI and Persistence","slug":"tamework-settings-ui-and-persistence","kind":"page","children":[]},{"id":"019d8799-e0ea-70bd-85cf-d87a17c0ed43","title":"Debugging and Debug Commands","slug":"debugging-and-debug-commands","kind":"page","children":[]}]}]},{"id":"019d8799-e07c-724f-94cb-22b68a675418","title":"Developer Documentation","slug":"developer-documentation","kind":"page","children":[{"id":"019d8799-e078-704c-a4aa-555b96bc099d","title":"Core Architecture","slug":"core-architecture","kind":"page","children":[{"id":"019d8799-e08b-7077-bad3-84a6cf4ab5d3","title":"Architecture Overview","slug":"architecture-overview","kind":"page","children":[]},{"id":"019d8799-e08c-736b-ac53-3a7bdc46a211","title":"Bootstrap, Builder Registration, and Extension Points","slug":"bootstrap-builder-registration-and-extension-points","kind":"page","children":[]},{"id":"019d8799-e08d-73d7-baff-81ae64e0b220","title":"Config Loading, Registries, Inheritance, and Overrides","slug":"config-loading-registries-inheritance-and-overrides","kind":"page","children":[]}]},{"id":"019d8799-e079-7180-b8d6-e9ed3012a6e2","title":"Data and Persistence","slug":"data-and-persistence","kind":"page","children":[{"id":"019d8799-e08e-7018-817c-cc6324cde3ec","title":"Companion Store and Data Paths","slug":"persistence-sqlite-and-data-paths","kind":"page","children":[]}]},{"id":"019d8799-e07a-71ce-870e-2400a7e5ac7a","title":"Runtime Subsystems","slug":"runtime-subsystems","kind":"page","children":[{"id":"01a015d1-8cae-7291-ba77-9604d1aad5a9","title":"Runtime Activation","slug":"runtime-activation","kind":"page","children":[]},{"id":"019d8799-e091-714b-9564-f279472e5cfc","title":"Optimized Interaction Pipeline Internals","slug":"optimized-interaction-pipeline-internals","kind":"page","children":[]},{"id":"019d8799-e093-7012-991a-c7b9e654ac79","title":"Spawner Runtime Internals","slug":"spawner-runtime-internals","kind":"page","children":[]},{"id":"019d8799-e090-7266-8f1c-99a38f2590f3","title":"Naming Runtime Internals","slug":"naming-runtime-internals","kind":"page","children":[]},{"id":"019d8799-e08f-70c5-9b31-381f22ffe659","title":"Command Runtime and Linked Panel Internals","slug":"command-runtime-and-linked-panel-internals","kind":"page","children":[]},{"id":"019d8799-e092-72ca-b48d-621ffe7a27b0","title":"Ownership, Damage, and Progression Internals","slug":"ownership-damage-and-progression-internals","kind":"page","children":[]}]},{"id":"019d8799-e07b-7322-b0a8-4e05752f2a8b","title":"Tooling and Contribution","slug":"tooling-and-contribution","kind":"page","children":[{"id":"019d8799-e095-705e-ad5e-5532508a8790","title":"Integrations, Telemetry, and Build Workflow","slug":"integrations-telemetry-and-build-workflow","kind":"page","children":[]},{"id":"019d8799-e094-70df-af33-045c8361e143","title":"Command and Debug Internals","slug":"command-and-debug-internals","kind":"page","children":[]}]}]}]},"page":{"page":{"id":"019d8799-e096-7085-9201-5a36d4903cf9","title":"Home","slug":"home","kind":"page"},"content":"# Alec's Tamework Wiki\n\nAlec's Tamework is a framework mod for Hytale. It gives modders reusable systems for taming, ownership, capture and spawn items, command tools, linked companion UI, progression systems, coops, and related NPC behavior.\n\nTamework does not add a full gameplay expansion by itself. Players usually experience it through other mods that depend on it, while modders and developers use it as the underlying framework.\n\n## 1) Player Guides\n- [Player Guides](/mod/alecs-tamework/player-guides)\n- [Getting Started](/mod/alecs-tamework/getting-started)\n- [Companion Controls](/mod/alecs-tamework/companion-controls)\n- [Systems](/mod/alecs-tamework/systems)\n- [Troubleshooting and Glossary](/mod/alecs-tamework/troubleshooting-and-glossary)\n\n## 2) Modder Documentation\n- [Modder Documentation](/mod/alecs-tamework/modder-documentation)\n- [Start Here](/mod/alecs-tamework/start-here)\n- [Public API](/mod/alecs-tamework/public-api)\n- [API Reference](/mod/alecs-tamework/api-reference)\n- [API Recipes](/mod/alecs-tamework/api-recipes)\n- [System Integration](/mod/alecs-tamework/system-integration)\n- [Config Reference](/mod/alecs-tamework/config-reference)\n- [Testing and Diagnostics](/mod/alecs-tamework/testing-and-diagnostics)\n- [Optional Integrations](/mod/alecs-tamework/optional-integrations)\n- [HyDragon Integration Guide](/mod/alecs-tamework/hydragon-integration-guide)\n\n## 3) Developer Documentation\n- [Developer Documentation](/mod/alecs-tamework/developer-documentation)\n- [Core Architecture](/mod/alecs-tamework/core-architecture)\n- [Runtime Subsystems](/mod/alecs-tamework/runtime-subsystems)\n- [Data and Persistence](/mod/alecs-tamework/data-and-persistence)\n- [Tooling and Contribution](/mod/alecs-tamework/tooling-and-contribution)\n\n## Recommended Starting Points\n- Players using a Tamework-powered mod should start with [Getting Started](/mod/alecs-tamework/getting-started) and [Companion Controls](/mod/alecs-tamework/companion-controls).\n- Server admins updating a world from Tamework 3.x or 4.x should read [World Migration for Server Admins](/mod/alecs-tamework/world-migration-for-server-admins) first.\n- Modders adding Tamework to a project should start with [Start Here](/mod/alecs-tamework/start-here) and [Public API Overview](/mod/alecs-tamework/public-api-overview).\n- Developers working inside the Tamework codebase should start with [Core Architecture](/mod/alecs-tamework/core-architecture) and [Data and Persistence](/mod/alecs-tamework/data-and-persistence).\n\n> [Screenshot Placeholder: Linked companion panel open beside the command radial menu]\n\n\n","parent":null,"children":[]},"pageSlug":"home"}