⭕ Marcely's Bedwars ⭕ Supports 1.8 - 1.20 ⭐⭐⭐⭐⭐ EST. 2015

MC Plugin ⭕ Marcely's Bedwars ⭕ Supports 1.8 - 1.20 ⭐⭐⭐⭐⭐ EST. 2015 5.4.4
✨ NO. 1 BEDWARS PLUGIN ✨350+ CONFIGURATIONS ✨ 0 LAG ✨ MULTI ARENA ✨ NETWORK-READY ✨

Added feature:
  • Now detecting rage quits and rewarding the damager / bed destroy accordingly (Thanks to @MetallicGoat )
Config changes:
  • Added: (All thanks to @MetallicGoat )
    • reward-void-deaths-to-bed-destroyer
    • rage-quit-auto-detect
    • rage-quit-auto-detect-max-time
  • Removed as it caused unwanted behaviours:
    • fireball-jumping-enabled
Added API:
  • HookAPI#getCloudSystemHooks()
  • HookAPI#registerCloudSystemHook(CloudSystemHook)
Fixed bugs:
  • Fixed disabled prize API being reversed (Thanks to @MetallicGoat )
  • Fixed it not being possible to change direction of fireball by e.g. punching it
  • Fixed server crashing when two update-checks occur simultaneously while on an extremely slow network
  • [API] Fixed "Recursive update" when setting the stats while listening to PlayerStatChangeEvent
  • [API] Fixed calling onReady before all hooks were loaded
Added feature:
  • Developers may now disable the earning of prizes for matches
Added configs:
  • border-efficent-alternative: An alternative, less-pretty border renderer for less network usage
Performance improvements:
  • Greatly reduced odds of micro-lags for 1.8 - 1.13 by making use of async chunk processing (paper only)
Improvements:
  • It is now possible to use \n within message strings intended for HyPixelV2 shop layout
  • Permission "mbedwars.admin" now also permit for "mbedwars.arenatp" and "mbedwars.arenabuild"
  • Console is now able to make players open the shops using "/bw tools openshop" & "openupgradeshop" commands
Added API:
  • Arena#isPrizeForMatchEnabled()
  • Arena#addPrizeForMatchDisabledTicket(ticketId)
  • Arena#removePrizeForMatchDisabledTicket(ticketId)
  • Arena#getPrizeForMatchDisabledTickets()
Fixed bugs:
  • Fixed being able to see the stats holos of other players
  • Fixed VarParticle not working async
  • Fixed region regenerator potentially getting stuck on 1.13 or older
  • Fixed not being able to spawn anything related to blocks (e.g. joinarenasign)
  • Fixed it not being possible to buy upgrades with new template
  • Fixed breaking the EntityItem#itemStack mirror within the PlayerPickupItemEvent bus on 1.15 and older
  • Fixed arena pool in configuration page for voting not being updated correctly
  • Fixed explosives not causing damage to players from same team
  • Fixed getting kicked out of arena when falling into void during endlobby
This is only one update of many more! Visit our Discord to get notified about the many more super interesting changes regarding our addons.

Fixed bugs:
  • Fixed potential "Can't find a codec for CodecCacheKey" when saving stats in bulk with MongoDB
  • Fixed Arenas GUIs not loading
  • Fixed errors when using a regular, non-spawner price within the shop
  • Fixed it not being possible to earn the "earn all achievements" achievement if some were disabled
  • Fixed it not being possible to use custom picker variables within "player-picker-placeholder"
This is only the first update of many more! Visit our Discord to get notified about the many more super interesting changes regarding our addons.

Added support for:
  • Hao's Nick API (This includes HaoNick etc.) (Thanks to @MetallicGoat )
  • Plan
Added feature:
  • Added feature to avoid players exploiting stats
    • Comes with various new configs
