我这样写了一个bukkitrunnable,为何会在玩家进服之后不断出现空指针
复制代码
- @Override
- public void onEnable() {
- // Plugin startup logic
- this.getLogger().info("加载了Patch");
- saveDefaultConfig();
- if(!getConfig().contains(key)){
- getConfig().set(key,0);
- saveConfig();
- }
- enableTracker();
- Bukkit.getPluginManager().registerEvents(this,this);
- Bukkit.getPluginCommand("patch").setExecutor(new CommandPatch());
- }
- @Override
- public void onDisable() {
- // Plugin shutdown logic
- }
- public void enableTracker(){
- getLogger().info("副手探测器已启用");
- new BukkitRunnable() {
- @Override
- public void run() {
- for(Player player:getServer ().getOnlinePlayers()){
- if(!player.getInventory().getItemInOffHand().isSimilar(EMPTY)){
- player.getInventory().setItemInOffHand(EMPTY);
- }
- for (int i=9;i<9+getConfig().getInt(key);i++){
- if(player.getInventory().getItem(i).equals(EMPTY)&&!player.getInventory().getItem(i).isSimilar(bannedStack)){
- player.getInventory().setItem(i,EMPTY);
- }
- }
- }
- }
- }.runTaskTimer(this,0L,2L);
- }
报错里面有很明确的出错位置
Sssss... 发表于 2020-7-4 16:05
报错里面有很明确的出错位置
上面那些里的第30行出错,但是我不知道为啥会出空指针
为什么你可以直接把EMPTY当ItemStack用……你似乎没定义这个变量?
报错大概是因为player.getInventory().getItemInOffHand()返回了null
报错大概是因为player.getInventory().getItemInOffHand()返回了null
12356789onetwo 发表于 2020-7-4 16:06
上面那些里的第30行出错,但是我不知道为啥会出空指针
player.getInventory().getItem(i)返回null
Sssss... 发表于 2020-7-4 16:06
为什么你可以直接把EMPTY当ItemStack用……你似乎没定义这个变量?
报错大概是因为player.getInventory(). ...
我上面定义了,我没发进来
我之前只用了player.getInventory().getItemInOffHand()
没有空指针,但是加上下面的,就有空指针错误了
12356789onetwo 发表于 2020-7-4 16:08
我上面定义了,我没发进来
我之前只用了player.getInventory().getItemInOffHand()
没有空指针,但是加上 ...
发完整代码
截图带行号
30行看起来是空行(按照你现在发的
请把完整的带行号 的代码 发上来
12356789onetwo 发表于 2020-7-4 16:08
我上面定义了,我没发进来
我之前只用了player.getInventory().getItemInOffHand()
没有空指针,但是加上 ...
player.getInventory().getItemInOffHand().isSimilar
相当于 null isSimilar
但是null不是ItemStack对象
不可以调用ItemStack的方法
抛出NPE
William_Shi 发表于 2020-7-4 16:11
player.getInventory().getItemInOffHand().isSimilar
相当于 null isSimilar
感谢大佬,最近才学着写插件,之前写mod,itemstack不会返回null,这里不知道插件获取itemstack会返回null值
12356789onetwo 发表于 2020-7-4 16:19
感谢大佬,最近才学着写插件,之前写mod,itemstack不会返回null,这里不知道插件获取itemstack会返回nul ...
你应该要学会自己解决这类问题
如果发现这行报了NPE,就检查每一个调用方法的对象
如果检查不出来,就全部输出
6666666666666666666666666666666666666666666
这种问题不是打断点解决更好吗,来这问更慢