本帖最后由 ColorsWind 于 2020-4-4 11:27 编辑
写在前面

前段时间我发布了ChestCommandsPro插件,由于在ChestCommands上通过"打补丁"的方式增加功能效率不高而且功能实现受到限制,所以我利用ProtocolLib发送/拦截Inventory的数据包写了一款全新的菜单插件,兼容原ChestCommands菜单,只需将./plugins/ChestCommands/menu/复制到./plugins/VirtualMenu/menu可直接使用。
最新(0.0.11-dev)支持各种类型的菜单
支持的服务端:
CraftBukkit,Spigot,Paper,Thermos,CatServer
以及各种能够使用ProtocolLib的服务端,支持1.7.10-1.14.4
计划补全插件文档,如果你愿意提供帮助,我会非常感激
区别
关于PlaceholderAPI变量没用,请检查菜单文件PLACEHOLDERAPI: true 是否设置
命令
采用发送/拦截数据包实现菜单有什么好处?
下载
0.0.16-dev (2020.2.19)
VirtualMenu-0.0.16-dev.jar
(205.46 KB, 下载次数: 637)
0.0.15-dev (2020.2.7)
VirtualMenu-0.0.15-dev.jar
(204.55 KB, 下载次数: 54)
0.0.14-dev(2020.1.29)
VirtualMenu.jar
(204.26 KB, 下载次数: 134)
请删除原config.yml
0.0.13-dev (2019.10.5)
VirtualMenu.jar
(294.1 KB, 下载次数: 106)
0.0.12-dev(2019.9.8)
VirtualMenu.jar
(211.85 KB, 下载次数: 57)
0.0.11b-dev(2019.8.17)
VirtualMenu.jar
(210.88 KB, 下载次数: 64)
0.0.10-dev(2019.8.13)
VirtualMenu.jar
(211.54 KB, 下载次数: 53)
0.0.9-dev (2019.8.12)
VirtualMenu.jar
(210.17 KB, 下载次数: 15)
0.0.8-dev(2019.8.10)
VirtualMenu.jar
(187.69 KB, 下载次数: 28)
https://github.com/ColorsWind/VirtualMenu/releases
更多历史版本请到github查看
本帖提供历史版本是为了在较新版本不能使用的情况下尝试
但是没有特殊情况请使用最新版本,兼容的服务端都是一样的
有问题在本帖回复或者在github发issue
更新记录
https://github.com/ColorsWind/VirtualMenu/commits/master
配置
config.yml——插件配置文件
bound.yml——绑定配置文件
example.yml——菜单例子
该文件经常变更,最新版本https://github.com/ColorsWind/Vi ... esource/example.yml
玩家名称用<player>代替
一些效果图
反馈前请阅读
https://github.com/ColorsWind/VirtualMenu/issues
1、确保你所用的VirtualMenu是最新版本
2、提供服务端版本/version
3、提供所用Protocolib版本/protocol version
4、请尽量使用github issue反馈
FAQ
1、1.7.10 MOD服出现ClassNotFoundException
2、 使用/reload或者plugman之类的插件重载更新插件出现LinkageError
解决方案:重启服务器

写在前面
v2版本已发布,欢迎尝试
https://github.com/ColorsWind/VirtualMenu