Config changes:
  • Added
    • lobby-exbar-animation
    • spectator-permit-other-player-view
    • "commands-as-console" to lobby-hotbar.yml and spectator-hotbar.yml
    • fireball-max-knockback-y
    • fireball-max-knockback-xz
    • explosive-max-knockback-y
    • explosive-max-knockback-xz
    • fireball-fly-speed-constant
    • itemspawner-auto-center (Thanks to @MetallicGoat )
    • stats-antiabuse-enabled
    • stats-antiabuse-count-round-min-duration
    • stats-antiabuse-count-wins-count
  • Added special condition for drop type special name "%VANILLA%", to not apply a custom name
  • It is now possibly to apply a "DisplayName" (using NBT) for drop type items
  • Added {missing-name} and {missing-amount} placeholders to "TooFew_Materials" and "UpgradeShop_TooFew_Materials" messages
  • Removed config arenavoting-enabled
  • regeneration-region-efficient is now enabled by default and out of beta
  • Sound changes
    • Removed sounds from long-removed features
    • Added sounds to the setup gui
    • ArenasGUI optional click sound (Thanks to @MetallicGoat )
Performance improvements:
  • Reduced amount of short-term threads created
  • Rewrote commonly used algorithms to be more efficient
  • Fixed syncer overloading (reduces odds of micro-lags)
  • Now using javaluator instead of Nashorn for parsing expressions to reduce memory footprint
Improvements:
  • Redyed blue, light blue, and cyan team ChatColors more appropriately
  • Updated "hypixel" template
  • Auto turn namespaces (for enchantments) to lowercase to avoid errors
  • Added hint with command when warning appears that you must disable/enable the arena first
  • Disabling an arena with a running match now "gracefully" stops the match (it regenerates it)
  • Removed "old-fishing-knockback" warning for OldCombatMechanics compatibility when using 2.0 or newer
  • Removed concurrency world regeneration to avoid server freezes (now only for regions)
  • Now hiding item attributes for arena icons (eveywhere where it is being displayed) and items within setup GUI
  • The arena voting system has been completely rewritten
    • Removes arena issues: MUST_JOIN_VOTING and VOTING_MUST_JOIN_NORMAL
    • Added arena issue: VOTING_PARTICIPATING
    • Various API & config changes
  • Added new rejoin warning in case you haven't joined any match yet. Previously it'd instead show that the previous match isn't active anymore
  • Immediately end rounds if there is only one team left online (even if solo-rejoin is enabled) (Thanks to @MetallicGoat )
  • Improvements to fireball & TNT jumping
    • Various new configs
    • Velocity calculations more accurately use the locations of explosive & player
    • Modified default configs to improve the feeling
  • Optimized creation time of region cloned arenas
API changes:
  • Including API sources to allow javadoc integration withing IDE's
  • Added events
    • PlayerUseSpecialItemFireballEvent
    • PlayerShopProductGivingDetermineEvent
    • PlayerArenaVoteEvent
    • ArenaVotingPoolUpdateEvent
  • Added misc
    • ShopPrice#getMissingAmount(player, inv)
    • ShopPrice#getMissingAmount(player)
    • BukkitEntitySkin class for hologram API
    • BukkitEntitySkin class for hologram API
    • GameAPI#useSpecialItem(item, player, arena, holdingItem)
    • Helper#playSound(location, sound, volume, pitch)
    • Helper#playSound(player, location, sound, volume, pitch)
    • Helper#playCustomSound(location, sound, volume, pitch)
    • Helper#playCustomSound(player, location, sound, volume, pitch)
    • KickReason#ARENA_STOP
    • WorldStorage#getNearbyHolograms(location, radius)
    • PlayerDataAPI#getStatSet(id)
    • RejoinedPlayerIssue#NOT_PARTICIPATING
    • HolographicHologramSkin$PlayerSpecificLinesSupplier.of(Message)
    • HolographicHologramSkin$PlayerSpecificLinesSupplier.of(List<Message>)
    • Helper#evaluateString(string)
    • PlayerBuyInShopEvent#getClonedItem()
    • PlayerDataAPI#getAchievementTypeById(String)
    • PlayerDataAPI#getRegisteredAchievementTypes()
    • PlayerDataAPI#getRegisteredAchievementTypes()
    • LobbyItem#isCommandsAsConsole()
    • LobbyItem#setCommandsAsConsole(boolean)
    • SpectatorItem#isCommandsAsConsole()
    • SpectatorItem#setCommandsAsConsole(boolean)
    • VarSound class
    • ShopOpenCause#isInitial()
    • UpgradeShopOpenCause#isInitial()
    • Arena#getVoting()
    • Arena#getParticipatingVotingPool()
  • Breaking changes
    • Removed NMSHelper#showTitle(player, text, subText, stayTime)
    • Renamed parameters within NMSHelper#showTitle method
    • Swapped order of fadeIn and stayTime parameters within NMSHelper#showTitle (to be more consistent with Bukkit API)
    • HolographicHologramSkin$PlayerSpecificLinesSupplier#getLines(...) now expects a List instead of a Collection
    • DropType#getSpawnSound() now returns the new VarSound class instead of Bukkit's sound
    • DropType#setSpawnSound(sound) now expects the new VarSound class instead of Bukkit's sound
    • DamageableSkin #getDamageSound() and #getDeathSound() now return the new VarSound class instead of Bukkit's sound
  • Fixed it not being possible to modify the page within ShopOpenEvent
