Skip to content

Integration ListπŸ”—

This page contains documentation for known integrations that exist for third party plugins. Some integrations also have dedicated pages in the documentation. In total 45 plugins have dedicated support for BetonQuest.

Provided by BetonQuestπŸ”—

BetonQuest hooks into other plugins by itself to provide more actions, conditions and objectives or other features.
AuraSkills, Brewery, BreweryX, Citizens, CraftEngine, DecentHolograms, Denizen, EffectLib, FancyNpcs, FakeBlock, Heroes, HolographicDisplays, ItemsAdder, JobsReborn, LuckPerms, Magic, mcMMO, MythicLib, MMOCore, MMOItems, MythicMobs, Nexo, PacketEvents, PlaceholderAPI, Quests, RedisChat, Shopkeepers, TrainCarts, ProSkillAPI, Skript, Vault, WorldEdit, FastAsyncWorldEdit, WorldGuard and ZNPCsPlus.

Provided by other pluginsπŸ”—

Some plugins also hook into BetonQuest and provide support by themselves:
nuNPCDestinations, CalebCompass, Depenizen, NotQuests, HonnyCompass MythicDungeons JourneyBetonQuest BetonQuestAddon

There are also plugins that hook into BetonQuest that require a clientside mod:
BetonQuestGUI, NGVexJournal

AuraSkillsπŸ”—

ConditionsπŸ”—

Skill level: auraskillslevelπŸ”—

Checks if the player has the specified skill level. The amount is a number. The player needs to be on that level or higher to meet the condition. You can disable this behaviour by adding the equal argument, then the player must match the specified level exactly.

Example
conditions:
  fighting5: "auraskillslevel fighting 5"
  farming10: "auraskillslevel farming 10 equal"

Stat level: auraskillsstatslevelπŸ”—

Checks if the player has the specified stat level. The amount is a number. The player needs to be on that level or higher to meet the condition. You can disable this behaviour by adding the equal argument, then the player must match the specified level exactly.

Example
conditions:
  luck5: "auraskillsstatslevel luck 5"
  luck10: "auraskillsstatslevel luck 10 equal"

ActionsπŸ”—

Give Skill Xp : auraskillsxpπŸ”—

Adds experience to the players skill. The amount is a number. The level argument is optional and would convert the amount to levels instead of XP points.

Example
actions:
  farming5: "auraskillsxp farming 5"
  farming10: "auraskillsxp farming 10 level"

Brewery & BreweryXπŸ”—

Brewery usage is integrated to the Items system and thus used for actions and conditions.

The first argument is the name and the second the quality. You can specify the mode to select the brew by either the name or its id, defaulting to the name.
The quality is not used for determining equality, only for generating the brew item.
In addition, you can also add quest-item argument to tag them as "QuestItem".

Example
items:
  appleLiquor: 'brew "Apple Liquor" 2'
  hotChocolate: "brew hot_choc 10 mode:id quest-item"
conditions:
  hasAppleLiquor: "item appleLiquor"
  brewId: "hand hotChocolate"
actions:
  giveHotChocolate: "give hot_chocolate"
  takeLiquor: "take appleLiquor"

ConditionsπŸ”—

Drunk: drunkπŸ”—

This condition is true if the player is drunken. Only argument is the minimal drunkness (0-100).

Example
conditions:
  drunk50: "drunk 50"

Drunk Quality: drunkqualityπŸ”—

This condition is true if the player has the given drunk quality. Only argument is the minimal drunk quality (1-10).

Example
conditions:
  quality3: "drunkquality 3"

CitizensπŸ”—

If you have this plugin you can use it's NPCs. I highly recommend you installing it, it's NPCs are way more immersive. Having Citizens also allows you to use NPCKill objective and to have moving NPC's in addition to the normal NPC functionality.

Info

In addition Citizens integration supports all BetonQuest NPC features.

ActionsπŸ”—

Move NPC: npcmoveπŸ”—

This action will make the NPC move to a specified location. It will not return on its own, so you have to set a single path point with /npc path command - it will then return to that point every time. If you make it move too far away, it will teleport or break, so beware. You can change maximum pathfinding range in Citizens configuration files.

Move action can fail if the NPC is already moving for another player.

Parameter Syntax Default Value Explanation
NpcID npcId The NPCId.
Locations Locations The locations where the NPC will move to.
block Keyword (block) Disabled Blocks the NPC so interaction won't start a conversation while it is moving.
wait wait:number 0 Number of ticks the NPC will wait at its destination before firing actions.
done done:actions Disabled List of actions fired after reaching the destination.
fail fail:actions Disabled List of actions fired if this action fails.
Example
actions:
  showPath: "npcmove innkeeper 100;200;300;world,105;200;280;world block wait:20 done:msg_were_here,give_reward fail:msg_cant_go,give_reward"

Stop moving NPC: npcstopπŸ”—

This will stop all current move tasks for the NPC.

Parameter Syntax Default Value Explanation
NpcID npcId The NpcId.
Example
actions:
  stopGuide: "npcstop guard"

ObjectivesπŸ”—

NPC Kill: npckillπŸ”—

The NPC Kill objective requires the player to kill a NPC.

