1.1
Compatibility
Changes
๐ v1.1 - The Terrain Snapping Update
This update introduces one of the most highly requested features for packet-based entity movement: Vertical Terrain Snapping! You can now configure your NPCs to respect changes in ground elevation, preventing them from awkwardly clipping through the floor on uneven paths.
๐ New Features
Terrain Snapping: NPCs can now seamlessly walk up stairs, over half-slabs, across bridges, and down hills. The plugin actively scans the terrain above and below the NPC and dynamically snaps their Y-coordinate to the solid ground.
Per-NPC Toggles: Because some NPCs might be ghosts, birds, or floating spirits, terrain snapping is disabled by default. You can toggle it on a per-NPC basis using the new command.
๐ป Command & Config Additions
New Command: /npcpatrol terrain <npc_name> <true/false>
Config Update: Terrain preferences are now permanently saved in the config.yml alongside the NPC's waypoints. Your NPCs will remember if they are supposed to follow the ground after a server restart.
Tab-Completion: The in-game autocomplete system has been fully updated to support the new terrain argument and boolean (true/false) suggestions.
โ ๏ธ Important Note for Server Owners
Terrain snapping handles elevation (Y-axis) only.
Because these are packet-based NPCs and do not use the heavy, lag-inducing Minecraft AI pathfinding engine, they still walk in straight lines between waypoints.
If you place a giant wall directly between Point A and Point B, the NPC will not magically walk around it. You must place your waypoints around corners to properly guide your NPCs past large obstacles!
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:3LADGFoe:uyZdsDDW"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:3LADGFoe:uyZdsDDW"
}