Fixed bugs:
  • Fixed some upgrades or traps not working (due to failing to find nearby entities async) (Thanks to @MetallicGoat )
  • Fixed potential ConcurrentModificationException with BungeecordManager
  • Fixed typo with CrashMessage_LowerCornerOutOfBounds
  • Fixed potential error with missing hub pos and auto join
  • Fixed MongoDB not working
  • Fixed being able to interact with signs ingame even if it was disabled in config.yml (Thanks to @MetallicGoat )
  • Fixed not starting on 1.17.1
  • Fixed issues caused by Paper removing constructor on EntityDamageEvent (Thanks to @MetallicGoat )
  • Fixed not receiving feedback when regenerating an arena while it had a match
  • Fixed not being able to modify blocks at the edge of a region arena
  • Fixed Guard Dogs sometimes target spectators (Thanks to @MetallicGoat )
  • Fixed item attributes not being hidden as intended on 1.14+
  • Fixed Setup GUI not updating (issue not disappearing) when setting lobby or updating game area
  • Fixed "next page" item staying in configure page for voting arena, even though it's already the last page
  • Fixed player colors staying when leaving the arena
  • Fixed "Object not supported" error with newer ASWM versions
  • Fixed UnknownWorldException with SWM
  • Fixed problems related to lobby world existence verification
  • Fixed "/bw arena spawner give" not returning the exact drops
  • Fixed conflict with CarbonSpigot
  • Fixed a few sounds not working as intended
  • Fixed potential errors with wolves teleporting whose owner isn't a player
  • Fixed auto cloning creating a new world for every region arena
  • Fixed auto cloning sometimes not purging old world folders
  • Fixed auto clone issue: Some region arenas are not getting generated properly if regeneration-region-efficient was enabled
Fixed bugs:
  • Fixed errors with sounds on 1.20.3+ paper
  • Fixed being able to spam lobby forcestart
  • Fixed not cleaning up old cloned worlds when using region arenas
  • Fixed player tab colors not getting applied properly
  • Fixed "ArrayIndexOutOfBoundsException" related to fetching leaderboard info with SQL (only occurred with certain SQL versions)
  • Fixed potential "Unexpected end of ZLIB input stream" with newer ASWM versions
We are delighted to announce this colossal update that we used to squeeze out as many possibilities as possible! And you heard right, we improved the performance by over 170% - even while MBedwars already counts as probably the most efficient Bedwars plugin out there. Impressive, isn't it?

Added support:
Added sound:
  • FIREBALL_OUT_OF_BOUNDS
Config changes:
  • Improvements to default "Hypixel" template (Thanks to @MetallicGoat)
  • Added:
    • tntsheep-damage-multiplier: Ability to modify the damage dealt by the TNT sheep (Thanks to @MetallicGoat)
    • respect-event-cancellations: Useful to improve compatibility with anti-cheats
Performance improvements:
  • Improved performance due to past memory leaks in i.a. arenas
  • Slightly improved performance of player move handling logic
  • Added async UI rendering for:
    • Shop
    • Upgrade Shop
    • Achievements
    • "View players" spectator item
    • "Select team" lobby item
  • Rewrote skin fetching and caching logic to be more efficient
  • Improved performance of legacy block (1.8-1.12) to modern block (1.13+) during regeneration of arenas that were lastly updated on a legacy spigot version
  • Made scoreboard renderer more efficient by only updating lines with placeholders
  • Now playing various particles & sounds async
  • Misc performance improvements by caching frequently used methods
  • More efficient system to remove block drops for 1.12+
  • Improved efficiency of region regenerator by off-loading NBT parsing to reading thread
  • Improved performance by not manually resending chunks during regeneration and by not constantly checking for item spawns (alternative, more efficient solutions are being used that have been added in the past)
