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

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

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

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

    R1DD1 Активный участник

    Баллы:
    61
    Имя в Minecraft:
    R1DD1
    Код:
    public class Upgrade implements Listener {
     
     
     
        @EventHandler
        public void interact(PlayerInteractEvent e ) {
            Action a = e.getAction();
            Player p = e.getPlayer();
            Block b = e.getClickedBlock();
         
            if(b.getType().equals(Material.ANVIL)) return; {
                if (a == Action.RIGHT_CLICK_BLOCK) return;
                    if (p.getItemInHand().getType() == Material.AIR || p.getItemInHand().getType() != Material.AIR  );
                    e.setCancelled(true);
            }
                 
            if( a == Action.LEFT_CLICK_BLOCK) return;
                if(b.getType().equals(Material.ANVIL)) {
                    return;
                    if(e.getPlayer().getItemInHand().getType() == Material.IRON_SWORD ) return; // выводит ошибку - Unreachable code
                        ItemStack Enchant = new ItemStack (Material.IRON_SWORD, 1);
                        ItemMeta EnchantMeta = Enchant.getItemMeta();
                        EnchantMeta.addEnchant(Enchantment.DAMAGE_ALL, 1, true);
                        Enchant.setItemMeta(EnchantMeta);
                        p.sendMessage("success");
                        p.playSound(p.getLocation(), Sound.BLOCK_ANVIL_USE, 1, 4);
                 
                }
         
         
        }
    
    }
    
    Мне надо записать этот код по другому, ибо этот вариант выдает ошибку, скорее всего его не правильно написал.
     
  2. Mavis

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

    Баллы:
    66
  3. NukerFall

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

    Баллы:
    76
    Какая ошибка, где именно? Давай конкретнее. Выглядит, как говнокод
     
  4. alexandrage

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

    Баллы:
    173
    Тут все не правильно, тут ты прав. Блок может быть null, player.getItemInHand() метод устарел и стак тоже может быть null. Про сам код вообще молчу.
     
  5. Conorfish

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

    Баллы:
    76
    Объясните пожалуйста, как такое возможно? Паранормальщина
    Может ты хотел так? Или как ты хотел, не пойму?
    PHP:
    if (условие верно) {
        return;
    } else {
        
    //TODO
    }
    Сравнивай все кроме String через 123 == 123 а не 123.equals
     
    Последнее редактирование: 19 окт 2020
  6. Exception_Prototype

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

    Баллы:
    96
    Не знаю что ты пытался сделать точно, но предположу, что ты хотел наложить чар на предмет в руке в случае, если происходит взаимодействие с блоком наковальни и предмет, которым кликнули является железный меч.
    В данном случае инвентарь наковальни не откроется, так как произойдёт якобы автоматическое зачарование.
    Ради всего святого, изучи сам язык хотя бы, ибо у тебя реально unreacheble code и помни: Правильно заданный вопрос – половина ответа
    PHP:
    public class Upgrade implements Listener {

        @
    EventHandler
        void onPlayerInteract
    (PlayerInteractEvent event) {

            
    // в нашем событии точно участвует блок и предмет
            
    if (!event.hasBlock()) return;
            if (!
    event.hasItem()) return;

            if (
    event.getAction() != Action.RIGHT_CLICK_BLOCK) return; // мы кликнули ПКМ по какому-то блоку

            
    Block block event.getClickedBlock();

            if (
    block.getType() == Material.ANVIL) { // этот блок точно кузня

                
    ItemStack itemStack event.getItem();

                if (
    itemStack.getType() == Material.IRON_SWORD) { // предмет которым кликнули - железный меч

                    
    ItemMeta itemMeta itemStack.getItemMeta();
                    
    itemMeta.addEnchant(Enchantment.DAMAGE_ALL1true);
                    
    itemStack.setItemMeta(itemMeta); // важно присвоить ItemMeta обратно предмету после её изменения
                
                    
    event.getPlayer().playSound(block.getLocation(), Sound.BLOCK_ANVIL_USE14);
                    
    event.getPlayer().sendMessage("Success!");
                
                    
    event.setCancelled(true); //чтобы инвентарь наковальни не открылся.

                
    }
            
            }

        }

    }
     

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