美年达呀
关于判断当前手上物品是否是空气我用的PlayerItemHeldEvent 事件
if(e.getPlayer().getInventory.getItem(e.getNewSlot).getType() == null || e.getPlayer().getInventory.getItem(e.getNewSlot).getType() == Material.AIR{
//代码块
}

在游戏测试,在手上没有物品情况下,没有任何响应。

天辉胡萝卜
PlayerItemHeldEvent只在玩家切换手中物品的时候触发

美年达呀
疾风暗影 发表于 2020-7-7 14:52
PlayerItemHeldEvent只在玩家切换手中物品的时候触发

那有其他更好的办法嘛,我只是想获取并且判断当前手上物品是否为空气

吕易天
你应该判断getItem的返回是不是null而不是判断Type是不是null

吕易天
877811433 发表于 2020-7-7 14:54
那有其他更好的办法嘛,我只是想获取并且判断当前手上物品是否为空气

用Bukkit.getScheduler().runTaskTimer

结城希亚
本帖最后由 结城希亚 于 2020-7-7 15:02 编辑
877811433 发表于 2020-7-7 14:54
那有其他更好的办法嘛,我只是想获取并且判断当前手上物品是否为空气
  1. if(player.getInventory().getItemInMainHand()==null||player.getInventory().getItemInMainHand().getType() == Material.AIR) {
  2.         player.sendMessage("§c不能为空手");
  3.          return true;
  4. }
复制代码


只是判断主手上物品是否为空气的话

吕易天
877811433 发表于 2020-7-7 14:54
那有其他更好的办法嘛,我只是想获取并且判断当前手上物品是否为空气

你往插件主类加一个方法:
public static boolean isEmptyInHand(Player p)
{
Optional<ItemStack> is=Optional.ofNullable(p.getInventory().getItemInMainHand());
if(!is.isPresent())
  return true;
return is.get().getType()==Material.AIR;
}

美年达呀
结城希亚 发表于 2020-7-7 15:01
只是判断主手上物品是否为空气的话

完美解决,谢谢