Skip to content

0.20 - Err... wow?

Compare
Choose a tag to compare
@SkytAsul SkytAsul released this 06 Dec 19:24
· 213 commits to master since this release
2ad0d08

New stages, requirements...

  • Added a "Die" stage, which gets completed when players... die.
    • You can choose which death reasons are acceptable (drowning, getting killed by an entity, falling from too high...)
  • Added Equipment requirement: you can now choose which item a player has to hold in its hand, which helmet it must wear...
  • Added Deal Damage stage type: this stage will get completed once player deals a specific amount of damage to configurable mob types
  • Added "Eat or drink" stage type, which works for every type of consumable items: food, milk bucket, potions...
  • "Craft item" stages now work for items melted through a furnace (or smoker or blast furnace) and items "crafted" using a smithing table (netherite items)
  • In a "Kill mobs" stage, you can now choose the target level of mobs to kill from the MythicMobs and LevelledMobs plugins

Quests menu

  • GUI description for quests is now modulable, which means external developers are now able to add their own custom lines!
  • Quest description and rewards are now shown in the "in progress" and "finished" tabs.
  • Added a quest option "Visibility" to choose specifically in which tabs of the menu the quest should appear. This option also allows you to enable or not the marker on your dynamic map (dynmap or BlueMap)

New commands interface

  • Switched the custom command framework to Lamp.
  • This allows for more advanced command features (such as flags, i.e. /quests start ... -overrideRequirements instead of a nameless true at the end of the command)
  • This allows for Mojang's Brigadier to be used: arguments now have proper names and coloring.
  • This allows for player selectors! The finishAll, resetPlayer, cancel, finish and start commands now accepts multiple players (i.e. /quests start @A[distance=0..50] 12)

BQ command in chat

Scoreboard quest tracker

  • Quest tracker in the scoreboard now has more attached placeholders: quest name, quest advancement, quest description, quest rewards (and time left for the expansion)
  • Renamed placeholders {questName} to {quest_name} and {questDescription} to {quest_advancement} in scoreboards (backward compatibility is kept)
  • This allows to dynamically get informations about the quest currently being shown

Versions and plugins support

  • Added support for Minecraft 1.19
  • Dropped support for Minecraft 1.10, 1.11, 1.13 and 1.14
  • Added support for MythicMobs 5
  • Added support for HolographicDIsplays 3
  • Added support for PaperMC API-specific features (for the moment, it is only used to prevent quest items from being dropped on death)
  • Added AdvancedSpawners integration
  • Updated BlueMap integration (now works with 3.3 and higher only)
  • Added DecentHolograms integration to show holograms. (nothing different with the HolographicDisplays integration)
  • Added LevelledMobs integration
  • Added WildStacker integration: when killing a whole stack of entities, all of the mobs are now counted for the quest

Data change

  • Changed player data structures in database and files.
  • Stage datas are no longer saved in one the 5 previously available slots (stage_0_datas, stage_1_datas...). They are now saved in a list.
  • This is more efficient and is a lot more flexible, which means that more complex systems of stages or branching will come in the future :)
  • This fixed a bug with SQL rows being created multiple times and bloating the database (some tables which previously had hundreds of thousands of rows will now only contain a few thousands).
  • All the changes in database will be made automatically, and duplicated rows will get deleted.
  • For the DB migration to happen gracefully, the database user must have the permission to do ALTER actions.
  • In the case of very large servers, the DB migration may take some time to happen. Some extra caution must be taken, so please come talk to me on Discord.
  • Database system has been revamped and now uses the widely-used HikariCP connection pool. This means performance improvements and probably less weird issues related to database connection.
  • Sped up database data storage by making proper use of primary keys. The performance improvement will be huge on large databases.

PlayerBlockTracker

  • Added an integration with the PlayerBlockTracker plugin
  • If the plugin is enabled on your server and the BQ config.yml option "usePlayerBlockTracker" is set to true (enabled by default) then BeautyQuests will use PlayerBlockTracker's advanced block tracking capabilities to prevent players from completing a "mine X blocks" stage with player-placed blocks (to prevent exploits)
  • In comparison with BeautyQuests integrated block tracking system, this allows:
    • to track blocks moved using pistons
    • to track blocks placed by other players
    • to track blocks across time: the data is persistent and no longer lost after a server restart
  • Available here: [URL]https://github.com/Flo0/PlayerBlockTracker/releases[/URL]

Reworked most of the API

  • Probably all external code will fail to work until updated correctly. It is mostly methods/classes/fields renaming though.
  • Added a whole new "Locatable" API which allows to fetch informations about where the player has to go in its quests
  • Refactored internal player account loading system, now there is a better API to fetch account of offline players
  • Exposed the "Locale" API
  • Added "stage options" system for external plugins to save datas into stages
  • Added "additional player datas" system to add more datas in a player account
  • Quest objects (rewards and requirements) can now be (de)serialized using ConfigurationSection instead of Map<String, Object>, for better code readability
  • Moved *AbstractCountableStage *to the new api.stages.types package
  • ...and more, check it out by yourself :)

Miscellaneous changes and fixes

  • The "list" command in multi-line editors now show line numbers
  • Added the ability to remove the pool from a quest by shift-clicking
  • Sounds of messages on dialogs are now cutted out when players skip a message
  • Made some "list" GUI sorted by name
  • Edited the "npcClick" config option from a single choice to a list of clicks.
  • Available clicks are: LEFT, RIGHT, SHIFT_LEFT, SHIFT_RIGHT.
  • Fixed issues where multiple stages can get completed at the same time
  • Fixed the "blockdata" editor filling unspecified block datas with their default values
  • Fixed the "quest item" option editor allowing for non-item materials (such as fire), which caused the quest item to disappear entirely from the menu
  • Fixed errors on PaperMC when using asynchronous rewards
  • Fixed dialog history still opening whereas disabled in config.yml
  • Fixed the "interact with" stage being completed twice
  • Fixed an issue with holograms disappearing
  • Added missing translations, updated FR, RU, VI, ES, IT, PL, CN, TH, HU locales
  • Added UK locale
  • Fixed the active quest description when players were in an async start/end of quest
  • Fixed several issues with 1.8
  • When a backup is created (when updating the plugin for instance), player datas also get "backuped" (only if using the YAML storage system)
  • Fixed crafting exploit
  • Fixed timer not being tested in /quests start
  • Fixed bugs on quests launched automatically on first join
  • Fixed a bug with "interact with block at" when the world is unloaded at startup
  • Made player removed from inventory system when it crashes during the GUI opening (this may have caused item exploits)
  • Added bStats metrics for dependencies
  • Fixed wrong message being sent for "bring back items" stage
  • Fixed empty message being sent for the same stage when the message is set to "null"
  • Added a per-player limit of launcheable quests using permissions: beautyquests.start.X
  • Made some changes in order to allow creating quests in symbolic linked folders
  • Quests that are not in progress can no longer be cancelled using /quests cancel (why was this even possible?)