Contributing¶
Thank you for your interest in contributing to SigmaTools! This guide will help you get started.
Development Setup¶
Prerequisites¶
- Java 17 or higher
- Maven 3.6+
- IDE (IntelliJ IDEA recommended)
- Git
Getting Started¶
- Fork the Repository
-
Fork SigmaTools on GitHub
-
Clone Your Fork
-
Set Up Remote
-
Build the Project
-
Test Locally
- Copy JAR to test server
- Test your changes
Coding Standards¶
Java Style¶
- Follow Java naming conventions
- Use meaningful variable and method names
- Add Javadoc comments for public methods
- Keep methods focused and small
- Use proper indentation (4 spaces)
Code Structure¶
- Keep classes focused on single responsibility
- Use managers for feature-specific logic
- Follow existing code patterns
- Maintain consistency with existing code
Example¶
/**
* Manages tool cooldown system
*/
public class CooldownManager {
/**
* Check if player can use tool
*
* @param player The player
* @param toolType The tool type
* @return true if player can use tool
*/
public boolean canUseTool(Player player, ToolType toolType) {
// Implementation
}
}
Making Changes¶
Branch Naming¶
Use descriptive branch names: - feature/tool-name - New features - fix/issue-description - Bug fixes - docs/documentation-update - Documentation - refactor/component-name - Code refactoring
Commit Messages¶
Write clear, descriptive commit messages:
Good:
- "Add support for custom tool materials"
- "Fix economy deduction not working with CoinsEngine"
- "Improve performance of block scanning"
Bad:
- "fix"
- "update"
- "changes"
Pull Request Process¶
-
Create Feature Branch
-
Make Changes
- Write code
- Add tests if applicable
-
Update documentation
-
Commit Changes
-
Push to Your Fork
-
Create Pull Request
- Go to GitHub
- Click "New Pull Request"
- Select your branch
- Fill out PR template
- Submit for review
Pull Request Guidelines¶
Before Submitting¶
- Code follows style guidelines
- Changes are tested
- Documentation is updated
- No breaking changes (or documented)
- Commits are clean and descriptive
PR Description¶
Include: - What - What changes were made - Why - Why these changes are needed - How - How the changes work - Testing - How to test the changes
Example PR Description¶
## What
Adds support for custom tool materials in configuration.
## Why
Allows server admins to customize tool appearance without code changes.
## How
- Reads `item-material` from config
- Validates material exists
- Uses material when creating tools
## Testing
1. Set `tools.pickaxe.item-material: GOLDEN_PICKAXE` in config
2. Give tool: `/sigmatools give pickaxe PlayerName`
3. Verify tool is golden pickaxe
Areas for Contribution¶
Code Contributions¶
- Bug Fixes - Fix reported issues
- New Features - Add requested features
- Performance - Optimize existing code
- Refactoring - Improve code quality
Documentation¶
- Documentation Updates - Improve existing docs
- Examples - Add code examples
- Tutorials - Write guides
- Translations - Translate messages
Testing¶
- Test Cases - Add unit tests
- Integration Tests - Test with other plugins
- Bug Reports - Report issues with details
Code Review Process¶
- Automated Checks
- Code compiles
- No obvious errors
-
Follows style guidelines
-
Maintainer Review
- Code quality
- Functionality
- Documentation
-
Testing
-
Feedback
- Address review comments
- Make requested changes
-
Resolve discussions
-
Approval
- Maintainer approves
- Changes merged
Getting Help¶
Questions?¶
- Discord: Join Discord
- GitHub Issues: Create an issue
- Documentation: Check the docs
Stuck?¶
- Ask for help in Discord
- Create a draft PR for feedback
- Check existing issues/PRs
License¶
By contributing, you agree that your contributions will be licensed under the same license as the project.
Thank You!¶
Thank you for contributing to SigmaTools! Every contribution, no matter how small, is appreciated.