• 因近日遭受攻击,百科现已限制新用户的编辑权限,一段时间后成为自动确认用户方可编辑。

GuillaumeVDN的插件文档/QuestCreator/详细特性

From Minecraft插件百科
Revision as of 14:16, 28 November 2020 by Qsefthuopq (talk | contribs) (特殊类型)
Jump to: navigation, search
GuillaumeVDN的插件文档
页面

GuillaumeVDN的插件文档 · 迁移

所有插件都有的常见内容

配置 · 杂项 · 关联

QuestCreator

基础内容 · 示例 · 详细特性 · 高级内容 · 关联

任务模型

全部模型设置

显示

display_name: '&a任务显示名'
 
 description: |
   &7任务描述
   &7任务描述第二行
 
 description_placeholder: |
   &7多行占位符
   &7可和PlaceholderAPI一同使用(见通用变量)
 
 information_message: >
   &a当玩家点击任务物品而未开始任务时发送的消息
 
 progress_notify:
   # …… 每隔一段时间发送给玩家的进度提醒(见通用配置/提醒)
 
 progress_notify_scoreboard: true  # 允许任务显示在计分板上
 
 # 显示优先度
 # 优先度从低到高排序。如果A的优先度为1,B的优先度为2,则A的优先度更高。
 # 你可以用这个来决定任务显示在actionbar、计分板等地方的优先度。
 # 插件会根据优先度分类任务。如果优先度相同,则优先显示进度最新的任务。
 # 这是可选设置,没有设置优先度的任务低于设置了优先度的任务。
 # 请注意GUI物品不会影响这个优先度
 display_priority: 1

GUI物品

任务可以显示在GUI中。你可以给每个任务模型设定物品列表(最终取决于其当前状态)。

要记住,不同的任务状态会有不同的控制选项和lore。比如停止或开始任务以下是可配置的消息。

status_items:
   AVAILABLE:
     # 可开始任务的物品图标
   PROGRESS:
     # 任务进行中的物品图标
   COOLDOWN:
     # 任务冷却中的物品图标
   UNAVAILABLE:
     # 无法开始任务的物品图标
   COMPLETED:
     # 任务完成的物品图标(达到最大完成次数时显示)
 
 all_status_items:
   # 全部状态都显示为同一物品
   # 如果一个状态没有物品,则插件会自动使用一个物品

全部状态的占位符:

  • {quest}:任务名
  • {description}:任务描述
  • {controls}:根据玩家能做什么显示的动态控制列表;如果没有控制,则该占位符为空
  • {completions}:该任务的完成文本;如果任务未完成,则该占位符为空
  • {last_completion}:该任务的上次完成文本;如果未完成过任务,则该占位符为空
  • {cooldown}:该任务的冷却文本;如果没有任务冷却,则该占位符为空
  • {detailed_progression}:该任务的详细进度;如果任务未激活,则该占位符为空
  • {detailed_errors}:显示玩家无法开始的原因的文本;如果如果不是“无法使用”状态,则该占位符为空

PROGRESS状态的占位符:

  • {players}:多个玩家名;如果不是多人任务,则该占位符为空
  • 你也可以使用上面列出的任务占位符。

限制

permission_start_restriction: questcreator.quest.my_quest  # 开始任务所需权限
 
 conditions_start_restriction:
   # …… 开始任务所需条件(见条件)
 
 world_restriction:  # 世界限制
   whitelist: |
     list_of_worlds
     to_allow
   blacklist: |
     list_of_worlds
     to_deny
 
 command_restriction:  # 任务进行时无法使用的指令
   whitelist: |
     /list of commands
     /to allow
   blacklist: |
     /list of commands
     /to deny

完成/限时/冷却

