Trophies Plugin - Major Update (v2.0) This is a massive rewrite of the Trophies system! We have completely overhauled the architecture to be faster, safer, and infinitely easier for admins to manage. Please read the migration notes below, as the plugin will automatically update your old files.
What's New
Physical Item Consumption: Trophies are no longer just digital unlocks! Players must now physically hold the trophy item in their survival inventory to place it in their showcase. Placing it permanently consumes the item.
Container Protection: Added strict anti-dupe and anti-loss protections. Players are actively blocked from placing physical trophies inside chests, shulkers, or other containers.
Automated Legacy Migration: Upgrading from the old version? The plugin now features a safe, automatic migration engine. On startup, it will silently patch your old trophies.yml to the new data standards and safely backup your old config.yml without losing any player data.
Purge System & Safety GUI: Added a new /trophies purge <player> command for admins. To prevent catastrophic mistakes, this triggers a strict two-step visual Confirmation GUI before wiping a player's data. This is also achievable via the Player GUI in the Admin panel.
Modern Particle Engine (1.20.5+ Support): New particle system to support Minecraft 1.20.5+ (Particle.DUST), while maintaining ViaVersion backward compatibility to safely render particles for older clients without crashing the server.
Custom Locked Blocks: Admins can now define unique "locked" materials for individual trophies via the Admin GUI, overriding the global config.yml default.
Dynamic Showcase Rendering: Unlocked but unplaced trophies now render as a glowing "Empty Slot" rather than a blocked barrier, inviting the player to click and place their item.
Placement Modes: Introduced UNLOCK_REQUIRED and ALWAYS_PLACEABLE modes, allowing admins to create exclusive rewards alongside baseline collectibles.
Changes & Improvements
Secure UUID Generation: Trophies are now generated with mathematical UUIDs instead of manual strings. This makes creation a seamless 1-click process and completely eliminates the risk of admins typing duplicate IDs and corrupting the database.
Complete GUI Overhaul: Replaced tedious chat-typing with visual, paginated menus. You can now use the Material Picker, Color Picker, and the live Slot Picker (which highlights taken vs. available slots in red and green) directly in the Admin Panel.
Live Showcase Previews: The Admin Player List now allows you to click on any online player's head (or search offline players) to view a live, read-only version of their personal showcase.
Smart Slot Allocation: Clicking "Create New Trophy" now actively scans the showcase and automatically finds the first available empty slot to prevent overlapping.
Safe Showcase Resizing: The Admin Settings GUI now actively blocks you from shrinking the showcase rows if it detects that an existing trophy would be orphaned outside the new boundaries.
Hardened Base64 Skulls: Dropped outdated Java reflection. Custom Base64 heads now use the official PlayerProfile API with consistent UUID hashing, guaranteeing they render perfectly on modern clients without defaulting to Steve/Alex skins.
Memory Leak Prevention: Player profiles are now actively evicted from the server's cache the moment they disconnect, keeping RAM usage exceptionally low.
️ ️ Removals & Deprecations
Manual Sub-commands Removed: The bloated /trophies remove, and /trophies delete commands have been completely removed. Everything is now managed visually via the Admin GUI or the streamlined /trophies unlock command.
Legacy Language Folders Removed: The cluttered multi-file language system (lang_en.yml, lang_it.yml) has been deprecated. All messages are now cleanly centralized in a single messages section inside the config.yml.
Future updates
NBS add-on: We are currently working on an NBS implementation to add custom sounds upon trophy placement.
You can now use HEX colors (following the format &#RRGGBB)
Complete GUIs' buttons logic rework
Implemented an emergency mode in case something goes wrong during the plugin boot. In this way the plugin does not turn itself off but can be reloaded after having fixed the errors
I don't remember cause I lost the previous GitHub repo and had to make a new one