BetonQuest

BetonQuest

Plugin

Create unique Quests and Storylines! 🏆 Top 10 best rated Spigot Plugin of all time 🏆 Interactive Conversations with Choices. Quest Logs, Menus, Items, Notifications, Holograms, Translations. Integrates with 36 of your favorite Plugins!

Server AdventureGame MechanicsUtility

1,392 downloads
28 followers
Created2 years ago
Updateda month ago

Follow Save
Host your Minecraft server on BisectHosting - get 25% off your first month with code MODRINTH.

BetonQuest 2.0.0

Changelog

Added

  • Logging
    • Ingame logging
      • Logging during /q reload
    • New command /q debug ingame
    • Debug logging to separate file
    • Log history length can be freely configured
  • Quest Templates
    • A new folder QuestTemplates can now be used to define templates for packages
    • templates can also extend templates
  • add AureliumSkills Compatiblity
    • added AureliumSkillsLevelCondition
    • All existing users must add aureliumskills: 'true' to their config.yml's hook section.
    • added AureliumStatsLevelCondition
    • added AureliumSkillsLevelExperienceEvent
  • add DecentHolograms Compatibility
    • holograms from DecentHolograms are a direct alternative to HolographicDisplays
  • add LuckPerms context integration for tags
    • All existing users must add luckperms: 'true' to their config.yml's hook section.
  • add FakeBlock Compatibility
    • added fakeblock event that has the arguments showgroup and hidegroup to show and hide FakeBlock groups
    • added hook.fake-block config option, default: true
  • add RedisChat Compatibility
    • added redischat chat interceptor
  • added Event Schedules to replace old static-events system
    • static events from schedulers now respect static conditions
    • events called by schedules are always called player independent
    • runForAll event can now be used to run events for all players that match a condition
    • runIndepent event can be used to run events static (player independent) from player dependent contexts
  • added support for Base64 encode custom heads
    • can be created from items in inventory using the BetonQuest item command (Paper only, Bukkit/Spigot can be configured manually)
    • can be given to players using the BetonQuest give command
  • NotifyIO "totemIO"
  • Support for MythicLib
  • player attribute to QuestCompassTargetChangeEvent
  • added PlayerObjectiveChangeEvent, PlayerJournalAddEvent, PlayerJournalDeleteEvent
  • Allow %player% variable for PLAYER_HEAD quest items
  • allow access to objective variable properties from other packages
  • allow point variables from other packages
  • API method in objective API that starts and stops it per player
  • config option default_hologram to set hologram priority if multiple hologram plugins are loaded at once
  • config option journal.show_in_backpack to remove the journal from the backpack
  • config option journal.lock_default_journal_slot to lock the journal to the default_journal_slot
  • config option journal.give_on_respawn to add the journal to the inventory after the player respawns
  • config option journal.custom_model_data to give the journal a ressource pack based skin
  • config option mysql.reconnect_interval to set the reconnect interval if the connection to the database gets lost
  • compass now supports items from other packages
  • new messages.yml entries inventory_full_backpack and inventory_full_drop to have more specific messages, when the inventory of the player is full
  • menu conversationIO option npc_name_newline_separator
  • added q download command
  • variable support for menu titles
  • configurable cooldown to menu conversation IO
  • holograms
    • variable support
    • top lists ordered by point values of players
    • npcs list now supports global variables as NPC ID in NPC Holograms
  • menus now support global variables
  • exposed the Citizen variable and enhanced location capabilities
  • menus now support string with newline or string list text values for lore
  • amount of objectives now support variables
  • added quest item flag recording and restore
  • Conversations now support cross conversation pointers to conversations in other packages
  • QuestCancelers can now be referenced across packages
  • Chat Interceptor packet is now 1.20.4 compatible
  • freeze event - ProtocolLib compatibility feature: Blocks the player from moving for the specified amount of ticks
  • block objective - properties: absoluteAmount, absoluteLeft and absoluteTotal
  • command objective
  • equip objective
  • delay objective - now support variables
  • sudo event - now supports variables
  • opsudo event - now supports variables
  • variable condition - now supports variables
  • bossbar notify style now supports variables for the progress and stay arguments
  • delay objective property: rawSeconds
  • fish objective now has hookLocation and range settings.
  • consume objective now has amount argument.
  • mmoprofessionlevelup objective can now check the main character level as well
  • burning condition
  • inconversation condition
  • language condition
  • heroesattribute condition - Heroes compatibility feature: Checks a player's level for a particular attribute against a value
  • variable condition - regex can now also be a variable
  • mmspawn event now has argument target Makes the spawned mob target the player
  • mmspawn event now has argument private Visually hides the spawned mob from other players. Does not stop sound or particles
  • mmspawn event now supports the marked argument
  • objective event now supports a comma separated list of objectives
  • mmobkill objective now supports the marked and deathRadiusAllPlayers argument
  • marked argument now supports %player% variable
  • globaltag and globalpoint variables
  • burn event - ignites player for given seconds, supports variables
  • velocity event - throws the player by a vector (can be variable) with a direction and modification
  • block objective - added argument noSafety which disables removing progress when the player does the opposite of what the objective asks for
  • block objective - added property variables absoluteLeft, absoluteTotal, absoluteAmount that always return absolute values
  • hunger condition and event
  • variable condition - forceSync argument forces the condition to be checked on the main thread
  • variable condition - now supports variables as both the input and the regular expression
  • command event - now suppress console output
  • cancelconversation event
  • time event - now supports subtraction and world selection, which made it persistent and static
  • globalpoint event - new syntax for manipulating global points
  • experience event - it's now possible to change xp, change and set levels and set the xp bar
  • deleteglobalpoint event
  • score event - more options for manipulating the scoreboard
  • item variable - new name and lore argument and now supports items from other packages
  • randomnumber variable added - supports variables
  • give event - new backpack argument to place items in the backpack (if a valid QuestItem)
  • party event - new optional amount of maximal affected players
  • drop event
  • itemdurability event, condition and variable
  • numbercompare condition
  • cancelOnLogout argument for folder event
  • npcinteract objective - now supports the argument interaction to choose between left, right or both clicks
  • log event
  • party event - new range 0 and -1 to select players in the same world or server wide
  • stage objective, condition and event
  • first event - attempts to run a list of events until one successfully runs, like a compressed if event

