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

Помогите Как в ивенте указать другой ивент

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    jamesg101
    Всем привет. Делаю плагин на кровотечения.

    Отловил ивент EntityDamageEvent, названный onBlooding, чтобы после нанесения удара накладывался бесконечное иссушение.

    Но не могу отловить этот же ивент onBlooding в другом ивенте - PlayerMoveEvent, названный onMoveBlooding, где у игрока, двигаясь, появлялись частицы (неважно какие), но я не могу этот onBlooding отловить. Просто все перепробовал. Прошу помощи.

    Сам ивент:
    Код:
        @EventHandler
        public static void onBlooding(EntityDamageEvent e) {
           
            if(!(e.getEntity() instanceof Player)) return;
           
            Player p = (Player) e.getEntity();
            Random r = new Random();
           
            if(r.nextInt(100) <= 50) {
                if(e.getCause().equals(DamageCause.ENTITY_ATTACK) && p.getLastDamageCause().getDamage() <= 5.0f) {
                MessageManager.getManager().msg(p, MsgType.INFORMATION, "Я получил серьезную рану и из нее течет кровь!");
               
                p.addPotionEffect(new PotionEffect(PotionEffectType.WITHER, Integer.MAX_VALUE, 1));
                }
            }
        }
     
  2. Хостинг MineCraft
    <
  3. Novichock

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

    Баллы:
    76
    Skype:
    pavel.batalov1
    А зачем отлавливать?При движении проверяй активные эффекты и если среди их есть нужный спавни частички.
     
  4. Автор темы
    jamesg101

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

    Баллы:
    76
    Имя в Minecraft:
    jamesg101
    А если это будет естественный эффект (появился, когда тебя ударил иссушительный скелет)
     
  5. Novichock

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

    Баллы:
    76
    Skype:
    pavel.batalov1
    Так у тебя после любого удара накладывается эффект.
     
  6. Автор темы
    jamesg101

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

    Баллы:
    76
    Имя в Minecraft:
    jamesg101
    Дэк так и надо. Кровотечение не только от удара игрока может быть, но и от мобов.
     
  7. 0x1EE7C0DE

    0x1EE7C0DE Участник Пользователь

    Баллы:
    36
    При ударе игрока заноси его ник в лист игроков, у которых должно быть кровотечение.
    А в PlayerMoveEvent делай проверку на наличие ника игрока в этом листе.

    P.S. Не забудь удалять игрока из списка, когда у него останавливается кровотечение
     
  8. Автор темы
    jamesg101

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

    Баллы:
    76
    Имя в Minecraft:
    jamesg101
    Список - это ArrayList, так я понял? Я просто новичок в этом деле.
     
  9. 0x1EE7C0DE

    0x1EE7C0DE Участник Пользователь

    Баллы:
    36
    Да, ArrayList<String>
     
  10. Автор темы
    jamesg101

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

    Баллы:
    76
    Имя в Minecraft:
    jamesg101
    Прости конечно за глупый вопрос, но как игроков-то заносить? Сделал я ArrayList в мэйн классе?
     
  11. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Почему бы не ArrayList<Player> ?
     
  12. 0x1EE7C0DE

    0x1EE7C0DE Участник Пользователь

    Баллы:
    36
    list.add(player.getName());
    А зачем?
     
  13. Автор темы
    jamesg101

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

    Баллы:
    76
    Имя в Minecraft:
    jamesg101
    Нужно в конфиг вводить специальную графу players_blooding (так назвал)
     
  14. 0x1EE7C0DE

    0x1EE7C0DE Участник Пользователь

    Баллы:
    36
    Это вопрос?
     
  15. Автор темы
    jamesg101

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

    Баллы:
    76
    Имя в Minecraft:
    jamesg101
    Да, вопросик )
     
  16. 0x1EE7C0DE

    0x1EE7C0DE Участник Пользователь

    Баллы:
    36
    Только если нужно, что бы кровотечение сохранялось при перезагрузке сервера или плагина.
     
  17. Автор темы
    jamesg101

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

    Баллы:
    76
    Имя в Minecraft:
    jamesg101
    Вот добавил этот ивент, пишет ошибку на !this :
    Код:
        @EventHandler
        public static void onMoveBlooding(PlayerMoveEvent e) {
          
            Player p = e.getPlayer();
          
            if(!this.plugin.blooding_players.contains(e.getPlayer().getName())) {
              
            }
        }
    Не знаю, что ему не нравится...[DOUBLEPOST=1467138680,1467137812][/DOUBLEPOST]При этом я в главном классе все зарегал:

    в onEnable()
    this.blooding_players.addAll(this.getConfig().getStringList("blooding_players"));

    в самом классе
    public ArrayList<String> blooding_players = new ArrayList<>();
     
    Последнее редактирование: 28 июн 2016
  18. 0x1EE7C0DE

    0x1EE7C0DE Участник Пользователь

    Баллы:
    36
    Не нужно тут писать static и this
     
  19. Автор темы
    jamesg101

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

    Баллы:
    76
    Имя в Minecraft:
    jamesg101
    Так?
    Код:
        @EventHandler
        public void onMoveBlooding(PlayerMoveEvent e) {
           
            Player p = e.getPlayer();
           
            if(!this.plugin.blooding_players.contains(e.getPlayer().getName())) {
               
            }
        }
    И что добавить нужно во внутрь этого ивента?
     
  20. 0x1EE7C0DE

    0x1EE7C0DE Участник Пользователь

    Баллы:
    36
    Появление частиц, которые тебе нужны
     
  21. Автор темы
    jamesg101

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

    Баллы:
    76
    Имя в Minecraft:
    jamesg101
    Не получается, частицы не появляются. В конфиге игроки не заносятся. Я туда занес это:

    blooding_players:
     

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