Tags
Creators
Details
Licensed MIT
Published 2 years ago
Updated 2 months ago
All versions
2.25.0-260211
Release
Shopkeepers Addon 2.25.0-2602118 months ago 478
Compatibility
Minecraft: Java Edition
1.21.x
1.20.6
Platforms
Bukkit
Paper
Purpur
Spigot
Changes
Changelog 2.25.0-260211
๐ Universal Economy Integration
- Command-Based Economy: Implemented a universal economy system that works with any economy plugin (Essentials, CMI, Vault, etc.) by executing console commands and parsing output.
- Zero Dependencies: Removed hard dependency on Vault API.
- Console Capture: Created a custom
ConsoleCapturesystem to intercept command output for balance checking. - Configuration: Added comprehensive
economysection toconfig.ymlfor defining commands, regex patterns, and transaction settings.
๐ก๏ธ Strict Balance Checks
- Trade Selection: Validates player balance (buying) and shop owner balance (selling) immediately when a trade is selected.
- Pre-Trade Verification: Re-checks balance right before transaction execution to prevent race conditions.
- Post-Trade UI Update: Automatically refreshes the trade UI to remove items if the player/owner can no longer afford the trade.
- Owner Insolvency Protection: Prevents selling to player shops if the owner lacks funds (unless configured otherwise).
๐ Critical Bug Fixes
- Recursion Guard: Fixed
Recursive call to appendererrors inConsoleCaptureby implementing aThreadLocalguard. - ANSI Parsing Fix: Fixed incorrect balance parsing (e.g.,
336.0) by stripping ANSI color codes from console output before parsing. - Heuristic Parser: Improved auto-detection logic to scan log lines in reverse, prioritizing the most recent output.
๐ฆ Maintenance
- API Update: Updated
ShopkeepersAPI dependency tov2.25.0. - Version Bump: Project version updated to
2.25.0-260211.
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:pznDR0gz:AZ7rQp5x"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:pznDR0gz:AZ7rQp5x"
}

