v25.3.2
BedWars1058 v25.3.2
Note
Stable release. Closes the 25.3.2 beta line, everything that was tested across the four pre-releases is in here.
At a glance
| Area | Change |
|---|---|
| Scoreboard | Eliminated teams lose their check mark like they should |
| Console | No more RefreshLifeTask exception spam |
| Lobby | Match items no longer follow players out of a game |
| Lobby | Block glitch used to climb walls is closed |
| Commands | /bw reload says what it actually does |
| Placeholders | %bw1058_stats_*% no longer print raw for new players |
| Metrics | bStats removed, ArrowStats in its place |
Fixes
Eliminated teams kept showing as alive
On 1.20.3 and above the team status is drawn in the score slot of its scoreboard line. The sidebar library only re-sent the line text when refreshing placeholders, never the score, so the status froze at whatever it was when the sidebar was built. A team could be wiped out and still show a check mark for the rest of the game. The score is now re-sent whenever its content changes.
Technical detail
WrappedSidebar.refreshPlaceholders() calls ScoreLine.sendUpdateToAllReceivers(), which only sends the team packet carrying the line prefix and suffix. The score FixedFormat text goes out from sendCreate and from setScoreAmount(int). On top of that refreshContent() compares prefix and suffix only, so a line whose text never changes is skipped entirely. BwSidebar.refreshScores() renders each scored line and re-sends the score when it differs from the last one sent.
RefreshLifeTask exception every tick
A sidebar still pointing at an arena that had been disabled or restarted threw on the health refresh, because such an arena drops its player list:
java.lang.NullPointerException: Cannot invoke "java.util.List.iterator()" because the return
value of "com.andrei1058.bedwars.api.arena.IArena.getPlayers()" is null
at com.andrei1058.bedwars.sidebar.SidebarService.refreshHealth(SidebarService.java:322)
at com.andrei1058.bedwars.sidebar.thread.RefreshLifeTask.run(RefreshLifeTask.java:28)
Items from the previous match followed players into the lobby
Team selector wool and beds stayed in the inventory after a win, a loss or a leave. The routine that hands out lobby items gave up before clearing whenever the player had not landed in the lobby world yet, which is what happens on Paper because the teleport is async. The inventory is now cleared straight away and the lobby items are sent once the teleport lands.
Note
This also fixes lobby items going missing after a game, which was the same early return.
Lobby block glitch
Those leftover blocks could be placed in the lobby for just long enough to jump on, which was enough to climb over walls. The placement was cancelled, but only after the client had already predicted and drawn the block. Block items are now denied while the interaction is handled, both in the lobby and for anyone not building in a running game, so the block never appears at all. Only the item usage is denied, so menu items keep working.
/bw reload messages were misleading
The command warned in red that a full restart was needed, which stopped being true once the reload was extended, and it listed the lobby among the startup only settings even though the lobby is set live with /bw setlobby.
Stats placeholders printed raw for players with no record
A player who had never finished a game had no stats row, so every %bw1058_stats_*% placeholder was left on screen as literal text. They now fall back to a configurable message, and a latent NullPointerException on null timestamps is guarded.
Before: Kills: %bw1058_stats_kills%
After: Kills: 0
Changes
Metrics moved from bStats to ArrowStats
bStats is gone from the jar, along with every custom chart it carried. Reporting now goes to ArrowStats instead, anonymously, on a background thread.
Opting out
# plugins/ArrowStats/config.yml
enabled: falseNote
That file is shared between plugins, so turning it off opts the server out of every ArrowStats plugin at once, not just this one.
Requirements
- JDK 21 to build and to run.
- Spigot or Paper with compiled NMS. Forks without NMS are not supported.
Base
Previous stable was v25.3.1. The pre-releases that led here are still up: beta.2900, beta.acd8, beta.1d0b4, beta.08a6.
Tip
Tested on Paper 1.20.4.