Parameter Syntax Default Value Explanation
NpcID npcId The NpcId.
amount amount:number 1 The time the NPC needs to be killed.
notify notify Disabled Display a message to the player each time they kill a NPC. Optionally with the notification interval after colon.
Placeholder Properties
Name Example Output Explanation
amount 6 Shows the amount of times already killed the NPC.
left 4 Shows the amount of times still needed to kill the NPC for the objective to be completed.
total 10 Shows the initial amount of times that the NPC needed to be killed.
Example
objectives:
  killThief: "npckill thief amount:3 actions:reward notify"

CraftEngineπŸ”—

ItemsπŸ”—

CraftEngine usage is integrated to the Items system and thus used for actions and conditions.

In addition, you can also add quest-item argument to tag them as "QuestItem".

Example
items:
  topazAxe: "craftEngine default:topaz_axe"
  amethystTorch: "craftEngine default:amethyst_torch quest-item"
conditions:
  hasTopazAxe: "hand topazAxe"
actions:
  giveAmethystTorch: "give amethystTorch:3"

DenizenπŸ”—

Depenizen is also integrated with BetonQuest! Discover available features on the meta documentation.

ActionsπŸ”—

Script: scriptπŸ”—

With this action you can fire Denizen task scripts. Don't confuse it with skript action, these are different. The first and only argument is the name of the script.

Example
actions:
  runDenizenScript: "script beton"

EffectLibπŸ”—

If you install this plugin on your server you will be able to play particle effects on NPCs and locations. You can also use the particle action to trigger particle.

Info

EffectLib is not a normal plugin, it's a powerful developer tool - there are no official docs. However, the Magic plugin has a wiki for EffectLib. It does contain a few magic specific settings though so please don't be confused if some stuff does not work. There is also a magic editor with autocompletion for EffectLib.

Example
effectlib: #(1)!
   farmer: #(2)!
      class: VortexEffect #(3)!
      iterations: 20 #(4)!
      particle: crit_magic
      helixes: 3
      circles: 1
      grow: 0.1
      radius: 0.5
      pitch: -60 #(9)!
      yaw: 90 #(10)!
      interval: 30 #(8)!
      checkinterval: 80 #(11)!
      npcs: NPC1,NPC2 #(5)!
      locations: 171;72;-127;world #(6)!
      conditions: '!con_tag_started,!con_tag_finished' #(7)!
  1. All effects need to be defined in this section.
  2. Each effect is defined as a separate subsection. You can choose any name for it.
  3. Any EffectLib effect class.
  4. This and all following options until interval are EffectLib parameters. You can find them in the 3rd party documentation linked above.
  5. A list of all NPCs on which this effect is displayed. This section is optional.
  6. A list of all locations on wich the effect is displayed. Optional.
  7. The conditions that must be true so that the player can see this effect.
  8. Controls after how many ticks the effect is restarted. Optional, default: 100 ticks
  9. Controls the vertical direction of the effect.
  10. Controls the horizontal direction of the effect.
  11. Controls how often the conditions should be checked (in ticks). Optional, default: 100 ticks

ActionsπŸ”—

Particle: particleπŸ”—

This action will load an effect defined in effects section and display it on player's location. The only argument is the name of the effect. You can optionally add loc: argument followed by a location written like 100;200;300;world;180;-90 to put it on that location. If you add private argument the effect will only be displayed to the player for which you ran the action.

Example
effects:
  beton:
    class: HelixEffect
    iterations: 100
    particle: smoke
    helixes: 5
    circles: 20
    grow: 3
    radius: 30
actions:
  playEffect: "particle beton loc:100;200;300;world;180;-90 private"

FancyNpcsπŸ”—

If you have this plugin you can use its NPCs. It is more lightweight than Citizens but lack some of its features.

Info

FancyNpcs integration supports all BetonQuest NPC features.

FakeBlockπŸ”—

If you have the FakeBlock integration installed, you will be able to view and hide the block groups created in FakeBlock on a player-specific basis.

ActionsπŸ”—

Show and hide block groups: fakeblockπŸ”—

Shows or hides the block group for the player. The block group can be specified as a comma-separated list. The groups are case-sensitive. To show a group the showgroup argument is required. To hide a group the hidegroup argument is required.

Example
actions:
  showBridge: "fakeblock showgroup bridge"
  hideCityBorder: "fakeblock hidegroup gate,wall,door"

HeroesπŸ”—

When you install Heroes, all kills done via this plugin's skills will be counted in MobKill objectives.

ConditionsπŸ”—

Heroes Class: heroesclassπŸ”—

This condition checks the classes of the player. The first argument must be primary, secondary or mastered. Second is the name of a class or any. You can optionally specify level: argument followed by the required level of the player.

Example
conditions:
  masteredWarrior: "heroesclass mastered warrior"

Heroes Attribute: heroesattributeπŸ”—

This condition check's the level of a player's attribute. The first argument must be strength, constitution, endurance, dexterity, intellect, wisdom, or charisma. Second argument is the required level of the attribute. Must be greater than or equal the specified number.

Example
conditions:
  strength5: "heroesattribute strength 5"

Skill: heroesskillπŸ”—

This condition checks if the player can use specified skill. The first argument is the name of the skill.

