Glymera Cats

Cats and kittens as loyal companions for Hytale. Craft a Cat Spawner from raw fish to summon one of 20 coat varieties. They follow you, defend you in combat with real damage, and persist across server restarts.

File Details

GlymeraCats-2.0.0.jar

  • R
  • Apr 22, 2026
  • 595.47 KB
  • 47
  • Early Access

File Name

GlymeraCats-2.0.0.jar

Supported Versions

  • Early Access

GlymeraCats - Changelog

v2.0.0 (2026-04-22)

New Features

  • Real cat sounds (replaces Leopard-Snow placeholders): 4 meow, 2 hiss, 1 purr variants (CC0 from BigSoundBank) shipped as OGGs in the asset pack. Three new SoundEvents: SFX_GlymeraCat_Meow, SFX_GlymeraCat_Hiss, SFX_GlymeraCat_Purr.
  • Pet and feed via F-key (Interact): empty hand → hearts + purr. Raw meat → heal +200HP, item consumed, hearts + purr. Only works on cats the player owns.
  • No more hit damage on own cats: DisableDamageGroups: ["Player", "Self"] fully blocks player damage — no HP loss, no knockback, no hit particles. Client-side swing animation and click sound remain visible (not preventable server-side).

Changes

  • Idle sounds are now per-cat and independent: random 90–150s cooldown per cat instead of a 20s global tick firing all cats in sync (prevents chorus effect). Owner now counts as a listener — previously cats only meowed for strangers.
  • Range for idle sounds raised from 8 to 16 blocks.
  • Combat hiss: plays once on combat entry plus every 8–12s during active combat (was every 20s).
  • Bite-meow removed — combat audio now runs only through the combat hiss scheduler.
  • Low-HP distress call (<20% HP) is now a meow instead of a purr (more appropriate).
  • Hearts particle fixed: uses "Hearts" instead of the missing "Merchant_Sold".

Technical Details

  • Custom NPC action GlymeraCatsPetOrFeed registered via NPCPlugin.registerCoreComponentType() (analogous to GlymeraMerchant's OpenMerchantShop). Role JSONs extended with InteractionInstruction using sensor HasInteracted and actions LockOnInteractionTarget + GlymeraCatsPetOrFeed.
  • PlayerInteractEvent does NOT fire for NPCs — the correct path is custom action + state machine in the role. Useful finding for future pet plugins.
  • Static singleton GlymeraCats.INSTANCE so the static action class can reach plugin state.
  • Per-cat cooldowns via ConcurrentHashMap<String, Long> (nextMeowAt, nextCombatHissAt) — no more global scheduler interval; tick checks cooldowns individually.
  • Gson config backfill for new fields (meowIntervalMinMs/MaxMs, combatHissIntervalMinMs/MaxMs) — old v1.0.0 configs get defaults populated on load.
  • Legacy CatInteractSystem (damage-based) is still in the code but never fires due to DisableDamageGroups — effectively dead code.

v1.0.0 (2026-04-18)

New Features

  • Initial release: 1:1 clone of GlymeraDogs with Cat + Kitten instead of Dog + Corgi.
  • Two types: adult Cat (appearance Cat), juvenile Kitten (appearance Kitten). Both use previously dormant Hytale assets from Common/NPC/Pets/.
  • 20 color variants: 10 cat coats (Brown, Chestnut, Amber, Rusty, …) + 10 kitten variants (Coat_Collar motif).
  • Command /gcat with sub-commands: spawn, list, come, call, dismiss, name, remove, status, preview, spawnpick, variants.
  • Spawner block GlymeraCats_SpawnerBlock with fish recipe (Food_Fish_Raw + Life Essence) on the Alchemybench.
  • UI page CatPage.ui with CatCard.ui, interactive (Call/Dismiss/Release via buttons).
  • Call/Dismiss, follow logic, combat systems (Defend, SelfDefense), 100 cat + 100 kitten names.

Technical Details

  • Package de.glymera.cats, main class GlymeraCats.
  • 4 ECS systems: CatDefendSystem, CatSelfDefenseSystem, CatInteractSystem, CatSpawnerPlaceSystem.
  • Color variant solution (after several dead ends): multi-appearance with 22 model JSONs plus per-variant textures generated from a grayscale template (target color × pixel brightness with feature-preserve for eyes/nose/white areas). RandomAttachmentSets and GradientId do not work for Cat/Kitten models.
  • Placeholder sounds: SFX_Leopard_Snow_Alerted and SFX_Leopard_Snow_Hurt (replaced in v2).