MC-Market is now BuiltByBit. Read more
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)
- 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)
It is once again time, and we have prepared something prodigious for all of you! I, however, should not put all the honoring on myself. Rather, I am the more impressed with the result MetallicGoat was able to show off with this update! The rather basic upgrade system has been COMPLETELY rewritten and now features a BUNCH of new exaggerating possibilities, such as the inclusion of completely redesigned layouts and the addition of NormalV2 and HyPixelV2. Furthermore, the configurations file of it is now a lot less complicated as it has been restructured and now also uses YAML as it is format. We also added new upgrades, including a bunch of traps. And as last, we also added a bunch of API classes and methods, allowing the crazy devs to expend the feature-set to even another uncountable level. This is not even it, tons of things have been added, changed, and improved, including the over whole performance and user-friendliness of the plugin. As always, we'd greatly appreciate a donation: https://paypal.me/Marcel1199 The donations are of course being shared![]()
If that's not an option, and you'd still like to show us your appreciation, we'd be super happy to see feedback in form of a review!
NOTE: Due to massive changes to the upgrades system and the addition of new upgrades, we recommend you to delete the upgrades.yml file to generate a new file with the default files. The old file is generally being migrated automatically, so the plugin will continue working without it. The suggested process is only recommended in case you want to make use of the new features.
Added features:
Miscellaneous:
- Added ability to migrate from SQL and local via /bw tools migrate <sql / local>
- New Magic Milk special item
- New and improved Upgrades Shop:
- New default upgrade handlers (including haste)
- Upgrade Shop trap duration config
- Trap Trigger Queue (One trap only triggered at a time, 10 sec before another can be triggered)
- Auto updater that converts the old config file
- Upgrades with a single repeatable level (for e.g. traps)
- Added HypixelV2 Upgrades layout
- Update Hypixel (Original) and normal upgrades layout
- Added a bunch of new upgrades configsAbility to register custom upgrade handlers through the API
- A bunch of performance & stability improvements
- Ability to register custom upgrade handlers through the API
- Added arena APIs for Team Enchantments and Team Effects
- Tons of further new API and events
Added commands:
- Added (optional) plural names for spawners (supported in shop and upgrade shop)
- Added stats:
- Beds Lost
- Top Winstreak
- Final Deaths
- Added placeholders:
- %mbedwars_playerarena-displayname%
- %mbedwars_stats-top_win_streak%
- %mbedwars_stats-final_deaths%
- %mbedwars_stats-beds_lost%
- Added {playerteam} & {playerteamcolor} placeholders to bed break title
- Removed RecalculateStats_Sure warning before typing /bw tools recalcstats
- Slightly improved regeneration performance by supporting async block placement for beds on paper 1.14+
- Slightly improved performance by using paper's chunk loading for 1.14+ for special blocks
- Downloading player skins in case we failed to obtain it from cache (fixes skulls being steve/alex)
- Added support for remote arenas for PAPI placeholders
- Better formatting of numbers in some PAPI placeholders
- Some PAPI placeholders now don't force the existence of a passed player anymore
- Join-Arena-Signs now also work with remote arenas
Config changes:
- /bw tools playerdata info <player>
- /bw tools playerdata invalidatecache
API additions:
- Added:
- "plural-name" to spawners.yml
- notbuildableradius-dealers
- Ability to set big and small titles in more places, such as in lobby, on death, and game over (located within messages files)
- "lobby-leaveitem-time" Allowing you to add a delay for the leave item during the lobby phase
- "regeneration-region-efficient-beta" New beta system for more efficient region regeneration (disabled by default)
- "block-spreading-enabled: false" Now also causes fire to not burn up/break any blocks
- "death-spectate-at-death-location" Allowing you to enforce one to respawn at their spawn point
Fixed bugs:
- Related to upgrades:
- GameAPI#getUpgradeShopLayouts()
- GameAPI#getUpgradeShopLayout(String)
- GameAPI#registerUpgradeShopLayout(UpgradeShopLayout)
- GameAPI#unregisterUpgradeShopLayout(UpgradeShopLayout)
- GameAPI#UpgradeShopLayout getDefaultUpgradeShopLayout()
- GameAPI#openUpgradeShop(Player)
- GameAPI#openUpgradeShop(Player, Arena, Team, UpgradeShopOpenCause)
- GameAPI#getUpgradeTriggerHandlers()
- GameAPI#getUpgradeTriggerHandler(String)
- GameAPI#registerUpgradeTriggerHandler(UpgradeTriggerHandler)
- unregisterUpgradeTriggerHandler(UpgradeTriggerHandler)
- Arena#getQueuedUpgradeTraps(Team)
- Arena#addQueuedUpgradeTrap(Team, UpgradeLevel, boolean)
- Arena#getTeamBaseOnlyEffects(Team)
- Arena#getTeamPermanentEffects(Team)
- Arena#addTeamEffect(Team, boolean, PotionEffectType, int)
- Arena#removeTeamEffect(Team, PotionEffectType)
- Arena#getTeamEnchantments(Team)
- Arena#addTeamEnchantment(Team, TeamEnchantment)
- Arena#removeTeamEnchantment(Team, TeamEnchantment)
- Arena#canPlayerBypassTrap(Player)
- Arena#isPlayerTrapBypassKeepOnDeath(Player)
- Arena#removePlayerTrapBypass(Player)
- Arena#addPlayerTrapBypass(Player, boolean)
- QuitPlayerMemory#getBypassTraps()
- QuitPlayerMemory#setBypassTraps(boolean)
- Added events:
- UpgradeShopGUIPostProcessEvent
- PlayerBuyUpgradeEvent
- PlayerOpenUpgradeShopEvent
- PlayerTriggerUpgradeEvent
- A bunch of classes to the package de.marcely.bedwars.api.game.upgrade
- ShopPage#removeShopItem(ShopItem)
- ShopPage#addShopItem(ShopItem)
- PlayerOpenShopEvent#getItems()
- PlayerOpenShopEvent#removeShopItem(ShopItem)
- PlayerOpenShopEvent#addShopItem(ShopItem)
- ShopPrice#getDisplayName(@Nullable CommandSender, int)
- ShopPrice#getDisplayName(int)
- DropType#getName(CommandSender, int)
- DropType#getPluralName()
- DropType#getPluralName(CommandSender)
- DropType#getConfigPluralName()
- DropType#setConfigPluralName(String)
- SpecialItemType#MAGIC_MILK
- DefaultPlayerStatSet#TOP_WIN_STREAK
- DefaultPlayerStatSet#FINAL_DEATHS
- DefaultPlayerStatSet#BEDS_LOST
- GUI#addCloseListener(Consumer<Player>)
- GUI#removeCloseListener(Consumer<Player>)
- GUI#getCloseListeners()
- PlayerDataAPI#fetchAllStoredUUIDs()
- MigrationProcess.Origin#LOCAL
- MigrationProcess.Origin#SQL
- SpecialBlock#asBukkitAsync(Consumer<Block>)
- Fixed despawned items count toward spawner max
- Fixed lobby world not being moved to new one with cloned regions
- Fixed possible errors with selectors in case the filter filtered all arenas
- Public chat detection now has less problems with color codes
- Fixed lobby auto-shorten countdown not working properly
- Fixed cant add lobbyitems without handlers
- Lobby item should teleport after Bukkit event finishes (semi-bug, caused lobby plugins to be used immediately after being teleported)
- Fixed spectators cannot hear bed breakage
- Spectators could have seen messages from players who aren't playing with "chat-others-unvisible" enabled
- Fixed teleporter special item dupe
- Possibly fixed death message not showing if config 'die-in-void' set is set to true
- Fixed ArenaPlayer PAPI placeholders not being parsed for spectators
- Arena#getItemsGivenOnSpawn throwing NPE if player is not in an arena
- Minishop NPE https://bin.bloom.host/codajehego.md
- Fixed possible lag spikes occurred of chunks being loaded for region arenas that were on 1.13 or older
- Fixed bedwars:next_round spectator item causing players to be sent to the hub when using the ProxySync addon
- Players don't re-spawn where they are supposed to if there is carpet
- Fixed not detecting netherite tools properly
- Fixed PlayerStatChangeEvent not being called
- Fixed server possibly crashing when TNT with no yield was spawned during the match
- Fixed NPE https://bin.bloom.host/tihedoheva.md
- Fixed rare chance of the arena cloning manager causing to deleting old world folders while the world is still loaded
- Fixed always being able to break all "rescueplatform-material" (slime) blocks of the arena
- Fixed "eachteam-sortation" not working
Miscellaneous:
Fixed bug;
- Decreased SQL connection timeout from 30s to max 10s
- Reload message improvements (reload start message gets displayed immediately, time it took is now more correct)
- Improved arena condition parser
- Fixed String arena picker conditions causing errors
This is a minor update that fixes a bug which caused a few important features to break.
Fixed bug:
- Fixed error
I have forgotten to announce it the last time, but we also released the Cosmetics & Coins add-on recently! With it, you are able to add premium EULA-friendly and purchasable cosmetics to your server. Not only are you able to increase the economics of your server, but you are also able to increase the play time at the same time, hence the player being able to earn their coins by playing. You may also surely hook into your existing economy plugin as the plugin is fully customizable. Read more
We also released a new update for ProxySync. Visit our Discord to learn more.
NOTE BEFORE UPGRADING: New issues, that may prevent your arena from starting, have been added. The plugin used to warn you about them beforehand, but you were still able to start the arena nonetheless, likely causing things to break. Due to reports of people ignoring these warnings, we have added the possible issues that may forcefully prevent your existing arenas from starting. Only few people should be affected from this, but you should still check whether some arenas stopped or not.
Config changes:
Command changes:
- Revamped sounds config: It now uses YML and now also allows you to edit: "is-active", "is-custom-resourcepack", "volume" and "pitch" (instead of previously the one "fast" config. Old config file is automatically being converted
Miscellaneous:
- Removed <arena> parameter for /bw arena setspectatorspawn (now uses your position)
API changes:
- Improved hook system (e.g. plugin now automatically get unhooked / hooked when the plugin is being enabled or disabled using PlugMan)
- Various improvements to the party system
- Improved add-on folder loading system (it now e.g. respects dependencies & load-befores outside the add-ons folder)
- Updated XSeries from 8.7.0 to 9.0.0
- Items now get dropped even if the keepInventory gamerule or Essentials' keepInv system (or another plugin's system) would try to prevent that
- Added new arena start issues: Region corners are greater than the world's max/min height, it collides with other arenas
Fixed bugs:
- Modifying plugin hooks:
- New events:
- PluginHookEvent
- PluginPostHookEvent
- PluginUnhookEvent
- New methods:
- BedwarsAPI.getHookedPlugins()
- BedwarsAPI.getHookablePluginNames()
- BedwarsAPI.createPluginHook(Plugin)
- BedwarsAPI.removePluginHook(Plugin)
- More options for adding remote players:
- New methods:
- AddRemotePlayerInfo#setAutoAssignTeamIncludePlayers(RemotePlayer)
- AddRemotePlayerInfo#getAutoAssignTeamIncludePlayers()
- AddRemotePlayerInfo#setForcecfully(boolean)
- AddRemotePlayerInfo#isForcefully()
- New enums:
- KickReason.FORCE_SWITCH_ARENA
- KickSpectatorReason.FORCE_SWITCH_ARENA
- Ability to easily modify HyPixelV2 quick buy:
- New methods:
- PlayerProperties#getShopHypixelV2QuickBuyItem()
- PlayerProperties#setShopHypixelV2QuickBuyItems(ShopItem[])
- New API for the arena cloning manager:
- Added method (& class) GameAPI#getArenaCloningManager()
- Added API for arena pickers:
- Added BedwarsAPI#getArenaPickerAPI()
- Deprecated GameAPI#getArenasByPickerCondition(String) (Replaced by new API)
- New packges with tons of new classes: de.marcely.api.arena.picker.*
- VarParticle improvements
- Add support for "radius" for effects on 1.13+
- Add support for custom data for effects: Material, MaterialData, BlockFace
- Improved yaml parser
- Misc additions:
- Arena#setResetPlayerTimeOnQuit(boolean)
- Arena#setResetPlayerWeatherOnQuit(boolean)
- Arena#boolean isResetPlayerTimeOnQuit()
- Arena#boolean isResetPlayerWeatherOnQuit()
- It's now possible to use custom stat sets at the following places as well: lobby & ingame scoreboard, ranking sign, ranking statue, stats hologram
- Fixed /plugins getting spammed with add-ons when doing /reload (depended on the Spigot fork you used)
- Guard dog always sitting on 1.18+
- Fixed minishop sleeping in beds in 1.15+
- Fixed "There's a problem with the world" message would suggest /bw arena setworld instead of setposition for region arenas
- Destroying a bed using fireball or TNT Sheep now displays the name of the player correctly (only disabled TNT before) and (if enabled) prevent them from destroying their own bed
- Fixed rare InterruptedException when stopping the server
- Fixed mini shop item being taken twice when used
- (Auto-Cloning) Fixed lobby world not being changed to the new one for world arenas
- Fixed that the auto-world-loading would load a SWM lobby world as the game world. The lobby world for SWM now doesn't get manually loaded at all
- Fixed that time & weather always get reset to default whenever a player left an arena, caused it to break the previously changed time & weather
- Fixed rare error: The passed parameter players[0] is null (Bug caused by fancy Spigot forks?)
- Fixed rare error
- Fixed 1.19 error
This update is (once again) super massive. We'd greatly appreciate a donation, as all our updates are completely free, even though we are spending so much man power and time with each. This is surely not a requirement, you may also simply download and enjoy it without any further thoughts
. If you don't have the financial possibilities but still would like to express us your enjoyment, then we'd greatly appreciate a review as well ❤
Added features:
- Added auto cloning
- With this, you are now able to scale this plugin to any size, literally. Automatically. And the best thing? It's super easy to configure. Simply toggle a single config (auto-cloning-enabled), and you are ready to go. With that, the plugin is automatically cloning your existing arenas to an infinite amount. Afraid that your server gets filled quickly? Then you might want to use our ProxySync addon and offload all players to separate servers.
- For arena pickers:
- Add support for < > <= and >= for strings in arena pickers. Used for checking whether it starts or ends with something
- New variables for arena pickers: regeneration_type and server_channel_name
- Added %best_prefer_running% arena selector
- Added PlaceholderAPI support to the ArenaGUI system
- Added Ukrainian language (Thanks to Aladin)
Feature changes:
Added / improved support:
- Updated config "death-skipscreen-advanced" (finally out of beta
)
- It now only supports 1.15+ (due to technical limitations :/ )
- Enabled by default now
- Works properly now without bugs
Config changes:
- ASWM 2.8+
- MC 1.19.1 & 1.19.2 (Thanks to MetallicGoat)
- Added:
- auto-cloning-enabled
- auto-cloning-lobby-arenas-count
- auto-cloning-max-per-arena
- auto-cloning-world-prefix
- teamchest-block
- "close-inventory" config to "executecommand-button" element in arenasgui layouts
- fireball-add-knockback-y
- explosive-add-knockback-y
- invisibility-hides-armor-extra-particles-count (invisibility effect now spawns more particles)
- effects-given-on-trap-trigger (change effects on trap trigger) (Thanks to MetallicGoat)
- traps-resistant-to-explosions (disable that explosives can destroy traps) (Thanks to MetallicGoat)
- "fireball-fly-straight: false" now also works for 1.16+
- Improved buy group system:
- Fixed various bugs
- Players now receive items with items at buy group level 0 and without keep-on-death
- Whenever dying, the new buy group level is being chosen by the next lowest item that has keep-on-death enabled. Before, it'd always reset back to 0 in case there was no item with keep-on-death
- Replaced monsterspawning-enabled with natural-mob-spawning-enabled and natural-mob-spawning-reasons-whitelist
Miscellaneous:
API changes:
- Don't track damage info for longer than 15 seconds. This fixes a case where if you were in a fight recently and died due to e.g. void later on, it would still say that you were in a fight with the person
- With "endlobby-tptolobby" disabled, players now get teleported to his team spawn when falling into void during the endlobby phase
- Auto-renaming for picked up items is now only being performed in case they don't already have a name
- Added * selector for /bw arena setenabled
- Fireball & TNT jumping velocity strength is now static and not dynamic (Thanks to MetallicGoat)
Fixed bugs:
- Added:
- ConfigsLoadEvent#isStartup()
- Arena#formatItemStack(ItemStack, Player, team)
- Arena#getItemsGivenOnSpawn(Player, Team, boolean, boolean)
- GameAPI#getDropTypeById(String)
- GameAPI#sendToHub(Player)
- GameAPI#sendToHub(Player, boolean)
- VarParticle.newDyedMobSpell(Color)
- VarParticle.PARTICLE_POTION_INVISIBILITY
- QuitPlayerMemory#getPlayTime()
- QuitPlayerMemory#setPlayTime(long)
- Thanks to MetallicGoat for the following additions:
- Arena#getItemsGivenOnSpawn(Player, Team, boolean, boolean)
- Arena#formatItemStack(ItemStack, Player, Team)
- ShopGUIPostProcessEvent#getPage()
- RoundStartEvent#isGivingItems()
- RoundStartEvent#setGivingItems(boolean)
- PlayerIngameRespawnEvent#isGivingItems()
- PlayerIngameRespawnEvent#isGivingEffects()
- PlayerIngameRespawnEvent#setGivingItems(boolean)
- PlayerIngameRespawnEvent#setGivingEffects(boolean)
- Helper#setPlayerArmor(Player, ItemStack, boolean)
- Helper#givePlayerItem(Player, ItemStack)
- HologramEntity#getSavingLocation()
- HologramEntity#teleport(Location, boolean)
- The default configurations now match the TNT & fireball jumping of HyPixel
- VarParticle#newRandomizedDyedSwirl(int, double) is marked as deprecated
- Fixed that with BuyGroup#getItems() the items would be twice in the List
- ArenaBedBreakEvent#getBedLocation() new returns ImmutableLocation (does not break anything)
- PlayerAddBedEvent#getLocation() now returns ImmutableLocation (does not break anything)
- ImmutableLocation#clone() now returns ImmutableLocation instead of a Location (the given object was also a ImmutableLocation in the past, meaning nothing breaks by it)
- Added ImmutableLocation#cloneMutable()
- Fixed arena renaming would break arena blocks
- Fixed error in console when using /bw arena tp for an arena that does not exist
- Fixed possible console error spam when reloading
- Fixed error with bedwars1058 migration
- Fixed being sent twice to hub when leaving arena
- Fixed fireball jumping not working
- Fixed broken lights for region arenas in 1.18+
- Fixes for few specific scoreboard plugins: Game scoreboard now gets removed before the player leaves (would cause the new scoreboard to get replaced)
- Fixed the time the player has been waiting within the lobby got included within the play time statistic
- Fixed that the play time would reset every time somebody rejoined
- Fixed rejoining would not store buy groups & already bought items
- Fixed /bw arena saveblocks * not working
- Fixed not having any effect when disable "spectating" (config.cm2)
- Collected trap blocks don't stack with 'new' trap blocks
- Fixed buggy behavior when trying to leave using /bw leave while being within death spectating mode
- Fixed rare error
- Fixed that fireball was always super fast on 1.15 and older whenever fireball-fly-speed was set to anything else other than 1.0
- Villagers disappear after player death, and then reappear after a second death/respawn
- Fixed possible NPE error when using CloudNetV3
Config changes:
Miscellaneous:
- Added {message} and {name} placeholders to "customchatmessage-message" config
- Added the config "addcommand" to the lobby and "add-commands" to the spectator configs (thanks to MetallicGoat)
Fixed bugs:
- Added support for all UTF-8 characters for arenasgui statue
- Added support for netherite tools (when e.g. upgrading swords or armor) (Thanks to MetallicGoat)
- Fixed pressure plate traps broken since 5.0.9
- Fixed not displaying local arenas when there are no remote arenas
- Fixed dyeable materials possibly disappearing in HyPixelV2 shop layout for 1.13+
- Fixed error when trying to attack a hologram in 1.19
- Fixed upgrades shop generating using legacy spawner format
- Fixed typo "Looser" (should be "Loser")
- Fixed glitchy behavior when getting ridden by somebody / riding a vehicle and joining an arena
- Hotfix for rare case of villagers disappearing