StrikePractice – 1v1, 2v2, Bots Fights, PvP Events, Parties, Build fights and more

MC Plugin StrikePractice – 1v1, 2v2, Bots Fights, PvP Events, Parties, Build fights and more 3.9.1
Customizable and affordable practice plugin with many features!

- Improved compatibility with newer materials, especially with /battlekit extramaterials command and related functionality
- Made brackets/sumo work even if in main arenas world
- Fixed issues related to damage events in the bridge/bedwars mode
- Refactored allowed blocks checking and fixed extramaterials issues
- Added debugging for block breaking
- Fix issue when error during fight would keep arena marked as in use
- Fixed some typos (Invanlid -> Invalid etc.)
- Made keep-arenas-loaded not crash if it fails for specific arena
- Fixed /battlekit types <kit> none showing in preview menu
- Added debugging for SQL based fight stats
- Allowed bots to receive kits even if inventories were disabled (i.e., on survival servers)
- Added warning log messages in case of invalid spawnitem names
- Fixed koth team placeholder not working (unless arena "koth" was available)
- Fixed autoReconnect for MySQL
- Reduce best of X round reset delays
- Fixed arena copypaste not copying new materials
- Improved stats SQL queries performance
- Added custom cache configuration for stats and fixed koth team placeholder
- Arena reset functionality to include more entities
- Added API method #respawnInFight and added Fight#hasStarted
- Unobfuscated Difficulty and SimpleFight in the API
- Other internal changes and refactoring
- Other minor fixes and changes
This release has some nice new features, includes many fixes (and many related to the developer API) and some other minor changes.
The complete list of changes can be found below in a less readable format (sorry I was lazy)


Features:
- remove pearls immediately when one dies in a duel (or when the round ends)
- "duel-max-rounds for" /duel (20 default) to customize max rounds for duels
- 'spectator-keep-inside-arena' to force spectators to stay inside arenas
- possibility to decide gamemode for spectators (SURVIVAL by default)
- allow removing broadcast message
- trace debug logging (/sprac trace - not useful for most people unless you want to debug something more complex)
- added api#getLastSelectedEditedKit(Player) in the developer API
- debug log error when cooldown module failed to load
- add api#sendDuelRequest in the developer API
- made some command messages better
- added debug logging to "deleteeditedkits"
- update api (more in fixes section)
- added <is_in_queue> placeholders
- overall better debug logging

