本帖最后由 longlongz 于 2019-7-24 11:33 编辑


QuestCreator
[翻译文档帮助] | [Plugins Wiki]
欢迎来到QuestCreator的文档帮助界面! 在这里你可以找到许多关于插件的信息和帮助教程.你可以在下方菜单中选择你想要了解的信息. 这个文档是为QuestCreator v2.0.0以上的版本写的.

主页与信息简述 [#2]指令与权限 [#3]对新用户的全面介绍 [#4]-任务分类 [#5]创建一个任务 [#6]任务奖励条件 [#7]任务类型分支 [#8]任务目标 [#9]-开发者信息 [#9]

项目翻译人员Cytrus (@longlongz)
主页与信息简述[ Home and Misc # Pg 2 ]
声音/材料/生物的相关信息 :
这个页面中拥有一部分事件的解释,但是如果你想要了解详细内容的话,你应该阅读以下页面 :
对变量的介绍这款插件拥有一个十分先进的变量系统。变量可以在很多方面上影响到玩家的任务。举个例子,玩家在进行多项选择后,变量能够影响NPC的对话并改变当前的任务,甚至其他的任务也能够改变,还可以防止玩家做某些事,或者你可以在变量页面中查看更多的信息.你需要了解的关于变量的一些事 :
文本变量 (占位符)这里是一些主要的占位符。你基本上可以在插件的任何文本上使用这些占位符,但是有些文本可能会造成一定的影响或者某种情况下不支持部分占位符。{quest}, {name} - 任务名称{player} - 小组组长名称{objective} - 当前的任务目标{objective_progress} - {objective}的进度{objective_goal} - {objective}的目的{detailed_progression} - 详细的进度"树状图" - 你可以在某些情况下使用这个占位符{objective_detail_progress} - 当前目标的进度 - 你可以在某些情况下使用这个占位符{objective_detail_goal} - 当前目标的目的 -- 你可以在某些情况下使用这个占位符{objective_detail_percentage} - 当前目标的进度百分比 -- 你可以在某些情况下使用这个占位符{variable:[变量名} - 变量对玩家的数值 (没有数值则显示 0)
材料列表(查看物品/方块ID用) : http://pyrrh4.be/doc/material/ (英)每次你要配置一个物品是,你可以特定很多的设置。在下方的例子中你可以看到所有可以调整的设置.大部分选项都可以自定义。如果你不想要任何物品,比如某些目标不需要,那么你就不用在"item"设置中添加任何代码
附魔列表 : https://hub.spigotmc.org/javadocs/spigot/org/bukkit/enchantments/Enchantment.html你也可以在一些任务中指定多样物品 :
关于储存/配置文件的注释配置文件位置: /server/plugins/QuestCreator/此处可以创建新的任务: /server/plugins/QuestCreator/quests/自定义插件信息/语言: /server/plugins/QuestCreator/quests/texts.yml用户数据/当前暂停的任务/NPC数据: /server/plugins/PyrCore/data/ 除非你选择 JSON 文件格式储存数据, 或者MySQL表格创建。请勿删除/data/文件否则你会丢失当前的所有数据,最好不要编辑数据文件除非你知道你在做什么。如果你想要编辑文件,最好先使服务器停止运行。config.yml (默认) :
guis.yml (默认)
quest_npcs.yml (默认)(前置Citizens)
quest_blocks.yml (默认)
指令与权限[ Commands and Permissions # Pg 3 ]
唯一的根(主)指令是/quests. 你也可以用别名 /quest, /questcreator and /qc
如果你需要在游戏中显示指令列表,可以在根指令后添加-help参数. 例子 /quests -help, /quests -help:2 (第二页) 或 /quests start -help (关于任务开始的帮助).
/quests
打开任务GUI,需要全选 (questcreator.command.menu), 否则显示指令帮助.
/quests reload (权限 questcreator.admin)
Reloads the plugin
/quests -help
显示指令列表
/quests edit (questcreator.command.edit)
打开游戏内菜单进行任务、类型和通用变量的编辑与创建
/quests list (questcreator.command.list)
在聊天版上列出所有可接受的任务(与任务文本交互来开始任务或获得更多信息)
/quests menu -player|p:[名称] (questcreator.command.menu[.others])
打开任务菜单
/quests journal (questcreator.command.journal)
开启/关闭任务日志
/quests scoreboard (questcreator.command.scoreboard)
开启/关闭任务计分板 (如果这个功能在配置中被启用)
/quests journal -reset -player|p:[名称] (questcreator.command.journal.reset[.others])
重置任务日志
/quests variable|var -player:[名称] -variable|var|v:[变量] -set:[新数值] -delete|del|remove|rem (questcreator.command.variables.see, questcreator.command.variables.set 和 questcreator.command.variables.others)
查看特定/所有变量的数值,然后设置一个新的数值。使用-del移除 (与设置数值的权限相同)
/quests progress -admin -quest|q:[任务id] -player|p:[名称] (questcreator.command.progress[.others] 和 questcreator.command.progress.admin)
在聊天版上任务详细和进度/目标
/quests stats -player|p:[名称] (questcretor.command.stats[.others])
查看玩家当前的成就
/quests start -quest|q:[id] -player|p:[名称] (questcreator.command.start[.others])
开始一个任务
/quests start
使任务生效,如果有在等待的任务可以被开启
/quests invite -player|p:[名称] (questcreator.command.invite)
邀请一个玩家,如果有在等待的任务可以被开启
/quests goto -quest|q:[任务] -branch|b:[id] -object|o:[id] -stopbranch|sb:[id] -player|p:[名称] (权限 questcreator.command.goto[.others])
前往任务中一个特定的存在的目标。参数stopbranch应该只有在当一个活动的任务分支最初自然地转到这个目标,并且当新目标启动时,没有保持这个分支活动的目的(?)。
/quests stop|cancel -all -quest|q:[id] -player|p:[名称] (permission questcreator.command.stop[.others] 和 questcreator.command.stop.all)
停止一个激活的任务或所有激活的任务
/quests reset -all -quest|q:[id] -player|p:[名称] (权限 questcreator.command.reset[.others] 和 questcreator.command.reset.all)
重置这个任务的历史或填写任务历史
/quests setcompleted -quest|q:[id] -player|p:[名称] (权限 questcreator.command.setcompleted[.others])
是一个任务完成 (一定的次数)
questcreator.gui.see.available
允许在任务菜单中查看可接受的任务
questcreator.gui.see.progress
允许在任务菜单中查看进行中的任务
questcreator.gui.see.completed
允许在任务菜单中查看已完成的任务
questcreator.gui.see.unavailable
允许在任务菜单中查看不可用的任务
questcreator.gui.start
允许点击菜单内任务物品来开始任务
对新用户的全面介绍[ Complete step by step introduction for new users # Pg4 ]
传送门
任务分类[ Catagories # Pg5]
为了能让你的任务能被检测到并能被完成,它们需要被注册到一个类型里.
categories.yml (默认) :
常规设置一个类别是一个 '** 任务' (可以使单个任务).类别任务可以有或没有执行顺序类别任务都会用同一种方式触发 (NPC触发, 与方块交互, 自动开始, 日常任务, 延迟任务, 区域任务, etc).类别任务可以要求之前任务完成之后才能开始下一个任务 (需填指定任务执行顺序).一个类别可以有自己的GUI菜单 (在GUI配置中通过指定 'link: category_[类别名称]' 连接菜单).一个类别可以有最大正在执行任务数.一个类别是一个拥有自己设定的配置区域
触发器
一个触发器是任务触发方式并且定义了任务开始的条件
An activator is a configuration section with its own settings.
activator:
type: ENABLED
type is the activator type (all detailed below).
Activator types
AUTO
The quest will attempt to start automatically as soon as possible.
activator:
type: AUTO
BLOCK
The quest will attempt to start when the player interacts with a block.
activator:
type: BLOCK
block: world,0,0,0
selection_gui_when_one_quest: false
start_click_type: RIGHT_CLICK
sneak_click_cancel: false
particle_available: VILLAGER_HAPPY
particle_progress: FIREWORKS_SPARK
particle_cooldown: CLOUD
particle_completed: CLOUD
block is the location of the block.
selection_gui_when_one_quest (optional) should be true if you wish the selection GUI to appear when clicking the block even if there's only one quest available.
start_click_type is the click type required to start the quest (can be : `RIGHT_CLICK, LEFT_CLICK')
sneak_click_cancel (optional) should be true if you wish the active quest to be cancelled when clicking the block while sneaking.
particle_[...] is the particle effect that will be displayed on this block if there's a quest available (remove those lines for no effect).
DAILY
The quest will attempt to start every day. Note that this will not restart the quest if it's already running.
activator:
type: DAILY
hour_of_day: 0
hour_of_day (optional) is the hour of day (24h format).
DELAY
The quest will attempt to start after a specific delay since the last completion.
activator:
type: DELAY
delay: 10080
hour_of_day is the delay, in minutes.
DISABLED
The quest will not be available at all.
activator:
type: DISABLED
ENABLED
The quest will start when the player decides to (by a GUI click or a command for example).
activator:
type: ENABLED
ENTITY
The quest will attempt to start when the player interacts with a named entity. Works if you specify the Citizens NPC name as well, even though it's recommended to use the NPC activator.
activator:
type: ENTITY
name: '&cSuper Creeper'
selection_gui_when_one_quest: false
sneak_click_cancel: false
particle_yoff: 2.0
particle_available: VILLAGER_HAPPY
particle_progress: FIREWORKS_SPARK
particle_cooldown: CLOUD
particle_completed: CLOUD
name is the entity custom name (can be hidden).
selection_gui_when_one_quest (optional) should be true if you wish the selection GUI to appear when clicking the entity even if there's only one quest available.
sneak_click_cancel (optional) should be true if you wish the active quest to be cancelled when clicking the entity while sneaking.
particle_yoff is the particle vertical offset.
particle_[...] is the particle effect that will be displayed above this NPC if there's a quest available (remove those lines for no effect).
FIRSTCONNECT
The quest will start when the player first connects to the server.
activator:
type: FIRSTCONNECT
NPC
The quest will attempt to start when the player interacts with a NPC.
activator:
type: NPC
id: 0
selection_gui_when_one_quest: false
start_click_type: RIGHT_CLICK
sneak_click_cancel: false
particle_available: VILLAGER_HAPPY
particle_progress: FIREWORKS_SPARK
particle_cooldown: CLOUD
particle_completed: CLOUD
id is the Citizens NPC id.
selection_gui_when_one_quest (optional) should be true if you wish the selection GUI to appear when clicking the NPC even if there's only one quest available.
start_click_type is the click type required to start the quest (can be : `RIGHT_CLICK, LEFT_CLICK')
sneak_click_cancel (optional) should be true if you wish the active quest to be cancelled when clicking the NPC while sneaking.
particle_[...] is the particle effect that will be displayed above this NPC if there's a quest available (remove those lines for no effect).
PRECISE_ENTITY
The quest will attempt to start when the player interacts with a precise entity.
activator:
type: PRECISE_ENTITY
uuid: 662812ef-ddba-3699-8a5e-3a924376769c
selection_gui_when_one_quest: false
sneak_click_cancel: false
particle_yoff: 2.0
particle_available: VILLAGER_HAPPY
particle_progress: FIREWORKS_SPARK
particle_cooldown: CLOUD
particle_completed: CLOUD
uuid is the entity unique id.
selection_gui_when_one_quest (optional) should be true if you wish the selection GUI to appear when clicking the entity even if there's only one quest available.
sneak_click_cancel (optional) should be true if you wish the active quest to be cancelled when clicking the entity while sneaking.
particle_yoff is the particle vertical offset.
particle_[...] is the particle effect that will be displayed above this NPC if there's a quest available (remove those lines for no effect).
WORLDGUARD_REGION
The quest will attempt to start when the player will be in a WorldGuard region. Note that this is not instant, the check is made every minute.
activator:
type: WORLDGUARD_REGION
world: world
region: region
world is the world in which the region is.
region is the WorldGuard region id.
QuestCreator
[翻译文档帮助] | [Plugins Wiki]
[翻译文档帮助] | [Plugins Wiki]
欢迎来到QuestCreator的文档帮助界面! 在这里你可以找到许多关于插件的信息和帮助教程.
你可以在下方菜单中选择你想要了解的信息. 这个文档是为QuestCreator v2.0.0以上的版本写的.

主页与信息简述 [#2]
指令与权限 [#3]
对新用户的全面介绍 [#4]
-
任务分类 [#5]
创建一个任务 [#6]
任务奖励条件 [#7]
任务类型分支 [#8]
任务目标 [#9]
-
开发者信息 [#9]

项目翻译人员
Cytrus (@longlongz)
2021.12 数据,可能有更多内容
QuestCreator
[翻译文档帮助] | [Plugins Wiki]
欢迎来到QuestCreator的文档帮助界面! 在这里你可以找到许多关于插件的信息和帮助教程.你可以在下方菜单中选择你想要了解的信息. 这个文档是为QuestCreator v2.0.0以上的版本写的.

主页与信息简述 [#2]指令与权限 [#3]对新用户的全面介绍 [#4]-任务分类 [#5]创建一个任务 [#6]任务奖励条件 [#7]任务类型分支 [#8]任务目标 [#9]-开发者信息 [#9]

项目翻译人员Cytrus (@longlongz)
主页与信息简述[ Home and Misc # Pg 2 ]
声音/材料/生物的相关信息 :
- 材料列表/物品ID : http://pyrrh4.be/doc/material/
- 声音列表 : http://pyrrh4.be/doc/sounds/
- 怪物/生物列表 : https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html
这个页面中拥有一部分事件的解释,但是如果你想要了解详细内容的话,你应该阅读以下页面 :
- 变量
- 文本变量 (占位符)
- 物品配置与方块
- 储存系统
对变量的介绍这款插件拥有一个十分先进的变量系统。变量可以在很多方面上影响到玩家的任务。举个例子,玩家在进行多项选择后,变量能够影响NPC的对话并改变当前的任务,甚至其他的任务也能够改变,还可以防止玩家做某些事,或者你可以在变量页面中查看更多的信息.你需要了解的关于变量的一些事 :
- 所有的变量只能够被分配到任何只拥有一行(数字,字符串,布尔值或其他)数值的事件上,并不支持列表。
- 变量并不是通用的,这意味着每个变量的数值对所有人都不同。例如:如果一个变量叫做"帅气数值",这个变量可能对玩家LocusAzzuro的数值为100,但是对玩家longlongz的数值却可能是50。
- 变量的名称和数值都对大小写敏感。
- 你可以在配置的"Variables"列表中为变量设置一个默认的数值,这不会对插件造成任何的实质性的影响。
文本变量 (占位符)这里是一些主要的占位符。你基本上可以在插件的任何文本上使用这些占位符,但是有些文本可能会造成一定的影响或者某种情况下不支持部分占位符。{quest}, {name} - 任务名称{player} - 小组组长名称{objective} - 当前的任务目标{objective_progress} - {objective}的进度{objective_goal} - {objective}的目的{detailed_progression} - 详细的进度"树状图" - 你可以在某些情况下使用这个占位符{objective_detail_progress} - 当前目标的进度 - 你可以在某些情况下使用这个占位符{objective_detail_goal} - 当前目标的目的 -- 你可以在某些情况下使用这个占位符{objective_detail_percentage} - 当前目标的进度百分比 -- 你可以在某些情况下使用这个占位符{variable:[变量名} - 变量对玩家的数值 (没有数值则显示 0)
材料列表(查看物品/方块ID用) : http://pyrrh4.be/doc/material/ (英)每次你要配置一个物品是,你可以特定很多的设置。在下方的例子中你可以看到所有可以调整的设置.大部分选项都可以自定义。如果你不想要任何物品,比如某些目标不需要,那么你就不用在"item"设置中添加任何代码
代码:
- item:
- slot: 0 # 可选 ( GUI菜单用 )
- enabled: true # 可选 ( GUI菜单用 )
- type: YELLOW_WOOL #物品类型
- durability: 0 # 耐久度(填写"0"代表无限耐久)
- unbreakable: true # 无限耐久标签
- amount: 1 #物品数量
- name: '&a物品名称'
- lore:
- - '&7物品介绍'
- - '&7第二排'
- enchants: # 每一行放一个附魔属性, 格式为 : "[附魔属性英文名],[等级]"
- - DAMAGE_ALL,1
- - DURABILITY,3
- nbt: # 一个 64 位物品 NBT 标签字符串 ; 可以用插件在游戏内的编辑器来导入代码
- must_have_in_hand: true # 物品必须拿在手中 , 可选 (特定任务目标需要)
- remove_after_action: true # 交互后移除物品 , 可选 (特定任务目标需要)
附魔列表 : https://hub.spigotmc.org/javadocs/spigot/org/bukkit/enchantments/Enchantment.html你也可以在一些任务中指定多样物品 :
代码:
- items:
- 1:
- type: COBBLESTONE
- ...
- 2:
- type: STONE
- ....
关于储存/配置文件的注释配置文件位置: /server/plugins/QuestCreator/此处可以创建新的任务: /server/plugins/QuestCreator/quests/自定义插件信息/语言: /server/plugins/QuestCreator/quests/texts.yml用户数据/当前暂停的任务/NPC数据: /server/plugins/PyrCore/data/ 除非你选择 JSON 文件格式储存数据, 或者MySQL表格创建。请勿删除/data/文件否则你会丢失当前的所有数据,最好不要编辑数据文件除非你知道你在做什么。如果你想要编辑文件,最好先使服务器停止运行。config.yml (默认) :
代码:
- #----------------------------------------------------------------------------------------------------
- # QuestCreator 配置文件
- #----------------------------------------------------------------------------------------------------
- # 数据管理
- data:
- # 后端: (JSON, MYSQL) (默认 JSON)
- # 如果你选择了 MySQL, 你就必须在PyrCore内也选择这个
- backend: JSON
- # 同步延迟 (/秒) (填写 -1 关闭, 默认关闭)
- # 如果这个选项被开启,插件会检测储存数据 (json/mysql), 如果有新/不同的数据,隐藏的数据会被覆盖掉。
- sync_delay: -1
- # MySQL 鉴定 (如果 MYSQL 为后端)
- #mysql:
- # host: mysql.myserver.com
- # name: mydatabase
- # user: username
- # pass: pwd
- # 显示详细 debug 信息
- detailed_debug_informations: true
- # 延迟任务加载 (因此QuestCreator的附属插件就有足够的时间被注册并加载到任务中)
- delay_quest_load: false
- # 开启计分板进度显示
- scoreboard_progression: true
- # 玩家在一定时间(分钟)内没有活动就会自动取消任务 (设置为 -1 关闭)
- cancel_delay: -1
- # 玩家可同时接受任务的数量
- max_active_quests_player: 10
- # 任务书在物品栏的位置
- quest_journal_hotbar_slot: 8
- # 进度名称行数限制 (GUI 显示)
- progress_name_line_length_limit: 50
- # Dynmap动态地图任务标记图标
- # 默认图标列表: https://github.com/webbukkit/dynmap/wiki/Using-markers
- dynmap_quest_marker_icon: 'exclamation'
- # 目标SERVER_COMMANDS_PERFORM(服务器指令执行)不允许执行的指令
guis.yml (默认)
代码:
- #----------------------------------------------------------------------------------------------------
- # GUI 配置文件 QuestCreator
- #----------------------------------------------------------------------------------------------------
- # 返回上一页
- previous_page_item:
- type: ARROW
- name: '&7上一页'
- # 进入下一页
- next_page_item:
- type: ARROW
- name: '&7下一页'
- # GUIs列表 (一个 GUI = 一个箱子菜单)
- # 所有配置物品都可以添加选项 "link", "quest", "quest_group" "commands" (请不要对一个物品使用多个选项) (如果不使用任何选项则物品只用于展示)
- # 你可以添加所有类型的选项到任何物品内
- guis:
- # 主菜单配置 (请不要修改 "main_gui" id, 这是唯一一个你不能改的 ; 如果没有检测到 "main_gui", GUI 就不能在游戏中被打开)
- main_gui:
- # settings
- name: '你的任务'
- size: 9
- # 内容 : 在这个 GUI 中的物品
- content:
- # 例子: 如果你点击这个物品,就会连接到一个任务中
- 1:
- type: GOLD_INGOT
- name: '&6进行中的任务'
- lore:
- - '&7检查所有进行中的任务'
- slot: 0
- link: active_quests #连接GUI名称
- # 另外一个连接,打开 "my_gui"
- 3:
- type: DIAMOND_SWORD
- name: '&c我的任务'
- slot: 3
- link: my_gui
- # 另外一个连接,打开 "farm_gui"
- 4:
- type: DIAMOND_PICKAXE
- name: '&c农场任务'
- slot: 4
- link: farm_gui
- # 子任务GUI例子
- my_gui:
- # 设置
- name: '击杀任务'
- size: 9
- # 内容
- content:
- # 任务物品例子:如果你点击这个物品,它就会查看任务ID"example"(你不需要配置任何关于物品类型或者名称的设置,因为插件会根据插件的状态直接在任务文件中自动配置)。
- 1:
- slot: 0
- quest: example
- # 指令物品例子:点击这个物品会执行/kills指令
- 2:
- type: IRON_SWORD
- name: '&aYour kills'
- slot: 1
- commands:
- - 'kills'
- # 展示物品例子:点击这个物品什么都不会发生
- 3:
- type: STONE
- name: '&7Useless'
- lore:
- - '&7There''s no point in this'
- - '&7item, it''s just here for'
- - '&7beauty purposes.'
- slot: 4
- # 链接物品,打开 "main_gui" 主菜单
- 4:
- type: STICK
- slot: 8
- name: '&7Main menu'
- link: main_gui
- # 另外一个GUI例子
- farm_gui:
- # 设置
- name: 'Farm quests'
- size: 9
- # 内容
- content:
- # 任务组例子:如果你点击这个物品,它就会查看当前/下一个列表中的任务 (因此它会显示任务组内被激活的任务,或者下一个可截取的任务。
- # 如果一个任务可以被完成10次,那么他就会在显示下一个任务之前显示10次(包括物品冷却);如果没有剩余的任务就会显示下方配置的物品介绍)
- 1:
- type: REDSTONE
- name: '&7所有任务已被完成 !'
- lore:
- - '&7There are no more'
- - '&7quests available.'
- quest_group:
- - quest1
- - quest2
- - quest3
- # 另外一个链接 打开 "main_gui" 主菜单
- 2:
- type: STICK
- slot: 8
- name: '&7主菜单'
- link: main_gui
quest_npcs.yml (默认)(前置Citizens)
代码:
- #----------------------------------------------------------------------------------------------------
- # NPC 配置文件 QuestCreator
- #----------------------------------------------------------------------------------------------------
- # 在此处注册NPC与他们的任务
- npcs:
- # 1 是NPC的ID
- 1:
- # 玩家右键NPC时会列出的所有可用的任务 (如果玩家没有从这个NPC接取任何任务,此任务则会被接取)
- quests:
- - example
- # 最大可以同时从该NPC接取的任务数量
- max_concurrent: 1
- # 任务开始的点击方式
- start_click_type: RIGHT_CLICK #右键
- # 点击+下蹲时取消任务
- cancel_on_sneak_click: true
- # 粒子效果 NPC
- # 类型 : http://pyrrh4.be/doc/particles/ (填写 'NONE' 关闭)
- particle_quest_available: VILLAGER_HAPPY
- particle_quest_progress: FIREWORKS_SPARK
- particle_quest_cooldown: CLOUD
- particle_quest_completed: CLOUD
quest_blocks.yml (默认)
代码:
- #----------------------------------------------------------------------------------------------------
- # 任务方块设置 QuestCreator
- #----------------------------------------------------------------------------------------------------
- # 注册任务方块和它们的任务 (和npc类似)
- blocks:
- # 1 是方块的ID
- 1:
- # 方块的坐标
- location: world,100,100,100
- # 玩家右键方块时会列出的所有可用的任务 (如果玩家没有从这个NPC接取任何任务,此任务则会被接取)
- quests:
- - example
- # 最大可以同时从该NPC接取的任务数量
- max_concurrent: 1
- # 粒子效果 NPC
- # 类型 : http://pyrrh4.be/doc/particles/ (填写 'NONE' 关闭)
- particle_quest_available: VILLAGER_HAPPY
- particle_quest_progress: FIREWORKS_SPARK
- particle_quest_cooldown: CLOUD
- particle_quest_completed: CLOUD
指令与权限[ Commands and Permissions # Pg 3 ]
唯一的根(主)指令是/quests. 你也可以用别名 /quest, /questcreator and /qc
如果你需要在游戏中显示指令列表,可以在根指令后添加-help参数. 例子 /quests -help, /quests -help:2 (第二页) 或 /quests start -help (关于任务开始的帮助).
/quests
打开任务GUI,需要全选 (questcreator.command.menu), 否则显示指令帮助.
/quests reload (权限 questcreator.admin)
Reloads the plugin
/quests -help
显示指令列表
/quests edit (questcreator.command.edit)
打开游戏内菜单进行任务、类型和通用变量的编辑与创建
/quests list (questcreator.command.list)
在聊天版上列出所有可接受的任务(与任务文本交互来开始任务或获得更多信息)
/quests menu -player|p:[名称] (questcreator.command.menu[.others])
打开任务菜单
/quests journal (questcreator.command.journal)
开启/关闭任务日志
/quests scoreboard (questcreator.command.scoreboard)
开启/关闭任务计分板 (如果这个功能在配置中被启用)
/quests journal -reset -player|p:[名称] (questcreator.command.journal.reset[.others])
重置任务日志
/quests variable|var -player:[名称] -variable|var|v:[变量] -set:[新数值] -delete|del|remove|rem (questcreator.command.variables.see, questcreator.command.variables.set 和 questcreator.command.variables.others)
查看特定/所有变量的数值,然后设置一个新的数值。使用-del移除 (与设置数值的权限相同)
/quests progress -admin -quest|q:[任务id] -player|p:[名称] (questcreator.command.progress[.others] 和 questcreator.command.progress.admin)
在聊天版上任务详细和进度/目标
/quests stats -player|p:[名称] (questcretor.command.stats[.others])
查看玩家当前的成就
/quests start -quest|q:[id] -player|p:[名称] (questcreator.command.start[.others])
开始一个任务
/quests start
使任务生效,如果有在等待的任务可以被开启
/quests invite -player|p:[名称] (questcreator.command.invite)
邀请一个玩家,如果有在等待的任务可以被开启
/quests goto -quest|q:[任务] -branch|b:[id] -object|o:[id] -stopbranch|sb:[id] -player|p:[名称] (权限 questcreator.command.goto[.others])
前往任务中一个特定的存在的目标。参数stopbranch应该只有在当一个活动的任务分支最初自然地转到这个目标,并且当新目标启动时,没有保持这个分支活动的目的(?)。
/quests stop|cancel -all -quest|q:[id] -player|p:[名称] (permission questcreator.command.stop[.others] 和 questcreator.command.stop.all)
停止一个激活的任务或所有激活的任务
/quests reset -all -quest|q:[id] -player|p:[名称] (权限 questcreator.command.reset[.others] 和 questcreator.command.reset.all)
重置这个任务的历史或填写任务历史
/quests setcompleted -quest|q:[id] -player|p:[名称] (权限 questcreator.command.setcompleted[.others])
是一个任务完成 (一定的次数)
questcreator.gui.see.available
允许在任务菜单中查看可接受的任务
questcreator.gui.see.progress
允许在任务菜单中查看进行中的任务
questcreator.gui.see.completed
允许在任务菜单中查看已完成的任务
questcreator.gui.see.unavailable
允许在任务菜单中查看不可用的任务
questcreator.gui.start
允许点击菜单内任务物品来开始任务
对新用户的全面介绍[ Complete step by step introduction for new users # Pg4 ]
传送门
任务分类[ Catagories # Pg5]
为了能让你的任务能被检测到并能被完成,它们需要被注册到一个类型里.
categories.yml (默认) :
代码:
- #----------------------------------------------------------------------------------------------------
- # 任务分类配置文件 QuestCreator
- #----------------------------------------------------------------------------------------------------
- # 在此注册所有任务
- categories:
- # 分类例子
- example:
- # 触发器 (在wiki中查看触发器和它们设置)
- activator:
- type: ENABLED
- # 最大可接受任务数量 (单个玩家)
- max_concurrent: 100
- # 下方的任务列表是按顺序执行的吗?
- execution_order: false
- # ... 如果是,是否需要完成前一个任务才能开始下一个任务 ?
- previous_quest_required: false
- # 任务列表
- quest_list:
- - example
- # 该分类在菜单中的名称
- gui_name: 'Example Quest'
- # 右键是否会在菜单中开始一个任务 ?
- gui_right_click_start: true
- # 默认"农场"类型
- example_farm:
- activator:
- type: ENABLED
- max_concurrent: 1
- execution_order: true
- previous_quest_required: true
- quest_list:
- - example_farm_1
- - example_farm_2
- gui_name: 'Example Farm Quests'
- gui_right_click_start: true
常规设置一个类别是一个 '** 任务' (可以使单个任务).类别任务可以有或没有执行顺序类别任务都会用同一种方式触发 (NPC触发, 与方块交互, 自动开始, 日常任务, 延迟任务, 区域任务, etc).类别任务可以要求之前任务完成之后才能开始下一个任务 (需填指定任务执行顺序).一个类别可以有自己的GUI菜单 (在GUI配置中通过指定 'link: category_[类别名称]' 连接菜单).一个类别可以有最大正在执行任务数.一个类别是一个拥有自己设定的配置区域
代码:
- my_category:
- activator:
- # 触发方式设置
- max_concurrent: 100
- execution_order: true
- previous_quest_required: true
- quest_list:
- - my_quest_1
- - my_quest_2
- gui_name: '任务名'
- gui_right_click_start: true
- 触发方式是一个包含触发设置的配置区域.
- max_concurrent 是一个玩家最大可在该类别中接取的任务数量.
- execution_order (可选) 是否要有接取任务的顺序
- previous_quest_required (可选) 玩家是否应该在接取下一个任务之前完成当前的任务(如果execution_order 为 true ,这个设定也应该选true)
触发器
一个触发器是任务触发方式并且定义了任务开始的条件
An activator is a configuration section with its own settings.
activator:
type: ENABLED
type is the activator type (all detailed below).
Activator types
AUTO
The quest will attempt to start automatically as soon as possible.
activator:
type: AUTO
BLOCK
The quest will attempt to start when the player interacts with a block.
activator:
type: BLOCK
block: world,0,0,0
selection_gui_when_one_quest: false
start_click_type: RIGHT_CLICK
sneak_click_cancel: false
particle_available: VILLAGER_HAPPY
particle_progress: FIREWORKS_SPARK
particle_cooldown: CLOUD
particle_completed: CLOUD
block is the location of the block.
selection_gui_when_one_quest (optional) should be true if you wish the selection GUI to appear when clicking the block even if there's only one quest available.
start_click_type is the click type required to start the quest (can be : `RIGHT_CLICK, LEFT_CLICK')
sneak_click_cancel (optional) should be true if you wish the active quest to be cancelled when clicking the block while sneaking.
particle_[...] is the particle effect that will be displayed on this block if there's a quest available (remove those lines for no effect).
DAILY
The quest will attempt to start every day. Note that this will not restart the quest if it's already running.
activator:
type: DAILY
hour_of_day: 0
hour_of_day (optional) is the hour of day (24h format).
DELAY
The quest will attempt to start after a specific delay since the last completion.
activator:
type: DELAY
delay: 10080
hour_of_day is the delay, in minutes.
DISABLED
The quest will not be available at all.
activator:
type: DISABLED
ENABLED
The quest will start when the player decides to (by a GUI click or a command for example).
activator:
type: ENABLED
ENTITY
The quest will attempt to start when the player interacts with a named entity. Works if you specify the Citizens NPC name as well, even though it's recommended to use the NPC activator.
activator:
type: ENTITY
name: '&cSuper Creeper'
selection_gui_when_one_quest: false
sneak_click_cancel: false
particle_yoff: 2.0
particle_available: VILLAGER_HAPPY
particle_progress: FIREWORKS_SPARK
particle_cooldown: CLOUD
particle_completed: CLOUD
name is the entity custom name (can be hidden).
selection_gui_when_one_quest (optional) should be true if you wish the selection GUI to appear when clicking the entity even if there's only one quest available.
sneak_click_cancel (optional) should be true if you wish the active quest to be cancelled when clicking the entity while sneaking.
particle_yoff is the particle vertical offset.
particle_[...] is the particle effect that will be displayed above this NPC if there's a quest available (remove those lines for no effect).
FIRSTCONNECT
The quest will start when the player first connects to the server.
activator:
type: FIRSTCONNECT
NPC
The quest will attempt to start when the player interacts with a NPC.
activator:
type: NPC
id: 0
selection_gui_when_one_quest: false
start_click_type: RIGHT_CLICK
sneak_click_cancel: false
particle_available: VILLAGER_HAPPY
particle_progress: FIREWORKS_SPARK
particle_cooldown: CLOUD
particle_completed: CLOUD
id is the Citizens NPC id.
selection_gui_when_one_quest (optional) should be true if you wish the selection GUI to appear when clicking the NPC even if there's only one quest available.
start_click_type is the click type required to start the quest (can be : `RIGHT_CLICK, LEFT_CLICK')
sneak_click_cancel (optional) should be true if you wish the active quest to be cancelled when clicking the NPC while sneaking.
particle_[...] is the particle effect that will be displayed above this NPC if there's a quest available (remove those lines for no effect).
PRECISE_ENTITY
The quest will attempt to start when the player interacts with a precise entity.
activator:
type: PRECISE_ENTITY
uuid: 662812ef-ddba-3699-8a5e-3a924376769c
selection_gui_when_one_quest: false
sneak_click_cancel: false
particle_yoff: 2.0
particle_available: VILLAGER_HAPPY
particle_progress: FIREWORKS_SPARK
particle_cooldown: CLOUD
particle_completed: CLOUD
uuid is the entity unique id.
selection_gui_when_one_quest (optional) should be true if you wish the selection GUI to appear when clicking the entity even if there's only one quest available.
sneak_click_cancel (optional) should be true if you wish the active quest to be cancelled when clicking the entity while sneaking.
particle_yoff is the particle vertical offset.
particle_[...] is the particle effect that will be displayed above this NPC if there's a quest available (remove those lines for no effect).
WORLDGUARD_REGION
The quest will attempt to start when the player will be in a WorldGuard region. Note that this is not instant, the check is made every minute.
activator:
type: WORLDGUARD_REGION
world: world
region: region
world is the world in which the region is.
region is the WorldGuard region id.
qsefthuopq 发表于 2018-11-29 17:33
这个大坑我还没开始填 而且我还有其他坑要填
加油
如果你翻译完的话我可以转载到插件百科么?
可以的...
不如 改成目录引导式排版?
(据我所知qc功能巨多。 你都翻译的话可能有6页左右。)
(据我所知qc功能巨多。 你都翻译的话可能有6页左右。)
仿佛鸽了233
对新用户的全面介绍
[ Complete step by step introduction for new users # Pg4 ]
Complete step by step introduction for new users
This tutorial was mainly designed and written by Lordinouille (big thanks :D), and reviewed by PYRRH4. It's very useful if you just bought the plugin and/or just want to understand the basics of QuestCreator.
It was written before QuestCreator v4.0.0 and does not explain the 'pseudo-scripting' features.
Its first purpose is to learn how to create a quest using the files, in YAML. It's really recommended to do so. YAML files are in general more accurate and you'll feel like you have more control over what you do. However, if you really don't feel at ease with configuration files, all of this is applicable and should be read even if you plan to use the in-game editor (which basically writes YAML for you).
Don't hesitate to take a look at this page first or even to read it in parallel, it contains the default example quest, so you can see everything explained here in "action" : https://gitlab.com/GuillaumeVDN/questcreator/wikis/Configuration/Creating-a-quest
If you have difficulties to understand or more specific questions, you can come and ask them in the discord server. The link is on the plugin page :)
First thing to know about quest
A quest configuration is separared in two main parts, settings and objects :
Settings are the "general" parameters of the quest, they will define things like how it begins, how many time you can complete it, if you need a permission, and lots of little things like that, and also the GUI items appearance.
Objects are organized in branches and have to be seen as the differents paths and objectives of the quest. Objects are divided in 2 categories, PLAYER objects and SERVER objects.
Those two main parts will be detailed below.
Settings
Wiki page for settings (should read) : https://gitlab.com/GuillaumeVDN/questcreator/wikis/Configuration/Creating-a-quest
General settings
It begins at the top of the file :
setting1: ...
setting2: ...
setting3: ...
So let's get into the actual available settings:
saving: ENABLED
name: 'Example Quest'
description:
- '&7Just a sample quest'
max_concurrent_instances: -1
max_concurrent_instances_queue: true
min_players: 1
max_players: 1
max_completions: 1
time_limit: 0
cooldown: DISABLED
actionbar: ''
send_status_message: true
send_objective_update_message: true
restricted_worlds: []
permission: ''
Let's only focus on what you need for your first quest :
saving: ENABLED is the way your quest will stock data about your progress of the quest, there are 3 types of stockages :
ENABLED
SERVER_EPHEMERIAL
PLAYER_EPHEMERIAL
Put it on ENABLEDfor the moment, because SERVER_EPHEMERIAL and PLAYER_EPHEMERIAL are for some specific cases. Basically, ENABLED will save all running quests to disk/database, SERVER_EPHEMERIAL will save running quests until the server reloads/restarts, and PLAYER_EPHEMERIAL will save running quests until the player disconnects.
name: 'Example Quest' is the purely visual name. It's important to note that this is not the name that will be used in the commands. This is different than the quest id (which is the file name without the .yml extension).
description: purely visual again, you can put what you want.
max_concurrent_instances: -1 is also case specific, it limits the maximum amount of running instances. It's mainly useful for quests that include NPC manipulation, since every player see and interact with the same NPCs (they are not client-side yet). Put it to -1 to disable this limitation.
And you can modify the other parameters with what you actually want.
GUI settings
Coming soon...
Branches
The branches are the core of your quest. They contain the objects that define the "paths" of the quest, so you have the possibility to create different paths (more in depth later), and detailed choices or secondary objectives for example.
More than that, it's a way of writing a clean quest. Why ? Because let's say we have 500 lines with different choices that are all in the same branch, it'll look messy and won't be clean to read for you, even if "it still works fine". It's important to have a good and clean organisation from the beginning.
Wiki page for branches (should read) : https://gitlab.com/GuillaumeVDN/questcreator/wikis/Configuration/In-depth-:-branches
To start a quest you will need to copy paste this :
branches:
main:
name: 'It''s just the beginning'
auto_start: true
starts_at: START_OBJECT
objects:
START_OBJECT:
...
OBJECT_NAME_THAT_I_WANT:
...
So here, we create our main branch to basically tell the plugin that the path of the quest exists and that there will be stuff to do in our quest.
main is the id of your main branch, it's a chosen name so you can name it whatever you want :
branches:
main_branch:
...
It works
branches:
this_is_the_main_branche_with_a_super_dupper_long_name:
...
It also works
branches:
tapioca:
...
It still works
A branch is like a unique path in the quest. If later in the quest you want to divide the quest in 2 decisive and radically different choices, then you could, to have a clean config, create one branch for each choice. For instance :
branches:
main:
name: 'Meh !'
auto_start: true
starts_at: START_OBJECT
objects:
START_OBJECT:
...
... bla, bla, bla, some objects
... and later here we offer a choice to the player. Depending on his choice, we'll either start branch 'choice_tapioca' or 'choice_arabicca'
choice_tapioca:
name: 'The tapioca branch'
auto_start: false (since we don't want this branch to start when the quest begins but only if the player choose tapioca)
starts_at: START_OBJECT
objects:
...
choice_arabicca:
name: 'The arabicca branch'
auto_start: false (since we don't want this branch to start when the quest begins but only if the player choose tapioca)
starts_at: START_OBJECT
objects:
...
But it's not mandatory, it's up to you to have just one big branch with everything inside, but I personally advice you to create multiple branches... If you create big quests with a lot of choices and objectives, you'll see that it's almost mandatory to have a good and clear organisation.
Let's go deeper into the structure of a branch.
A branch has 3 parameters and one 'box' (the objects box).
The first parameter is name: 'whatever_you_want', it's just a config name that will be visible in /quest progress.
The second parameter is auto_start: true as I said before, you could make multiple branches for like a big choice in your quest. If you set this to true, then the branch will start when the quest starts, and if it's set to false then the branch will only start if and when you choose to.
And the last parameter is starts_at: name_of_the_object, do not forget it, you will tell to the plugin at which object it will have to begin the branch objects.
Objects
Now that you understand how the branches work, let's explain the objects.
The concept of objects
As said at the beginning of this tutorial, objects are divided in 2 categories, PLAYER objects and SERVER objects.
What we call here objects are in fact the steps of the quest, it's the path followed by the player.
Objects can be run in branches (that's where they will be mostly used) and more objects can be specified in two cases, if the player succeeds or fails the quest, but that'll be explained later. Let's focus on objects in branches for now.
Wiki page for objects (should read) : https://gitlab.com/GuillaumeVDN/questcreator/wikis/Configuration/In-depth-:-objects
The PLAYER objects
The PLAYER objects are the objectives and actions the players has to do all along the quest. There can be multiple PLAYER objects in one quest.
PLAYER_BED_ENTER #the player will have to enter a bed to complete this object
PLAYER_BLOCK_INTERACT #the player will have to interact with a block to complete this object
PLAYER_JUMP #the player will have to jump to complete this object
... and so on, there are lots of different object types. Check the wiki page about objects, they're all listed and detailed.
The SERVER objects
The SERVER objects are the actions that will be executed by the server during the quest. Also there can be multiple SERVER objects in one quest.
SERVER_COMMANDS_PERFORM #the server will perform commands
SERVER_ITEM_GIVE #the server will give something to the player (ex: a quest item)
SERVER_ITEM_REMOVE #the server will remove an item (ex: once the quest is finished and you want to remove the quest item)
... same for this, lots of different server object types. Check the wiki page about objects, they're all listed and detailed.
Usage and settings of objects
If you want to use an object in your quest you will have to understand how to write them and how they are structured.
An object is first defined by its name
For instance, let's say you want an object where you want to talk to an NPC, you will have to first give a name to the object that is going to be in charged to make you talk to the NPC.
It can be literally whatever you want, just as the branches.
1
or
TALK_TO_SOMEONE
or
TALK_TO_NPC
or
STEP-1
or
STEP_1_WHERE_I_HAVE_TO_TALK_TO_AN_NPC
or
THENAMEOFTHEOBJECTIN1WORDLINE
... and so on
Let's take the first name of the object
Now I have the name of my object I will need it's type. Because it's cool to name things, but we want it to execute an action or give an objective
So let's write :
TALK_TO_SOMEONE:
type: PLAYER_NPC_INTERACT
Good job, now the plugin knows what TALK_TO_SOMEONE will be used for. You just wrote that it will be used for the type of object PLAYER and this object is an NPC_INTERACT.
Well, so as you can see, say to the plugin that TALK_TO_SOMEONE is an PLAYER_NPC_INTERACT won't be enough, the plugin wants to know other things, and they are called parameters of the object.
Let's write them down.
TALK_TO_SOMEONE:
type: PLAYER_NPC_INTERACT
item:
type: DIAMOND
amount: 32
must_have_in_hand: true
remove_after_action: true
npc: 15
amount: 1
Let's explain what we added.
We added 3 things : item, npc and amount
Let's start with npc :
Here npc: 15 is a mandatory parameter, you declare to which NPC you want the player to interact with.
The item: is an optional parameter, it is here in the case you want the player to interact with an NPC with an item in hand, and that item will be taken from his inventory when the object is completed.
What's special here is that item: has it's own parameters. So objects parameters can also have their own parameters, like the location:, we will talk more in-depth of that after...
And finally the amount: 1 is the amount of time the objects has to be done to be considered as completed (so in our case how many times the player must interact with the NPC).
So let's clarify what we have done here :
We created an object called TALK_TO_SOMEONE
With type PLAYER_NPC_INTERACT
We said that the player will have to interact with the npc with id 15, and he'll have to do it one time
And that he will need to have 32 DIAMONDS in his hand that will be taken from his inventory once he clicked on the NPC
You think there are too much parameters to learn ? Don't worry ! Every parameters and optional settings are listed here : https://gitlab.com/GuillaumeVDN/questcreator/wikis/Configuration/In-depth-:-objects
You just created an correctly structured object
*BUT WAIT, we have a problem Youston ! A problem that you will often have if you forget to rigorously write down your quests.
It's cool we have our object but now what are we supposed to do with it ?
As I said before, objects are like the path of the quest and they have to be linked together to have a clean path.
So let's say that after our object TALK_TO_SOMEONE we want this someone to start a discussion with you.
Let's write it down with the method seen before :
TALK_TO_SOMEONE:
type: PLAYER_NPC_INTERACT
item:
type: DIAMOND
amount: 32
must_have_in_hand: true
remove_after_action: true
npc: 15
amount: 1
THIS_SOMEONE_TALKS_TO_YOU:
type: SERVER_MESSAGE_LIST
messages:
- 'Yeah man I''m talking to ya'
- 'WAIT 3'
- 'You just gave me 32 diamonds, now I feel happy'
- 'It''s the minimum to talk to ya no ?'
- 'WAIT 5'
- '&cLove red color m8'
So I have created a new object called THIS_SOMEONE_TALKS_TO_YOU with the type SERVER_MESSAGE_LIST and then precised the parameters with messages: (and because it's a list i put - before my messages). This object can be found here with all the others : https://gitlab.com/GuillaumeVDN/questcreator/wikis/Configuration/In-depth-:-objects
*Yay ! Another object, that's fantastic, I understand the idea. But how are we supposed to link them together ? *
**We will use the last parameter : goto:
Literally like a path, you will tell to the plugin where you have to go when the object is completed, and you will do this with goto:
Let's add it :
TALK_TO_SOMEONE:
type: PLAYER_NPC_INTERACT
item:
type: DIAMOND
amount: 32
must_have_in_hand: true
remove_after_action: true
npc: 15
amount: 1
goto: OBJECT THIS_SOMEONE_TALKS_TO_YOU
THIS_SOMEONE_TALKS_TO_YOU:
type: SERVER_MESSAGE_LIST
messages:
- 'Yeah man I''m talking to ya'
- 'WAIT 3'
- 'You just gave me 32 diamonds, now I feel happy'
- 'It''s the minimum to talk to ya no ?'
- 'WAIT 5'
- '&cLove red color m8'
goto: QUEST_SUCCESS
goto: is a special and mandatory parameter, NEVER FORGET to put it in the last line of each of your objects, except for some (rare) special ones (will be explained later).
It can admit multiple values like QUEST_SUCCESS or QUEST_FAIL (and other) but here let's focus on what I have written down (other values are, again, detailed here : https://gitlab.com/GuillaumeVDN/questcreator/wikis/Configuration/In-depth-:-objects)
So with the goto: added, we say to the plugin that when TALK_TO_SOMEONE has been completed he has to go to the OBJECT THIS_SOMEONE_TALKS_TO_YOU And when THIS_SOMEONE_TALKS_TO_YOU is completed (meaning that each lines of the message list has been showed up), the plugin has to go to QUEST_SUCCESS (a way of ending the quest, marking it as succeeded).
Result :
We now have a path where you will have to speak to the NPC 15, with 32 diamonds in hand that will disappear once you clicked, and once you clicked on him he will start to say to you strange things with strange delays between each line and a colored line at the ending.
Ta-daaam ! You created your first working path of quest ! It will be the most important things you will have to write in the YAML of your quests.
Precisions and deepening about objects
We are starting to have a lot of tools in hand to create our quest, we will see soon how to use them all together to create a quest. But firstly I want to explain you some little things about objects that you will have to understand to create optimized and clean objects.
As I said objects have mandatory and optional parameters.
The mandatory parameters are usually always specified when you copy paste an object on : https://gitlab.com/GuillaumeVDN/questcreator/wikis/Configuration/In-depth-:-objects
But the optional ones aren't directly in the object type. They are on the top of the page.
Let's give them to you here :
name (optional) is the object name. For instance : "Break 10 cobblestone on the ground"
progress_name (optional) is the short object name. It'll be used in the GUI or in the /quest progress command for example. For instance : "Break cobblestone"
message (optional) is a text that'll be send when the object starts.
sound (optional) is a sound that'll be played when the object starts.
post_message (optional) is a text that'll be send when the object ends.
post_sound (optional) is a sound that'll be played when the object ends.
location is the location settings for the object (detailed below).
The location setting can be either very useful or completely mandatory for some objects.
Let's explain how to use them !
Here's an example of object with a lot of settings in here.
CRAFT_A_PICKAXE:
type: PLAYER_ITEM_CRAFT
item:
type: DIAMOND_PICKAXE
amount: 1
name: 'Craft a diamond pickaxe for your friend'
progress_name: 'Craft diamond pickaxe'
message: '&aI''m showing at the very start of the object, when the player didn''t complete it yet ! So now, you need to craft a diamond pickaxe.'
sound:
type: VILLAGER_IDLE
volume: 1.0
pitch: 1.0
post_message: '&aI''m showing only when the object is totally finished ! Good job crafting this pickaxe man.'
post_sound:
type: LEVEL_UP
volume: 1.0
pitch: 1.0
location:
base: world,100,70,100
near: 10
goto: QUEST_SUCCESS
Let's explain this so you understand everything,
I have added name, progress_name, message, sound, post_message, post_sound and location. Those are optional settings (except for objects with location, mostly SERVER objects that need to know where to do their action).
What does it mean ? It means that you can put them in every object and they will work. They are called "generic settings".
name will be used in things such as /quest progress and other features of the plugin.
progress_name will be used in /quest progress and the GUI items.
message is a graphical settings, shown at the beginning, very useful if you want to tell to a player the actual objective he has to do now. It can has multiple lines with colors.
sound is an audio setting works the same way as message
post_message is also a graphical settings, shown at the end of the object
post_sound is also an audio setting, and works the same way as post_message
And location can be used almost everywhere. In fact in some case it will be mandatory (again, for some SERVER objects, for example SERVER_BLOCK_PLACE : the server needs to know where to change the block).
Let's show you some examples.
Initial object, it works :
object:
type: PLAYER_ITEM_DROP
item:
type: DIAMOND_PICKAXE
amount: 1
With location, it also works :
object:
type: PLAYER_ITEM_DROP
item:
type: DIAMOND_PICKAXE
amount: 1
location:
base: world,100,70,100
near: 10
... but here I say to the plugin that I want the player to drop 1 DIAMOND_PICKAXE but in a zone with a spheric radius with a center in x 100, y 70 and z 100. If he drops it elsewhere, the object won't complete.
So it can be very useful to do some accurate actions.
But in this object :
object:
type: SERVER_WORLDEDIT_SCHEMATIC_PASTE
schematic_file: 'schematic_file.schematic'
In this case you tell the plugin to paste a schematic file, but as you may know WorldEdit is a coordinate-relative plugin. In such a case, you have to put the location of the paste origin or it won't work.
object:
type: SERVER_WORLDEDIT_SCHEMATIC_PASTE
schematic_file: 'schematic_file.schematic'
location:
base: world,123,13,543
Here you tell the plugin where to paste the schematic, it's happy now !
Basic mistakes and things to know
Mistakes
One object = one object type. You CAN'T put 2 object type in 1 object, you will have to create 2 different objects linked with a goto
This will NOT work :
OBJETC_1:
type: SERVER_MESSAGE_LIST
messages_sound: VILLAGER_IDLE
messages:
- '&f[Système de survie] Objectif actualisé : Rendez vous à Oneill en [-1227,180,2715] et donner au [Gérant d''Oneill] le [FRET]'
name: 'dialogue2'
progress_name: ''
message: ''
sound: VILLAGER_IDLE
post_message: ''
post_sound: VILLAGER_IDLE
type: PLAYER_NPC_INTERACT
item:
type: PISTON
amount: 1
name: '&7&m-----&f &dF.R.E.T&f &7&m-----&f &8(Quest)'
must_have_in_hand: false
remove_after_action: true
npc: 256
name: 'DONNER_FRET_ONEILL'
progress_name: ''
message: ''
sound: VILLAGER_IDLE
post_message: ''
post_sound: VILLAGER_IDLE
goto: OBJECT OBJECT_2
It has to be like that :
OBJECT_1:
type: SERVER_MESSAGE_LIST
messages_sound: VILLAGER_IDLE
messages:
- '&6Well played.'
- 'WAIT 2'
- '&f[Survival System] New objective : &aGo to Oneill in &l[-1227,180,2715] &aand give the &l[F.R.E.T] &ato the &l[Oneill Manager]&f.'
name: '[dialogue]'
progress_name: '[dialogue]'
message: ''
sound: VILLAGER_IDLE
post_message: ''
post_sound: VILLAGER_IDLE
goto: OBJECT OBJECT_2
OBJECT_2:
type: PLAYER_NPC_INTERACT
item:
type: PISTON
amount: 1
name: '&7&m-----&f &dF.R.E.T&f &7&m-----&f &8(Quest)'
must_have_in_hand: false
remove_after_action: true
npc: 256
name: 'Give the FRET to **ill Manager'
progress_name: 'Give FRET to Oneill Manager'
message: ''
sound: VILLAGER_IDLE
post_message: ''
post_sound: VILLAGER_IDLE
goto: OBJECT OBJECT_3
Always write the text of messages, post_message etc with ''. Ex: message: 'I love tapioca' and not message: I love tapioca. (actually it could work sometimes but it's always better, it's an habit to take)
And don't forget to put double ' when you want to put one '. Ex: I''ll want you''re tapioca when he''ll want it (basic YAML writing)
Don't forget the OBJECT when you want to go to another object. goto: OBJECT A_THING_WITH_A_COOL_NAME and not goto: A_THING_WITH_A_COOL_NAME
Things to know:
In an item parameter you can absolutely add other sub-parameters like this :
object:
type: SERVER_ITEM_GIVE
item:
type: PISTON
name: '&7&m-----&f &dF.R.E.T&f &7&m-----&f &8(Quest)'
amount: 1
There are 2 type of amount: that you will see during your quest writing. They can be confusing but they are different.
For instance :
object:
type: SERVER_ITEM_GIVE
item:
type: PISTON
name: '&7&m-----&f &dF.R.E.T&f &7&m-----&f &8(Quest)'
amount: 1
amount: 2
The first amount: in the item is the number of items that will be given to the player. The second amount: in the object, written under the type and the item parameters, is the amount of time this action will be repeated. Can be useful if you want the player to do one object multiple times. I let you imagine what you can do with this feature.
If you find yourself stuck in front of an issue in your quest, it might be a simple syntax error messing everything up. So don't hesitate to first check what you've written on a YAML validator, such as : https://codebeautify.org/yaml-validator
Second check if you have any tabulation, YAML absolutely needs only spaces, not tabulations.
Summary
Now let's converge everything we just saw !
The parameters :
saving: ENABLED
name: 'Example Quest'
description:
- '&7Just a sample quest'
max_concurrent_instances: -1
max_concurrent_instances_queue: true
min_players: 1
max_players: 1
max_completions: 1
time_limit: 0
cooldown: DISABLED
actionbar: ''
send_status_message: true
send_objective_update_message: true
restricted_worlds: []
permission: ''
The branch:
branches:
main:
name: 'main'
auto_start: true
starts_at: START_OBJECT
objects:
...
And the objects:
TALK_TO_SOMEONE:
type: PLAYER_NPC_INTERACT
item:
type: DIAMOND
amount: 32
must_have_in_hand: true
remove_after_action: true
npc: 15
amount: 1
goto: OBJECT THIS_SOMEONE_TALKS_TO_YOU
THIS_SOMEONE_TALKS_TO_YOU:
type: SERVER_MESSAGE_LIST
messages:
- 'Yeah man I''m talking to ya'
- 'WAIT 3'
- 'You just gave me 32 diamonds, now I feel happy'
- 'It''s the minimum to talk to ya no ?'
- 'WAIT 5'
- '&cLove red color m8'
goto: QUEST_SUCCESS
Aaand the FUUSSIIOONN :
saving: ENABLED
name: 'Example Quest'
description:
- '&7Just a sample quest'
max_concurrent_instances: -1
max_concurrent_instances_queue: true
min_players: 1
max_players: 1
max_completions: 1
time_limit: 0
cooldown: DISABLED
actionbar: ''
send_status_message: true
send_objective_update_message: true
restricted_worlds: []
permission: ''
branches:
main:
name: 'main'
auto_start: true
starts_at: START_OBJECT
objects:
TALK_TO_SOMEONE:
type: PLAYER_NPC_INTERACT
item:
type: DIAMOND
amount: 32
must_have_in_hand: true
remove_after_action: true
npc: 15
amount: 1
goto: OBJECT THIS_SOMEONE_TALKS_TO_YOU
THIS_SOMEONE_TALKS_TO_YOU:
type: SERVER_MESSAGE_LIST
messages:
- 'Yeah man I''m talking to ya'
- 'WAIT 3'
- 'You just gave me 32 diamonds, now I feel happy'
- 'It''s the minimum to talk to ya no ?'
- 'WAIT 5
- '&cLove red color m8'
goto: QUEST_SUCCESS
Bam, your first working quest, good job ! As you can see, it can already seem a little complicated just to interact with a NPC, so, again, organisation is very important in your files.
You now know the bases to create any quest you want. Yes, really. You will just need some testing, experimentations and patience and everything that comes out of your imagination should be playable one day. Just think outside the box : a LOT is possible.
If you are having any issue after having checked everything on your side, don't hesitate to go on the support discord, we will be happy to help you !
You can also come and share your creations and your use of quest mechanics, on the same discord ! ^_^
Thanks for reading this tutorial ! (NB : and thumbs up again to Lordinouille who wrote it, that's a pretty good job !)
Now, that's your turn. The plugin is just awaiting : it's up to you to create quests !
感谢汉化WIKI

到现在也没学会怎么用- -!
Sssssssssss
看了半天也没看懂呀