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

Помогите Ошибка при addPotionEffect

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

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

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

    Баллы:
    63
    Имя в Minecraft:
    the_nacho
    Помогите,
    я не знаю почему эффект не накладывается на игрока.
    Eclipse ничего не подчеркивает.
    Код:
    @EventHandler
        public void click(PlayerInteractEvent e){
            if(e.getAction() == Action.RIGHT_CLICK_BLOCK || e.getAction() == Action.RIGHT_CLICK_AIR){
                Player p = e.getPlayer();
                if(p.getItemInHand().getType() == Material.GOLD_BLOCK){
                    ItemMeta goldblockmeta = p.getItemInHand().getItemMeta();
                    if(goldblockmeta.getDisplayName() == "Jump"){
                        p.addPotionEffect(new PotionEffect(PotionEffectType.JUMP, 10, 3));
                    }
                    if (goldblockmeta.getDisplayName() == "Speed"){
                        p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 10, 3));
                    }
                }
                if (p.getItemInHand().getType() == Material.DIAMOND_BLOCK){
                    ItemMeta diamondblockmeta = p.getItemInHand().getItemMeta();
                    if(diamondblockmeta.getDisplayName() == "Jump"){
                        p.addPotionEffect(new PotionEffect(PotionEffectType.JUMP, 10, 5));
                    }
                    if (diamondblockmeta.getDisplayName() == "Speed"){
                        p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 10, 5));
                    }
                }
            }
        }
     
  2. unlimited

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

    Баллы:
    123
    Имя в Minecraft:
    infinity
    Вероятно не срабатывают if'ы, поставь после каждого ифа например p.sendMessage('***'); и посмотри какие срабатывают, а какие нет
     
  3. StealerSlain

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

    Баллы:
    88
    Имя в Minecraft:
    StealerSlain
    может юзнешь else if?
     
    Goldenix нравится это.
  4. dark32

    dark32 А где твой ТЗ? Пользователь

    Баллы:
    123
    Код:
    goldblockmeta.getDisplayName() == "Speed"
    Строки нельзя сравнивать на равенство. Строки нужно сравнивать на эквиваленцию.
    В первом случае сравнивается их ссылки, во втором - содержимое.

    Код:
    goldblockmeta.getDisplayName().equals("Speed")
    И, вообще, делайте сообщения для отладки, помогает.
     
    RVXman, nikvas2000 и Den_Abr нравится это.
  5. gamelax

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

    Баллы:
    103
    Имя в Minecraft:
    gamelax
    dark32, сравнение строк оператором == вернет true, когда обе переменные указывают на один объект в памяти.
     
    zuma2 и nikvas2000 нравится это.
  6. dark32

    dark32 А где твой ТЗ? Пользователь

    Баллы:
    123
    Ну, а я что написал?
    Если ссылки на объект равны, то это один объект, но ещё есть пул коротких строк, но на него лучше не надеяться.
    Но всё равно сравнивать строки с помощью == к хорошему не приводит.
     
    nikvas2000 нравится это.
  7. Автор темы
    nikvas2000

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

    Баллы:
    63
    Имя в Minecraft:
    the_nacho
    Спасибо всем за ответы.
     

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