Fixes:
- ensure sync when giving spawn items (removed async item giving)
- Use autoReconnect=true by default for SQL databases
- added extra check to make sure the arena is available (for some reason the plugin would sometimes try to start a fight in an arena that was already in use when no other arenas were available - the "hacky" fix is for duels only though)
- fix: add Recordable in the API
- fix: bed break if newer material bed
- fixed blockdisappear in ffa arenas
- fixed lms event duration and arena displayname placeholders
- fix: ignore errors when setting biome
- fix: api#getQueuedKit not returning party queue kit
- fixed BotDuelEndEvent.WinnerType not being included in the API
- fixed RoundStartEvent#getPlayer2 although it was deprecated
- removed use of async inventory close
- fixed error on #forceEnd if reason is null
- check kit type in /queue <kit>
- made ffa fight players thread-safe
- fixed language items not being saved sometimes
- fix: send left-queue before actually left the queue for placeholders to work
- mark CitizensNPC as api class (even though it's kind of a bad decision but may help addon devs
- fixed bedwars materials not always changing
- unobfuscate DefaultCachedBlockChange
- mark multiple fight related things as @APIClass
- do not teleport to duplicate ffa arenas on /ffaarena
- /arena alerts not turning off debug logging
- keep DefaultPlayerStats unobfuscated for legacy reasons
- add short delay when forceEnding a fight due to error
- fixed prevent taking armor off in kit editor
- fixed deleting database keeping data.dat failing
- fixed some errors with kit editor
- error with koth capper 1.20
- made storm-wall-outside-arenas work with performance-mode
- fixed attempting to use long scoreboard lines on 1.13
- offline-player-stats was missing from config.yml, disabled by default
- API: do not obfuscate PlayerStats#CachedStatistic etc
- fix: error with CheckKitItemsHelper.java:54
- possibly fix some data migration, use "unknown" as fallback

Misc:
- refactor: minor refactor
- fix some dependencies and repositories (mainly for development)
- remove old references to /party open
- use HIGHEST priority in bedwars EntityDamageEvent, fixes compatibility with some other plugins
- Improved 1.20 (and other newer version) compatibility
Fixes:
- Fixed /sprac placeholders
- Fixed top_elo_rank not displaying "(none)"
- Fixed placeholders in post match inventory message
- Fixed (hopefully) newer items (netherite etc.) support for kit editor abuse
- Fixed check for duplicate armor in inventory in kit editor
- Fixed automatically add fight_players#id and stats#id columns
- Fixed removing wrong item from bot's inventory (soup/gapple)
- Fixed difficulty selector item arrangement in multiple row inventories
- Fixed <in_ranked_queue> and <in_unranked_queue> and <in_ranked_fight>

New things:
- StrikePracticeAPI was finally updated: https://github.com/toppev/StrikePracticeAPI
- Added #loadPlayerKits(UUID) and #getPlayerKits(Player) in the API
- Some minor code cleanup etc. as always
Fixes:
- 1.7 clients inventory message in one line instead of multiple
- Added better error logging if changelog fetching fails
- Fixed some bugs caused by asynchronous code when duel ends (opt back in with "async-match-end: true" for performance, not really recommended though)
- Fixed a bug where inventory message did not appear when the bot is killed
- Fixed a bug where players couldn't build in arenas without corners
- Fixed typo in ChangeLogFetcher (StrikeTab -> StrikePractice)
- Fixed custom-kit.replaces-kits not working (and added it back)
- Fixed <no_colors_kit> placeholder not working properly
- Fixed support for <arena> in koth/lms events and auto-disable the placeholder when not available
- Fixed spectating events being broken by config changes (by forcing wait-before-teleport to be at least 2 for spectators)
- Fixed some other placeholders not always working as intended
- Fixed some null pointer exceptions
- Fixed prevent-tool-dropping not working for netherite tools
- Fixed players not being able to use /juggernaut leave in the event
- Fixed /battlekit seticon not working with newer items
- Fixed fight-start-commands and fight-end-commands making texts (e.g., custom messages/titles) lower case
- Fixed being able to accept duel requests from players in kit editor
- Fixed events with auto-start ("start after X players") not start if player hosted (else it would start with the default kit)
- Fixed water inside fences and other water loggable blocks not resetting in arenas
- Fixed multiline messages not always in order
- Fixed bot name not showing in the death message (may still occur in some cases)
- Fixed multiple hex colors not working in messages (previously only the first one worked)
- Fixed players being teleported to lobby in events even if not supposed to be teleported
- Fixed bestof duels in bot fights not working properly when the bot is killed by damage
- Fixed some typos in the default config.yml

New features:
- Added #getPlayerSettings in the API
- It's now possible to make ffa instant /spawn by setting wait-before-leaving-ffa-arena: 0
- custom kits now support netherite armor
- custom kits now support newer items (e.g., netherite tools)
- Make /spec more editable (check the new config) and make spectator-teleport-title configurable (the teleport GUI title)
- Refactored (partially recoded) the scoreboard system
- Added support for unlimited scoreboard lines in 1.13+
- Players will now respawn in the arena instead of teleporting to spawn and back to the arena to spectate
- Only show custom kit in kit selector if player has strikepractice.customkit permission
- Reset arenas starting from the bottom up instead of randomly (this still doesn't make sand etc. reset properly)
- [display=<placehodler>] now works in messages too (let's you make, for example, separate message for ranked vs unranked fight/queue)
- Added "fight-start-message.party-bots" messages.yml option to customize the message
- Implemented ""/sprac trace" (for debugging, not really useful for normal use like "/sprac debug")

Misc:
- Increase default max block changes
- Refactoring of code and cleanup
- Better error handling in some cases
- Added quite a lot fo debug logging
- Maven exclusions for citizens
- Update some dependencies
- Removed some unused code and messages
- Add debug logging to KB module when it's not available on the server version
Hot fix update
There was a problem with the post match inventory messages (because of changes in 3.7.1)
See 3.7.1 update for other changes
Fixes
- Implement a hack to make colored wool/clay work (with /battlekit bedwars kits) on newer servers too
- Add /battlekit blockdisappear in the help command (as it was missing from there)
- Allow longer replay data in SQL database
- Minor experimental improvement to scoreboards
- Fixed plugin not enabling on 1.7 servers
- Fixed "/sprac debug" cancelling the teleportation in fight (this was a debugging method for which plugin teleports player from fight. It still exists but no longer cancels it)
- Fixed missing space in some command message
Features
- hex support to chat messages
Other changes
- Remove premade maps as they never even worked
- Clarify /sprac debug command messages
- Changed author Toppe5 -> Toppe
- Simple CI pipeline (#9) (this is just for development and automatic testing)
New
- Added /battlekit blockdisappear <kit> <seconds>. Places blocks will disappear in X seconds when enabled. This was supposed to be released a while ago but I somehow forgot it so including it now in this minor update
:oops:

Fixes
- Fixed custom golden head effects not working if "bridges-instant-golden-apples" was enabled
- 1.7 client nametags should work again even if scoreboard is disabled in the lobby world
Improvements/Fixes
- Fixed incorrect check if a player has a totem in Best of X fights. Previously it did not make sure it was in their hand.
- Prevent arena creation below y=0 because players will die instantly
- Added <opponent_wins_circles> and <own_wins_circles> placeholders
- Fixed some issues with Discord fight webhooks - should be working fine now
- Fixed /sprac cancel (or the API method) not setting the fight state as ended resulting in the fight duration limit not being cancelled and players being teleported after the duration limit has been reached in the cancelled fight.
- Fixed a few typos
- Added more helpful logging and debug logging
- Added better debug to "/sprac placeholders" and Discord webhooks. If you have problems with these features, do "/sprac debug" to see more detailed errors now
- Allow players to pick up items after a fight has ended if "disable-inventory-modifications" is enabled
- Reverted the change of <player> placeholder in duel request messages, <player> is now the player who sent the request (same as <sender>). This was a bad change in 3.6.0 that broke how the messages should work.
- Added <target> in all "wants-duel" (and similar) messages. <target> is the player who was dueled.
Fixes:
- Fixed KoTH team could be incorrect in API (#playersAreTeammates etc.)
- <wlr> placeholder incorrectly checking if wins/losses are supported
- <wlr> placeholder when player has not lost a fight yet
- Prevent entering duel if either of the player is in kit editor
- Show <ffa_rollback> value only in build FFA arenas
- Cancel fall damage during FFA arena reset only in build arenas
- Fixed wrong <player> placeholder value in duel "request-sent message"
- Fixed party duel request message sent multiple times to the target and not the other party members
- Fixed old fights migration not fixing inventories. Delete data.dat to fix if the web addon shows empty inventories for very old fights.

Features
- Added <queuetype> in waiting-for-duel message
- Added support to save replays in SQL database (if database is enabled). This makes the loading faster and memory footprint smaller and is a more elegant way to store replays. You can force file storage with "force-replay-file-storage: true". Any recorded replays will reset otherwise (but fights are still saved and won't affect player statistics)

For other developers:
- Added RoundEndEvent, deprecate some methods in RoundStartEvent
- Added #forceWinRound and #forceWinFight and deprecate #forceWin that works ike #forceWinRound

Misc:
- Updated dependencies and Kotlin version
- Refactored code quite a lot
Top Bottom