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 )
Added support:
Config changes:
- 1.21.2 and 1.21.3 (Thanks to MetallicGoat )
Improved arena picker:
- Added "hanging-interactable"
- Added "id" config to shop items
- Added configs to change default quickbuy items to shop layout properties (Thanks to MetallicGoat )
- quickbuy-generate-automatic
- quickbuy-default-items
- spawners.yml: "spawner-delay" may now be a mathematical expression, allowing different spawner delays for different modes
Improved performance:
- The parser for conditions has been completely rewritten
- It is now possible to escape " characters using \\" in strings
- It is now possible to use variables and static values on both left and right side
- The new parser is more user friendly and will e.g. automatically add missing brackets
- The new parser has new errors which now specifically tell you at which position the error is
Improvements:
- Improved performance when trying to obtain the team given by its bed location
API changes:
- It is no longer possible to interact/break with hanging entities (unless disabled)
- Added "remaining_slots" arena picker variable
- Joining an arena now also tries to make sure that all party members fit in
- Added %mbedwars_activity% PAPI placeholder
Fixed bugs:
- Fixed:
- Fixed ServerInfoDto being wrong in javadocs
- Fixed products that were added using the API being buggy compared to those that were configured
- Fixed wrongful "shopItem must be cloned using ShopItem#clone()" error when using ShopPage#addItem(ShopItem
- Fixed LobbyCountdown events are not being called (Thanks to MetallicGoat )
- Added:
- LazyReference class
- Arena#getBedPartsAsync(team, callback)
- Arena#getTeamByBedBlock(loc)
- Arena#getTeamByBedBlock(block)
- Improvements related to shop item API:
- Added ShopItem#getId()
- Added ShopItem#isIdAutogenerated()
- Added GameAPI#getShopItems()
- Added GameAPI#getShopItemById(String)
- Spawner drop duration may now be a formula:
- Deprecated DropType#getDropDuration()
- Added DropType#getDropDuration(Arena)
- Added DropType#getDropDurationFormula()
- Added DropType#setDropDurationFormula()
- Improvements to arena pickers: (Breaking!)
- Removed ArenaConditionComparative#getVariable()
- Removed ArenaConditionComparative#getValidatingValue()
- Removed ArenaConditionComparative#getRightInput()
- Added Removed ArenaConditionComparative#getLeftInput()
- Added ArenaConditionInput class
- Added ArenaConditionParseException#getPosition()
- Added ArenaConditionGroup#serialize(isRoot)
- Added ArenaPicker#serialize()
- Fixed various issues (no lobby items etc) when PaperMC is not used
- Fixed buildable check being reverted for rescue platform and bridge
- Fixed broken {arena} placeholder when "world doesn't exist" issue is being sent in chat
- Fixed world auto-load if multiple region arenas share the same one
- Fixed arena never starting when the max players decreases to less than min players with cloning arenas
- 1.16+: No longer store player attributes that aren't declared as permanent to avoid unexpected bugs
- Fixed "NoSuchFieldError CraftMagicNumbers" error when running 1.21.1 paper
- Fixed explosives exploding and destroying map if ignited right before match ends (Thanks to MetallicGoat )
- Fixed fetching broken leaderboard data if targeting an offset of 1 or greater with MySQL as storage type
- Fixed stat set values potentially never getting updated with MySQL and MongoDB and thereby e.g. rankings for WL and WL not working with the leaderboards addon
- Fixed explosives not being able to destroy beds with certain configurations. Configs that could cause it:
- explosion-canbreakblocks set to false
- explosion-canbreakblocks-breakby-player set to true
- bed being a part of explosion-blocks-blacklist
- Fixed support for latest iteration of ASWM
NEW: Set-up arenas using your hotbar and avoid clicking in the GUI. Drastically improves your efficiency!Added feature:
![]()
![]()
Config changes:
- Setup Tool
- Obtain by either clicking on its button within /bw arena setupgui
- Or use command: /bw arena setuptool
Improvements:
- Added:
- "gui-titles-by-page" to shop layout properties
- Last remaining .cm2 config files that were for holo lines got merged into a single "hologram-lines.yml"
- With that comes the migration to the new file format, which happens automatically
- Thank you, MetallicGoat
API changes:
- Spawner visibility mode no longer flickers all holograms for any change
- Play time now gets updated accordingly whenever you do /bw stats
- Added ability to buy a item to a given hotbar slot by clicking on a keyboard number while hovering over the item
- Shops opened with the mini shop now close once its time elapses
- NPCs no longer have a mini name-tag
- Parsing arena picker now clearly states if a selector is missing (Thanks to MetallicGoat )
- Added off-hand support for teleporter special item
- Teleporter special item counter no longer relies on the performance of the server (previously, more lag would mean that it takes longer)
Fixed bugs:
- Fixed never calling AsyncArenaCloneQueueEvent
- Added:
- (Optionally replacable) ClickListener#onNumClick(player, number)
- PlayerBuyInShopEvent#getTargetInvSlot()
- ShopProduct#give(player, team, arena, multiplier, targetInvSlot)
- ClickListener.Proxy class
- PlayerUseSpecialItemEvent#isOffHand()
- TeamEnchantment.Target.MACE (Thanks to MetallicGoat )
- Revamped custom spawner handlers (Breaking changes!)
- Now called CustomDropTypeHandler
- Handlers may now also implement shop capabilities (More flexible and easier to implement)
- Deprecated DropType#getHoldingAmount(ItemStack[]) as this method doesn't support custom handlers
- Added PlayerShopProductGivingDetermineEvent#getCallingDropTypeHandler()
- Added PlayerShopProductGivingDetermineEvent#setCallingDropTypeHandler(handler)
- PlayerModifyBlockPermissionEvent may now also get called for other occasions
- Occasions include e.g. usage of special items (bridge, rescue platform)
- #getBukkitEvent() is now Nullable
- Fixed error when a party member rejoined
- Fixed counter for "spent 200 items in shop" resets when rejoining
- Fixed broken lore in HyPixelV2 shop if quickbuy was disabled
- Fixed various bugs related to async teleportation on PaperMC
- Fixed a rare bug that leads to not being able to join arenas when regenerating worlds on 1.13+ due to chunks loading indefinitely
- Fixed not being able to teleport into a voting arena due to it apparently missing a game world
- Fixed rescue platform being able to place blocks where it isn't supposed to
- Fixed duplication bugs with teleporter special item
- Fixed teleporter special item counter continuing running even after death
Configuration changes:
Performance improvements:
- Moved "dealer-title-gui" and "upgradedealer-title-gui" to the layout properties file. You might have to reconfigure them
- Added global properties in shop-layouts-properties.yml
- gui-title
- gui-title-as-page (regular shop only)
Improvements:
- World storage of cloned arenas is now memory-only
- Greatly improved performance of MongoDB support
API changes:
- Don't show PaF Extended Bungee "received no info" warning if it timed out because of the player leaving
- Colors in HiveMC shop layout are not random anymore
Fixed bugs:
- Added
- ShopLayoutHandler.OpenEvent#getSituationalGUITitle()
- ShopLayoutHandler.OpenEvent#isGUITitleAsShopPage()
- AsyncArenaCloneQueueEvent
- QueuedCloningArena#getCallbacks()
- QueuedCloningArena#addCallback(callback)
- QuitPlayerMemory#setSoloRejoinTask(scheduler)
- QuitPlayerMemory#getShopResourcesSpentAmount()
- QuitPlayerMemory#setShopResourcesSpentAmount(amount)
- NMSHelper#getEffectInfiniteDuration()
- ArenaLobbyCountdownStartEvent
- ArenaLobbyCountdownCancelEvent
- Deprecated
- ShopLayoutHandler.OpenEvent#getDefaultGUITitle()
- QueuedCloningArena#getCallback()
- Fixed PlayerDataAPI#purge... methods not returning true with SQL, even if it was successful
- Fixed last killed players not being a part of RoundEndEvent#getQuitLosers()
- Fixed not being able to use condition variables within "set-icon-when" in arenas GUI that were custom created by addons
- Fixed CME related to ProxySync's arena updates and setup gui
- Fixed rare NoSuchFileException
- Fixed spectators being able to trigger traps
- Potentially fix PaperMC's bug of players seeing empty chunks due to async tp
- Fixed displaying time instead of infinity symbol for potion effects on 1.21
- Fixed NPE for MongoDB when using /bw stats with an invalid name
- Fixed not being able to fetch positions greater than 10 from the leaderboard (related to Leaderboards addon)
- Fixed potentially being able to buy twice while paying only once in upgrade shop by clicking very fast
- Fixed potentially re-opening shops even though they were already closed
- Fixed "Arena is not in the lobby phase" error when moving spectators to players during endlobby
Support:
Added sound:
- Updated MongoDB driver from V4 to V5
Added config:
- villagershop-click-page
Performance improvements:
- minishop-existence-time
Improvement:
- Greatly improved efficiency of lobbybreak algorithm
- Lobbybreak task is now spread across multiple ticks to avoid lag spikes
API changes:
- Reverted SWM change where the original .slime was used for saving the blocks instead of its current loaded state
- It is now possibly to specify a custom lore for spawner item drops (it no longer gets removed)
Fixed bugs:
- Spectator#getEnterTime() now returns Instant instead of long (method rarely used, though)
- Added
- Spectator#getReleaseTime()
- PlayerOpenArenaChestEvent#isPrivateChest()
- ArenaUnloadEvent
- Fixed spectating being glitchy if entered due to match loss
- Fixed various "cannot cast Long to Integer" errors
- Fixed persistent storage only getting loaded if SWM was configured
- Fixed "Cannot get ordinal of hex color" error when configured custom team colors while player-color config was enabled
- Fixed NoSuchMethodException for some 1.20.* versions when player died
- Fixed NoSuchMethodException with older ASWM when saving blocks
- Fixed auto cloning being broken
- Fixed auto cloning creating trash file when using SWM
- Fixed missing team chest sounds for 1.8.8
- Fixed "NoSuchFieldException: c" error when spectating on versions 1.9 - 1.11
- Fixed typo in config fireball-max-knokback-y
- Fixed being able to break beds during death spectate using cheats
- Fixed rare error spam when using arenas gui together with ProxySync addon due to concurrency