插件手册:betonquest:关联插件

关联插件 Compatibility

(版本:2020-02-15 翻译:kjiang 原文链接

BetonQuest can hook into other plugins to extend its functionality. Currently there are 23 plugins: Citizens, Vault, MythicMobs, McMMO, Skript, WorldGuard, WorldEdit, EffectLib, PlayerPoints, Heroes, Magic, Denizen, SkillAPI, Quests, Shopkeepers, PlaceholderAPI, HolographicDisplays, RacesAndClasses, LegendQuest, BetonLangAPI, BountifulAPI, ProtocolLib, JobsReborn.

http://dev.bukkit.org/bukkit-plugins/citizens/

If you have this plugin you can use it's NPCs for conversations. I highly recommend you installing it, these NPCs are way more immersive. Having Citizens also allows you to use NPCKill objective.

_Notice: When you use Citizens, in main.yml you need to specify the ID of the NPC instead of the name!_

NPC Kill objective requires the player to kill an NPC with the given ID. You can also define how many times an NPC has to be killed. Right after objective's name there must be na ID of the NPC. You can also add an amount by amount:.

Example: npckill 16 amount:3 events:reward

The player has to right-click on the NPC with specified ID. It can also optionally cancel the action, so the conversation won't start. The first argument is number (ID of the NPC), and the second is optional cancel.

Example: npcinteract 3 cancel conditions:sneak events:steal

The player has to enter/leave a circle with the given radius around the NPC to complete this objective. First argument is the ID of the NPC, second one is either enter or leave and the third one is the range.

Example: npcrange 3 enter 20 events:master_inRange

This event 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. The first argument in this event is ID of the NPC to move. Second one is a location in a standard format (like in teleport event). You can also specify multiple locations separated by colons to let the npc follow a path of locations. You can also specify additional arguments: block will block the NPC so you won't be able to start a conversation with him while he is moving, wait: is a number of tick the NPC will wait at its destination before firing events, done: is a list of events fired after reaching the destination, fail: is a list of events fired if this event fails. Move event can fail if the NPC is already moving for another player.

Example: movenpc 121 100;200;300;world,105;200;280;world block wait:20 done:msg_were_here,give_reward fail:msg_cant_go,give_reward

This condition will return true if the player is closer to the NPC with the given ID than the given distance. The NPCs ID is the first argument, the distance is the second. If the npc is despawned the condition will return false.

Example: npcdistance 16 22

This condition will return true if a npc is close to a location. First argument is the id of the NPC, second the location and third the maximum distance to the location that the npc is allowed to have.

Example: npclocation 16 4.0;14.0;-20.0;world 22

_This condition also requires WorldGuard to work._

This condition will return true if a npc is inside a region. First argument is the id of the npc second is the name of the region.

Example: npcregion 16 spawn

http://dev.bukkit.org/bukkit-plugins/vault/

By installing Vault you enable Permission event and Money condition/event.

Adds or removes a permission or a group. First argument is add or remove. It's self-explanatory. Second is perm or group. It also shouldn't be hard to figure out. Next thing is actual string you want to add/remove. At the end you can also specify world in which you want these permissions. If the world name is ommited then permission/group will be global.

Example: permission remove group bandit world_nether

Deposits, withdraws or multiplies money on player's account. There is only one argument, amount of money to modify. It can be positive, negative or start with an asterisk for multiplication.

Example: money -100

Checks if the player has specified amount of money. You can specify only one argument, amount integer. It cannot be negative!

Example: money 500

There is only one argument in this variable, amount for showing money amount or left: followed by a number for showing the difference between it and amount of money.

Example: %money.left:500%

http://dev.bukkit.org/bukkit-plugins/mythicmobs/

Having MythicMobs allows you to use MythicMobs MobKill objective and MythicMobs SpawnMob event.

To complete this objective you need to kill specified amount of MythicMobs. The first argument must be the mob's internal name (the one defined in MythicMobs' configuration). You can optionally add amount: argument to specify how many of these mobs the player needs to kill. You can also add “notify” keyword if you want to display to players the amount of mobs left to kill.

Example: mmobkill SkeletalKnight amount:2 events:reward

