开启辅助访问      
收藏本站

站内搜索

搜索
热搜: 下载 1.21 1.20

Minecraft(我的世界)苦力怕论坛

[开发教程] 【插件编写】Bukkit如何判断GUI?

 发表于 2022-4-14 23:08:15 | 显示全部楼层 |阅读模式 IP:广东省
本帖最后由 fantuan_233 于 2022-4-14 23:08 编辑

是这样的,今天一个朋友找我诉苦,说他的插件被一个服主应用了,但是应用之后却经常发生bug,他亲自查找,发现是因为服主的两个GUI的标题一样,而自己的插件是按照GUI的标题进行监听的,从而导致了错误。
但是另一个插件却没有出现这样的错误,他就跑来问我这是为什么。

今天,我来浅谈一下一个解决方法。

一,Inventory
在Bukkit里面,每一个所谓GUI都是Inventory接口的一个实现。
因为接口不存在“构造器”所以创建一个新的gui的方法变成了org.bukkit.Bukkit.createInventory()这个方法(暂不列出参数)

在此,我们可以看出,创建一个gui有四个可选的重载方法,而其中都包括了一个参数:传入一个实现了InventoryHolder接口的对象
那么问题来了,我们可以自己实现一个InventoryHolder吗?这样不就能判别GUI了吗?
那么,可行吗?

二,InventoryHolder
通过查阅代码,不难得出InventoryHolder是一个接口(interface)(这玩意比抽象类还抽象,连成员属性都没了
如图:
可以很直观地看出,只有一个方法需要实现,难度不大,有可能实现。


三,动手

创建一个类,在这里暂且名为MyHolder,并且实现InventoryHolder接口:

在这个时候,报错了,提示我们需要实现getInventory方法:
接受建议,但是注意了,这里的方法注解存在@NotNull,所以最好不要按照他的建议返回null
所以在此,我们可以创建一个inv,来给他传入,以此来不返回null。


接下来,我们在主类注册一个监听器,做个实验:

嗯很好,没有编译错误,接下来构建,放进服务端:

运行了。


由此可见,自己实现一个InventoryHolder,确实是这个问题的解决方案之一

评分

参与人数 1铁粒 +10 收起 理由
 星河*** + 10 苦力怕论坛感谢有你~(原创)

查看全部评分

苦力怕论坛,感谢有您~
回复

使用道具 举报

 楼主|  发表于 2022-4-14 23:46:25 | 显示全部楼层 IP:广东省
评论复审中... 编号:1827541

评分

参与人数 1铁粒 +1 收起 理由
 *** + 1 也退了(

查看全部评分

来自 4# 2022-4-14 23:46:25 回复 收起回复
苦力怕论坛,感谢有您~
回复 支持

使用道具 举报

 发表于 2022-4-14 23:15:37  来自手机 | 显示全部楼层 IP:山东省
评论复审中... 编号:1827395
2# 2022-4-14 23:15:37 回复 收起回复
苦力怕论坛,感谢有您~
回复 支持

使用道具 举报

头像被屏蔽
 发表于 2022-4-14 23:20:58  来自手机 | 显示全部楼层 IP:广东省
评论复审中... 编号:1827419
3# 2022-4-14 23:20:58 回复 收起回复
苦力怕论坛,感谢有您~
回复 支持

使用道具 举报

 发表于 2022-4-15 13:40:33 | 显示全部楼层 IP:山西省
评论复审中... 编号:1830731
5# 2022-4-15 13:40:33 回复 收起回复
苦力怕论坛,感谢有您~
回复 支持

使用道具 举报

 楼主|  发表于 2022-4-15 17:26:20 | 显示全部楼层 IP:广东省
评论复审中... 编号:1832616
6# 2022-4-15 17:26:20 回复 收起回复
苦力怕论坛,感谢有您~
回复 支持

使用道具 举报

 发表于 2022-4-15 22:20:55  来自手机 | 显示全部楼层 IP:黑龙江省
评论复审中... 编号:1836183
7# 2022-4-15 22:20:55 回复 收起回复
苦力怕论坛,感谢有您~
回复 支持

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

木韩网络 提供支持 | GMT+8, 2026-9-12 14:11

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4