bPermissions is an advanced permissions plugin for Bukkit/Spigot servers (with incomplete sponge port), providing fine-grained control over user and group permissions across multiple worlds.
- Define permissions for users and groups
- Per-world permissions - define different permissions in each Minecraft world
- Permission inheritance through group memberships
- Supports "tracks" for easy promotion/demotion of users through a group hierarchy
- Configurable via YAML files
- Commands to modify users, groups, and worlds
- Ability to import permissions from other permissions plugins
- Extensible API for developers
- Download the latest bPermissions jar file
- Place the jar file in your server's
pluginsdirectory - Restart your server
- Configure the plugin (see Configuration section)
The config.yml file contains general settings for bPermissions:
use-global-files: Set true to make all worlds use permissions defined in global filesuse-global-users: Set true to share online user permissions/groups across worldsauto-save: Set true to automatically save permission changes to filetrack-type: Set the promotion track type (multi, single, lump, replace)
Permissions and groups for each world are stored in YAML files under plugins/bPermissions/worlds/<worldname>. Global files are under plugins/bPermissions/global.
groups.ymldefines permission groupsusers.ymldefines user permissions and groups
See the Bukkit page for more details on the file formats.
/user,/group- Manage user and group permissions/world- Manage per-world permissions/promote,/demote- Promote/demote users along a track/setgroup- Add a user to a single group/permissions- Manage bPermissions
See the Command Reference for detailed command usage.
bPermissions.admin- Grants access to all bPermissions commandstracks.<trackname>- Grants access to/promoteand/demotefor a specific track
bPermissions provides a Java API for developers to integrate with other plugins. See the API Documentation for usage details.
bPermissions includes comprehensive unit tests with code coverage tracking to ensure quality and reliability.
- JUnit 5 (Jupiter) - Modern testing framework
- Mockito - Mocking library for unit tests
- JaCoCo - Code coverage analysis
Run all tests in the project:
./gradlew testRun tests for a specific module:
./gradlew :core:test
./gradlew :bukkit:testTo see test output and logging (useful for debugging):
./gradlew test --infoOr increase verbosity further:
./gradlew test -iGenerate a JaCoCo coverage report:
./gradlew jacocoTestReportCoverage reports are generated in {module}/build/reports/jacoco/test/html/. Open the index.html file in your browser to view the detailed coverage report.
If you encounter any issues or have questions, please open an issue on the issue tracker.
We also have an irc channel on irc.esper.net #bananacode which I rarely check but you can try your luck there.
bPermissions is open-source software released under the AOL license.