RT 礼包的交互事件用了头颅来做材质 但日常跑插件的时候会报空指针错误 思前想后也无法解决这问题
因跨版本支持,所以使用了国外开发者开发的XMaterial
如图所示
代码如下 (其实应该是两层if的 可是构建出来就成这个样子)
已知下列可能造成报NPE错误的条件
1、已知服务器安装了粘液科技插件 版本号为4.1.15
2、因为粘液科技的物品含有lore,而礼包的头颅也含有lore
尝试解决NP报错的方法
1、给头颅加本地化名字,但经过测试之后发现,依然NPE错误
2、由于之前是直接获取getInventory之后才getItem,所以大概会出现NPE报错,后续改成获取玩家主手来getItem
经过上述测试与排查 在本地测试途中安装相关会调用头颅的插件进行过测试,并没有产生报空指针的问题
提问:该如何解决NPE的报错问题 虽然不会影响实际使用 但属实看着难受
因跨版本支持,所以使用了国外开发者开发的XMaterial
如图所示
代码如下 (其实应该是两层if的 可是构建出来就成这个样子)
已知下列可能造成报NPE错误的条件
1、已知服务器安装了粘液科技插件 版本号为4.1.15
2、因为粘液科技的物品含有lore,而礼包的头颅也含有lore
尝试解决NP报错的方法
1、给头颅加本地化名字,但经过测试之后发现,依然NPE错误
2、由于之前是直接获取getInventory之后才getItem,所以大概会出现NPE报错,后续改成获取玩家主手来getItem
经过上述测试与排查 在本地测试途中安装相关会调用头颅的插件进行过测试,并没有产生报空指针的问题
提问:该如何解决NPE的报错问题 虽然不会影响实际使用 但属实看着难受
本帖最后由 阴阳师元素祭祀 于 2021-10-14 07:27 编辑
会不会是你在检查itemStack之前就直接获取meta而不检查
另外meta有没有可能为null
(建议给出源代码与行数(或者加反编译的行数
会不会是你在检查itemStack之前就直接获取meta而不检查
另外meta有没有可能为null
(建议给出源代码与行数(或者加反编译的行数
建议getItemHand()以及getItemMeta()之后都进行判空检查,因为玩家未必手上拿着物品以及物品未必存在meta
拍卖官v 发表于 2021-10-14 09:24
建议getItemHand()以及getItemMeta()之后都进行判空检查,因为玩家未必手上拿着物品以及物品未必存在meta ...
我也这么想的 可是空指针的问题的无法复现 就很头大。。。
孩紫MC 发表于 2021-10-14 09:51
我也这么想的 可是空指针的问题的无法复现 就很头大。。。
无法复现?无论如和都无法复现吗?
Ph-苯 发表于 2021-10-14 10:32
无法复现?无论如和都无法复现吗?
对 跟头颅有关的都测了 没法复现
孩紫MC 发表于 2021-10-14 10:35
对 跟头颅有关的都测了 没法复现
那是不是不是由代码导致的,只是偶尔程序运行异常?
Ph-苯 发表于 2021-10-14 10:36
那是不是不是由代码导致的,只是偶尔程序运行异常?
本地测是没办法 丢服务器就刷NPE了 无解
孩紫MC 发表于 2021-10-14 10:40
本地测是没办法 丢服务器就刷NPE了 无解
那有没有可能是访问了什么仅客户端的变量?