completion:
   max_completions: 10  # 该任务的最大可完成次数
   apply_actor_restriction:
     # …… 只对一些身份的玩家将任务标记为已完成 (见“杂项/身份”)
   notify:
     SUCCESS:
       # …… 任务完成时发送的提醒(见“通用配置/提醒”)
     # …… 键:SUCCESS、FAIL、CANCEL
   notify_coop:
     SUCCESS:
       # …… 如果完成时发送的提醒(多人任务)
     # …… 键:SUCCESS、FAIL、CANCEL
 
 time_limit:
   duration: 1 HOUR  # 任务限时
   reminder:
     # …… 发送提醒玩家剩余时间的消息(见“通用配置/提醒”)
     # - 显示剩余时间的占位符:{time}
   fail_goto: QUEST_FAIL  # a goto to apply when the time is over
 
 cooldown:
   duration: 12 HOUR
   end_types: [SUCCESS]  # 只对一些结束类型使用冷却;值:SUCCESS、FAIL、CANCEL、COOP_LEAVE
   apply_actor_restriction:
     # …… 只对一些身份的玩家设置冷却(见“杂项/身份”)

同时进行任务数/玩家/组队

max_concurrent_instances: 5  # 任务最大同时进行数
 
 # 如果已达任务同时进行数上限,则将玩家加入到队列中
 max_concurrent_instances_queue: true
 
 # 玩家数上下限(包括队长)
 min_players: 1
 max_players: 3  # 设置为大于1的值则允许多人任务
 
 # 允许组队玩家离开任务,该数值需小于最大玩家数
 # 如果组队人数低于该值,则剩下的组队玩家无法离开任务
 min_active_players: 2
 
 allow_leader_stop: true  # 允许队长停止任务
 
 # 队长掉线时的处理方式
 # 设置为false则队长掉线后队员仍能继续进行任务
 # 如果你在任务中使用了变量则不推荐设置为false
 dispose_on_leader_disconnect: true
 
 # 允许队员解析任务设置
 # 如果你的设置包含变量,我建议开启该选项
 only_leader_parsing: true
 
 notify_coop_player_leave:
   # …… 组队玩家离开任务时发送的提醒

保存

saving: ENABLED

值 :

  • ENABLED:保存任务到磁盘/数据库中
  • PLUGIN_ACTIVE:只要加载了插件,任务就会持续活跃
  • PLAYER_ONLINE:只要加载了插件且玩家在线,任务就会持续活跃

变量

# 默认模型变量值
 model_variables:
   my_variable: 默认值

激活器

# 该任务的激活器(详见“任务激活器”)
 activators: |
   first_activator
   second_activator
 
 # 在正式开始任务前发送的对话(只对物理激活器有效)
 # 玩家每激活一次激活器就发送一条对话
 # 发送完全部对话后,玩家可以打开开始任务的确认GUI
 activators_dialog: |
   &7我找你有事!
   &7你想要开始任务吗?
 
 # 自动向范围内的玩家发送第一条对话
 activators_dialog_auto_start_distance: 3.5
 
 # 在特定条件下重置对话
 activators_dialog_reset:
   reset_delay: 30 SECOND  # 在一段时间后重置
   reset_distance: 5  # 在玩家走远后重置
   reset_notify:
     # …… 对话重置时发送的提醒

分支/目标

# 任务的分支
 branches:
   branch_1:
     # …… 见任务分支
   branch_2:
     # …… 见任务分支
 
 # 对一些结束类型的任务执行目标
 end_objects:
   SUCCESS:
     # …… 任务完成时执行的目标列表
   FAIL:
     # …… 任务失败时执行的目标列表
   CANCEL:
     # …… 任务取消时执行的目标列表
   COOP_LEAVE:
     # …… 多人任务取消时执行的目标列表
 
 # 对离线的组队玩家执行结束目标(在玩家重新登录后执行):
 end_objects_for_offline_players: true

任务分支

分支设置

starts_directly: true  # 在任务开始时自动开始分支
 
 starts_at: OBJECT_1  # 分支开始时的目标
 
 # 该分支的目标列表
 objects:
   OBJECT_1:
     # …… 见任务目标
   OBJECT_2:
     # …… 见任务目标

