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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Ну так есть куча решений для этого, например, хранить данные в HashMap, где ключ является String, а значение Boolean, и затем сверять.
     
    Последнее редактирование: 22 мар 2015
  10. 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
  11. serega6531

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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