Skip to content

Add shared village storage and ambient sightings - #54

Merged
xefensor merged 2 commits into
masterfrom
feature/village-storage-knowledge
Aug 19, 2026
Merged

Add shared village storage and ambient sightings#54
xefensor merged 2 commits into
masterfrom
feature/village-storage-knowledge

Conversation

@xefensor

Copy link
Copy Markdown
Owner

Summary

Add persistent shared knowledge for village chest/barrel contents and the rare runtime-generated horizon sighting system.

Villagers now remember observed village storage globally through server SavedData, consult it before budgeted local scans, refresh it when relevant containers change, and always revalidate the physical container before using it. The same knowledge path serves communal food, Farmer deposits, livestock feed, and golem emeralds.

The atmosphere subsystem schedules rare player-specific sightings near the render-distance fog in every dimension. The client renders a non-interactive player-like figure using an approved skin reconstructed at runtime, with ordinary model lighting and shadow; it vanishes after sustained observation or a render-distance-scaled approach.

Player or developer impact

  • Villagers can reliably use food, feed, emeralds, and other observed items stored around their village without rediscovering each container for every action.
  • Storage knowledge persists across restarts, does not force-load chunks, and repairs or removes stale entries during use.
  • Players may very rarely notice a distant figure at the edge of fog. It has no server entity, hitbox, combat behavior, or interaction.
  • Architecture, testing guidance, implementation status, roadmap, changelog, performance notes, and asset attribution are updated.

Validation

  • ./gradlew build
  • ./gradlew runGameTestServer, when relevant
  • Focused in-game testing, when relevant
  • Dedicated-server or multiplayer testing, when relevant

Passed locally:

  • ./gradlew test --tests 'cz.xefensor.retold.ambient.RetoldHorizonScheduleTest'
  • ./gradlew runGameTestServer --args="net.neoforged.fml.startup.GameTestServer --tests retold:villagers_share_persistent_knowledge_of_village_storage"
  • ./gradlew runGameTestServer --args="net.neoforged.fml.startup.GameTestServer --tests retold:villager_paths_to_communal_food_storage"
  • ./gradlew runGameTestServer --args="net.neoforged.fml.startup.GameTestServer --tests retold:farmer_communal_supply_paths_to_storage"
  • ./gradlew runGameTestServer --args="net.neoforged.fml.startup.GameTestServer --tests retold:village_animal_reputation_consumes_two_storage_items"
  • ./gradlew runGameTestServer --args="net.neoforged.fml.startup.GameTestServer --tests retold:golem_construction_stages_and_conserves_village_emerald"

The Farmer route test failed once at a randomized distant GameTest coordinate because navigation did not begin, then passed unchanged on the immediate rerun at a different randomized coordinate. This is recorded as a coordinate-sensitive pathfinding flake rather than a deterministic failure.

The runtime figure's appearance, fog placement, lighting, shadow, and dismissal behavior still require the developer's ongoing visual playtesting. Dedicated-server, multiplayer, and long-session behavior were not manually tested in this pass.

AI assistance

  • I reviewed and understand all submitted changes, including AI-assisted output.

Codex materially assisted with implementation, tests, documentation, validation, and PR preparation. The result was reviewed against the subsystem documentation, compiled with the full build, and exercised with the focused JUnit and GameTests listed above.

Documentation and release notes

  • Updated CHANGELOG.md for player-facing or notable technical changes
  • Updated README or system documentation when behavior or architecture changed
  • Added or updated tests where practical

Visual evidence

No screenshot is attached. The developer supplied and approved the visual source and will verify the runtime reconstruction and in-world presentation during normal play.

Licensing

  • I have the right to contribute every included file.
  • Code and non-asset contributions are provided under LICENSE-CODE.md.
  • I discussed creative-asset contributions with the developer before including them.

ASSET_CREDITS.md records the developer-supplied and approved visual source used by the runtime-generated skin.

@xefensor
xefensor merged commit 7f7b29f into master Aug 19, 2026
2 checks passed
@xefensor
xefensor deleted the feature/village-storage-knowledge branch August 19, 2026 20:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant