• MineBBS 第一期星光推广计划开始了!丰富的金粒奖励,还有现金大奖噢~【点我去看看】
Menu - 十分实用的菜单插件,玩家福音!

LSE Menu - 十分实用的菜单插件,玩家福音! Beta 1.3.0

版权类型
原创
版权链接
#
语言支持
多语言
适配版本(基岩)
  1. 全版本
使用教程:安装LiteXLoader并且把插件放进plugins文件夹里即可
命令:
/menu - 打开主菜单
/menu open [菜单文件名] - 打开对应菜单
/menu reload - 重载菜单配置文件/语言文件(仅控制台可使用)


1.3.0 新内容 —— 菜单编辑器:

命令​
用途​
完成状态​
/menueditor form​
编辑普通菜单​
✓​
/menueditor modal​
编辑模式菜单​
✕​

PS:1. 更新后的服主在使用编辑器时需在模式菜单内添加 "name": "(菜单名称)",否则可能会出 bug
2. 此菜单编辑器目前仍在测试阶段,如有不放心请先将菜单数据备份好,以免丢失!
3. 命令编辑暂不支持 "code" 与 "script" 类型,如有需要请手动添加


Q:版本更新后需要重新调整配置文件吗?
A:不需要,从 1.2.8 升级到之后的任何版本都不需要更改配置文件。

Q:可以进行转载吗?
A:可以,但必须先经过本人同意。

Q:可以进行整合吗?
A:可以进行免费整合,如需进行付费整合,请先联系本人,待本人同意后方可。

Q:有 bug 或者想提意见怎么办?
A:可以进入
QQ群 进行反馈,有问题也可以去 QQ群 里去问。作者有时候可能不在线,可以先问问群里的小伙伴。


Q:如何构造空按钮?
A:"cmd"部分只填 [] 即可。

Q:怎么写菜单的配置文件?
A:请按照本贴中 JSON示例 中的内容进行编写,或者下载 教程.zip 文件,阅读其中的内容(建议先耐心看完本帖)。

Q:如何重载菜单文件?
A:除了 configs.json 配置文件外,其余的菜单文件都支持热加载。
PS:重载 configs.json 文件的方法:在后台输入 menu reload 即可。

Q:为什么点击按钮后无法传送,并且后台会出现unload的报错?
A:这应该是tp命令以cmd方式执行后出现的情况。
PS:解决方法:将cmd改为teleport。

Q:手动更新好麻烦啊,能自动更新吗?
A:可以,在游戏中逐一打开各个菜单即可自动更新。

Q:JSON要怎么写?
A:建议查看教程:


感谢 PeterXiong720 的 Fantasy Menu 中提出的一种新的命令执行方式。
大家可以用
MenuEditor(菜单编辑器)来编辑菜单哦!

PS:code/script 类型可以执行 js 代码,会 js 的服主可自行调整各插件的 GUI(前提是作者有开放接口),或者给玩家带有 Lore 的 NBT 标签的物品等等。
PS:更新后(升级到 1.2.8 版本)请在 configs.json 中加几行:
"open": "minecraft:clock", // 更新后改为了物品英文id
"lang": "zh_CN",
"currency": "LLMoney",
"scoreboard": "money"
PS:配置/菜单文件修改后无需重启服务器,在服务器后台输入menu reload即可重载文件(黑科技一直都忘说了)

菜单文件路径:plugins/Menu/menu/
Js文件路径:plugins/Menu/script/
语言文件路径:plugins/Menu/lang/


Js 教程:
https://www.runoob.com/js/js-tutorial.html

菜单展示:

form 类型

QQ图片20200810114113.jpg
QQ图片20200810114113.jpg
QQ图片20200810114113.jpg

modal 类型

QQ图片20200821155706.jpg
JSON示例:

configs.json文件
请勿修改":"前的部分,作者一概不为此问题负责!
"name"为菜单的文件名称(以json为后缀名)
"command"内为打开菜单的命令
"description"内为注册的命令的描述
若还需添加菜单的话请复制"menu"内的内容,并粘贴至大括号下
记得在前面的大括号后加上一个","

注:若修改configs.json文件,请重启服务器!

JSON:
{
    "version": [ 1, 2, 12 ],    // 版本号
    "lang": "zh_CN",    // 语言类型
    "currency": "LLMoney",  // 货币类型(Scoreboard为计分板)
    "scoreboard": "money",  // 计分板名称(LLMoney无需)
    "open": "minecraft:clock",    // 主菜单的点地打开方式(默认为钟)
    "menu": [    // 这里写需要注册命令的菜单
        {
            "name": "test",    // 注册的菜单的文件名
            "title": "测试菜单",    // 无用貌似,方便后期修改
            "command": "test",    // 注册的命令
            "description": "子菜单?",    // 命令的描述
            "admin": false    // 是否只有OP才可以打开菜单
        }
    ]
}

default.json文件
请勿修改":"前的部分,作者一概不为此问题负责!
"money" —— 增加的货币数额(正数表示加钱,负数表示扣钱)
"name" —— 菜单的名称

"type" —— 命令执行的类型:
"default"为默认的命令执行方式
"temporary"即可执行OP可执行的命令
"op"即可使该命令需OP可才执行
"cmd"即可以后台的方式执行该命令(可以使用目标选择器@s/@p/@name)
"teleport"即执行传送玩家的命令
"code"即可以执行js代码(Player指针为p)
"script"即可以执行js文件(main函数:function main(p))
"menu"即可以以菜单的方式打开该菜单的文件名

"AMenu"即可以以菜单的方式打开该菜单的文件名(需管理员权限)

注:除非插件作者声明某个命令为 OP命令 或是 后台命令,否则类型一律为 "default"!!!

JSON:
{
        "type": "form",    // 菜单类型
        "name": "默认菜单",    // 菜单名称
        "title": "主菜单",    // 菜单标题
        "content": "按钮如下:",   // 菜单内容
        "buttons": [   // 按钮内容
            {
                "imageX": false,    // 是否开启图片功能
                "moneyX": false,    // 是否开启经济功能
                "text": "你好",    // 按钮显示的文字
                "display": [    // 该按钮是的显示条件(可设置多个条件,若为 [] 则表示无条件)
                    {
                        "condition": 1,    // 0 为仅普通玩家(不包含OP),1 为仅 OP
                        "type": "permission"    // 显示条件的类型(玩家权限)
                    },
                    {
                        "condition": "aaa",    // 对应的玩家标签
                        "type": "tag"    // 显示条件的类型(玩家标签)
                    }
                ],
                "cmd": [    // 点击后执行的内容
                    {
                        "command": "me HelloWorld!",    // 点击后执行的命令
                        "type": "default"    // 命令执行的类型(以玩家身份执行)
                    }
                ]
            },
            // 接下来的按钮同理
            {
                "imageX": false,
                "moneyX": false,
                "text": "生存",
                "display": [],
                "cmd": [
                    {
                        "command": "gamemode 0",
                        "type": "temporary"    // 命令执行的类型(以OP身份执行)
                    }
                ]
            },
            {
                "imageX": false,
                "moneyX": false,
                "money": 0,
                "text": "传送",
                "display": [],
                "cmd": [
                    {
                        "command": [ 0, 0, 0, "%default%"],
                        "type": "teleport"
                    }
                ]
            },
            {
                "imageX": false,
                "moneyX": false,
                "image": "https://img0.baidu.com/it/u=2124288744,3826440430&fm=26&fmt=auto&gp=0.jpg",  // 直接引用网页图片(链接要完整,前面要加https或http)
                "text": "给所有人说悄悄话",
                "display": [],
                "cmd": [
                    {
                        "command": "tell @a qwq",
                        "type": "operator"    // 命令执行的类型(只有OP才可以执行,其他同"default")
                    },
                    {
                        "command": "tellraw @s {\"rawtext\":[{\"text\":\"只有OP才可以执行哟!\"}]}",
                        "type": "cmd"    // 命令执行的类型(以后台身份执行)
                    }
                ]
            },
            {
                "imageX": true,
                "moneyX": false,
                "image": "textures/items/apple",   // 图片路径(1.2.5 v1及以上自动识别路径类型)(MC图片的路径)
                "money": 0,  // 增加的货币数额(加了多少钱,正数表示加钱,负数表示扣钱)
                "text": "苹果",
                "display": [],
                "cmd": [
                    {
                        "command": "give @s apple 1",
                        "type": "cmd"    // 命令执行的类型(以后台身份执行)
                    },
                    {
                        "command": "tellraw @s {\"rawtext\":[{\"text\":\"你还是太嫩了!\"}]}",
                        "type": "cmd"
                    }
                ]
            },
            {
                "imageX": false,
                "moneyX": false,
                "text": "钟",
                "display": [],
                "cmd": [
                    {
                        "command": "let item = mc.newItem('minecraft:clock', 1); p.giveItem(item);",    // js代码(记得用字符串围起来)
                        "type": "code"    // 命令执行的类型(以js代码方式执行)
                    },
                    {
                        "command": "p.tell('这钟很特别哦!')",   // js代码(记得用字符串围起来)
                        "type": "code"    // 命令执行的类型(以js代码方式执行)
                    }
                ]
            },
            {
                "imageX": false,
                "moneyX": false,
                "text": "说句话",
                "display": [],
                "cmd": [
                    {
                        "command": "Ex",    // js文件名代码(记得用字符串围起来)
                        "type": "script"    // 命令执行的类型(以js文件方式执行)
                    }
                ]
            },
            {
                "imageX": false,
                "moneyX": false,
                "text": "打开测试菜单",
                "display": [],
                "cmd": [
                    {
                        "command": "test",    // 菜单名
                        "type": "AMenu"    // 命令执行的类型(以管理员菜单方式执行)
                    }
                ]
            },
            {
                "imageX": false,
                "moneyX": false,
                "text": "打开公告",
                "display": [],
                "cmd": [
                    {
                        "command": "announcement",    // 菜单名
                        "type": "menu"    // 命令执行的类型(以菜单方式执行)
                    }
                ]
            }
        ]
    }
}

公告示例文件:announcement.json
请勿修改":"前的部分,作者一概不为此问题负责!


JSON:
{
    "title": "公告",   // 菜单标题
    "name": "公告1",   // 菜单名称
    "type": "modal",   // 菜单类型
    "content": "本鸽子更新了! ",   // 菜单文字内容
    "button1": {   // 按钮1内容
        "text": "确定",   // 按钮显示的文字
        "cmd": []   // 执行的命令(这里为不执行命令的示例)
    },
    "button2": {   // 按钮2内容
        "text": "取消",   // 按钮显示的文字
        "cmd": [   // 执行的内容
            {
                "command": "tellraw @s {\"rawtext\":{\"text\":\"怎么可能!\"}}",   // 执行的命令
                "type": "cmd"   // 命令执行的类型(以后台身份执行)
            }
        ]
    }
}

脚本示例文件:Ex.js
请勿修改":"前的部分,作者一概不为此问题负责!
注:标 # 的代码,表示为固定格式(exports.main = (此处填你要导出的函数))


JavaScript:
# exports.__esModule = true;  // 注册接口
# exports.main = void 0;   // 注册 main 函数接口

