onPlayerInteract
вызывается до тех пор, пока событие обнаруживается, а не при первом обнаружении события.
Я узнал об этом, щелкнув правой кнопкой мыши по «нормальному» количеству времени(~ 500мс), который напечатан 5 раз.
Затем я просто удерживал нажатой правую кнопку мыши в течение ~ 1000 мс и увидел, что она печатается снова 5 раз, но сделал это дважды.Похоже, он мгновенно печатал 5, затем еще 5.
. Для моего последнего теста я решил щелкнуть правой кнопкой мыши в течение минимального количества времени, которое я мог, и, конечно же, только 1 печать сделана (я не сделал)Я не мог понять это ранее, потому что из-за небольшого размера окна чата было напечатано больше).
Я предполагал, что это все равно будет работать, печатая событие только с небольшим кодом:
@EventHandler(priority=EventPriority.HIGH)
public void onPlayerInteract(PlayerInteractEvent e)
{
e.getPlayer().sendMessage(e.getAction().toString());
}
Ничего подобного не произошло, и вместо этого все было напечатано один раз, за исключением случая, когда блок щелкнул правой кнопкой мыши пустой рукой. Вот видео, показывающее, что я имею в виду с использованием вышеуказанного кода (каждый раз в видео чат очищается).Использование того же тела, что и выше, но вместо этого для eventRightClick(PlayerInteractEvent e)
делает то же самое.
Кроме того, не показано на видео, когда удерживание левой кнопки мыши при перемещении мыши над несколькими блоками, eventRightClick
вызовет несколькораз.То же самое для щелчка правой кнопкой мыши, но парами (все сделано свободной рукой).
РЕДАКТИРОВАТЬ
Удерживание правой кнопки мыши при наведении на блок пустой рукой приведет кпродолжать стрелять парами, независимо от того, наведена ли мышь на несколько блоков.Смотрите здесь .Обратите внимание, что eventRightClick
делает это:
@EventHandler(priority=EventPriority.HIGH)
public void eventRightClick(PlayerInteractEvent e)
{
e.getPlayer().sendMessage(
e.getAction().toString() + " " + e.getEventName());
}