• 金粒不够用?看这里!全面详细的金粒获取方式!【内有红包】
  • MineBBS 2022年国庆Mini建筑赛要来啦!奖励丰富,快来看看!【点我围观】
Menu - 十分实用的菜单插件,玩家福音!

LLSE Menu - 十分实用的菜单插件,玩家福音! 1.2.11

Source of resources
Original
Copyright link
#
Language
Multi-language
Supported version
  1. All the versions
使用教程:安装LiteXLoader并且把插件放进plugins文件夹里即可
命令:
/menu - 打开主菜单
/menu open [菜单文件名] - 打开对应菜单
/menu reload - 重载菜单配置文件/语言文件(仅控制台可使用)

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

modal 类型
QQ图片20200821155706.jpg


JSON示例:

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

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

JSON:
{
    "version": [ 1, 2, 11 ],    // 版本号
    "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" —— 增加的货币数额(正数表示加钱,负数表示扣钱)

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

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

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

JSON:
{
        "type": "form",    // 菜单类型
        "title": "主菜单",    // 菜单标题
        "content": "按钮如下:",   // 菜单内容
        "buttons": [   // 按钮内容
            {
                "imageX": false,    // 是否开启图片功能
                "moneyX": false,    // 是否开启经济功能
                "text": "你好",    // 按钮显示的文字
                "display": [    // 该按钮是的显示条件(可设置多个条件,若为 [] 则表示无条件)
                    {
                        "condition": 1,    // 0 为仅普通玩家(不包含OP),1 为仅 OP
                        "type": "permission"    // 显示条件的类型(玩家权限)
                    },
                    {
                        "condition": "aaa",    // 对应的玩家标签
                        "type": "permission"    // 显示条件的类型(玩家标签)
                    }
                ],
                "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": "公告",   // 菜单标题
    "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 的协助测试!
最后若有问题或建议的,请加入QQ群提出,谢谢!
Author
北斗七星TJ
Price
80金粒
Downloads
585
Views
14,084
First release
Last update
Rating
4.77 star(s) 22 ratings

Share this resource

Latest updates

  1. Bug fix

    [~]修复了无法自动更新的bug
  2. Bug fix & Update

    [~]修复了子菜单命令注册错误的bug [~]原 "op_only" 替换成 “display”:[{xxx}],新增了识别玩家标签的功能...
  3. Bug fix

    [~]修复了文件无法创建的bug

Latest reviews

还好用吧 只是改东西比较烧脑
求更新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
感谢支持
好评!!!!希望可以像CMENU那样热加载这样更方便!
北斗七星TJ
北斗七星TJ
其实这是支持的。在Menu中,仅有config.json和default.json不是热加载的,其余的自定义菜单都是热加载的。
我在帖子中已经说明:config.json和default.json可以通过在后台输入menu reload以实现文件的重载。