Improvements:
  • Reduced usage of NMS to make supporting new MC versions a lot easier (Thanks to @MetallicGoat)
  • "/MBedwars/data/skincache" folder is no longer being used. Skins from NPCs are now stored in the database as well
  • Reduced amount of potential flicker when using the shop (i.a. when buying items) caused by lags on client side
  • Added dynamic world data loading in case a custom fork (looking at you, ASWM) has a bug that causes existing worlds to not get properly reported
  • Made arena border more pretty & its rendering more efficient
  • Hide scoreboard score with 1.20.3+
  • Prefer same players-per-team for arenas that picked with the "next round" spectator item
  • Fireball now gets spawned with slightly moved forward, so it doesn't *seem* like as if there was a delay in using it
  • Improved team balance: Aims for a fairer players per team balance
  • Added new system that avoids file corruptions caused by unexpected server stops (e.g. due to a crash) for world info, arenas and locally stored player data
  • Added more warnings in config.yml if something is done wrong
  • BlockBreakEvent not getting cancelled anymore with a successful bed breakage to improve support with anti-cheats
  • In case of adding a corrupted .jar into the add-on file: Replaced NPE (only present in newer paper versions) with proper warning (Thanks to @MetallicGoat)
  • Arena issue if arena's type is WORLD and its world is a main world (Thanks to @MetallicGoat)
  • Moved to java.time API, made sure that times are stored correctly and parsed correctly, even if time zones change at any point
API changes:
  • Added:
    • GUI#hasOpen(player)
    • ScoreboardUpdateCause.PAPI_PLACEHOLDERS
    • ChestGUI#mergeFrom(gui, forceRecreate)
    • VarParticle#getOffsetX(), #getOffsetY(), #getOffsetZ()
    • VarParticle#setOffset(x, y, z)
    • VarParticle#getCount()
    • VarParticle#setCount(count)
    • VarParticle#clone()
    • VarParticle.PARTICLE_EXPLOSION_HUGE
    • GameAPI#drawBorder(min, max, player)
    • RemoteServer#getArenaByExactRealName(name)
    • XYZ#equalsBlockCoords(XYZ)
    • XYZ#equalsBlockCoords(Location)
    • XYZ#equalsBlockCoords(Block)
    • PlayerDamageInfo class
    • GameAPI#getLastPlayerCausedDamage(damaged)
    • PlayerKillPlayerEvent#getDamageInfo()
    • Message#getInputString()
    • Message#getDefaultString()
    • RemotePlayerPreJoinLocalArenaEvent
    • Arena#getBedDestructionTime(Team)
    • ArenaIssuesCheckEvent.IssueType.GAME_WORLD_IS_MAIN_WORLD
    • Arena#getRoundStopTime()
    • AddPlayerIssue#getDefaults()
    • Arena#placeBedBlocks(Team)
    • Arena#destroyBedBlocks(Team)
    • ArenaIssueCheckEvent#removeIssue(issue)
    • Arena#broadcastCustomPropertyChange()
    • ArenaPropertyChangeEvent.Property#API_CUSTOM
    • RemoteArenaPropertiesChangeEvent.Property#API_CUSTOM
    • Arena#destroyBedNaturally(info)
    • New Async API: (Thanks to @MetallicGoat)
      • Helper#getBlockAsync(location, callback)
      • Helper#getBlockAsync(world, xyz, callback)
      • Helper#getBlockAsync(world, x, y, z, callback)
      • Helper#getChunkAsync(world, x, y, callback)
      • Helper#teleportAsync(entity, location, callback)
    • New ConfigurationAPI (Thanks to @MetallicGoat)
  • Deprecated:
    • GUI#onClose(player)
  • Fixed broken methods:
    • ShopPage#isClone()
    • BuyGroup#isClone()
    • ShopItem#isClone()
    • Fixed ArenaCloningManager#getClonePurposeWorlds() not returning all worlds
    • Fixed PlayerUseSpecialItemEvent#isNaturalInteractionCancelled() getting ignored if it has been cancelled using #setCancelled()
    • Fixed PlayerPickupDropEvent#isFromSpawner() returned false if event was cancelled a previous time(Thanks to @MetallicGoat)
  • Miscellaneous:
    • Arena#setStatus(status) now throws an IllegalStateException when trying to set it to RUNNING, but there aren't any players or the current state isn't LOBBY
    • Message class now inherits from Cloneable
    • Turned AddPlayerIssue from Enum to a Class that now allows one to pass a custom message using its constructor
    • Updated wrong javadocs for various bed related methods in Arena class
  • Broke API:
    • AddPlayerIssue is now a class, not an enum anymore! Enum methods didn't get reimplemented. It might also require recompilation due to possible JRE errors
    • Updated QuitPlayerMemory: Now uses java.time API instead of long
    • Arena#getRoundStartTime() now returns Instand instead of a long. It may also be null now and also now works if the state isn't RUNNING
    • Arena#getRunningTime() now returns Duration instead of a long. It may also be null now and also now works if the state isn't RUNNING
    • Removed AddPlayerIssue#PLUGIN and AddPlayerIssue#ARENA_ISSUE_MISSING_WORLD
    • Removed deprecated methods from PlayerDataAPI (only ones were to obtain cached instances that were replaced by new ones)
    • Removed deprecated legacy hook API from BedwarsAPI class, as it has been replaced by a new one
    • Removed deprecated GameAPI#getArenasByPickerCondition(string), as it has been replaced by a new one
    • Removed deprecated methods from Arena class: #getQueuedUpgradeTraps(team), #getQueuedUpgradeTraps(team, level, force), #getRemainingTeams(), #save()
    • Removed deprecated methods from Team class: #getChatColor(), #setChatColor(color), as it has been replaced by new API for hex support
    • Removed deprecated methods from ArenaBedBreakEvent: #isBroadcasted(), setBroadcasted(broadcast), as they have been replaced by new methods
    • Removed deprecated method ArenaIssueCheckEvent.Issue#getMessage(sender)
    • Removed field ScoreboardUpdateCause#FREQUENT_TICK, as it's not used anymore
    • Removed deprecated method PlayerOpenShopEvent#getPage(), as it has been replaced by a new one
    • Removed legacy SpecialItemAdapter and SpecialItemListener classes, and every method related to it. Listen to PlayerUseSpecialItemEvent instead
    • PlayerAchievements: Replaced legacy time API (Date) with java.time (OffsetDateTime) for methods #getEarnDate(achievement) and #setEarnDate(achievement, date)
    • Various Arena#destroyBedNaturally( ... ) methods have been removed and replaced with a new one containing a data object, to avoid clutter
