
Minecraft Villager Trade Manager
Complete control over villager trading economics with custom pricing and discount prevention Minecraft Villager Trade Manager is a comprehensive Paper/Spigot plugin that gives server administrators complete control over villager trading economics. Take co
11.1
Compatibility
Changes
Changelog
[11.1.0] - 2025-11-06
๐ Bug Fixes
Folia Compatibility Fix โญ CRITICAL
- Plugin Loading Failure: Fixed
UnsupportedOperationExceptionthat prevented plugin from loading on Folia 1.21.8 - Scheduler Compatibility: Replaced raw
Bukkit.getScheduler()calls with platform-awareTaskScheduler - PerformanceMonitorService: Updated to use
TaskScheduler.runAsyncRepeating()instead ofrunTaskTimerAsynchronously() - MigrationCommand: Updated to use
TaskScheduler.runSyncRepeating()instead ofrunTaskTimer() - Constructor Updates: Modified service constructors to accept
TaskSchedulerdependency injection
๐ง Technical Improvements
Dependency Injection
- TaskScheduler Injection: Services now properly receive
TaskSchedulerinstances instead of accessing raw schedulers - Platform Abstraction: Enhanced use of platform-aware scheduling throughout the codebase
- Code Consistency: Unified scheduler usage patterns across all components
[11.0.0] - 2025-11-06
๐ Major Features
Item Banning System โญ NEW
- Complete Item Control: Ban entire items from appearing in any villager trades
- Smart Filtering: Automatically prevents enchanted variants when base item is banned
- Database Persistence: Banned items stored in database with audit trail
- Commands Added:
/vt banitem <item_type>- Ban items from all villager trades/vt unbanitem <item_type>- Remove item bans/vt listbanneditems- Display all currently banned items
- Examples:
/vt banitem diamond_sword,/vt banitem enchanted_golden_apple
PostgreSQL Database Support โญ NEW
- Direct JDBC Connections: Support for PostgreSQL databases beyond Supabase
- Connection String Config: Full PostgreSQL connection string support
- Enhanced Compatibility: Works with Supabase, AWS RDS, Google Cloud SQL, etc.
- Configuration:
database: type: "postgresql" postgresql: connectionString: "postgresql://user:password@host:5432/database"
๐ง Enhancements
Command System Improvements
- Enhanced Tab Completion: Full autocomplete for all commands and parameters
- Better Error Messages: Improved feedback for invalid commands and parameters
- Enchantment Guidance: Special help messages for enchantment-related commands
- Profession Validation: Real-time validation of profession names and trade IDs
Database Architecture
- Multi-Database Support: SQLite, Supabase REST API, PostgreSQL JDBC
- Automatic Fallback: Seamless fallback to SQLite if cloud databases fail
- Connection Management: Improved connection pooling and lifecycle management
- Schema Validation: Enhanced database schema validation and migration
Performance Optimizations
- Memory Usage: Reduced memory footprint for large trade registries
- Database Queries: Optimized query performance and caching
- Async Operations: Improved asynchronous database operations
- Resource Management: Better cleanup and resource disposal
๐ Bug Fixes
Supabase Integration
- URL Construction: Fixed double
/rest/v1/path construction bug - Authentication: Corrected authorization header usage for service keys
- Connection Status: Fixed
isConnected()method to properly track status - Error Handling: Improved error messages and fallback behavior
Command Processing
- Trade Validation: Fixed validation logic for custom trade pricing
- Parameter Parsing: Improved command argument parsing and validation
- Tab Completion: Fixed tab completion for complex command structures
- Error Feedback: Enhanced error messages for user guidance
Database Operations
- Connection Handling: Fixed connection leak issues in database providers
- Transaction Management: Improved transaction handling and rollback
- Migration System: Enhanced database migration reliability
- Data Integrity: Better validation of database operations
๐ Security
Database Security
- Connection Encryption: Proper SSL/TLS for database connections
- Credential Handling: Secure storage and transmission of credentials
- Access Control: Improved permission validation
- Audit Trail: Database operation logging for security monitoring
Input Validation
- Command Sanitization: Enhanced input validation for commands
- SQL Injection Prevention: Prepared statements for all database queries
- Path Traversal: Protection against path manipulation attacks
- Resource Limits: Rate limiting and resource usage controls
๐๏ธ Technical Improvements
Code Architecture
- Database Provider Pattern: Clean abstraction for different database types
- Configuration System: Enhanced configuration parsing and validation
- Error Handling: Comprehensive exception handling and logging
- Code Organization: Better separation of concerns and modularity
Dependencies
- PostgreSQL Driver: Added PostgreSQL JDBC driver support
- HTTP Client: Updated OkHttp for better Supabase communication
- JSON Processing: Enhanced Jackson for complex data structures
- Testing Framework: Improved unit and integration testing
Build System
- Maven Configuration: Updated dependencies and build process
- Plugin Compatibility: Enhanced compatibility with different server platforms
- Resource Management: Better handling of plugin resources
- Deployment: Streamlined build and deployment process
๐ Migration Guide
From V10.x to V11.0
Database Migration
# V10.x config
database:
type: "sqlite"
# V11.0 config (unchanged for SQLite users)
database:
type: "sqlite"
sqlite:
file: "villager_data.db"
New Commands Available
- Run
/vt listbanneditemsto see current banned items (none by default) - Use
/vt banitem <item>to ban items from trades - Consider
/vt setpriceimprovements with better error messages
Configuration Changes
- No breaking changes for existing configurations
- New
postgresqlsection available for advanced users - Enhanced logging options in
config.yml
๐ Metrics & Monitoring
Health Checks
- HTTP Endpoints: Configurable health check endpoints
- Database Monitoring: Connection pool and query performance metrics
- Memory Tracking: JVM memory usage and garbage collection monitoring
- Trade Statistics: Real-time trade volume and performance analytics
Logging Improvements
- Structured Logging: JSON-formatted logs for better parsing
- Debug Modes: Enhanced debugging options for troubleshooting
- Performance Logs: Query execution time and bottleneck identification
- Error Tracking: Comprehensive error reporting and analysis
[10.x.x] - Previous Versions
See individual release notes for V10.x changes including:
- Universal trade pricing for all professions
- Folia compatibility and region-threaded scheduling
- Advanced restock system with instant restock
- Dynamic trade detection and storage
๐ค Contributing
- Bug Reports: Use GitHub Issues with detailed reproduction steps
- Feature Requests: Describe the use case and expected behavior
- Code Contributions: Follow the existing code style and patterns
- Testing: Ensure all tests pass and add new tests for new features
๐ Support
- Documentation: README.md for complete usage guide
- Issues: GitHub Issues for bug reports and feature requests
- Community: Join our Discord for community support
- Compatibility: Minecraft 1.20.x - 1.21.x, Java 17+
Legend:
- ๐ Major Features: Significant new functionality
- ๐ง Enhancements: Improvements to existing features
- ๐ Bug Fixes: Resolved issues and problems
- ๐ Documentation: Documentation and guides
- ๐ Security: Security-related changes
- ๐๏ธ Technical: Internal architecture changes
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:8oLCKGgM:PVtqMnRt"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:8oLCKGgM:PVtqMnRt"
}
