Library used by the Better* Mods
.github/ISSUE_TEMPLATE | ||
gradle/wrapper | ||
src/main | ||
WunderLib@5a10569141 | ||
.gitignore | ||
.gitmodules | ||
bclib-composit.gradle | ||
bclib.gradle | ||
bclib_banner.png | ||
BetterX_CodeFormat.xml | ||
build.gradle | ||
gradle.properties | ||
gradlew | ||
gradlew.bat | ||
javadoc.css | ||
jitpack.yml | ||
LICENSE | ||
LICENSE.ASSETS | ||
README.md | ||
settings.gradle |
BCLib
BCLib is a library mod for BetterX team mods, developed for Fabric, MC 1.19
Importing:
You can easily include BCLib into your own mod by adding the following to your build.gradle
:
repositories {
...
maven { url 'https://jitpack.io' }
}
dependencies {
...
modImplementation "com.github.quiqueck:BCLib:${project.bclib_version}"
}
You should also add a dependency to fabirc.mod.json
. BCLib uses Semantic versioning, so adding the dependcy as follows
should respect that and ensure that your mod is not loaded with an incompatible version of BCLib:
"depends": {
...
"bclib": "2.0.x"
},
"breaks": {
"bclib": "<2.0.6"
}
In this example 2.0.6
is the BCLIb Version you are building against.
Features:
Rendering
- Emissive textures (with _e suffix)
- Can be applied to Solid and Transparent blocks;
- Can be changed/added with resourcepacks;
- Incompatible with Sodium and Canvas (just will be not rendered);
- Incompatible with Iris shaders (Iris without shaders works fine).
- Procedural block and item models (from paterns or from code);
- Block render interfaces.
API:
- Simple Mod Integration API:
- Get mod inner methods, classes and objects on runtime.
- Structure Features API:
- Sructure Features with automatical registration, Helpers and math stuff.
- World Data API:
- World fixers for comfortable migration between mod versions when content was removed;
- Support for Block name changes and Tile Entities (WIP).
- Bonemeal API:
- Add custom spreadable blocks;
- Add custom plants grow with weight, biomes and other checks;
- Custom underwater plants.
- Features API:
- Features with automatical registration, Helpers and math.
- Biome API:
- Biome wrapper around MC biomes;
- Custom biome data storage;
- Custom fog density.
- Tag API:
- Pre-builded set of tags;
- Dynamical tag registration with code;
- Adding blocks and items into tags at runtime.
Libs:
- Spline library (simple):
- Helper to create simple splines as set of points;
- Some basic operation with splines;
- Converting splines to SDF.
- Recipe manager:
- Register recipes from code with configs and ingredients check.
- Noise library:
- Voronoi noise and Open Simplex Noise.
- Math library:
- Many basic math functions that are missing in MC.
- SDF library:
- Implementation of Signed Distance Functions;
- Different SDF Operations and Primitives;
- Different materials for SDF Primitives;
- Block post-processing;
- Feature generation using SDF.
Helpers And Utils:
- Custom surface builders.
- Translation helper:
- Generates translation template.
- Weighted list:
- A list of objects by weight;
- Weighted Tree:
- Fast approach for big weight structures;
- Block helper:
- Some useful functions to operate with blocks;
Complex Materials
- Utility classes used for mass content generation (wooden blocks, stone blocks, etc.);
- Contains a set of defined blocks, items, recipes and tags;
- Can be modified before mods startup (will add new block type for all instances in all mods);
- All inner blocks and items are Patterned (will have auto-generated models with ability to override them with resource packs or mod resources).
Pre-Defined Blocks and Items:
- Most basic blocks from MC;
- Automatic item & block model generation;
Configs:
- Custom config system based on Json;
- Hierarchical configs;
- Different entry types;
- Only-changes saves.
Interfaces:
- BlockModelProvider:
- Allows block to return custom model and blockstate.
- ItemModelProvider:
- Allows block to return custom item model.
- CustomColorProvider:
- Make available to add block and item color provider.
- RenderLayerProvider:
- Determine block render layer (Transparent and Translucent).
- PostInitable:
- Allows block to init something after all mods are loaded.
- CustomItemProvider:
- Allows block to change its registered item (example - signs, water lilies).
Building:
- Clone repo
- Run command line in folder: gradlew build
- Mod .jar will be in ./build/libs