Example
conditions:
  charge: "heroesskill charge"

ActionsπŸ”—

Heroes experience: heroesexpπŸ”—

This action simply gives the player specified amount of Heroes experience. The first argument is either primary or secondary and it means player's class. Second one is the amount of experience to add.

Example
actions:
  primary1000: "heroesexp primary 1000"

ItemsAdderπŸ”—

Required ItemsAdder version: 4.0.10 or above

ItemsπŸ”—

ItemsAdder usage is integrated to the Items system and thus used for actions and conditions.

In addition, you can also add quest-item argument to tag them as "QuestItem".

Example
items:
  ruby: "itemsAdder iasurvival:ruby"
  sword: "itemsAdder iaalchemy:mysterious_sword quest-item"
conditions:
  hasSword: "item sword"
actions:
  giveRuby: "give ruby:3"

ConditionsπŸ”—

Check for block itemsAdderBlockπŸ”—

Check if the ItemsAdder block is at a location.

Parameter Syntax Default Value Explanation
itemId string Identifier of the block to check.
location ULF The location to check the block at.
Example
conditions:
  iaBlock: "itemsAdderBlock itemsadder:ruby_ore 40;72;3;world"

ActionsπŸ”—

Place block itemsAdderBlockπŸ”—

Changes the block at the given position.

Parameter Syntax Default Value Explanation
itemId string Identifier of the block to place.
location ULF The location to place the block at.
Example
actions:
  iaSetBlock: "itemsAdderBlock itemsadder:ruby_ore 100;200;300;world"

Play totem animation itemsAdderAnimationπŸ”—

Plays an ItemsAdder totem animation.

Parameter Syntax Default Value Explanation
animationId string Animation name to play.
Example
actions:
  iaPlayAnimation: "itemsAdderAnimation totem1"

ObjectivesπŸ”—

Break Block itemsAdderBlockBreakπŸ”—

To complete this objective player must break specified amount of ItemsAdder blocks. You can add a notify keyword if you want to send a notification to players whenever the objective progresses.

Parameter Syntax Default Value Explanation
itemId string Identifier of the block to break.
amount amount:number 1 Amount of blocks to break.
Example
objectives:
  iaBreak: "itemsAdderBlockBreak itemsadder:ruby_ore amount:20 notify:5"

Place Block itemsAdderBlockPlaceπŸ”—

To complete this objective player must place specified amount of ItemsAdder blocks. You can add a notify keyword if you want to send a notification to players whenever the objective progresses.

Parameter Syntax Default Value Explanation
itemId string Identifier of the block to place.
amount amount:number 1 Amount of blocks to place.
Example
objectives:
  iaPlace: "itemsAdderBlockPlace iasurvival:restoration_table"

JobsRebornπŸ”—

ConditionsπŸ”—

Can Level up: nujobs_canlevel {jobname}πŸ”—

Returns true if the player can level up

Has Job: nujobs_hasjob {jobname}πŸ”—

Returns true if the player has this job

Example
conditions:
  hasWoodcutter: "nujobs_hasjob Woodcutter"

Job Full: nujobs_jobfull {jobname}πŸ”—

Returns true if the job is at the maximum slots

Job Level: nujobs_joblevel {jobname} {min} {max}πŸ”—

Returns true if the player has this job, and at a level equal to or between the min/max

Example
conditions:
  woodcutterLevel5: "nujobs_joblevel Woodcutter 5 10"

ActionsπŸ”—

Add Jobs Experience: nujobs_addexp {jobname} {exp}πŸ”—

Gives the player experience

Increase Jobs Level: nujobs_addlevel {jobname} {amount}πŸ”—

Increases the player level by amount.

Decrease Jobs Level: nujobs_dellevel {jobname} {amount}πŸ”—

Decreases the players level by amount.

Join Jobs Job Action: nujobs_joinjob {jobname}πŸ”—

Joins the player to job.

Leave Jobs Job Action: nujobs_leavejob {jobname}πŸ”—

Removes the player from job.

Set Jobs Level: nujobs_setlevel {jobname} {level}πŸ”—

Set the player to level.

ObjectivesπŸ”—

Join Jobs Job Objective: nujobs_joinjob {jobname}πŸ”—

Triggers when player joins job.

Leave Jobs Job Objective: nujobs_leavejob {jobname}πŸ”—

Triggers when player leaves job.

Notice

This is not triggered by '/jobs leaveall'

Jobs Job Levelup: nujobs_levelup {jobname}πŸ”—

Triggers when player levels up.

Jobs Job Payment: nujobs_payment {amount}πŸ”—

Triggers when player makes {amount} of money from jobs. You can use the notify keyword to display a message each time the player advances the objective, optionally with the notification interval after a colon.

This objective has three properties: amount, left and total. amount is the amount of money already received, left is the amount of money still needed to receive and total is the amount of money initially required.

LuckPermsπŸ”—

Context IntegrationπŸ”—

Any BetonQuest tag (global and per-player) can be used as a LuckPerms context. This means that a player needs the specified tag for a permission to be true - this removes the need for tons of permission add ... actions as you can hook your existing quest progress tags right into LuckPerms permission contexts. The syntax is as follows:

