Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,22 @@ Each release should be readable in two passes:
- Wolf Armor and every Horse and Nautilus Armor material can now be enchanted with the same enchantment pool as a Chestplate. Each uses the enchanting value of its own armor material. Protection enchantments now affect damage absorbed by Wolf Armor as well as ordinary animal health damage; Fire Protection also retains its normal shorter-burning effect.
- Replaced the AI-generated Aender Sand placeholder with Xefensor's original hand-drawn texture.
- Natural Aender grass, soil, stone, and sand now use deterministic per-block texture variants matching their vanilla counterparts, reducing obvious repeated terrain patterns.
- Breaking an Aender Stabilizer now removes its forcefield immediately without making watched terrain disappear. Each released chunk retains its terrain and player edits until no client is watching it, then rejoins the existing paced volatility and regeneration lifecycle.
- The End no longer produces its periodic celestial flashes, temporary brightness pulses, or delayed flash sounds. Retold's generated End sky remains unchanged.
- Trial Chambers, Ancient Cities, and the Deep Dark no longer generate in newly explored terrain. Their blocks, items, mobs, biomes, and already-generated content remain available.
- Ruined Nether portals no longer generate with loot chests.
- Unknown enchantments on items and enchanted books now show only their three-glyph SGA inscription and level. After a player learns a spell by successfully transferring it from a book, its ordinary readable name returns and the SGA word remains directly below it. Multi-enchanted items reveal each spell independently.
- The enchanting table now replaces random bookshelf-powered offers with deterministic spell writing. Insert an item and three lapis, enter three SGA glyphs, choose level I-V, and write the enchantment for five experience levels per requested enchantment level. The editor supports physical A-Z, Backspace, number-row/keypad 1-5, and Enter controls, with duplicate submission blocked while a cast is pending. Invalid or incompatible attempts consume nothing and share one low-note/red-highlight rejection cue without revealing why they failed. Learned table-eligible spells appear in a paginated item-aware list with maximum levels, can refill their glyph word, and disable unsupported levels. A successful cast clears the inscription and briefly highlights the changed item; successfully deducing a new valid word teaches it.
- Refined the villager recipe-teaching interface with a dedicated emerald-toned panel, consistent spacing, a centered teaching slot, wrapped status and guidance text, aligned cost and action controls, and clear ready/success/rejection highlights. Enter or keypad Enter can activate an available lesson, successful teaching plays a Villager confirmation sound, and rejected stale requests play the Villager refusal sound.
- Fixed standing tamed Wolves failing to defend an attacked owner or attack a mob their owner hit. Owner defense now overrides an ordinary food or skeleton target while retaining vanilla sitting, ally, PvP, and Creeper exclusions.
- Land animals now choose dry escape destinations and refuse flee paths that enter water when they begin on land.
- Creepers and Undead no longer run from an ignited Creeper. Animals and village defenders still flee, while Cats retain their earlier Creeper avoidance.
- Iron Golems no longer attack idle Piglins or Endermen merely for being exposed nearby, but still retaliate after a real attack.

### Technical

