Помогите Не работает код

sasha2003

Активный участник
Пользователь
Баллы
76
Помогите! Написал код, который при наличии права выдаёт больший шанс получения предмета при ломании блока, чем без права. Но возникла проблема... Предмет выдаётся при ломании каждого блока.


Нужно чтобы рандомилось...

Гляньте:


Код:
    @EventHandler
    public void on(BlockBreakEvent e)
    {
        Player p = e.getPlayer();
        if (p.hasPermission("boostkey.1.0")) {
            {
                int percent = rnd.nextInt(210);
               
                if(percent == 73);
                {
                    ItemStack book = new ItemStack(Material.GHAST_TEAR);
                    ItemMeta meta = book.getItemMeta();
                    meta.setDisplayName(ChatColor.GREEN + "Ключ");
                    @SuppressWarnings("rawtypes")
                    List<String> lore = new ArrayList();
                    lore.add(ChatColor.BLACK + "key");
                    meta.setLore(lore);
                    book.setItemMeta(meta);
                   
                    p.getInventory().addItem(new ItemStack(book));
                    p.sendMessage(ChatColor.GOLD + "Вы нашли ключ");
                }
            }
        }
        if (p.hasPermission("boostkey.1.5")) {
            {
                int percent = rnd.nextInt(160);
               
                if(percent == 21);
                {
                    ItemStack book = new ItemStack(Material.GHAST_TEAR);
                    ItemMeta meta = book.getItemMeta();
                    meta.setDisplayName(ChatColor.GREEN + "Ключ");
                    @SuppressWarnings("rawtypes")
                    List<String> lore = new ArrayList();
                    lore.add(ChatColor.BLACK + "key");
                    meta.setLore(lore);
                    book.setItemMeta(meta);
                   
                    p.getInventory().addItem(new ItemStack(book));
                    p.sendMessage(ChatColor.GOLD + "Вы нашли ключ. Шанс: " + ChatColor.RED + "1.5%");
                }
            }
        }
       
    }
}
 
Помогите! Написал код, который при наличии права выдаёт больший шанс получения предмета при ломании блока, чем без права. Но возникла проблема... Предмет выдаётся при ломании каждого блока.


Нужно чтобы рандомилось...

Гляньте:


Код:
    @EventHandler
    public void on(BlockBreakEvent e)
    {
        Player p = e.getPlayer();
        if (p.hasPermission("boostkey.1.0")) {
            {
                int percent = rnd.nextInt(210);
              
                if(percent == 73);
                {
                    ItemStack book = new ItemStack(Material.GHAST_TEAR);
                    ItemMeta meta = book.getItemMeta();
                    meta.setDisplayName(ChatColor.GREEN + "Ключ");
                    @SuppressWarnings("rawtypes")
                    List<String> lore = new ArrayList();
                    lore.add(ChatColor.BLACK + "key");
                    meta.setLore(lore);
                    book.setItemMeta(meta);
                  
                    p.getInventory().addItem(new ItemStack(book));
                    p.sendMessage(ChatColor.GOLD + "Вы нашли ключ");
                }
            }
        }
        if (p.hasPermission("boostkey.1.5")) {
            {
                int percent = rnd.nextInt(160);
              
                if(percent == 21);
                {
                    ItemStack book = new ItemStack(Material.GHAST_TEAR);
                    ItemMeta meta = book.getItemMeta();
                    meta.setDisplayName(ChatColor.GREEN + "Ключ");
                    @SuppressWarnings("rawtypes")
                    List<String> lore = new ArrayList();
                    lore.add(ChatColor.BLACK + "key");
                    meta.setLore(lore);
                    book.setItemMeta(meta);
                  
                    p.getInventory().addItem(new ItemStack(book));
                    p.sendMessage(ChatColor.GOLD + "Вы нашли ключ. Шанс: " + ChatColor.RED + "1.5%");
                }
            }
        }
      
    }
}
Если тебе повезло и выпал предмет, то должен выпадать сам блок?
 
Помогите! Написал код, который при наличии права выдаёт больший шанс получения предмета при ломании блока, чем без права. Но возникла проблема... Предмет выдаётся при ломании каждого блока.


Нужно чтобы рандомилось...

Гляньте:


Код:
    @EventHandler
    public void on(BlockBreakEvent e)
    {
        Player p = e.getPlayer();
        if (p.hasPermission("boostkey.1.0")) {
            {
                int percent = rnd.nextInt(210);
             
                if(percent == 73);
                {
                    ItemStack book = new ItemStack(Material.GHAST_TEAR);
                    ItemMeta meta = book.getItemMeta();
                    meta.setDisplayName(ChatColor.GREEN + "Ключ");
                    @SuppressWarnings("rawtypes")
                    List<String> lore = new ArrayList();
                    lore.add(ChatColor.BLACK + "key");
                    meta.setLore(lore);
                    book.setItemMeta(meta);
                 
                    p.getInventory().addItem(new ItemStack(book));
                    p.sendMessage(ChatColor.GOLD + "Вы нашли ключ");
                }
            }
        }
        if (p.hasPermission("boostkey.1.5")) {
            {
                int percent = rnd.nextInt(160);
             
                if(percent == 21);
                {
                    ItemStack book = new ItemStack(Material.GHAST_TEAR);
                    ItemMeta meta = book.getItemMeta();
                    meta.setDisplayName(ChatColor.GREEN + "Ключ");
                    @SuppressWarnings("rawtypes")
                    List<String> lore = new ArrayList();
                    lore.add(ChatColor.BLACK + "key");
                    meta.setLore(lore);
                    book.setItemMeta(meta);
                 
                    p.getInventory().addItem(new ItemStack(book));
                    p.sendMessage(ChatColor.GOLD + "Вы нашли ключ. Шанс: " + ChatColor.RED + "1.5%");
                }
            }
        }
     
    }
}
Странно, как то, что у тебя выдаётся предмет каждый раз, т.к не может быть что Random регенерирует одно и тоже число всегда.
 
Скорее всего неправильно написан рандом
Странно, как то, что у тебя выдаётся предмет каждый раз, т.к не может быть что Random регенерирует одно и тоже число всегда.


Писал на скорую руку
А можно через запятую написать несколько чисел, при которых будет выполняться команда?
 
Мне при ломании каждого блока даётся предмет
 
Спасибо! Проблема в синтаксисе! Мне бы сделать так, чтобы этот предмет не выпаал при ломании блока листвы
 
Ну да, торможу...
!e.getBlock().getType() == Material.LEAVES)

Код:
public void on(BlockBreakEvent e) {
        Player p = e.getPlayer();
        if (p.hasPermission("boostkey.1.0")) {
                int percent = rnd.nextInt(210);
                if(percent == 73) {
                    if(!(e.getBlock().getType() == Material.LEAVES)) {
                        ItemStack book = new ItemStack(Material.GHAST_TEAR);
                        ItemMeta meta = book.getItemMeta();
                        meta.setDisplayName(ChatColor.GREEN + "Ключ");
                        @SuppressWarnings("rawtypes")
                        List<String> lore = new ArrayList();
                        lore.add(ChatColor.BLACK + "key");
                        meta.setLore(lore);
                        book.setItemMeta(meta);
                   
                        p.sendMessage(ChatColor.GOLD + "Вы нашли ключ");
                        p.getInventory().addItem(new ItemStack(book));
                    }
                }
            }



Так?????
 
Мне интересно стало, а почему всё таки код не работал?
 
Назад
Верх