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

  • Автор темы Автор темы 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);
             
            }
     
     
    }

}
Мне надо записать этот код по другому, ибо этот вариант выдает ошибку, скорее всего его не правильно написал.
 
4d84fccc467fe9afe400441be9743c2f.jpg
 
Какая ошибка, где именно? Давай конкретнее. Выглядит, как говнокод
 
Код:
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);
        
            }
 
 
    }

}
Мне надо записать этот код по другому, ибо этот вариант выдает ошибку, скорее всего его не правильно написал.
Тут все не правильно, тут ты прав. Блок может быть null, player.getItemInHand() метод устарел и стак тоже может быть null. Про сам код вообще молчу.
 
Объясните пожалуйста, как такое возможно? Паранормальщина
if (ORU == DO_SMERTI) return; {
//TODO
}

Может ты хотел так? Или как ты хотел, не пойму?
PHP:
if (условие верно) {
    return;
} else {
    //TODO
}

Сравнивай все кроме String через 123 == 123 а не 123.equals
 
Последнее редактирование:
Не знаю что ты пытался сделать точно, но предположу, что ты хотел наложить чар на предмет в руке в случае, если происходит взаимодействие с блоком наковальни и предмет, которым кликнули является железный меч.
В данном случае инвентарь наковальни не откроется, так как произойдёт якобы автоматическое зачарование.
Ради всего святого, изучи сам язык хотя бы, ибо у тебя реально 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_ALL, 1, true);
                itemStack.setItemMeta(itemMeta); // важно присвоить ItemMeta обратно предмету после её изменения
            
                event.getPlayer().playSound(block.getLocation(), Sound.BLOCK_ANVIL_USE, 1, 4);
                event.getPlayer().sendMessage("Success!");
            
                event.setCancelled(true); //чтобы инвентарь наковальни не открылся.

            }
        
        }

    }

}
 
Назад
Верх