MaxSeth
我这样写了一个bukkitrunnable,为何会在玩家进服之后不断出现空指针
  1. @Override
  2.     public void onEnable() {
  3.         // Plugin startup logic
  4.         this.getLogger().info("加载了Patch");
  5.         saveDefaultConfig();
  6.         if(!getConfig().contains(key)){
  7.             getConfig().set(key,0);
  8.             saveConfig();
  9.         }
  10.         enableTracker();
  11.         Bukkit.getPluginManager().registerEvents(this,this);
  12.         Bukkit.getPluginCommand("patch").setExecutor(new CommandPatch());

  13.     }

  14.     @Override
  15.     public void onDisable() {
  16.         // Plugin shutdown logic
  17.     }
  18.     public void enableTracker(){
  19.         getLogger().info("副手探测器已启用");
  20.         new BukkitRunnable() {
  21.             @Override
  22.             public void run() {
  23.                 for(Player player:getServer ().getOnlinePlayers()){
  24.                     if(!player.getInventory().getItemInOffHand().isSimilar(EMPTY)){
  25.                         player.getInventory().setItemInOffHand(EMPTY);
  26.                     }
  27.                     for (int i=9;i<9+getConfig().getInt(key);i++){
  28.                     if(player.getInventory().getItem(i).equals(EMPTY)&&!player.getInventory().getItem(i).isSimilar(bannedStack)){
  29.                         player.getInventory().setItem(i,EMPTY);
  30.                     }
  31.                     }
  32.                 }
  33.             }
  34.         }.runTaskTimer(this,0L,2L);
  35.     }
复制代码

Sssss...
报错里面有很明确的出错位置

MaxSeth
Sssss... 发表于 2020-7-4 16:05
报错里面有很明确的出错位置

上面那些里的第30行出错,但是我不知道为啥会出空指针

Sssss...
为什么你可以直接把EMPTY当ItemStack用……你似乎没定义这个变量?

报错大概是因为player.getInventory().getItemInOffHand()返回了null

Sssss...
12356789onetwo 发表于 2020-7-4 16:06
上面那些里的第30行出错,但是我不知道为啥会出空指针

player.getInventory().getItem(i)返回null

MaxSeth
Sssss... 发表于 2020-7-4 16:06
为什么你可以直接把EMPTY当ItemStack用……你似乎没定义这个变量?

报错大概是因为player.getInventory(). ...

我上面定义了,我没发进来
我之前只用了player.getInventory().getItemInOffHand()
没有空指针,但是加上下面的,就有空指针错误了

William_Shi
12356789onetwo 发表于 2020-7-4 16:08
我上面定义了,我没发进来
我之前只用了player.getInventory().getItemInOffHand()
没有空指针,但是加上 ...

发完整代码
截图带行号
30行看起来是空行(按照你现在发的
请把完整的带行号 的代码 发上来

William_Shi
12356789onetwo 发表于 2020-7-4 16:08
我上面定义了,我没发进来
我之前只用了player.getInventory().getItemInOffHand()
没有空指针,但是加上 ...

player.getInventory().getItemInOffHand().isSimilar

相当于 null isSimilar
但是null不是ItemStack对象
不可以调用ItemStack的方法
抛出NPE

MaxSeth
William_Shi 发表于 2020-7-4 16:11
player.getInventory().getItemInOffHand().isSimilar

相当于 null isSimilar

感谢大佬,最近才学着写插件,之前写mod,itemstack不会返回null,这里不知道插件获取itemstack会返回null值

第一页 上一页 下一页 最后一页