Skip to content

Changelog

Missing translations and unreadable characters. Not tested in game yet.

  • All nine languages are complete. 143 texts were English for Spanish, French, Italian, Polish, Brazilian Portuguese, Russian and Turkish players: the compendium (tabs, filters, status chips, buttons, stat rows, reroll tooltips, copies list, 3D stage hints), the pickup filter window, the HUD (pet kind, kills, recovery, revive hint), the combat pet messages (defeated, recovering, owner away, revived), the item restore messages, the four “all” scroll names, the reroll-all and refine-all windows and the module and egg messages. They are now translated, with short words where the window has little room.
  • The chat message after rerolling a stat (“Rerolled Damage: 5 › 8”) and the /kspetadmin maxout reply used an arrow that no game font has, so players saw a ”?”. Both use ”›” now.
  • “You need the pet item in your inventory” was garbled in Polish, Portuguese, Russian and Turkish. All four are correct now.
  • German texts use proper umlauts, the egg is called “Ei”, and several Polish and Turkish typos are fixed.
  • /kspetadmin answers in the admin’s own language. Usage lines, help, errors, the results of every subcommand and the inspect output were English text in the plugin; they are now in the language files of all nine languages. The console gets the server’s default language. Command syntax, pet type IDs and instance IDs stay as they are.
  • A failed give explains the reason with the same text as the admin window (for example “The inventory of Steve is full, nothing was created.”).
  • The reasons a restore can fail (“their inventory is full”, “they still have this pet’s item”, …) are shown in the viewer’s language, in /kspetadmin restore and in the admin window’s Replace item.
  • /kspetadmin list shows the rarity in the admin’s language.
  • Version 18. All nine languages now have the same 498 texts (before: 409 in English and German, 266 in the other seven). See Localization.

Status page in the KyuubiSoft Panel. Not tested in game yet (boot-tested with and without the panel plugin).

  • Pets page on the panel’s “Mod Status” page: when the panel plugin KyuubiSoftAPI (2.1 or newer) is installed, Pets shows a status page there: active companions (collector and combat pets out, players on a mount, players with a companion, loaded pet types), a table per world, the companions that are out right now (player, pet, kind, level, world; first 100), the module switches, and warnings when the pet database did not start, a game system failed to register or no pet types are loaded.
  • Two admin actions on that page, only for panel accounts with the permission to run mod admin actions and recorded in the panel’s audit log: Reload configuration (same as /kspetadmin reload, asks for confirmation first) and Remove orphaned pet NPCs (same as /kspetadmin cleanworld; summoned pets stay).
  • Pet events for the panel: pet_level_up (player, pet type, new and previous level) and config_reloaded reach the panel’s event stream, so panel webhooks and event actions can react to them.
  • KyuubiSoftAPI is an optional dependency. Pets runs exactly as before without it.
  • Tile in the /ksadmin hub: with KyuubiSoft Core 2.8.0 or newer installed, the pet admin window appears as a tile in Core’s “KyuubiSoft Management” hub. It opens with ks.pet.admin; a player without that permission gets a message in their own language.
  • KyuubiSoft Core is an optional dependency now: Pets still runs without it, and with Core installed, Core loads first.
  • The shared language system follows Core 2.8.0: it honours the server’s default player language and the “players may choose” switch, and language choices are no longer lost when several KyuubiSoft mods save them at the same time.
  • Localization version 17.

