
✨ Pulse Features
🎯 Core Systems
🏆 Rank System
A comprehensive rank management system with support for multiple ranks per player, temporary ranks, and advanced permission inheritance.
Features:
- Create unlimited custom ranks with weights, prefixes, and suffixes
- Assign multiple ranks to a single player simultaneously
- Set temporary ranks with automatic expiration
- Primary rank system with automatic weight-based selection
- Default rank assignment for new players
- Full permission inheritance from ranks to players
Commands:
/rank create <rank> <weight> <prefix> <suffix>- Create a new rank/rank delete <rank>- Delete an existing rank/rank set <player> <rank> [duration]- Set a player's rank/rank info <rank>- View detailed rank information/rank list- List all available ranks/rank permission <rank> <add|remove|deny|list> [permission]- Manage rank permissions/rank reload- Reload the rank system
🎁 Grant System (GUI)
An intuitive GUI-based system for managing player ranks with visual feedback and confirmation steps.
Features:
- Clean, user-friendly inventory interface
- Grant ranks with custom durations (1h, 1d, 7d, 30d, 90d, or permanent)
- View all active ranks on a player
- Remove ranks with a single click
- Visual distinction between primary and secondary ranks
- Real-time expiration countdown display
- Confirmation system to prevent accidental grants
Usage:
/grant <player>- Open the grant GUI for a player- Navigate through menus to select ranks and durations
- Click to confirm or cancel operations
🔐 Permission System
Advanced permission management with player-specific and rank-based permissions, including denial support.
Features:
- Add permissions directly to players or ranks
- Deny specific permissions (overrides grants)
- Permission inheritance from all player ranks
- Check player permissions with full inheritance resolution
- List all permissions for players or ranks
- Real-time permission updates without reconnection
Commands:
/permission add <player> <permission>- Add a permission to a player/permission remove <player> <permission>- Remove a permission from a player/permission deny <player> <permission>- Deny a permission for a player/permission check <player> <permission>- Check if a player has a permission/permission list <player>- List all player permissions
💰 Economy System
Full-featured economy with Vault integration, transaction history, and leaderboards.
Features:
- Customizable currency name and symbol
- Support for decimal balances
- Player-to-player payments with transaction fees
- Balance leaderboards (top balances)
- Admin commands for adding, removing, and setting balances
- Vault economy provider for compatibility with other plugins
- Persistent storage with automatic save
Commands:
/coin- Check your balance/coin <player>- Check another player's balance/coin pay <player> <amount>- Pay another player/coin add <player> <amount>- Add coins to a player (admin)/coin remove <player> <amount>- Remove coins from a player (admin)/coin set <player> <amount>- Set a player's balance (admin)/coin top- View balance leaderboard
🛒 Shop System
YAML-configured shop with multi-page support, enchantments, and flexible pricing.
Features:
- Multiple shop pages with custom titles
- Support for items with custom names, lore, and enchantments
- Stack-based purchasing (buy multiple items at once)
- Permission-based shop access
- Economy integration for purchases
- Live configuration reload without restart
- Potion effects and item flags support
Commands:
/shop- Open the shop GUI/shop list- List all shop items/shop reload- Reload shop configuration (admin)
Configuration:
pages:
- title: "Main Shop"
items:
- slot: 0
material: DIAMOND_SWORD
name: "&bDiamond Sword"
price: 1000
enchantments:
- SHARPNESS:5
⏱️ Playtime System
Track, display, and persist player playtime with Folia-safe scheduling and database storage.
Features:
- Accurate playtime tracking with session calculation
- Asynchronous auto-save every 5 minutes (Folia/Paper compatible)
- Persistent storage in database (SQLite/MySQL/PostgreSQL)
- Cached lookups for performance
- Placeholders for formatted/raw time values
- Commands to view self and others' playtime with permission checks
Commands:
/playtime- View your playtime/playtime <player>- View another player's playtime (requirespulse.playtime.others)
👤 Profile System
View comprehensive player profiles with stats, ranks, playtime, economy, and tags in a GUI.
Features:
- Interactive GUI-based player profiles
- Display player head with UUID and online/offline status
- Show current rank and balance with currency name
- Display total playtime (formatted as days/hours/minutes)
- View active and owned tags (up to 5 shown, with counter for more)
- Staff button to view punishment history (requires
pulse.profile.staff) - View own profile or other players' profiles with permission
Commands:
/profile- View your own profile/profile <player>- View another player's profile (requirespulse.profile.others)
📢 Report System
Command-based player reporting system with staff notifications and database logging.
Features:
- Report online or offline players with
/report <player> <reason> - Minimum 5-character reason required
- Assigns unique report ID for tracking
- Sends confirmation message to reporter with report ID
- Notifies all online staff members with
pulse.reports.notifypermission
Commands:
/report <player> <reason>- Report a player for staff review
🏷️ Tag System
Player name tags with prefixes, suffixes, colors, and decorations.
Features:
- Create unlimited custom tags
- Rich formatting with colors, gradients, and decorations
- Tag collections and unlockables
- Give/remove tags from players
- Players can equip tags from their collection
- Permission-based tag access
- Default tag support
Commands:
/tag- Open tag selection GUI/tag <tag>- Equip a specific tag/tag others <player>- View another player's tags (admin)/tag give <player> <tag>- Give a tag to a player (admin)/tag remove <player> <tag>- Remove a tag from a player (admin)/tag create <id> <prefix> <suffix>- Create a new tag (admin)/tag edit <id> <prefix|suffix> <value>- Edit a tag (admin)/tag delete <id>- Delete a tag (admin)/tag reload- Reload tag system (admin)
⚖️ Punishment System
Comprehensive moderation toolkit with temporary and permanent punishments.
Features:
- Kick, warn, mute, freeze, ban, and IP ban
- Temporary bans and IP bans with duration support
- Warning accumulation system with history
- Remove individual warnings
- Persistent punishment storage
- Broadcast messages for public punishments
- Staff-only silent punishments
Commands:
/kick <player> [reason]- Kick a player/warn <player> <reason>- Warn a player/warns <player>- View player warnings/unwarn <player> <id>- Remove a warning/mute <player> [duration] [reason]- Mute a player/unmute <player>- Unmute a player/freeze <player>- Freeze/unfreeze a player/ban <player> [reason]- Permanently ban a player/tempban <player> <duration> [reason]- Temporarily ban a player/unban <player>- Unban a player/ipban <player> [reason]- IP ban a player/tempipban <player> <duration> [reason]- Temporarily IP ban a player
🎮 Gamemode Commands
Quick gamemode switching with shorthand aliases and permission support.
Features:
- Change your own gamemode or others' with permission
- Short aliases for quick switching (gmc, gms, gma, gmsp)
- Permission-based access control per gamemode
Commands:
/gamemode <mode> [player]- Change gamemode/gmc [player]- Creative mode/gms [player]- Survival mode/gma [player]- Adventure mode/gmsp [player]- Spectator mode
💬 Chat System
Advanced chat formatting with rank integration, color support, and customizable join/leave messages.
Features:
- Automatic rank prefix/suffix in chat
- Color code support for players with permission
- PlaceholderAPI integration for chat format
- Configurable chat format via YAML
- Persistent display name formatting
- Customizable join/leave messages with color support
- Toggle join/leave messages on/off independently
- %player% placeholder for player names in messages
🚫 Command Blocker System
Block unwanted commands and provide custom help messages with full tab completion filtering.
Features:
- Block any command from being executed by players
- Configurable list of blocked commands in
config.yml - Custom blocked command message with MiniMessage support
- Remove blocked commands from tab completions automatically
- Custom help command system that overrides default
/help - Multi-line help messages with full formatting support
- Toggle help command on/off independently
- Case-insensitive command matching for reliability
- Lowest priority event handling to intercept before other plugins
Configuration:
command-blocker:
blocked-commands:
- "plugins"
- "pl"
- "version"
- "ver"
blocked-message: "<red>Unknown command. Type \"/help\" for help."
help-command:
enabled: true
message:
- "<yellow>Available Commands:"
- "<gray>• <white>/spawn <gray>- Teleport to spawn"
- "<gray>• <white>/home <gray>- Teleport home"
🔧 Technical Features
🗄️ Database
- Exposed ORM with Kotlin DSL for type-safe queries
- HikariCP connection pooling for optimal performance
- Support for SQLite (default) and MySQL/MariaDB
- Automatic schema creation and migration
- Asynchronous database operations (non-blocking)
- Connection validation and automatic recovery
⚡ Performance
- Folia-compatible with proper thread scheduling
- Async-first architecture for all heavy operations
- Caching layer for frequently accessed data
- Optimized database queries with prepared statements
- Minimal main thread blocking
- Efficient placeholder resolution
🔌 Integration
- Vault integration for economy and permissions
- PlaceholderAPI expansion with 40+ placeholders
- LuckPerms compatibility (optional, Pulse can standalone)
- Event-driven architecture for extensibility
- Open API for third-party plugins
📝 Configuration
- YAML-based configuration files
- Automatic resource versioning with migration
- Hot-reload support for most configurations
- Validation with helpful error messages
- Per-system configuration files for organization
🎨 Customization
- Messages.yml for all player-facing text
- Support for MiniMessage and legacy color codes
- Configurable prefixes and suffixes
- Custom shop layouts with unlimited pages
- Punishment reasons and duration formats
🛡️ Security
- SQL injection protection via prepared statements
- Permission checks on all sensitive commands
- Input validation and sanitization
- Rate limiting on economy transactions
- Audit trail for administrative actions
🌐 Multi-Server Support
- Shared database for cross-server data
- Synchronized rank changes across network
- Global economy balances
- Network-wide punishments
- Cross-server placeholders
📦 Modular Architecture
Every system is independently functional:
- Disable economy if using another plugin
- Run without shop if not needed
- Use only the rank system
- Mix and match features as needed
Permissions
Click to view all permissions
Root Permissions
pulse.*- All pulse permissionspulse.admin- Administrator access to pulsepulse.chat.color- Use color codes in chat messages
Rank Permissions
pulse.rank- Access to rank commands (includes all sub-permissions)pulse.rank.create- Create new rankspulse.rank.delete- Delete existing rankspulse.rank.set- Set player rankspulse.rank.info- View rank informationpulse.rank.list- List all rankspulse.rank.permission- Manage rank permissionspulse.rank.reload- Reload rank system
Permission Management
pulse.permission- Access to permission commands (includes all sub-permissions)pulse.permission.add- Add permissions to playerspulse.permission.remove- Remove permissions from playerspulse.permission.deny- Deny permissions for playerspulse.permission.check- Check player permissionspulse.permission.list- List player permissions
Gamemode Permissions
pulse.gamemode- Change gamemode (includes all sub-permissions)pulse.gamemode.creative- Change to creative modepulse.gamemode.survival- Change to survival modepulse.gamemode.adventure- Change to adventure modepulse.gamemode.spectator- Change to spectator modepulse.gamemode.others- Change others' gamemode
Punishment Permissions
pulse.punishment- All punishment permissions (includes all sub-permissions)pulse.punishment.kick- Kick playerspulse.punishment.warn- Warn playerspulse.punishment.warns- View player warningspulse.punishment.unwarn- Remove warningspulse.punishment.mute- Mute playerspulse.punishment.unmute- Unmute playerspulse.punishment.freeze- Freeze/unfreeze playerspulse.punishment.tempban- Temporarily ban playerspulse.punishment.ban- Permanently ban playerspulse.punishment.unban- Unban playerspulse.punishment.ipban- IP ban playerspulse.punishment.tempipban- Temporarily IP ban players
Economy Permissions
pulse.coin- Access to coin commands (includes pay permission)pulse.coin.add- Add coins to playerspulse.coin.remove- Remove coins from playerspulse.coin.set- Set player coin balancespulse.coin.pay- Pay other playerspulse.coin.top- View balance leaderboardpulse.coin.others- Check other players' balances
Shop Permissions
pulse.shop- Access to shop (includes use permission)pulse.shop.use- Use the shoppulse.shop.reload- Reload shop configurationpulse.shop.list- List shop items
Tag Permissions
pulse.tag- Access to tag commands (includes all sub-permissions)pulse.tag.others- View other players' tagspulse.tag.give- Give tags to playerspulse.tag.remove- Remove tags from playerspulse.tag.create- Create new tagspulse.tag.edit- Edit existing tagspulse.tag.delete- Delete tagspulse.tag.reload- Reload tag system
Grant Permissions
pulse.grant- Access to grant command GUI for managing player ranks
Playtime Permissions
pulse.playtime- View own playtimepulse.playtime.others- View other players' playtime
Profile Permissions
pulse.profile- View own profilepulse.profile.others- View other players' profilespulse.profile.staff- Access staff-only features in profiles
Report Permissions
pulse.report- Report playerspulse.reports.notify- Receive notifications when players are reported
Miscellaneous Permissions
pulse.update.notify- Receive update notifications on join
Placeholders
Click to view all placeholders
All placeholders use the format %pulse_<placeholder>%
Rank Information
%pulse_rank%- Player's rank ID%pulse_rank_name%- Player's rank name%pulse_rank_prefix%- Player's rank prefix%pulse_rank_suffix%- Player's rank suffix%pulse_rank_weight%- Player's rank weight%pulse_rank_is_default%- Whether player has default rank (true/false)
Player Display
%pulse_player_formatted%- Formatted player display name%pulse_player_display%- Player display name (alias)%pulse_player_prefix%- Player's prefix%pulse_player_suffix%- Player's suffix%pulse_player_name_formatted%- Player name with prefix and suffix
Permission Information
%pulse_permissions_count%- Total permissions count%pulse_permissions_total%- Total permissions count (alias)%pulse_permissions_player_count%- Player-specific permissions count%pulse_permissions_rank_count%- Rank permissions count%pulse_permissions_denied_count%- Denied permissions count
Economy
%pulse_balance%- Player's balance (formatted with currency symbol)%pulse_money%- Player's balance (alias)%pulse_balance_raw%- Player's balance (raw number)%pulse_currency_name%- Currency name (singular)%pulse_currency_name_plural%- Currency name (plural)%pulse_currency_symbol%- Currency symbol
Server Statistics
%pulse_players_total%- Total players in database%pulse_players_online%- Current online players%pulse_ranks_total%- Total ranks%pulse_default_rank%- Default rank ID
Time
%pulse_last_seen%- Time since player was last seen
Playtime
%pulse_playtime%- Player's playtime (formatted)%pulse_playtime_raw%- Player's playtime in milliseconds%pulse_playtime_hours%- Player's playtime in hours (2 decimals)%pulse_playtime_minutes%- Player's playtime in minutes%pulse_playtime_seconds%- Player's playtime in seconds
Dynamic Placeholders
%pulse_has_permission_<permission>%- Check if player has permission (true/false)%pulse_rank_players_online_<rank>%- Online players with specific rank%pulse_rank_players_total_<rank>%- Total players with specific rank%pulse_rank_weight_<rank>%- Weight of specific rank%pulse_rank_prefix_<rank>%- Prefix of specific rank%pulse_rank_suffix_<rank>%- Suffix of specific rank%pulse_rank_display_<rank>%- Display name of specific rank%pulse_has_balance_<amount>%- Check if player has balance amount (true/false)%pulse_balance_formatted_<amount>%- Format a specific amount with currency symbol
Pulse - One plugin, infinite possibilities. Built for performance, designed for simplicity.