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

Стартап Помощь новичкам и тем, кто мало писал плагины. (+ LifeHack'и)

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

  1. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Если решил сам, то выкладывай в тред своё решение.
     
  2. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Кто-то из пользователей мне скидывал: if getPlayerExast(args[0]) == null, оказывается, что это нормально работает, проблема была вовсе в другой части кода.
     
  3. vlad123HIOOF

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

    Баллы:
    66
    Имя в Minecraft:
    Mirol_Play
    Помогите
    Код:
    public class jink implements Listener {
        @EventHandler
        public void LevelUP(PlayerLevelChangeEvent e){
            Player p = e.getPlayer();  
            int level = e.getNewLevel();
            p.sendMessage(ChatColor.GREEN+"Ваш уровень был повышен! Теперь вам доступно что-то новое.Ваш новый уровень");
        }
    }
    Как мне переменную Level использовать в чате ?
     
  4. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Код:
        @EventHandler
        public void LevelUP(PlayerLevelChangeEvent e){
            Player p = e.getPlayer(); 
            int level = e.getNewLevel();
            p.sendMessage(ChatColor.GREEN+"Ваш уровень был повышен! Теперь вам доступно что-то новое.Ваш новый уровень" + String.valueOf(level));
    
     
  5. vlad123HIOOF

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

    Баллы:
    66
    Имя в Minecraft:
    Mirol_Play
    Спасибо ,но мне написали что так лучше :
    Код:
            p.sendMessage(ChatColor.GREEN+"Ваш уровень был повышен! Теперь вам доступно что-то новое.Ваш новый уровень: " + level);
     
  6. Exception_Prototype

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

    Баллы:
    96
    И так и так правильно, просто в данном случае вариант выше не имеет смысла.
     
  7. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Ну не знаю, у меня показывает ошибку, т.к. значение должно быть строкой.
     
  8. vlad123HIOOF

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

    Баллы:
    66
    Имя в Minecraft:
    Mirol_Play
    А у меня всё нормально зашло
     
  9. Exception_Prototype

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

    Баллы:
    96
    В чём вы пишите? (IDE)
     
  10. vlad123HIOOF

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

    Баллы:
    66
    Имя в Minecraft:
    Mirol_Play
    А как мне поставить конкретные координаты для setCompassTarget ?
     
  11. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Eclipse
     
  12. marior

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

    Баллы:
    61
    Имя в Minecraft:
    mario
    Подскажите каким событием можно отлавливать изменение здоровя.
    Хочу убрать лечение при полной сытости.
     
  13. Незнайчик

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

    Баллы:
    76
    Не проверял, но вроде так
    Код:
    public void healthCheck (EntityRegainHealthEvent e) {
        if(e.getAmount() >= e.Entity.Player.getMaxHealth()) {
            setCancelled(true);
        }
    }
    
    EntityRegainHealthEvent
     
  14. marior

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

    Баллы:
    61
    Имя в Minecraft:
    mario
    Спасибо.
    Вот только e.Entity... непроходит, а у e.getEntity()... нет метода getPlayer
    и setCancelled(true) тоже нет...

    Но будем искать, спасибо.
    Привел код в такой вид:
    Код:
      public void healthCheck (EntityRegainHealthEvent e) {
    
               if (e.getEntityType() != EntityType.PLAYER) return;
               Player pp = (Player) e.getEntity();
               if(e.getAmount() >= pp.getMaxHealth()) {
                    e.setCancelled(true);
                }
    но не компилится pp.getMaxHealth(), говорит что метод getMaxHealth() неоднозначный.
    (The method getMaxHealth() is ambiguous for the type Player)

    Как его заставить работать?
    Уже и так делал:
    Код:
    ...
               if((int) e.getAmount() >= (int) pp.getMaxHealth())
    ...
    Непомогает :(
     
  15. Незнайчик

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

    Баллы:
    76
    Задачу не совсем сразу правильно понял, да и код оказался не рабочим(
    Думаю это должно работать правильно
    Код:
       
    @EventHandler
       public void healthCheck (EntityRegainHealthEvent e) {
            if(e.equals(e.getRegainReason().SATIATED)) {
                e.setCancelled(true);
            }
        }
     
  16. marior

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

    Баллы:
    61
    Имя в Minecraft:
    mario
    не работает, здорове увеличивается.
    Зделал просто:
    Код:
      public void healthCheck (EntityRegainHealthEvent e) {
    
               if (e.getEntityType() != EntityType.PLAYER) return;
                    e.setCancelled(true);
               }
    Так работает, при падении здорове убывает и когда сыт не поднимается.
    Остальное надо проверить...
    Спасибо за ответ.
     
  17. Незнайчик

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

    Баллы:
    76
    Так другие регенерации тоже будут отменяться для игрока. Он не отрегенится пока не умрет.
    Нужна проверка на причину регенерации EntityRegainHealthEvent.RegainReason.

    Вероятно так
    Код:
      
    @EventHandler
       public void healthCheck (EntityRegainHealthEvent e) {
           for (EntityRegainHealthEvent.RegainReason c : EntityRegainHealthEvent.RegainReason.values()){
               if (c == e.getRegainReason().SATIATED)
                   e.setCancelled(true);
           }
             
        }
     
    Последнее редактирование: 24 июн 2017
  18. marior

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

    Баллы:
    61
    Имя в Minecraft:
    mario
    Подскажите как можно зделать чтоб игрок открывал рукой металлическую дверь.
    Зделал так, но дверь открывается токо за низ и код громоздкий...
    Код:
          Block evt = evnt.getClickedBlock();
           if (evt.getTypeId() == 71) {//если это метал-дверь
                int dd = evt.getData();//в зависимости от расположения меняем byte
                if(dd == 7) evt.setData((byte) 3);//чтоб открить или закрить
                else if(dd == 3) evt.setData((byte)7);
                if(dd == 0) evt.setData((byte) 4);
                else if(dd == 4) evt.setData((byte)0);
                if(dd == 1) evt.setData((byte) 5);
                else if(dd == 5) evt.setData((byte)1);
                if(dd == 2) evt.setData((byte) 6);
                else if(dd == 6) evt.setData((byte)2);
                if(dd != evt.getData()) player.playSound(player.getLocation(), Sound.DOOR_OPEN, 1, 1);
              }
    Может есть способ попроще?
    ----
    Решено, спасибо.
     
    Последнее редактирование: 30 июн 2017
  19. Mr_Ares

    Mr_Ares Ньюби

    Баллы:
    1
    Имя в Minecraft:
    Mr_Ares
    Помогите пожалуйста как добавить в функцию .setIngredient('A', ________ чтобы написать здесь зелье регенирации
     
  20. marior

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

    Баллы:
    61
    Имя в Minecraft:
    mario
    Как указать материал например березевые доски в:
    Код:
    ... .setType(Material.wood)
    ?
     

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