2.4.0
Compatibility
Changes
🧠 SENTIENTMOBS v2.4.0 | THE WORLD THINKS NOW
A YUGE update bringing smarter AI, living villages, leadership, diplomacy, performance improvements, and 20+ fixes.
🧠 Improved AI & Pathfinding
- Improved pathfinding for approximately 25% of supported mobs.
- Better destination tracking, obstacle avoidance, stuck detection, route recalculation and recovery.
- Added configurable AI Distance Tiers.
- Added async pathfinding support for complex mob navigation.
- Improved State Machine safety, behaviour priorities and entity lifecycle handling.
🏘️ Villages Come Alive
- Persistent Village IDs, names, biomes, centres, Community Chests and Signs.
- Automatic biome-aware Village Name generation with collision protection.
- Added Village-to-Village Diplomacy:
NEUTRAL•ALLIED•AT_WAR - Added experimental village warfare.
- Improved village persistence and loading safety.
👑 Village Leadership
Villages now have recognised leaders.
- Persistent Village Leader identity.
- Leadership driven by the existing Council system.
- Automatic leader replacement when a leader is removed or becomes invalid.
- New leadership states:
NORMAL•ALERT•DEFENDING•HOSTILE_RESPONSE•DIPLOMATIC - Integrated with Defence, Diplomacy, Memory, Personality, Squads and Iron Golems.
- Added
VillageLeaderChangeEvent. - Added
/sentientmobs village info.
⚙️ Performance & Configuration
- Configurable AI tier ranges through
performance.ai-tiers. - Added configuration validation and warnings.
- Improved hot-reload behaviour without unnecessarily restarting active AI state.
- Reduced unnecessary village scans and persistence operations.
- Improved async task lifecycle and shutdown safety.
- Added configurable villager dialogue reply timing.
🧑🌾 Villager Improvements
- Smarter profession-aware villager name generation.
- Improved
/talkpermission handling. - Improved villager registration, lifecycle handling and error reporting.
🛠️ Developer Tools
- Added developer AI debugging tools.
- Inspect state machines, behaviours, priorities, targets, squads and pathfinding.
- Improved diagnostics for AI and village systems.
🐛 Bug Fixes
Fixed 20+ issues across:
AI • Pathfinding • Memory • Villages • Leadership • Configuration • Commands • Scheduling • Thread Safety • Entity Lifecycle • Update Checker
Including:
activeEntitiesmemory leaks- Duplicate update-checker execution
- State Machine NPEs
- World-unload handling
- Unsafe entity movement
- Duplicate Iron Golem behaviour registration
- Configuration inconsistencies
- Reload failures
- Stale Village Leader state
- Leadership authority conflicts
- Unnecessary YAML writes
- Partial village-load data loss
- Async task cleanup
- Command permission mismatches
- Fragile update-checking behaviour
- Non-deterministic behaviour priorities
🔧 Configuration
performance:
ai-tiers:
tier1-range:
tier2-range:
tier3-range:
pathfinding:
async-pathfinding:
village:
leadership:
enabled: true
decision-interval: 100
📦 Persistence
Village identity, leadership, diplomacy, names, signs and locations are persisted safely across restarts, with improved migration and recovery handling.
SENTIENTMOBS 2.4.0
Smarter mobs. Living villages. Real leadership. Diplomacy. Better performance. Experimental warfare.
The world thinks now.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:8no5Rtgr:TPJxy0Tk"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:8no5Rtgr:TPJxy0Tk"
}