前段时间我发布了ChestCommandsPro插件,由于在ChestCommands上通过"打补丁"的方式增加功能效率不高而且功能实现受到限制,所以我利用ProtocolLib发送/拦截Inventory的数据包写了一款全新的菜单插件,兼容原ChestCommands菜单,只需将./plugins/ChestCommands/menu/复制到./plugins/VirtualMenu/menu可直接使用。
事务繁忙,插件很多用法没有详细说明,请参考
1、实例文件 example.yml
2、ChestCommands的wiki
如果您愿意帮忙补全插件的教程,可以私信索要联系方式,我会详细解答你的问题。
更新消息:最新(0.0.11-dev)支持各种类型的菜单
支持的服务端:
CraftBukkit,Spigot,Paper,Thermos,CatServer
以及各种能够使用ProtocolLib的服务端,支持1.7.10-1.14.4
计划补全插件文档,如果你愿意提供帮助,我会非常感激
区别
- 菜单使用发送/拦截数据包实现
- menu-settings.auto-refresh单位:s->tick,其余相同
- 皮革颜色,玩家头所有者标签用被删除,已经被NBT标签代替,支持更多物品NBT
- REQUIRED-ItEM,COMMAND采用新的格式(见示例),同时兼容原格式
- OVERRIDE采用新的格式(ChestCommandsPro only)
- 木牌打开菜单由于使用脚本方块等插件完全可以实现,故不支持此功能
- 权限系统大大简化,绝大部分操作不需要权限,只有命令部分需要权限virtualmenu.admin
- 菜单绑定的物品需要在bound.yml配置,支持更高级的配置
- 目前已经实现了绝大部分ChestCommands的功能
- 支持检测玩家点击菜单外
- 支持更多类型的菜单(漏斗,发射器,以及各种奇怪的GUI)
- 支持CommandPrompter
- 基本支持原ChestCommands配置文件
- 菜单动态更新和玩家点击合法性检测异步实现
- 菜单错误精确到节点提示
- 支持各种物品的NBT(如皮革颜色,旗子样式以及ItemFlag等)(NBT节点)
- 支持给不同玩家显示不同的菜单物品执行不同的命令
- 新增先进的REQUIRED-ITEM检测,可以检测物品名称,LORE等
- 新增可视物品金钱,点券(VIEW-MONEY,VIEW-POINTS)
- 支持PlaceHolderAPI变量+定时更新(PLACEHOLDERAPI节点)
- 声音支持音高和音量,新增Title,Actionbar执行
- 支持左击/右击等更多点击方式检测,同上支持原配置格式
- 玩家不可能从菜单“偷”出物品
- 游戏内GUI菜单物品编辑器(/vm builder)
- 游戏内物品菜单YAML格式输出器(/vm info)
- 支持更高级的物品绑定,如下界之星左击打开A菜单,右击打开B菜单
关于PlaceholderAPI变量没用,请检查菜单文件PLACEHOLDERAPI: true 是否设置
命令
- /vm reload 重载插件配置文件和菜单
- /vm builder 游戏内编辑编辑器
- /vm info 输出手上物品信息,可直接贴到菜单里面(同时控制台也会输出一份)
- /vm open <菜单> 为自己打开菜单
- /vm open <菜单> <玩家> 为其他人打开菜单
- /vm list 列出所有菜单
- op默认拥有所有权限(virtualmenu.admin)
采用发送/拦截数据包实现菜单有什么好处?
- 玩家不可能“偷”出菜单物品
- 可以实现漏斗菜单/发射器菜单/铁毡菜单
- 很多对菜单的操作可以异步执行
下载
0.0.16-dev (2020.2.19)
0.0.15-dev (2020.2.7)
0.0.14-dev(2020.1.29)
请删除原config.yml
0.0.13-dev (2019.10.5)
0.0.12-dev(2019.9.8)
0.0.11b-dev(2019.8.17)
0.0.10-dev(2019.8.13)
0.0.9-dev (2019.8.12)
0.0.8-dev(2019.8.10)
https://github.com/ColorsWind/VirtualMenu/releases
更多历史版本请到github查看
本帖提供历史版本是为了在较新版本不能使用的情况下尝试
但是没有特殊情况请使用最新版本,兼容的服务端都是一样的
有问题在本帖回复或者在github发issue
更新记录
https://github.com/ColorsWind/VirtualMenu/commits/master
配置
config.yml——插件配置文件
bound.yml——绑定配置文件
example.yml——菜单例子
该文件经常变更,最新版本https://github.com/ColorsWind/Vi ... esource/example.yml
玩家名称用<player>代替
一些效果图
反馈前请阅读
https://github.com/ColorsWind/VirtualMenu/issues
1、确保你所用的VirtualMenu是最新版本
2、提供服务端版本/version
3、提供所用Protocolib版本/protocol version
4、请尽量使用github issue反馈
FAQ
1、1.7.10 MOD服出现ClassNotFoundException
2、 使用/reload或者plugman之类的插件重载更新插件出现LinkageError
解决方案:重启服务器