分支类型

默认分支类型:

type: NONE  # 这是默认类型,你可以不填该选项
 
 display_name: >  # 分支显示名(可选)
   &a分支

隐藏分支,该分支不会显示在进度中:

type: SECRET

独立分支

独立分支对多人任务有实际意义。如果你用独立分支来制作单人任务,那么它的效果就和普通分支基本一样,不过整体比较混乱,所以请不要这么做。

独立分支是针对任务中的每个玩家的。所以,玩家GuillaumeVDN可以有一个运行中的独立分支my_branch,而玩家Notch可以在这个分支内有不同的状态,甚至未激活该分支。

独立分支主要用来执行作用于单个玩家的效果,或者让任务中的玩家有不同的进度。你可以在SERVER_ACTIONS目标中手动触发,也可以在每个事件目标中触发。

比如:

branches:
 
   TRIGGER_BRANCH:
     starts_directly: true
     starts_at: TRIGGER
     objects:
       TRIGGER:
         type: PLAYER_CONNECT
         goto_individual_branches: [INDIVIDUAL_BRANCH]  # 对重连的玩家开始独立分支
         goto: OBJECT TRIGGER  # 循环激活器以使其常时有效
 
   INDIVIDUAL_BRANCH:
     starts_directly: false
     starts_at: EFFECT
     objects:
       EFFECT:
         type: SERVER_PLAYER_EFFECTS_GIVE
         start_notify:
           message: >
             &a欢迎回来{player}&a!这是你的速度 II。
         effects:
           a:
             type: SPEED
             amplifier: 1
             duration: 1 MINUTE
         # 无goto,该分支会立即停止
         # 只有第一个重连的玩家会获得速度 II的效果。

需要注意的是,从独立分支调用的goto将被用于独立分支。例如,如果你的分支MY_BRANCH的goto是从一个独立分支中调用的,那么该分支将为同一个人开始,而不是整个任务。

任务激活器

激活器位于/quest_activators/

激活器设置

和目标或模型不同的是,激活器没有通用设置。其全部设置与其类型有关,唯一的通用设置就是其类型。

type: AUTO  # 示例

激活器类型

NONE|无

没有类型的激活器(内部使用;该激活器无法开始任务)。

AUTO|自动

每隔一段时间自动开始任务。

type: AUTO
delay: 15 SECOND  # 检测延迟

POSITION|位置

每当玩家匹配特定位置时自动开始任务。

type: POSITION
position:
  # …… 开始任务所需匹配的位置(见“通用配置/位置”)
delay: 15 SECOND  # 检测延迟

物理激活器

物理激活器也有通用设置。

显示设置

对于每个激活器,你可以根据激活器的当前状态指定一个粒子脚本列表。

particles:
  AVAILABLE: script_id  # 开始任务时执行的脚本
  PROGRESS: script_id  # 任务活跃时执行的脚本
  COOLDOWN: script_id  # 任务冷却中执行的脚本
  UNAVAILABLE: script_id  # 任务无法开始时执行的脚本
  COMPLETED: script_id  # 任务完成时执行的脚本(达到完成次数上限)

particles_location:
  # …… 基于激活器位置的位置适配器。(见通用配置/相对位置)

使用激活器的任务会根据任务状态进行分类。比如如果有一个可进行的任务和一个冷却中的任务,则粒子脚本会为可进行任务显示粒子效果。

交互设置

interaction_clicks: [LEFT_CLICK,RIGHT_CLICK]  # 触发交互所需点击类型
                                              # 一些激活器只有右击有效(特别是NPC激活器)

sneak_click_cancel: true  # 允许通过潜行与NPC交互来取消任务

GUI设置

custom_gui: gui_id  # 将已配置GUI链接至该激活器,而非根据当前激活器状态生成GUI

gui_name: >  # 激活器的GUI名称
  &a激活器
gui_type: CHEST_6_ROW  # 激活器GUI类型(见通用配置/GUI类型)

gui_show_status: [AVAILABLE,PROGRESS]  # 激活器GUI内可用的状态(留空则可用于全部状态);值:AVAILABLE、PROGRESS、COOLDOWN、UNAVAILABLE、COMPLETED

required_gui_quests: 5  # 只在有至少X个可进行的任务时可打开GUI

POSITIONS_INTERACT|位置交互

任务会在玩家与特定位置的方块交互时自动开始。

type: POSITIONS_INTERACT
positions:
  # …… 开始任务所需匹配的位置

ENTITIES|实体

任务会在玩家与特定实体交互时自动开始。

type: ENTITIES

entity_types: [CREEPER]  # 允许的实体类型(留空则允许全部);值:https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html

entity_names: []  # 允许的实体自定义名称(留空则允许全部)

entity_colors: []  # 允许的实体颜色(留空则允许全部)

任务池

任务池位于 /quest_pools/

设置

display_name: My pool  # 任务池显示名

time_frames:
  a:
    # …… 见“通用配置/时间范围”
  b:
    # …… 见“通用配置/时间范围”

quests:  # 首次处理
  quest_id_1:
    #任务配置(见下方任务配置部分)
  quest_id_2:
    #任务配置(见下方任务配置部分)

quest_groups:  # 二次处理
  group_id_1:
    # 任务组配置(见下方)
  group_id_2:
    # 任务组配置(见下方)

order: RANDOM  # 遵循任务组的处理顺序或随机选取;值:IN_ORDER|顺序、RANDOM|随机选取

amount: 2  # 在每个时间段内,该任务池将为多少个任务或任务组提供任务券。
           # 每个获得券的任务会降低1点该值
           # 每个至少有一个任务的组获得券会降低1点该值

amount_tolerance: COUNT_STARTED  # 从要给的券数中减去(或不减去)活跃的任务/组的数量。
                                 # 值:COUNT_STARTED、DONT_COUNT_STARTED

rewards:
  a:
    # 奖励配置(见下方奖励配置部分)
  b:
    # 奖励配置(见下方奖励配置部分)

任务配置

process_conditions:
  # …… 处理该池所需条件

pre_reset_token: true  # 在选取任务前重置该任务的券数
pre_stop: true  # 在选取任务前停止该任务
pre_reset_history: true  # 在选取任务前重置任务历史

selected_reset_token: true  # 如果选取该任务则重置任务券
selected_stop: true  # 如果选取该任务则停止任务
selected_reset_history: true  # 如果选取该任务则重置任务历史

min_tokens: 1  # 随机给予券数下限
max_tokens: 2  # 随机给予券数上限

refund_token_on_end_types: [CANCEL]  # 如果任务以特定类型结束则退回任务券;值:SUCCESS|成功、FAIL|失败、CANCEL|取消、COOP_LEAVE|多人任务离开

池组设置

process_conditions:
  # …… 处理该池所需遵循的条件(详见“条件”)

pre_reset_token: true  # 在选取任务前重置该任务的券数
pre_stop: true  # 在选取任务前停止该任务
pre_reset_history: true  # 在选取任务前重置任务历史

selected_reset_token: true  # 如果选取该任务则重置任务券
selected_stop: true  # 如果选取该任务则停止任务
selected_reset_history: true  # 如果选取该任务则重置任务历史

amount: 1  # 选取该组时给予券的任务数

min_tokens: 1  # 选取该组时随机给予的券数下限
max_tokens: 2  # 选取该组时随机给予的券数上限

refund_token_on_end_types: [CANCEL]  # 如果任务以特定类型结束则退回任务券;值:SUCCESS|成功、FAIL|失败、CANCEL|取消、COOP_LEAVE|多人任务离开

奖励配置

