Java,第二材料交互无法正常工作?

时间:2018-08-06 13:53:26

标签: java

public class EventsClass implements Listener {

    @EventHandler
    public void onInteract(PlayerInteractEvent event) {
        Action action = event.getAction();
        Player player = event.getPlayer();
        Block block = event.getClickedBlock();

        if (action.equals(Action.RIGHT_CLICK_BLOCK)) {

            if (block.getType().equals(Material.EMERALD_BLOCK)) {

                if (player.getHealth() == 20) {
                    player.sendMessage(ChatColor.RED + "Your health is full!");
                } else {
                    player.setHealth(player.getHealth() + 2);
                    player.sendMessage(ChatColor.GREEN + "You've been healed by 1 heart!");
                }

                if (block.getType().equals(Material.REDSTONE_BLOCK)) {

                    if (player.getHealth() == 1) {
                        player.sendMessage(ChatColor.GOLD + "This cannot kill you!");
                    } else {
                        player.setHealth(player.getHealth() - 2);
                        player.sendMessage(ChatColor.RED + "You've been damaged by 1 heart!");
                    }
                }
            }
        }

    }

}

我不知道为什么第二部分(损坏部分)不起作用,没有错误,一切都检查了。 (我对此很陌生,因此,如果我做了非常明显的事情,请指出)。这是针对Minecraft插件的,以防您感兴趣。

1 个答案:

答案 0 :(得分:0)

要回答主要问题:代码缩进应将您引向该问题: 您在第二次检查块类型之前缺少右括号。

一种简单的检查方法是正确地缩进代码(如您所做的那样)。相似的条件通常处于相同的压痕级别。

现在有些东西无法按您的预期工作:

  • 如果您在19hp的情况下使用绿宝石会怎样?您达到21hp。 您可能应该添加一个机箱,以仅向健康栏增加1 hp。

  • 如果您使用具有1 hp的红石会怎样?你完蛋了。将条件更改为player.getHealth() <= 2

这是您应该得到的:

if(action.equals(Action.RIGHT_CLICK_BLOCK)) {
    if(block.getType().equals(Material.EMERALD_BLOCK)) {
        if(player.getHealth() == 20) {
            player.sendMessage(ChatColor.RED + "Your health is full!");
        } else if(player.getHealth() == 19) {
            player.setHealth(player.getHealth() + 1);
            player.sendMessage(ChatColor.GREEN + "You've been healed by half a heart!");
        }else{
            player.setHealth(player.getHealth() +2);
            player.sendMessage(ChatColor.GREEN + "You've been healed by 1 heart!");
        }
    } if(block.getType().equals(Material.REDSTONE_BLOCK)) {
        if(player.getHealth() <= 2) {
            player.sendMessage(ChatColor.GOLD + "This cannot kill you!");
        }else {
            player.setHealth(player.getHealth() -2);
            player.sendMessage(ChatColor.RED + "You've been damaged by 1 heart!");
        }
    }
}