Sueta

MPromoCodes

1.7.5

Simple, powerful & Folia-ready promo code system for Minecraft servers

·Plugin
  1. 1.7.5latestMPromoCodes v1.7.5 — Quality of Life & Premium Webhooks UpdateAug 25, 2026
    This update focuses entirely on polish, clarity and day-to-day administration. It makes commands easier to discover, player redemption history easier to inspect, the code editor less chaotic and Discord notifications look like a premium integration.

    Added

    - Added a completely redesigned /codes help menu. - Paginated for future commands. - Shows only commands the sender can use. - Includes a short description for every command. - Commands are clickable in-game and include hover descriptions. - Console output remains clean and readable. - Added /codes help [page]. - Added paginated personal statistics with /codes stats [page]. - Added /codes stats <player> [page] for administrators. - Supports online players. - Supports offline players known to the server cache. - Uses UUID data internally, so name changes do not break stored history. - Works from the server console when a player is specified. - Added the new mpromocodes.admin.stats.others permission. - Added permission-aware tab completion for help, stats, menu, reload, health and webhook commands. - Added Discord Components V2 messages with: - Clean accent-free containers. - Large emoji header sections with logo thumbnails. - Separate player, promo-code, result and server-context sections. - Clean separators. - Emoji-labelled values and compact code styling. - Discord-native absolute and relative timestamps. - Success, failure and test designs. - Added the official MPromoCodes Modrinth image as the default webhook avatar and thumbnail. - Added webhook campaign information. - Added configurable compact UUID display. - Added configurable webhook field visibility. - Added an automatic legacy-embed fallback if Discord rejects a Components V2 request. - Added all new messages to both English and Slovak localization files. - Added automatic version-aware config.yml migration with collision-safe backups.

    New Webhook Settings

    These values are included in the fresh configuration generated during an upgrade and can be adjusted under discord-webhook:
    discord-webhook:
      message-style: "COMPONENTS_V2" # COMPONENTS_V2 or LEGACY_EMBED
      fallback-to-legacy: true
      avatar-url: "https://cdn.modrinth.com/data/5XgdhBMc/90edf839b06799d8801b81a1942416b3b68eeeca_96.webp"
    
      branding:
        show-logo: true
        logo-url: "https://cdn.modrinth.com/data/5XgdhBMc/90edf839b06799d8801b81a1942416b3b68eeeca_96.webp"
        footer: "MPromoCodes"
        test-color: "#5865F2"
    
      display:
        show-uuid: true
        compact-uuid: true
        show-server: true
        show-campaign: true
        show-remaining: true
        show-time: true
    85 downloads
  2. 1.7MPromoCodes v1.7 — Campaigns & Reward Studio UpdateAug 15, 2026

    MPromoCodes v1.7 — Campaigns & Reward Studio Update

    This update expands MPromoCodes into a complete promotion-management system. It adds campaign scheduling and analytics, a redesigned admin menu, a flexible Reward Studio, and safe code duplication and renaming while preserving compatibility with existing configurations.

    Added

    - Campaigns with configurable name, description, icon, enabled state, start date and expiry date. - One optional campaign assignment per promo code. - Campaign-wide activation checks: both the campaign and the code must be active. - Campaign analytics loaded asynchronously from YAML, SQLite or MySQL: - Total successful redemptions - Unique players - Paginated per-code redemption breakdown - Reward Studio with these reward types: - Console command - Player command - Private message - Full-metadata item from the administrator's hand - Experience points - Experience levels - Sound - Title and subtitle - Action bar - Potion effect - Broadcast - Reward selection modes: ALL, RANDOM_ONE, WEIGHTED_ONE and CHANCE_EACH. - Configurable weight, chance, fixed/random amounts, sound volume/pitch, title timings and potion settings. - Safe code duplication: summer becomes summer-copy, then summer-copy-2 when needed. - Safe code renaming with preserved history, global/player counters and cooldowns. - Stable internal code IDs for newly created codes and renamed legacy codes. - Configurable item/experience safety limits.

    Changed

    - Completely reorganized the admin GUI into dedicated code, condition, campaign, analytics and reward screens. - New duplicated codes are disabled by default and do not copy redemption history. - Deleting a campaign now unassigns its codes without deleting them. - Code lists now show campaign, reward count and global-limit information. - Upcoming and expired lists also respect campaign activation windows. - New codes use the structured reward format automatically.

    Compatibility & Migration

    - Existing codes.yml, redemption history and databases remain compatible. - Existing codes do not require an internal-id; their original name is used as the stable identity automatically. - Legacy commands: rewards continue to work unchanged. - Opening and editing a legacy code in Reward Studio converts only that code to structured rewards:. - Existing & colors, bold formatting and message design remain supported. - Back up the plugin data folder or database before updating, as with every production release.
    16 downloads
  3. 1.6MPromoCodes v1.6 — Production, Monitoring & Localization UpdateJul 26, 2026

    MPromoCodes v1.6 — Production, Monitoring & Localization Update

    This is the largest MPromoCodes update so far. It combines a complete production-focused code rework with new health monitoring, optional spark integration, full localization support, safer storage operations, improved Folia compatibility, and many reliability improvements for large servers.
    Requirements: Java 25 and Paper/Folia 26.1

    Added

    Health Check & Monitoring
    - Added the new /codes health command. - Added the new mpromocodes.admin.health permission. - Added optional integration with the public spark API. - When spark is installed, the health report includes: - TPS - Average and 95th percentile MSPT - Process CPU usage - System CPU usage - Added automatic Paper/JVM fallback metrics when spark is not installed. - Added MPromoCodes-specific performance metrics: - Recent redemption attempts - Successful redemptions - Rejected redemptions and errors - Average and 95th percentile redemption latency - Average and 95th percentile storage latency - Average and 95th percentile reward latency - Measured Paper/Folia server-thread time - MPromoCodes server-thread share percentage - Added JVM heap memory usage to the health report. - Added storage reachability and ping checks. - Added SQL worker queue and HikariCP pool statistics. - Added Discord webhook in-flight request and capacity statistics. - Added loaded-code and pending-player statistics. - Added configurable warning and critical thresholds for TPS, MSPT, CPU, plugin server-thread share, and storage latency. - Health metrics are collected on demand. The monitoring system does not create a permanent polling task.
    Localization
    - Added complete English localization in lang/en_US.yml. - Added complete Slovak localization in lang/sk_SK.yml. - Added automatic language selection based on the player's Minecraft client locale. - Added configurable default and fallback locales for the console and unsupported client languages. - Added support for additional custom locale files in the lang directory. - Moved all player-facing and administrator-facing UI text to localization files, including: - Redemption messages - Validation and error messages - Admin chat prompts - Inventory titles - Item names and lore - Update notifications - Health reports - Discord webhook text - Preserved legacy & color and formatting codes. - Added automatic merging of newly introduced language keys without overwriting existing customized values. - Added a safe one-time migration of old config.yml messages into the configured default locale file.
    Promo Code & Developer Features
    - Added configurable per-player use limits. - Added player use counts, last-use dates, and active cooldowns to /codes stats. - Added PromoCodePreRedeemEvent for cancellable pre-redemption integrations. - Added PromoCodeRedeemEvent after a successful atomic storage reservation. - Added sequential reward execution with %player%, %uuid%, and %code% placeholders. - Added stricter validation for dates, durations, conditions, materials, advancements, and statistics.

    Changed

    - Reworked the complete internal redemption flow for production use. - Player data is now handled using UUID-based records instead of relying only on player names. - Storage operations now reserve redemptions atomically before rewards are executed. - Global and per-player limits are now safe during concurrent redemption attempts. - Promo code definitions are parsed once into an immutable validated runtime registry. - Invalid promo code definitions are rejected instead of becoming partially active. - Reloads now validate and replace runtime definitions safely. - Existing active definitions remain available when a reload fails. - Reward entries now run sequentially on the correct Paper/Folia scheduler. - Player operations, global console commands, callbacks, and GUI reopen operations now use Folia-aware scheduling. - The admin GUI now uses typed inventory holders instead of identifying menus by inventory titles or item display names. - Admin menus now read and write promo codes through the centralized codes.yml manager. - Update notifications now use the player's selected language. - Discord webhook labels, titles, reasons, and status text are now configurable through locale files. - The plugin version has been updated to 1.6.

    Improved

    - Improved performance and safety for large servers. - Improved MySQL concurrency using transactions and row locking. - Improved MySQL connection management using HikariCP. - Improved protection against database outages with bounded SQL worker queues. - Improved SQLite performance and concurrency using WAL mode and a bounded asynchronous worker. - Improved YAML storage with debounced saves, temporary files, and atomic file replacement where supported. - Improved legacy player-data migration from lowercase names to UUID records. - Improved fail-closed behavior when storage is unavailable. - Improved Discord webhook delivery with request timeouts, bounded in-flight work, and retry handling for rate limits and server errors. - Improved anti-spam protection and failed-attempt handling. - Improved code organization by separating configuration, storage, services, menus, localization, monitoring, API events, and integrations. - Improved Paper API compatibility by replacing old chat, title, and item metadata handling with Adventure components. - Improved build reliability with Java/Maven version enforcement and stricter compiler warnings. - Improved OneDrive compatibility for mvn clean on Windows. - Preserved customized message colors and formatting during the localization rework. - Removed unused utilities, old task code, obsolete configuration classes, and other dead code.

    Fixed

    - Fixed race conditions that could allow global or per-player limits to be overspent. - Fixed stale in-memory storage state on larger or multi-instance setups. - Fixed unbounded memory growth during SQL outages by using bounded queues. - Fixed unsafe Bukkit API access from asynchronous threads. - Fixed several Folia scheduler and player-region compatibility issues. - Fixed invalid definitions being partially loaded after configuration errors. - Fixed reload failures replacing valid active definitions. - Fixed admin inventories depending on localized or customized inventory titles. - Fixed menu actions depending on item display names. - Fixed several mismatched advancement/statistic admin-menu slots. - Fixed hardcoded admin, GUI, update, webhook, and player messages. - Fixed Maven clean failures caused by locked/read-only OneDrive-generated directories where force cleanup is supported.

    Commands & Permissions

    - /code <code> — redeem a promo code (mpromocodes.use) - /codes stats — view personal promo code statistics - /codes menu — open the admin menu (mpromocodes.admin) - /codes reload — reload and validate the plugin (mpromocodes.admin) - /mpromocodes reload — reload and validate the plugin (mpromocodes.admin) - /codes health — display the health report (mpromocodes.admin.health) - /codes webhook test — send a Discord webhook test (mpromocodes.admin.webhook)

    Migration Notes

    - Back up the MPromoCodes data folder or database before updating. - Replace the old plugin JAR with MPromoCodes-1.6.jar and restart the server. - Existing codes.yml and redeemed-player data remain compatible. - Existing YAML data can still be migrated automatically to SQLite or MySQL when storage.auto-migrate-yaml is enabled and the target database is empty. - On the first start, existing custom messages from config.yml are copied into the configured default locale file. - Existing customized locale values are preserved. Only missing bundled keys are added automatically. - The old config.yml message section is no longer used after migration; messages should now be edited in plugins/MPromoCodes/lang. - Le
    27 downloads
  4. 1.5.1MPromoCodes 1.5.1May 13, 2026

    MPromoCodes v1.5.1

    Bug Fixes

    - Fixed Admin Menu showing Code not found for existing codes. - Fixed Conditions Menu that was still checking codes from config.yml - Fixed code key handling for mixed-case promo codes. - Fixed expired/upcoming lists not preserving real code names from codes.yml.
    209 downloads
  5. 1.5MPromoCodes 1.5May 12, 2026

    MPromoCodes v1.5 — Storage & Integration Update

    This update brings a major internal upgrade to MPromoCodes, adding Discord webhook integration, a new separated codes file, advanced storage options, anti-spam protection and new global settings.

    Added

    - Added Discord webhook integration. - Added Discord webhook test command: - /codes webhook test - Added webhook logs for successful code redemptions. - Added webhook logs for failed code redemption attempts. - Added configurable webhook embed colors. - Added configurable webhook username and avatar URL. - Added codes.yml as a separate file for promo codes. - Added automatic migration from old config.yml codes to codes.yml. - Added automatic backup of old config as config-old.yml. - Added new storage system with multiple storage backends: - YAML - SQLite - MySQL - Added automatic YAML-to-SQL migration for redeemed code data. - Added anti-spam protection for failed redemption attempts. - Added temporary blocking after too many failed attempts. - Added configurable failed-attempt cooldown. - Added configurable block time. - Added general plugin settings: - debug - case-insensitive-codes - trim-code-input - min-code-length - max-code-length - use-permission - Added configurable server name for webhook logs. - Added new config messages: - anti-spam-blocked - anti-spam-cooldown - invalid-code-length

    Changed

    - Promo codes are now stored in codes.yml instead of config.yml. - Admin menu now reads and writes promo codes from codes.yml. - Redeemed code data can now be stored in YAML, SQLite or MySQL. - The /code command now respects configurable input rules. - Permission required to redeem codes is now configurable. - Code length validation is now configurable. - Code matching can now be case-sensitive or case-insensitive. - Code input trimming can now be enabled or disabled. - Webhook logs now include more detailed redemption information. - Internal redeem storage has been refactored for better future compatibility.

    Improved

    - Improved code organization. - Improved update compatibility for existing users. - Improved config structure by separating plugin settings and promo code data. - Improved admin workflow for managing promo codes. - Improved protection against invalid code spam. - Improved support for larger servers and networks through SQL storage. - Improved debug logging for redeem attempts when debug mode is enabled.

    Fixed

    - Fixed promo code data being mixed with global plugin settings. - Fixed hardcoded redeem permission by moving it to config. - Fixed hardcoded code input behavior by making it configurable. - Fixed admin menu storage behavior after moving codes to codes.yml. - Fixed future compatibility issues with redeemed code storage.

    Migration Notes

    - Existing promo codes from config.yml will be automatically moved to codes.yml. - The old config.yml will be backed up as config-old.yml. - A fresh config.yml will be generated with the latest settings. - Existing redeemed data from redeemed.yml can be automatically migrated into SQLite or MySQL when storage.auto-migrate-yaml is enabled. - Server owners should review the new storage section before switching to MySQL.

    Why is the file larger now?

    MPromoCodes now includes built-in SQLite and MySQL support. The required database drivers are bundled directly inside the plugin .jar, so server owners do not need to install any extra libraries. Because of these bundled SQL drivers, especially SQLite native libraries for different operating systems, the file size is larger than previous versions. This is expected and completely normal.

    New Config Sections

    ```yml settings: enabled: true server-name: "survival" debug: false case-insensitive-codes: true trim-code-input: true min-code-length: 2 max-code-length: 32 use-permission: "mpromocodes.use" anti-spam: enabled: true failed-attempt-cooldown: "3s" max-failed-attempts: 5 block-time: "1m" reset-on-success: true webhook-log-blocked-attempts: true storage: type: "YAML" auto-migrate-yaml: true sqlite: file: "storage.db" mysql: host: "localhost" port: 3306 database: "mpromocodes" username: "root" password: "password" use-ssl: false table-prefix: "mpromocodes_"
    18 downloads
  6. 1.4MPromoCodes 1.4Apr 30, 2026
    - Added support for version 26.1 - Added 20+ conditions to use for redeeming codes - Added Player Usage Limit - Reworked Storage system - More optimized code - Full support for Spigot and Bukkit servers
    26 downloads
  7. 1.3MPromoCodes 1.3Dec 27, 2025
    - Added option to enable/disable code - Added Admin Menu for easier code configuring - Added option to create codes ingame menu - Added option to delete codes ingame menu - Added option to view all codes and edit them ingame menu - Added option to view all upcoming codes - Added option to view all expired codes
    97 downloads
  8. 1.2MPromoCodes 1.2Dec 21, 2025
    - Added start-date feature - Added expiry-date feature - Added update checker
    17 downloads
  9. 1.1MPromoCodes 1.1Dec 18, 2025
    - Added Global Uses for codes - Added bStats
    23 downloads
  10. 1.0MPromoCodes 1.0Dec 15, 2025
    - Redeem promo codes using /code - Fully configurable rewards via config - Supports console and player command execution - Title & Subtitle messages after successful redemption - Per-player code usage (one-time codes) - Permission-based code access - Folia compatible - Clean and simple configuration
    32 downloads

Similar projects

Plugin →