你可以给玩在一段时间内完成任务池的玩家添加奖励。更具体地说,一个任务池将被视为“已完成”,当玩家完成该池中的全部任务且池中没有更多有券的任务时,将会获得奖励。

奖励以任务目标的形式发放。只有时间驱动型目标才能发放奖励,而时间驱动型目标主要是服务器目标。

奖励列表内的每个目标如果符合池的特定连续完成数,就可以专一执行。当玩家在一个时间范围内完成任务池时会增加一次连续完成次数。当玩家仍有任务券完成池中任务而插件必须重处理任务时,连续完成数会重置为0。

object:
  # …… 执行的目标(见“任务目标”)

min_streak: 1  # 执行目标所需最低连续完成数
max_streak: 5  # 最高连续完成数:如果连续完成数大于该值则不会执行目标

任务组

你可以创建使用一些属性的任务组。任务组位于/quest_groups/

分组设置

models: [quest_1,quest_2]  # 组内的任务

max_concurrent: 1  # 可同时进行组内的任务数

execution_order: true  # 需要玩家按顺序完成任务

Goto|前往类型

普通:

  • OBJECT <同一分支的目标>:设置当前分支的目标(可以是同一目标)
  • BRANCH <分支id>:停止当前分支并开始其它分支

任务结束:

  • QUEST_SUCCESS:停止任务并标记为成功完成
  • QUEST_SUCCESS_THEN_START:停止任务并标记为成功完成,然后开始其它任务
  • QUEST_SUCCESS_THEN_START_BYPASS:停止任务并标记为成功完成,然后开始其它任务(忽略任务开始条件限制)
  • QUEST_FAIL:停止任务并标记为任务失败
  • QUEST_FAIL_THEN_START:停止任务并标记为任务失败,然后开始其它任务
  • QUEST_FAIL_THEN_START_BYPASS:停止任务并标记为任务失败,然后开始其它任务(忽略任务开始条件限制)
  • QUEST_CANCEL:取消任务
  • QUEST_CANCEL_THEN_START:取消任务,然后开始其它任务
  • QUEST_CANCEL_THEN_START_BYPASS:取消任务,然后开始其它任务(忽略任务开始条件限制)
  • QUEST_COOP_LEAVE:离开任务。如果玩家在多人任务则可以离开任务(在独立分支里很有用)
  • QUEST_COOP_LEAVE_OR_STOP:离开任务。如果玩家在多人任务内则可以离开或取消任务

任务身份

你可以仅对部分任务身份的玩家应用一些目标和设置。

对于玩家驱动型目标,该设置会限制哪些玩家可以执行这类目标。对于服务器驱动型目标,该设置会限制应用的目标会给予谁效果。

身份类型:

  • NONE|无:无身份限制
  • ROLE LEADER|队长:仅限任务队长
  • ROLE COOP:仅限组队玩家(除了队长之外的玩家)
  • RANDOM:随机选取一名任务中的幸运玩家
  • JOIN_ORDER <数字列表,用空格分隔>:仅限特定加入顺序的玩家:从0开始排序或第一个加入任务的玩家总是会成为队长

示例:JOIN_ORDER 1 2会是第一和第二个加入任务的玩家。 JOIN_ORDER 2会是第二个加入任务的玩家。

检查点

每个任务最多可以有一个活跃的检查点。当一个定义了检查点的目标开始时,它会覆盖当前的检查点。

checkpoint:

  # 检查点保存的东西
  save_location: true  # 保存全部玩家的位置
  save_specific_location: world,x,y,z  # 保存特定位置而非玩家位置
  save_branches: true  # 保存全部分支的当前状态
  save_individual_branches: true  # 保存全部独立分支的当前状态
  save_model_variables: true  # 保存当前模型的变量
  save_user_variables: []  # 保存的用户变量

  # 何时回到检查点
  restore_on_respawn: RESTORE_TYPE  # 当玩家重生时
  restore_on_connect: RESTORE_TYPE  # 当玩家重连时
  restore_on_resume: RESTORE_TYPE  # 当任务暂停时
  restore_conditons:
    # …… 会导致回到检查点的一些额外条件(见“条件”)
  individual_restore_conditons:
    # …… 会导致回到独立检查点的一些额外条件(见“条件”)