强烈建议收藏本帖,更新将会通知收藏本帖的用户
如果本插件对您有帮助,请回复+评分(评分人气不消耗自身的)
本插件以GPL-3.0协议开源
本插件所用代码部分来自其他开源或闭源(已授权)作品
https://github.com/tylerhasman/Packet-Menu (MIT)
https://github.com/CryptoMorin/XMaterial (MIT)
部分代码来自以上,其余部分为原创
本插件所用代码部分来自其他开源或闭源(已授权)作品
https://github.com/tylerhasman/Packet-Menu (MIT)
https://github.com/CryptoMorin/XMaterial (MIT)
部分代码来自以上,其余部分为原创
很不从插件,感谢分享
感谢分享 
很不错的插件,感谢分享
不错的插件 但貌似在线编辑有点问题
白居易_White 发表于 2019-7-31 23:46
不错的插件 但貌似在线编辑有点问题
具体是什么问题
另外编辑已有菜单的功能已经加入
https://github.com/ColorsWind/VirtualMenu/releases/
1748591300 发表于 2019-8-1 09:38
具体是什么问题
另外编辑已有菜单的功能已经加入
https://github.com/ColorsWind/VirtualMenu/releases/ ...
貌似是我使用的是贴内下载的0.01原因(雾
小白不会构建
白居易_White 发表于 2019-8-1 10:05
貌似是我使用的是贴内下载的0.01原因(雾
小白不会构建
https://github.com/ColorsWind/Vi ... dev/VirtualMenu.jar
直接下载,第一时间的更新会发到github
1748591300 发表于 2019-8-1 10:09
https://github.com/ColorsWind/VirtualMenu/releases/download/0.0.3-dev/VirtualMenu.jar
直接下载,第 ...
https://paste.ubuntu.com/p/jvzTQzPBpj/
已更新 但出现报错用不了了
白居易_White 发表于 2019-8-1 10:16
https://paste.ubuntu.com/p/jvzTQzPBpj/
已更新 但出现报错用不了了
尝试重启服务器
1748591300 发表于 2019-8-1 10:18
尝试重启服务器
已修复 感谢~
玩家需要权限才可打开菜单
但貌似并没有介绍适合给予玩家的权限
但貌似并没有介绍适合给予玩家的权限
白居易_White 发表于 2019-8-2 01:23
玩家需要权限才可打开菜单
但貌似并没有介绍适合给予玩家的权限
如果用绑定的物品/绑定的命令打开菜单暂时不需要权限(后期可能加上),只有vm open 需要权限
1748591300 发表于 2019-8-2 08:24
如果用绑定的物品/绑定的命令打开菜单暂时不需要权限(后期可能加上),只有vm open 需要权限 ...
绑定的命令帖子内貌似没有介绍..
vm open 菜单 ID
在后台貌似不能执行这个指令
在后台貌似不能执行这个指令
白居易_White 发表于 2019-8-2 09:06
vm open 菜单 ID
在后台貌似不能执行这个指令
第一个问题,帖子已更新,和cc一样,在meu-settings下设置 command: '命令'
第二个问题,已经确认bug,尽快修复
menu-settings:
name: '&f[&c宝可梦传奇菜单系统&f]'
rows: 5
auto-refresh: 10
command: 'cd'
这样写有问题吗,输入/cd 显示没有这个指令
name: '&f[&c宝可梦传奇菜单系统&f]'
rows: 5
auto-refresh: 10
command: 'cd'
这样写有问题吗,输入/cd 显示没有这个指令
白居易_White 发表于 2019-8-2 12:14
menu-settings:
name: '&f[&c宝可梦传奇菜单系统&f]'
没问题 确认你使用的插件是最新版本0.0.4-dev /ver VirtualMenu
66666666666
1748591300 发表于 2019-8-2 12:29
没问题 确认你使用的插件是最新版本0.0.4-dev /ver VirtualMenu
VirtualMenu version 0.0.4-dev
依旧不行呢..
白居易_White 发表于 2019-8-2 15:26
依旧不行呢..
我这边测试完全没问题呢
服务端版本&插件
- > ver
- [15:49:56 INFO]: This server is running Paper version git-Paper-641 (MC: 1.13.2) (Implementing API version 1.13.2-R0.1-SNAPSHOT)
- [15:49:56 INFO]: Checking version, please wait...
- > pl
- [15:49:57 INFO]: Plugins (12): Essentials, FastAsyncWorldEdit, NoSpawnChunks*, PermissionsEx*, PlaceholderAPI*, PlayerPoints*, PlugMan*, ProtocolLib*, Vault, VirtualMenu, WorldEdit, WorldGuard
用到的配置
- menu-settings:
- # 菜单名称
- name: '&9&lVirtualMenu'
- # 箱子的行数
- rows: 1
- # 【可选】刷新间隔,同时也会刷新PlaceHolderAPI的变量
- # 单位是tick
- auto-refresh: 10
- # 【可选】可在ChestCommandsPro bound.yml设置,有更多功能
- command: 'mc'
- X1Y1:
- NAME: '&a&l支持绝大部分NBT'
- ID: LEATHER_CHESTPLATE
- DATA-VALUE: 0
- KEEP-OPEN: true
- LORE:
- - '支持皮革,旗帜,刷怪蛋等'
- - '支持更多但未测试'
- - '&c&l本功能需要ProtocolLib'
- AMOUNT: 1
- NBT: "CgAACgAHZGlzcGxheQMABWNvbG9yADNMsgAA\r\n"
- POSITION-X: 1
- POSITION-Y: 1
- X2Y1:
- NAME: '&b&l支持更多点击检测'
- ID: ENCHANTED_BOOK
- KEEP-OPEN: true
- LORE:
- - '支持的检测,点击这里测试'
- - 'LEFT 左击 SHIFT_LEFT 潜心键+左击'
- - 'RIGHT 右击 SHIFT_RIGHT 潜心键+右击'
- - 'DROP 丢弃键'
- DATA-VALUE: 0
- KEEP-OPEN: true
- COMMAND:
- DEFAULT: 'tell; 默认操作'
- LEFT: 'tell: 左击'
- SHIFT_LEFT: 'tell: 潜心键+左击'
- RIGHT: 'tell: 右击'
- SHIFT_RIGHT: 'tell: 潜心键+右击'
- DROP: 'tell: 丢弃'
- AMOUNT: 1
- NBT: "CgAACQASU3RvcmVkRW5jaGFudG1lbnRzCgAAAAECAANsdmwAAQIAAmlkACEAAA==\r\n"
- POSITION-X: 2
- POSITION-Y: 1
- X3Y1:
- NAME: '&d&l支持PlaceHolderAPI'
- LORE:
- - '例子:是否AFK: %essentials_afk%'
- - '如果是第一次使用,还需要进行以下配置才'
- - '才能正常显示测试内容'
- - '1.确保按照了PlaceHolderAPI和'
- - 'Essentials(因为papi的附件需要)'
- - '2.输入/papi ecloud download essentials下载papi的附件'
- - '3.将菜单文件PLACEHOLDERAPI改成true'
- - '4.输入/vm reload 重载插件'
- - '支持Papi变量自动刷新'
- - '需要设定菜单的auto-refresh'
- KEEP-OPEN: true
- DATA-VALUE: 0
- AMOUNT: 1
- PLACEHOLDERAPI: true
- ID: MONSTER_EGG
- NBT: "CgAACgAJRW50aXR5VGFnCAACaWQAA1BpZwAA\r\n"
- POSITION-X: 3
- POSITION-Y: 1
- X4Y1:
- ID: SPLASH_POTION
- DATA-VALUE: 0
- NAME: '&d&l菜单显示优先级实例'
- LORE:
- - '&c&l拥有1500金钱'
- - '&c&l拥有1500点券'
- OVERRIDE:
- - PRIORITY: 2
- ID: SPLASH_POTION
- PRICE: 1000
- VIEW-MONEY: 1500
- NAME: '&d&l支持菜单菜单物品显示优先级 优先级:1 '
- LORE:
- - '&a&l拥有1500金钱'
- - '&d&l当你同时拥有点券和金钱时,优先显示点券'
- COMMAND: 'say 消耗1000金钱'
- - PRIORITY: 3
- ID: SPLASH_POTION
- VIEW-POINTS: 1500
- POINTS: 1000
- NAME: '&d&l支持菜单菜单物品显示优先级 优先级:2'
- LORE:
- - '&a&l拥有1500点券'
- - '&d&l当你同时拥有点券和金钱时,优先显示点券'
- COMMAND: 'say 消耗1000点券'
- AMOUNT: 1
- NBT: "CgAACAAGUG90aW9uABhtaW5lY3JhZnQ6bG9uZ19zd2lmdG5lc3MA\n"
- KEEP-OPEN: true
- POSITION-X: 4
- POSITION-Y: 1
- X5Y1:
- ID: SLIME_BLOCK
- COMMAND: 'vm builder'
- DATA-VALUE: 0
- NAME: '&9&lGUI菜单物品创建器'
- LORE:
- - '/vm builder (name) 创建(指定)菜单'
- - '(name)为可选参数,用于区分未编辑完的菜单物品'
- - '编辑完毕后菜单物品将会保存在插件目录menu文件夹'
- - '点击这里创建一个随机菜单'
- - '&c&o如果<name>已经存在,则会打开已经编辑的菜单'
- AMOUNT: 1
- KEEP-OPEN: true
- POSITION-X: 5
- POSITION-Y: 1
- X6Y1:
- ID: SIGN
- DATA-VALUE: 0
- COMMAND: 'vm info'
- NAME: '&2&l物品信息查看器'
- LORE:
- - '/vm info 查看手持物品的信息'
- - '控制台也会按照配置文件的格式输出一样的信息'
- AMOUNT: 1
- KEEP-OPEN: true
- POSITION-X: 6
- POSITION-Y: 1
- X7Y1:
- ID: SAND
- DATA-VALUE: 0
- NAME: '&9&l物品绑定器'
- LORE:
- - '本插件提供更好的物品绑定'
- - '具体在bound.yml内设置'
- - '支持一个物品绑定多个菜单'
- - '通过配置文件开启'
- AMOUNT: 1
- KEEP-OPEN: true
- POSITION-X: 7
- POSITION-Y: 1
- X9Y1:
- ID: SAND
- DATA-VALUE: 0
- NAME: '&9&l更好的物品需求'
- LORE:
- - '同上兼容原REQUIRED-ITEM格式'
- AMOUNT: 64
- REQUIRED-ITEM:
- ID: sand
- NAME: '&a测试用沙子'
- KEEP-OPEN: true
- POSITION-X: 9
- POSITION-Y: 1