BetterNether: Remastered

BetterNether Remastered completely overhauls the Nether dimension! Discover lush new biomes, exotic plants, epic structures, and powerful gear. Forged natively for Minecraft 1.21.1 with exclusive performance optimizations and critical bug fixes!
Back to Files

BetterNetherRemastered-30.5.2.jar

File nameBetterNetherRemastered-30.5.2.jar
Uploader
NavrelisNavrelis
Uploaded
Oct 14, 2026
Downloads
268
Size
22.0 MB
Mod Loaders
Fabric
File ID
9170190
Type
R
Release
Supported game versions
  • 1.21.1

Curse Maven Snippet

Fabric

modImplementation "curse.maven:betternether-remastered-1501719:9170190"

Learn more about Curse Maven

What's new

Remastered Mod Suite — Changelog 30.5.2

Minecraft: 1.21.1 (Fabric)

Mods in This Release

  • BCLibRemastered 30.5.2
  • BetterEndRemastered 30.5.2
  • BetterNetherRemastered 30.5.2
  • WorldWeaverRemastered 30.5.2

Stability release for parallel chunk generation (C2ME and similar mods). It fixes a crash in the End that broke chunks and ended with a watchdog kill, stops the suite from causing C2ME's "fluid scheduled tick access in a far chunk" warnings, and removes several more places where worldgen threads shared state. Two changes are visible in the game and are listed under their mods: the End island top block (BetterEnd) and the Cincinnasite ingot tag (BetterNether, players and pack makers please read it).


Fixes by Mod

BetterEndRemastered

  • Fixed the End mountain and lake crash with C2ME. Every crystal mountain, painted mountain, megalake and small megalake kept its terrain heights in a plain HashMap that all chunk threads of the structure used at the same time. With parallel chunk generation the map was corrupted: ClassCastException in HashMap.treeify, broken End chunks ("Error upgrading chunk"), then a thread looping forever in HashMap$TreeNode.find until the server watchdog killed the server. The heights now live in a flat, lock-free cache (ColumnCache) that is allocated when the first chunk needs it, never resizes and never blocks.
    • The cache keeps the same semantics as before: the first height stored for a column wins, so a neighbouring chunk still reads the terrain from before the structure was placed. Mountains and lakes are generated as before.
    • Measured with 30.5.1 on a test server (headless, C2ME 0.4.0-alpha.0.29, Lithium, ScalableLux, VMP, ServerCore, Fabric API 0.116.17, 14 C2ME workers, seed 1234567, fresh world): force-loading mountain and lake areas in the End gave 1 "Error upgrading chunk" with the production stack trace within about a minute, after which the server thread stalled (3 of 14 forceloads processed).
    • The same test with 30.5.2: 24 areas of mountains, painted mountains, megalakes and small megalakes plus 12 lake-biome areas (36 areas of 16x16 chunks) all generated. 0 chunk errors, 0 ClassCastException, 0 other exceptions. The server answered commands afterwards and stopped cleanly with all chunks saved.
  • No more "Detected fluid scheduled tick access in a far chunk" warnings from the suite. The suite did cause them. BlockFixer scanned up to 35 blocks around a feature (End lakes, desert lakes, sulphuric caves, round caves, geysers) and scheduled a water tick for every water block with air next to it, also in chunks two or three chunks away, where the block itself could not be placed. SulphuricLakeFeature did the same for water up to 20 blocks from its origin. Both are now limited to the 3x3 chunks around the chunk being generated, the area where blocks can be placed.
    • Measured with 30.5.1: force-loading 12 lake-biome areas (16x16 chunks each) gave 207 far-chunk fluid tick warnings.
    • Measured with 30.5.2: the same 12 areas gave 0.
    • Other mods can still produce this warning; the suite no longer does so in the End.
  • More worldgen threads sharing state, fixed:
    • Giant Ice Star (voxel pieces): the voxel data is built once under a lock and published only when complete. A second chunk thread could use a half-built piece.
    • Wall plants, wall plants on logs, vines, inverted scatter and building lists: the plant, vine, block or building chosen for one placement was stored in a field shared by all threads. Another thread could swap it in between, which could throw "Cannot set property" or place the wrong plant. The choice is now kept per thread.
    • Wall scatter: the direction list that is shuffled in place is now a local copy per placement.
    • Ore layers, biome islands and the mossy glowshroom: their shared static shape objects, overwritten by every placement, are now built per placement (glowshroom: per thread).
    • End pillars: the pillar heights stored in the world config are read, written and saved under one lock, and the "direct spike height" flag is per thread.
  • Behaviour change: the top block of a biome island. Before, the top block of every biome island became gravel for the rest of the game run once a single island had been placed over fluid (a static value that was never reset). Now it is grass, and gravel only for an island that is itself over fluid.

BCLibRemastered

  • Structure erosion (StructureErode) no longer shuffles one shared array of directions. The array was reordered in place by every structure that used erosion, from several threads at once. Each call now has its own array.

BetterNetherRemastered

  • Cincinnasite ingots are no longer in the c:ingots/iron tag. Cincinnasite armor, tools and weapons could be crafted with iron ingots in packs that use a recipe unifier. Almost Unified treats everything in c:ingots/iron as iron and rewrote the Cincinnasite recipes to use iron ingots. The recipes ask for Cincinnasite ingots again.
    • Trade-off, please read: BetterNether's bclib:tag_* recipes accept #c:ingots/iron. Until now Cincinnasite ingots worked as a replacement for iron ingots in them. That no longer works in the bucket, hopper, piston, cauldron, shield, minecart, rail, compass, smithing table and stonecutter recipes. Use iron ingots there.
  • Nether cities: the city generator is one object shared by all structure starts and keeps its work lists in fields. Two cities started at the same time (parallel chunk generation) could mix those lists. It now lays out one city at a time (no world access inside, the lock is only held for the layout).
  • City palettes: the palette used one random generator for all threads when it picked a block variant or a potted plant. Each pick now creates its own generator, seeded with the same block name as before.
  • Nether caves (StructureCaves): the height offset of the cave was stored in a field of the one shared instance. It is a local value for the chunk being generated now.

WorldWeaverRemastered

  • No code changes. Version aligned with the suite.

Update Recommendation

  • Keep all four Remastered mods on 30.5.2 together: they are built and tested as one suite. The End fixes are in BetterEnd and BCLib, the Nether fixes in BetterNether.
  • If you run C2ME or another parallel chunk generation mod, update BetterEnd in any case. 30.5.1 and older can corrupt End chunks and hang the server when mountains or lakes are generated.
  • If your pack relies on Cincinnasite ingots as an iron replacement in the recipes listed above, update with care or change those recipes in your pack.
  • Existing worlds need no migration: the height cache keeps the same semantics (first value per column wins), so no new seams are expected between chunks generated with 30.5.1 and with 30.5.2.
  • What was tested how: the crash fix and the fluid tick fix were run on the test server described above (numbers under BetterEnd). BetterEnd's unit tests pass (6 of 6: 5 ColumnCacheTest including a 16-thread test, 1 FlowerPotModelTest). The other fixes (voxel pieces, plant and scatter features, SDF features, End pillars, BCLib, the Nether city, palette and caves changes) and the Cincinnasite tag change were checked by compiling and by the server run not reporting errors, not by targeted tests in the game.

This mod has no additional files