https://github.com/akirasumeragi699-design/bsl
bsl is byby standard library
https://github.com/akirasumeragi699-design/bsl
bsl fabric fabric-mod fabricmc fabricmc-mod gradle-java java javalib javalibrary minecraftlibrary
Last synced: 2 months ago
JSON representation
bsl is byby standard library
- Host: GitHub
- URL: https://github.com/akirasumeragi699-design/bsl
- Owner: akirasumeragi699-design
- License: apache-2.0
- Created: 2025-08-09T04:47:16.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2025-08-09T05:53:15.000Z (2 months ago)
- Last Synced: 2025-08-09T06:22:26.131Z (2 months ago)
- Topics: bsl, fabric, fabric-mod, fabricmc, fabricmc-mod, gradle-java, java, javalib, javalibrary, minecraftlibrary
- Language: Java
- Homepage:
- Size: 216 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
bsl (byby standard library) - Fabric Helper Library Documentationbsl (byby standard library) - Fabric Helper Library Documentation
Overview
bsl is a lightweight helper library designed to supplement Fabric mod development by providing convenient APIs for UI buttons, keybindings, client tick events, resource reload handling, and JSON config management. It aims to help mod developers easily add features common to Fabric mods, enabling feature parity closer to Quilt and other mod loaders.
Integration
1. Using bsl as part of your mod source code
If you are developing your Fabric mod and want to use bsl directly within the same project (recommended for easy debugging and iteration):
- Include the entire
bsl
source code inside your project'ssrc/main/java
directory under thebsl
package. - In your mod code, import and use bsl normally:
import bsl.bsl;
public class MyModClient implements ClientModInitializer {
@Override
public void onInitializeClient() {
// Register a button on a specific screen
bsl.addButton(SomeScreen.class, "Click me!", 10, 10, 100, 20, () -> {
System.out.println("Button clicked!");
});
// Register client tick event
bsl.onClientTick(() -> {
// Your tick logic here
});
}
}
No special build setup is needed beyond standard Fabric Loom configuration.
2. Using bsl as a separate JAR dependency
If you want to distribute bsl as a standalone library for reuse in multiple projects or keep it modular:
- Build bsl into a JAR file.
- Add it to your mod’s
libs
folder or publish it to a Maven repository. - Add the dependency in your
build.gradle
file:
dependencies {
modImplementation files('libs/bsl.jar')
// or if published:
// modImplementation 'com.byby:bsl:1.0.0'
}
Import bsl in your mod code as usual:
import bsl.bsl;
Make sure the Fabric API and Minecraft dependencies are consistent across your mod and bsl builds.
Features
Screen Button Registry
Easily register buttons on any Minecraft screen.
bsl.addButton(SomeScreen.class, "Button Text", x, y, width, height, () -> {
// Button pressed action
});
Client Tick Events
Register callbacks that run every client tick.
bsl.onClientTick(() -> {
// Tick logic
});
Resource Reload Events
Register callbacks for resource reload events.
bsl.onResourceReload(manager -> {
// Reload logic
});
Keybinding API
Register and query keybindings simply.
KeyBinding myKey = bsl.registerKey("key.my_mod.my_key", GLFW.GLFW_KEY_K);
if (bsl.isKeyPressed(myKey)) {
// Do something when key is pressed
}
JSON Config API
Save/load JSON config files in the config folder.
MyConfig cfg = bsl.loadConfig("myconfig.json", MyConfig.class, new MyConfig());
bsl.saveConfig("myconfig.json", cfg);
Important Notes
- bsl depends on Fabric API and Minecraft classes and must be compiled with Fabric Loom and appropriate mappings.
- When including bsl source in your mod project, make sure your IDE and build system recognize the package structure correctly.
- When building bsl as a JAR, ensure that the target Minecraft and Fabric API versions match those of your mod to avoid runtime incompatibilities.
- Some @Shadow warnings during compilation may appear if the target methods or fields are missing in the Minecraft version used; these usually do not prevent the mod from working but should be addressed for clean builds.
Example: Basic usage in a mod client initializer
package mymod;
import bsl.bsl;
import net.fabricmc.api.ClientModInitializer;
import net.minecraft.client.gui.screen.TitleScreen;
public class MyModClient implements ClientModInitializer {
@Override
public void onInitializeClient() {
bsl.addButton(TitleScreen.class, "Hello bsl!", 10, 10, 100, 20, () -> {
System.out.println("Button clicked!");
});
}
}