Fixed bugs:
  • Fixed potential memory leak with guard dogs and tnt sheeps
  • Fixed potential memory leak when players teleported
  • Fixed various problems with BergwerkLabs shop layout
  • Fixed music got broken when opening the jar as a window
  • Fixed potential memory leak of skin fetcher as there was no timeout
  • Fixed "regeneration-region-efficient-beta": Not generating last chunk
  • Fixed fireballs being able to fly into infinity
    • Caused chunks to get loaded&generated endlessly
    • Caused memory leaks due to it never getting unloaded
    • Now ignites (with sound & particle) instantly if it leaves the playable area
  • Fixed "forcestart-ignoreminplayers" config not working as intended
  • Fixed chat spam when there are enough players in a lobby to auto-shorten the time
  • Fixed broken achievements
    • WRITE_GG_IN_ENDLOBBY
    • KILL_WITH_BOW
  • Fixed Quick Buy display issues with ShopItems with restrictions (Thanks to @MetallicGoat)
  • Fixed "placeableblock-whitelist" config not functioning
  • Fixed respawning players could see all spectator messages even if "customchatmessage-spectator-public" is enabled (Thanks to @MetallicGoat)
  • Fixed icon of empty arenas being air in arenas gui when using "set-amount: {players}"
  • Fixed bug with "/bw arena saveblocks" that caused entities of unloaded chunks to not get saved
  • Fixed ASWM save error (with 2.8.0 version) (Thanks to @MetallicGoat)
  • Fixed bug that could have caused constant upgrade shop reopening
  • Fixed "fireball-fly-speed" having no effect for 1.17+
  • Fixed occasionally not properly cleaning up auto clone worlds
Added feature:
  • Leaves no longer decay within arenas (Thanks to @MetallicGoat )
New configs:
  • prevent-leaves-decay
