Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Если решил сам, то выкладывай в тред своё решение.
Кто-то из пользователей мне скидывал: if getPlayerExast(args[0]) == null, оказывается, что это нормально работает, проблема была вовсе в другой части кода.
 
Помогите
JavaScript:
public class jink implements Listener {
    @EventHandler
    public void LevelUP(PlayerLevelChangeEvent e){
        Player p = e.getPlayer();  
        int level = e.getNewLevel();
        p.sendMessage(ChatColor.GREEN+"Ваш уровень был повышен! Теперь вам доступно что-то новое.Ваш новый уровень");
    }
}
Как мне переменную Level использовать в чате ?
 
Помогите
JavaScript:
public class jink implements Listener {
    @EventHandler
    public void LevelUP(PlayerLevelChangeEvent e){
        Player p = e.getPlayer(); 
        int level = e.getNewLevel();
        p.sendMessage(ChatColor.GREEN+"Ваш уровень был повышен! Теперь вам доступно что-то новое.Ваш новый уровень");
    }
}
Как мне переменную Level использовать в чате ?
Java:
    @EventHandler
    public void LevelUP(PlayerLevelChangeEvent e){
        Player p = e.getPlayer(); 
        int level = e.getNewLevel();
        p.sendMessage(ChatColor.GREEN+"Ваш уровень был повышен! Теперь вам доступно что-то новое.Ваш новый уровень" + String.valueOf(level));
 
Java:
    @EventHandler
    public void LevelUP(PlayerLevelChangeEvent e){
        Player p = e.getPlayer();
        int level = e.getNewLevel();
        p.sendMessage(ChatColor.GREEN+"Ваш уровень был повышен! Теперь вам доступно что-то новое.Ваш новый уровень" + String.valueOf(level));
Спасибо ,но мне написали что так лучше :
JavaScript:
        p.sendMessage(ChatColor.GREEN+"Ваш уровень был повышен! Теперь вам доступно что-то новое.Ваш новый уровень: " + level);
 
Спасибо ,но мне написали что так лучше :
JavaScript:
        p.sendMessage(ChatColor.GREEN+"Ваш уровень был повышен! Теперь вам доступно что-то новое.Ваш новый уровень: " + level);
И так и так правильно, просто в данном случае вариант выше не имеет смысла.
 
Спасибо ,но мне написали что так лучше :
JavaScript:
        p.sendMessage(ChatColor.GREEN+"Ваш уровень был повышен! Теперь вам доступно что-то новое.Ваш новый уровень: " + level);
Ну не знаю, у меня показывает ошибку, т.к. значение должно быть строкой.
 
А как мне поставить конкретные координаты для setCompassTarget ?
 
Подскажите каким событием можно отлавливать изменение здоровя.
Хочу убрать лечение при полной сытости.
 
Подскажите каким событием можно отлавливать изменение здоровя.
Хочу убрать лечение при полной сытости.
Не проверял, но вроде так
Java:
public void healthCheck (EntityRegainHealthEvent e) {
    if(e.getAmount() >= e.Entity.Player.getMaxHealth()) {
        setCancelled(true);
    }
}
EntityRegainHealthEvent
 
Не проверял, но вроде так
Java:
public void healthCheck (EntityRegainHealthEvent e) {
    if(e.getAmount() >= e.Entity.Player.getMaxHealth()) {
        setCancelled(true);
    }
}
EntityRegainHealthEvent

Спасибо.
Вот только e.Entity... непроходит, а у e.getEntity()... нет метода getPlayer
и setCancelled(true) тоже нет...

Но будем искать, спасибо.
Привел код в такой вид:
JavaScript:
  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)

Как его заставить работать?
Уже и так делал:
JavaScript:
...
           if((int) e.getAmount() >= (int) pp.getMaxHealth())
...
Непомогает :(
 
Спасибо.
Вот только e.Entity... непроходит, а у e.getEntity()... нет метода getPlayer
и setCancelled(true) тоже нет...

Но будем искать, спасибо.
Привел код в такой вид:
JavaScript:
  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)

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

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

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

           if (e.getEntityType() != EntityType.PLAYER) return;
                e.setCancelled(true);
           }
Так работает, при падении здорове убывает и когда сыт не поднимается.
Остальное надо проверить...
Спасибо за ответ.
Так другие регенерации тоже будут отменяться для игрока. Он не отрегенится пока не умрет.
Нужна проверка на причину регенерации EntityRegainHealthEvent.RegainReason.

Вероятно так
Java:
@EventHandler
   public void healthCheck (EntityRegainHealthEvent e) {
       for (EntityRegainHealthEvent.RegainReason c : EntityRegainHealthEvent.RegainReason.values()){
           if (c == e.getRegainReason().SATIATED)
               e.setCancelled(true);
       }
         
    }
 
Последнее редактирование:
Подскажите как можно зделать чтоб игрок открывал рукой металлическую дверь.
Зделал так, но дверь открывается токо за низ и код громоздкий...
JavaScript:
      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);
          }
Может есть способ попроще?
----
Решено, спасибо.
 
Последнее редактирование:
Помогите пожалуйста как добавить в функцию .setIngredient('A', ________ чтобы написать здесь зелье регенирации
 
Как указать материал например березевые доски в:
Код:
... .setType(Material.wood)

?
 

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

Назад
Верх