26.1.2.7
Compatibility
Changes
� TagsBits Update Summary
This update focuses on improving visual consistency, modernizing message handling for newer Minecraft versions, and eliminating several hidden issues caused by decompiled code artifacts.
🎯 Major Fix — Chat Colors Not Displaying Properly
A critical issue affecting colored messages on newer Paper versions has been resolved.
The Problem
TagsBits previously relied on a legacy color conversion method that translated color codes such as:
&a &c &e &8&m
into traditional § color codes.
However, starting with modern versions such as Paper 1.21, the server uses the Adventure API, and sending plain strings through:
player.sendMessage(String)
no longer renders § formatting correctly.
What Players Experienced
Because of this limitation, many messages appeared without colors.
Examples included:
Sale confirmation messages displaying as plain text. Total earnings showing without highlighted values. "Sale Cancelled!" notifications losing their intended emphasis. Decorative separators such as: &8&m----------------
appearing without proper styling.
The plugin still worked, but the user experience felt incomplete.
✅ Solution Implemented
The entire messaging system was upgraded to use Adventure Components natively.
Improvements All sendMessage(String) implementations were migrated to Adventure Component messages. Colors now render correctly on modern Paper servers. Formatting behaves consistently across the entire plugin. Inventory titles now use native Adventure Components. Legacy compatibility was preserved where § formatting is still required.
Players now receive the rich, colorful experience originally intended.
🌈 Visual Improvements
Messages throughout the plugin now properly display:
✅ Colored prefixes ✅ Highlighted rewards and values ✅ Decorative separators ✅ Confirmation dialogs ✅ Success messages ✅ Warning notifications ✅ Error messages ✅ Inventory titles
Everything feels cleaner, more polished, and more professional.
🛠️ Additional Technical Fixes
Several hidden issues introduced by decompiled source code were also corrected.
Database Improvements
DatabaseManager.java
Completely rewritten using proper try-with-resources. Fixed scoping issues generated by CFR decompilation. Improved code readability and reliability. Menu Lore Improvements
Menu lore handling was modernized.
Before ArrayList<Object> After ArrayList<Component>
Benefits include:
Better type safety. Native Adventure support. Cleaner code. Improved maintainability. PersistentDataContainer Cleanup
Unnecessary object casting was removed.
Before (Object)
used in PersistentDataContainer.set() calls.
After Direct type-safe assignments. Cleaner implementation. Reduced clutter. Improved readability. ⚡ Why This Update Matters
Although many of these changes happened behind the scenes, they significantly improve the overall quality of TagsBits.
Benefits 🎨 Proper color rendering on Paper 1.21+ 💬 Fully modern Adventure API messaging 🗄️ More reliable database operations 📜 Cleaner menu lore implementation 🔒 Improved type safety 🛠️ Removal of decompiler-generated artifacts 🚀 Better long-term maintainability 🚀 TagsBits Is Becoming More Polished
This update may not introduce major gameplay features, but it greatly enhances the presentation, stability, and technical foundation of the plugin.
With full Adventure API support and cleaner internal systems, TagsBits is now better prepared for future updates and its upcoming stable releases.
Small details create a premium experience—and this update makes every message look exactly the way it was meant to be seen.
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:pQPXU7sj:qjc94IKA"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:pQPXU7sj:qjc94IKA"
}

