关于判断当前手上物品是否是空气我用的PlayerItemHeldEvent 事件
if(e.getPlayer().getInventory.getItem(e.getNewSlot).getType() == null || e.getPlayer().getInventory.getItem(e.getNewSlot).getType() == Material.AIR{
//代码块
}
在游戏测试,在手上没有物品情况下,没有任何响应。
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
那有其他更好的办法嘛,我只是想获取并且判断当前手上物品是否为空气
- if(player.getInventory().getItemInMainHand()==null||player.getInventory().getItemInMainHand().getType() == Material.AIR) {
 
-         player.sendMessage("§c不能为空手");
 
-          return true;
 
- }
只是判断主手上物品是否为空气的话
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
只是判断主手上物品是否为空气的话
完美解决,谢谢