Prerequisites
Before you begin, ensure you have the following installed:Java Development Kit
JDK 17 or higher
Git
For cloning the repository
Node.js
Required for theme development
Gradle is included via the wrapper, so you don’t need to install it separately.
Initial Setup
Running the Client
Development Mode
Run the client directly from your IDE or terminal:Run Configurations
- IntelliJ IDEA
- VS Code
- Eclipse
- Gradle should auto-create run configurations
- Look for “Minecraft Client” in the run configurations dropdown
- Click the play button to launch
Building from Source
Production Build
Build the final JAR file:Build Variants
Gradle Tasks
Common Tasks
runClient
runClient
Runs the Minecraft client with LiquidBounce in development mode.
build
build
Compiles the project and creates the JAR file.
clean
clean
Removes all build artifacts.
genSources
genSources
Generates decompiled Minecraft source code for reference.
test
test
Runs the test suite.
Theme Tasks
The theme is built using Node.js:Mixin Development
LiquidBounce uses Mixins to inject code into Minecraft classes.What are Mixins?
Mixins allow you to modify Minecraft’s code at runtime without directly editing Mojang’s copyrighted source code.
Creating a Mixin
Mixin Injection Points
Inject code at a specific point in a method
Modify a local variable’s value
Redirect a method call to your own implementation
Modify constant values
Common Injection Patterns
- Method Entry
- Method Exit
- Cancellable
- Method Call
Mixin Best Practices
Use Descriptive Names
Name mixins after the class they modify:
MixinMinecraftMinimize Injections
Only inject where absolutely necessary
Document Purpose
Add comments explaining why the mixin exists
Test Thoroughly
Test mixins with different game states
Contributing
We welcome contributions to LiquidBounce!Contribution Workflow
Code Style Guidelines
Kotlin Conventions
Kotlin Conventions
- Follow Kotlin coding conventions
- Use 4 spaces for indentation
- Maximum line length: 120 characters
- Use meaningful variable names
Comments
Comments
- Document public APIs with KDoc
- Explain complex logic with inline comments
- Keep comments up-to-date with code changes
File Organization
File Organization
- Place files in appropriate packages
- Keep related code together
- Avoid circular dependencies
Naming
Naming
- Classes: PascalCase (e.g.,
ModuleKillAura) - Functions: camelCase (e.g.,
attackEntity) - Constants: SCREAMING_SNAKE_CASE (e.g.,
MAX_DISTANCE)
Pull Request Guidelines
One feature or fix per PR
Clear and descriptive title
Detailed description of changes
Screenshots/videos for UI changes
All tests passing
No merge conflicts
License Compliance
GPL v3.0 Requirements
For full license details, see the GPL v3.0 license.
Project Structure
Debugging
IntelliJ IDEA Debugger
Remote Debugging
For debugging in production:Troubleshooting
Gradle build fails
Gradle build fails
- Try
./gradlew clean build --refresh-dependencies - Check you’re using JDK 17 or higher
- Ensure internet connection for dependency downloads
Client won't start
Client won't start
- Check the run configuration is correct
- Look for errors in the IDE console
- Try regenerating sources:
./gradlew genSources
Mixin not applying
Mixin not applying
- Verify the mixin is registered in
liquidbounce.mixins.json - Check the target class/method names are correct
- Look for mixin errors in the log
Theme not building
Theme not building
- Ensure Node.js is installed
- Run
npm installinsrc-theme/ - Check for errors in theme build output
Resources
Mixin Documentation
Official Mixin framework documentation
Fabric Wiki
Fabric modding documentation
Kotlin Docs
Official Kotlin documentation
GitHub Issues
Report bugs and request features
Community
Discord
Join our Discord server
Forum
Community forums
YouTube
Video tutorials and updates