Bug fixes for removing pets, death protection, the mount page and several config keys. Not tested in game yet.

  • Removing a pet now really removes it. /kspetadmin remove and Remove in the admin window only took the pet off the player’s cached list; its database record and its item stayed, so using the item brought the pet back, while the confirmation said it was gone. Now every copy of the item becomes void (a copy in a chest or with another player crumbles when used), every online player who has it sends it home and loses the item (with a message), and the database record is deleted. If the database cannot be written, nothing is removed and the admin gets the reason. See Commands.
  • Death protection works when the world drops everything on death (“Drop All”). Pet eggs, Battle Runes and Mount Horns now stay in their slots in every death mode, also with KyuubiSoft Item Control’s death rules and drop prevention and with KyuubiSoft Graveyard (pet items no longer end up in the gravestone). Everything else follows the world’s death rules and those mods as before.
  • /kspet combat showed the collector pet’s level, XP and kills instead of the combat pet’s.
  • The mount page (/kspet mount) summoned the mount at the clicked position in the list of all mounts, not the one shown, and paged through the wrong list. Clicks and paging now use the list the page shows. The page also needs the mount’s horn in your inventory now, like /ksmount summon and the compendium.
  • Summoning a combat pet by right-clicking its Battle Rune now applies its stats as buffs right away (before, only with the next level-up). Dismissing or swapping through the rune removes them.
  • PetDespawnedEvent now fires whenever a summoned pet leaves while the server runs (dismiss, swap, death, logout, world change, item drop, admin remove, cleanup); not for the pets cleared on server shutdown. See API & Events.
  • Max out said “best values” in the admin window. It sets the max level and fills every free stat slot, keeping existing stats; the window and /kspetadmin maxout now say exactly that.
  • /kspetadmin help now lists cleanworld, dbreload and dbflush.
  • hudPosition and hudLayout in config.json were never read. They are now the HUD default for players who never picked their own. Players with an existing pet file keep the setting saved in it.
  • Pets created in the admin window join the recipient’s pet list right away, like pets from /kspetadmin give.
  • maxPetsEverywhere (default false): with true, maxPetsPerPlayer also stops hatching a blank egg, Battle Rune or Mount Horn into a new pet and creating a pet in the admin window, not only /kspetadmin give. See Configuration.
  • combatBalance.levelUpCombatStatsOnly (default false): with true, stats a combat pet unlocks through a natural level-up come from the combat stats only, like its first stats and rerolls.
  • Servers without KyuubiSoft Core get both keys written into their existing config.json on the first start; values already in the file are kept.
  • petDespawnOnDisconnect and xpSources.passivePerMinute still have no effect; they are now marked as unused. Pets are always sent home on logout, and pets get no XP over time.
  • Version 16: 5 new texts in all 9 languages (pet limit, removed pet messages, admin window errors) and the new “Max out” message.