Changed

  • Java 17 is now required
  • changed package names from pl.betoncraft.betonquest to org.betonquest.betonquest
  • Changed quest package structure
    • Quest packages are now searched and loaded from the folder BetonQuest/QuestPackages/
    • Quest packages can now contain more quest packages in sub folders
    • Relative paths can now navigate downwards and not only upwards
    • main.yml was renamed to package.yml
    • Any file and folder structure with any file and folder names is now allowed, except package.yml, as that file indicates a quest package
    • events, objectives, conditions, journal and items are now defined in a config section matching their names
    • conversations and menus are now defined in a config section matching their names and a unique identifier like the file name before
    • The enabled boolean is now defined in the package section
  • all objectives that can be advanced without directly completing now support notify
  • all objectives that can be advanced without directly completing now support left, amount and total variables
    • the left and amount variables of some objectives were swapped and have been corrected: left is the amount left, amount is the amount done
  • NPC Holograms are reworked
    • individual refresh rate for each hologram
    • the boolean follow is now set per hologram
    • the vector offset origin has been changed. The hologram is now directly above the NPCs head by default. This means all previously custom vectors are now increased by 3 blocks on the y-axis.
    • npc_effects are reworked
      • the section changed its naming from npc_effects to effectlib
      • the section disabled got removed
      • the section check_interval is now an inner section of the effect and now called checkinterval
      • next to the npcs section there is now an locations section
      • effects will now follow npcs if they're pathing to another spot
  • AureliumSkills updated to version Beta1.2.5
  • PikaMug Quests updated to version 4.1.3
  • Items now support AIR
  • Menus now support new click options shiftLeft, shiftRight and middleMouse to execute events on item clicks
    • Therefore left and right in the click section no longer include shift clicks
  • folder event - now executes events immediately if no delay is set
  • weather event - now has an optional variable duration (in seconds) and an optional world param
  • paste event - can now be static
  • chestput objective - can now block other players from accessing a chest while someone is putting items inside
  • The location and region objectives now register movement of players inside a vehicle
  • written book is now readable as a quest item
  • HolographicDisplays updated to 3.0.0
  • Added staticness indicator to variables that can be executed without a direct player connection
  • written book quest items can now be read
  • experience objective event and condition were reworked
    • condition and objective do not support raw experience anymore
    • all allow decimal level and variables now
  • changed backpack configuration. "" will hide the compass or canceler
  • smelt objective - now requires a QuestItem instead of a BlockSelector
  • cancelquest command - has its own permission now
  • compass command - has its own permission now
  • language command - is now persistent
  • point command - list can now be filtered by beginning letters
  • tag command - list can now be filtered by beginning letters
  • globalpoint command - list can now be filtered by beginning letters
  • globaltag command - list can now be filtered by beginning letters
  • journal command - list can now be filtered by beginning letters
  • objective command - list can now be filtered by beginning letters
  • variable condition supports escapable underscores to avoid replacement
  • kill event - now kills the player, instead of dealing damage, which is more reliable
  • lightning event - now has a new noDamage argument
  • clear and killmob' events - got replaced by new removeentity` event
  • the line length of SlowTellRaw conversation IO from 60 to 50 to fit the actual minecraft chat
  • Item enchantments was changed to include zero as a legal value, not just positive numbers
  • the objectives mmocorecastskill and mmoitemcastability were merged into the mmoskill objective
  • command event no longer runs for all players on the server if a variable is used
  • math and version variables - now static
  • alternative and check condition - now static
  • open_events in a menu are now called before the menu actually opens
  • conversation event now support a start option

