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插件的,以防您感兴趣。
答案 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!");
}
}
}