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
git clone https://github.com/yourusername/SigmaTools.git
cd SigmaTools -
Set Up Remote
git remote add upstream https://github.com/sigmatools/SigmaTools.git -
Build the Project
mvn clean package -
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 featuresfix/issue-description- Bug fixesdocs/documentation-update- Documentationrefactor/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
git checkout -b feature/your-feature -
Make Changes
- Write code
- Add tests if applicable
- Update documentation
-
Commit Changes
git add .
git commit -m "Descriptive commit message" -
Push to Your Fork
git push origin feature/your-feature -
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.