Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Event'ы для клика по блоку

Тема в разделе "Разработка плагинов для новичков", создана пользователем 2Redman, 16 окт 2016.

  1. Автор темы
    2Redman

    2Redman Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    2Redman
    Люди, делаю плуг на донат-кейсы, и мне нужно что-бы при нажатии на блок портала в энд исполнялась рандомная команда от имени консоли, пжлст скажите как это можно сделать
     
  2. Хостинг MineCraft
    <
  3. MOR_IV

    MOR_IV Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
    Нужно слушать PlayerInteractEvent. Ловим, проверяем Action(право, лево), берём блок по которому клик, проверяем на эндер портал, и делаем рандом команду по списку. Через Math.random вроде можно сделать рандом команду.
     
  4. Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    new Random().nextInt(list.size()) все-же проще (ИМХО) будет...
     
  5. MOR_IV

    MOR_IV Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
    Солидарен. Давно рандом не трогал. Подзабыл :nerd:
     
  6. Автор темы
    2Redman

    2Redman Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    2Redman
    Можно поточнее пожалуйста.
    Вот код который я начал делать на счёт открытия, что туда дописать?
    Код:
    package ru.fantst.fcrates;
    
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerInteractEvent;
    
    public class CaseOpen implements Listener {
       
        @EventHandler
        public void onPlayerInteract(PlayerInteractEvent e) {
            Player p = e.getPlayer();
               
        }
    
    }
    
    [DOUBLEPOST=1476617165,1476617132][/DOUBLEPOST]
    Просто плагинов подобного рода я ещё не делал
     
  7. Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    Очередной чувачек который низуя не смыслит не в джаве не в программировании вообще, и пытаюшийся писать плагины детектед....
    @Exception_Prototype а ты еще и предлагал писать туториал на русском блин... Чтоб таких как ТС было еще больше.. Мда
     
  8. Автор темы
    2Redman

    2Redman Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    2Redman
    я тут немного полазил , попробовал сделать эвент клика по блоку, вот что получилось, но выдаёт ошибку.

    Код:
        @EventHandler
        public void onPlayerInteract(PlayerInteractEvent e) {
            Player p = e.getPlayer();
    
            if (e.getClickedBlock() != Material.ENDER_PORTAL_FRAME) return;
            MessageManager.getManager().msg(p, MessageType.INFO, "Ты открыл кейс");
    ошибка в строчке if (e.getClickedBlock() != Material.ENDER_PORTAL_FRAME) return;
    подскажите что и куда дописать пжлст
     
  9. MOR_IV

    MOR_IV Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
    PlayerInteractEvent охватывает все клики мышкой. Вам нужен клик по блоку. проверяйте e.getAction()
     
  10. Автор темы
    2Redman

    2Redman Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    2Redman
    А с этого момента по подробнее пожалуйста
     
  11. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Block block = e.getClickedBlock();
    if (block == null || block.getType() != Material.ENDER_PORTAL_FRAME) {return}
     
  12. Автор темы
    2Redman

    2Redman Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    2Redman
    Ладно, за это спасибо, теперь спрашиваю 2 тему про которую я спрашивал в самом начале : как сделать что бы при нажатии на тот же ender_portal_frame выполнялась 1 из 5 вписанных мной команд?[DOUBLEPOST=1476623490,1476623422][/DOUBLEPOST]И при этом, выполнятся этот эвент должен только предметом который был получен командой созданной в самом плагине, т.е. что бы нельзя было тупо на наковальне переименовать крючёк в "Ключ от кейса" и спокойно его открыть
     
  13. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    создаешь лист с командами. и через рандом получаешь команду
     
  14. Автор темы
    2Redman

    2Redman Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    2Redman
     
  15. MOR_IV

    MOR_IV Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
    Смотря как создать предмет. Можно NBT в него записать. Типа Lore в itemMeta и её считывать
     
  16. Автор темы
    2Redman

    2Redman Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    2Redman
    Ну например я хочу командой /getkey %player% выдавать игроку который будет системой автоматически указыватья в %player% , Крючёк с названием "Ключ от кейса", и что бы только им можно было кликнуть по порталу и тем самым активировать эвенты написанные в плагине
     
  17. _MediaNik_

    _MediaNik_ Активный участник Пользователь

    Баллы:
    46
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    Нет бы по нормальному p.sendMessage();
     
  18. MOR_IV

    MOR_IV Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
    В его случает на дебаг проще выводить.
     
  19. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    С кейсами не все так просто, ибо в креативе их на изи дропят. Нужно создавать кейсы с уникальным уидом, писать уиды в некую базу (sqlite or mysql). Потом после юза выставлять уиду статус проюзали, чтоб кейс с таким номером больше не робил.
     
  20. Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    Это уже проблема тех говноедов админов которые продают креатив.
     
  21. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Пока есть спрос, будут и предложения. Бабло течет и не ипет никого.
     

Поделиться этой страницей