π Spigot / Paper Fixes
β’ Loads on Paper 1.20.5 - 1.21.x Again - The 9.0 jar carried three Settings.yml files and Paper refused to load it ("Duplicate entries detected"). There is now one template for Spigot and Paper and one for the proxies, so Spigot servers get Worlds, Sound and the Ad-VIP example again instead of the Velocity file
β’ Minecraft 1.13 - 1.17 Supported - DS-Ads now runs on Java 8 and every newer Java, so it loads on Spigot and Paper from 1.13 to 26.3 (9.0 needed 1.18.2 and Java 17)
β’ Action Bar and Title on 1.21+ and 26.x - They were never shown on Spigot 1.21.11 / 26.3 and Paper 1.21.11 / 26.x. DS-Ads now uses the server's own API on every version, and clicks and hovers in chat lines work everywhere
β’ Boss Bars No Longer Vanish Early - The timer of one bar removed the next bar, including a new welcome bar after rejoining. Every bar now has its own timer
β’ A YAML Error No Longer Erases Settings.yml - The plugin used to run with an empty configuration and the next /ads enable or /ads disable saved it over your file. A file with an error is now never written, moved or replaced: /ads reload tells you the error and the previous settings keep working
β’ Boss Bar Defaults - A missing Style now means PROGRESS (it hid the bar before), an unknown Color uses PINK instead of showing no bar, and the Bukkit names SOLID and SEGMENTED_6 to SEGMENTED_20 are accepted
β’ No Surprise Sounds - A chat ad without a Sound plays nothing (it played a pling)
β’ Warnings Where They Belong - Warnings and errors are logged as warnings and errors, not as INFO
π BungeeCord Fixes
β’ 1.8 Clients Are No Longer Kicked - Boss bars were sent to clients that have none (EncoderException ... BossBar). 1.8 players now get the chat, action bar and title of an ad
β’ No Kicks While Joining or Switching Servers - Boss bars wait in the player's packet queue while the client logs in or is being configured, and periodic ads wait until the player is in the world, also while switching servers
β’ Welcome Ad After the Join - It arrived before the client was in the game, so titles and action bars could be lost. It is now sent once the player is in the world of the first server, even when joining takes long (a busy server, a resource pack), after Welcome-Ad.Delay-Seconds
β’ YAML Errors Handled - /ads reload with an error no longer answers "An internal error occurred", and a broken file at startup no longer leaves /ads missing
β’ Comments Kept - /ads enable and /ads disable change only the Enabled line instead of rewriting the file without comments
β’ Clean Proxy Log - The raw ANSI color codes in proxy.log are gone
π Velocity Fixes
β’ Velocity Works - On Velocity every feature failed: the welcome ad, periodic ads and every command threw NoSuchMethodError. DS-Ads now uses Velocity's own Adventure and works on Velocity 3.x and 4.x
β’ First Ad After the Cooldown - Periodic ads no longer fire at startup and on /ads enable
β’ YAML Errors Handled - /ads reload with an error reports it instead of throwing, and a broken file at startup no longer disables the plugin until a restart
β¨ New Features
β’ PlaceholderAPI - On Spigot and Paper, PlaceholderAPI placeholders (%player_name%, %vault_prefix%...) work in every text of an ad when PlaceholderAPI is installed. Their colors are kept, and a value cannot add MiniMessage tags, so a nickname cannot inject clicks into an ad
β’ Settings.yml Updates Itself - Coming from 9.0.x, the file is updated keeping every value and your ads exactly as you wrote them, comments included (the old file goes to old-configs/). Before, a version change replaced your configuration with the defaults
β’ Update Notice - The update check can be turned off (Update-Checker), only reports versions newer than yours, and tells players with ads.manage when they join (Messages.Update-Available)
β’ Welcome-Ad.Delay-Seconds - Seconds to wait after joining before the welcome ad (default 1)
β’ Messages.Reload-Failed - What /ads reload says when Settings.yml has an error ({error}: the line, the column and the problem)
β’ No Repeats - The cycle never picks the same ad twice in a row when there is more than one
β’ Sounds by Key - Chat sounds accept names (BLOCK_NOTE_BLOCK_PLING) and keys (minecraft:block.note_block.pling)
β’ /dsads - Alias of /ads on every platform
β’ Smarter Tab Completion - /ads only offers the subcommands the sender may use, and ad names and players for send
β’ One Main Switch - /ads disable also stops the welcome ad
π§ Improvements
β’ Lighter Jar - 0.81 MB instead of 1.33 MB, still one jar for Spigot, Paper, BungeeCord and Velocity
β’ One Startup Line - The version, platform and number of ads in one line instead of the banner
β’ English Everywhere - No more Spanish texts reaching players ("Clave no encontrada"); empty parts of an ad are reported in the console when the file is loaded
π Update Instructions
1. Stop your server or proxy
2. Replace the old jar with DS-Ads-9.1.0.jar (the same jar on Spigot, Paper, BungeeCord and Velocity)
3. Start it: Settings.yml is updated keeping your values and ads, and the old file is copied to old-configs/
π Technical Details
For server administrators interested in the technical details:
β’ Rebuilt in the FruitForge layout of CocoVaults: one universal jar for Spigot, Paper, BungeeCord and Velocity, compiled for Java 8 (the Velocity part for Java 17)
β’ Adventure 4.26.1 (MiniMessage, legacy and plain text) relocated and trimmed to the classes used on Spigot and BungeeCord; on Velocity DS-Ads uses Velocity's own Adventure, and the build checks that its Velocity part never touches the relocated copy
β’ Settings.yml is read with the SnakeYAML of each platform and updated line by line, so comments and the Ads-Configuration section stay as written
β’ 29 automated tests: configuration updates (comments and line endings kept), settings, rotation, centering, MiniMessage and BungeeCord chat conversion
β’ Tested with bot players on Paper 1.13.2 (Java 8 and 21), 1.16.5, 1.17.1, 1.18.2, 1.20.4, 1.21.4, 1.21.11, 26.1.2 and 26.3 and on Spigot 1.21.11 and 26.3: updating a 9.0.1 Settings.yml, the welcome and periodic ads with all four parts and their sounds, the Worlds and Permission filters, boss bar timing, commands, tab completion and broken files
β’ Tested on BungeeCord and Velocity 3.5.1 and 4.2.0 in front of Paper 1.21.11 servers: the same checks plus the Servers filter, slow joins and slow server switches (no ad reaches a player before the world does), and 12 joins and 40 or more server switches while ads were sent every 0.4 s, without a kick; BungeeCord also with 1.8, 1.12.2, 1.16.5 and 1.20.1 clients
β’ PlaceholderAPI 2.12.3 tested on Paper 1.16.5 and 1.21.11, including values that try to add MiniMessage tags
β’ Checked again with the final jar on Paper 1.13.2 (Java 8) and 26.3, Spigot 26.3, BungeeCord and Velocity 3.5.1 and 4.2.0