key value
betonquest:tag:PACKAGE_NAME>TAG_NAME true
betonquest:globaltag:PACKAGE_NAME>TAG_NAME true
betonquest:tag:myPackage>tagName true
betonquest:globaltag:myQuest>someTag true

Check the Luck Perms documentation for an in-depth explanation on what contexts are and how to add them to permissions.

PermissionsπŸ”—

If you prefer to directly add or remove permissions without triggering the LuckPerms changelog chat notifications, you can utilize the luckperms addPermission and luckperms removePermission actions. You also have the possibility to assign groups to the player via the group.<GroupName> permission.

Example
actions:
  addDefaultGroup: "luckperms addPermission permission:group.default,group.quester" #(1)!
  addNegated: "luckperms addPermission permission:tutorial.done value:false" #(2)!
  addWithContext: "luckperms addPermission permission:group.legend context:server;lobby" #(3)!
  addTemporary: "luckperms addPermission permission:donator.level.one expiry:20 unit:MINUTES" #(4)!
  removeTutorial: "luckperms removePermission permission:tutorial.done"
  removeMultiple: "luckperms removePermission permission:tutorial.done,group.default" #(5)!
  1. You can define single or multiple permissions with the permission key. You need to separate them with a comma.
  2. You can define Permissions with a optional value of false to negate them and give them to the player. If you want to override the value of the permission, you can use the value argument and set it to true.
  3. You can also add optional contexts to the permissions like server;lobby. Read more about contexts here. You can define multiple contexts by separating them with a comma.
  4. With the key expiry you can define the time until the permission expires. There can only be one expiry argument. If you dont use the unit parameter, it defaults do DAYS. Other units can be found here.
  5. You can remove multiple permissions at once by separating them with a comma.

You can also add context, value and expiry to the removePermission action but its not recommended as it only removes exact matches. Instead only use the permission to remove.

MagicπŸ”—

ConditionsπŸ”—

Wand: wandπŸ”—

This condition can check wands. The first argument is either hand, inventory or lost. If you choose lost, the condition will check if the player has lost a wand. If you choose hand, the condition will check if you're holding a wand in your hand. inventory will check your whole inventory instead of just the hand. In case of hand and inventory arguments you can also add optional name: argument followed by the name of the wand (as defined in wands.yml in Magic plugin) to check if it's the specific type of the wand. In the case of inventory you can specify an amount with amount and this will only return true if a player has that amount. You can also use optional spells: argument, followed by a list of spells separated with a comma. Each spell in this list must have a minimal level defined after a colon.

Example
conditions:
  wand: "wand hand name:master spells:flare:3,missile:2"

McMMOπŸ”—

ConditionsπŸ”—

McMMO Level: mcmmolevelπŸ”—

This conditions checks if the player has high enough level in the specified skill. The first argument is the name of the skill, second one is the minimum level the player needs to have to pass this condition.

Example
conditions:
  woodcutting50: "mcmmolevel woodcutting 50"

ActionsπŸ”—

Add MCMMO Experience: mcmmoexpπŸ”—

This action adds experience points in a specified skill. The first argument is the name of the skill, second one is the amount of experience to add.

Example
actions:
  swords1500: "mcmmoexp swords 1500"

MMOCore & MMOItems & MythicLibπŸ”—

ItemsπŸ”—

MMOItems usage is integrated to the Items system and thus used for actions and conditions.

The souldbound keyword can be used with an optional amount, defaulting to 1.
In addition, you can also add quest-item argument to tag them as "QuestItem".

Example
items:
  crown: "mmoitem ARMOR SKELETON_CROWN"
  boundBoot: "mmoitem ARMOR TRAVELERS_BOOTS soulbound:100"
  gem: "mmoitem GEMS SPEED_GEM quest-item"
conditions:
  hasCrown: "hand crown"
actions:
  giveGem: "give gem:3"

Craft item: craftπŸ”—

When MMOItems is installed the craft objective also processes MMOItems "recipe-amounts" crafting and MMOItems station crafting. The amount is based on how many items have actually been crafted, not how often a specific recipe has been used! Therefore, a recipe that makes four items at once will let the objective progress by four steps.

Example
items:
  potion: "mmoitem HEALTH_POTION_RECIPE"
objectives:
  craftPotion: "craft potion 5 notify"

ConditionsπŸ”—

MMOCore class: mmoclassπŸ”—

Checks if a player has the given MMOCore class. You can check for any class that is not the default class by writing * instead of a class name. If a level has been specified the player needs to be on that level or higher to meet the condition. You can disable this behaviour by adding the equal argument.

Example
conditions:
  5: "mmoclass * 5"
  warrior: "mmoclass WARRIOR"
  mage5: "mmoclass MAGE 5"
  mage5Equal: "mmoclass MAGE 5 equal"

MMOCore attribute: mmoattributeπŸ”—

Checks if a player has the specified attribute on the given level or higher. You can disable this behaviour by adding the equal argument.

Example
conditions:
  strength2: "mmoclass mmoattribute strength 2"
  strength2Equal: "mmoclass mmoattribute strength 2 equal"

MMOCore profession: mmoprofessionπŸ”—

