1.2
Compatibility
Changes
π v1.2 - The Advanced Pathing & Immersion Update
This massive update turns the plugin from a simple movement utility into a more highly customizable, immersive patrol engine. I have overhauled the pathing mathematics, introduced per-NPC configurations, and added dynamic behaviors to make your worlds feel truly alive.
π New Features
- Smooth Turns: Say goodbye to robotic, sharp points! You can now enable "smooth" mode, which calculates curving paths around your waypoints.
- Continuous Looping Patrols: Instead of strictly ping-ponging back and forth (A β B β C β B β A), you can now set routes to continuously loop (A β B β C β A).
- Waypoint Waiting & Dynamic Scanning: NPCs can now be configured to pause for a set amount of seconds upon reaching a waypoint. You can set a global default, or assign specific wait times to individual waypoints (e.g., walk right through points A and B, but wait 10 seconds at point C). Pair this with Dynamic Scanning, and your NPCs will actively look around while they stand guard!
- Interactive Player Tracking: When a player right-clicks an NPC, the NPC doesn't just freeze, it dynamically turns its head to track and look at the player's eyes for the entire duration of the pause, making them feel like living characters. The math dynamically adjusts to the scale of your NPC, ensuring giants and tiny creatures look right at your face.
- Per-NPC Speeds: The global speed setting has been removed. You can now configure individual walking speeds for every single NPC.
- Customizable Interaction Pauses: The pause duration when a player clicks an NPC is now completely configurable. Change the duration on a per-NPC basis, or disable the click-to-pause feature entirely.
π» Command & Config Additions
Command Restructure: All commands have been standardized to a cleaner, per-NPC format: /npcpatrol <action> <npc_name> [args]
New Commands & Toggles:
/npcpatrol speed <npc_name> <number>(e.g., 0.2)/npcpatrol wait <npc_name> <seconds> [waypoint_index](Leave index blank for default, or specify an index to override a single point)/npcpatrol interact <npc_name> <true/false>/npcpatrol interacttime <npc_name> <seconds>/npcpatrol smooth <npc_name> <true/false>/npcpatrol scan <npc_name> <true/false>/npcpatrol loop <npc_name> <true/false>
System Updates:
- Config Migration: The
config.ymlnow saves all of these new settings directly under each specific NPC's profile. - Expanded Tab-Completion: The autocomplete system fully supports all new commands, automatically suggesting valid numbers, waypoint indexes, and
true/falsebooleans depending on the context.
β οΈ Important Notes for Server Owners
Command Syntax Change: If you are updating from v1.1, note that the /npcpatrol speed command now requires an NPC name before the number, as speeds are no longer global!
Smooth Turns & Loops: For the mathematical spline generator to create beautiful, smooth curves or perfect loops, an NPC's path must have a minimum of 3 waypoints.
Native "Turn to Player" Conflict: Ensure that FancyNpcs' native turn_to_player setting is set to false for any NPC assigned to a patrol route. If the native tracking is left enabled, the base plugin and this movement addon will constantly fight over the NPC's head position packets. This will cause severe, rapid head stuttering both while the NPC is walking and when a player clicks them. Use this addon's built-in interaction pause and tracking instead!
A Note on "Smooth" Routing Stutter: Packet-based NPCs do not benefit from native Minecraft client-side interpolation (the magic that makes standard zombies and players look perfectly smooth when they walk). Because the smooth toggle mathematically generates dozens of tight "micro-waypoints" to simulate a curve, your client may occasionally "stutter" or rigidly snap the NPC as it rounds a corner at high speeds. This is a normal limitation of manipulating packets rather than real AI. If the visual stutter bothers you, simply disable smooth routing for that specific NPC!
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:nFrWLugU"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:3LADGFoe:nFrWLugU"
}

