Tags
Creators
Details
1.7
Compatibility
Changes
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_ONEandCHANCE_EACH. - Configurable weight, chance, fixed/random amounts, sound volume/pitch, title timings and potion settings.
- Safe code duplication:
summerbecomessummer-copy, thensummer-copy-2when 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.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:5XgdhBMc:XmFP2ULX"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:5XgdhBMc:XmFP2ULX"
}