RESTORE_TYPE可以是GLOBAL|全局INDIVIDUAL|个人NONE|无。 Global会回到整个任务的检查点,INDIVIDUAL会让特定玩家回到特定位置和独立分支。如果玩家GuillaumeVDN单独回到了检查点,组队的玩家Notch不会回到检查点位置或独立分支。

任务点数

任务点数分成了不同类别,所以你可以有多个不同的点数排行榜。你必须在/points_categories.yml内注册类别。

你可以使用SERVER_LOGIC_POINTS或LOGIC_QUEST_POINTS来修改任务点数。

输入/qc points指令可以查看并修改任务点数。任务点数可以显示在GUI内,排名GUI会显示玩家的任务点数。

任务目标

设置

显示设置

name_long: >  # 描述目标的长名称;主要用于GUI描述
   &a在重生点附近挖掘100块圆石
 name_short: >  # 描述目标的短名称;用在actionbar/计分板/……内
   &a在重生点附近挖掘圆石
 
 objective_detail: >  # 该目标的{objective}占位符的自定义值
   &7主要目标&b{objective_progression:a}&7/&b{objective_goal:a} &7| 次要目标:&b{objective_progression:b}&7/&b{objective_goal:b}
 
 objective_detail_verbose: >  # 显示目标进度的自定义值;用在GUI和计分板内
   &7主要目标:&b{objective_progression:a}&7/&b{objective_goal:a}
   &7次要目标:&b{objective_progression:b}&7/&b{objective_goal:b}
 
 start_notify:
   # …… 开始目标时发送的提醒(见“通用配置/提醒”)
 
 complete_notify:
   # …… 完成目标时发送的提醒(见“通用配置/提醒”)
 complete_notify_particle_script: script_id  # 完成目标时在该目标位置执行的脚本(见“通用配置/粒子脚本”)
 
 progress_notify:
   # …… 目标去的进展时发送的提醒(见“通用配置/提醒”)
   # 请注意,如果你在config.yml内开启了循环,这里的actionbar/bossbar/标题不会一直循环下去
   # 可在config.yml内修改重复延迟
 
 update_notify:
   # …… 当玩家在一段时间内未取得任何进展时发送提醒(见“通用配置/提醒”)
 update_notify_particle_script: script_id  # 在发送更新提醒时同时执行的粒子脚本(见“通用配置/粒子脚本”)
 update_notify_delay: 30 MINUTE  # 发送更新提醒的延迟

开始目标设置

start_delay: 3 SECOND  # 开始目标延迟
 
 time_limit:
   duration: 15 MINUTE  # 完成目标限时
   reminder:
     # …… 每隔一段时间提醒玩家任务剩余时间(见“通用配置/提醒”)
     # - 显示剩余时间的占位符:{time}
   fail_goto: QUEST_FAIL  # 时间结束时使用的goto
 
 execution_chance: 75.0  # 执行该目标的百分比几率
 execution_chance_fail_goto: OBJECT ACTUALLY_LETS_DO_THAT_INSTEAD  # 执行失败时使用的goto
 
 checkpoint:
   # …… 检查点设置(见上面的“检查点”)

激活设置

hide_chat: true  # 该目标活跃时隐藏聊天框
 
 hide_players: true  # 该目标活跃时隐藏其它玩家(其它玩家也看不到任务中的玩家)
 
 no_match_fail_goto: QUEST_FAIL  # 玩家错误地执行特定操作时使用的goto(比如玩家破坏了错误的方块)
 
 progress_chance: 75.0  # 目标取得进展的百分比几率
 progress_chance_fail_goto: OBJECT UNLUCKY  # 取得进展失败时使用的goto
 
 progress_actor_restriction:
     # …… 仅允许特定身份的玩家能够取得进展(见上面的“任务身份”)

