Getting Started
Before You Contribute
- Check existing issues - Look for existing issues or feature requests
- Discuss major changes - Open an issue first for significant changes
- Read the coding standards - Follow the project’s coding conventions
- Test your changes - Ensure everything works as expected
Ways to Contribute
- Report bugs and issues
- Suggest new features
- Submit pull requests
- Improve documentation
- Help with translations
Reporting Issues
If you notice bugs or missing features, open an issue on GitHub: github.com/CCBlueX/LiquidBounce/issuesBug Reports
When reporting bugs, include:- LiquidBounce version
- Minecraft version
- Steps to reproduce
- Expected vs actual behavior
- Crash logs or screenshots
- List of other mods (if applicable)
Feature Requests
When suggesting features, describe:- The problem it solves
- How it should work
- Why it would be useful
- Potential implementation approaches
Coding Standards
LiquidBounce enforces strict coding standards to maintain code quality and consistency.Language Preferences
Use Java only when:- The framework is designed for Java (e.g., mixins)
- Java achieves better readability or performance (explain in PR)
- Use JSpecify annotations for nullability
- Avoid legacy features from older Java versions
- Follow modern Java best practices
Kotlin Conventions
Follow Kotlin’s official conventions:Java Conventions
Follow Java’s official standards:File Standards
File Headers
All code files (.kt and .java) must include this header:
If you’re using IntelliJ IDEA, this header will be automatically added when you create a new file.
Documentation Tags
Allowed tags:Package Naming
Follow this naming convention:External Packages
If your code is self-contained and not designed exclusively for LiquidBounce, you may use a separate package (subject to approval):Code Quality Tools
Detekt (Kotlin)
Run Detekt to check for Kotlin code style violations:Creating a Baseline
To create a new Detekt baseline:JSpecify (Java)
All new Java code must use JSpecify annotations for nullability:Submitting Pull Requests
PR Workflow
- Fork the repository on GitHub
- Clone your fork locally
- Create a feature branch
- Make your changes following coding standards
- Test thoroughly - ensure everything works
- Run code quality checks
- Commit your changes with clear messages
- Push to your fork
- Open a pull request on GitHub
PR Best Practices
- Keep PRs focused on a single feature/fix
- Write clear commit messages
- Update documentation if needed
- Add tests for new functionality
- Respond to review feedback promptly
- Keep your branch up to date with main
Commit Messages
Write descriptive commit messages:- First line: Brief summary (50 chars or less)
- Blank line
- Detailed explanation (optional)
Testing Your Changes
Running Tests
Execute the test suite:Manual Testing
Test your changes in-game:Verification Checks
Before submitting:- Code follows coding standards
- Detekt passes without new violations
- All tests pass
- Feature works as intended in-game
- No new compiler warnings
- Documentation updated (if applicable)
- i18n translations added (if applicable)
License Agreement
By contributing to LiquidBounce, you agree that your contributions will be licensed under the GNU General Public License v3.0.Key Points
- Your contributions become part of the GPL-licensed codebase
- You must disclose the source code of any modifications
- Derivative works must also be licensed under GPL
- You cannot use code from this project in closed-source applications
Community
Get Help
If you need help with contributing:- Discord: liquidbounce.net/discord
- Forum: forums.ccbluex.net
- GitHub Discussions: Ask questions in the repository
Contributors
See all contributors: github.com/CCBlueX/LiquidBounce/graphs/contributorsNext Steps
- Explore Project Architecture
- Learn about Building from Source
- Check out Debugging Tips