/kspetadmin without arguments now opens one admin window, Pet Management, in the KyuubiSoft “Goldfiligran” look. The console still gets the command list, and /kspetadmin help shows it in game. /kspetadmin creator (alias create), /kspetadmin lootluck and the new /kspetadmin players open the window on that section. Reload reloads the config, pet types, stat table and languages without closing the window. See Admin Panel.

  • Create pet (replaces the old Pet Creator): pet list with search and module filter, level, nickname and recipient (empty = yourself, otherwise any online player in any world). The stat rows follow the rarity: as many rows as the rarity rolls, its unlock levels, only stats from the stat pool, and only combat stats for combat pets. Values are typed in display units (5 = 5 %); each row shows the stat’s range, the value at the chosen level and a warning when the value is above what the rarity can roll. Roll rolls like a natural pet, Best values sets the best quality with every stat from level 1 and the max level.
  • Blacklist (replaces the old loot luck window): 8 quick picks (weapons, armor, tools, potions, food, ores, bars, gems) with example icons and the number of items each one really hits on your server; your own patterns with a live hit count while typing; remove one pattern or all of them.
  • Player pets (new): the online players and their pets with level, module, rarity and status (active, ready, recovering, item missing). Per pet: set level, give XP, reroll stats, max out, revive a defeated combat pet, replace a lost item and remove the pet.
  • The quick toggles of the old blacklist window hit almost nothing. *_Weapon_* matched 7 template items instead of 245 weapons (weapons are called Weapon_Sword_Iron); armor, tools, consumables and resources had the same problem. A blacklist that still holds the old patterns shows a banner with their real hit counts and an Update button that replaces them with what they meant. Nothing changes until an admin clicks it.
  • The old creator offered speed_bonus, which is not in the stat pool, and every stat for combat pets.
  • Creating a pet for a player with a full inventory (or who just left the world) no longer leaves a pet without item.
  • /kspetadmin addxp could put another pet’s buffs into the collector slot, write its level onto the active pet and roll non-combat stats for combat pets. Admin XP now goes straight to the chosen pet.
  • /kspetadmin setlevel, addxp, reroll, maxout and remove now run in the owner’s world; before, level-up effects and the item tooltip update were skipped.
  • Two admins changing the loot luck blacklist at the same time from different worlds could corrupt it.
  • Numbers in the admin window use your language’s decimal separator; 5,5 and 5.5 both work.
  • A second click is blocked while an action still runs in another world, so a double click on “Create” no longer creates two pets.
  • Version 15: 178 new admin window texts in all 9 languages (the old admin windows were English only).
  • Natural level-ups of combat pets still roll from the full stat list, while new combat pets and every admin roll use combat stats only. (1.11.1 adds the switch combatBalance.levelUpCombatStatsOnly.)
  • /kspetadmin lootluck, /kspetadmin creator and /kspetadmin inspect hand opened nothing (thread error).
  • /kspetadmin setlevel, reroll and maxout did not update the egg, rune or horn tooltip of players outside the default world.
  • /kspetadmin inspect <player> only found players in the default world. It now finds every online player and also works from the console.
  • /kspetadmin cleanup now removes pets standing in another world in their own world.
  • Reroll dice in the compendium. Every unlocked stat of an owned copy has a small dice. A click uses one reroll scroll from your inventory and rerolls that stat (Pet Reroll Scroll for collector pets and mounts, Battle Reroll Scroll for combat pets). The dice above the stat column rerolls all unlocked stats for one Reroll All Scroll after one confirmation. Dice are gold while you have a matching scroll and grey otherwise. Works for every owned copy, summoned or not.
  • Next-level preview. Stats that grow with the level show the value after the next level-up next to the current one; combat pets show it for damage too.
  • Hidden stats are listed. Rolled stats that are still locked show as “Hidden stat” with their unlock level.
  • /kspetadmin restore <player> [type | id] gives a player a replacement for a lost egg, battle rune or mount horn with level, stats and name intact. Without a pet argument it lists the pets whose item is missing. The player must be online and have room in the inventory.
    • Restores cannot duplicate pets: every older copy of the item becomes void. It crumbles when used, no longer counts as owned, and a pet summoned through it is sent home. Items from before 1.10.0 stay valid until their pet is restored for the first time.
    • /kspetadmin inspect hand shows the item generation and whether the item is a void copy. Every restore is logged with the admin’s name.
  • Rerolling a stat could apply the pet’s buffs although the pet was not active.
  • The item-loss guards did not recognise current pet items. The active pet was sent home whenever any egg, rune or horn left the inventory, and drops of current pet items were ignored. Both now check the right item.
  • Version 13. New texts in English and German; the other languages show English for them.
  • The Goldfiligran textures now come from the shared KyuubiSoft UI kit. They are registered once per server and shared with other KyuubiSoft mods (for example Bank 2.6.0). Nothing extra to install, no visual change.

