BlocklyNukkit WIKI

这里是BN百科

章节导览


事件系统

什么是事件

事件是nukkit服务器发生的动作,当事件触发时,会调用bn中与事件名同名的函数,并且在调用的时候会向函数注入一个事件对象作为参数,这个函数我们称之为事件回调函数,又叫做事件的监听器。简单的说,事件就是nukkit服务器和你的插件沟通的桥梁。

事件的工作方式

这里我们以玩家聊天事件来举例子

Created with Raphaël 2.2.0玩家在聊天框输入文字并发送nukkit服务器收到发送聊天文字请求bn查找是否有与事件同名函数生成对应的事件对象执行事件回调函数,并将事件对象作为第一个参数等待所有事件回调函数执行完成检测事件是否有被取消不执行聊天请求并结束解析修改过的事件对象根据解析结果来执行玩家的聊天请求按默认方式执行玩家的聊天请求yesnoyesno

正如你看到的,玩家聊天事件的执行方式就是这样,其他的事件我们也用十分类似的方式进行。

如何创建一个事件回调函数

事件回调函数又称事件监听器,只要您创建一个与您希望处理的事件名称相同的函数,也就是说,一个bn插件对于每一个事件只能有一个回调函数。
例如,创建一个玩家聊天事件的监听器:

function PlayerChatEvent(event){  
    let player = event.getPlayer();  
    let name = player.getName();  
    let msg = event.getMessage();  
    event.setMessage(name + " §7说:§r" + msg);  
}  
def PlayerChatEvent(event):  
    player = event.getPlayer()  
    name = player.getName()  
    msg = event.getMessage()  
    event.setMessage(name + u" §7说:§r" + msg)  
function PlayerChatEvent(event) 
    player = event:getPlayer() 
    name = player:getName()  
    msg = event:getMessage()  
    event:setMessage(name .. " §7说:§r" .. msg)
end  
function PlayerChatEvent($event){  
    $player = event->getPlayer();  
    $name = player->getName();  
    $msg = event->getMessage();  
    $event->setMessage(name . " §7说:§r" . msg);  
}  

不满意?前往编辑此页面

导航