事件列表
(版本:2019-01-20 翻译:Afry、kjiang 原文链接)
消息: message
static
可以向玩家对话框中发送一条消息. 可以用&
显示颜色 . 可以用 {lang}
区分多语言. 这里可以使用和聊天中一样的参数. 但是不能用 %npc%
.
例子: message {en} &4You are banned, %player%! {pl} &4Jestes zbanowany, %player%! {de}&4Ich weiß nicht.
指令: command
persistent, static
通过控制台执行命令. 这里只能用 %player%
属性. 可以执行多条指令,用 |
分隔.
例子: command kill %player%|ban %player%
传送: teleport
传送玩家到一个位置,可以控制玩家视角. 这个指令会导致强制关闭当前对话. 只有一个位置参数: 100;200;300;world
或者 100;200;300;world;90;45
(最后两个值控制玩家视角)
例子: teleport 123;32;-789;world_the_nether;180;45
积分: point
persistent
指定玩家一种积分进行操作. 可以用乘法. 第一个操作是积分的类型(自己命名), 第二个参数是 加/减/乘.
例子: point 管家好感度 10
例子: point 村庄荣誉 *0.75
删除积分: deletepoint
persistent, static
删除指定玩家的某项积分。
例子: deletepoint 管家好感度
例子: deletepoint 村庄荣誉
标签: tag
persistent
为玩家添加(add)或者移除(del)标签. 多标签可以用逗号分隔.
例子: tag add quest_started,new_entry
任务控制: objective
persistent
启动/删除/完成任务。格式是objective <action> 任务名称
,<action>
可以是start
、delete
、complete
。后面的任务名称
应该提前在objectives.yml中定义。
例子: objective start wood
日记: journal
添加或删除玩家的日记. 第一个参数是添加(add)或删除(delete), 第二个参数定义在 journal.yml
中. 也可以直邮一个参数update
, 据说挺有用.
例子: journal add quest_started
例子: journal delete quest_started
从日志中删除一个页面
例子: journal update
闪电: lightning
static
根据给出的位置搞一个闪电出来. 只有一个这样的参数: 100;200;300;world
例子: lightning 100;64;-100;survival
爆炸: explosion
static
制造一个爆炸. 据说能着火和摧毁方块. 能定义爆炸能量,但是不要炸服. TNT能量是4,凋零是7. 第一个参数定义是否着火(类似恶魂). 第二个参数定义是否会破坏方块. 第三个是爆炸能量. 最后一个参数是位置.
例子: explosion 0 1 4 100;64;-100;survival
给物品: give
给玩家物品. 这些物品在 item.yml
定义. 用逗号隔开,每个物品可以用分号指定数量,默认数量是1. 如果背包没有位置,会掉在地上, 除非他们是任务物品. 这些东西会放在玩家背包,你可以写一个提示.
例子: give emerald:5,emerald_block:9
移除物品: take
从玩家背包移除物品. 要注意的是,不要让玩家钻了“把扔物品扔地上再执行这个事件”的空子. 需要先判断玩家是否有这些物品!
例子: take emerald:120,sword
药水效果: effect
给玩家药水效果。效果列表,第二个参数代表药水效果的时间是多少秒,第三个代表了药水的等级。可以使用ambient
可以让玩家看不到药水的视觉特效(类似于信标)。隐藏粒子特效添加ambient
,不显示右上角图标则添加noicon
。
例子: effect POISON 45 1 ambient hidden
移除药水效果: deleffect
移除玩家身上的药水效果。如果效果填写any
则移除全部药水效果。
例子: deleffect ABSORPTION,BLINDNESS
对话: conversation
让玩家开始一个对话,只有一个参数,对话的ID. 这个需要对话的权限(应该都有)!
例子: conversation village_smith
杀死: kill
一言不合就杀玩家.
例子: kill
生成生物: spawn
persistent, static
在指定的位置放置一定数量的某种生物。第一个参数是坐标位置,然后第二个是怪物类型,第三个是数量。最后一个是可选参数,你可以给怪物取个名字,名字内所有的空格需要用_
代替。除此之外,你还可以通过`marked:`给怪物添加一个隐藏标记,你可以在`mobkill`任务目标检中使用这个标记,来限定被杀的生物必须具有这个标记。
你还可以指定生物的装备和手持物品,如h:
头盔、c:
胸甲、l:
腿部、b:
鞋子、m:
主手、o:
副手,每样只可以规定一个物品所以不用填数量。物品名称来自items.yml
。另外你还可以通过drops:
指定生物死亡时的掉落物品,物品名称后面用:
填写数量,多个物品用,
隔开。
例子: spawn 100;200;300;world SKELETON 5 marked:targets
例子: spawn 100;200;300;world ZOMBIE 1 name:Bolec h:blue_hat c:red_vest drops:emerald:10,bread:2
时间: time
设置或增减时间,24小时制。分钟可以用小数表示。
例子: time +6
天气: weather
设置天气. 参数是不需要翻译的 sun
, rain
or storm
.
例子: weather rain
事件包: folder
persistent, static
可以一次性执行多个事件
任务。每个任务之间可以延时执行。这个是持续persistent事件,所以即使玩家退出游戏了,BetonQuest依然会执行folder内的任务。需要注意的是,当玩家退出游戏后所有的条件Conditions都会变成失效false,所以这些事件都不能有任何前提条件!
这个事件有两个可选参数,delay:
和 random:
。delay
默认是0,单位是秒。random
是事件执行的个数,如果为0或者不写这个参数,将会执行folder内的全部事件
。
例子: folder event1,event2,event3 delay:5 random:1
设置方块: setblock
persistent, static
可以给一个位置设置材料. 第一个参数是材料的名字 (材料列表). 有个可选参数data:
是材料的子ID(比如木头就有好多种),整数,默认0。
例子: setblock REDSTONE_BLOCK 100;200;300;world
伤害玩家: damage
用小拳拳给玩家一定的伤害,可以为小数。
例子: damage 20
团队事件: party
对团队Party
内的所有成员执行一系列事件。关于团队Party
的更多信息请参阅团队 Party章节。
例子: party 10 has_tag1,!has_tag2 give_reward
清除生物: clear
清除一定区域内的指定生物。第一个参数是(生物类型),第二个参数是 坐标100;200;300;world;10
,然后是刷怪半径。可以指定名字 name:
参数。
例子: clear ZOMBIE,CREEPER 100;200;300;world 10 name:Monster
多任务: run
可以一次性执行多个事件event。为了区分每个任务,开头部分需用^
标记。有别于任务包folder,你需要填写具体的event而不是event的名字。另外,这些event会在一个时刻tick内一次性执行而不是逐个tick轮流执行。因为Bug的原因,请不要使用条件Condition判断,作者表示此问题将会在1.9版修复。
例子: run ^tag add beton ^give emerald:5 ^entry add beton ^kill
给日记本: givejournal
类似于 /j 命令.
例子: givejournal
玩家指令: sudo
类似于command
指令,这个相当于玩家自己输入指令。
例子: sudo spawn
超级玩家指令: opsudo
类似于command
指令,但是这个相当于玩家使用超级管理员(op)权限使用指令。
例子: opsudo fly
往箱子里添加物品: chestgive
persistent, static
往箱子/容器里添加物品。如果容器满了,那么加不进去的物品就会掉到地上。添加的对象可以是箱子/陷阱箱/漏斗/投掷器/熔炉等等。当所在位置并没有任何容器的时候,BetonQuest会在服务器控制台console中显示一个错误。
例子: chestgive 100;200;300;world emerald:5,sword
从箱子里移除物品: chesttake
persistent, static
和take类似,但这个事件会从箱子等容器移除物品,参数定义和chestgive
事件一样。
事件: chesttake 100;200;300;world emerald:5,sword
清空箱子: chestclear
persistent, static
这个事件会清空箱子等容器内的全部东西,唯一的参数是坐标。
例子: chestclear 100;200;300;world
导航/指南针: compass
当启动这个事件的时候,玩家可以让他的指南针指向特定的坐标。玩家还需要打开他的背包并点击“指南针”才可以选择坐标。第一个参数是添加add
或删除del
,第二个参数是坐标的名字
,坐标名字在main.yml
中定义。
目的地坐标必须提前在main.yml
定义。你可以根据不同语言指定目的地的名字
,你也可以干脆为所有语言直接写一个通用名字而不用管翻译问题。另外可选的你还可以自定义一个物品(在items.yml
中定义)作为按钮图标,用于在玩家背包中展示。一个compass的配置文件例子如下:
compass: beton: name: en: Target pl: Cel location: 100;200;300;world item: scroll
例子: compass add beton
取消任务: cancel
类似于GUI里面的任务取消按钮,这个事件用来取消某个任务。启动这个事件相当与玩家自己点击取消任务按钮。唯一的参数是需要取消的任务名称
,这个名称来自配置文件main.yml
。
例子: cancel wood
记分板Scoreboard: score
和积分point
类似,唯一的区别是这个功能使用的是Minecraft自带的记分板Scoreboard。你可以加/减/乘/除某个记分项目
的积分。第一个参数是记分项目名称,第二个是加减乘除的分数,正数加,负数减,*n
乘,乘以小数则是除。
例子: score kills 1
拉杆: lever
持续的, 静态的
这个事件可以用来控制拉杆。第一个参数是拉杆所在的坐标,第二个是on
打开、off
关闭、或toggle
扳动。
例子: lever 100;200;300;world toggle
门: door
持续的, 静态的
可以用来控制门、陷阱门、栅栏门等。参数和上面的lever
拉杆一样。
例子: door 100;200;300;world off
If else逻辑判断: if
此事件可以根据某个condition的判断结果,决定执行第一个还是第二个event。基本格式是if condition1 event1 else event2
,这里condition1
来自于conditions.yml
,event1
和event2
则是另外两个来自events.yml
的事件名称。基本逻辑是,如果conditions1
是满足的,那么启动事件event1
,否则就启动事件event2
。
例子: if sun rain else sun
变量: variable
这个事件只有一个功能:改变某个保存在变量任务目标 Variable Objective中的值。第一个参数是来自variable objective的ID(输入其它ID将会报错),第二个是变量的名称
,第三个是需要更改的值。第二和第三个参数你可以直接使用%…%
这样的值。关于变量目标 variable objective
的更多信息请参阅任务目标:变量variable了解跟多关于变量的信息。
(kj:我看到也一脸懵比,可能翻译有误,所以英文原文摆这里了)This events has only one purpose - to change variables stored in `variable` objective. The first argument is the ID of a `variable` objective (if you use any other type you will get an error). Second one is the key of the variable and the third is the value. Both can use `%…%` variables. Refer to `variable` objective documentation for information about storing variables.
例子: variable some_var_obj name %player%
Title: title
This event displays a title or a subtitle. The first argument is the type (title
or subtitle
), second argument are title's duration times (in ticks) separated by semicolons - fade in, stay and fade out: 20;100;20
. If you set it to three zeros (0;0;0
) the plugin will use default Minecraft values. After these two required arguments there is a title message, formatted like in the message
event, which supports multiple languages, color codes and variables. Keep in mind that the subtitle will only appear if the title is visible - that's how Minecraft works.
Example: title subtitle 0;0;0 {en} Lobby joined! {pl} Dołączono do lobby!
Language: language
This event changes player's language to the specified one. There is only one argument, the language name.
Example: language es
Play sound: playsound
此事件将为玩家播放指定的声音。唯一必需的参数是声音名称(如果您使用的是资源包,则可以使用自定义值)。还有一些可选参数。 location:
在固定地点播放音乐, category:
是 声音类型 (如果没有指定,将默认使用 MASTER
), volume:
是一个控制音量的小数, pitch:
控制音高
例子: playsound ENTITY_EXPERIENCE_ORB_PICKUP location:100;200;300
Give experience: xp
Gives the specified amount of experience points to the player. If you want to give whole levels to a player add the `level` argument.
Example: xp 4 level
显示通知: notify
使用NotifyIO通知提示系统触发一个通知。第一个参数是你需要显示的通知内容。第二个可选参数是通知类型category:
,如果有多个可用英文逗号分隔开。你还可以通过io:
参数选择NotifyIO来自定义通知显示的方式。如果你决定采用自定义通知,你需要用选项:值
的格式在后面为NotifyIO添加具体的参数。
如果你既不设定一个有效的category:
类型,也没在custom.yml
中定义过默认的类型,那么你必须指明具体用哪一个io:
,否则系统会直接使用默认的io(一般情况下是聊天框)展示你的通知内容。
具体请参阅通知与提示章节。
例子: notify 这是一个测试 category:类型A io:bossbar barColor:red sound:BLOCK_CHEST_CLOSE
(上例中用到Boss血条 NotifyIO)
全局积分: globalpoint
persistent, static
这与正常点事件的工作方式相同,但它操纵全局类别中的积分,而不是操纵特定玩家类别的积分。这些全局类别与玩家无关,因此您可以例如在每次玩家执行任务时向此类全局类别添加一点积分,并为第 100 个执行任务的玩家提供一些特殊奖励。
例子: globalpoint global_knownusers 1
全局标签: globaltag
persistent, static
与普通标签事件的工作方式相同,但不是为一个玩家设置标签,而是为所有玩家设置全局标签。
例子: globaltag add global_areNPCsAgressive
随机选择: pickrandom
persistent, static
另一个事件容器。它选择一个(或多个)给定的事件并运行它。您必须通过在事件 ID 之前添加百分比来指定每个事件被选中的可能性。如果您的总百分比高于 100%,则事件不会中断。
默认情况下,它会从列表中随机选择一个事件,但如果添加 amount:3
就会选择随机三个事件,并且amount:0
的时候什么都不做。
如果使用变量,则事件名称前必须有两个,一个来自变量,另一个来自事件的语法。
例子: pickrandom 20.5%event1,0.5%event2,79%event3 amount:2
例子: pickrandom %point.factionXP.amountevent1,0.5%event2,79%event3,1%event4 amount:3