Performance improvements:
  • Added support for async chunk generation of void worlds on 1.14+ (= Better performance)
  • Reduced server load during region regenerations on 1.13+
  • Keeping certain chunks within a match loaded to reduce load
Improvements:
  • Improved SkinFetcher logic
  • Death spectate respawn duration is now not dependant on the tick rate anymore. Previously, it would take players longer to respawn if the server was lagging
  • Now also resetting player's velocity whenever the player's complete state is being reset (should fix players getting stuck in blocks during respawn)
  • Kills now get properly counted when a companion (iron golem, guard dog ...) kills a player. Previously the kill stat would get increased for the last player who actually damaged the victim, and not for the owner of the companion
  • Added server load balancing to "best" arena picker selector: Now prefers the server with the least amount of players
  • The force start item no longer breaks if "forcestart-time" is set to 0 or less
  • Coords of auto cloned region arenas now stay within the boundaries of the bedrock edition
  • Auto cloned region arenas now make use of the z-axis (more arenas fit in a single world) and also of multiple worlds
  • Added more detailed info for when the regeneration has failed due it not being able to teleport the players to the main world
  • When trying to teleport the players out of the world it is trying to regenerate, it will now first try to use the defined hub world and then the main world
  • New arena issue if hub position is inside arena (prevents players from teleporting at the end)
  • Improved logic of bungee messaging sending queue, it also now works better with multi-proxy
API changes:
  • Added:
    • RemotePlayer#getLoginTime()
    • AddPlayerIssue.LEFT_SERVER
    • KickReason.SPECTATE
    • KickReason#isApplyingStoredInventory()
    • KickReason#isTeleportingToHub()
    • RemotePlayer#sendMessage(BaseComponent...)
    • AttributeChangeCause class
    • PlayerPropertyChangeEvent#isFromRemoteServer()
    • PlayerStatChangeEvent#isFromRemoteServer()
    • RemoteAPI#flushQueuedPlayerData()
    • GameAPI#forceLobbyHotbarRefresh(Player)
    • GameAPI#getCompanionOwner(entity)
    • GameAPI#setCompanionOwner(entity, owner)
    • RejoinPlayerIssue#getMessage()
    • ArenaBedBreakEvent#isSendingChatMessage()
    • ArenaBedBreakEvent#setSendingChatMessage(boolean)
    • ArenaBedBreakEvent#isSendingTitle()
    • ArenaBedBreakEvent#setSendingTitle(boolean)
    • ArenaBedBreakEvent#getChatMessageFunction()
    • ArenaBedBreakEvent#setChatMessageFunction(Function<Player, Message>)
    • ArenaBedBreakEvent#setChatMessage(Message)
    • Message.build(lines...)
    • Message#getPlaceholder(key)
    • PlayerOpenUIEvent
    • ShopItem#buy(player, isShiftClick)
    • ShopOpenCause#API_ITEM_BUY
    • XYZ#isZero()
    • IssueType#getMessage()
    • IssueType#construct(sender)
    • IssueType#construct(sender, detail)
  • Deprecated:
    • ArenaBedBreakEvent#isBroadcasted()
    • ArenaBedBreakEvent#setBroadcasted(boolean)
  • For all player attribute containers: Replaced 'set(key, value, dispatchAPIEvent, cacheOnly)' with 'set(key, value, AttributeChangeCause)'
  • Fixed PlayerProperties#remove reverting itself after a re-load with SQL as the storage type
  • Fixed endless loop with ShopPrice#take(player, multiplier)
  • Fixed typo "REGION_lESS_THAN_WORLD_MIN_HEIGHT" (Letter L in LESS was lower-cased)
Fixed bugs:
  • Fixed rare "Player is not online" error when member followed a party leader
  • Fixed fireball not breaking any blocks on older versions
  • Fixed players and spectators being counted as a member of an arena, even though he might have been kicked during the join process (i.a. if a plugin kicked him during PlayerJoinArenaEvent)
  • Fixed holos (dealers etc) having an invalid rotation on 1.20+
  • Fixed rare case where the server would crash when a player quits the server
  • Fixed player not being sent to hub server when he rejoined into an empty server on a proxy network
  • Fixed not properly parsing legacy spawn egg materials (monster_egg:<entity>) on 1.13+
  • Fixed spell_mob and spell_mob_ambient would always appear as black on 1.13+
  • Fixed guard dog attacking non-player enemies (i.a. dream defender)
  • Fixed potential error when using "/bw arena rename"
  • Fixed NPE when being a part of a party without a leader
  • Fixed errors with holograms on 1.20.2
  • Fixed NPCs not spawning on 1.20.2
  • Fixed error when death-spectate-at-death-location is set to false and there is no spectator point
  • Fixed beds lost stat not being counted if bed has been broken by a non-player
