![]()
Added feature:
Added support:
- Holograms now get displayed as text and block displays for 1.19.4+
Improved support:
- Minecraft 26.1
- Added migration system for SWM to ASP
- In case you upgrade from 1.8.8-1.12 to a modern version
- Is done automatically, fixes errors that would previously occur
- It is now possible to use both legacy and MiniMessages together in scoreboards
- Added MiniMessage support to item lores
Config changes:
- Relational placeholders within PlaceholderAPI
- Mainly for TAB
- Allows you to have per-player languages for e.g. stats etc.
- Bedwars1058 migration:
- Fallback to 0 instead of failing if parsing a spawn direction had (likely human-caused) errors
Performance improvements:
- Added to config.yml
- regeneration-disable-autosave-modern-paper
- Performance optimization that we would previously always apply is now disabled by default on modern paper for cloned region arenas
- Reason are memory leaks, that we try to patch
- You may enable that optimization, which disables auto-save for cloned worlds. Please send us heapdumps in case you notice memory leaks
- Added to shop-layout-properties.yml
- For HyPixelV2 shop
- gui-height
- quickbuy-empty-icon
- For HyPixelV2 upgrade shop
- gui-offset-top
- gui-height
- seperator-material
- For global upgrade shop
- unqueued-trap-icon
- It's now possible to use PAPI placeholders within item strings for icons of shop items and pages, and within item products
- It is now possible to forcefully overwrite a shop page's item name using NBT/components (makes it possible to have a different GUI title)
Miscellaneous:
- Improved general performance by indexing by char and not string where applicable
- Improved efficiency and accuracy of the language identification system
- Reduced performance impact on arenas GUIs caused by updates (especially when an arena ends) by enqueuing arenas for a certain amount of ticks (basically delaying redraws)
- Improved general performance throughout the plugin by reducing ItemMeta clones
- Improved general arenas GUIs performance for paper 1.16.5+
- Reduce TPS-drops caused by "Parties" hook by attempting db calls async
- Improved efficiency of "Parties" hook by utilizing caches and reducing db calls
- Greatly improved efficiency of special block updating
- Improved efficiency by using more efficient String-modification algorithms
- Improved general performance by utilizing FastUtil wherever feasible (supported for all paper versions, spigot only 1.18+)
- Improved efficiency of item NBT parsing by avoiding useless computations
- Arenas GUI rendering is now happening async (improves micro-freezes on main thread)
- Improved general performance for 1.20+ and 1.8.8 by avoiding complete copies of NBT and instead mirroring them
- Slightly improved SQL performance when saving player data
API changes:
- Added custom mode name to /bw arena info
- Added warnings if spectate teleport failed
Fixed bugs:
- Added event
- AsyncPlayerRejoinPullArenaEvent
- Added classes
- ItemBuilder
- SpectateRemotePlayerInfo
- RejoinRemotePlayerInfo
- DynamicItemStack
- BasicItemShopProduct
- BasicItemShopPrice
- SpecialItemUseSession#isStoppedWithPlayerQuit()
- Added methods
- PlayerDeathInventoryDropEvent#addHandlerAfter(handlerToAdd, handlerToFind)
- PlayerDeathInventoryDropEvent#addHandlerBefore(handlerToAdd, handlerToFind)
- LazyReference#isCached()
- WorldStorage#getBlocks(BlockType)
- Helper#split(String, char)
- Helper#remove(String, char)
- MigrationProcess#isModifyingPlayerData()
- MigrationProcessRunEvent#addHaltLatch(CountDownLatch)
- MigrationProcessRunEventgetHaltLatches()
- Helper#isWorldLoaded(Location)
- QuitPlayerMemory.constructMidgame(RemotePlayer, Team)
- RemoteArena#setQuitPlayerMemory(QuitPlayerMemory)
- RemoteArena#rejoinPlayer(RemotePlayer, Consumer)
- RemoteArena#rejoinPlayer(RemotePlayer)
- RemoteArena#rejoinPlayer(RejoinRemotePlayerInfo, Consumer)
- RemoteArena#addSpectator(SpectateRemotePlayerInfo, Consumer)
- PlayerCustomKnockbackEvent#getBukkitEvent()
- ShopItem#getDynamicIcon()
- ShopPage#getDynamicIcon()
- ShopItem#setDynamicIcon(icon)
- ShopPage#setDynamicIcon(icon)
- ItemShopProduct#getItemStacks(Player)
- Breaking changes
- Attempting to spawn a holographic entity with HologramSkinType#VILLAGER will now fail hard (deprecated). Use #LIVING instead
- "ItemShopProduct", the variant that only drops regular items, has been split of to "BasicItemShopProduct" to avoid complexity, as spawner and special item products also inherited from ItemShopProduct
- ^ the same counts for "ItemShopPrice"
- Deprecated
- NMSHelper#hideAttributes(ItemStack)
- NMSHelper#setGlowEffect(ItemStack, boolean)
- Helper#setUnbreakable(ItemStack, boolean)
- Helper#setUnbreakable(ItemMeta, boolean)
- Helper#dye(ItemStack, DyeColor)
- RemoteArena#teleportHere(player, sendMessage)
- RemoteArena#addSpectator(player, reason)
- RemoteArena#addSpectator(player, reason, ignoreArenaStatus)
- RemoteArena#addSpectator(player, reason, callback)
- RemoteArena#addPlayer(player, team)
- RemoteArena#addPlayer(player, team, callback)
- RemoteAPI#teleportPlayerToArena(player, arena, sendMessage, callback)
- RemoteAPI#addSpectatorToArena(player, arena, reason, ignoreArenaState, callback)
- RemoteAPI#addPlayerToArena(info, arena, callback)
- RemoteArena#addSpectator(player, ignoreArenaStatus)
- ItemShopProduct#getItemStacks()
- ItemShopPrice#getItemStacks()
- Fixed BootstrapMethodError when trying to look up an invalid sound on 1.21.11
- Fixed "argument type mismatch" for versions 1.11 - 1.16.5
- Fixed InnovocationException caused by a bug within PandaSpigot
- Fixed MigrationProcessRunEvent not being called
- Fixed rare CME error related to holograms
- Fixed being able to pickup items while being teleported to the hub (paper only)
- Fixed not starting on certain server configurations for 1.14 and older
- Fixed MiniMessages not working on scoreboard's title
- Fixed abuse: Being able to tp to enemies during death spectate
- Fixed "Player is not in the arena" error
- Fixed memory leak when auto cloning region arenas
- Fixed "Tried to access invalid game rule" error for 1.21.11
- Fixed hologram memory leak caused by arena cloning
- Fixed error when attempting to migrate players from BW1058 db when MySQL is used
- Fixed memory leak with region arenas on paper with chunk system rewrite (1.19.4+)
- Fixed insta-break blocks disappearing when broken for clients on 1.8.8 - 1.15
- Fixed being able to break your own bed using explosive by quitting
- Trap (placed ones) now also get fired if the placer leaves/gets killed
- Fix being able to damage team mates etc by throwing explosive and then quitting immediately
- Fixed being able to stay within the arena as a spectator on paper by running against the border
- Fixed deadlocks with SQL
- Fixed certain special items stopping unnecessarily when player (who used it) leaves: Guard Dog/Iron Golem, Rescue Platform, TNT Sheep
- Fixed "team-balance" (both false and true) not being entirely random
Added support:
Added features:
- 1.21.9, 1.21.10, and 1.21.11 (Thanks to MetallicGoat )
- ItemJoin
- To prevent possible compatibility issues due to misconfiguration
- Latest AdvancedSlimePaper
- ViaRewind (1.19R2+)
- Hotfix as NPCs didn't get removed from TAB
Config changes:
- It is now possible to use MiniMessage components in scoreboards (paper 1.20.1+ only)
- Added new team: Magenta
- It is generally hidden in the team selection UI
- It is only visible once you enable the other 15 teams
- Add-ons may now declare custom modes using API
- New "custom_mode" condition variable to provide a singleton solution for all addons
- Spectator "next round" item now enforces an equal custom mode
General improvements:
- Added:
- lobby-printmapinfo-time
- logs-strippable
- Removed "lobby-countdowntitle-arena"
- Got merged with "lobby-countdowntitles"
- "max-nearby-items" (spawns.yml) may now be an expression
- "interacting" config has been split (Thanks to MetallicGoat )
- "interacting-gui" false by default
- "interacting_physical" true by default
Performance improvements:
- If party leader joins: Prefer teams that already include team members
- PaF Bungee: Reduce time it takes to fetch party info (in case player just joined)
- Now returning infinity symbol if "timer-enabled" is set to false for {countdown} in scoreboards and the countdown PAPI placeholder
- Spawner multiplier upgrade now also considers team spawn (besides just bed) as a radius
- Auto-color (& to §) results from PAPI placeholders
- Players no longer are able to strip any log (previosly they could strip player-placed blocks)
- Added new error message if no arena has been found that matches a given picker (Thanks to MetallicGoat )
API changes:
- Greatly reduced GC overhead by reducing usage of regex
- Improved efficiency throughout the plugin by implementing a more efficient placeholder replacement system
- Improved PaF bungee efficiency by reducing amount of attempted proxy requests
- Slightly improved performance for paper hard-forked versions (starting with 1.21.4) by avoiding reflection for their feature-set
- Improved general performance by making it easier for JIT optimizations in cross-version handling
- Added support for paper's AsyncPlayerSpawnLocationEvent (improves performance and stability)
Fixed bugs:
- Added:
- PlayerCustomKnockbackEvent
- Helper#replaceFirst(str, target, replacement)
- Helper#replaceLast(str, target, replacement
- GameAPI#registerSpecialItem(type, plugin, name, item)
- GameAPI#isProcessingRejoin(Player)
- GameAPI#isCrossServerRejoining(UUID)
- Helper#getPlayerSkin(Player)
- NPCHologramSkin#getSkin()
- NPCHologramSkin#setSkin(Skin)
- Skin class
- NPCHologramSkin#setPlayerSpecificSkinSupplier(supplier)
- NPCHologramSkin#hasPlayerSpecificSkinSupplier()
- NPCHologramSkin#updatePlayerSpecificSkins()
- NPCHologramSkin#updatePlayerSpecificSkin(Player)
- NPCHologramSkin#getPlayerSpecificSkinSupplier()
- NPCHologramSkin#setSelfSkinSupplier()
- NPCHologramSkin#getInternalType()
- ArenaOutOfTimeEvent#setEndlessTime()
- Arena#setIngameTimeDisabled()
- PlayerBuyUpgradeEvent#getUpgradeState()
- NMSHelper#useFireworkBoost(Player, ItemStack)
- Helper#takeItems(Player, Predicate<ItemStack>, amount)
- Helper#isTransparent(Material)
- GameAPI#getHubLocation()
- GameAPI#setHubLocation(Location)
- Team#DARK_BLUE
- Team#isHidden()
- QuitPlayerMemory#constructMidgame(Player, Team)
- Changes:
- GameAPI#unregisterSpecialItem(SpecialItem): It is no longer possible to unregister built-in types. Use the new register method if you want to replace it
- It is now possible to enable the ingame timer (if it was previously turned off) using Arena#setIngameTimeRemaining(timeInSeconds)
- Deprecated:
- Helper#getPlayerSkinData(Player)
- NPCHologramSkin#setSkin(texture, signature)
- NPCHologramSkin#getSkinTexture()
- NPCHologramSkin#getSkinSignature()
- Changes due to "max-nearby-items" now being optionally an expressions:
- Deprecated DropType#getMaxNearbyItems()
- Added DropType#getMaxNearbyItems(Arena)
- Added DropType#getMaxNearbyItemsExpression()
- Added DropType#setMaxNearbyItemsExpression(String)
- Breaking Spawner#set/getMaxNearbyItems by resetting that value now with every match start
- New custom mode feature adds:
- CustomMode and CustomModeType class
- Arena#hasCustomMode()
- Arena#getCustomMode()
- RemoteArena#hasCustomMode()
- RemoteArena#getCustomModeName()
- GameAPI#getCustomModes()
- GameAPI#getCustomMode(CustomModeType)
- GameAPI#registerCustomMode(CustomMode)
- GameAPI#unregisterCustomMode(CustomMode)
- ArenaPropertyChangeEvent.Property.CUSTOM_MODE
- RemoteArenaPropertiesChangeEvent.Property.CUSTOM_MODE
- ArenaConditionVariableType.CUSTOM_MODE
- Fixed "spawn-at-start" in spawners.yml not counting items for "max-nearby-items"
- Fixed NPE related to item lore in upgrade shop
- Fixed being able to interact with iron golem / guard dog to e.g. heal him with iron
- Fixed fireball jiggering on 1.21+ with fireball-fly-speed-constant enabled
- Fixed XReplay not working as intended
- Fixed ArrayIndexOutOfBoundsException if more than 7 spawner types exist when opening the spawners GUI in setup tool
- Fixed sending messages with prefixes if they were configured to be empty
- Fixed feather fall upgrade being applied to all armor parts
- Fixed potential error when saving corrupted tile entities in region arenas for 1.21.6+
- Fixed light blocks breaking safe-respawn location identifier and fireball double jumping
- Fixed NPE caused by async world loading on modern paper versions
- Fixed being able to spectate players during respawn, even if "spectator-permit-other-player-view" is disabled
- Fixed rare glitchy behavior if attempting to spectate a player with "spectator-permit-other-player-view" disabled (fix only available for paper 1.13+)
- Fixed potential "must be Methodref constant" error on 1.12+
Added support:
Added feature:
- Added support for 1.21.8
Added sound:
- It is now possible to leave a team during lobby phase by clicking on it again
Improvements:
- LOBBY_SELECTTEAM_UNDO
API changes:
- Improved handling of real player names getting confused with their nick names in various places
Fixed bugs:
- Added
- Helper#getPlayerByName()
- Arena#leaveTeamDuringLobby(player)
- RemotePlayer#getName() now returns Helper#getNickedPlayerRealName(player) instead of Player#getName()
- NicknamingHook#getRealName(player) should now return null in case it'd return Player#getName()
- Fixed not running on 21R5
- Fixed rare cases of not being able to join an arena if moving too fast (with kick-outofarena active)
- Fixed team-balance turned off only prefering teams with >= 2 players than >= 1
- Fixed MongoQueryException when looking up a player's rank
Support:
Added feature:
- Added
- 1.21.6 + 1.21.7 (Thanks to MetallicGoat )
- Spigot-Party-API-PAF (allows you to use the free version instead of the payed extended one)
- EssentialsX: Warning if interference is detected
- Improved
- TAB and FeatherBoard now avoid interference with scoreboards
- Updated CloudNetV4 support to RC12
Added config:
- Configurable respawn protection, where a respawned player won't receive damage from enemies for x seconds, unless he attempts to punch them himself
Performance improvements:
- respawn-protection
Improvements:
- Config files (that use the YamlConfigurationDescriptor API) now save more efficiently
- Avoid quit players consuming more memory than needed due to strong reference to their Player class in private inventory
API changes:
- Players now receive their items immediately after respawning (without a 2 tick delay)
- Punch to Deposit is now included with the "HyPixel" template
Fixed bugs:
- Added
- PlayerUseSpecialItemEvent#addSessionListener(callback)
- PlayerUseSpecialItemEvent#getSessionListeners()
- PlayerStopSpecialItemEvent
- Arena#getSpecialItemSessions()
- GameAPI#getLastTeleporterSpecialItemUse(Player)
- PlayerQuitArenaEvent#hasLeaveMessage()
- PlayerQuitArenaEvent#setHasLeaveMessage(boolean)
- RemoteAPI#getReservationsCount(Arena)
- RemoteAPI#hasReservation(UUID, Arena)
- PlayerIngameRespawnEvent#getSpawnLocation()
- PlayerIngameRespawnEvent#setSpawnLocation(Location)
- PlayerIngamePostRespawnEvent
- Breaking
- PlayerIngameRespawnEvent, in the past, could have been called either after (usually) a player respawned or before (rarely). It now consistently gets called before a player respawns. Use the new PlayerIngamePostRespawnEvent if you want to handle after a respawn
- Fixed bw1058 migration not working for swm worlds
- Fixed magnetic shoes not working at all
- Reverted check custom team upgrades that would prevent non-vanilla enchants to be applicable
- Fixed being able to tigger traps in endlobby
- Fixed memory leak if player leaves while (and not through) the leave item delay was active
- Fixed not being able to buy items in shop layouts with villager UIs
- Hotfix for mem-leak within PaF extended API
- Fixed potential "Cannot measure distance between world" error with tracker and TNT sheep
- Fixed interact error if a spectator item only has commands without an handler
- Fixed error when migrating from bw1058 with it using SQLite that hasn't been initialized yet
- Fixed anvil GUI not opening on 1.21.5+
Added support:
Added configs:
- 1.21.5 (Thanks to MetallicGoat )
Performance improvement:
- mongodb-authdb
- hologram-title-vertical-spacings (Thanks to MetallicGoat )
- actionbar-ingame-text (Thanks to MetallicGoat )
- auto-cloning-lobby-arenas-exclude-full
Improvements:
- Reduced usage of sqrt (Thanks to MetallicGoat )
API changes:
- In arena's region file: Now also storing the key of entity types (1.14+) to improve cross-version support and to prepare for data-based entities
- Scoreboards now get displayed immediately after join, even if stats aren't loaded yet (Thanks to MetallicGoat )
- "performance" config now also effects frequency of trap updates. Default "normal" level increases frequency from 20ticks to 15ticks to improve the gameplay experience
- Unified enum parsing by name in configs (now more gracious with subtle mistakes in naming)
Fixed bugs:
- Added
- PlayerUseSpecialItemEvent#getInventorySlot()
- GameAPI#isSpectator(Player)
- RemoteServer#getPlayers()
- RemoteArena#isCloned()
- RemoteArena#getCloneParent()
- RemoteArena#getClones()
- PlayerDataAPI#registerAchievementType(id, plugin, name, description)
- NMSHelper#setFireballDirection(fireball, direction, speed)
- ArenaSaveBlocksStopEvent
- Arena#getDataFolder()
- Arena#getDataRegenFile()
- Arena#isPlaying(Player)
- Arena#isSpectating(Player)
- Upgrade#isApplicable(Arena)
- PlayerTriggerUpgradeEvent#isAPICall()
- PlayerTriggerUpgradeEvent#hasPlayer()
- Change
- UpgradeState#doUpgrade(level, player): Player param may now be null
- Breaking
- PlayerTriggerUpgradeEvent no longer inherits from PlayerEvent
- PlayerTriggerUpgradeEvent#getPlayer() my be null now (if an upgrade is done using the API)
- Hotfix tracker not working for 1.21.4 (caused by a Minecraft client-side bug)
- Improved auto-upgrade for REGION files from older version for 1.20R4+ (fixes breaking player heads etc)
- Fixed being able to glitch the teleporter item by swapping the main hand while it counts down
- "drops-killer-auto-pickup" config: Killer no longer receives the items if he dies before the player he killed (e.g. via arrow)
- Fixed kill_with_half_heart achievement not working
- Fixed potential NPE related to action bars (Thanks to MetallicGoat )
- Fixed {countdown} and {running-time} not properly getting updated on the scoreboard if not used in the title (Thanks to MetallicGoat )
- Fixed rare possibilities of "drops-killer-auto-pickup" still dropping something
- Fixed holo min visibility radius breaking if set greater than sqrt(2^32-1) (caused by int overflow)
Improvements:
Performance improvements:
- Players now get teleported to the main world's spawn instead of a random location if no hub position was set
API changes:
- Slightly improved efficiency by avoiding code execution in certain events early
- Improved client-side caching for custom skull textures
Fixed bugs:
- It is now possible to create custom TeamEnchantment targets
- Added Constructor TeamEnchantment(Predicate<ItemStack>, String targetId, Enchantment, int lvl)
- Added TeamEnchantment#isApplicable(ItemStack)
- Added TeamEnchantment#getTargetId()
- Added TeamEnchantment.Target#CUSTOM
- Deprecated TeamEnchantment.Target#byMaterial(Material) is now deprecated for removal
- Added
- Helper#takeItems(player, is, amount)
- Helper#giveItems(player, is, dropOverflow)
- RejoinPlayerIssue.ALREADY_INSIDE
- Fixed NPE when starting the plugin for the first time
- Fixed race-condition if player gets teleported to the lobby after the match started. This only happened on paper and was related to async tp
- Fixed accidentally obfuscating base.json fields, whereby the hubPosition would get reset with every update
- Fixed being able to participate in two arenas at the same time by attempting a rejoin while already joining another one
- Fixed bugs (potentially only for ProxySync + paper 1.21.4) where players would turn into a buggy state when leaving as a spectator
- Fixed being able to swap offhand items in lobby phase
- Fixed steve skulls when applying (legacy) NBT on custom skulls for 1.20.5+
We released a new and free addon! Check it out: Level Shop
Added features:
Added support:
- Bypass blocked-commands using new permission "mbedwars.bypassblockedcommands"
- Added ability to make spawners drop a given amount of items at the start of the match
- Added feather fall upgrade
- Traps may now be removed by the original buyer of the trap
Config changes:
- GeyserMC without Floodgate (prior we only supported Floodgate, now both)
Performance improvements:
- Config "floor-foliage-simplified-destruction" will now also function in non-build areas
- Config "interacting" set to false now also prevents flower pot interaction
- Added config to spawners.yml: "spawn-at-start"
- Changes for "drops-killer-auto-pickup":
- Nothing will drop at all if there is no responsible killer
- It now also works for exp besides items
- For upgrade-shop.yml:
- Configured levels config must now start with 1 and increment one-by-one
- Any upgrades with a different schema will be ignored
- This change shouldn't break anything for anyone
- For upgrade-shop.yml:
- The order of configured upgrades is now being respected and properly displayed in the GUI
Improvements:
- Slightly improved efficiency of spawner dropping items
- Improved efficiency of logic that checks whether a block is interactable
- Slightly improved efficiency of messaging system
- Slightly improved efficiency of metadata storage
- Reduced memory footprint of our NBT system
- Improved efficiency of getting arenas by their name
- Improved efficiency of hook manager
- Improved efficiency of upgrade state handling
- Improved efficiency of actionbar text + it's now async
- Improved efficiency (both RAM and CPU) of hologram logic
API changes:
- Now using related player (and not receiving) for papi placeholders when somebody joins or leaves
- Reworked endlobby rejoin (spectators turning into players)
- Prior, we would use the regular “player joining arena” logic. However, that caused a wide array of unexpected problems, whereby we are now adapting on the regular rejoin system.
- Improved system that lookups for legacy block types when using a match-blocks file for REGION arenas from older spigot versions
- Reverted change where all spawners would drop an item at the start of the round
- BEST arena picker selector now fallbacks to a random arena if any is full instead of none (useful for spectating arenas)
- "HyPixelV2" Upgrade shop layout: Now displaying next roman tier in the name
- Updated default "HyPixel" template
Fixed bugs:
- Changed the meaning of QuitPlayerMemory
- Previously, it would only exist if the player was able to rejoin (e.g. his team was not eliminated)
- This would be problematic, as that would prevent losses from being counted
- Now, QuitPlayerMemory always get constructed when the player leaves, unless the match hasn’t started yet (status != LOBBY)
- All memories get cleared once the status changes to RESETTING.
- Added QuitPlayerMemory#isRejoinPermitted()
- Added QuitPlayerMemory#setRejoinPermitted(boolean)
- Added RejoinPlayerIssue.NOT_PERMITTED
- Added:
- enum RejoinPlayerCause
- PlayerRejoinArenaEvent#getCause()
- Permissions.BYPASS_BLOCKED_COMANDS
- KickReason#isRageQuit()
- PlayerOpenArenaChestEvent.ChestType enum
- PlayerOpenArenaChestEvent.OpenPurpose enum
- PlayerOpenArenaChestEvent#getChestType()
- PlayerOpenArenaChestEvent#getPurpose()
- Arena#getChestType(Block)
- Arena#getChestInventory(Block, Player)
- Upgrade#getMinLevel()
- UpgradeState#setCurrentUpgradeLevel(UpgradeLevel)
- UpgradeState#clearUpgrade(Upgrade)
- UpgradeTriggerHandlerType.FEATHER_FALL
- QueuedTrap class
- PlayerRemoveTrapEvent class
- UpgradeState#removeTrap(QueuedTrap, Player)
- HologramEntity#setPerPlayerVisibility(Predicate<Player>)
- HologramEntity#getPerPlayerVisibility()
- HologramEntity#updatePerPlayerVisibility()
- Helper#isInteractableBlock(Material)
- DropType#getSpawnAtStart()
- DropType#setSpawnAtStart(int)
- Deprecated:
- AddPlayerCause#END_LOBBY
- Helper#parseSNBTAsJson(String)
- Helper#composeJsonAsSNBT(JsonObject)
- PlayerOpenArenaChestEvent#isTeamChest()
- PlayerOpenArenaChestEvent#isPrivateChest()
- Breaking:
- Upgrade#getLevels() now returns a List instead of a Set
- UpgradeState#getNextUpgradeLevel(Upgrade) may now return null if max was reached
- UpgradeState#getActiveUpgrades() new returns Collection instead of List
- UpgradeState#getQueuedTraps() now returns Queue<QueuedTrap> instead of List<UpgradeLevel>
- UpgradeState#queueTrap(UpgradeLevel, boolean) now expects a QueuedTrap parameter instead of the UpgradeLevel
- PlayerOpenArenaChestEvent now also gets called for vanilla chests (e.g. shulker boxes, but excluding furnaces etc)
- Fixed PlayerTriggerUpgradeEvent's cancellation not being respected
https://www.spigotmc.org/resources/23202/
- Fixed error when migrating from MongoDB
- Fixed that MongoDB storage would look for users in the configured db and not the "admin" db
- Fixed broken TNT sheep&QuickBuy for 1.21 - 1.21.2
- Fixed spectators not becoming visible if "endlobby-tptolobby" was enabled
- Fixed losses not being counted for players not-rejoinable players
- Fixed "blocked-commands" may as well block "allowcommand-stats" and "hubcommands"
- Fixed dropped items potentially not stacking in the inventory for 1.20.4 and older
- Fixed not properly saving & clearing 1.17+ entities folder in vanilla worlds for arenas of type WORLD. As a result, dropped spawners, iron golems etc. would remain for the next match
- Fixed error when running /bw backup list
- Fixed odd warnings when trying to join a full arena while in party
- Fixed bedrock players getting stuck on respawn screen (1.15+)
- Fixed being able to pickup items when leaving as spectator with ProxySync addon
- Fixed various rare CME related to the registry
- Fixed that leaving a server (without /leave command) wasn't considered as a rage quit
- Fixed not properly displaying upgrade amounts for 1.20R4 for "HyPixelV2" Upgrade shop layout
- Fixed not respecting WorldUnloadEvent's cancellation, and thus potentially causing unexpected behavior
Added support:![]()
Improved support:
- MC 1.21.4 (Thanks to MetallicGoat )
Added feature:
- SWM: Support was added for its async world generation. It must be enabled in its configs - ASWM doesn't have that
Config changes:
- Added double jumping to fireballs (disabled by default)
- Added per-arena weather and time properties (found in arenas GUI, thanks to MetallicGoat )
- Backported enderpearl tp sound from 1.20.3 to older versions
- Similar (~) comparator to arena pickers
Performance improvements:
- Added:
- "custom-handler-config" to spawners
- Custom spawner handlers added using the API may now also hold custom configs
- customchatmessage-message-lobby
- fireball-air-jump
- fireball-air-jump-ticks
- fireball-multiplier-knockback-enemy
- fireball-multiplier-damage-enemies
- explosion-destroys-items
- redye-blocks-onpickup (Thanks to MetallicGoat )
- "auto-clone-mode-types" now allows more concrete definition for modes per arena type instead of enforcing the same ones for all arenas (Thanks to MetallicGoat )
- Note that existing configuration for that one will be overridden
- Use '[ ]' as the key if you want to retain it as before
Improvements:
- SQL storage: Improved efficiency by when fetching leaderboard entries
- Greatly improved performance of spawner's nearby items lookup logic
- Spawners with merging disabled: Reduced max dropped count from 50 to 20, until merging kicks in. Improves FPS while looking similar stacked
API changes:
- In case it is not possible to unload a world, it is now tried to identify which plugin is causing it
- It is no longer possible to set hub positions inside arenas
- Added new arena issue in case the match world is not loaded, which replaces the old confusing "missing world" warning for this scenario
- Better handle regeneration attempts in case the match worlds have been unloaded
- Setup gui: GUI title now contains arena name
- Added various sounds to setup tool
- Reduced amount of garbage that gets stored within database
- Explosives no longer destroy dropped items
- Removed delay until holograms (dealers etc) appear
- 1.20.5: Show (max/min) player info beyond 16 (max stack size) and up to 99 in arena configuration gui
- HypixelV2 shop item names now green when purchasable (Thanks to MetallicGoat )
- Spawners now drop once on round start (Thanks to MetallicGoat )
- Removed ranking.cfg and moved it to the new world holo system
- Added warning with solution if "regeneration-region-efficient" is active, yet the match format has a problem whereby certain chunks wouldn't get properly generated
- lobbybreak-enabled is no longer a requirement for movement of lobbys for cloned arenas
Fixed bugs:
- Breaking changes:
- Removed various API that were marked as deprecated
- RemotePlayer#getLoginTime() now returns Instant instead of long
- ConfigsLoadEvent#getTime() now returns Duration instead of long
- Replaced PlayerDamageInfo#MAX_AGE_MS (long) with PlayerDamageInfo#MAX_AGE (Duration)
- Replaced duration parameters of MigrationProcess.Callback methods with Duration instead of long
- Marked certain methods as deprecated that might break when Spigot releases their ItemType and BlockType API
- Added Javadoc for all packages (Thanks to MetallicGoat )
- Added:
- ArenaWinningDetermineEvent (Thanks to MetallicGoat )
- SpectatorKickReason#SERVER_DISCONNECT (Thanks to MetallicGoat )
- KickReason#SERVER_DISCONNECT (Thanks to MetallicGoat )
- KickReason#TELEPORT (Thanks to MetallicGoat )
- KickReason#isRejoinPermitted() (Thanks to MetallicGoat )
- ThrowingBiConsumer class
- ExecutionChain class
- PlayerStats#setReadOnly(boolean)
- PlayerAchievements#setReadOnly(boolean)
- PlayerProperties#setReadOnly(boolean)
- PlayerDataAPI#getUUIDByName(username, callback)
- LazyReference.of(Supplier)
- LazyReference#clear()
- Spawner#getDroppedItems()
- PlayerUseSpecialItemFireballEvent#getAutoIgnitionTicks()
- PlayerUseSpecialItemFireballEvent#setAutoIgnitionTicks(ticks)
- TeamSelectorController
- ArenasGUIController
- RankingStatueController
- HologramControllerType.RANKING_STATUE
- LazyReference now implements Supplier
- Fixed various bugs related to buying with custom drop types
- Fixed broken anvil GUI on 1.21.2 and 1.21.3 (Thanks to MetallicGoat )
- Fixed memory leak related to new player meta system
- Fixed potential error when stopping server while in arena editor GUI (Thanks to MetallicGoat )
- Fixed Setup hotbar not being reset to normal after server restart or reload (Thanks to MetallicGoat )
- Fixed amount of missing materials in message being broken when buying items
- Fixed very rare "PROCEDURE * already exists error", when starting multiple servers at the exact same time that use SQL
- Fixed shop items with custom id's break on reload. Also fixes duplicate shop items stored in memory on reload (Thanks to MetallicGoat )
- BW1058 migration: Don't freeze thread if it fails to sync stats/props of a player for 15 seconds
- Fixed saving a world arena in the main world show "FAILED_WORLDPLAYERS" instead of "FAILED_IS_MAIN_WORLD" as the error
- Fixed world potentially not unloading correctly as players are not getting teleported away accordingly
- Fixed world regenerating warning about players in world and thereby not working, in case the hub chunks didn't get loaded in time
- Fixed exact casing of arena being expected within /bw join
- Fixed cancelling lobby countdown at exact min players amount and not one below
- Fixed not being possible to migrate from bw1058 to sql/mongodb
- Fixed console error when setup gui was open while stopping the server
- Fixed guard dog damage multiplier config being broken (Thanks to MetallicGoat )
- Fixed rare error when player gets teleported immediately after he joins the server on paper (Thanks to MetallicGoat )
- Fixed errors with TNT sheep and mini shop on 1.21.3+
- Fixed player items getting deleted when entering end-lobby as a spectator (Thanks to MetallicGoat )
- Fixed interference with plugins causing spawn packets reordering using ProtocolLib, whereby NPCs wouldn't spawn at all
- SQL storage: Fixed potentially not loading stats properly of last entry in leaderboard
- Fixed potential error if an arena was removed while ArenasGUI was open
- Fixed /bw tools playerdata stats <modify> not working for all players in the network
- Fixed modifying knockback&explosive damage even if not inside a match
- Fixed escaping errors if % was used in custom chat format
- Fixed guard dog target not cleared after player death
- Fixed breaking various "unusual items" items with "unusual-blockdrops-handling" causing IllegalArgumentExeption (Thanks to MetallicGoat )
- Fixed spigot bug that would cause spectators to pick up items when leaving the server
- Fixed spectators not seeing rejoining players with tab-removeplayers enabled
- Fixed splash potion material not being usable for 1.8.8
- Fixed no sound being played when buying item if no message has been configured for the given situation (Thanks to MetallicGoat )
