- Баллы
- 66
Дело в том что ID гранита это STONE:1 или 1:1, а мне надо что бы действие активировалось только при нажатии на гранит, то есть не камень а именно гранит. Скажите пожалуйста, как это сделать?
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Спасибо, работает!block.getData() == 1
@EventHandler
public void GranitClick(PlayerInteractEvent e) {
Player p = e.getPlayer();
if(e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
if(p.getTargetBlock(null, 5).getType() != Material.GRANITE) return;
p.getWorld().spawnEntity(p.getLocation(), EntityType.BEE);
}
У @оп версия 1.12.2 - там гранит и прочее были подтипом камня, а не отдельным материалом. Алсо, в PlayerInteractEvent есть метод getBlock(), который возвращает кликнутый блок.Приветствую! Вероятно, я уже опоздал с ответом, но все же. Вот мой вариант:
4 и 5 строчки - мы проверяем, если: 1) Игрок нажимает правой (можно и левой ( Action.LEFT_CLICK_BLOCK)) кнопкой по блоку (пока любому), 2) Блок, на который смотрит игрок - гранит (Ну, понятно зачем, игрок не может нажать ПКМ/ЛКМ по блоку, если не смотрит на него (Нет, ну, возможно, может, но я не знаю как)). Если эти оба условия не происходят - повторяем. Если происходит, то исполняется то, что написано ниже (В моем случае, для теста, появляется пчела). Возможно, это довольно костыльный метод, но и универсальный и подойдет для всех блоков в игре. Надеюсь, поможет.PHP:@EventHandler public void GranitClick(PlayerInteractEvent e) { Player p = e.getPlayer(); if(e.getAction() != Action.RIGHT_CLICK_BLOCK) return; if(p.getTargetBlock(null, 5).getType() != Material.GRANITE) return; p.getWorld().spawnEntity(p.getLocation(), EntityType.BEE); }
UPD: Нашел небольшой баг, поправил, теперь все хорошо)
Чего? У меня 1.16.5 как быУ @оп версия 1.12.2 - там гранит и прочее были подтипом камня, а не отдельным материалом. Алсо, в PlayerInteractEvent есть метод getBlock(), который возвращает кликнутый блок.
Спасибо, хоть я и так уже сделал плагин, но не будем забывать про челиков с поисковиков, у которых похожая проблемаПриветствую! Вероятно, я уже опоздал с ответом, но все же. Вот мой вариант:
4 и 5 строчки - мы проверяем, если: 1) Игрок нажимает правой (можно и левой ( Action.LEFT_CLICK_BLOCK)) кнопкой по блоку (пока любому), 2) Блок, на который смотрит игрок - гранит (Ну, понятно зачем, игрок не может нажать ПКМ/ЛКМ по блоку, если не смотрит на него (Нет, ну, возможно, может, но я не знаю как)). Если эти оба условия не происходят - повторяем. Если происходит, то исполняется то, что написано ниже (В моем случае, для теста, появляется пчела). Возможно, это довольно костыльный метод, но и универсальный и подойдет для всех блоков в игре. Надеюсь, поможет.PHP:@EventHandler public void GranitClick(PlayerInteractEvent e) { Player p = e.getPlayer(); if(e.getAction() != Action.RIGHT_CLICK_BLOCK) return; if(p.getTargetBlock(null, 5).getType() != Material.GRANITE) return; p.getWorld().spawnEntity(p.getLocation(), EntityType.BEE); }
UPD: Нашел небольшой баг, поправил, теперь все хорошо)
Тогда мой метод тебе подойдет)Чего? У меня 1.16.5 как бы
Я уже написал плагин который мне нужен, первая версия, которая для 1.12 у меня работает, но всё равно спасибо, так как есть челики с поисковиков, у которых такая же проблемаТогда мой метод тебе подойдет)
Tогда зачем было упоминать STONE:1? Циферные ID уже 2-3 года как не используются.Чего? У меня 1.16.5 как бы
Я уже понял. Когда оставил тот комментарий у меня отображался лишь ответ "Чего? У меня 1.16.5 как бы". К нему и написал.Я уже написал плагин который мне нужен, первая версия, которая для 1.12 у меня работает, но всё равно спасибо, так как есть челики с поисковиков, у которых такая же проблема
Спасибо, но ответ уже данblock.getType()==Material.GRANITE
Все изи же. Времена магик валуе прошли уже. Это было давно и не правда.
тему нужно закрывать, чтобы подобных ситуаций не было.Спасибо, но ответ уже дан
block.getType()==Material.GRANITE
equals тоже работает, но это уже другая история.enum проверять вот так: