promotional bannermobile promotional banner

BCLib: Remastered

BCLib Remastered is a powerful core library and API for Minecraft Fabric 1.21.1. It provides essential shared utilities, rendering tools, custom configs, and procedural models for BetterEnd and BetterNether. Specially optimized for modern modpacks!

File Details

BCLibRemastered-30.4.0.jar

  • R
  • May 9, 2026
  • 1.53 MB
  • 2.2K
  • 1.21.1
  • Fabric

File Name

BCLibRemastered-30.4.0.jar

Supported Versions

  • 1.21.1

Curse Maven Snippet

Fabric

modImplementation "curse.maven:bclib-remastered-1501730:8063603"
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

Remastered Mod Suite Update - 30.4.0

Supported Version

  • Minecraft 1.21.1 (Fabric)

Mods Updated

  • BCLibRemastered 30.4.0
  • BetterEndRemastered 30.4.0
  • BetterNetherRemastered 30.4.0
  • WorldWeaverRemastered 30.4.0

Major Changes

Configurable BetterEnd and BetterNether Core Worldgen Rates

  • Added config-backed multiplier overrides for BetterEnd and BetterNether core worldgen behavior.
  • New files are generated automatically when missing:
    • config/betterend/worldgen_rates.json
    • config/betternether/worldgen_rates.json
  • Default generated entries use 1.0, preserving existing worldgen behavior.
  • 0.0 disables an entry, 0.5 roughly halves it, and 2.0 roughly doubles it (sliders in-game clamp to 0.010.0).
  • Malformed, negative, or missing values are normalized safely when configs are loaded and saved.
  • Every supported entry is now exposed in the BetterEnd and BetterNether ModMenu config screens (Biomes, Structure Sets, Placed Features, Mob Spawns groups), so multipliers can be tweaked in-game without editing JSON.
  • JSON entries are now generated for every discovered biome, structure set, placed feature, and biome spawner – including modded/datapack additions – instead of only the legacy hardcoded list.
  • Custom keys added by the user to the JSON file are preserved on save and remain visible in the ModMenu UI on next launch.

Supported Rate Categories

  • Added biome generation chance multipliers for BetterEnd and BetterNether biomes.
  • Added structure-set frequency multipliers for BetterEnd and BetterNether core structures.
  • Added placed-feature multipliers for generated BetterEnd and BetterNether features.
  • Added mob spawn weight multipliers for generated BetterEnd and BetterNether biome spawns.
  • Added BetterNether vanilla Nether biome spawn override support for biome-modification spawns.

WorldWeaver Integration

  • Added a shared WorldWeaver worldgen-rate override API used by both mods.
  • Applied biome multipliers in Wover biome picker rebuilds, sub-biome selection, and Fabric End biome registration.
  • Applied structure multipliers to RandomSpreadStructurePlacement from original registry values before level generation.
  • Applied placed-feature multipliers from original registry placement values.
  • Applied mob-spawn multipliers both during biome construction and biome-modification application.

Worldgen Stability and Correctness Fixes

  • Fixed WoverNetherConfig equality/repair checks so changes to biome_size, biome_size_vertical, and use_vertical_biomes are detected correctly for existing worlds.
  • Fixed MapStack.getChunk() returning null (now returns a sensible chunk view instead of violating the BiomeMap contract).
  • Made surface-rule injection idempotent by preserving the true original NoiseGeneratorSettings.surfaceRule.
  • Fixed Nether surface-rule merge logic so WoVer additional rules are inserted once (no duplication at each biome test).
  • Hardened biome modification application so generation/mob settings are always re-frozen even if a modification throws.
  • Fixed early biome-source binding: biome sources no longer mark themselves “bound” when registry access is missing (they retry later instead of sticking to an empty biome set).
  • Fixed biome-source merging so foreign biomes are not force-tagged into Nether/End defaults when they don’t match any accepted tag.
  • Hardened WoverBiomePicker against use-before-rebuild (lazy rebuild + explicit error if still uninitialized).
  • Made ThresholdConditionImpl deterministic and thread-safe by removing shared mutable per-seed caching and using position-derived randomness.
  • Isolated optional TerraBlender bridge sources so missing/incorrect TerraBlender artifacts can’t break the main build.

