Release Date: 2026-06-29 Type: Major Feature Release Priority: HIGH
Summary
A major expansion of pet intelligence and life. Pets now show natural signs of life, react to their environment, express deeper moods, and form a living social ecosystem with other pets. Every new system is independently configurable and Folia/fork compatible (autonomous systems run via the global scheduler and are skipped on Luminol, which has no scheduler support).
New Features
Idle Behaviors
Calm, unoccupied pets now display lifelike micro-behaviors: stretching, looking around, grooming, yawning, tail wagging, chasing particles, sunbathing, and watching their owner. Configurable under behavior.idle.*.
Environmental Awareness
Pets react to their surroundings - species-specific responses to rain and storms, comfort shifts across cold/hot/pleasant biomes, and curiosity toward nearby friendly animals. Configurable under behavior.environment.*.
Complex Emotions
Ten richer emotional states (Nostalgic, Conflicted, Contentment, Pride, Grief, Melancholy, Homesick, Restlessness, Anticipation, Shame) are derived from a pet's existing stats - no new data is stored. Shown in the conversation menu and via the %smartpets_complexemotion% placeholder. Configurable under visual-communication.complex-emotions.*.
Multi-Pet Social Dynamics
Pets that spend time near each other form relationships - friends, packs, or rivals - with morale effects, persisted across restarts.
Cross-Pet Learning
Curious pets can pick up behavioral tendencies from nearby pets, feeding the reinforcement-learning model that shapes future behavior.
Server-Wide Pet Registry
Pets earn reputation from heroic actions (defending and assisting their owner, successful hunts) and can be promoted to "Legendary" status, optionally broadcast to the server.
Area-Based Pet Communities
Groups of pets gathered in the same area form a community with an emergent leader (alpha) and personality-based supporting roles.
Predictive & Proactive Behavior
Pets anticipate near-future needs - hunger, tiredness, the urge to play, and incoming storms - and act ahead of time (seeking the owner, signaling needs, showing eagerness).
Pet Legacy System
When a pet dies it leaves a lasting record; notable pets (high level or legendary) drop a memorial item at the death site.
Seasonal & Event Behavior
Subtle, atmospheric mood shifts based on the real-world season, plus festive Halloween and Christmas windows.
Configuration
New, fully documented sections: behavior.idle., behavior.environment., visual-communication.complex-emotions., and the complete ecosystem. tree. Each system has its own enable toggle and tuning values. Existing configurations continue to work unchanged.
Compatibility
Paper / Spigot / Purpur / Folia. On Luminol (no scheduler support) the autonomous systems are skipped; core pet functionality is unaffected.
Compatibility: Minecraft 1.16.5 - 26.2
Installation
No configuration migration needed - everything is backward compatible.
- Stop your server
- Replace SmartPets-2.2.jar
- Start your server
- Enjoy the improvements!
Fixed a bug that caused entities to survive server restarts.
Fixed a double-spawn race condition bug at startup.
Fixed an issue where, when a player disconnected, the entity remained in the world without being cleared. Upon reconnecting, a new entity would spawn without removing the previous one.
Added an orphaned entity cleanup at startup that, upon server startup, searches all worlds for SmartPets-marked entities that are not tracked on the active map and removes them.
Changelog v2.1.1
Fixed:
Changed:
- Threading compatibility with Folia and Luminol servers
- IllegalStateException: Thread failed main thread check errors
- Repeated errors during pet spawn and behavior evaluation
- Maven warning about relocated MySQL Connector artifact
- RuntimeException: Async scheduling not supported on Luminol in AdvancedEmotionDisplayManager
NEW
- Plugin initialization failure on Luminol
NEW
Technical:
- Improved Luminol detection in SchedulerCompat
- Duplicate entity cleanup now skipped on region-threaded servers
- Added threading protection to all getCustomName() calls
- Updated MySQL dependency from mysql:mysql-connector-java to com.mysql:mysql-connector-j
- MySQL Connector version updated from 8.0.33 to 8.4.0
- Made SchedulerCompat.isLuminol() public for consistent checks
NEW
- Standardized all Luminol checks across the codebase
NEW
- AdvancedEmotionDisplayManager now skips cleanup task on Luminol
NEW
- Added SchedulerCompat.usesRegionThreading() method
- Enhanced error handling for cross-region entity access
- Graceful fallbacks for threading-related errors
- Modernized Maven dependencies to use current artifact coordinates
- Robust scheduler compatibility checks before task creation
NEW
- Fallback from async to sync schedulers when async not supported
NEW
SmartPets v2.1.0 - Multi-Language Support System
Release Date: 2026-01-10 Type: Feature Release Priority: MEDIUM
New Features
Multi-Language Support System
Overview: SmartPets now supports multiple languages with automatic fallback to English.
Key Features:
Configuration:
- Language Files Folder: New langs/ folder structure for language files
- Spanish Translation: Complete Spanish translation (~450+ keys) included out of the box
- Automatic Fallback: If a translation key is missing, automatically uses English
- Backwards Compatible: Legacy lang.yml file still works for existing installations
- Hot Reload: Change language without server restart using /petadmin reload
- Easy Extension: Add new languages by creating langs/<code>.yml files
YAML:# In config.yml general: language: "es" # Options: "en" (English), "es" (Spanish)
File Structure:
YAML:plugins/SmartPets/ ├── config.yml ├── lang.yml (legacy, for backwards compatibility) └── langs/ ├── en.yml (English - default/fallback) └── es.yml (Spanish - complete translation)
Technical Details:
Improved Reload Command
- Thread-safe message caching with ConcurrentHashMap
- HEX color code support (&#RRGGBB)
- Placeholder system preserved ({pet_name}, {player}, etc.)
- Automatic extraction of bundled language files on first run
Overview: The /petadmin reload command now performs a complete configuration reload.
Bug Fixes
Fixed: Shulker Box Interaction Blocked
Issue: Players could not interact with Shulker Boxes (open, take items) when SmartPets was installed.
Root Cause: GUI event handlers were using overly broad title matching (contains()) that could accidentally match other inventory types. Additionally, handlers weren't checking the inventory type before canceling events.
Solution:
Fixed: MySQL Connection Timeout Issues
- Added InventoryType.CHEST check to all GUI handlers - Shulker Boxes use SHULKER_BOX type
- Changed title matching from contains() to more specific patterns (startsWith(), endsWith(), equals())
- Applied fix to all affected GUI classes
Issue: "No operations allowed after connection closed" errors when using MySQL storage, especially after periods of inactivity.
Root Cause:
Solution:
- Connection validation only checked isClosed() but didn't test if connection was actually usable
- MySQL server-side timeouts weren't handled properly
- No automatic retry mechanism for connection failures
- Enhanced Connection Validation: Added isConnectionValid() method that tests connections with SELECT 1
- Improved MySQL URL: Added robust connection parameters:
- connectTimeout=60000 & socketTimeout=60000 - Longer timeouts
- maxReconnects=3 & initialTimeout=2 - Automatic reconnection
- allowPublicKeyRetrieval=true & serverTimezone=UTC - Compatibility
- Automatic Retry Logic: Both executeAsync() and queryAsync() now retry up to 2 times on connection errors
- Connection Refresh: Forces new connection creation when stale connections detected
SmartPets v2.0.3 - MySQL Storage Fix
Release Date: 2026-01-01 Type: Bug Fix Release Priority: HIGH
Bug Fixes
Critical: MySQL Storage Not Working
Problem: Users could not use MySQL storage. The plugin showed Invalid storage type 'MYSQL' and fell back to YAML.
Root Causes:
Solution:
- MYSQL was missing from the PetDataHandler.StorageType enum
- MySQL driver URL was obsolete (Oracle changed the artifact ID)
- PetDataHandler was not integrated with the database storage system
- Added MYSQL to the storage type enum
- Updated MySQL driver from deprecated mysql-connector-java-8.0.33 to mysql-connector-j-8.4.0
- Integrated DatabaseManager and DatabasePetStorage into PetDataHandler
- Added automatic fallback to YAML if database connection fails
Critical: MySQL Foreign Key Constraint Error (errno: 150)
Problem: Users with MySQL storage in shared databases got the following error:
[SmartPets] Failed to initialize database: Can't create tablegame_global.pets
(errno: 150 "Foreign key constraint is incorrectly formed")
Root Causes:
Solution:
- Foreign keys in MySQL require exact matching of charset, collation, and column types
- When using a shared database with other plugins, the players table might already exist with different charset/collation
- MySQL's foreign key validation is stricter than SQLite's
Why This Works:
- Removed foreign keys from MySQL tables - Referential integrity is now enforced at application level
- Added table name prefixes for MySQL: smartpets_players, smartpets_pets, smartpets_pet_stats, smartpets_pet_skills
- Explicit ENGINE=InnoDB and utf8mb4 charset for maximum compatibility
- SQLite retains foreign keys as it handles them without issues
- Prefixed table names avoid conflicts with other plugins using the same database
- Removing FK constraints eliminates charset/collation/type mismatches
- Application-level integrity validation is a common pattern in Minecraft plugins
- Same data integrity, but works in all MySQL configurations
Migration Notes
For New Installations
- No action required, tables are created with correct structure automatically
For Existing MySQL Users with errno 150
- Stop your server
- Option A (Recommended): Drop the failed SmartPets tables:
DROP TABLE IF EXISTS pet_skills;
DROP TABLE IF EXISTS pet_stats;
DROP TABLE IF EXISTS pets;
DROP TABLE IF EXISTS players;
- Replace SmartPets-2.0.1.jar with SmartPets-2.0.3.jar
- Start your server (new prefixed tables will be created)
For Existing MySQL Users WITHOUT Errors
- Data migration from old table names is NOT automatic
- If you had working MySQL storage, keep using v2.0.2 OR migrate data manually:
-- Only if upgrading from working v2.0.1 to v2.0.3
RENAME TABLE players TO smartpets_players;
RENAME TABLE pets TO smartpets_pets;
RENAME TABLE pet_stats TO smartpets_pet_stats;
RENAME TABLE pet_skills TO smartpets_pet_skills;
Compatibility
Environment Status MySQL 5.7+ Fully supported MySQL 8.0+ Fully supported MariaDB 10.3+ Fully supported Shared databases Fully supported (prefixed tables) SQLite Unchanged (full FK support) YAML Unchanged
What Changed for End Users
- MySQL now works in shared databases without conflicts
- No configuration changes needed - same storage-type: "MYSQL" setting
- Data structure unchanged - same columns, just different table names for MySQL
- SQLite users unaffected - same behavior as before
Upgrade Instructions
Note: No configuration changes required. Existing data is preserved.
- Stop your server
- Replace SmartPets-2.0.1.jar with SmartPets-2.0.3.jar
- Delete old driver if present: plugins/SmartPets/lib/mysql-connector-java-*.jar
- Start your server (new driver downloads automatically)
SmartPets v2.0.1 - Improved Pet Selection & Major Bug Fixes
Release Date: 2025-01-23 Type: Recommended Update (Critical Fixes) Priority: HIGH
Key Improvements
You can now interact with pets using their Name, UUID, or just a Prefix of either!
Smart Pet Selection
- Before: You often had to use the exact random UUID (e.g., /pet select 3e687eaf) or the command would fail.
- Now: Just type /pet select Fido (or whatever your pet is named). It just works.
- Bonus: Tab completion now correctly suggests names that are actually valid.
HEX Colors & Custom Prefixes
- HEX Support: Use modern, vibrant colors in all messages! Format: &#RRGGBB (e.g., &#FF5733MyPet).
- Custom Prefixes: You can finally customize or remove the plugin prefix. Check lang.yml for new options like prefix, prefix.error, etc.
Bug Fixes
- Fixed Pet Selection (Critical): Resolved a critical issue where commands would incorrectly error out (claiming "Pet died" or "Not found") when using pet names.
- Fixed Message Placeholders: Messages like "Are you sure you want to release {arg0}?" now correctly show the pet name/details instead of the raw variable text.
- Fixed Console Spam: Debug messages ("Pet is active...", "Loaded emotions...", etc.) are now properly hidden when debug: false is set in config.yml.
- Fixed Tab Completion: Suggestions in commands like /pet select and /pet release are now accurate.
Compatibility
- Minecraft Versions: 1.16.5 - 1.21.x
- Software: Spigot, Paper, Purpur, Folia (Experimental)
- Java: Java 17 or higher required.
- HEX Colors: Requires Minecraft 1.16+ client and server.
� How to Update
Note: No configuration reset is required. You can optionally check lang.yml to customize the new prefix settings.
- Stop your server.
- Delete the old SmartPets-2.0.jar.
- Upload the new SmartPets-2.0.1.jar.
- Start your server.
SmartPets v2.0 - Memory & Intelligence Revolution
Major Features
Persistent Memory & Intelligence Core
- Social Memory System: Pets record player interactions, trust/fear deltas, and location sentiment (safe vs. danger zones) with LRU limits and scheduled snapshots.
- Event Timeline: Key moments (battles, celebrations, reinforcing actions) are stored per pet with configurable limits and retention policies.
- Reinforcement Learning: Positive/negative feedback and owner preferences now bias the BehaviorEngine, visibly altering AI decisions over time.
- Dynamic Personality Evolution: Archetypes evolve based on memory and learning inputs; /pet personality surfaces traits, history, and latest adjustments.
Player & Admin Experience
- Memories Dashboard: /pet memories UI consolidates social contacts, pinned locations, event log, and direct reinforcement controls.
- Command Upgrades: /pet personality, /petadmin debug learning, and enhanced /pet info provide immediate insight into behavioral changes.
- Actionable Admin Debug: New /petadmin debug integrations summarises runtime status of ModelEngine/MythicMobs bridges, mappings, and adapters.
External Integrations (Optional)
Config-Driven & Safe: Integrations are opt-in, degrade gracefully when dependencies are missing, and expose granular logging categories.
- ModelEngine 4 Adapter: Attaches custom models, emotion-driven animations, and trigger-based states with automatic fallback to vanilla entities.
- MythicMobs Adapter: Applies Mythic profiles or triggers configured skills in response to SmartPets events (summon, level-up, feedback signals).
Configuration & Tooling
config.yml now includes integrations.modelengine.models and integrations.mythicmobs.profiles maps for per-type setup of models, animations, mob IDs, and skill triggers.
Sample configuration (per type):
integrations:
modelengine:
enable: true
auto-fallback: true # Gracefully revert to vanilla entities if something fails
models:
WOLF:
model-id: "smartpets:wolf_guardian" # ModelEngine asset namespace:id
idle-state: "idle" # Looping state when calm
walk-state: "walk" # State while following the owner
emotion-animations:
HAPPY: "tail_wag" # Emotion → animation mapping
ANGRY: "battle_ready"
SCARED: "cower"
trigger-animations:
summon: "summon_pop" # Triggered after SmartPets spawns the pet
event.levelup: "celebrate" # Triggered on level-up
feedback.feeding_success: "eat_treat" # Triggered after positive feeding feedback
mythicmobs:
enable: true
profiles:
WOLF:
mob-id: "SmartPetsGuardian" # MythicMob ID defined in MythicMobs configs
mob-level: 10.0 # Optional level value passed to MythicMobs
apply-to-entity: true # Replace vanilla AI/attributes with Mythic profile
trigger-skills:
summon: "SP_GuardianSpawn" # Activates the custom spawn skill
event.levelup: "SP_GuardianCelebrate" # Celebratory ability on level-up
feedback.petting_happy: "SP_GuardianPurr" # Fired when the owner pets the companion
README features integration quick-start and release verification checklists (diagnostics, bStats monitoring, fallback advice).
All new debug outputs are fully localised via lang.yml, ensuring translation completeness.
Metrics & Monitoring
- bStats charts added: modelengine_integration_state, modelengine_mapping_density, mythicmobs_integration_state, mythicmobs_profile_density.
- Logging system refreshed with rate-limited categories (LogCategory.INTEGRATIONS, etc.) to keep production logs actionable.
Upgrade Notes
- No manual migrations required; memory/learning subsystems self-initialise and respect existing storage backends (YAML/SQLite/MySQL).
- Keep integrations disabled if unused; SmartPets automatically reverts to vanilla behaviour when ModelEngine/MythicMobs are absent.
- After enabling integrations, run /petadmin reload followed by /petadmin debug integrations to validate configuration before going live.
SmartPets v1.9.6 – Personality & Communication Polish
Highlights
- Visual feedback feels alive: emotion displays now refresh automatically, show localized context messages, and respect your server’s day/night cycle.
- Conversations make sense in every language: all contextual strings moved to lang.yml, with proper tab-completion logic tied to in-game time.
- Pets develop real personalities: interactions now influence trait profiles, archetypes appear in /pet stats, and data persists across reloads.
- Translations everywhere: physical state indicators, conversation prompts, and feedback messages are fully localizable and emoji-ready.
- Overall tuning: improved emotion impact calculations, streamlined hunger/rest tips.