Spawn specified amount of MythicMobs at given location. The first argument is a location defined like 100;200;300;world. Second is MythicMobs internal name (the one defined in MythicMobs' configuration) followed by a colon and a level. Third one is amount and it's required!

Example: mspawnmob 100;200;300;world SkeletalKnight:1 5

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: mcmmolevel woodcutting 50

This event 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: mcmmoexp swords 1500

http://dev.bukkit.org/bukkit-plugins/skript/

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

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

1. Skript event - on [betonquest] event “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 event. 2. BetonQuest event - skript - this event 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.

Example: _in your script:_ on betonquest event “concrete”: _in events.yml:_ fire_concrete_script: skript concrete

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 _conditions.yml_.

Example: _in your script:_ player meets condition “has_ore” _in conditions.yml:_ has_ore: item iron_ore:5

You can also fire BetonQuest events with scripts. The syntax for Skript effect is fire [betonquest] event “id” for player. Everything else works just like in condition above.

Example: _in your script:_ fire event “give_emeralds” for player _in events.yml:_ give_emeralds: give emerald:5

To complete this objective you need to enter WorldGuard region with specified name. The only argument in instruction string is name of the region.

Example: region beton events:kill

This condition is met when the player is inside the specified region. The only argument is the name of the region.

Example: region beton

This event will paste a schematic at the given location. The first argument is a location and the second one is the name of schematic file. The file must be located in WorldEdit/schematics and have a name like some_building.schematic. An optional noair can be added to paste ignoring air blocks.

Example: paste 100;200;300;world some_building noair

http://dev.bukkit.org/bukkit-plugins/effectlib/

If you install this plugin on your server you will be able to set a particle effect on NPCs with conversations and use particle event.

You can control the behaviour of particles around the NPCs in _custom.yml_ file, in npc_effects section. Each effect is defined as a separate subsection and consists of EffectLib options (described on the EffectLib page) and several BetonQuest settings. npcs is a list of all NPCs on which this effect can be displayed. conditions is a list of conditions the player has to meet in order to see the effect. BetonQuest will find the first effect which can be displayed and show it to the player. interval controls how often the effect is displayed (in ticks). The effect will be fired from the exact location of the NPC, upwards.

This event will load an effect defined in effects section in _custom.yml_ file 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 event.

Example in _custom.yml_:

  effects:
    beton:
      class: HelixEffect
      iterations: 100
      particle: smoke
      helixes: 5
      circles: 20
      grow: 3
      radius: 30

Example: particle beton loc:100;200;300;world;180;-90 private

This event simply adds, removes or multiplies points in the PlayerPoints plugin. The only argument is a number, it can be positive, negative or prefixed with an asterisk for multiplication.

Example: playerpoints *2

This condition simply checks if the player has specified amount of points in the PlayerPoints plugin. The only argument is a number.

Example: playerpoints 100

http://dev.bukkit.org/bukkit-plugins/heroes/

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

This event 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: heroesexp primary 1000

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: heroesclass mastered warrior

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

Example: heroesskill charge

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. You can also use optional spells: argument, followed by a list of spells separated with a comma. Each spell in this list can have defined minimal level required, after a colon.

Example: wand hand name:master spells:flare,missile:2

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

Example: script beton

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: skillapiclass warrior

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

Example: skillapilevel warrior 3

https://www.spigotmc.org/resources/quests.3711/

Quests 是另一个任务制作插件,提供轻量级的任务制作。如果你只是想制作一个简单的任务而不需要大量复杂的高级功能,可以使用BetonQuest提供的接口与Quests对接。比如你可以在Quests中,通过选择“自定义奖励Custom Event Reward”或“自定义达成条件Custom Condition Requirement”,来使用在BetonQuest编写的事件Events和条件Conditions。你也可以将已经编写好的Quests任务对接到BetonQuest,BQ提供的quest事件,和quest条件可以很方便地将Quests任务添加到对话脚本中。

当你在Quests的设计中需要将BQ奖励添加到任务或任务阶段时,选择“自定义奖励 Custom reward”,然后选择“BetonQuest事件 BetonQuest event”,接下来输入具体的BetonQuest事件名称,注意包名字要写全(比如“城镇A-村庄B.任务C奖励1”)。当Quests任务达成时,这是事件会被触发。

译注:这个事件不仅可以用于奖励,你也可以用这个机制去触发其它事件,比如让世界下雨(BQ的weather事件)

在Quests添加条件的时候,选择“自定义要求Custom requirement”,然后选择“BetonQuest条件 BetonQuest condition”,然后输入条件名称(注意包名字要有)即可。 Quests在启动该任务之前会判断这个BetonQuest条件是否满足。

这个事件被触发时会启动一个新的Quests任务(不是BQ任务)。

第一个参数是Quests任务名称,具体请参照Quests的name选项。如果任务名中有空格,请用下划线_代替。

第二个可选参数是check-requirements(“检查任务要求”)。如果没有这个参数,Quests任务会无视所有前提条件直接启动。

例子: quest stone_miner check-requirements

用来在对话脚本中判断玩家是否已经完成了某个Quests任务。

唯一的参数是Quests的任务名称,具体请参照Quests的name选项。如果任务名中有空格,请用下划线_代替。

例子: quest stone_miner

This event 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: shopkeeper b687538e-14ce-4b77-ae9f-e83b12f0b929

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: shopamount 2

https://www.spigotmc.org/resources/placeholderapi.6245/

If you have this plugin, BetonQuest will add a betonquest placeholder to it and you will be able to use ph variable in your conversations.

In any other plugin which uses PlaceholderAPI you can use BetonQuest variables with %betonquest_package:variable% placeholder. The package: part is the name of a package. If you skip this, the plugin will assume you're using that variable in default package. The variable part is just a BetonQuest variable without percentage characters, like point.beton.amount.

Example: %betonquest_someGreatQuest:objective.killZombies.left%

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

Example: %ph.player_item_in_hand%

http://dev.bukkit.org/bukkit-plugins/holographic-displays/

Installing this plugin will enable you to create hidden holograms, which will be shown to players only if they meet specified conditions. Note that you need to have ProtocolLib installed in order to hide holograms from certain players.

In order to create a hologram, you have to add holograms section in your _custom.yml_ file. Add a node named as your hologram to this section and define lines, conditions and location subnodes. The fist one should be a list of texts - these will be the lines of a hologram. Color codes are supported. Second is a list of conditions separated by commas. Third is a location in a standard format, like in teleport event. An example of such hologram definition:

  holograms:
    beton:
      lines:
      - '&bThis is Beton.'
      - 'item:MAP'
      - '&eBeton is strong.'
      location: 100;200;300;world
      conditions: has_some_quest, !finished_some_quest

A line can also represent a floating item. To do so enter the line as 'item:MATERIAL'. It will be replaced with the MATERIAL defined. In the above example, a floating map will be seen between two lines of text.

The holograms are updated every 10 seconds. If you want to make it faster, add hologram_update_interval option in _config.yml_ file and set it to a number of ticks you want to pass between updates (one second is 20 ticks). Don't set it to 0 or negative numbers, it will result in an error.

If Citizens is also installed then you can have holograms configured relative to an npc. Add the following to _custom.yml_.

  npc_holograms:
    # How often to check conditions
    check_interval: 100
    # Disable npc_holograms
    disabled: false
    # Hologram Settings
    default:
      # Lines in hologram
      lines:
        - !
      # Vector offset to NPC position to place hologram
      vector: 0;3;0
      # Conditions to display hologram
      conditions: has_some_quest, !finished_some_quest
      # NPC's to apply these settings to. If blank, applies by default
      npcs:
        - 0
        - 22

Item lines are also supported here.

http://dev.bukkit.org/bukkit-plugins/racesandclasses/

Another race/class/skill plugin. By installing RacesAndClasses you gain access to these events, conditions and variables:

This conditions checks if the player has specified class. You can use none to check if he does not have any class.

Example: racclass warrior

This event sets player's class to the specified one.

Example: racclass magician

This variable resolves to class name.

Example: %racclass%

This condition checks if the player has specified race. You can use none to check if he does not have any race.

Example: racrace Elv

This event sets player's race to the specified one.

Example: racrace Orc

This variable resolves to race name.

Example: %racrace%

This condition is met if the player has a level equal or greater than specified.

Example: raclevel 5

This event adds (or removes if negative) levels.

Example: raclevel -2

This variable has 2 possible arguments: amount will resolve to player's level and left: will display how many levels the player lacks to the specified number.

Example: %raclevel.left:5%

This condition is met if the player has experience equal or greater than specified.

Example: racexo 600

This event adds (or removes if negative) experience.

Example: racexo 100

This variable has 2 possible arguments: amount will resolve to player's experience and left: will display how much experience the player lacks to the specified number.

Example: %racexo:amount%

This condition is met if the player has mana equal or greater than specified.

Example: racmana 1

This event adds (or removes if negative) mana. You can use refill instead of a number to simply set mana to player's maximum.

Example: racmana refill

This condition checks if the player has the specified trait.

Example: ractrait SwordDamageIncreaseTrait

Checks if the player has specified class. It can also check subclass if you add –subclass argument.

Example: lqclass Cleric

Checks if the player has specified race.

Example: lqrace Dwarf

Checks player's attributes. The first argument is attribute (STR, CON, DEX, INT, WIS, CHR) and the second argument is a number - minimal required level of the attribute.

Example: lqattribute INT 10

Checks if the player has specified amount of karma. The only argument is a number - minimal amount of karma required.

Example: lqkarma 20

Resolves to player's class.

Example: %lqclass%

Resolves to player's race.

Example: %lqrace%

Resolves to player's attribute. The first argument is name of the attribute (like in lqattribute condition), second one is either amount or left: followed by a number. First of these will simply display attribute level and second will display the difference between attribute level and the number.

Example: %lqattribute.str.left:13

Resolves to player's karma. The only argument here is either amount or left: followed by a number. First of these will simply display karma amount and second will display the difference between karma amount and the number.

Example: %lqkarma.amount%

https://github.com/Co0sh/BetonLangAPI

When BetonLangAPI is installed on the server BetonQuest will integrate its translation system with that plugin. Changing the language with _/lang_ command or language event will change the language globally, not only in one of those plugins. The _/questlang_ command will not modify BetonLangAPI language though!

BountifulAPI enables you to use title event without spamming the console with /title command output. The syntax is exactly the same as in regular title event described in _Events List_.

Example: title subtitle 0;0;0 {en} Lobby joined! {pl} Dołączono do lobby!

Having ProtocolLib installed will let you hide Citizens NPCs if specified conditions are met. You can do that by adding hide_npcs section to _custom.yml_ file in your package. There you can assign conditions to specific NPC IDs:

hide_npcs: 41: killedAlready,questStarted 127: '!questStarted'

A conversation IO that makes use of a chat menu system. A video of it in action can be seen here.

Customize how it looks by adding the following lines to custom.yml:

YAML menu_conv_io: line_length: 60 npc_wrap: '&l &r' npc_text: '&l &r&f{npc_text}' npc_text_reset: '&f' option_wrap: '&r&l &l &l &l &r' option_text: '&l &l &l &l &r&8[ &b{option_text}&8 ]' option_text_reset: '&b' option_selected: '&l &r &r&7»&r &8[ &f&n{option_text}&8 ]' option_selected_reset: '&f' option_selected_wrap: '&r&l &l &l &l &r&f&n' control_select: jump,left_click control_cancel: sneak control_move: scroll,move npc_name_type: chat_prefix npc_name_align: center npc_name_format: &e{npc_name}&r

Where:

  • line_length - Maximum size of a line till its wrapped
  • npc_wrap - What text to prefix each new line in the NPC text that wraps
  • npc_text - How to write the NPC text. Replaces {1} with the npcs text
  • npc_text_reset - When a color reset is found, what to replace it with
  • option_wrap - What text to prefix each new line in an option that wraps
  • option_text - How to write an option. Replaces {1} with the option text
  • option_text_reset - When a color reset is found, what to replace it with
  • option_selected - How to write a selected option. Replaces {1} with the option text
  • option_selected_reset - When a color reset is found, what to replace it with
  • option_selected_wrap - What text to prefix each new line in a selected option that wraps
  • control_select - Space separated actions to select. Can be any of 'jump', 'left_click', 'sneak'
  • control_cancel - Space separated actions to select. Can be any of 'jump', 'left_click', 'sneak'
  • control_move - Space separated actions to move selection. Can be any of 'move', 'scroll'
  • npc_name_type - Type of NPC name display. Can be one of: 'none', 'chat'
  • npc_name_align - For npc name type of 'chat', how to align name. One of: 'left', 'right', 'center'
  • npc_name_format - How to format the npc name

Variables:

  • {npc_text} - The text the NPC says
  • {option_text} - The option text
  • {npc_name} - The name of the NPC

https://www.spigotmc.org/resources/jobs-reborn.4216/

Requires adding the following to _config.yml_: hook: jobs: 'true'

Returns true if the player has this job

Example: nujobs_hasjob Woodcutter

Returns true if the player can level up

Returns true if the job is at the maximum slots

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

Example: nujobs_joblevel Woodcutter 5 10

Gives the player experience

Increases the player level by amount.

Decreases the players level by amount.

Joins the player to job.

Removes the player from job.

Set the player to level.

Triggers when player joins job.

Triggers when player leaves job.

NOTE: This is not triggered by '/jobs leaveall'

Triggers when player levels up.

Triggers when player makes {amount} of money from jobs.

  • 插件手册/betonquest/关联插件.txt
  • 最后更改: 2020/02/15 20:17
  • 小小k酱