✨ New Features Slot-Based Permissions: Added support for per-slot permissions (rayzwardrobe.use.slotX). Admin View GUI: Admins can now view other players' wardrobes using /wardrobe view <player> [page]. Armor Return on Equip: When equipping a set, the currently worn armor is now saved back to the slot (swapping behavior). Back Button in Admin View: Added a back button to return to the admin's own wardrobe. Locked Slot Visuals: Slots without permission now show as locked (barrier icons) in the GUI.
🔧 Improvements Refactored Command Handling: Merged /rwcredits and /wardrobethemes into /wardrobe credits and /wardrobe themes. Enhanced GUI Logic: Improved permission checks and GUI rendering for locked slots. Better Equip Logic: Equipping a set now saves the currently worn armor back to the slot (if any). Admin GUI Read-Only: Admin view GUI is now non-interactive (view-only).
🐛 Bug Fixes Fixed potential NPEs in permission checks. Improved inventory close handling to prevent memory leaks. Fixed edge cases in armor set saving and loading.
🛠️ Technical Changes Added adminViewTargets map to track admin viewing sessions. Added equals and hashCode methods to ArmorSet for better data integrity. Improved logging and error messages for better debugging.
🔒 Permission Nodes Added rayzwardrobe.use.slot.* – Access to all slots. rayzwardrobe.use.slotX – Access to a specific slot (X = slot number). rayzwardrobe.admin.view – Permission to use /wardrobe view.
📜 Commands Updated /wardrobe – Now supports subcommands: credits, themes, view. /rwreload – remains unchanged.
🧹 Removed Standalone commands /rwcredits and /wardrobethemes (merged into /wardrobe).
- Bug Fixed.
Spoiler
[21:52:00 INFO]: [RayzWardrobe] Enabling RayzWardrobe v1.5 [21:52:00 INFO]: [RayzWardrobe] Generated default theme: classic.yml [21:52:00 INFO]: [RayzWardrobe] Generated default theme: cyber.yml [21:52:00 INFO]: [RayzWardrobe] Generated default theme: darkmode.yml [21:52:00 INFO]: [RayzWardrobe] Generated default theme: galaxy.yml [21:52:00 INFO]: [RayzWardrobe] Generated default theme: neon.yml [21:52:00 INFO]: [RayzWardrobe] Generated default theme: pastel.yml [21:52:00 INFO]: [RayzWardrobe] Generated default theme: royal.yml [21:52:00 INFO]: [RayzWardrobe] Generated default theme: sunset.yml [21:52:00 ERROR]: Error occurred while enabling RayzWardrobe v1.5 (Is it up to date?) java.lang.NoClassDefFoundError: org/bstats/bukkit/Metrics at RayzWardrobe.jar/org.rayz.rayzWardrobe.RayzWardrobe.onEnable(RayzWardrobe.java:125) ~[RayzWardrobe.jar:?] at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:280) ~[purpur-api-1.21.8-R0.1-SNAPSHOT.jar:?] at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:202) ~[purpur-1.21.8.jar:1.21.8-2493-07108b7] at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:109) ~[purpur-1.21.8.jar:1.21.8-2493-07108b7] at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:520) ~[purpur-api-1.21.8-R0.1-SNAPSHOT.jar:?] at org.bukkit.craftbukkit.CraftServer.enablePlugin(CraftServer.java:666) ~[purpur-1.21.8.jar:1.21.8-2493-07108b7] at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:622) ~[purpur-1.21.8.jar:1.21.8-2493-07108b7] at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:746) ~[purpur-1.21.8.jar:1.21.8-2493-07108b7] at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:491) ~[purpur-1.21.8.jar:1.21.8-2493-07108b7] at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:314) ~[purpur-1.21.8.jar:1.21.8-2493-07108b7] at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1179) ~[purpur-1.21.8.jar:1.21.8-2493-07108b7] at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:313) ~[purpur-1.21.8.jar:1.21.8-2493-07108b7] at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?] Caused by: java.lang.ClassNotFoundException: org.bstats.bukkit.Metrics at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:205) ~[purpur-api-1.21.8-R0.1-SNAPSHOT.jar:?] at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:172) ~[purpur-api-1.21.8-R0.1-SNAPSHOT.jar:?] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[?:?] ... 13 more [21:52:00 INFO]: [RayzWardrobe] Disabling RayzWardrobe v1.5 [21:52:00 ERROR]: [RayzWardrobe] Data manager not initialized! [21:52:00 ERROR]: [RayzWardrobe] Data manager not initialized! [21:52:00 INFO]: [RayzWardrobe] §c[RayzWardrobe] §fSaving all data...