![]()
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:
Added support:
- 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 configs:
- AdvancedSlimeWorldManager 1.19+ (aka AdvancedSlimePaper)
New PlaceholderAPI placeholders:
- 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
Performance improvements:
- %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
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
API:
- 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
Fixed bugs:
- 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 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
![]()
Added config:
Improvements:
- notbuildableradius-permit-block-liquidflow (Disable water flowing into restricted area, e.g. team spawns) (Thanks to @MetallicGoat)
Fixed bugs:
- Chat shouting: No message will be sent now if the message is empty (Thanks to @MetallicGoat)
- Water no longer flows out of an arena (Thanks to @MetallicGoat)
- "Select team" GUI in lobby closes once you clicked and switched a team
- Rewritten arena regeneration queue
- It now works a lot more stable and efficient
- Added better failure messages for "/bw arena regenerate"
- Rewrote message loading system
- Greatly reduced memory usage of messages within the memory (having all loaded now only uses ~57kb RAM) + it's a lot faster and stable now
- Messages now get automatically translated into the players language when the plugin is being enabled for the first time to make the introduction to the setup easier to understand
- Fixed NoSuchMethod error on 1.20+ (setCollidesWithEntities API got removed by spigot)(Thanks to @MetallicGoat)
- Fixed error when punching shop NPC on 1.20+ (Thanks to @MetallicGoat)
- Fixed error
- Fixed arena regeneration queue getting stuck with many arenas
- Fixed issues with messages load system (there were cases were it wiped all changes)
- Fixed "bed-block" config didn't have any affect on the bed placed in the arena
- Fixed possible error when setting up plugin
- Fixed error (only appeared for 1.15 - 1.18)
- Fixed that the regenerator would go past the corners and thus save, clean and regenerate more blocks than it should
API changes:
- Fixed docs saying that the time unit in Arena#setIngameTimeRemaining(int) and Arena#getIngameTimeRemaining() is ticks instead of seconds [! Functionality is still the same as before !]
- New HookAPI
- Deprecated BedwarsAPI#getHookedPlugins()
- Deprecated BedwarsAPI#getHookablePluginNames()
- Deprecated BedwarsAPI#createPluginHook(Plugin)
- Deprecated BedwarsAPI#removePluginHook(Plugin)
- Added BedwarsAPI#getHookAPI()
- It is now easily possible to hook custom parties&nicknaming systems into MBedwars and thus cause MBedwars to automatically manage them for you.
Additionally, you may also access the included®istered parties&nicknaming hooks and party information about a player.
![]()
![]()
Added support:
Added features:
- MC1.20 (also include 1.20.1) (Thanks to @MetallicGoat)
Improvements:
- Added biome support for region arenas on 1.15+ (biomes get restored after an arena has ended + correct biomes when using cloning feature) (1.15+ only)
- Added ability to modify player stats through commands: (Thanks to @MetallicGoat)
- /bw tools playerdata stats set/add/subtract
- /bw tools playerdata stats reset
- /bw tools playerdata stats resetall
- Improved preciseness of regeneration time in "/bw arena info" (It now tries to use past average instead of guessing it all the time)
- Replaced error with proper warning
- Slightly reduced memory usage by keeping less message strings loaded
- Slightly improved performance for all cloned worlds by disabling auto-save for them
API additions:
Fixed bugs:
- Added ThrowingConsumer and ThrowingSupplier helper classes
- Added new PlayerDataAPI stuff:
- getCachedAchievements()
- getCachedStats()
- getCachedProperties()
- void purgePlayerData(UUID uuid, boolean stats, boolean achievements, boolean properties, boolean cacheOnly, @Nullable Runnable callback)
- void purgeAllPlayerData(boolean stats, boolean achievements, boolean properties, boolean cacheOnly, @Nullable Runnable callback)
- PlayerDataPurgeEvent (Thanks to @MetallicGoat)
- Fixed spectator items not working unless they have both a handler and a command attached (Thanks to @MetallicGoat)
- Fixed Bed Destroy message being sent after victory message with solo rejoin + various other niche solo rejoin issues (Thanks to @MetallicGoat)
- Fixed that changes to a spawners drop duration during a game wouldn't get applied immediately, but rather just after it dropped something
- Fixed error on 1.19.3+
- Fixed that the area-deco element in ArenasGUI expected x1/x1 to be smaller than x2/y2
- Fixed interference with SkinsRestorer (players within a match would see new players joining the server on the TAB)
- Fixed error
- Fixed that players could get stuck in lobby if the lobby position was placed below the min height on 1.17+
- Fixed not copying over various world properties to cloned worlds (only for arenas of the type WORLD). These include: border, game rules, difficulty, weather, time, PVP, spawn flags, spawn location, and mob spawn limits
Added feature:
Third-party support improvements:
- Players who quit during a solo match may have the chance to rejoin for a specific timeframe (configurable using config "solo-rejoin-time") instead of being eliminated immediately (Thanks to @MetallicGoat)
Config changes:
- Updated OldCombatMechanics to 1.12.0+ (Old versions aren't supported anymore. Plugin will warn you if it detects that) (Thanks to @MetallicGoat)
- Added CloudNetV4
- Improved Microsoft SQL support:
- Added driver with latest version
- Added configs: sql-mssql-encrypt and sql-mssql-integrated-security
- Added new configs to web setup as well
Miscellaneous:
- Added:
- auto-cloning-excluded-arenas: to exclude specific arenas from auto clone
- sql-mssql-encrypt
- sql-mssql-integrated-security
- customchatmessage-spectator-message:
- Added PlaceholderAPI support
- Added new placeholders:
- {essentialsgroupmanager}
- {name}
- {message}
- "customchatmessage-message" now also gets applied during lobby phases
- "hex-support" is now set to true by default
API changes:
- Significantly reduced memory usage for arenas caused by their regeneration system
- Added API version to /bw info
Fixed bugs:
- Some changes for the new solo-rejoin feature:
- Deprecated:
- Arena#getRemainingTeams()
- Arena#getRemainingTeams(Player...)
- And due to that added:
- Arena#getAliveTeams()
- Arena#getAliveTeams(Player...)
- Arena#getTeamsWithPlayers()
- Arena#getTeamsWithPlayers(Player...)
- Some hologram API improvements:
- Added ability to modify equipment:
- Added EquippableSkin and HologramEquipment classes
- Added ability to modify health:
- Added DamageableSkin class
- Added ability to modify ArmorStands:
- Added ArmorStandHologramSkin class
- Deprecated HologramSkinType#VILLAGER
- Added Spawner#getHologram()
- Added Arena#getBedHologram(Team)
- Added API to communicate using messages/packets between servers (RemoteAPI):
- RemoteCustomMessageReceiveEvent
- RemoteAPI#broadcastCustomMessage(String, byte[])
- RemoteServer#sendCustomMessage(String, byte[])
- Miscellaneous:
- Added:
- ShopItem#removePrice(ShopPrice)
- ShopItem#removeProduct(ShopPrice)
- ItemShopPrice#setItemStack(ItemStack)
- ItemShopProduct#setItemStack(ItemStack)
- CommandSenderWrapper#wrap(RemotePlayer) now automatically wraps him into a Bukkit format in case he is playing on the local server
- Fixed CommandSenderWrapper#getReference() returning null in case the sender was on a remote server
- QuitPlayerMemory constructor received a new parameter, thus potentially breaking API making use of it
- Fixed 'missing handler warning' sent to players when used a spectator item with a command only (Thanks to @MetallicGoat)
- Fixed config descriptions being formatted weirdly (Thanks to @MetallicGoat)
- Fixed spawner holograms not spinning (Thanks to @MetallicGoat)
- Fixed NPE when opening the HypixelV1 layout (Thanks to @MetallicGoat)
- Fixed arena regeneration queue getting stuck when forcefully canceling them
- Fixed player parameter for /bw join always used the player that typed the command
- Fixed error when typing "/bw tools openupgradeshop" while not inside an arena https://cdn.discordapp.com/attachments/355078539793530900/1105848704050659338/image.png
- Fixed that NPC bodies wouldn't rotate at certain situations when used together with Tweaks' auto-head-rotation
- Fixed that NPC bodies wouldn't rotate at certain situation when used together with Tweaks' auto-head-rotation
Note: Due to how small this plugin is, the plugin's version stays at 5.2.4
Fixed bug:
- Fixed problems with /bw join command
As always, I am thankful for @MetallicGoat 's (and of course, everyone else who have reported the bugs in our Discord) contributions to this update. If you appreciate our efforts, we'd greatly appreciate a donation. Thank you very much!
![]()
Added features:
Config changes:
- Upgrade Shop Restrictions (restriction for each level in upgrade shop config -> allows you to create unique upgrade shops for each i.a. mode) (Thanks to @MetallicGoat)
- Quick buy in HyPixelV2 layout: Duplicate items now get auto-removed (Thanks to @MetallicGoat)
- Cloning feature now includes the ability of specifying the modes for which clones shall be created for
Miscellaneous:
- Added:
- restriction to upgrade-shop.yml (Thanks to @MetallicGoat)
- auto-cloning-modes
- Added PlaceholderAPI support for customchatmessage-message
- Replaced "lobby_countdowntitle-*" configs with a single and more customizable "lobby_countdowntitles" config
- Added "description" to shop items (currently only supports HyPixelV2 layout)
API changes:
- Dependency download in template applying during setup now fallbacks to alternative sources if first ones fail
- Not sending whole teleport packets anymore for holograms if just the head rotation changed (causes MBedwarsTweaks feature "Friendly-Villagers-Enabled" to be more smooth)
- Improved system that applies custom textures to skull blocks
- Hurt effects on holograms (i.a. dealers) is now visible for all nearby players, and not just for the one who is punching him
- Action bar message "Waiting..." in lobby no longer collides with other plugins when it is empty
- Remaining action bars and titles now get removed when a player leaves the arena
- Slightly reduced the time during which the "Good Luck!" title will be shown with the start of a match
- "Respawn in x..." message now gets immediately removed when player respawned (previously it'd stay for a second)
- Item names in HyPixelV2 shop are now dyed red by default
- Now removing item attributes in HyPixelV2 shop layout
- GUI of HyPixelV2 renames to the page you currently have open
Fixed bugs:
- Added:
- Upgrade#getRestriction()
- Upgrade#setRestriction(ArenaConditionGroup restriction)
- Class QueuedCloningArena
- ArenaCloningManager#getQueueEntries()
- ArenaCloningManager#addToQueue(QueuedCloningArena)
- ShopItem#getDescription()
- ShopItem#getDescription(CommandSender)
- ShopItem#getConfigDescription()
- ShopItemsetConfigDescription(String)
- NMSHelper#setSkullTexture(Skull, String) now doesn't automatically update the BlockState anymore
- Fixed PlayerUseLobbyItemEvent not being fired
- Fixed error for some people that were using specific versions of 1.19R1
- Fixed problems with world storage using cryptic names for some SWM users thus clearing the spawned dealers
- Fixed "class java.lang.Boolean cannot be cast to class java.lang.Float" error on 1.19.4 (Thanks to @MetallicGoat)
- Fixed missing head rotation for holograms on 1.19.4
- Fixed allowcommand-stats config not working properly
- Fixed no damage effect when hitting holograms (i.a. dealers) on 1.19.4
As always, I am thankful for @MetallicGoat 's (and of course, everyone else who have reported the bugs in our Discord) contributions to this update. If you appreciate our efforts, we'd greatly appreciate a donation. Thank you very much!
![]()
We have been redesigning the select team GUI. We are open for further suggestions!
Config changes:
Miscellaneous:
- Added color code & language support for gui-selectteam-teammaterial-* configs
- Added gui-selectteam-teammaterial-lore-empty
- Added default values to hubcommands config
API addition:
- Added auto-wrapping for upgrade shop item descriptions
- Removed item attributes from upgrade icons
- Removed extra space from auto-wrapped lines
- Made some improvements to the look-and-feel of some centralized parts in GUIs
- Removed decimal places from PosMin/PosMax for region arenas in /bw arena info
Fixed bugs:
- CenterFormat#CENTRALIZED_EVEN
- Fixed chat-event-listener-priority having no effect
- Fixed not being able to enter arenas if the lobby is inside the game area
- Fixed suggesting wrong layouts for /bw tools openupgradeshop
- Fixed "Cannot measure distance between lobby and porto" error when player travels between worlds during a match
- Fixed that regeneration-region-efficient-beta would cause empty cloned region arenas
- Fixed NPE when using the hex color system for teams
This update fixes some serious bugs:
- Fixed possible NumberFormatException when saving/loading achievements on local storage
- Fixed possible NullPointerException when opening a shop with a HyPixelV2
- Fixed InvalidDescriptionException on start when there were addons
- Fixed that the File IO threads would lock and bring the server into a soft lock state when doing a /bw reload in a running match
This version fixes a start-up problem that appeared within version 1.17 - 1.18.2. There is no need to update if you aren't using either of these versions. Note that the version number hasn't changed internally.
Fixed bug:
- Fixed that the plugin occasionally wouldn't start on 1.17 - 1.18.2
Added support:
New features:
- Added support for 1.19.3 (Thanks to @MetallicGoat)
Config changes:
- Added Kill-Streak and Top-Kill-Streak stats (Thanks to @MetallicGoat)
Miscellaneous:
- Migrated shop from CM2 to YAML (Thanks to @MetallicGoat)
- Migrated the lobby.cm2 file to lobby-hotbar.yml (Thanks to @MetallicGoat)
- Added new config issue warnings to the shop config file for better QoL (Thanks to @MetallicGoat)
- Improved performance by teleporting players async (if supported by your spigot; 1.14+ and paper required)
- Added Stacked buygroups (a replacement to Tweaks' one-slot-tools feature) to the shop.yml config file (Thanks to @MetallicGoat)
API additions:
- Updated GSON to 2.10
- Made spectators automatically leave the "player spectating mode" when they leave the arena border (because the watched player is e.g. falling into the void)
- Chunks now get loaded before they are being teleported (hotfix for a Spigot bug that causes player to be stuck within blocks)
- Now also showing game stats in "/bw tools playerdata info"
Fixed bugs:
- PlayerPickupDropEvent
- PlayerPropertyChangeEvent
- PlayerStats#set(String key, Number value, boolean dispatchAPIEvent, boolean cacheOnly)
- PlayerStats#add(String key, Number addAmount, boolean dispatchAPIEvent, boolean cacheOnly)
- PlayerProperties#set(String key, String value, boolean dispatchAPIEvent, boolean cacheOnly)
- PlayerProperties#replace(String key, String value, boolean dispatchAPIEvent, boolean cacheOnly)
- PlayerProperties#remove(String key, boolean dispatchAPIEvent, boolean cacheOnly)
- PlayerDataAPI#getStatsByName(String name, Consumer callback)
- Arena#Block[] getBedParts(Team team)
- Arena#Team getTeamByBaseLocation(Location)
- Arena#Team getTeamByBaseLocation(XYZ)
- HologramSkin#getEntityType()
- HologramSkin#getEntityId()
- HologramSkin#getNMSEntity()
- ShopProductType#getId()
- ShopProductType.getById(String)
- ShopPriceType#getId()
- ShopPriceType.getById(String)
- YamlConfigurationDescriptor#addEmptyLine(ConfigurationSection)
- BuyGroup#isStacked()
- BuyGroup#setStacked(boolean)
- Fixed error
- Fixed error https://bin.bloom.host/voguquveli.properties
- Fixed error https://bin.bloom.host/lunaqesewa.properties
- Fixed always kicking player on local server when forcefully switching him using remote API
- Many PlayerStatChangeEvent dispatches when the player stats got loaded
- Fixed super duper rare case of unwanted entities or players being hidden for spectators due to colliding entity ids between worlds
- Fixed that spectators would see a "arena is resetting" message when joining an arena
- Fixed that spectators would experience a glitchy effect when the player they are spectating would die
- Fixed that spectators could get stuck and thus get kicked when they are flying too fast against the border
- Fixed rare ConcurrentModificationException with scoreboards
- Fixed plugin trying to enable even if it failed in the loading period
- Fixed rare CommandExeption error on shutdown if prize commands are enabled (Thanks to @MetallicGoat)
- Fix give on round start/respawn blocks are not able to be placed if not present in the shop (Thanks to @MetallicGoat)