Added support for:
  • MC 1.20.2
Improvements:
  • Autojoin: Players now get spawned at the proper location when they switch servers without any delay
  • Improved parsing of legacy enchantments throughout all configs: It now supports legacy numeric ids on 1.13+ and added missing ones
  • Improved compatibility between 1.13+ and below 1.12: Enchantments NBT tags within items now get properly parsed, even if they differ due to Mojang renaming them between updates
Fixed bugs:
  • Fixed losses potentially being counted twice
  • Fixed "notbuildableradius-dealers" having no effect for WORLD arenas
  • Fixed that the lobby world isn't being properly being changed for cloned arenas of the type WORLD
  • Fix incorrect configuration of gen-tiers in Hypixel layout (using %% instead of {})
Improvements:
  • Replaced "SWM plugin is missing" warning with a new "SWM enabled config is disabled", if the config is actually just disabled
  • Arena picker conditions now get parsed when they are actually needed for the first time, so that addons registering custom ones have enough time to register theirs
Fixed bugs:
  • Fixed errors with FetchLeaderboard API
  • Fixed problems with leaderboard on local storage: Missing players, players being ranked twice
  • Fixed lobby leave item not working if "lobby-leaveitem-time" was active
  • Fixed error when using %mbedwars_playerarena-countdown% while countdown wasn't running
  • Fixed that various playerarena PAPI placeholders stopped to work
  • Fixed IO threads potentially freezing when loading a SWM world
5.3.png

Huge thanks to @MetallicGoat ! He has been a non-trivial contributor to this update, and is responsible for i.a. the new scoreboard system, the many new features and tons of QoL improvements (including bug fixes).
This update is massive. A lot of time has been invested into it, we'd greatly appreciate a donation
:)

New features:
  • New scoreboard system:
    • Fixed issues with flicker when "force updating" the scoreboard
    • Added per-condition scoreboards
    • Added scoreboards for end-lobby and spectator (new scoreboard-layouts folder)
    • Full hex support
    • Increased character limit (your Spigot/Minecraft version must support them)
  • Added grouping for arenas collections in arenas GUI:
    • New config: group-by-displayname
    • New placeholder: {grouped-arenas}
  • Display spawners feature
    • Spawners within the same position now get aggregated
    • This means that it displays the amount of spawners that are on that position and also stacks different types on a different y-level
Added support:
  • AdvancedSlimeWorldManager 1.19+ (aka AdvancedSlimePaper)
Added configs:
  • explosion-entities-blacklist (blacklist entities that can be damaged by explosive)
  • group-by-displayname (arenas GUI)
  • Added ability to configure titles/lore in achievements menu
    • gui-achievements-text-unearned
    • gui-achievements-text-earned
  • New configs for guard dogs
    • guarddog-damage-multiplier
    • guarddog-alive-duration
    • guarddog-display-name
New PlaceholderAPI placeholders:
  • %mbedwars_playerarena-countdown%
    • Displays the remaining time (hh:ss format) until either the match ends (if the arena is running), or the remaing time (hh:ss format) until the match begins (during lobby state)
  • %mbedwars_playerarena-running-time%
    • Displays the time (hh:ss format) the match is already running
Performance improvements:
  • Added player indices for local storage
    • Greatly reduces memory usage
    • Automatically handles corruption
    • Allows you to fetch stats from players who never joined the server. E.g. when you transfer the stats to another server, where no players have been logged yet (API)
    • Opens up new potential, e.g. by having a new API that allows you to fetch the leaderboard of any stat set
  • Greatly reduced memory usage of the "regeneration-region-efficient-beta" config
  • Slightly improved performance by placing bed blocks async (if supported; 1.15+ paper)
  • Improved performance by using more optimized data types throughout the code