Additional Bug Fixes

  • BCLibRemastered

    • Fixed IronBars-style runtime multipart rendering (Fabric CustomModelBakery path): the center post is shown consistently so bars don’t look “stuck” when neighboring connections update. This applies to blocks that extend BaseBarsBlock and do not ship a disk blockstates/*.json.
    • Fixed BaseBarsBlock programmatic multipart to match vanilla iron_bars geometry pairing (north/east → _side at y 0° / 90°, south/west → _side_alt at 0° / 90°, instead of reusing one side mesh everywhere). Nested bar pieces load reliably via resourceId() in modifyModelOnLoad, and registerBlockModel keys patterns off the resolved target model id (_post / _side / _side_alt).
  • BetterEndRemastered

    • Fixed Terminite and Thallasium metal bars rendering with wrong orientation (stuck east–west): they now bundle multipart blockstates plus models/block (_post, _side, _side_alt). The multipart wiring matches vanilla iron bars (north/east _side, south/west _side_alt, rotations). Model geometry and texture slots match BCLib’s bars_post / bars_side / bars_side_alt patterns (the same look upstream BetterEnd used via runtime models), not BetterNether’s thinner Cincinnasite bar meshes. Disk assets skip the BCLib runtime bakery for these blocks; BaseBarsBlock.Metal and hardness are unchanged (models/item for inventory).
    • Fixed respawn-obelisk safety checks using the wrong position when evaluating collision shapes.
    • Fixed a Sodium compatibility crash risk: water-color sampling now falls back safely when client.level is null.
    • Fixed a client crash risk in ritual-update packet handling by ignoring updates when the client world is not available.
    • Fixed a crash/compatibility risk in NoiseChunk init by replacing an unsafe cast with an instanceof guard.
    • Fixed EndBiomeKey bootstrapping exception message referencing the wrong biome-key type.
    • Fixed EndPortals.getColor potentially crashing on invalid portal ids or missing portal state (now returns a safe default).
    • Fixed CrystaliteArmorRenderer returning null models for unsupported slots (now returns a safe default model).
    • Fixed a divide-by-zero / NaN risk in HelixTreeFeature spline interpolation for degenerate segments.
    • Fixed a null return in TunelCaveFeature.generate(..., radius, ...) (now returns an empty set).
    • Fixed /be tpnext potentially crashing if no matching biome is found (null-safe closest-biome lookup).
    • Replaced System.out.println debug output in /be locate_portal* commands with proper debug logging.
    • Fixed /locate structure betterend:giant_ice_star causing a critical lockup/crash: Ice Star pieces are now generated lazily (voxel buffer isn’t built during locate probing), preventing the world from “breaking” until restart.
    • Improved Ice Starfield placement stability: ice-star structures/features now pick their Y level relative to the local surface (with a controlled offset) instead of using a raw random 32–128 range, reducing odd “too low / intersecting / too high” floating placements.
    • Fixed structure piece NBT robustness:
      • Fixed NBTPiece clamping using boundingBox.maxX as a Y coordinate (now correctly uses maxY).
      • Hardened NBTPiece rotation/mirror loading against invalid ordinals (safe fallback instead of crashing).
      • Prevented rare NPEs when saving/loading lake/mountain pieces with missing biome keys (safe default biome id).
    • Fixed Better End music discs missing/broken name/description rendering: discs now always append the translated .desc tooltip line (and removed raw § formatting codes from the English disc strings).
    • Fixed armored elytra and crystalite elytra wing rendering: the client elytra layer only drew wings for vanilla minecraft:elytra, so Better End custom elytra never showed wings; rendering now respects BCLElytraItem and the same chest / Trinkets elytra stack resolution as gameplay.
    • Fixed elytra-compatible enchant support for those items (e.g. modded enchantments gated on vanilla chest-slot tags): ArmoredElytra overwrote tag registration without super, skipping minecraft:chest_armor; restored super registration and added minecraft:enchantable/chest_armor_enchantable, plus datapack merges listing both elytras under minecraft:tags/item/chest_armor.json and minecraft:tags/item/enchantable/chest_armor_enchantable.json.
    • Fixed crashed End ship loot (and compatibility with Lootr-style conversion): BlockFixer no longer removes loot-table chests (RandomizableContainerBlockEntity) when their support is broken after erosion, so seeded loot and third-party loot-chest conversions can still see a valid chest. Also fixed CrashedShipFeature chunk Z mistakenly using X, and aligned structure placeInWorld flags (4) with other NBT feature placement.
    • Fixed custom End sky (nebula / stars) not drawing when BCLib custom fog is off or skipped: the sky used a stale BackgroundInfo.blindness value (only updated on the custom-fog path), which could stay at full strength and zero out all sky layers. Sky visibility now follows the camera entity’s Blindness effect; BCLib also clears BackgroundInfo.blindness when custom fog rendering is disabled.
    • Dev/debug items are no longer generated automatically in dev environments. They now require an explicit config toggle: debug.enable_dev_items (default false).
    • BetterEnd Items creative tab icon is now the Thallasium Sword.
    • Renamed creative tab label “BetterEnd: Plants” to “BetterEnd: Nature”.
  • BetterNetherRemastered

    • Fixed BlockStatueRespawner occlusion/culling voxel shape containing an out-of-range coordinate (12212).
    • Fixed /bn place structure reporting success while doing nothing (now delegates to vanilla structure placement logic and actually places the selected structure at the command position).
    • Wired BetterNether legacy/procedural terrain passes (caves, paths, block_fix) back into worldgen via placed-features + biome modifications (excluded from upside_down_forest* which intentionally disables BN feature batches).
    • Removed noisy Nether City debug logging (BBox:) during structure generation.
    • Dev/debug items are no longer generated automatically in dev environments. They now require an explicit config toggle: debug.enable_dev_items (default false).
    • Fixed Nether “destruction” structure-piece not applying due to swapped loop bounds (now actually modifies blocks in its bounding box).
  • WorldWeaverRemastered

    • Fixed creative tab / EMI / REI item ordering being effectively random: WoVer ItemRegistry now provides a deterministic item stream sorted by item id (namespace + path).

Worldgen Behavior Changes

  • WorldWeaverRemastered
    • The bundled WoVer world presets (normal, large, amplified) now default the End biome-source generator_version to paulevs (instead of vanilla) when Nullscape is not present, enabling BetterEnd’s custom End terrain pipeline by default in new worlds.

Update Recommendation

  • Keep all four Remastered mods on 30.4.0 together.
  • Delete the new worldgen_rates.json files at any time to regenerate default 1.0 entries.
  • Changes affect newly generated chunks and newly loaded worldgen state, not chunks that already exist.