Checks if a player has the specified profession on the given level or higher. You can disable this behaviour by adding the equal argument.

Example
conditions:
  mining2: "mmoprofession mining 2"
  mining2Equal: "mmoprofession mining 2 equal"

MythicLib stat: mmostatπŸ”—

Checks these stats that combine all sorts of stats from MMOCore and MMOItems. The player needs to be on the specified level or higher in order to meet this condition. You can disable this behaviour by adding the equal argument.

Example
conditions:
  damageReduction3: "mmostat DAMAGE_REDUCTION 3"

ObjectivesπŸ”—

Break Special Blocks: mmocorebreakblockπŸ”—

This objective requires the player to break special blocks from MMOCore. Please note that you must use this objective over block if you are using MMOCore's custom mining system. All three different block types and an amount can be defined. You can also send notifications to the player by appending the notify keyword optionally with the notification interval after a colon.

This objective has three properties: amount, left and total. amount is the amount of blocks already broken, left is the amount of blocks still left to break and total is the amount of blocks initially required.

Example
objectives:
  block1: "mmocorebreakblock 5 block:1"      #A custom block's block ID
  stone: "mmocorebreakblock 64 block:STONE"  #vanilla material
  head: "mmocorebreakblock 1 block:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVy" #... this is a heads texture data

Change MMOCore class: mmochangeclassπŸ”—

This objective requires the player to change their class.

Example
objectives:
  selectAnyClass: "mmochangeclass actions:pickedClass"
  selectMage: "mmochangeclass class:MAGE actions:startMageIntroQuest"

MMOCore Profession levelup: mmoprofessionlevelupπŸ”—

This objective requires the player to level the given profession to the specified level. Use main to check for class level ups.

Example
objectives:
  mining10: "mmoprofessionlevelup MINING 10"

Upgrade Item: mmoitemupgradeπŸ”—

This objective tracks if a player upgrades the given item with an upgrade consumable.

Example
objectives:
  sword: "mmoitemupgrade SWORD FALCON_BLADE"

Apply gemstone: mmoitemapplygemπŸ”—

This objective is completed when the player applies the gemstone with the given gemstoneID to an item with the given itemType and itemID.

Example
objectives:
  sword: "mmoitemapplygem SWORD CUTLASS GEM_OF_ACCURACY"

Activate MythicLib skill: mmoskillπŸ”—

This objective requires the player to activate a MythicLib skill (e.g. with MMOItems or MMOCore).

Parameter Syntax Default Value Explanation
skill SKILL_ID The ID of the skill.
trigger name:level All trigger types. The types of triggers that can be used to activate the skill. If not specified, all triggers are allowed.
Example
objectives:
  triggerSkill: "mmoskill LIFE_ENDER actions:updateStatistics"
  castSkillWithMMOCore: "mmoskill DEEP_WOUND trigger:CAST actions:completeTutorial"
  itemSkill: "mmoskill DEEP_WOUND trigger:RIGHT_CLICK,LEFT_CLICK actions:giveReward"

ActionsπŸ”—

Give MMOCore class experience: mmoclassexperienceπŸ”—

Adds experience to the players class. The amount is a number. The level argument is optional and would convert the amount to levels instead of XP points.

Example
actions:
  150: "mmoclassexperience 150"
  level1: "mmoclassexperience 1 level"

Give MMOCore profession experience: mmoprofessionexperienceπŸ”—

Adds experience in the specified player profession. The amount is a number. The level argument is optional and would convert the amount to levels instead of XP points.

Example
actions:
  mining: "mmoprofessionexperience MINING 100"
  customProf: "mmoprofessionexperience CUSTOM_PROFESSION_NAME 1 level"

Give class points: mmocoreclasspointsπŸ”—

Gives the player class points. The amount is a number.

Example
actions:
  give1: "mmocoreclasspoints 1"

Give skill points: mmocoreskillpointsπŸ”—

Gives the player skill points. The amount is a number.

Example
actions:
  give10: "mmocoreskillpoints 10"

Give attribute points: mmocoreattributepointsπŸ”—

Gives the player attribute points. The amount is a number.

Example
actions:
  give2: "mmocoreattributepoints 2"

Give attribute reallocation points: mmocoreattributereallocationpointsπŸ”—

Gives the player attribute reallocation points. The amount is a number.

Example
actions:
  give1: "mmocoreattributereallocationpoints 1"

MythicMobsπŸ”—

Required MythicMobs version: 5.3.5 or above

Info

MythicMobs integration supports all BetonQuest NPC features.

ItemsπŸ”—

Mythic(Mobs) items are integrated to the BetonQuest Items system.

In addition, you can also add quest-item argument to tag them as "QuestItem".

Example
items:
  crown: "mythic KingsCrown"
  sword: "mythic SkeletonKingSword quest-item"
conditions:
  hasCrown: "armor crown"
actions:
  giveSword: "give sword"

ObjectivesπŸ”—

MobKill: mmobkillπŸ”—

You need to kill the specified amount of MythicMobs to complete this objective. You can add a notify keyword if you want to send a notification to players whenever the objective progresses.