Removed

  • deprecated internals, code and old features
  • Support for MMOLib
  • message event
  • title event
  • playsound event

Fixed

  • added missing spaces to time left property of delay objective
  • catchup now works even if schedule was never executed before
  • q version now works again
  • RPGMenu error when teleport events are used as click events
  • RPGMenu bound items not always working
  • npc_holograms do now show errors during reload and not one tick later
  • first slot in backpack stays empty when journal is in player inventory
  • npc_holograms are not shown correctly with multiple defined npcs
  • spectator mode is now disabled for chest conversation io to prevent being stuck in the conversation
  • packet chat interceptor does not catch action bar anymore
  • time event does not work with floating point values
  • global variable recursive resolution cross packages
  • inaccurate location variable decimal rounding
  • NPC holograms from Citizens are not hidden correctly
  • location objective - is now more robust if the player changes a world
  • brew objective - now counts newly brewed potions even if there were already some potions of the desired type in
  • chestput objective - did now work with double chests other slots present
  • menu(open) event - showed the previous menu again
  • non .yml files causing errors when loading quest packages
  • pickrandom event - did not calculated chance correctly
  • pickrandom event - did not allowed dashes in event names
  • action objective - ignored offhand at all
  • enchant objective - did not work at all, now has amount and requirementMode parameters
  • Hologram topX line not working with profiles
  • the craft objective could be completed without consuming materials
  • LocationObjective resolves variable for a player who does not have the objective, and so maybe also dont have the variable
  • performance when using many conditions / events / ... repeatedly
  • /q journal command allowed invalid journal pointers
  • AsyncSaver will shut itself down if the database connection is lost, resulting in data loss
  • Journal entries did count color codes as line length, affecting the formatting of pages
  • Notification categories could be modified during runtime with the notify event
  • Leading spaces are now preserved in conversation messages and journal entries
  • giving air with the give command or the give event crashes the server
  • duplication of holograms when reloading BetonQuest and the hologram is hidden
  • menu conversation IO kicked players when conversation started in the air caused by flying detection
  • menu conversation IO did not stopped scrolling at the bottom and began to scroll from the top again
  • removed the hearts of the Armorstand in the Menu Conversation IO
  • journal entries now keep their leading whitespaces
  • exceptions in sudo and command events leading to broken conversations that could not be exited
  • the NPC's head could be stolen from conversations with the chest style

Security

  • it was possible to put a QuestItem into a chest
  • bump log4j dependency 2.15.0 to fix CVE-2021-44228
  • take event - is now threadsafe

Files

BetonQuest.jar(4.86 MiB) Primary Download

External resources



Project members

CyberOtter

Owner

Wolf2323

Core Maintainer


Technical information

License
GPL-3.0-only
Project ID