1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Эвент забрасывания удочки.

Тема в разделе "Разработка плагинов для новичков", создана пользователем MOR_IV, 22 мар 2015.

  1. Автор темы
    MOR_IV

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

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
    Доброго времени. Возникла проблема. Мне нужно отловить эвент забрасывания удочки bukkit.
    Смысл в чем, если ловить PlayerInteractEvent или PlayerFishEvent, то я не могу отличить эвент забрасывания, от эвента отмены ловли или подсечки. Как сделать?
     
  2. Plasticable

    Plasticable Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    plasticable
    Имя в Minecraft:
    Plasticable
    Скажи, зачем тебе это вообще надо
     
  3. Автор темы
    MOR_IV

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

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
    Мне надо при забрасывании с шансом отнять из инвентаря глаз паука. Все написал, а с этим разобраться не могу. Если использовать PlayerFishEvent.getCaught() , то он возвращает только в случае вылавливания рыбы, а в других случаях нету, если просто слушать PlayerFishEvent, то отнимает и при забрасывании и при вытаскивании удилища.
     
  4. Timings

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

    Баллы:
    88
    Имя в Minecraft:
    NextGeneric
    Почитай доки по этому классу.
    Там перечислены все методы, которые содержит класс этого ивента. Если методы этого класса не позволяют удовлетворить твои нужды, то, боюсь, придется работать с NMS или какой-нибудь подобной фигней.

    А, если лень гуглить - https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/player/PlayerFishEvent.html
     
  5. Автор темы
    MOR_IV

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

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
    Я уже читал этот класс, поэтому сюда и написал...
     
  6. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    PlayerInteractEvent + check for item in inventory.
     
  7. Автор темы
    MOR_IV

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

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
    Пробовал. Не канает. Проблема не в эвенте, а в том, что забрассывание от вытаскивания не отличается.
     
  8. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Ну так есть куча решений для этого, например, хранить данные в HashMap, где ключ является String, а значение Boolean, и затем сверять.
     
    Последнее редактирование: 22 мар 2015
  9. NaPsTeR

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

    Баллы:
    88
    Имя в Minecraft:
    kesha0129
    А если вот так?
    Код:
        @EventHandler(priority = EventPriority.HIGHEST)
        public void onFishThrow(ProjectileLaunchEvent ev){
            if(ev.getEntityType() == EntityType.FISHING_HOOK){
                getServer().getConsoleSender().sendMessage("Player " + ((Player)ev.getEntity().getShooter()).getName() + " throw fishing rod");
            }
        }
     
    Последнее редактирование: 22 мар 2015
  10. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Что за дерьмо вы написали?
     
  11. NaPsTeR

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

    Баллы:
    88
    Имя в Minecraft:
    kesha0129
    ТС'у нужен был код для того, чтобы отловить эвент бросания удочки. Что не так, до сих пор не могу понять.
     
  12. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Вы всегда для разработки CraftBukkit используете?
     
  13. NaPsTeR

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

    Баллы:
    88
    Имя в Minecraft:
    kesha0129
    Не всегда. Данный код приведен исключительно для примера.
     
  14. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Вы меня не поняли. Когда вы выбираете из Bukkit и CraftBukkit, вы выбираете второе?
     
  15. NaPsTeR

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

    Баллы:
    88
    Имя в Minecraft:
    kesha0129
    Прошу прощения. Да, для разработки я использую CraftBukkit.
     
  16. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    А зря.
     
  17. NaPsTeR

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

    Баллы:
    88
    Имя в Minecraft:
    kesha0129
    Я понял свою ошибку.
    Вот это
    Код:
    ((CraftPlayer)ev.getEntity().getShooter()).getName()
    Надо заменить на это
    Код:
    ((Player)ev.getEntity().getShooter()).getName()
    Когда я тестировал, то в консоли заметил и из-за этого почему-то решил скастовать именно с этим классом.
    Код:
    Player CraftPlayer{name=kesha0129} throw fishing rod
    P/S Спасибо за подсказку!
     
  18. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Что-то не нравится?
     
  19. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    >>хранить в мапе<string, boolean>
     
  20. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Ну извините же меня, сэр.
    *хранить данные в HashMap, где ключ является String, а значение Boolean.
     

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