/kspet now opens the Pet Compendium. Set ui.compendium to false in config.json to keep the classic menu. See UI Pages.

  • List: all pet types of the selected tab (Collector pets, Combat pets, Mounts, with “owned / total” counters; tabs of disabled modules are hidden), sorted by rarity, with the filters All / Owned / Missing. Pets you do not own are dimmed, pets you own several times show a count badge.
  • Live 3D stage: the selected pet’s model inside the window. Drag to rotate, scroll to zoom, slow auto-rotation. Nothing is spawned in the world.
  • Details: level and XP, HP and recovery time of combat pets (with mortality on), stats, and for pets you do not own their base stats and a “How to get it” text.
  • Your copies: every copy is its own card with its own level, stats, HP and recovery. Summon, dismiss, rename (any pet type, 1 to 24 characters) and revive per copy.
  • HUD settings moved into the compendium header, and owned collector copies have a button that opens the pickup filter for exactly that copy.
  • Redesigned pet HUD: one card per active pet with item icon and rarity ring, level, name in rarity colour, HP bar (combat pets with mortality on), XP bar, buffs and collected items or kills. A defeated combat pet keeps its card with a live recovery countdown.
  • Redesigned pickup filter (/kspet filter) in the same look, translated into English and German.
  • config.json → ui: compendium (true), lockedPets ("visible" or "hidden"), previewTilt (12), previewSpinSpeed (18). Servers without KyuubiSoft Core get the block written into their config on the first start.
  • Pet types: optional obtainHint (the “How to get it” text) and previewScale (0 = automatic).
  • The pet menu could summon combat pets and mounts although that module was disabled.
  • Opening the pet menu could lose up to petDbFlushIntervalSeconds of XP of the summoned pet and reset the HP and recovery of combat pets.
  • The pickup filter’s close button did nothing for players without a collector pet.
  • Localization version 12. Existing language files are backed up and replaced once on the first start.
  • The 3D stage shows models in their rest pose (no animation).

Combat pets were immortal and could farm bosses while their owner stood AFK. This release adds three independent switches in config.json → combatBalance. All of them are off by default, so a server that does not touch the config keeps the old behaviour. See Combat Pets.

  • Combat pets can be defeated (combatBalance.mortality.enabled).
    • Real HP: baseHealth at level 1, healthPerLevel per level above 1, plus the pet’s Max Health stat. Pet types can override both via combatStats.baseHealth / combatStats.healthPerLevel.
    • Only hits from hostile NPCs count; fall damage, drowning, the owner, other pets and (unless playerDamage is true) other players never hurt a combat pet. A pet that is attacked fights back.
    • Taunt: every pet hit has a tauntChance (default 25 %) to draw the target’s attention to the pet.
    • A defeated pet disappears and needs deathCooldownMinutes (default 15) to recover. The cooldown is stored in the database and survives relogs, world changes and restarts.
    • Optional XP penalty on defeat (xpLossPercent, default 0; never drops a level).
    • Out of combat the pet regenerates regenPerSecond HP (default 2) after regenDelaySeconds (default 10) without damage. Damage carries over between summons.
    • Pet HP is shown in the HUD and in /kscombatpet stats, which also lists recovering pets.
    • Defeated pets are never treated as killed mobs: no drops, no kill rewards, no death message.
  • Battle Pet Revival Scroll (Battle_Revive_Scroll): right-click to revive the most recently defeated combat pet. Only used up when a pet was revived. No crafting recipe, like the other pet scrolls.
  • /kspetadmin revive <player> ends the recovery of all defeated combat pets of a player.
  • Pet hits through Hytale’s damage system (combatBalance.damageThroughPipeline): armor and resistances reduce pet damage, invulnerable boss phases block it, and other damage plugins see the hit. Kill rewards of other plugins still do not go to the owner for pet kills.
  • AFK protection (combatBalance.requireOwnerActivity): combat pets stop fighting when their owner has neither turned the camera nor attacked for ownerInactivitySeconds (default 120). Knockback or water pushing the player does not count as activity.
  • Combat pets earned no XP and no kill count for their own kills; only kills where the owner landed the last hit counted.
  • /kscombatpet stats showed the collector pet instead of the combat pet.
  • A combat pet dismissed in the middle of a fight left its combat state behind.
  • Combat pets no longer chase other players’ pets or mounts.
  • Localization version 10. Existing language files are backed up (*.json.backup-v<old>) and replaced once; copy your own translations back from the backup.
  • The pet database gets two new columns (downed_until, health_fraction), added automatically.
  • Servers without KyuubiSoft Core get the combatBalance block written into config.json (all switches off).
  • Plugin manifest: author is now KyuubiDDragon, and the description is the pets one.
