Список изменений
[4.4] — Final Bug-Fix Pass (All 32 Known Bugs Resolved)
Fixed
Low
-
L-01 · BungeeCord API deprecated in
CooldownManager(CooldownManager.java) Two action-bar sends usedplayer.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(…))— BungeeCord/Spigot legacy chat API that is deprecated on Paper 1.21 and may be removed in a future Paper version. Replaced with Paper-nativeplayer.sendActionBar(Component). BungeeCord imports (net.md_5.bungee.*) removed. AdventureLegacyComponentSerializerused for §-code → Component conversion to keep the existing colour format intact. -
L-02 ·
ChatColor.translateAlternateColorCodes()deprecated across 9 files (ColorUtil.java,LegendaryRecipe.java,Arena.java,DungeonManager.java,HologramManager.java,MessageManager.java,ScoreboardManager.java,AbilityManager.java,LobbyManager.java,ArenaManager.java)ChatColor.translateAlternateColorCodes('&', s)is a Spigot legacy API marked deprecated on Paper 1.21. All 9 call-sites were replaced withColorUtil.colorize(s).ColorUtilwas rewritten to useLegacyComponentSerializer.legacyAmpersand()internally while still returning a §-codedStringso all downstreamsendMessage/setDisplayNamecall-sites work unchanged. AColorUtil.strip()convenience method was also added using Adventure'sPlainTextComponentSerializer. -
L-03 ·
Player.setResourcePack()deprecated on Paper 1.21 (ConnectionListener.java) BothsetResourcePack(url)andsetResourcePack(url, hash)overloads are deprecated. The replacement is Adventure'sResourcePackRequest/ResourcePackInfoAPI, sent viaplayer.sendResourcePacks(request). ConnectionListener now builds aResourcePackRequestwith an optionalrequiredflag and configurable prompt text (see config keysresource-pack.requiredandresource-pack.prompt). -
L-04 · Loot tables hardcoded in
LootTableManager.java(LootTableManager.java,loot.yml) All 30 loot entries (11 common, 11 uncommon, 8 rare) were hardcoded — impossible to change without recompiling. Extracted to a new bundled resourceloot.yml.LootTableManagernow callsplugin.saveResource("loot.yml", false)on first run then loads viaYamlConfiguration. Areload()method is exposed so changes take effect with/perf reload(or equivalent) without restarting the server. Malformed entries log a warning and are skipped; the remaining valid entries load normally. -
L-05 · 4 dungeon types are invisible aliases (
DungeonManager.java)buildUndergroundDungeonandbuildAncientMineshaftwere one-line delegates tobuildCryptandbuildGoldMinewith no documentation. Server operators had no way to know they were paying the performance cost of spawning a dungeon that was identical to another one. Both methods are now annotated with deprecation Javadoc explaining the alias relationship, and a startup INFO message tells operators which config keys to set tofalseto remove the duplicates:dungeons.underground.enabled: falseanddungeons.mineshaft.enabled: false. -
L-08 ·
ConnectionListener— reconnect during active match loses game state (ConnectionListener.java,ArenaListener.java,GamePlayer.java) When a player disconnected and reconnected during a PLAYING or DEATHMATCH phase, thePlayerJoinEventhandler only sent the resource pack. The player spawned at world spawn (or last logout point), in the wrong game mode, with no scoreboard. Three changes:GamePlayergains alastLocationfield updated byArenaListener.onPlayerMove()on every block-level movement.ConnectionListener.onPlayerJoin()now callsMatchService.restoreSession()one tick after join to re-apply scoreboard, bossbar, and game mode.- If the rejoining player was alive, they are teleported to
gp.getLastLocation()so they return exactly where they were before the disconnect.

