任务目标列表 Objectives List
(版本:2017-01-12 翻译:kjiang、JohnHo、Crysta11ize 原文链接)
kjiang译注:所有“任务目标objective”都可以在参数里加入events:
,用来指明会在玩家完成这个任务目标的时候自动触发的事件;以及conditions:
用来规定需要达成的条件。
坐标/位置: location
玩家需要前往指定坐标的一定范围内,并满足所有条件condition才被判定为完成这个目标。第一个参数必须是坐标,第二个是半径范围,可以填变量。
此目标有一个属性property,location
。它的格式是X: 100, Y: 200, Z:300
。
例子: location 100;200;300;world 5 condition:test1,!test2 events:test1,test2
方块破坏/放置: block
玩家需要放置或破坏一定量的某种方块。第一个参数是方块名称以及方块附加值(例如WOOD:2表示桦木原木),方块名称和方块附加值可以参阅材料类型。方块名称后的参数是方块数量,大于0表示需要放置,小于0表示需要破坏的量。可选的你还可以增加notify
参数,在玩家每次放置/破坏这个方块的时候,来提醒玩家还有多少个方块需要处理。
此目标具有两个属性property,amount
和left
。amount
表示在block中指明的数量,而left
表示玩家还剩多少个方块需要处理,需要注意的是这个数值可能是负的。
例子: block LOG:2 -16 events:reward notify
宰杀生物/怪物: mobkill
玩家必须杀死一定量的某种生物。各种生物类型可以在生物列表中找到。另外你还可以用诸如name:Uber_Zombie
参数指明生物的名字,名字中的下划线_
会被更换为空格。下面的例子中这样玩家必须宰杀5个名字为“Uber_Zombie”的僵尸才算完成任务目标。你还可以指明notify
参数用来在玩家每次宰杀一个目标生物的时候提醒玩家。如果你只想统计那些通过spawn
event生成的并被marked
标记过的生物,请添加marked:
参数。
这个目标提供两个属性property,amount
和left
。amount
表示玩家已经宰杀过多少目标生物,而left
表示玩家还剩多少生物需要宰杀才能完成这个目标。
例子: mobkill ZOMBIE 5 name:Uber_Zombie conditions:night
击杀怪物/MM怪: mmobkill
玩家需要击杀指定数量MM怪。第一个参数必须是生物的内部名称(在你的mm怪物配置列表里)。您可以选择添加amount
参数以指定需要击杀的怪物数量。也可以添加可选参数minLevel
并maxLevel
设置需要击杀的怪物等级。还可以添加一个可选neutralDeathRadiusAllPlayers
参数, 范围参数来让范围内所有玩家达成该目标。如果希望在目标实现时向玩家发送通知,则可以添加notify
关键字。
例子: mmobkill SkeletalKnight amount:2 events:reward
动作: action
玩家需要点击某个方块才算完成目标。你还可以指定方块所在位置和玩家点击时所使用的物品。第一个参数是点击方式,right
右键、left
左键、或any
任意。第二个参数是方块
(格式详见上面”block“)。可选参数有loc:
坐标和range:
范围。如果你还指明了cancel
,那么这个”点击“会被取消(如箱子不会被打开,按钮不会被按下去)。
这个目标具有一个属性property,location
,玩家所在坐标,格式X: 100, Y: 200, Z:300
不带半径。
例子: action right DOOR:1 conditions:holding_key loc:100;200;300;world range:5
死亡: die
这个目标需要玩家死亡。你可以用这个目标取消玩家死亡,触发的时候玩家生命值会被完全恢复,可选的还可以把玩家传送到指定的坐标。具有三个参数,第一个是可选的cancel
表示取消死亡,第二个是可选的respawn:
用来指明取消死亡的时候玩家会被传送到的地方。
例子: die cancel respawn:100;200;300;world;90;0 events:teleport
合成: craft
完成这个目标需要玩合成某样物品。第一个参数是items.yml
中定义的物品ID
,第二个是需要合成的数量。
这个目标有两个属性property,amount
和left
。amount
表示玩家已经合成过多少物品,而left
表示玩家还剩多少个物品需要合成才能完成这个目标。
例子: craft saddle 5 events:reward
烧炼: smelt
完成这个目标需要玩烧炼(利用熔炉烧制)某样物品。你必须写明你的物品ID而不是数字ID(kj注:不同于上面的”合成craft“,你需要指明物品ID而不是items.yml
中的名称)。注意这个物品名称并不支持data values。第一个参数是材料类型,第二个是数量(整数)。
烧炼smelting和上面的合成craft具有一样的属性property。
例子: smelt IRON_INGOT 5 events:reward
拾取物品: pickup
要完成此目标,您需要拾取指定数量的物品。第一个参数必须是 中定义的项目的内部名称items.yml
。这也可以是多个项目的逗号分隔列表。您可以选择添加amount:
参数来指定玩家需要拾取的这些物品的数量。这个数量是一个总数量,它不计算每个单独的物品。您可以使用notify
关键字在玩家每次推进目标时显示一条消息,可选地在冒号后显示通知间隔。
您还可以添加notify
关键字以显示还有多少物品需要取件。
该目标具有三个属性:amount
、left
和total
。amount
是已经拾取的物品数量, left
是仍需要拾取的物品数量, total
是最初需要拾取的物品数量。
例子 pickup emerald amount:3 events:reward notify pickup emerald,diamond amount:6 events:reward notify
。
驯服: tame
完成这个目标, 玩家必须驯服一些生物。有效生物类型有: WOLF
(狼), OCELOT
(豹猫)和HORSE
(马)。第一个参数是类型, 第二个是数量。
驯服与宰杀生物具有一样的properties属性。
例子: tame WOLF 2 events:wolfs_tamed
骑乘实体: ride
这个目标可以通过骑乘指定实体来完成 。 any
用来匹配任何实体。
例子 ride horse ride any
延迟: delay
这个目标是一个长期的, 持续的延迟发生事件。它只会在一定的时间内运行 (以分钟为单位), 并且只有当玩家在线并满足所有条件时才会执行。如果玩家处于离线状态, 它就会等待他们登录。虽然这不是100% 准确, 因为它可以在所需的时间之后1分钟才执行。举例来说,您可以使用它来删除标记, 这样玩家可以多次完成任务。第一个参数是分钟数。可以指定可选的interval:
参数,表示间隔多少时间检查一次, 间隔时间以1/20秒为单位。这样可以通过减少目标的准确性, 降低对服务器的资源占用。其余的就和其他目标中使用的那一样。
延迟有两个属性,left
和 date
(剩余时间,完成日期)。第一个将显示在延迟完成之前需要经过多少时间 (比如 “23 天、5小时和45分钟”), 第二个将显示目标完成日期,它的格式采用在config.yml
文件中date_format
的设置。
例子: delay 1440 events:event1,event2
射箭: arrow
为了达成这个目标, 玩家需要把箭射中目标。这个任务目标有两个参数, 目标位置和精度数 (箭头击中位置半径必须小于精度数)。注意, 击中后箭头的位置在全砖(不能是半砖、头等等)的墙上, 这意味着射击不是完整的块 (如头) 不会给出准确的结果。要多加测试, 以确保您已经正确设置的精度数字。
例子: arrow 100.5;200.5;300.5;world 1.1 events:reward conditions:correct_player_position
跳!: jump
要完成这个目标,玩家必须跳跃。唯一的达成要求是数量。您可以使用notify
关键字在玩家每次推进目标时显示一条消息,可选地在冒号后显示通知间隔。
该目标具有三个属性:amount
、left
和total
。amount
是已经完成的跳跃量, left
是仍然需要的跳跃量, total
是最初需要的跳跃量。
例子 jump 15 events:legExerciseDone
经验: experience
达成该目标需要达到一定的等级,MC默认一般为该等级经验全满。当玩家升级时, 条件会被检查, 所以如果条件第一次达不到满足, 只有在玩家再次升级时满足条件。表示级别的指令字符串只可以是整数。
例子: experience 25 events:reward
踩踏压力板: step
要达成此目标,玩家必须在给定位置上踩上压力板。板块的类型无关紧要。第一个参数也是唯一必需的参数是位置。如果压力板不在该位置, 则目标将无法达成, 并会在控制台中记录错误。
例子: step 100;200;300;world events:done
登出: logout
为了完成这个目标, 玩家只需离开服务器。请记住, 玩家下线1/20秒后,在此处运行 floder
事件将使其以 persistent
“持久 ” 模式运行, 因为玩家在下一个刻度线上处于离线状态。
例子: logout events:delete_objective
输入密码: password
此目标要求玩家在聊天栏键入密码。第一个参数是密码。所有 ' _ ' 字符被替换为空格。它用 [正则表达式] 进行了检查(可参见正则表达式)。 (如果您的密码将是^beton.*beton$
,目标将接受所有以 'beton' 字开头和结尾的密码 (“^” 代表字符串的开头, '. ' 表示任何字符, ' * ' 允许以前的字符 (在本例中为任何) 重复任意次数, “$” 表示字符串的末尾), 但您也可以使用类似'beton'之类的东西-它会起作用)。如果您希望忽略字母大小写, 可以添加可选的ignoreCase
参数。为此, 您的正则表达式需要使用小写字母。玩家回答是需要键入 (用他的语言, 可在messages. yml
配置) ' 密码: 这是玩家的猜测 '。如果失败, 则不会在聊天窗口中显示该消息。
例子: password beton ignoreCase events:message,reward
钓鱼: fish
达成目标要求玩家钓到一样东西。它可以是一条鱼, 也可以是一个宝藏或垃圾。第一个参数是要捕获的项的名称material
(可参见https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html) , 可以选择在冒号后使用数据值。第二个参数是钓到的数量。如果要显示进度, 也可以添加通知参数notify
。
钓鱼Fishing和宰杀生物具有一样的properties属性。
例子: fish raw_fish:1 5 notify events:tag_fish_caught
剪羊毛: shear
达成此目标,需要玩家剪指定的数量羊毛, 可额外指定羊毛颜色和/或者羊名字。第一个参数是数量 (整数)。此外, 您可以添加名称name
参数与颜色color
参数。(颜色对应名称可参见https://hub.spigotmc.org/javadocs/spigot/org/bukkit/DyeColor.html)。
剪羊毛与宰杀生物具有一样的properties属性。
例子: shear 1 name:Bob color:black
附魔物品: enchant
达成此目标需要玩家对指定物品进行附魔达到指定功能。第一个参数是物品名称, 该名称需在items. yml
中有定义。第二个是附魔的功能enchantment
和以:
隔开的附魔级别(附魔功能可参见https://hub.spigotmc.org/javadocs/spigot/org/bukkit/enchantments/Enchantment.html) 。
例子: enchant sword damage_all:1 events:reward`
往箱子放入物品: chestput
达成此目标要求玩家把指定的物品放在指定的箱子里。第一个参数是箱子的位置, 第二个参数是一个物品列表(物品须来自items yml
文件), 物品间用逗号隔开。您还可以在冒号后添加物品数量。在完成目标后, 这些物品将被删除, 除非您添加可选items-stay
参数。
例子: chestput 100;200;300;world emerald:5,sword events:tag,message
酿造: potion
要达成此目标, 玩家需要酿造指定数量的特定药水。第一个参数是在items yml
定义的药水 ID。第二个参数是药水的数量。您可以选择添加notify
参数, 以使目标显示为参与者的进度。
如果玩家是酿造台上最后一个点击配料槽并且没有匹配的药剂存在的,那么酿造将被认可。
酿造具有数量amount
和剩余left
属性。
Potion objective has `amount` and `left:` properties.
例子: potion weird_concoction 4 event:add_tag
吃/喝: consume
完成此目标需要吃指定食物或者喝指定药水。唯一需要的参数是在items.yml
文件定义的物品ID。
例子: consume tawny_owl events:faster_endurance_regen
变量: variable
这个目标是特殊的任务目标,您无法完成它, 它也将忽略定义的事件和条件。你要做的就是开始这个目标。目标活动期间, 玩家在聊天中键入的所有内容 (并匹配特殊模式) 将成为一个变量。模式是 “变量名: 值”(key: value
)。因此, 如果键入该值, 它将创建一个名为“变量名”key
的变量, 它将解析为“值”value
字符串。这种不是全局变量, 您可以将它们作为目标属性访问。假设您在objectives yml
文件中定义了此目标为var
。您可以在任何对话、事件或条件中访问变量%objective.var.key%
。在这个例子里, 它将解析为“值”value
。玩家可以键入其他内容, 变量将更改其值。变量是每个玩家个人的, 所以不同玩家的相同' 变量名 ' 的变量值也不一定相同, 这取决于玩家自己在聊天中键入的内容。如果你愿意,你想要多少变量就能有多少变量。要删除这个目标,只有使用objective delete
事件,没有其他方式。
你还可以使用variable
事件改变目标中的变量数值。有个可选的参数no-chat
,如果使用这个参数,玩家在对话栏输入的东西将不改变玩家变量的值。
例子: variable key: value
杀死玩家: kill
要达成此目标, 玩家需要杀死另一个玩家。第一个参数是要杀死的玩家数量。您还可以指定其他参数: name
后跟需要杀死的玩家名。required
后面跟用逗号','分割的条件列表,notify
参数将在玩家被击杀时显示提示。
例子: kill 5 required:team_B
投喂动物: breed
该目标只能应用于Spigot 1.10.2及之后的版本!
要达成此目标,玩家需要喂投指定类型的动物。第一个参数是动物类型 (动物类型可参见https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html) ,第二个是喂投数量 (正整数)。您可以添加通知参数notify
, 以便在每次喂投动物时显示带有剩余数量的邮件。当您可以指定任何实体时, 只有对象为可喂投的动物,目标才会达成。
例子: breed cow 10 notify events:reward