Section titled “Recommended settings against AFK boss farming”
"combatBalance": {
"damageThroughPipeline": true,
"requireOwnerActivity": true,
"ownerInactivitySeconds": 120,
"mortality": {
"enabled": true,
"baseHealth": 100.0,
"healthPerLevel": 5.0,
"tauntChance": 0.25,
"deathCooldownMinutes": 15,
"regenPerSecond": 2.0,
"regenDelaySeconds": 10,
"xpLossPercent": 0.0,
"playerDamage": false
}
}
  • Rebuilt against the final Hytale 0.7.0 release (Update 7). No functional changes.
  • Collector pets fetch dropped items again (broken since Hytale 0.6). Pets stopped following while an item lay nearby and idled at the spot where they were summoned. Now the pet walks to the item, picks it up and follows you again; if the item disappears first, the pet returns at once. It also gives up an item when you walk more than 15 blocks away or change the pickup filter so the item no longer qualifies. Pets now start following in worlds without any dropped items, too.
    • The fetching uses KS_Pet_Follow_Role. Custom pet types with a different NPC role still follow but do not fetch items.
  • /kspetadmin give could report success without the player receiving anything (players outside the default world). The item is now delivered in the player’s own world, and the success message only comes once the item is in the inventory.
  • A failed give no longer uses up a pet slot. The pet is only created after a successful delivery; otherwise the admin is told why (inventory full, player not in a world, error).
  • A given pet is the pet the player gets. Before, the first right-click of a given egg created a second, freshly rolled pet.
  • /kspetadmin give now hands out a rune for combat pets and a horn for mounts (it always gave the egg item).
  • The Pet Creator delivers the item in the target player’s own world as well.
  • Empty pet records left behind by earlier gives are not removed automatically. Find them with /kspetadmin inspect <player> and remove one with /kspetadmin remove <player> <instance-id>.
  • Built for Hytale Update 7 (0.7.0-pre.5.1). The container check for block XP (no XP for breaking chests and crates, no XP or Loot Luck for chest contents) works on the new block storage with the same rules.
  • Pet death protection was missing on servers where Item Control is installed but its drop prevention module is disabled. Item Control is now declared as an optional dependency so it always loads first.
  • Rebuilt against Hytale 0.6.3. No functional changes.
  • Rebuilt against the Hytale 0.6.0 release. Required: the release protocol differs from the pre-release builds.
  • Built for Hytale 0.6.0 (Update 6). Mandatory update: older jars do not load on 0.6.0.
  • Command permissions follow the Update 6 model: the player commands are open and check ks.pet.user.* themselves, /kspetadmin requires ks.pet.admin.

These fixes were listed as unreleased in May 2026 and ship with this version.

  • Severe lag when mining many blocks at once or felling large trees is fixed. Every XP gain used to write to the database, rescan the inventory and refresh every online player’s tooltips. Plain XP now only updates memory and the HUD; the expensive work runs on level-ups and deliberate actions (reroll, rename, summon).
  • New petDbFlushIntervalSeconds (default 30): the active pets are written to the database periodically, so a crash loses at most about 30 seconds of XP.
  • Mounts sometimes failed to spawn with Unable to handle non-spawned entity: KS_Mount_Walk_S<n>_Role. The plugin now retries with the base mount role.
  • Leftover mount NPCs with a speed other than 1.0 were never cleaned up; cleanup now covers all pet and mount roles.
  • Collector pets kept running back to their owner and never went to dropped items.
  • Disconnecting while mounted could leave a frozen copy of the mount in the world.
  • /kspetadmin give and the Pet Creator warn when the target’s inventory is full.
  • Built against the Hytale server release 2026.05.26. No functional changes.
  • Update for Hytale 0.5.0.
  • Fixed: /kspet, /ksmount, /kscombatpet and the self-target /kspetadmin reroll and maxout refused to run with “This command is for players only” on Hytale prerelease 2026.05.21.
  • Pet item tooltips show the pet itself: hovering an egg, rune or horn shows the pet’s nickname, level, rarity and its unlocked stats instead of the default item text. Locked stats stay hidden until they unlock. The tooltip updates after rerolls, refines, level-ups and renames.
  • The pet HUD moved to the new HUD API of Hytale prerelease 2026.05.21 (HUD key ks.pets.tracker).
  • Fixed: using pet items and scrolls from a hotbar slot other than the first could fail on Hytale prerelease 2026.05.15 and later.
  • Fixed pets overwriting drops.
  • Fixed: items you dropped yourself and picked up again kept an internal “dropped by player” marker, which stopped them from stacking and from being salvaged. Picking them up now removes the marker.
  • Fixed using items after they were collected (same fix as 1.3.15).
  • Fixed using items after they were collected.
  • Fixed the integration with gravestone mods.
  • Fixed the integration with gravestone mods.

