- Баллы
- 173
- Имя в Minecraft
- Plasticable
Ку всем,как отловить событие нажатие правой кнопки мыши (использование) с определённым предметом в руках?
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Можно пример,пожалайста?
@EventHandler
public void onIntercact(PlayerInteractEvent e) {
Player p = e.getPlayer();
if (p.getItemInHand().equals(Material.DIAMOND)) {
if (e.getAction().equals(Action.RIGHT_CLICK_BLOCK) || e.getAction().equals(Action.RIGHT_CLICK_AIR)) {
p.sendMessage("lol");
return;
}
}
}
При ПКМ по чему-либо ничего не происходит.Код:@EventHandler public void onIntercact(PlayerInteractEvent e) { Player p = e.getPlayer(); if (p.getItemInHand().equals(Material.DIAMOND)) { if (e.getAction().equals(Action.RIGHT_CLICK_BLOCK) || e.getAction().equals(Action.RIGHT_CLICK_AIR)) { p.sendMessage("lol"); return; } } }
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
public class OnInteract implements Listener {
@EventHandler
public void onIntercact(PlayerInteractEvent e) {
Player p = e.getPlayer();
if (p.getItemInHand().equals(Material.BLAZE_ROD)) {
if (e.getAction().equals(Action.RIGHT_CLICK_BLOCK) || e.getAction().equals(Action.RIGHT_CLICK_AIR)) {
p.sendMessage("lol");
return;
}
}
}
}
Вот и ошибочка. Проверять нужно так: e.getAction() == Action.RIGHT_CLICK_BLOCKКод:@EventHandler public void onIntercact(PlayerInteractEvent e) { Player p = e.getPlayer(); if (p.getItemInHand().equals(Material.DIAMOND)) { if (e.getAction().equals(Action.RIGHT_CLICK_BLOCK) || e.getAction().equals(Action.RIGHT_CLICK_AIR)) { p.sendMessage("lol"); return; } } }
Да.Вот и ошибочка. Проверять нужно так: e.getAction() == Action.RIGHT_CLICK_BLOCK
Хотя.. Да, так будет лучше.
PS. @Plasticable, ты регистрировал эвент в главном классе?
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
public class OnInteract implements Listener {
@EventHandler
public void onIntercact(PlayerInteractEvent e) {
Player p = e.getPlayer();
if (p.getItemInHand().equals(Material.BLAZE_ROD)) {
if (e.getAction() == Action.RIGHT_CLICK_BLOCK) {
p.sendMessage("lol");
return;
}
}
}
}
Тоже самое проделай и с p.getItemInHand().Да.
Всё равно не работает. Мой код сейчас:
Код:import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; public class OnInteract implements Listener { @EventHandler public void onIntercact(PlayerInteractEvent e) { Player p = e.getPlayer(); if (p.getItemInHand().equals(Material.BLAZE_ROD)) { if (e.getAction() == Action.RIGHT_CLICK_BLOCK) { p.sendMessage("lol"); return; } } } }
Что именно?Тоже самое проделай и с p.getItemInHand().
if (p.getItemInHand() == Material.BLAZE_ROD) {
@EventHandler
public void onIntercact(PlayerInteractEvent e) {
Player p = e.getPlayer();
if(p.getItemInHand() == null) return;
if (p.getItemInHand().getType() == Material.BLAZE_ROD) {
if (e.getAction() == Action.RIGHT_CLICK_BLOCK) {
p.sendMessage("lol");
}
}
}
Что именно?
ОшибкаКод:if (p.getItemInHand() == Material.BLAZE_ROD) {
Incompatible operand types ItemStack and Material
Или что?
if (p.getItemInHand().getType() == Material.BLAZE_ROD)
if (p.getItemInHand().getType() == Material.BLAZE_ROD) {
if (e.getAction() == Action.RIGHT_CLICK_BLOCK || e.getAction() == Action.RIGHT_CLICK_AIR) {
p.sendMessage("lol");
}
}