Tags
Creators
Details
1.2.6
Compatibility
Changes
Zenith-Mod v1.2.6 Update
🐛 Bug Fixes
BanList GUI Critical Fixes
This update fixes several critical issues in the BanList GUI module that could cause server crashes.
Fixed Issues
-
Fixed: Critical crash when opening Ban Details GUI caused by invalid material name (
HOURGLASS)- The material
HOURGLASSdoes not exist in Minecraft/Bukkit API - Changed to
CLOCK(the correct material name) - Added fallback handling for invalid material names throughout the module
- The material
-
Fixed: Material validation errors
- All
Material.valueOf()calls now include proper try-catch error handling - Invalid material names from configuration now fallback to safe defaults (PAPER, RED_CONCRETE)
- Prevents
IllegalArgumentExceptioncrashes when configuration contains invalid materials
- All
-
Fixed: Pagination bounds checking
- Improved index validation when clicking on ban items
- Prevents
IndexOutOfBoundsExceptionwhen navigating between pages - Better handling of edge cases in pagination logic
Technical Improvements
-
Added: Safe material name validation with fallback handling for all GUI items
- Filter buttons, navigation buttons, action buttons, and info items all have fallback materials
- Configuration errors no longer cause server crashes
- Server continues to function even with invalid material names in config
-
Added: Enhanced slot bounds checking throughout the BanList module
- All slot assignments now validate bounds before setting items
- Prevents
ArrayIndexOutOfBoundsExceptionerrors - Better error logging for configuration issues
-
Improved: Better error handling for invalid configuration values
- Invalid slot numbers are safely ignored
- Invalid material names use fallback materials
- Configuration errors are logged but don't crash the server
🚀 Velocity Plugin Available
Zenith-Mod Velocity v1.2.5 is now also available! The Velocity version includes all the same features and bug fixes as the Bukkit version.
📋 Compatibility
- Fully backward compatible - No breaking changes
- No configuration changes needed - Existing configs work as-is
- No database migrations needed - Automatic database handling
- Works with all database types - H2, SQLite, MySQL, MariaDB
🔧 Technical Details
Material Name Validation
All GUI item creation now includes safe material validation:
Material material;
try {
material = Material.valueOf(materialName);
} catch (IllegalArgumentException e) {
// Fallback to safe default
material = Material.PAPER; // or appropriate fallback
}
This ensures that even if the configuration contains invalid material names (like HOURGLASS), the server will not crash and will use a safe fallback material instead.
Slot Bounds Checking
All slot assignments now validate bounds:
if (slot >= 0 && slot < gui.getSize()) {
gui.setItem(slot, item);
}
This prevents ArrayIndexOutOfBoundsException errors when configuration contains invalid slot numbers.
📝 Configuration Notes
If you're using custom material names in modules/banlist.yml, please ensure they are valid Minecraft material names. Common mistakes:
- ❌
HOURGLASS→ ✅CLOCK - ❌
WOOL→ ✅WHITE_WOOL(or specific color) - ❌
STAINED_GLASS→ ✅WHITE_STAINED_GLASS(or specific color)
For a complete list of valid material names, refer to the Bukkit Material API documentation.
⚠️ Important Notes
- This update is highly recommended - Fixes critical crashes in the BanList GUI
- No data loss - All existing bans and history entries remain intact
- Automatic fallback - Invalid configurations are automatically handled with safe defaults
- Error logging - Configuration errors are logged to help identify issues
🔗 Links
- Bukkit Version: Download on Modrinth
- Documentation: Plugin Documentation
- API Documentation: Java API Docs
⚠️ Recommendation: If you're using the BanList GUI feature, we strongly recommend updating to this version to prevent potential server crashes.
Developed by Zenith-Studios
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:TY8FR9Ml:NwChrEQn"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:TY8FR9Ml:NwChrEQn"
}