A series of fixes that close the chest-stash dupe path against pet pickup XP, the items-collected counter, and the Loot Luck duplication roll. All three effects now sit behind a single !playerDropped gate, so collecting your own dropped loot is invisible to pet progression.

  • Container-break dupe closed. New PetContainerBreakMarkerSystem listens on BreakBlockEvent and marks every ItemStack in the broken ItemContainerBlock (chest, crate, …) as player-dropped before Hytale’s drop pipeline (ItemContainerSystems.OnAddedOrRemoved.dropAllItemStacks → ItemComponent.generateItemDrops) spawns the entities. Two redundant marker channels (BSON metadata stamp + 5-min itemId tracker) — the itemId tracker is the load-bearing one because the BSON stamp can be lost during the drop pipeline’s stack copy. Place loot in a chest, wait an hour, smash the chest: pet collects without XP, counter, or Loot Luck.
  • Container blocks no longer grant block-break XP. PetBlockBreakXpHandler now skips blocks with an ItemContainerBlock component. Smashing a chest is not a mining activity; this also closes a chest-XP-farm path (place chest, smash, repeat).
  • pet.itemsPickedUp and totalItemsCollected moved behind the !playerDropped gate. Previously the two counters were incremented unconditionally on every successful pickup, even though XP and Loot Luck were already gated. Now collecting a Q-drop, a death drop, or a chest contents tick produces no progression effect at all.
  • Q-drop and death-drop marker systems shipped together. PetPlayerDropMarkerSystem (BSON marker on DropItemEvent.PlayerRequest) and PetPlayerDeathMarkerSystem (RefChangeSystem<DeathComponent>, ordered between PlayerDropItemsConfig and DropPlayerDeathItems) cover the manual Q-drop and death-drop paths. Markers are stripped on respawn so Keep-Inventory mode does not leave BSON-tagged items that would break crafting.

Admin-configurable item-id blacklist that blocks Loot Luck duplication for matched items. Independent from the Pickup Filter (which is per-player and controls whether the pet collects at all) — the blacklist only suppresses the duplication roll, the pet still picks up and the player still gets the item once. Useful for de-valuing common drops (Dirt, Stone) and high-tier gear (Tools, Weapons) that should never duplicate.

  • Storage: data/loot_luck_blacklist.json. Dedicated file rather than a section inside config.json to avoid clobbering parallel admin edits when the UI live-saves.
  • Pattern syntax: case-insensitive. Plain patterns (Dirt) match as substring. Patterns with * (*_Tool_*, Ore_*) treat * as .*. Compiled Pattern[] cache rebuilt on every load/add/remove/toggle/clear/reload, so admin UI edits hit the next pickup tick without a server reload.
  • Admin UI: new /kspetadmin lootluck opens a page with six quick-toggle buttons (Tools / Weapons / Armor / Food / Ores / Resources), a custom-pattern input, a paginated list of active patterns with per-row delete, and Clear All. Every mutation live-saves to disk.

Initial release of the KyuubiSoft Pet System with 3 modules and 48 pet/mount types.