结束目标设置

goto: OBJECT NEXT  # 完成该目标时使用的goto
 
 goto_start_branches: []  # 完成该目标时使用开始的分支
 
 goto_stop_branches: []  # 完成该目标时停止的分支
 
 goto_start_individual_branches: []  # 完成目标时开始的独立分支
                                     # 只对PLAYER|玩家目标有效
                                     # 比如,最后一名完成“破坏方块”目标的玩家会开始独立分支
                                     # 这堆简单目标或触发器目标很有用;只有一个触发器目标循环的分支可让多人任务中的每个玩家开始独立分支
 
 complete_journal_entry:  # 目标完成时添加的日志条目
                          # 任务条目会在给予玩家任务日志或玩家打开时更新
   entry_title: >
     &a条目标题
   entry_detail: >
     &7你见到了提米,他请求你带点东西给他。
     &7你把东西带给了他。
     &7作为回报,他给了你一份精美的礼物。
   end_types: [SUCCESS]  # 只对一些任务结束类型添加条目;值:SUCCESS|成功FAIL|失败、CANCEL|取消、COOP_LEAVE|离开多人任务

位置设置

你可以配置每个目标的位置,只有极少部分目标没有位置设置。

对于玩家驱动型目标,该设置代表玩家必须在特定位置执行操作(比如玩家该破坏哪里的方块,杀死哪里的怪物等)。

对于服务器驱动型目标,该设置代表执行操作的位置(比如在哪里生成实体,在哪里显示粒子效果等)。

position:
   # …… 位置设置(见“通用配置/位置”)

所需物品设置

你可以为每个目标配置一个“所需物品”设置。

items_needed:
   # …… 见“通用配置/所需物品”

少部分目标没有该设置,主要是PLAYER_ITEMS_<…>。这类目标已经有其它物品设置了,再加个所需物品设置会造成混淆。

进度条件设置

你可以配置额外的进度条件。玩家必须匹配条件才能让目标取得进展。

progress_conditions:
   # …… 见“条件”
 
 progress_conditions_fail_goto: QUEST_FAIL  # 不匹配进度条件时使用的goto

事件驱动型目标设置

对于事件驱动型目标,你也可以配置“位置停留”设置。该设置要求玩家待在特定位置做点事。

position_stay:
   warning_delay: 15 SECOND  # 玩家必须回到该位置的时间
   warning_notify:  # 玩家不在位置内时每隔一段时间发送的提醒
     message: >
       &c警告!你必须在{time}内回到该位置,否则任务失败!
   fail_goto: QUEST_FAIL  # 玩家未在规定时间内回到指定位置时使用的goto

这些配置可以在一些情况下取消事件:

no_match_cancel_event: true  # 在玩家操作正确,但设置出错时取消事件(比如需要破坏特定类型的方块,而玩家破坏了错误类型的玩家)
 progress_cancel_event: true  # 目标取得近战时取消事件
 progress_chance_fail_cancel_event: true  # 目标取得进展失败时取消事件
 progress_conditions_fail_cancel_event: true  # 目标条件失败时取消事件

事件驱动型目标设置

由于定时驱动型目标的检测频率非常高,所以有一个设置可以避免过于频繁地重复检测匹配(目标/位置/所需物品/进度条件)。它默认设置为50刻。如果定时器目标的某个元素不匹配,那么在尝试再次检测之前,插件会等待这个时间量。

wait_after_match_fail: 50 TICKS   # 默认等待时间

特殊类型

NONE|无

该目标类型没有设置,它会在被任何定时器调用时即时进行。

你可以用来配置通用配置。比如你可以设置进度条件、位置设置或“所需物品”设置,来让玩家满足特定条件才能取得任务进展。

type: NONE

GROUP|分组

