
VillageAI
Intelligent village defense system. Villages centered on bells automatically detect nearby villagers. Friendly players gain reputation by trading. Hostile players lose reputation by attacking villagers. When hostile players are nearby reputation drops belo
2.2.0
Compatibility
Changes
[2.2.0] - 2026-03-16 - Bug Fixes & Stability Release
๐ Bug Fixes
- Projectile Damage Exploit โ
onDamagenow correctly identifies the player as the attacker when using projectiles (arrows, tridents, etc.), ensuring reputation penalties are applied for ranged attacks on villagers. - Golem Persistence โ Golem UUIDs are now saved in
VillageSnapshotand restored on server restart.VillageManagernow re-registers restored golems, preventing "golem leaks" and ensuring they continue to defend the village after a restart. - Reputation Spam Exploit โ Added a 5-second cooldown to villager interactions to prevent players from spamming right-click to instantly reach maximum reputation.
- Startup Race Condition โ Added a
loadingflag toVillageManagerto prevent the creation of duplicate/empty village objects while data is still being loaded asynchronously from disk.
๐ Performance & Stability
- Atomic File Replaces โ
AsyncVillageStoragenow usesFiles.movefor atomic renames, further reducing the risk of file corruption during save operations. - Thread Safety โ Enhanced thread safety in
VillageSnapshotandVillageManagerto prevent potentialConcurrentModificationExceptionduring data restoration.
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:QkbM4VXn:gl22go3s"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:QkbM4VXn:gl22go3s"
}
