BCLib/README.md
2022-06-30 08:18:45 +02:00

146 lines
4.3 KiB
Markdown

[![](https://jitpack.io/v/quiqueck/BCLib.svg)](https://jitpack.io/#quiqueck/BCLib)
# 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