通过分组你可以把同一分支的不同目标混合使用。玩家必须按顺序完成它们才能继续任务。

MY_BRANCH:
  objects:
    MY_GROUP:
      type: GROUP
      objects: [A,B]  # 组内的目标
      ordered_objects: true  # 玩家必须按顺序完成目标
      required_objects: 2  # 所需完成目标数
    A:
      # 其它目标
    B:
      # 其它目标

RANDOM|随机

用于应用随机goto。

type: RANDOM
gotos: |  # 应用的goto列表
  OBJECT A
  OBJECT B
  BRANCH MY_BRANCH
  QUEST_FAIL
avoid_repeat_end_types: []  # 检测重复的结束类型列表
                            # 如果该列表不为空,则插件会检测玩家的任务历史
                            # 并避免重复使用相同的goto
                            # 如果没有更多抉择项,则会使用普通目标goto

CONDITIONS_SWITCH|条件切换

根据条件使用不同的goto。

type: CONDITIONS_SWITCH
cases:
  a:
    # 示例配置(见下方)
  b:
    # 示例配置(见下方)

示例配置:

conditions:
  # …… 匹配的条件(见“条件”)
goto: QUEST_SUCCESS  # 选择该案例时使用的goto

LOGIC_SWITCH|逻辑切换

根据逻辑字符串应用不同的goto。

type: LOGIC_SWITCH
cases:
  a:
    # 示例配置(见下方)
  b:
    # 示例配置(见下方)

示例配置:

logic: {variable:test} >= 10  # …… 选取该案例时需匹配的逻辑字符串(见“通用逻辑”)
goto: QUEST_SUCCESS  # 选择该案例时使用的goto

DIVERGE_CHAT|聊天分支

允许玩家在聊天框内点击文本来选择分支。

type: DIVERGE_CHAT
choices:
  a:
    # 抉择配置(见下方)
  b:
    # 抉择配置(见下方)
repeat_delay: 1 MINUTE  # 如果玩家未作出抉择则在这段时间后重新发送抉择选项

Choice configuration :

text: >  # 选择该抉择时发送的文本
  &a点击选择
redo_text: >  # 确认文本
  &a点击选择(确认)
unavailable_text: >  # 玩家无法选择该选项时发送的文本(可选)
  &7抱歉,你无法选择该选项
max_completions: 1  # 玩家可选择的最大次数
conditions:
  # …… 选择该选项所需的条件
goto: OBJECT CHOICE_1  # 选择该抉择选项时使用的goto

DIVERGE_GUI|GUI分支

允许玩家在GUI中点击不同选项来选择分支。

type: DIVERGE_GUI
choices:
  a:
    # 抉择配置(见下方)
  b:
    # 抉择配置(见下方)
reopen_delay: 5 SECOND  # 如果玩家未作出抉择并关闭了GUI则在这段时间后重新打开GUI

抉择配置:

slot: 10  # 选项在GUI中的栏位
item:
  # …… 物品图标(见“通用配置/物品”)
redo_item:
  # …… 玩家点击一次该物品后显示的图标
unavailable_text:
  # …… 玩家无法选择该选项时显示的图标

max_completions: 1  # 玩家可选择的最大次数
conditions:
  # …… 选择该选项所需的条件
goto: OBJECT CHOICE_1  # 选择该抉择选项时使用的goto

DIVERGE_OBJECTS|目标分支

允许玩家通过完成目标来选择不同的分支。

type: DIVERGE_OBJECTS
choices:
  a:
    # 抉择配置(见下方)
  b:
    # 抉择配置(见下方)

抉择配置:

object: CHOICE_OBJECT_1  # 选择该选项所需完成的目标
conditions:
  # …… 选择该选项所需的条件
goto: OBJECT CHOICE_1  # 选择该抉择选项时使用的goto

条件

设置

条件元素

条件配置

类型

GUI

GUI

物品设置

物品类型