You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AGENTS.md
+6-1Lines changed: 6 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -127,7 +127,12 @@ Other useful commands:
127
127
| Worldgen or structures | Test multiple seeds and chunk borders in fresh worlds; check existing-world behavior when applicable |
128
128
| Dimension, portal, or progression | Test both directions, repeated travel, death/reconnect, fresh and existing worlds, and relevant stages |
129
129
| Networking | Test a dedicated server with a separate client; include multiple players when state can diverge |
130
-
| Visual or asset change | Provide screenshots or video and verify attribution/license records |
130
+
| Visual or asset change | Run applicable non-visual checks, then leave subjective in-game visual testing and approval to the developer; verify attribution/license records for asset changes |
131
+
132
+
AI agents must not operate the game client or desktop UI to perform subjective visual tests. Start
133
+
the client only when needed for a technical startup or rendering-hook check, stop it afterward, and
134
+
state exactly what was not visually verified. The developer owns screenshots, video, comparison
135
+
across visual settings, and final visual approval.
131
136
132
137
If a relevant check cannot be run, state exactly what was not verified and why. Never claim an in-game, dedicated-server, multiplayer, or existing-world result that was not actually tested.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+8Lines changed: 8 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,6 +11,10 @@ Each release should be readable in two passes:
11
11
12
12
### Player-Facing
13
13
14
+
- Crimson and Warped Forests now generate as open fungal deserts. Their colored nylium, resources, mobs, and atmosphere remain, but giant fungi, roots, sprouts, and vines are much more widely scattered.
15
+
- Nether fossils no longer generate Dried Ghasts. Dried Ghasts remain craftable, and existing or player-placed blocks can still hydrate into Ghastlings and grow into Happy Ghasts.
16
+
- Every Nether biome now uses the Nether Wastes' classic dark-red fog instead of changing fog color at biome borders. The Nether also restores a darker Minecraft 1.0-style ambient-light floor, making unlit terrain and distant silhouettes moodier while lava, fire, and other light sources remain effective.
17
+
- Active Nether portals in the Overworld now permanently drain their surroundings through two continuous outward fronts instead of changing scattered random positions. The leading death front removes large vegetation, turns supported small plants into Dead Bushes, kills coral, melts snow and ice, and turns living ground into Coarse Dirt. A nested Nether-corruption front follows at half its radius: dead ground and Clay become Netherrack; Sand becomes Gravel; Overworld stone and Sandstone become shape-aware Blackstone; bricks and tiles become polished Blackstone bricks; Overworld wood becomes matching Crimson wood; and water evaporates without deleting a waterlogged block. Netherrack and all other native Nether materials are stable, Gravel remains Gravel, and unmatched crafted or decorative blocks—including Concrete, Terracotta, Glass, Wool, rails, bookshelves, pumpkins, Hay, and mushroom blocks—remain unchanged. Lava source blocks anywhere inside the full affected sphere linearly resist both fronts: each source removes one portal block's share of the normal speed, and matching or exceeding the portal's interior block count stops the spread completely. Flowing lava does not count and lava is never consumed. A standard 2×3 portal reaches 16 and eight blocks; every additional interior portal block adds one block to the death radius, with the corruption radius remaining half and the death radius capped at 48. Terrain therefore dies before nearby Nether terrain replaces it, and larger portals have a proportionally larger environmental cost. Soul Sand, Soul Soil, fire, magma, and lava are never created. The effect grows slowly in the background and receives a pulse after every successful traveler, including mobs and items, while portals, Obsidian, ores, valuable storage blocks, containers, and machines remain protected.
14
18
- Wildfire patrol groups now use obstacle-aware airborne routes. The leader checks for clear vertical space, climbs before crossing walls or escaping depressions, and its Blaze escorts route toward their moving line positions instead of continuing to push into terrain.
15
19
- Wildfire escort Blazes now follow their leader into combat instead of being left where the patrol ended. They inherit the Wildfire's valid target, climb blocked terrain, and regroup into a compact staggered screen around the leader while retaining their vanilla fireball cycle; lava recovery still releases the group.
16
20
- Wounded Wildfires now recognize only lava columns at least three blocks deep as recovery shelters. They ignore shallow pools, route to the surface of qualifying deep lava, and must remain fully submerged in that deep column to heal health or rebuild shields.
@@ -52,6 +56,10 @@ Each release should be readable in two passes:
52
56
53
57
### Technical
54
58
59
+
- 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.
60
+
- 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.
61
+
- 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.
62
+
- `RetoldNetherPortalDrainEvents` indexes active portal fields only from loaded Overworld chunks, rotates bounded background and traveler-pulse work fairly, and never loads terrain to find or transform a target. Each portal has separate deterministic nearest-to-farthest death and corruption cursors; corruption may advance only where its squared radius is at most one quarter of the death front's. The outer radius is `min(48, 16 + width × height − 6)` and the inner radius is half. Loaded lava sources across that outer sphere are refreshed through a fair scan capped at two chunks every five ticks. A fractional work-credit limiter applies the exact factor `max(0, (portal area − lava sources) / portal area)` to background and pulse work and waits for the initial snapshot before spreading. A compact sorted primitive offset index supports every radius through 48 without retaining hundreds of thousands of `BlockPos` objects. Explicit semantic tags now define stable Nether materials, melting blocks, small plants, vegetation, living ground, Sand, Clay, stone/masonry, wood, and immunity; there are no generic axe/pickaxe/shovel or full-collision fallbacks, so unclassified blocks are unchanged. All transformations use vanilla blocks, and each individual edit passes through the `NETHER_PORTAL_DRAIN` world-protection category. A narrow portal-transition hook queues the pulse only after successful travel and caps repeated traffic at 96 pending changes per portal.
55
63
- Wildfire formation movement now preempts vanilla Blaze wandering, selects bounded collision-free climb corridors, and follows budgeted three-dimensional flight paths refreshed every ten ticks. The focused formation GameTest includes a three-block wall and verifies leader ascent/crossing plus escort ascent before combat releases the owner.
56
64
- Added flagless `WILDFIRE_ESCORT_COMBAT` movement for encounter Blazes. It inherits the leader's target through faction-assist ownership, follows budgeted flying routes into a compact combat screen, explicitly climbs an immediately blocked forward corridor, and coexists with vanilla Blaze firing. A focused three-to-five-escort test verifies that the whole group crosses a wall and reacquires the shared target.
57
65
- Wildfire recovery now uses a cached `DEEP_LAVA_SOURCE` search that accepts only the exposed surface of a lava column with at least two more lava blocks below it. Focused tests cover shallow-pool rejection, selection of deeper lava over a closer shallow pool, the complete submerged recovery cycle, and the unchanged 50-Wildfire 20-TPS budget (4.876 ms/tick peak).
Copy file name to clipboardExpand all lines: docs/compatibility.md
+16-2Lines changed: 16 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -66,12 +66,24 @@ The following block and item tags are supported extension points:
66
66
|`retold:bat_foods`| Dropped food accepted by hungry Bats. |
67
67
|`retold:feline_scavenge_foods`| Extra scavenged food accepted by Cats and Ocelots in addition to meat and fish. |
68
68
|`retold:torch_igniters`| Items players may use to relight Retold's extinguished torches. |
69
+
|`retold:nether_portal_drain/immune`| Blocks that Overworld Nether-portal drain must never replace. Block entities are always immune independently of this tag. |
70
+
|`retold:nether_portal_drain/stable`| Native Nether materials and other final results that neither drain front may replace. Water can still evaporate from a waterlogged stable block in the inner zone. |
71
+
|`retold:nether_portal_drain/outer_ground`| Living ground that becomes Coarse Dirt in the outer zone and Netherrack in the inner zone. |
72
+
|`retold:nether_portal_drain/vegetation`| Vegetation that permanently withers to air in either drain zone. |
73
+
|`retold:nether_portal_drain/to_dead_bush`| Small plants that become a Dead Bush when it can survive at that position, otherwise air. |
74
+
|`retold:nether_portal_drain/melts`| Snow and frozen blocks that melt to air when reached by the death front. |
75
+
|`retold:nether_portal_drain/to_gravel`| Sand-like inner-zone blocks that become Gravel. |
76
+
|`retold:nether_portal_drain/to_netherrack`| Soil-like inner-zone blocks that become Netherrack. |
77
+
|`retold:nether_portal_drain/to_blackstone`| Stone and masonry inner-zone blocks that become shape-aware Blackstone or polished Blackstone forms. |
78
+
|`retold:nether_portal_drain/to_crimson_wood`| Wooden inner-zone blocks that become a compatible Crimson wood form when one exists. |
69
79
70
80
Only add content whose behavior matches the tag's complete meaning. For example, a block added to
71
81
`retold:panda_bamboo_blocks` must be safe to remove when consumed; a decorative prismarine-like
72
82
block should not enter `retold:ocean_monument_protected_blocks` unless it should participate in
73
83
monument mining pressure. An item added to `retold:campfire_consumable_igniters` must be safe to
74
84
consume one at a time; durability-based tools belong in their own interaction path instead.
85
+
Portal drain intentionally has no generic mining-tool or full-block fallback. A modded block remains
86
+
unchanged unless its author or a datapack explicitly assigns it to one of the semantic drain tags.
75
87
76
88
The three renewable habitat-forage tags do not remove their blocks. They remain usable when
77
89
`mobGriefing=false`, use Retold's normal bounded forage search, and observe the existing 600-tick
@@ -206,15 +218,17 @@ bounds, mutation category, optional responsible entity, and optional subject ide
206
218
block actions use one-block bounds; portals and whole-chunk operations expose their full possible
207
219
area so an adapter can reject overlaps rather than checking only the center. Current categories
208
220
distinguish mob breaking and placement, other entity breaking, Aender portal creation,
209
-
delayed-structure retrogen, Aender chunk regeneration, and generic Retold world changes. Retold
210
-
currently routes the following owned operations through this layer:
221
+
delayed-structure retrogen, Aender chunk regeneration, Overworld Nether-portal drain, and generic
222
+
Retold world changes. Retold currently routes the following owned operations through this layer:
211
223
212
224
- destructive animal forage, Panda bamboo consumption, weak-barrier breaking, Spider lair webs,
213
225
and Villager torch maintenance
214
226
- Gale Core terrain damage
215
227
- Aender stale-chunk blanking and regeneration
216
228
- generated Aender counterpart portals and player-built portal activation
217
229
- delayed structure retrogen
230
+
- permanent Overworld Nether-portal drain, categorized as `NETHER_PORTAL_DRAIN` and checked once for
231
+
every individual block immediately before it changes
218
232
219
233
The normal NeoForge entity-griefing hook and `mobGriefing` rule still apply before Retold's
220
234
position-aware mob checks. Protection rules supplement those standard checks; they do not replace
Copy file name to clipboardExpand all lines: docs/internal/design_implementation_status.md
+4-3Lines changed: 4 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -303,14 +303,15 @@ Largest missing or partial design areas:
303
303
| Nether Remnants/pigmen/blazes as fortress faction | Partial / implemented AI | Nether Remnants faction/territory covers piglin, brute, and blaze. GameTests verify member/config mapping, the Nether-only rule, both bastion and fortress tags, and the shared warning/retaliation lifecycle. Generated bastion and fortress behavior still needs in-game verification. |
304
304
| Nether dragon | Deferred/TBD | Possibly planned for the ending, but not final. |
| Nether portal spread | Not implemented | Still planned as portal energy draining/spreading into surroundings. |
306
+
| Nether darker like 1.0 | Implemented / needs visual verification | Client-only atmosphere hooks unify every biome on the Nether Wastes `#330808` fog and replace the modern `#302821` ambient-light color with an approximately 10% neutral `#1A1A1A` floor matching the classic brightness curve. Block-light values, brightness and vision options, fluid fog, mob spawning, and server lighting rules remain unchanged. Final darkness and readability need developer visual approval across Nether biomes and brightness settings. |
307
+
| Dried Ghasts excluded from natural Nether generation | Implemented / needs worldgen verification |`NetherFossilDriedGhastMixin` cancels only the post-template Dried Ghast placement attempt in Nether fossils. The recipe, block, existing placements, hydration, Ghastlings, Happy Ghasts, Creative, and commands remain functional. Fresh Nether fossils still need natural multi-seed verification. |
308
+
| Nether portal spread | Implemented / needs natural and multiplayer verification | Loaded active Nether portals permanently drain the Overworld through two concurrent deterministic nearest-to-farthest fronts, independent of world stage. Background work plus every successful traveler—including mobs and items—advance a leading death cursor that removes large vegetation, turns supported small plants to Dead Bushes, kills coral, melts frozen blocks, and turns living ground to Coarse Dirt. A separate Nether-corruption cursor continually follows, but can reach at most half the death radius. Dead ground and Clay become Netherrack, Sand becomes Gravel, Overworld stone and Sandstone become shape-aware Blackstone, masonry becomes polished Blackstone bricks, Overworld wood becomes Crimson forms, and water evaporates without deleting waterlogged host blocks. Native Nether results and Gravel are stable; unmatched crafted and decorative blocks remain unchanged because no generic mining-tool/full-block fallback exists. Loaded lava sources throughout the full outer sphere linearly reduce both background and traveler-pulse work by `max(0, (portal blocks - lava sources) / portal blocks)`; flowing lava is ignored, matching or exceeding the portal area stops both fronts, and the lava is not consumed. A standard six-block 2×3 portal keeps the 16/8 radii. Each additional interior portal block adds one outer-radius block; the outer radius caps at 48 and the inner radius is half, rounded down. Both fronts cycle so later construction remains eligible, and living ground encountered late still cannot skip Coarse Dirt. Soul Sand, Soul Soil, fire, magma, and lava are never generated. Block entities, portals, Obsidian/Crying Obsidian, ores, valuable storage blocks, and a datapack immunity tag are protected. Loaded-chunk indexing, fair queues, work caps, a compact primitive offset index, a bounded two-chunk-per-five-ticks lava scan, and `NETHER_PORTAL_DRAIN` protection checks prevent forced loading and permit claim integrations. Six focused GameTests cover area scaling/the cap, the nested front invariant, two-step mappings/outward ordering/protections, the explicit stable/change/unchanged palette, linear lava resistance, and the bounded successful-travel pulse; natural pacing at standard and large radii, lava response latency and performance, unusual portals and terrain, chunk borders, save/reload, existing worlds, multiplayer, and dedicated servers remain unverified. |
308
309
| Living piglins attack for shiny material | Partial / unclear | Piglin AI/faction exists; specific shiny-material rule not confirmed. |
309
310
| Pigmen can be hired/fight with player | Not implemented | Still planned for Stage 3 piglin/pigman behavior. |
310
311
| Wither different by dimension | Not implemented |
311
312
| Fight music during wither | Not implemented |
312
313
| Wither as first boss / Nether access gating | Not implemented |
| Basalt/soul valley kept, Nether forests changed/removed |Implemented / needs multi-seed visual verification | Basalt Deltas and Soul Sand Valleys remain unchanged. Data-driven biome modifiers turn Crimson and Warped Forests into sparse fungal deserts without removing either biome: giant-fungus attempts fall from eight per cavern layer to one, ordinary forest scrub from six/five to one, vines from ten to two, and Warped Forest sprouts from four to one. Nylium surfaces, terrain, resources, structures, atmosphere, mobs, and existing chunks remain unchanged. The exact registry contract is GameTest-covered; natural density, sightlines, and transitions need developer approval in fresh chunks across multiple seeds.|
0 commit comments