====== 任务目标列表 Objectives List ====== (版本:2017-01-12 翻译:kjiang、JohnHo、Crysta11ize [[https://github.com/Co0sh/BetonQuest/wiki/Objectives-List/f0d1258128e90c5874cababad45af7d40768ca13|原文链接]]) **//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//表示//桦木原木//),方块名称和方块附加值可以参阅[[https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html|材料类型]]。方块名称后的参数是方块数量,大于0表示需要放置,小于0表示需要破坏的量。可选的你还可以增加''notify''参数,在玩家每次放置/破坏这个方块的时候,来提醒玩家还有多少个方块需要处理。 此目标具有两个//属性property//,''amount''和''left''。''amount''表示在block中指明的数量,而''left''表示玩家还剩多少个方块需要处理,需要注意的是这个数值可能是负的。 **例子**: ''block LOG:2 -16 events:reward notify'' ===== 宰杀生物/怪物: mobkill ===== 玩家必须杀死一定量的某种生物。各种生物类型可以在[[https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html|生物列表]]中找到。另外你还可以用诸如''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。第一个参数是[[https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html|材料类型]],第二个是数量(整数)。 //烧炼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 ===== 这个目标可以通过骑乘[[https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html|指定实体]]来完成 。 ''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 ===== 此目标要求玩家在聊天栏键入密码。第一个参数是密码。所有 ' _ ' 字符被替换为空格。它用 [正则表达式] 进行了检查(可参见[[https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html|正则表达式]])。 (如果您的密码将是''^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''