Contributing to HyperPerms

HyperPerms is open source software licensed under the GPL-3.0 license. We welcome contributions from the community!

Repository

GitHub: https://github.com/HyperSystemsDev/HyperPerms

License: GPL-3.0 (GNU General Public License v3.0)

Getting Started

Prerequisites

Before you start contributing, make sure you have:

RequirementVersion
Java25+ (Temurin recommended)
Gradle9.3+
GitLatest

Clone the Repository

git clone https://github.com/HyperSystemsDev/HyperPerms.git
cd HyperPerms

Build the Project

# Build the shadow JAR (fat JAR with relocated dependencies)
./gradlew shadowJar

# Output location
ls build/libs/HyperPerms-*.jar

Run Tests

./gradlew test

How to Contribute

1. Fork the Repository

Click the "Fork" button on GitHub to create your own copy of the repository.

2. Create a Branch

Create a branch for your changes:

git checkout -b feature/my-new-feature
# or
git checkout -b fix/bug-description

3. Make Your Changes

  • Follow the existing code style
  • Write clear, concise commit messages
  • Add tests for new functionality
  • Update documentation if needed

4. Test Your Changes

# Build and test
./gradlew clean build test

# Test on a local Hytale server
cp build/libs/HyperPerms-*.jar ~/path/to/hytale/mods/

5. Submit a Pull Request

Push your branch and open a pull request on GitHub:

git push origin feature/my-new-feature

Then open a PR at https://github.com/HyperSystemsDev/HyperPerms/pulls

Code Style

Java Code

  • Use 4 spaces for indentation (no tabs)
  • Follow standard Java naming conventions
  • Add JavaDoc comments for public APIs
  • Keep methods focused and concise

Commit Messages

Write clear, descriptive commit messages:

# Good
Add LuckPerms migration command with dry-run support

# Bad
fixed stuff

Types of Contributions

Bug Fixes

Found a bug? We appreciate bug fixes! Please:

  1. Check if the bug is already reported in Issues
  2. If not, open a new issue describing the bug
  3. Submit a PR with the fix

New Features

Want to add a feature? Please:

  1. Open an issue first to discuss the feature
  2. Get feedback before implementing
  3. Submit a PR with your implementation

Documentation

Documentation improvements are always welcome:

  • Fix typos and unclear explanations
  • Add examples and use cases
  • Improve API documentation

Translations

Help translate HyperPerms:

  • Translation files are in src/main/resources/lang/
  • Submit PRs with new or improved translations

Development Tips

Shadow Plugin

HyperPerms uses the Shadow plugin (v9.3.1+) for creating fat JARs with relocated dependencies. This version is required for Java 25 support.

Testing Locally

To test your changes:

# Build
./gradlew shadowJar

# Copy to Hytale mods folder
cp build/libs/HyperPerms-*.jar ~/Documents/Hytale/mods/

# Start your test server

Debugging

Use your IDE's debugger with remote debugging:

  1. Start your test server with debug flags
  2. Attach your IDE debugger
  3. Set breakpoints in your code

Getting Help

License

By contributing to HyperPerms, you agree that your contributions will be licensed under the GPL-3.0 license.

HyperPerms - Permission management for Hytale
Copyright (C) 2024 HyperSystems Development

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

See Also