开启辅助访问     
收藏本站

站内搜索

搜索

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:广东省
苦力怕论坛,感谢有您~
 发表于 2022-4-14 23:15:37 来自手机|显示全部楼层 IP:山东省
本帖最后由 DHF_Believer 于 2022-4-14 23:17 编辑

我看不懂,但我大受震撼=-=
2#2022-4-14 23:15:37回复收起回复
苦力怕论坛,感谢有您~
头像被屏蔽
 发表于 2022-4-14 23:20:58 来自手机|显示全部楼层 IP:广东省
我看不懂啊= ̄ω ̄=!!!
3#2022-4-14 23:20:58回复收起回复
苦力怕论坛,感谢有您~
 发表于 2022-4-15 13:40:33|显示全部楼层 IP:山西省
写的不错,但是有些难懂,虽然我看了一遍大概懂了,但是对于某些新人,建议文字叙述再多些在细节些
5#2022-4-15 13:40:33回复收起回复
苦力怕论坛,感谢有您~
 楼主|  发表于 2022-4-15 17:26:20|显示全部楼层 IP:广东省
xiaobaobao 发表于 2022-4-15 13:40
写的不错,但是有些难懂,虽然我看了一遍大概懂了,但是对于某些新人,建议文字叙述再多些在细节些 ...

讲个笑话,有基础的用不到,没基础的看不懂


(我觉得有点Java基础的都懂了,没有的大概也可以照猫画虎实现一个)
6#2022-4-15 17:26:20回复收起回复
苦力怕论坛,感谢有您~
 发表于 2022-4-15 22:20:55 来自手机|显示全部楼层 IP:黑龙江省
fantuan_233 发表于 2022-4-14 23:46
中考退坛前最后一篇了,再at一下我的朋友吧:
@Paddy @-苏晴晴在此- @baili001 @Dreeam @NetheriteX1 @punc ...

再见,祝你中考顺利!
7#2022-4-15 22:20:55回复收起回复
苦力怕论坛,感谢有您~

本版积分规则

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

QQ群

访问手机版

访问手机版

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

粤公网安备 44200002445329号 | 由 木韩网络 提供支持 | GMT+8, 2024-11-21 19:35

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

Powered by Discuz! X3.4 粤ICP备2023071842号-3