Three independently toggleable modules via config.json:

  • Pickup Pets (collector) — 26 types. Miniature companion NPCs that follow the player and automatically collect nearby items. Configurable pickup filters with presets and blacklist/whitelist modes.
  • Combat Pets (combat) — 13 types. Always-aggressive battle companions with floating damage numbers, attack animations, and per-entity animation sets.
  • Mounts (mount) — 9 types. Instant summon via Mount Horn item, native engine position sync (player.setMountEntityId), F-key dismount, configurable speed and health per mount type.
  • 11-stat pool: damage_bonus, max_health, pickup_radius, xp_bonus, stamina_regen, mana_regen, crit_chance, armor_bonus, loot_luck, thorns, life_steal
  • Rarity-based stat slots: uncommon (2), rare (3), epic (4), legendary (5)
  • Stats unlock progressively at level thresholds defined per rarity
  • Quality range scaling per rarity (legendary can exceed base maximum at 1.2x)
  • Same stat type can appear up to 3 times per pet
  • Combat pets roll from a restricted combat-only stat pool
  • Reroll Scroll — re-rolls both stat type and value randomly
  • Refine Scroll — keeps stat type, re-rolls value only
  • Separate scrolls for pickup pets (Pet Reroll Scroll, Pet Refine Scroll) and combat pets (Battle Reroll Scroll, Battle Refine Scroll)
  • Scroll usage requires the stat to be unlocked and a pet to be summoned
  • Player-configurable position: 6 presets (top-left, top-right, middle-left, middle-right, bottom-left, bottom-right)
  • Player-configurable layout: vertical or horizontal
  • Server defaults set in config.json, players override via /kspet menu
  • Displays pet name, level, XP progress, items collected, and active buff indicators
  • Pet Menu — Owned pets grid with active pet info, HUD settings, 5 pet slots per page with pagination
  • Pet Collection — Overview of all pet types with ownership status, 6 entries per page
  • Bestiary — Discovery tracker with highest level and discovery date, 5 entries per page
  • Filter — Pickup filter rule management with presets, 12 rules per page
  • Reroll — Stat reroll interface for pickup and combat pets
  • Refine — Stat refine interface for pickup and combat pets
  • Mount Page — Mount selection and summoning, 3 slots per page
  • Gamemode change protection: Follow target auto-refreshes when gamemode changes to prevent orphaned NPCs
  • Drop guard: Dropping a pet egg, battle rune, or mount horn automatically dismisses the associated pet/mount
  • Orphan NPC cleanup: Periodic sweep + on-join check + manual admin commands to remove stale pet NPCs
  • Startup/shutdown cleanup: forceRemoveAllKSRoleNpcs() with CountDownLatch on server start/stop
  • Level-scaled buffs applied to the pet owner
  • Proper buff stacking fix (no duplicate application)
  • Buffs reapply automatically on level-up
  • Position sync: player.setMountEntityId(networkId) — native engine sync for all players
  • Animation sync: ECS MountAnimationSyncSystem with playAnimation(), MovementStates+Velocity sync, keepAliveTicks hysteresis
  • Walk/Run detection: Uses MovementStates flags only (not Velocity — oscillates per tick)
  • Clean dismount: Native NPCMountSystems handles player state, entity removed via UUID-lookup (500ms delayed)
  • NPCMountComponent: Interactable set together with NPCMountComponent (OnAdd compatibility)
  • 52 item definitions total: pet eggs (26), battle runes (13), mount horns (9), scrolls (4)
  • Auto-generated item templates for custom pet types (written to item-templates/ when a pet type’s summon item is missing from server content)
  • English (en-US) and German (de-DE) included
  • 74 localized keys covering all user-facing strings
  • Localization version 6
  • Full admin command suite via /kspetadmin
  • Player commands via /kspet (aliases: pet, pets)
  • Combat pet commands via /kscombatpet
  • Mount commands via /ksmount
  • Placed items (flowers, furniture) no longer picked up by pets
  • Combat pets no longer use the pickup system
  • Items go to Storage first (not Hotbar) to avoid animation flicker
  • Filter works without active pet (first collector pet as fallback)
  • “Press F to interact” prompt removed from pets and mounts
  • Adjusted model scales for 8 pets
  • Standalone plugin — no dependencies on other KyuubiSoft mods required
  • File-first config pattern with JAR fallback
  • Auto-save with configurable interval and dirty-flag tracking