function main(p)  // 要导出的 main 函数
{
    p.tell("你好啊");  // p:Player指针
    /*
    p.tell(msg[,type])
    p.sendText(msg[,type])

    参数:
    msg : String
    待发送的文本

    type : Integer
    (可选参数)发送的文本消息类型,默认为 0

    type 参数    消息类型
    0    普通消息(Raw)
    1    聊天消息(Chat)
    4    音乐盒消息(Popup)
    5    物品栏上方的消息(Tip)
    9    Json 格式消息(Json) // tellraw
    返回值:是否成功发送

    返回值类型:Boolean
    */
}

# exports.main = main;  // 给 main 接口赋予一个函数


最后感谢 Nian7LAA 、TWAKP、xiaodu121 、harry 的协助测试!
最后若有问题或建议的,请加入QQ群提出,谢谢!
作者
北斗七星TJ
价格
80金粒
下载
739
查看
20,501
首次发布
最后更新
评分
4.78 星 23 个评分

最新更新

  1. Update

    [~]更新了鸽了四年已久的菜单编辑器 [~]食用方法(需在游戏内使用): 命令 用途 完成状态 /menueditor form 编辑普通菜单 ✓ /menueditor...
  2. Bug fix

    [~]修复了用ll3时命令注册异常的问题 [~]修复了自定义命令OP身份无法判断的问题 鸣谢 @harry 的协助
  3. 修bug

    ~

最新评价

居然更新了?!
还好用吧 只是改东西比较烧脑
求更新1.18.30
北斗七星TJ
北斗七星TJ
支持全版本,如果不能用请加入qq群反馈
一直说着要评论,今天终于记起来了hhh,补上!
当时在很多菜单中选择了Menu(别问为什么,问就是强迫症,看这个plugin就叫Menu极度舒适),也一直用到现在哈哈哈.
我服因为是综合服,而菜单主要是给生存区使用的,为了防止小游戏区可用,所以给玩家加上tag=game,因此在menu中写指令的时候都会写上tag=[!game].结果这时,问题就出现了,我发现不论是cmd模式亦或是temporary模式,都无法使用,错误还是各种各样的,有的是未知指令,有的是您无使用此斜杠命令的权限等等,真的很乱.于是我及时向北斗佬反馈.于是骚扰(bushi)了北斗佬大概1-2个月awa.不过反馈那前后是学期间,北斗佬也在忙学业,于是也就不了了之了,在那期间也想过还是算了吧,换个menu继续用得了,不打扰人家.but问题是除了这个Menu没有其他菜单插件的按钮可以同时执行多条指令了(这就是Menu最让我欣喜的地方).
后来到了寒假,我再一次反馈,很让我高兴的是北斗佬很认真的听了我的意见,并且多次在线修改询问我是否可以,前后也有了好几天哈哈哈哈哈,我是看着北斗佬一会找LXL那边反馈,一会问我现在行不行,真的非常非常用心!!!!!
后来...
《震惊!老牌Menu竟在一周内诈尸更新四次!》
《三句话,让北斗佬更新插件十八次》(雾)

总而言之,这个插件真的是非常非常用心,插件作者北斗佬人也很好,真的要五星好评!!!!!强推强推啊啊啊~

差不多就是这样。话好像有点多了。QAQ
北斗七星TJ
北斗七星TJ
感谢支持呀
卧槽,现在功能这么强大了吗,支持支持
北斗七星TJ
北斗七星TJ
感谢支持
你能让op执行的按钮使成员不可见吗,仅op可见
北斗七星TJ
北斗七星TJ
这个提议很好,下个版本会更新的。
功能很全,制作起来也非常简单。
但有方法在菜单文件的content中使用完整的JSON文本吗?如游戏中的selector、score等。
使用selector数据标签可在content中显示实体名称,用于显示玩家名;score则可显示计分板分数。
建议提供相关的API!
北斗七星TJ
北斗七星TJ
这些最好是用代码的形式呈现,毕竟整这么多API会显得比较多余,而且LXL提供了很多API,可以在代码中直接引用
用了一段时间,感觉蛮好用的,支持一下!
北斗七星TJ
北斗七星TJ
感谢支持