Improvements:
  • Added Magic Milk to HyPixel template
  • "/bw spawn joinarenasign" now supports remote arenas (from ProxySync addon)
  • Added new arena condition variables: server_playing_arenas_count and cloned_arena_name
  • The configuration page of voting arenas now displays the real name of the arenas within the pool instead of their display name
  • It is now possible to interact with entities in end lobby if the config "endlobby-tptolobby" is disabled (Fixes conflict with Yeehaw victory dance from the Cosmetics&Coins addon)
  • Reduced size of the jar by not included unused classes from third-party libraries
  • HyPixelV2 shop layout: Pages row is no longer being centered
  • HyPixelV2 shop layout: Green hint in page/item separator now properly adapts itself to page force-slot
  • Achievements GUI now also displays the earn date of each achievement
  • GeyserMC hotfix (caused by it): Permanent zoom after respawning as a spectator
  • It is now possible to join an arena while spectating. Previously it'd display a "You're already inside an arena!" message
  • Spectator_Join and Spectator_Leave messages now don't get shown anymore if you are death spectating
  • Added {plugin:version} scoreboard placeholder
API:
  • Additions:
    • PlayerInteractSpecialBlockEvent
    • PlayerInteractHologramEntityEvent
    • VarParticle.NONE
    • PersistentStorage class
    • PersistentStorage.Holder class
    • SpecialBlock now implements PersistentStorage.Holder and Metadatable
    • PacketHologram now implements PersistentStorage.Holder and Metadatable
    • KickReason#SPECTATE_ITEM_NEXT_ROUND
    • KickSpectatorReason#JOIN_ARENA
    • KickSpectatorReason#isTeleportingToHub()
    • KickSpectatorReason#isApplyingStoredInventory()
    • KickSpectatorReason#isDisplayingLeaveMessage()
    • SpectateReason#isDisplayingJoinMessage()
    • SpectateReason#isBackingUpInventory()
    • Added Message#send(sender, freeInstance)
    • Fixed typo: VarParticle#isnnternallyParticle should be isInternallyParticle
    • PlayerDataAPI#fetchLeaderboard(statSet, minRank, maxRank, callback)
    • PlayerDataAPI#fetchLeaderboardPosition(playerUUID, statSet, callback)
    • PlayerDataAPI#fetchLeaderboardPosition(player, statSet, callback)
    • Added CommandSenderWrapper#isConsole()
    • Added CommandSenderWrapper#isPlayer()
    • Added CommandSenderWrapper#isLocal()
    • Added CommandSenderWrapper#isRemote()
    • Added RemoteServer#executeBedwarsCommandAsConsole(label, args)
    • Added CommandSenderWrapper#wrapConsole(server)
  • TeamEliminateEvent changes:
    • Improved its JavaDocs
    • Fixed #getRemainingPlayer() returning the player who broke the bed (it should return null)
    • Added a new parameter to obtain the player who initiated it: #getCausingPlayer()
    • Made it more clear what PlayerIngameDeathEvent is doing
  • Spectating instances who get kicked due to the player instance getting kicked now use the matching reason
    • Added KickReason#getMatchingSpectatorKickReason()
Fixed bugs:
  • Fixed potential error when selecting a team in the selector GUI
  • Fixed various errors when converting from v4
  • Fixed error "IllegalArgumentException" when trying to access remote arenas using the console commands (Requires Enhanced ProxySync)
  • Fixed various problems with auto cloning (such as holos [dealers etc] not spawning in world arenas)
  • Fixed water would drop the items that it had broken
  • Fixed duplication glitch in shop layouts that used villager GUIs
  • Fixed missing hex support in various places (config.yml, title of arenas, various messages and name for arenas GUI statue)
  • Fixed "IllegalArgumentException" error when using "/bw tools openshop" while not being in an arena and opening a page that has items that make use of the "restriction" config
  • Fixed glow effects on items not working when joining with 1.11+ (ViaVersion) on a 1.8-1.10 server
  • Fixed fire from explosions caused by fireball special item
  • Fixed potentially inventory being cleared when using the "next round" item as a spectator
  • Sound "spectator-change-arena" (played when you use the next-round item as a spectator) now also gets played when you switch arenas over the network and not just locally
  • Fixed missing team name in the chat of the default HyPixel template
  • Fixed various errors that occurred when removing various configs or passing invalid syntax
  • Fixed player's client language not being considered in some few cases, even if multi-language was enabled
Top Bottom