Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Villagers expand remembered villages with gradual homes, paths, scaffolding, warehouses, and resource logistics.
VillageGrowth 0.1.1
Player-Visible Changes
- Active builders now keep bounded worksite chunks loaded so builds can continue after nearby players leave.
- Dirt access paths for active projects build in quick safe batches instead of making villagers run back and forth for one path block at a time.
- Builder assignments now stay tied to specific villager UUIDs for the active project, reducing worker churn and preventing unrelated villagers from taking over.
Admin And Config Changes
- Added
building.chunk-loadinglimits for active project chunk tickets. - Added
building.pathscontrols for fast-lane path placement. /villagegrowth inspectnow reports active project progress, path backlog, unloaded or blocked steps, current target, and chunk ticket pressure./villagegrowth queuenow includes template and cursor details for active projects.
Bug Fixes
- Fixed project cursor advancement so sorted build steps advance by list position instead of original template index.
- Unloaded build steps no longer count as completed work.
- Villager focus locks now also clear and restore home memories while a worker is assigned.
- Builders are now rescued or paused when they enter unsafe fall/suffocation work positions.
- Reduced build-tick TPS spikes by caching VillageMemory repair-block checks briefly and throttling inline SQL/YAML saves between autosaves.
- Reduced physical village census cost by caching metrics briefly and only serializing bed block-data when the scanned block is actually a bed.
- Blocked active build targets are now diagnosed and temporarily skipped when workers are available but no worker can make progress, preventing repeated retries against the same stale blocked block.
- Active projects now diagnose blocked steps anywhere in the project instead of only the current build anchor, so villages do not sit idle with an undiagnosed
blocked-targetstate. - Auto-recovery no longer clears active project blocker cooldowns every minute, reducing repeated recovery churn and TPS spikes around stuck build targets.
/villagegrowth inspectnow reports specific assignment diagnostics, such as placement budget exhaustion, before falling back to a generic blocked-target reason.
Managed World Safety And Shelter Retargeting
- VillageGrowth now always treats
stormcourts_court,stormcourts_jail, andCrimeReconstructionas blocked worlds at runtime, even if an older config still has an emptysafety.blocked-worldslist. - New default configs list those protected worlds explicitly under
safety.blocked-worlds. - Existing VillageGrowth projects saved in blocked worlds are now cancelled, and tracked VillageGrowth-owned blocks/supports in protected worlds are rolled back safely without touching unrelated blocks.
- Villager shelter routing now detects repeated no-progress shelter attempts and retargets instead of continually driving villagers into the same failed one-block jump.
Spark-Guided TPS Stabilisation
- Added a lightweight
villageSummaries()API for integrations that only need village eligibility data, avoiding full admin diagnostics, warehouse inventory scans, worker diagnostics, and VillageMemory repair summaries. - Periodic dirty saves now use a coalesced async snapshot write path; manual save, reload, and shutdown still flush synchronously.
- Build-tick inline saves now request the coalesced save queue instead of writing SQLite/YAML on the server thread.
Managed-World Growth Unblock
- Added
justaprankbro_scenesto default blocked worlds so growth projects, supports, and status views stay out of JustAPrankBro scene worlds. - VillageGrowth now hides any remaining managed-world VillageMemory records from growth status, summaries, project lookup, forced planning, and custom template builds.
- Blocked-world cleanup now also targets JustAPrankBro scene-world projects and owned support/block records.
- Permanently
target-blockedprojects now cancel, reject that unsafe site temporarily, and queue bounded rollback cleanup for plugin-owned project blocks/supports so real villages can choose a new safe site. - Orphaned active projects left behind after village cleanup/remap now queue bounded cleanup for tracked plugin-owned blocks and supports instead of logging that world blocks were left unchanged.
- Placement cycle budget yields are reported as transient
cycle-budget-yielddiagnostics instead of persistent blocked project states.
Idle Villager Water Crossing
- Origin villagers returning home may now cross safe water or use VillageGrowth boat transport instead of pacing along the shore forever.
- Construction workers still respect
building.workers.avoid-water-routes; the water-crossing allowance is scoped to idle home-return leash behavior. - Added
building.workers.idle-home-leash-allow-water-crossings, defaulttrue, for admins who want to disable this behavior.
Villager Water Rescue Follow-Up
- VillageGrowth's general villager safety rescue no longer teleports normal village residents back to shore the moment they step into water near their village.
- Residents now get a bounded water-crossing grace period with floating enabled, while assigned construction workers still obey worker water-safety rules.
- VillageGrowth-owned transport boats are now exempt from unsafe-location rescue so boat crossings cannot be interrupted by a safety teleport.
StormQuests Village Resource Integration
- Added a safe
grantVillageResourcesAPI for StormQuests village-specific quest rewards. - Resource grants reject missing villages, blocked worlds, infinite-resource mode, unknown material groups, and non-positive amounts.
- Accepted quest resources update VillageGrowth virtual stockpiles and warehouse caches only; they do not force planning or place blocks directly.
Real Villager Sand And Edge Stuck Recovery
- Added bounded runtime movement progress tracking for real villagers so same-block stalls, two-block pacing, and jump/fall loops no longer reset stuck timers forever.
- Construction scouts/builders, villager sheltering, idle home-return leashing, passive origin-villager edge recovery, resource collection, and warehouse logistics now stop bad paths and retarget before falling back to route blocking or safe rescue.
- Final rescue teleports only after repeated failed recovery attempts and only to already-loaded, validated, non-water, no-drop village ground.
NPC Temporary Block Filtering
- VillageGrowth now ignores NPC-owned temporary bridge, catch, and water blocks during custom template capture and loaded physical village census.
- Temporary NPC traversal aids are no longer counted as beds, job sites, captured structure blocks, template materials, or village resources.
Spark-Guided TPS Follow-Up
- Repeated auto-recovery for projects still waiting on villager assignment is now backed off, preventing the same
awaiting-worker-assignmentproject from clearing runtime every minute. - Active projects without an assigned worker no longer hold VillageGrowth chunk tickets just to wait for a worker. Tickets are kept for assigned workers and active work targets.
- Build and maintenance behaviour remains enabled; this change reduces repeated scheduler and chunk-ticket pressure instead of disabling village growth.
Information
| Published on | May 26, 2026 |
|---|---|
| Downloads | 0 |
Platforms
Paper (26.1.2)
Dependencies
Paper