- Aender chunk reality attachments now persist a save-compatible deferred-release state. Stabilizer removal records that state across the released 3×3 halo; the active-region tick converts only unstable, untracked deferred chunks to stale state before the existing blank/regeneration queues mutate terrain. Restabilization, overlapping halos, legacy attachments, unload/reload, global reality changes, and portal preparation retain their existing authority boundaries. Pure watcher-policy tests and an exact persistent-state GameTest pass; normal Aender multiplayer verification remains required because the GameTest server does not load the custom dimension.
- Shared Retold flight now uses bounded land-position sampling and rejects water-crossing ground paths without adding an ordinary per-tick scan. Creeper awareness excludes the Creeper and full Undead faction, and village-defender target policy blocks unsolicited Nether Remnant/Ender hostility while preserving retaliation and defense ownership. Focused dry-route, fuse-awareness, and defender-neutrality GameTests pass; exact 50-Cow and 50-Wolf runs peak at 5.806 and 5.476 ms/tick.
- Data-driven biome modifiers replace only the Crimson and Warped Forest vegetation placements in newly generated chunks. Giant-fungus attempts fall from eight per cavern layer to one, forest scrub from six/five to one, vines from ten to two, and Warped Forest sprouts from four to one; terrain, surface blocks, ores, springs, structures, spawn lists, and existing chunks are unchanged.
- A narrow Nether-fossil placement hook suppresses only the post-template Dried Ghast generation attempt. It does not alter the Dried Ghast recipe, block behavior, existing chunks, or Happy Ghast entity type.
- Client-only atmosphere hooks substitute the Nether Wastes `#330808` base fog color and an approximately 10% neutral `#1A1A1A` ambient-light floor throughout the vanilla Nether dimension. Fog changes happen before vanilla darkness, vision, sky blending, and fluid-specific fog; lightmap changes retain block-light levels, the brightness option, and vision effects. Biome and dimension definitions remain untouched, so datapack-added Nether biomes inherit the presentation without losing their other settings or changing server-side light rules.
Expand Down
4 changes: 2 additions & 2 deletions docs/internal/design_implementation_status.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ Largest missing or partial design areas:
| Aender replaces End after egg hatch | Partial | End portal redirect is implemented for Stage 3. Vanilla End is intentionally not deleted and remains command-accessible. |
| Aender is sky-like/floating islands | Implemented / needs verification | `AenderChunkGenerator`, `AenderIslandSampler`, `AenderIslandArchetype`, `AenderDecorationPlanner`, `AenderCavePlanner`, `AenderCaveCarver`, `AenderOrePlanner`, `AenderBiomeSource`, Aender biome/data/assets. Fresh worlds select generator V3: V2's order-independent overlap composition and chunk-halo decoration plus deterministic per-island 3D biome assignment. Plains and the experimental inverted Aender Desert own separate archetype families, surface/underside profiles, vertical distribution, erosion, warped detached satellites, decoration patches, rare spire/crater formations, and conservative cave networks in substantial stable silhouettes. Large eligible islands always receive at least one valid main passage and often receive multiple passages. Main routes use asymmetric turns and local meanders, while most can add a connected enclosed side branch and some branch ends widen into chambers. Each main passage can independently open at either or both ends through a restrained surface, side, or underside entrance. Fragile/open archetypes remain excluded to avoid arch-like results. Stacked islands can resolve to different biomes and volatile regeneration replaces biome containers together with terrain. Diamond-like Aenderite deposits cross chunk borders and favor island undersides; most veins contain 3–4 or 4–8 blocks, rare veins contain 8–12. Full-pipeline GameTests confirm cave carving and ore placement. Upgraded saves retain their persisted V1/V2 generator selection. Pure planners have deterministic coverage, while V3 palettes, every silhouette/profile/formation, cave appearance/entrances/branches, Aenderite discoverability/exposure, vertical biome transitions, client models, performance, and chunk borders still need multi-seed real-dimension visual verification. |
| Dimension of change / chunks regenerate differently | Implemented / needs verification | `AenderRealityData` persists the seed/global/regional epochs/generator version, while the `retold:aender_chunk_reality` attachment persists each chunk's current or stale generation identity. Saved placed/broken blocks therefore survive runtime-cache loss, quit, and restart until their region legitimately changes; unloading evicts only the duplicate runtime signature, which is restored from the attachment on demand. In multiplayer, 384-block generator regions independently advance after their final client watcher leaves; a dependency halo prevents cross-region island seams. Stale loaded chunks enter a TPS-paced blanking queue only while unwatched, their non-player entities are discarded before the temporary empty interval, stabilized chunks are preserved, and rebuilding expands from approaching players. Chunk-load callbacks and portal lookup no longer synchronously rebuild stale terrain. Tests cover serialization, attachment state transitions and cache restoration, entity cleanup, watcher lifecycle, and stable-versus-volatile policy. A three-start dedicated-server check on an isolated affected-world copy verified place/save/reload and break/save/reload; rapid multiplayer re-entry, crash recovery, and the revised TPS profile still need real-dimension verification. |
| Stabilizer block makes chunks permanent | Implemented / needs verification | `AenderStabilityData`, `AenderStabilizerEvents`, `aender_stabilizer`. GameTests cover codec round trips and overlapping stabilizer counts; real-dimension behavior still needs in-game verification. |
| Stabilizer block makes chunks permanent | Implemented / needs multiplayer verification | `AenderStabilityData`, `AenderStabilizerEvents`, `aender_stabilizer`. Breaking the last overlapping stabilizer removes stability and its forcefield immediately, but persists a deferred-release chunk state while any client tracks the terrain; only an unstable, unwatched released chunk becomes stale and enters paced blanking/regeneration. Pure policy tests cover watcher, overlap, and ordinary-current boundaries. GameTests cover codec compatibility, overlap counts, terrain preservation before eligibility, and the stale handoff; the custom Aender dimension remains unavailable to GameTest, so real multiplayer departure and save/restart behavior still need verification. |
| Water flows faster/farther | Implemented | `AenderWaterFluidMixin`, `AenderFlowingFluidMixin`. |
| Lava cannot be placed there | Implemented / needs in-game verification | `AenderBucketItemMixin` makes lava bucket emptying in the Aender vaporize like water in the Nether, consuming the bucket action while leaving no lava block behind. |
| Horizontal Aender portal | Implemented / needs verification | `AenderPortalBlock`, `AenderPortalFrameBlock`, `AenderPortalShape`, `AenderPortalData`, and `AenderPortalLogic`. GameTests cover activation, invalidation, bounds, and deterministic counterpart creation/indexing; JUnit covers Aender surface selection and the Y=100 supported fallback when no nearby terrain exists. The provisional frame is `retold:dev_aender_portal_frame`, generates in Aender islands, and supports 3x3 to 21x21 horizontal interiors; real cross-dimension travel still needs in-game verification. |
Expand Down Expand Up @@ -340,7 +340,7 @@ Largest missing or partial design areas:
| Tall grass lower hitbox when holding weapon | Not implemented |
| Pet door | Not implemented |
| Cats avoid creepers | Implemented / needs verification | Cats hiss and take high-priority flee control near creepers. Creepers retain vanilla cat/ocelot avoidance. |
| Mobs flee creeper about to explode | Implemented / needs verification | Cached fuse awareness gives mobile pathfinding and flying mobs species-banded reaction delays, interrupts combat/guard duty, and retains short danger memory. Zombie-family mobs do not flee. GameTests cover representative animal, defender, zombie, and flying-mob cases; broad in-game species/navigation behavior still needs verification. |
| Mobs flee creeper about to explode | Implemented / needs verification | Cached fuse awareness gives mobile pathfinding and flying mobs species-banded reaction delays, interrupts combat/guard duty, and retains short danger memory. Creepers and every Retold Undead hold their ground. The focused GameTest covers an animal, village defender, Creeper, Zombie, Skeleton, and flying Undead; broad in-game species/navigation behavior still needs verification. |
| Snowballs do 1 HP damage | Implemented / needs in-game verification | Per the expanded developer direction, `RetoldSnowballEvents` changes all otherwise harmless snowballs to one point of incoming damage, including player, mob-owned, ownerless/dispenser-style, and Creeper hits. Vanilla three-damage hits against Blazes remain unchanged. An integrated GameTest covers every boundary. |
| Sticks/bones deal more damage than hand | Not implemented |
| Explosive block that drops all blocks | Not implemented |
Expand Down
13 changes: 13 additions & 0 deletions docs/internal/mob_tps_benchmark.md
Original file line number Diff line number Diff line change
Expand Up @@ -453,6 +453,19 @@ ms/tick. Idle/rest was the 7.915 ms/tick peak. Positive storage work recorded 96
searches in dropped-food/forage, while the other active phases recorded no broad block-position
work. The complete profile matrix was not selected because only the Villager storage owner changed.

### Dry-Land Flight Focused Rerun

The exact `retold:mob_tps_cow` and `retold:mob_tps_wolf` selectors were rerun on 2026-08-23 after
urgent ground flight began using bounded land-position sampling and rejecting paths that enter
water when the mob starts on land. These profiles cover a passive grazer and a predator using the
shared flight adapter; the complete matrix was not selected because ordinary movement, shared scan
caches, and work-budget primitives did not change.

All ten 50-mob phases passed below 50 ms/tick. Cow averaged 4.327 idle/rest, 3.853
dropped-food/forage, 2.638 hunt/targeting, 5.806 danger/social, and 3.083 habitat/day-night
ms/tick. Wolf averaged 4.624, 4.549, 5.476, 4.753, and 2.921 ms/tick in the same phase order.
Cow danger/social was the combined 5.806 ms/tick peak.

## Results

The table below records the original clean baseline described above; later rerun summaries are
Expand Down
Loading