BCLib is primarily a mod library for BetterEnd, BetterNether, Eden Ring and possible future mods from the BetterX team.
Furthermore, BCLib creates compatibility between different Nether/End mods. This allows Biomes from different DataPacks and mods to generate in your world. For this (and many other features) BCLib uses its own world type: BetterX.
The library can be used by other developers to create their own mods. If you have suggestions or extensions, we are open to discussions and pull requests.
Key Features
- Block templates for common types (plants with seedlings, wood types, signs, ...)
- Simple API to create your own biomes, features, structures and much more
- SurfaceRule/MaterialRule registry. This makes it possible for mods and datapacks to define additional SurfaceRules/MaterialRules for a dimension without editing/copying the vanilla rules.
- API to create own world types
- Manage tags
- Simple UI layout toolkit
- Recipe management
- SDF tools
- Config system with automatic synchronization between client/server
- Manage world specific data
- And many smaller extensions like color helper, block/item management, world patchers, etc.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
| 16h ago | 1 | ||||
|
A
21.0.13
|
16h ago | 1 | |||
|
A
21.0.12
|
16h ago | 1 | |||
|
A
21.0.11
|
16h ago | 1 | |||
|
A
21.0.10
|
16h ago | 1 | |||
|
A
21.0.9
|
16h ago | 1 | |||
|
A
21.0.8
|
16h ago | 1 | |||
|
A
21.0.7
|
16h ago | 1 | |||
|
A
21.0.6
|
16h ago | 1 | |||
|
A
21.0.5
|
16h ago | 1 | |||
|
A
21.0.4
|
16h ago | 1 | |||
|
A
21.0.3
|
16h ago | 1 | |||
|
A
21.0.2
|
16h ago | 1 | |||
|
A
21.0.1
|
16h ago | 1 | |||
|
A
21.0.0
|
16h ago | 1 | |||
|
B
2.3.5
|
16h ago | 1 | |||
|
B
2.2.5
|
16h ago | 1 | |||
|
R
2.1.8
|
16h ago | 1 | |||
|
B
3.30.1
|
16h ago | 1 | |||
|
R
3.0.14
|
16h ago | 1 | |||
|
A
3.30.0
|
16h ago | 1 | |||
|
R
3.0.13
|
16h ago | 1 | |||
|
R
3.0.12
|
16h ago | 1 | |||
|
R
3.0.11
|
16h ago | 1 | |||
|
B
3.0.10
|
16h ago | 1 | |||
|
B
3.0.9
|
16h ago | 1 | |||
|
B
3.0.8
|
16h ago | 1 | |||
|
B
2.3.4
|
16h ago | 1 | |||
|
B
3.0.7
|
16h ago | 1 | |||
|
B
3.0.6
|
16h ago | 1 | |||
|
B
2.3.3
|
16h ago | 1 | |||
|
B
3.0.5
|
16h ago | 1 | |||
|
B
3.0.4
|
16h ago | 1 | |||
|
B
3.0.3
|
16h ago | 1 | |||
|
A
3.0.2
|
16h ago | 1 | |||
|
A
3.0.1
|
16h ago | 1 | |||
|
R
2.1.7
|
16h ago | 1 | |||
|
A
3.0.0
|
16h ago | 1 | |||
|
B
2.3.2
|
16h ago | 1 | |||
|
B
2.3.1
|
16h ago | 1 | |||
|
B
2.3.0
|
16h ago | 1 | |||
|
R
2.1.6
|
16h ago | 1 | |||
|
B
2.2.4
|
16h ago | 1 | |||
|
B
2.2.3
|
16h ago | 1 | |||
|
R
2.1.5
|
16h ago | 1 | |||
|
B
2.2.2
|
16h ago | 1 | |||
|
B
2.2.1
|
16h ago | 1 | |||
|
B
2.2.0
|
16h ago | 1 | |||
| 16h ago | 1 | ||||
|
R
2.1.4
|
16h ago | 1 | |||
|
R
2.1.3
|
16h ago | 1 | |||
|
R
2.1.2
|
16h ago | 1 | |||
|
R
2.1.1
|
16h ago | 1 |
- WeightedTemplateModelTrait can dispatch a model over three properties
- SaplingBlockTrait.ticking(): the sapling behaviour without the bundle
- Composting rates snap to a fixed set of tiers
#### Fixes
- World fixer aborted on backpacks holding a non-string "id"
- Patches supplying only a chunk or block-state patcher never ran
- Stalactite tip did not re-render as pointy after mining the block beyond it
- Compostable items could not be composted by a hopper
- WeightedTemplateModelTrait can dispatch a model over three properties
- SaplingBlockTrait.ticking(): the sapling behaviour without the bundle
- Composting rates snap to a fixed set of tiers
#### Fixes
- Stalactite tip did not re-render as pointy after mining the block beyond it
- Compostable items could not be composted by a hopper
- 2x2 saplings can grow a large tree variant
- Let the world fixer reach the data it was missing
- Sulfur cube archetypes for terrain and furniture
#### Changes
- CustomColorProvider moved to wover
- Track world patch levels as 64-bit versions
- Filter disabled recipes in the lookup, not over the finished map
- Drop the unused bclib Noises helper
- Let SurvivesOnSolidTrait work for plants that are not VegetationBlocks
#### Fixes
- Hammer lookup was empty on a client connected to a server
- AnvilRecipe.canUse always returned false
- Stalactites did not drop anything when mined
- Bonemeal on nylium-like blocks only grew a plant on the clicked block
- World backups silently failed and did not block the DataFixer
- Passive plant growth never ran, only manual bonemeal did
- Migrate the IDs that moved out of BCLib
- Old worlds using our generators no longer fail to load
- Wall plants clung to half-block leaves and floated
- Ruined structures eroded differently on every run
- Leaves items rendered as flat sprites instead of cubes
- Bonemeal crashing servers, and creative bone meal took two clicks
- Document the units of LeavesBlockTrait's saplingDropChance
- Sapling items rendered at block scale instead of vanilla size
- Anvil recipes were missing from JEI on a dedicated server
- Add JEI support for Alloying and per-level Anvil recipes
- 2x2 saplings can grow a large tree variant
#### Changes
- Removed FuelBlockTrait, replaced by the WoVer Trait
- CustomColorProvider moved to wover
#### Fixes
- JEI recipe categories were empty against a dedicated server
- Old worlds hang at 100% on the loading screen
- Stalactites did not drop anything when mined
- Bonemeal on nylium-like blocks only grew a single plant instead of scattering
- World backups silently failed and did not block the DataFixer
- Passive plant growth never ran, only manual bonemeal did
- 2x2 saplings can grow a large tree variant
#### Changes
- CustomColorProvider moved to wover
#### Fixes
- Anvil recipes were missing from JEI on a dedicated server
- Stalactites did not drop anything when mined
- Bone meal on nylium-like blocks only grew the clicked block
- 2x2 saplings can grow a large tree variant if available
- Let the world fixer reach the data it was missing
#### Changes
- CustomColorProvider moved to wover
- Track world patch levels as 64-bit versions
- Drop the unused bclib Noises helper
#### Fixes
- Bone meal only grew a plant on the block that was clicked
- Stalactites did not drop anything when mined
- World backups silently failed and did not block the DataFixer
- Passive plant growth never ran, only manual bonemeal did
- Migrate the IDs that moved out of BCLib
- Old worlds using our generators no longer fail to load
- Wall plants clung to half-block leaves and floated
- Ruined structures eroded differently on every run
- Let the world fixer reach the data it was missing
#### Changes
- Track world patch levels as 64-bit versions
- Drop the unused bclib Noises helper
- Let SurvivesOnSolidTrait work for plants that are not VegetationBlocks
#### Fixes
- World backups silently failed and did not block the DataFixer
- Passive plant growth never ran, only manual bonemeal did
- Migrate the IDs that moved out of BCLib
- Old worlds using our generators no longer fail to load
- Wall plants clung to half-block leaves and floated
- Ruined structures eroded differently on every run
- Let the world fixer reach the data it was missing
#### Changes
- Track world patch levels as 64-bit versions
- Drop the unused bclib Noises helper
#### Fixes
- Wall plants clung to half-block leaves and floated
- Migrate the IDs that moved out of BCLib
- Old worlds using our generators no longer fail to load
- Remove the unused FullReferenceHolder
- vanilla Chain parent name
- duplicate chest sprite warnings by dropping legacy blocks-atlas source
- Leaves items rendered as flat sprites instead of cubes
- Let SurvivesOnSolidTrait work for plants that are not VegetationBlocks
- Ruined structures eroded differently on every run
- Sulfur cube archetypes for terrain and furniture
#### Changes
- Let SurvivesOnSolidTrait work for plants that are not VegetationBlocks
#### Fixes
- Leaves items rendered as flat sprites instead of cubes
- Bonemeal crashing servers, and creative bone meal took two clicks
- Document the units of LeavesBlockTrait's saplingDropChance
- Sapling items rendered at block scale instead of vanilla size
- Sulfur cube archetypes for terrain
#### Changes
- Let SurvivesOnSolidTrait work for plants that are not VegetationBlocks
#### Fixes
- Leaves items rendered as flat sprites instead of cubes
- Bonemeal crashing servers, and creative bone meal took two clicks
- Document the units of LeavesBlockTrait's saplingDropChance
- Sapling items rendered at block scale instead of vanilla size
- Creative bone meal took two clicks on every feature sapling
- Bonemeal crashing servers
- Document the units of LeavesBlockTrait's saplingDropChance
- Leaves items rendered as flat sprites instead of cubes
- Sapling items rendered at block scale instead of vanilla size
- Creative bone meal took two clicks on every feature sapling
- Document the units of LeavesBlockTrait's saplingDropChance
- Sapling items rendered at block scale instead of vanilla size
- duplicate chest sprite warnings by dropping legacy blocks-atlas source
- Build for 26.2
- Let SDF and spline fills be bounded and fitted to a write zone
#### Changes
- Add a see-through-but-conducting variant to GlassBlockTrait
#### Fixes
- duplicate chest sprite warnings by dropping legacy blocks-atlas source
- Fuel had no runtime effect at all
- Carry vanilla's whole glass property recipe in a trait
- Let SDF and spline fills be bounded and fitted to a write zone
#### Changes
- Add a see-through-but-conducting variant to GlassBlockTrait
#### Fixes
- duplicate chest sprite warnings by dropping legacy blocks-atlas source
- Fuel had no runtime effect at all
- Carry vanilla's whole glass property recipe in a trait
- Let SDF and spline fills be bounded and fitted to a write zone
#### Changes
- Add a see-through-but-conducting variant to GlassBlockTrait
#### Fixes
- anvil recipes ignored their input
- Fuel had no runtime effect at all
- Carry vanilla's whole glass property recipe in a trait
- Build for 26.3 snapshot 6
- Let a spline be fitted to a write zone instead of clipped
- Let SDF and spline fills be bounded to a write zone
#### Changes
- Add a see-through-but-conducting variant to GlassBlockTrait
- Removed
FuelBlockTrait, replaced by the WoVer Trait
#### Fixes
- Carry vanilla's whole glass property recipe in a trait
- Audit every mixin and accesswidener entry against the 26.3 jar
- Fuel had no runtime effect at all
- anvil recipes ignored their input
- Add JEI support for Alloying and per-level Anvil recipes
#### Changes
- Remove the unused FullReferenceHolder
- Removed
FuelBlockTrait, replaced by the WoVer Trait
#### Fixes
- anvil recipes ignored their input
- Create compostable plants with different OffsetTypes
#### Fixes
- Guard BaseFurnaceBlock/LeveledAnvilBlock buildModel with ModCore.isDatagen()
- Create compostable plants with different OffsetTypes
#### Fixes
- vanilla Chain parent name
- Build for 26.1
#### Fixes
- accesswidener: remove two entries orphaned by the 26.1 port
- AdvancementManager: build advancement display icons as ItemStackTemplate
- SurvivesOn: shared decoration-support predicate + generated tooltip (survives-audit)
- CompostableItemTrait + item-aware composter resolution
- Add PlantBlockTrait.groundCrossPlant() micro-fold
- Add render-layer flag to LeavesBlockTrait for BN Leaves fold
- Extend PlantBlockTrait/LeavesBlockTrait for cross-mod plant-family fold
- FurnitureTraits in bclib trait/block
- LootTraits/RecipeTraits in bclib trait/block
- FuelBlockTrait in bclib trait/block
- Add TerrainTraits composite
- Add TraitLists trait-list combinators
#### Changes
- Adopt wover's common model-trait seam
- plant/leaves/vine family gains minecraft:sword_efficient
- Match vanilla leaf flammability (30/60) in LeavesBlockTrait
- Retire BehaviourHelper: explicit choices at furniture/plate call sites
- Random-tick UnderwaterPlantWithAgeBlock for End aged-seed merge
- Make plant-family base classes concrete for End consolidation
- Plant-adjacent merges: anvil layer, hanging sapling, wall mushroom
- Reparent glass shim, delete dead pillar/bars/path shims
- Delete BaseBlock full-cube shim, reparent subclasses to Block
- Hoist StalactiteBlockTrait to BCLib
- Hoist TerrainBlockTrait/CopyPropertiesBlockTrait to BCLib
- Remove BehaviourBuilders
- Move BaseVineBlock's light/color/offset property mutation to registration sites
- Strip BehaviourBuilders convenience constructor from UnderwaterPlantWithAgeBlock, WallMushroomBlock, UpDownPlantBlock,
#### Fixes
- Guard BaseFurnaceBlock/LeveledAnvilBlock buildModel with ModCore.isDatagen()
- Read block compostability from the trait at composter-use time
- PathBlockTrait grants mineable/pickaxe to path blocks
- Pin Gradle daemon JVM to 21: test task creation crashed on JDK 25 daemons
- Build for 1.21.6-1.21.8
- Common Block Traits
#### Changes
- Grass-like plants no longer carry the hoe mineable tag
- Give vines the same random X-Z offset as ground plants
- Give ground plants the vanilla random X-Z model offset via PlantBlockTrait
- Removed Legacy classes and API
- Added SOIL Tag
#### Fixes
- Leaves are no longer replaceable
- Mark walkable offset-plants as dynamicShape
- World fixer no longer hangs at 0% when backup is enabled
- Give leaves solid collision by default
- Missing Tags for Armor Items
- Tried to load hammers from an uninitialize registry
- Bark Blocks had wrong top/bottom texture
- Datagen for Furnace Models
#### Fixes
- EMI is not initialized
- Allow Minecraft 1.21.1
- Vine Block-Tag
#### Changes
- Improved Vine-Block Behaviour
- Make sure build Script sets the correct modid, otherwise all mods depending on BCLIb will call it's data generator
- Do not call built-in BiomeTag Provider
- Added Metal Wall Variant
- Conforming to new Fabric Convention Tags
- Moved POI-API to WorldWeaver
#### Fixes
- Shear handling in Loot-Tables
- Only bottom half of chair should drop a chair item when destroyed
- Proper Tags for Obsidian
- Use changed DataComponent API
- Ensure that Alloying and Anvil Recipes call the custom item-stack setup code for output
#### Fixes
- Spelling Error in Stripped Blocks
- Wrong Models for Slab and Pillar Blocks
- Some Blocks have an empty loot table
- Drop Behaviour for Chests is diffrent than vanilla
- Removed duplicate data
- BookShelfs use correct top texture
- Config Files were not registered