
AdvancedNPCs999
A comprehensive Minecraft plugin designed to empower server administrators with advanced control over Non-Player Characters (NPCs). Create, customize, and manage intelligent NPCs that enhance your server's environment and player interactions.
1.0.3
Compatibility
Changes
Added
- Added click and attack detection that works on every supported server version, so interactions always trigger
- Added name tags above NPCs with full colour code and hex colour support
- Added the ability to hide an NPC's name tag while keeping the NPC visible
- Added a separate display name for an NPC, so the name shown above it can differ from its internal name
- Added multi-line floating text above NPCs with an adjustable height
- Added clickable dialogue options that can continue a conversation, run a command, or display extra text
- Added a per-NPC interaction permission, so only players with that permission may interact
- Added a per-NPC allow list, so specific players can be granted access regardless of permissions
- Added interaction conditions: line of sight, sneaking required, a required item held, and a per-NPC cooldown
- Added a full editor menu that manages every NPC setting from one place
- Added equipment management for the off hand alongside the main hand and armour
- Added waypoint listing and removal
- Added three patrol styles: repeat, back and forth, and walk once then stop
- Added a separate pause and speed for patrol routes
- Added a particle preview that highlights an NPC's route
- Added automatic, timestamped backups of all NPC data with a configurable number kept
- Added manual backups, exporting NPCs to a file, importing NPCs from a file, and a one-step undo
- Added NPC health, configurable attack damage, and an invulnerability option
- Added a choice of what happens when an NPC is defeated: come back after a delay, or stay hidden
- Added an option to drop an NPC's equipment when it is defeated
- Added defeat and respawn announcements
- Added an option to give NPCs an actual fight when guarding, including attacking whatever threatens the guarded player
- Added PlaceholderAPI support, exposing NPC counts, names, positions, health, state and more
- Added a configurable message text system so every player facing message can be reworded, translated and coloured
- Added new configuration options for total NPC limits, maximum range, spawn delay on join, respawn delay, backup behaviour, backup retention and debug output
- Added a new permission set covering viewing, modifying, editing, saving, reloading, backups and debug output
- Added a fallback for the invisible entities used for floating text so they are never saved into the world
- Added a single download that runs on every supported server version, so there is no longer a choice to make when installing
Fixed
- Fixed interactions never firing on some supported versions, which made right-click, left-click and proximity triggers unreliable
- Fixed guarding NPCs doing nothing at all; they now defend the guarded player and fight back
- Fixed the configured follow and patrol speeds being ignored in favour of fixed values
- Fixed the debug toggle doing nothing and the debug setting being missing from the configuration
- Fixed sitting never appearing; the pose was applied and then discarded before players could see it
- Fixed changing gravity rebuilding the NPC once for every player online
- Fixed resetting an NPC wiping its name
- Fixed cloning ignoring creation limits and permissions, allowing duplicate names, and leaving copies without an owner
- Fixed the fallback skin using an invalid signature, which could make NPCs render incorrectly
- Fixed NPCs with no owner escaping the creation limit
- Fixed the entity type command rejecting every value and reporting a misleading error
- Fixed NPCs turning their heads in the wrong direction
- Fixed names containing spaces being cut down to the first word
- Fixed most commands not checking permissions, which let any player change or delete NPCs they did not own
- Fixed ownership checks applying to only a single command
- Fixed the equip and clone permissions being declared but never enforced, and missing from the full access group
- Fixed the range command accepting zero, negative and absurd values
- Fixed interactions being spammable with no cooldown, allowing commands to be run repeatedly
- Fixed saving running at the same time as the game was changing data, which risked corrupt or partially written data
- Fixed shutdown overlapping with a background save
- Fixed patrol and wander tasks continuing to run after an NPC was removed
- Fixed movement tasks not restarting after a reload
- Fixed selection and proximity tracking never being cleaned up when players left the server
- Fixed an unloaded world causing errors when selecting or listing NPCs
- Fixed plugin startup failing when the command description was unavailable
- Fixed reloading leaving removed NPCs in memory and never restarting automatic saving
- Fixed the stored skin data never being created on a fresh installation
- Fixed reloading leaving behind duplicate NPCs
- Fixed NPCs walking through walls and into unloaded areas while patrolling or following
- Fixed following silently doing nothing whenever a patrol was already running
- Fixed skins being stored in two incompatible formats, so skins saved by either download could be ignored
- Fixed equipment being stored in a way that equipment saved by the other download could not be read
- Fixed skin cache entries being treated as different players depending on capitalisation, and never refreshing once stored
- Fixed a missing skin signature causing errors while loading stored skins
- Fixed one damaged NPC entry stopping that NPC from loading without a clear explanation
- Fixed cloning bypassing the duplicate name check
- Fixed names above NPCs being unreliable and colour codes never being shown
- Fixed NPCs being given fixed placeholder client details instead of consistent defaults
- Fixed clicking an unrelated entity being able to trigger an NPC interaction
- Fixed NPCs sometimes being shown twice or briefly at the wrong position when joining or changing worlds
- Fixed entities appearing that could not be removed after a very fast hide and show
- Fixed the plugin disabling itself on newer point releases of 1.21
- Fixed the packaged plugin reporting a version that did not match the release
- Fixed the download for older servers being packaged as a legacy plugin, which made newer servers convert it every time it loaded
- Fixed placeholder author and website details
- Fixed a malformed command usage line
- Fixed the plugin requiring one specific machine's Java installation to build
- Fixed the two downloads having drifted into different sets of behaviour, so improvements only reached one of them
- Fixed internal support failing causing a hard crash instead of a clear explanation and a safe degraded start
- Fixed stale build artefacts and crash reports being kept in the project
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:BaTbLPyy:1mSyXhIJ"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:BaTbLPyy:1mSyXhIJ"
}
