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:
- 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
Miscellaneous:
- 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
Added commands:
- /bw tools playerdata info <player>
- /bw tools playerdata invalidatecache
Config changes:
- 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
API additions:
- 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 bugs:
- 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