Doc ID: SIRC-129

TrMenu-V3 API 文档

TrMenu-V3 是一个 Minecraft 服务器菜单插件,提供丰富的 API 用于插件开发集成。

Overview

TrMenu-V3 API 文档

概述

TrMenu-V3 是一个 Minecraft 服务器菜单插件,提供丰富的 API 用于插件开发集成。

包名

  • 主包:me.arasple.mc.trmenu
  • API 事件包:me.arasple.mc.trmenu.api.event
  • 显示模块包:me.arasple.mc.trmenu.module.display
  • 数据库模块包:me.arasple.mc.trmenu.module.internal.database

API 事件

1. CustomDatabaseEvent

包名: me.arasple.mc.trmenu.api.event
用途: 自定义数据库事件
构造函数:

CustomDatabaseEvent(name: String, database: Database? = null)

属性:

  • name: String – 数据库名称
  • database: Database? – 数据库实例(可空)

2. MenuOpenEvent

包名: me.arasple.mc.trmenu.api.event
用途: 菜单打开事件
构造函数:

MenuOpenEvent(session: MenuSession, menu: Menu, page: Int, reason: Reason = Reason.UNKNOWN)

属性:

  • session: MenuSession – 菜单会话
  • menu: Menu – 菜单实例
  • page: Int – 页码
  • reason: Reason – 打开原因

Reason 枚举:

  • RELOAD – 重新加载
  • PLAYER_COMMAND – 玩家命令
  • CONSOLE – 控制台
  • BINDING_COMMANDS – 绑定命令
  • BINDING_ITEMS – 绑定物品
  • BINDING_SHORTCUT – 绑定快捷键
  • UNKNOWN – 未知

3. MenuPageChangeEvent

包名: me.arasple.mc.trmenu.api.event
用途: 菜单翻页事件
构造函数:

MenuPageChangeEvent(session: MenuSession, from: Int, to: Int, override: Boolean)

属性:

  • session: MenuSession – 菜单会话
  • from: Int – 原页码
  • to: Int – 目标页码
  • override: Boolean – 是否覆盖

4. MenuCloseEvent

包名: me.arasple.mc.trmenu.api.event
用途: 菜单关闭事件
构造函数:

MenuCloseEvent(session: MenuSession)

属性:

  • session: MenuSession – 菜单会话

模块 API

1. Receptacle 模块

模块名称: receptacle
用途: TrMenu 的菜单底层处理

2. Actions 模块

模块名称: action
用途: TrMenu 的动作组处理器,支持自定义动作

PAPI 变量(PlaceholderAPI 占位符)

菜单总量

  • %trmenu_menus% – 菜单总数

传递参数

  • %trmenu_args_<Index>% – 传递的参数,<Index> 为参数索引(从0开始)

Metadata 数据

  • %trmenu_meta_<key>% – Metadata 数据
  • %trmenu_data_<key>% – 数据存储

Menu 菜单数据

  • %trmenu_menu_page% – 当前正在查看的页码
  • %trmenu_menu_pages% – 菜单总页码量
  • %trmenu_menu_next% – 下一页的页码
  • %trmenu_menu_prev% – 上一页的页码
  • %trmenu_menu_title% – 当前访问的菜单标题

JavaScript 运算

  • %trmenu_js_<Context>% – JavaScript 运算
    警告: 该变量可能会被恶意利用,请在确保玩家无法主动访问 PlaceholderAPI 变量的情况使用。
    启用方式: 前往 settings.yml 将节点 Options.Placeholders.JavaScript-Parse 启用

Jexl 运算

  • %trmenu_jexl_<Context>% – Jexl 运算
    警告: 该变量可能会被恶意利用,请在确保玩家无法主动访问 PlaceholderAPI 变量的情况使用。
    启用方式: 前往 settings.yml 将节点 Options.Placeholders.Jexl-Parse 启用

使用示例

事件监听示例(Kotlin)

package com.github.username

import taboolib.common.platform.event.SubscribeEvent

object Demo {
    @SubscribeEvent
    fun e(e: MenuOpenEvent) {
        println("玩家: ${e.session.viewer.name} 打开了菜单: ${e.menu.id}")
    }
}

事件监听说明

  • 使用 TabooLib 插件框架的事件系统
  • 通过 @SubscribeEvent 注解注册事件监听器
  • 可以监听 MenuOpenEvent, MenuPageChangeEvent, MenuCloseEvent, CustomDatabaseEvent 等事件

注意事项

  1. 所有事件都继承自 BukkitProxyEvent
  2. CustomDatabaseEventallowCancelled 属性固定为 false
  3. 使用 PAPI 变量时需要注意安全性,特别是 JavaScript 和 Jexl 运算功能
  4. 插件基于 TabooLib 框架开发,事件监听需要遵循 TabooLib 的事件系统

版本信息

  • 文档最后更新:2年前(API部分)
  • PAPI 变量最后更新:1年前