跳到主要内容

事件系统

Assiah 提供 9 个 Bukkit 事件,覆盖邮件的完整生命周期。标记 ✅ 的事件可取消。

事件一览

事件可取消说明
MailSendEvent邮件发送前触发
MailDeliveredEvent邮件投递完成后触发
MailReadEvent邮件被阅读时触发
MailClaimEvent邮件附件被领取时触发
MailDeleteEvent邮件被删除时触发
MailArchiveEvent邮件被归档时触发
MailReplyEvent邮件被回复时触发
MailForwardEvent邮件被转发时触发
MailDraftSaveEvent草稿被保存时触发

事件详情

MailSendEvent

邮件发送前触发,取消后邮件不会发送。

属性类型说明
senderUUID发送者 UUID
receiverUUID接收者 UUID
titleString邮件标题
bodyString邮件正文
attachmentsList<Attachment>附件列表
@EventHandler
fun onMailSend(event: MailSendEvent) {
// 禁止向某个玩家发送邮件
if (event.receiver == bannedUUID) {
event.isCancelled = true
}
}

MailDeliveredEvent

邮件成功投递到收件箱后触发。

属性类型说明
mailIdString邮件 ID
senderUUID发送者 UUID
receiverUUID接收者 UUID
@EventHandler
fun onMailDelivered(event: MailDeliveredEvent) {
// 通知在线玩家
val player = Bukkit.getPlayer(event.receiver)
player?.sendMessage("你收到了一封新邮件!")
}

MailReadEvent

邮件被阅读时触发。

属性类型说明
ownerIdUUID邮箱所有者 UUID
mailIdString邮件 ID

MailClaimEvent

邮件附件被领取时触发。

属性类型说明
ownerIdUUID领取者 UUID
mailIdString邮件 ID
attachmentsList<Attachment>被领取的附件

MailDeleteEvent

邮件被删除时触发。

属性类型说明
ownerIdUUID邮箱所有者 UUID
mailIdString邮件 ID

MailArchiveEvent

邮件被归档时触发。

属性类型说明
ownerIdUUID邮箱所有者 UUID
mailIdString邮件 ID

MailReplyEvent

邮件被回复时触发。

属性类型说明
ownerIdUUID回复者 UUID
originalMailIdString原始邮件 ID
replyMailIdString回复邮件 ID

MailForwardEvent

邮件被转发时触发。

属性类型说明
ownerIdUUID转发者 UUID
originalMailIdString原始邮件 ID
forwardMailIdString转发邮件 ID
targetUUID转发目标 UUID

MailDraftSaveEvent

草稿被保存时触发。

属性类型说明
ownerIdUUID草稿所有者 UUID
draftIdString草稿 ID

监听示例

import org.bukkit.event.EventHandler
import org.bukkit.event.Listener

class AssiahListener : Listener {

@EventHandler
fun onSend(event: MailSendEvent) {
// 记录邮件发送日志
logger.info("${event.sender} -> ${event.receiver}: ${event.title}")
}

@EventHandler
fun onClaim(event: MailClaimEvent) {
// 记录附件领取
logger.info("${event.ownerId} 领取了邮件 ${event.mailId} 的附件")
}
}
备注

所有事件位于 kim.hhhhhy.assiah.api.event 包下。