• 为弥补网络攻击遭受的损失,我们将于周六、日发放每日登录100金粒补偿,记得上线领取哦~
  • 基于Skript的互通开发指南来啦!来了解一下吧~【点我传送】
Menu - 十分实用的菜单插件,玩家福音!

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

请登录后获取
资源类型
原创
版权链接
#
依赖
LiteLoader
语言
多语言
支持版本
  1. 全版本
使用教程:安装LiteXLoader并且把插件放进plugins文件夹里即可

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: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.4",    // 版本号
    "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": [   // 按钮内容
            {
                "op_only": false,    // 该按钮是否仅OP可见
                "imageX": false,    // 是否开启图片功能
                "moneyX": false,    // 是否开启经济功能
                "text": "你好",    // 按钮显示的文字
                "cmd": [    // 点击后执行的内容
                    {
                        "command": "me HelloWorld!",    // 点击后执行的命令
                        "type": "default"    // 命令执行的类型(以玩家身份执行)
                    }
                ]
            },
            // 接下来的按钮同理
            {
                "op_only": false,
                "imageX": false,
                "moneyX": false,
                "text": "生存",
                "cmd": [
                    {
                        "command": "gamemode 0",
                        "type": "temporary"    // 命令执行的类型(以OP身份执行)
                    }
                ]
            },
            {
                "op_only": false,
                "imageX": false,
                "moneyX": false,
                "money": 0,
                "text": "传送",
                "cmd": [
                    {
                        "command": [ 0, 0, 0, "%default%"],
                        "type": "teleport"
                    }
                ]
            },
            {
                "op_only": false,
                "imageX": false,
                "moneyX": false,
                "image": "https://img0.baidu.com/it/u=2124288744,3826440430&fm=26&fmt=auto&gp=0.jpg",  // 直接引用网页图片(链接要完整,前面要加https或http)
                "text": "给所有人说悄悄话",
                "cmd": [
                    {
                        "command": "tell @a qwq",
                        "type": "operator"    // 命令执行的类型(只有OP才可以执行,其他同"default")
                    },
                    {
                        "command": "tellraw @s {\"rawtext\":[{\"text\":\"只有OP才可以执行哟!\"}]}",
                        "type": "cmd"    // 命令执行的类型(以后台身份执行)
                    }
                ]
            },
            {
                "op_only": false,
                "imageX": true,
                "moneyX": false,
                "image": "textures/items/apple",   // 图片路径(1.2.5 v1及以上自动识别路径类型)(MC图片的路径)
                "money": 0,  // 增加的货币数额(加了多少钱,正数表示加钱,负数表示扣钱)
                "text": "苹果",
                "cmd": [
                    {
                        "command": "give @s apple 1",
                        "type": "cmd"    // 命令执行的类型(以后台身份执行)
                    },
                    {
                        "command": "tellraw @s {\"rawtext\":[{\"text\":\"你还是太嫩了!\"}]}",
                        "type": "cmd"
                    }
                ]
            },
            {
                "op_only": false,
                "imageX": false,
                "moneyX": false,
                "text": "钟",
                "cmd": [
                    {
                        "command": "let item = mc.newItem('minecraft:clock', 1); p.giveItem(item);",    // js代码(记得用字符串围起来)
                        "type": "code"    // 命令执行的类型(以js代码方式执行)
                    },
                    {
                        "command": "p.tell('这钟很特别哦!')",   // js代码(记得用字符串围起来)
                        "type": "code"    // 命令执行的类型(以js代码方式执行)
                    }
                ]
            },
            {
                "op_only": false,
                "imageX": false,
                "moneyX": false,
                "text": "说句话",
                "cmd": [
                    {
                        "command": "Ex",    // js文件名代码(记得用字符串围起来)
                        "type": "script"    // 命令执行的类型(以js文件方式执行)
                    }
                ]
            },
            {
                "op_only": false,
                "imageX": false,
                "moneyX": false,
                "text": "打开测试菜单",
                "cmd": [
                    {
                        "command": "test",    // 菜单名
                        "type": "AMenu"    // 命令执行的类型(以管理员菜单方式执行)
                    }
                ]
            },
            {
                "op_only": true,
                "imageX": false,
                "moneyX": false,
                "text": "打开公告",
                "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群提出,谢谢!
作者
北斗七星TJ
价格
80金粒
下载
510
查看
11,717
首次发布
最后更新
评分
4.76 星 21 个评分

最新更新

  1. 完了,版本号记错了

    麻烦各位从1.2.9.4升级到当前版本在config后面加一下"default_menu": "default" 版本号记错了,导致1.2.9.4版本的无法升级,实在是抱歉:吓:
  2. Update

    [~]现在可以修改主菜单文件名了 主菜单文件名可在configs.json中的"default_menu"处修改 [~]将储存菜单文件的文件夹Menu改名为menu(无需手动修改,会自动适配的)
  3. Bug fix

    修复了使用计分板经济时,创建计分板导致插件无法加载的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
感谢支持
好评!!!!希望可以像CMENU那样热加载这样更方便!
北斗七星TJ
北斗七星TJ
其实这是支持的。在Menu中,仅有config.json和default.json不是热加载的,其余的自定义菜单都是热加载的。
我在帖子中已经说明:config.json和default.json可以通过在后台输入menu reload以实现文件的重载。
File ".\plugins\py\Menu.py", line 3, in <module>
MenuAPI.init()
File "Menu.py", line 116, in init
File "Menu.py", line 131, in LoadJson
UnicodeDecodeError: 'gbk' codec can't decode byte 0x95 in position 49: illegal multibyte sequence
北斗七星TJ
北斗七星TJ
I'm sorry that I have kept you for a long time due to my studies.
Now the problem has been fixed.