Parameter Syntax Default Value Explanation
identifier strings Identifiers for mobs that must be killed, based on mode. Multiple mob identifiers must be comma separated.
mode mode:mode INTERNAL_NAME What of the mob should be checked. Either INTERNAL_NAME of the mob (as defined in the config) or FACTION.
amount amount:number 1 Amount of mobs required to kill.
minLevel minLevel:number Disabled Minimal level of mob to kill.
maxLevel maxLevel:number Disabled Maximal level of mob to kill.
neutralDeathRadiusAllPlayers neutralDeathRadiusAllPlayers:number Disabled Radius to count objective progress for each nearby player when the mob is killed by any non-player source.
deathRadiusAllPlayers deathRadiusAllPlayers:number Disabled Radius to count objective progress for each nearby player, no matter if it was killed by a non-player source or not. Disables the neutral death radius.
marked marked:text None Check for mark on mobs as used in mspawnmob action.

This objective has three properties: amount, left and total. amount is the amount of mythic mobs already killed, left is the amount of mythic mobs still needed to kill and total is the amount of mythic mobs initially required. mode gives the identification type.

Example
objectives:
  killKnight: mmobkill SkeletalKnight amount:2 actions:reward
  killSnails: mmobkill SnekBoss,SnailBoss,SunBoss amount:10 actions:reward
  snailFaction: mmobkill snail mode:faction amount:10 actions:reward
  killBoss: mmobkill SnekBoss amount:2 minlevel:4 maxlevel:6 actions:reward marked:DungeonBoss3
  killDevil: mmobkill dungeonDevil deathRadiusAllPlayers:30 actions:reward
  bandits: mmobkill bandit deathRadiusAllPlayers:30 mode:FACTION actions:spawnTrader

ConditionsπŸ”—

MythicMob distance: mythicmobdistanceπŸ”—

