Contributing
XDiscordUltimate is open source under the MIT license and welcomes contributions. This guide covers the workflow from fork to pull request, plus the code and security standards every change must meet.Workflow
Fork and clone
Fork xreatlabs/XDiscordUltimate on GitHub, then clone your fork.
Write the code
Match the existing package layout and patterns — see Code Standards below. New features should be implemented as a
Module under com.xreatlabs.xdiscordultimate.modules.<name>, and every database access must go through DatabaseManager’s async API.Run the tests
Build the shaded JAR
build/libs/XDiscordUltimate-1.2.0.jar. See Building from Source.Code Standards
Security Notes
Bot tokens, verification codes, database credentials, and webhook URLs are secrets. Never log them, never include them in exception messages, and never commit them to the repository.
- No secret logging. The plugin logger and module helpers must never receive a token, code, or password. When logging an error that may carry sensitive context, log only the failure type and a sanitized identifier.
- Use
SecureRandomfor any secret — verification codes, tokens, or unguessable identifiers. PlainRandomis predictable. - Parameterized queries only.
DatabaseManageralready follows this rule; new SQL must too. Never build SQL by concatenating strings, and never pass astatType/column name that originated from user input. - Validate input at the boundary (command args, Discord message content) before it reaches the database or JDA.
- Least-privilege configuration. Document the minimum permissions a feature needs; do not require op or administrator by default.
Reporting Issues
Non-security bugs and feature requests go through GitHub Issues. A useful report includes:- XDiscordUltimate version (
/xdiscordshows it) - Server software and Minecraft version
- Java version (
java -version) - Database type in use (sqlite / mysql / postgresql)
- Steps to reproduce, expected vs. actual behavior
- Relevant log lines (with secrets redacted)
License
XDiscordUltimate is released under the MIT License. By submitting a pull request you agree your contributions are licensed under the same terms.Next Steps
Building from Source
Set up your environment and compile the project.
GitHub Repository
Browse source, open issues, and start a pull request.