Check whether the player is near a specific MythicMobs entity. The first argument is the internal name of the mob (the one defined in MythicMobs' configuration). The second argument is the distance to check, measured in block lengths in a circular radius.

Example
conditions:
  nearKnight: "mythicmobdistance SkeletalKnight 7"

ActionsπŸ”—

Spawn MythicMob: mspawnmobπŸ”—

static

Parameter Syntax Default Value Explanation
location ULF The location to spawn the mob at.
name name:level MythicMobs mob name. A level must be specified after a colon.
amount Positive Number Amount of mobs to spawn.
target Keyword False Will make the mob target the player.
private Keyword Disabled Will hide the mob from all other players until restart. This does not hide particles or block sound from the mob. Also see notes below.
marked marked:text None Marks the mob. You can check for marked mobs in mmobkill objective.
Example
actions:
  spawnBoss: "mspawnmob 100;200;300;world MegaBoss:1 1 target"
  spawnKnights: "mspawnmob 100;200;300;world SkeletalKnight:3 5"
  spawnPrivateDevil: "mspawnmob 100;200;300;world Mephisto:1 5 target private marked:DungeonBoss3"

Private Argument

The private argument requires some MythicMob setup for optimal use. It's best to use the private argument in combination with the target argument so the mob does not attack players that cannot see it. Additionally, the mob should be configured to never change its AI target using MythicMobs.

Private & Target Arguments

The private and target arguments are ignored when the action is used in a static context like Schedules.

Cast Mythic Skill: mcastπŸ”—

Parameter Syntax Default Value Explanation
name Name Name of Skill to cast.
Example
actions:
  castPoison: "mcast AngrySludgePoison"

NexoπŸ”—

ItemsπŸ”—

Nexo usage is integrated to the Items system and thus used for actions and conditions.

In addition, you can also add quest-item argument to tag them as "QuestItem".

Example
items:
  forestTrident: "nexo forest_trident"
  tableLamp: "nexo table_lamp quest-item"
conditions:
  hasForestTrident: "hand forestTrident"
actions:
  giveTableLamp: "give tableLamp:3"

PacketEventsπŸ”—

ActionsπŸ”—

Freeze players: 'freeze'πŸ”—

This action allows you to freeze player for the given amount of ticks:

Example
actions:
  freezeMe: "freeze 100" #Freezes the player for 5 seconds

Chat InterceptorπŸ”—

Packet interceptor: packeteventsπŸ”—

This interceptor works on network package level and is thus much more reliable than the simple interceptor when working with advanced Chat plugins. It can also reprint the history of the chat after the conversation, so the conversation can not be seen in the chat history, see Plugin Configuration for more information.

PlaceholderAPIπŸ”—

If you have this plugin, BetonQuest will add a betonquest placeholder to it. You will be able to use the ph placeholder.

Placeholder: betonquestπŸ”—

You can even use BetonQuests conditions using the condition placeholder!
You can use all BetonQuest placeholders in any other plugin that supports PlaceholderAPI. This works using the %betonquest_package:placeholder% placeholder. The package: part is the name of a package. The placeholder part is just a BetonQuest placeholder without percentage characters, like point.beton.amount.

Testing your placeholder is easy using this command:
/papi parse <PlayerName> %betonquest_<PackageName>:<PlaceholderType>.<Property>%

Example
%betonquest_someGreatQuest:objective.killZombies.left%

Placeholder: phπŸ”—

persistent, static

You can also use placeholders from other plugins in BetonQuest. Simply insert a placeholder starting with ph, the second argument should be the placeholder without percentage characters.

Example
%ph.player_item_in_hand%

QuestsπŸ”—

Quests is another questing plugin, which offers very simple creation of quests. If you don't want to spend a lot of time to write advanced quests in BetonQuest but you need a specific thing from this plugin you can use Custom Action Reward or Custom Condition Requirement. Alternatively, if you have a lot of quests written in Quests, but want to integrate them with the conversation system, you can use quest action and quest condition.

Condition Requirement (Quests)πŸ”—

When adding requirements to a quest, choose "Custom requirement" and then select "BetonQuest condition". Now specify condition's name and it's package (like package>conditionName). Quests will check BetonQuest condition when starting the quest.

Action Reward (Quests)πŸ”—

When adding rewards to a quest or a stage, choose "Custom reward" and then select "BetonQuest action". Now specify action's name and it's package (like package>actionName). Quests will fire BetonQuest action when this reward will run.

ConditionsπŸ”—

Quest condition: questπŸ”—

This condition is met when the player has completed the specified quest. The first and only argument is the name of the quest. If it contains spaces you need to quote it.

Example
conditions:
  completedQuest: "quest stone_miner"

ActionsπŸ”—

Quest: questπŸ”—

This action will start the quest for the player. The first argument must be the name of the quest, as defined in name option in the quest. You can optionally add check-requirements argument if you want the action to respect this quest's requirements (otherwise the quest will be forced to be started).

Example
actions:
  startStoneMiner: "quest stone_miner check-requirements"

RedisChatπŸ”—

Chat InterceptorπŸ”—

RedisChat interceptor: redischatπŸ”—

This chat interceptor works directly with RedisChat to pause the chat during conversations.

ShopkeepersπŸ”—

ConditionsπŸ”—

Shop amount: shopamountπŸ”—

This condition checks if the player owns specified (or greater) amount of shops. It doesn't matter what type these shops are. The only argument is a number - minimum amount of shops.

Example
conditions:
  twoShops: "shopamount 2"

ActionsπŸ”—

Open shop window: shopkeeperπŸ”—

This action opens a trading window of a Villager. The only argument is the uniqueID of the shop. You can find it in Shopkeepers/saves.yml file, under uniqueID option.

Example
actions:
  openShop: "shopkeeper b687538e-14ce-4b77-ae9f-e83b12f0b929"

FabledπŸ”—

ConditionsπŸ”—

Fabled Class: fabledclassπŸ”—

This condition checks if the player has specified class or a child class of the specified one. The first argument is simply the name of a class. You can add exact argument if you want to check for that exact class, without checking child classes.

Example
conditions:
  isWarrior: "fabledclass warrior"

Fabled Level: fabledlevelπŸ”—

This condition checks if the player has specified or greater level than the specified class level. The first argument is class name, the second one is the required level.

Example
conditions:
  isWarrior3: "fabledlevel warrior 3"

SkriptπŸ”—

BetonQuest can also hook into Skript. Firstly, to avoid any confusion, I will reference to everything here by name of the plugin (Skript action is something else than BetonQuest action). Having Skript on your server will enable using BetonQuest actions and conditions in scripts, and also trigger them by BetonQuest action.

You can use cross-package paths using - between the packages. Example: player meets condition "default-Forest-Jack>Completed"

Skript event triggered by BetonQuest skript actionπŸ”—

This entry will describe two things: Skript event and BetonQuest action.

  1. Skript event - on [betonquest] action "id" - this is the line you use in your scripts to trigger the code. betonquest part is optional, and id is just some string, which must be equal to the one you specified in BetonQuest action.
  2. BetonQuest action - skript - this action will trigger the above Skript event in your scripts. The instruction string accepts only one argument, id of the event. It have to be the same as the one defined in Skript event for it to be triggered.

In your script

Example
on betonquest action "concrete":

In BetonQuest

Example
actions:
  fire_concrete_script: "skript concrete"

Skript conditionπŸ”—

You can check BetonQuest conditions in your scripts by using the syntax player meets [betonquest] condition "id". betonquest is optional, and id is the name of the condition, as defined in the conditions section.

In your script

Example
player meets condition "has_ore"

In BetonQuest

Example
conditions:
  has_ore: "item iron_ore:5"

Skript actionπŸ”—

You can also fire BetonQuest actions with scripts. The syntax for Skript effect is fire [betonquest] action "id" for player. Everything else works just like in condition above.

In your script

Example
fire action "give_emeralds" for player

In BetonQuest

Example
actions:
  give_emeralds: "give emerald:5"

TrainCartsπŸ”—

TrainCarts is a plugin that allows you to create trains with advanced features.

ConditionsπŸ”—

TrainCarts ride condition: traincartsrideπŸ”—

Checks if the player is riding a specific named train.

Example
conditions:
  onTrain: "traincartsride train1"

ObjectivesπŸ”—

TrainCarts location objective: traincartslocationπŸ”—

This objective requires the player to be at a specific location while sitting in a train. It works similarly to the location objective, but the player must be in a TrainCarts train to complete it.

Parameter Syntax Default Value Explanation
location x;y;z;world The Location the player has to pass whiles sitting in the train.
range range:double 1 The optional range around the location where the player must be.
entry entry Disabled The player must enter (go from outside to inside) the location to complete the objective.
exit exit Disabled The player must exit (go from inside to outside) the location to complete the objective.
name name:Train1 The optional Name of the Train.
Example
objectives:
  checkpoint1: "traincartslocation 100;60;100;world"
  train1: "traincartslocation name:Train1 100;60;100;world range:2"
  enter: "traincartslocation 100;60;100;world entry range:2"

TrainCarts ride objective: traincartsrideπŸ”—

This objective requires the player to ride a train for a specific time. The time starts after the player enters the train and stops when the player exits the train. The conditions are checked every time the player enters or leaves the train or completes the objective. If the conditions are not met, the time will not be counted.

Parameter Syntax Default Value Explanation
name name:Train1 The optional Name of the Train.
amount amount:20 0 The optional amount of time in seconds, the player has to ride a specific train.
Example
objectives:
  rideTrain: "traincartsride"
  rideTrain1: "traincartsride name:Train1"
  rideTrain20Seconds: "traincartsride name:Train1 amount:20"

TrainCarts ride objective: traincartsexitπŸ”—

This objective requires the player to exit a train.

Example
objectives:
  exitTrain: "traincartsexit"
  exitTrain1: "traincartsexit name:Train1"

VaultπŸ”—

ConditionsπŸ”—

Vault Money Condition: moneyπŸ”—

Checks if the player has the specified amount of money.

Example
conditions:
  hasMoney: "money 1"
  canAffordPlot: "money 10000"
  isRich: "money 1000000"

ActionsπŸ”—

Vault Money Action: moneyπŸ”—

Deposits, withdraws or multiplies money in the player's account.

Parameter Syntax Default Value Explanation
amount Number The amount of money to add or remove.
notify Keyword: notify Disabled Display a message to the player when their balance is changed.
multiply Keyword: multiply Disabled Multiplies the current balance with the amount instead simply adding it.
Example
actions:
  sellItem: "money +100"
  buyPlot: "money -10000"
  winLottery: "money 7 multiply notify"

Change Permission (Groups): permissionπŸ”—

Adds or removes a permission or a group.

Parameter Syntax Default Value Explanation
action add or remove Whether to add or remove the thing specified using the following arguments.
type perm or group Whether to use a permission or permission group.
name The name of the permission. The name of the permission or group to add.
world The name of the world. Global You can limit permissions to certain worlds only. If no world is set the permission will be set everywhere (global).
Example
actions:
  allowFly: "permission add perm essentials.fly"
  joinBandit: "permission add group bandit"
  leaveBandit: "permission remove group bandit"

PlaceholdersπŸ”—

Vault Money Placeholder: moneyπŸ”—

Use %money.amount% for showing the player's balance. Use %money.left:500% for showing the difference between the player's balance and the specified amount of money.

Example
actions:
  notifyBalance: "notify You have %money.amount%$!"
  notifyNotEnough: "notify You still need %money.left:10000%$ to buy this plot."

WorldEdit or FastAsyncWorldEditπŸ”—

ActionsπŸ”—

Paste schematic: pasteπŸ”—

persistent, static

This action will paste a schematic at the given location. The first argument is a location and the second one is the name of a schematic file. The file must be located in WorldEdit/schematics or FastAsyncWorldEdit/schematics and must have a name like some_building.schematic. If WorldEdit saves .schem schematic files, simply append .schem to the schematic name in the action's instruction.

The optional noair keyword can be added to ignore air blocks while pasting. You can also rotate the schematic by adding rotation:90 where 90 is the angle in degrees.

Example
actions:
  pasteCastle: "paste 100;200;300;world castle noair" #(1)!
  pasteTree: "paste 100;200;300;world tree.schem noair" #(2)!
  1. Pastes the schematic file castle.schematic at the location 100;200;300;world.
  2. Pastes the schematic file tree.schem at the location 100;200;300;world.

WorldGuardπŸ”—

ConditionsπŸ”—

NPC region: npcregionπŸ”—

persistent, static

This condition is met a NPC is inside a region.

Parameter Syntax Default Value Explanation
Npc Npc The ID of the NPC
Region Region Name The region where the NPC needs to be
Example
conditions:
  mayorAtSpawn: "npcregion mayor spawn"

Inside Region: regionπŸ”—

This condition is met when the player is inside the specified region.

Parameter Syntax Default Value Explanation
Region Region name The region where the player has to be
Example
conditions:
  inCastle: "region castle"

ObjectivesπŸ”—

Enter Region: regionπŸ”—

To complete this objective you need to be in a WorldGuard region with specified name.

Parameter Syntax Default Value Explanation
Region Region name The region where the player has to be
Entry entry Disabled The player needs to enter the region
Exit exit Disabled The player needs to leave the region
Example
objectives:
  deathZone: "region deathZone entry actions:kill"

ZNPCsPlusπŸ”—

Required ZNPCsPlus version: 2.1.0-SNAPSHOT or above

If you have this plugin you can use its NPCs. It is a lightweight packet based plugin.

Info

ZNPCsPlus integration supports all BetonQuest NPC features.